From: Pascal Corpet
Date: Sat, 3 Nov 2007 17:34:14 +0000 (+0100)
Subject: Fusion AX : mise en correspondance des ids
X-Git-Tag: xorg/1.0.0~332^2~588
X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=b65beb64579af0e2d0342aff88fb1d58a663cdfc;p=platal.git
Fusion AX : mise en correspondance des ids
---
diff --git a/modules/fusionax.php b/modules/fusionax.php
index 01c7021..ffb2b22 100644
--- a/modules/fusionax.php
+++ b/modules/fusionax.php
@@ -146,6 +146,11 @@ class FusionAxModule extends PLModule{
exit;
}
+ /** Lier les identifiants d'un ancien dans les deux annuaires
+ * @param user_id identifiant dans l'annuaire X.org
+ * @param matricule_ax identifiant dans l'annuaire de l'AX
+ * @return 0 si la liaison a échoué, 1 sinon
+ */
private static function link_by_ids($user_id, $matricule_ax)
{
if (!XDB::execute("UPDATE fusionax_import AS i INNER JOIN auth_user_md5 AS u
@@ -160,8 +165,32 @@ class FusionAxModule extends PLModule{
return XDB::affectedRows() / 2;
}
- private static function find_easy_to_link($limit = 10)
+ /** Recherche automatique d'anciens à lier entre les deux annuaires
+ * @param limit nombre d'anciens à trouver au max
+ * @param sure si true, ne trouve que des anciens qui sont quasi sûrs
+ * @return un XOrgDBIterator sur les entrées avec prenom, nom, promo, user_id, id_ancien et nom_ax
+ */
+ private static function find_easy_to_link($limit = 10, $sure = false)
{
+ $easy_to_link = XDB::iterator("SELECT
+ xorg.prenom, xorg.nom, xorg.promo, xorg.user_id, ax.id_ancien,
+ CONCAT(ax.prenom,' ',ax.nom_complet,' (X ',ax.promotion_etude,')') AS nom_ax,
+ COUNT(*) AS nbMatches
+ FROM fusionax_anciens AS ax
+ INNER JOIN fusionax_import AS i ON (i.id_ancien = ax.id_ancien AND i.user_id IS NULL)
+ LEFT JOIN auth_user_md5 AS xorg ON (
+ xorg.matricule_ax IS NULL AND
+ ax.Nom_complet = xorg.nom AND
+ ax.prenom = xorg.prenom AND
+ xorg.promo = ax.promotion_etude)
+ GROUP BY xorg.user_id
+ HAVING
+ xorg.user_id IS NOT NULL AND
+ nbMatches = 1
+ ".($limit?('LIMIT '.$limit):''));
+ if ($easy_to_link->total() > 0 || $sure) {
+ return $easy_to_link;
+ }
return XDB::iterator("SELECT
xorg.prenom, xorg.nom, xorg.promo, xorg.user_id, ax.id_ancien,
CONCAT(ax.prenom,' ',ax.nom_complet,' (X ',ax.promotion_etude,')') AS nom_ax,
@@ -173,10 +202,9 @@ class FusionAxModule extends PLModule{
(ax.Nom_complet = xorg.nom
OR ax.Nom_complet LIKE CONCAT(xorg.nom,' %')
OR ax.Nom_complet LIKE CONCAT(xorg.nom,'-%')
- OR xorg.nom LIKE CONCAT('%-',ax.Nom_usuel)
OR ax.Nom_usuel = xorg.nom) AND
- xorg.promo < ax.promotion_etude + 5 AND
- xorg.promo > ax.promotion_etude - 5)
+ xorg.promo < ax.promotion_etude + 2 AND
+ xorg.promo > ax.promotion_etude - 2)
GROUP BY xorg.user_id
HAVING
xorg.user_id IS NOT NULL AND
@@ -184,10 +212,12 @@ class FusionAxModule extends PLModule{
".($limit?('LIMIT '.$limit):''));
}
+ /** Module de mise en correspondance les ids */
function handler_ids(&$page, $part = 'main', $user_id = null, $matricule_ax = null)
{
global $globals;
$globals->change_dynamic_config(array('LastUpdate' => time()), 'FusionAX');
+ $page->addJsLink('jquery.js');
$page->assign('xorg_title','Polytechnique.org - Fusion des annuaires - Mise en correspondance simple');
if ($part == 'missingInAX')
@@ -217,6 +247,7 @@ class FusionAxModule extends PLModule{
if ($part == 'link')
{
FusionAxModule::link_by_ids($user_id,$matricule_ax);
+ exit;
}
if ($part == 'linknext')
{
@@ -225,6 +256,7 @@ class FusionAxModule extends PLModule{
{
FusionAxModule::link_by_ids($l['user_id'],$l['id_ancien']);
}
+ pl_redirect('fusionax/ids#autolink');
}
if ($part == 'linkall')
{
@@ -259,9 +291,9 @@ class FusionAxModule extends PLModule{
// deceased
$deceasedErrorsSql = XDB::query('SELECT COUNT(*) FROM fusionax_deceased');
$page->assign('deceasedErrors',$deceasedErrorsSql->fetchOneCell());
- $page->assign('deceasedMissingInXorg',XDB::iterator('SELECT user_id,id_ancien,nom,prenom,promo,Date_décès FROM fusionax_deceased WHERE deces = "0000-00-00" LIMIT 10'));
- $page->assign('deceasedMissingInAX',XDB::iterator('SELECT user_id,id_ancien,nom,prenom,promo,deces FROM fusionax_deceased WHERE Date_décès = "0000-00-00" LIMIT 10'));
- $page->assign('deceasedDifferent',XDB::iterator('SELECT user_id,id_ancien,nom,prenom,promo,Date_décès,deces FROM fusionax_deceased WHERE deces != "0000-00-00" AND Date_décès != "0000-00-00" LIMIT 10'));
+ $page->assign('deceasedMissingInXorg',XDB::iterator('SELECT user_id,id_ancien,nom,prenom,promo,deces_ax FROM fusionax_deceased WHERE deces_xorg = "0000-00-00" LIMIT 10'));
+ $page->assign('deceasedMissingInAX',XDB::iterator('SELECT user_id,id_ancien,nom,prenom,promo,deces_xorg FROM fusionax_deceased WHERE deces_ax = "0000-00-00" LIMIT 10'));
+ $page->assign('deceasedDifferent',XDB::iterator('SELECT user_id,id_ancien,nom,prenom,promo,deces_ax,deces_xorg FROM fusionax_deceased WHERE deces_xorg != "0000-00-00" AND deces_ax != "0000-00-00" LIMIT 10'));
}
}
// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:?>
diff --git a/templates/fusionax/ids.tpl b/templates/fusionax/ids.tpl
index aa12867..c14a9f2 100644
--- a/templates/fusionax/ids.tpl
+++ b/templates/fusionax/ids.tpl
@@ -46,11 +46,32 @@ trouver une correspondance entre les personnes renseignés dans ces annuaires.
-Mise en correspondance automatique
+
+
Mise en correspondance automatique
{if $easyToLink}
Ces anciens sont probablement les mêmes (à peu près mêmes nom, prénom, promo)
{include file="fusionax/listFusion.tpl" fusionList=$easyToLink fusionAction="fusionax/ids/link" name="lier" field1="nom_ax" namefield1="Ancien AX"}
-
Lier toutes les fiches affichées
+
Lier toutes les fiches affichées - Trouver d'autres correspondances
+
{else}
Aucune correspondance automatique n'a été trouvée (mêmes nom, prénom, promo d'étude).
{/if}
+
diff --git a/templates/fusionax/listFusion.tpl b/templates/fusionax/listFusion.tpl
index b922cdc..bf9a6d1 100644
--- a/templates/fusionax/listFusion.tpl
+++ b/templates/fusionax/listFusion.tpl
@@ -49,7 +49,7 @@
{$c.$field2} |
{/if}
{if $fusionAction}
- {$name} |
+ {$name} |
{/if}
{/iterate}
diff --git a/templates/fusionax/misc.tpl b/templates/fusionax/misc.tpl
index f2ff9c2..de6b539 100644
--- a/templates/fusionax/misc.tpl
+++ b/templates/fusionax/misc.tpl
@@ -31,15 +31,15 @@ décès.
Anciens déclarés décédés dans l'annuaire AX mais pas sur Xorg
-{include file='fusionax/listFusion.tpl' fusionList=$deceasedMissingInXorg field1='Date_décès' namefield1='Décès AX'}
+{include file='fusionax/listFusion.tpl' fusionList=$deceasedMissingInXorg field1='deces_ax' namefield1='Décès AX'}
Anciens déclarés décédés dans l'annuaire Xorg mais pas chez l'AX
-{include file='fusionax/listFusion.tpl' fusionList=$deceasedMissingInAX field1='deces' namefield1='Décès X.org'}
+{include file='fusionax/listFusion.tpl' fusionList=$deceasedMissingInAX field1='deces_xorg' namefield1='Décès X.org'}
Anciens déclarés décédés dans les deux annuaires mais pas avec la même date
-{include file='fusionax/listFusion.tpl' fusionList=$deceasedDifferent field1='deces' field2='Date_décès' namefield1='Décès X.org' namefield2='Décès AX'}
+{include file='fusionax/listFusion.tpl' fusionList=$deceasedDifferent field1='deces_xorg' field2='deces_ax' namefield1='Décès X.org' namefield2='Décès AX'}
{else}