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
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,
(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
".($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')
if ($part == 'link')
{
FusionAxModule::link_by_ids($user_id,$matricule_ax);
+ exit;
}
if ($part == 'linknext')
{
{
FusionAxModule::link_by_ids($l['user_id'],$l['id_ancien']);
}
+ pl_redirect('fusionax/ids#autolink');
}
if ($part == 'linkall')
{
// 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:?>
</form>
<p></p>
-<h3 id="autolink" name="autolink">Mise en correspondance automatique</h3>
+<div id="autolink" name="autolink">
+<h3>Mise en correspondance automatique</h3>
{if $easyToLink}
<p>Ces anciens sont probablement les mêmes (à peu près mêmes nom, prénom, promo)</p>
{include file="fusionax/listFusion.tpl" fusionList=$easyToLink fusionAction="fusionax/ids/link" name="lier" field1="nom_ax" namefield1="Ancien AX"}
-<p><a href="fusionax/ids/linknext">Lier toutes les fiches affichées</a></p>
+<p><a href="fusionax/ids/linknext">Lier toutes les fiches affichées</a> <span id="fusion-reload" style="display:none"> - <a href="fusionax/ids#autolink">Trouver d'autres correspondances</a></span></p>
+<script type="text/javascript">
+{literal}
+//<!--
+$(document).ready(function() {
+ $('#autolink a.fusion-action').click(function(a){
+ $.get(a.currentTarget.href,{},function(){
+ $(a.currentTarget).hide();
+ $('#fusion-reload').show();
+ $('#fusion-reload a').click(function(a) {
+ document.location = a.currentTarget.href;
+ document.location.reload();
+ });
+ });
+ return false;
+ });
+});
+//-->
+{/literal}
+</script>
{else}
<p>Aucune correspondance automatique n'a été trouvée (mêmes nom, prénom, promo d'étude).</p>
{/if}
+</div>