X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Ffusionax.php;h=a3309c3a4dfc5f5000101560e704a69fd80d76b8;hb=caa04db802a6ad12650360cf36fd2a730b7d69fb;hp=b30fcb486a64010e840fbbcf0bb01794c043c72c;hpb=1ea2d001c2511d30bae13fe3aed0e698919380a8;p=platal.git diff --git a/modules/fusionax.php b/modules/fusionax.php index b30fcb4..a3309c3 100644 --- a/modules/fusionax.php +++ b/modules/fusionax.php @@ -125,6 +125,9 @@ class FusionAxModule extends PLModule $report[] = 'Fichier parsé.'; $report[] = 'Import dans la base en cours...'; $next = 'integrateSQL'; + XDB::execute("UPDATE profiles + SET ax_id = NULL + WHERE ax_id = ''"); } } elseif ($action == 'integrateSQL') { // intégration des données dans la base MySQL @@ -259,15 +262,20 @@ class FusionAxModule extends PLModule INNER JOIN fusionax_anciens AS a ON (a.ax_id = p.ax_id) WHERE p.deathdate != a.Date_deces OR (p.deathdate IS NULL AND a.Date_deces != '0000-00-00')"); XDB::execute('DROP VIEW IF EXISTS fusionax_promo'); - XDB::execute('CREATE VIEW fusionax_promo AS - SELECT p.pid, p.ax_id, pd.private_name, pd.promo, pe.entry_year AS promo_etude_xorg, + XDB::execute("CREATE VIEW fusionax_promo AS + SELECT p.pid, p.ax_id, pd.private_name, pd.promo, pe.entry_year AS promo_etude_xorg, f.groupe_promo, f.promotion_etude AS promo_etude_ax, pe.grad_year AS promo_sortie_xorg FROM profiles AS p INNER JOIN profile_display AS pd ON (p.pid = pd.pid) - INNER JOIN profile_education AS pe ON (p.pid = pe.pid) + INNER JOIN profile_education AS pe ON (p.pid = pe.pid AND FIND_IN_SET('primary', pe.flags)) INNER JOIN fusionax_anciens AS f ON (p.ax_id = f.ax_id) - WHERE pd.promo != CONCAT(\'X\', f.promotion_etude) - AND !(f.promotion_etude = pe.entry_year + 1 AND pe.grad_year = pe.entry_year + 4)'); + WHERE (f.groupe_promo = 'X' AND pd.promo != CONCAT('X', f.promotion_etude) + AND !(f.promotion_etude = pe.entry_year + 1 AND pe.grad_year = pe.entry_year + 4) + AND !(f.promotion_etude = pe.entry_year + 2 AND pe.grad_year = pe.entry_year + 5) + AND f.promotion_etude != 0) + OR (f.groupe_promo = 'D' AND f.promotion_etude != pe.grad_year) + OR (f.groupe_promo = 'M' AND f.promotion_etude != pe.entry_year) + GROUP BY p.pid"); $page->trigSuccess('Les VIEW ont bien été créées.'); } } @@ -285,7 +293,7 @@ class FusionAxModule extends PLModule } /* Cherche les les anciens présents dans Xorg avec un matricule_ax ne correspondant à rien dans la base de l'AX - * (mises à part les promo 1921, 1923, 1924, 1925 qui ne figurent pas dans les données de l'AX)*/ + * (mises à part les promo 1921, 1922, 1923, 1924, 1925, 1927 qui ne figurent pas dans les données de l'AX)*/ private static function find_wrong_in_xorg($limit = 10) { return XDB::iterator('SELECT u.promo, u.pid, u.private_name @@ -293,7 +301,7 @@ class FusionAxModule extends PLModule WHERE NOT EXISTS (SELECT * FROM fusionax_anciens AS f WHERE f.ax_id = u.ax_id) - AND u.ax_id IS NOT NULL AND promo NOT IN (\'X1921\', \'X1923\', \'X1924\', \'X1925\')'); + AND u.ax_id IS NOT NULL AND promo NOT IN (\'X1921\', \'X1922\', \'X1923\', \'X1924\', \'X1925\', \'X1927\')'); } /** Lier les identifiants d'un ancien dans les deux annuaires @@ -494,40 +502,57 @@ class FusionAxModule extends PLModule function handler_promo($page, $action = '') { $page->changeTpl('fusionax/promo.tpl'); - $res = XDB::iterator('SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo + $res = XDB::iterator("SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo FROM fusionax_promo WHERE !(promo_etude_ax + 1 = promo_etude_xorg AND promo_etude_xorg + 3 = promo_sortie_xorg) AND !(promo_etude_ax + 1 = promo_etude_xorg AND promo_etude_xorg + 4 = promo_sortie_xorg) - AND !(promo_etude_ax = promo_etude_xorg + 1) - ORDER BY promo_etude_xorg'); + AND !(promo_etude_ax = promo_etude_xorg + 1) AND groupe_promo = 'X' + ORDER BY promo_etude_xorg"); $nbMissmatchingPromos = $res->total(); $page->assign('nbMissmatchingPromos', $res->total()); $page->assign('missmatchingPromos', $res); - $res = XDB::iterator('SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo + $res = XDB::iterator("SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo FROM fusionax_promo - WHERE promo_etude_ax = promo_etude_xorg + 1 - ORDER BY promo_etude_xorg'); + WHERE promo_etude_ax = promo_etude_xorg + 1 AND groupe_promo = 'X' + ORDER BY promo_etude_xorg"); $nbMissmatchingPromos += $res->total(); $page->assign('nbMissmatchingPromos1', $res->total()); $page->assign('missmatchingPromos1', $res); - $res = XDB::iterator('SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo + $res = XDB::iterator("SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo FROM fusionax_promo - WHERE promo_etude_ax + 1 = promo_etude_xorg AND promo_etude_xorg + 3 = promo_sortie_xorg - ORDER BY promo_etude_xorg'); + WHERE promo_etude_ax + 1 = promo_etude_xorg AND promo_etude_xorg + 3 = promo_sortie_xorg AND groupe_promo = 'X' + ORDER BY promo_etude_xorg"); $nbMissmatchingPromos += $res->total(); $page->assign('nbMissmatchingPromos2', $res->total()); $page->assign('missmatchingPromos2', $res); - $res = XDB::iterator('SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo + $res = XDB::iterator("SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo FROM fusionax_promo - WHERE promo_etude_ax + 1 = promo_etude_xorg AND promo_etude_xorg + 4 = promo_sortie_xorg - ORDER BY promo_etude_xorg'); + WHERE promo_etude_ax + 1 = promo_etude_xorg AND promo_etude_xorg + 4 = promo_sortie_xorg AND groupe_promo = 'X' + ORDER BY promo_etude_xorg"); $nbMissmatchingPromos += $res->total(); $page->assign('nbMissmatchingPromos3', $res->total()); $page->assign('missmatchingPromos3', $res); + $res = XDB::iterator("SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo + FROM fusionax_promo + WHERE groupe_promo = 'M' + ORDER BY promo_etude_xorg"); + $nbMissmatchingPromos += $res->total(); + $page->assign('nbMissmatchingPromosM', $res->total()); + $page->assign('missmatchingPromosM', $res); + + + $res = XDB::iterator("SELECT pid, private_name, promo_etude_xorg, promo_sortie_xorg, promo_etude_ax, promo + FROM fusionax_promo + WHERE groupe_promo = 'D' + ORDER BY promo_etude_xorg"); + $nbMissmatchingPromos += $res->total(); + $page->assign('nbMissmatchingPromosD', $res->total()); + $page->assign('missmatchingPromosD', $res); + $page->assign('nbMissmatchingPromosTotal', $nbMissmatchingPromos); } @@ -541,18 +566,20 @@ class FusionAxModule extends PLModule $page->assign('total', $res->fetchOneCell()); $res = XDB::rawFetchOneCell("SELECT COUNT(*) - FROM fusionax_anciens AS f - INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) - WHERE IF(f.partic_patro, CONCAT(f.partic_patro, CONCAT(' ', f.Nom_patronymique)), f.Nom_patronymique) NOT IN (p.lastname_initial, p.lastname_main, p.lastname_marital, p.lastname_ordinary) - OR IF(f.partic_nom, CONCAT(f.partic_nom, CONCAT(' ', f.Nom_usuel)), f.Nom_usuel) NOT IN (p.lastname_initial, p.lastname_main, p.lastname_marital, p.lastname_ordinary) - OR f.Nom_complet NOT IN (p.lastname_initial, p.lastname_main, p.lastname_marital, p.lastname_ordinary)"); - $page->assign('lastnameIssues', $res->fetchOneCell()); + FROM fusionax_anciens AS f + INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) + INNER JOIN profile_public_names AS ppn ON (p.pid = ppn.pid) + WHERE IF(f.partic_patro, CONCAT(f.partic_patro, CONCAT(' ', f.Nom_patronymique)), f.Nom_patronymique) NOT IN (ppn.lastname_initial, ppn.lastname_main, ppn.lastname_marital, ppn.lastname_ordinary) + OR IF(f.partic_nom, CONCAT(f.partic_nom, CONCAT(' ', f.Nom_usuel)), f.Nom_usuel) NOT IN (ppn.lastname_initial, ppn.lastname_main, ppn.lastname_marital, ppn.lastname_ordinary) + OR f.Nom_complet NOT IN (ppn.lastname_initial, ppn.lastname_main, ppn.lastname_marital, ppn.lastname_ordinary)"); + $page->assign('lastnameIssues', $res); $res = XDB::rawFetchOneCell('SELECT COUNT(*) - FROM fusionax_anciens AS f - INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) - WHERE f.prenom NOT IN (p.firstname_initial, p.firstname_main, p.firstname_ordinary)'); - $page->assign('firstnameIssues', $res->fetchOneCell()); + FROM fusionax_anciens AS f + INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) + INNER JOIN profile_public_names AS ppn ON (p.pid = ppn.pid) + WHERE f.prenom NOT IN (ppn.firstname_initial, ppn.firstname_main, ppn.firstname_ordinary)'); + $page->assign('firstnameIssues', $res); }