X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Ffusionax.php;h=7934dafb88975a576eeb7de2edf94abf15428cc9;hb=9a2876cbd2421b83fa1816fc8fa0100589720495;hp=54c7fa2a95898bd1b4e0bee99bad72ca788ddb29;hpb=c4f03937349bddfad25990239a825f8161615260;p=platal.git diff --git a/modules/fusionax.php b/modules/fusionax.php index 54c7fa2..7934daf 100644 --- a/modules/fusionax.php +++ b/modules/fusionax.php @@ -35,22 +35,22 @@ class FusionAxModule extends PLModule { if (Platal::globals()->merge->state == 'pending') { return array( - 'fusionax' => $this->make_hook('index', AUTH_MDP, 'admin'), - 'fusionax/import' => $this->make_hook('import', AUTH_MDP, 'admin'), - 'fusionax/view' => $this->make_hook('view', AUTH_MDP, 'admin'), - 'fusionax/ids' => $this->make_hook('ids', AUTH_MDP, 'admin'), - 'fusionax/deceased' => $this->make_hook('deceased', AUTH_MDP, 'admin'), - 'fusionax/promo' => $this->make_hook('promo', AUTH_MDP, 'admin'), - 'fusionax/names' => $this->make_hook('names', AUTH_MDP, 'admin'), - 'fusionax/edu' => $this->make_hook('edu', AUTH_MDP, 'admin'), - 'fusionax/corps' => $this->make_hook('corps', AUTH_MDP, 'admin') + 'fusionax' => $this->make_hook('index', AUTH_PASSWD, 'admin'), + 'fusionax/import' => $this->make_hook('import', AUTH_PASSWD, 'admin'), + 'fusionax/view' => $this->make_hook('view', AUTH_PASSWD, 'admin'), + 'fusionax/ids' => $this->make_hook('ids', AUTH_PASSWD, 'admin'), + 'fusionax/deceased' => $this->make_hook('deceased', AUTH_PASSWD, 'admin'), + 'fusionax/promo' => $this->make_hook('promo', AUTH_PASSWD, 'admin'), + 'fusionax/names' => $this->make_hook('names', AUTH_PASSWD, 'admin'), + 'fusionax/edu' => $this->make_hook('edu', AUTH_PASSWD, 'admin'), + 'fusionax/corps' => $this->make_hook('corps', AUTH_PASSWD, 'admin') ); } elseif (Platal::globals()->merge->state == 'done') { return array( - 'fusionax' => $this->make_hook('index', AUTH_MDP, 'admin,edit_directory'), - 'fusionax/issues' => $this->make_hook('issues', AUTH_MDP, 'admin,edit_directory'), - 'fusionax/issues/deathdate' => $this->make_hook('issues_deathdate', AUTH_MDP, 'admin,edit_directory'), - 'fusionax/issues/promo' => $this->make_hook('issues_promo', AUTH_MDP, 'admin,edit_directory'), + 'fusionax' => $this->make_hook('index', AUTH_PASSWD, 'admin,edit_directory'), + 'fusionax/issues' => $this->make_hook('issues', AUTH_PASSWD, 'admin,edit_directory'), + 'fusionax/issues/deathdate' => $this->make_hook('issues_deathdate', AUTH_PASSWD, 'admin,edit_directory'), + 'fusionax/issues/promo' => $this->make_hook('issues_promo', AUTH_PASSWD, 'admin,edit_directory'), ); } } @@ -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 @@ -172,8 +175,6 @@ class FusionAxModule extends PLModule FROM fusionax_anciens WHERE promotion_etude = 1920;'); - $nameTypes = DirEnum::getOptions(DirEnum::NAMETYPES); - $nameTypes = array_flip($nameTypes); $eduSchools = DirEnum::getOptions(DirEnum::EDUSCHOOLS); $eduSchools = array_flip($eduSchools); $eduDegrees = DirEnum::getOptions(DirEnum::EDUDEGREES); @@ -205,12 +206,9 @@ class FusionAxModule extends PLModule VALUES ({?}, {?}, {?}, {?})', $hrid, $xorgId, $ax_id, $sex); $pid = XDB::insertId(); - XDB::execute('INSERT INTO profile_name (pid, name, typeid) + XDB::execute('INSERT INTO profile_public_names (pid, lastname_initial, firstname_initial) VALUES ({?}, {?}, {?})', - $pid, $lastname, $nameTypes['name_ini']); - XDB::execute('INSERT INTO profile_name (pid, name, typeid) - VALUES ({?}, {?}, {?})', - $pid, $firstname, $nameTypes['firstname_ini']); + $pid, $lastname, $firstname); XDB::execute('INSERT INTO profile_display (pid, yourself, public_name, private_name, directory_name, short_name, sort_name, promo) VALUES ({?}, {?}, {?}, {?}, {?}, {?}, {?}, {?})', @@ -265,7 +263,7 @@ class FusionAxModule extends PLModule 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, + 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) @@ -290,7 +288,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 @@ -298,7 +296,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 @@ -499,36 +497,36 @@ 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); @@ -545,37 +543,18 @@ class FusionAxModule extends PLModule INNER JOIN profiles AS p ON (f.ax_id = p.ax_id)'); $page->assign('total', $res->fetchOneCell()); - // To be checked: - // | lastname | 1 | - // | lastname_marital | 2 | - // | lastname_ordinary | 3 | - // | firstname | 4 | - // | firstname_ordinary | 7 | - // | firstname_other | 8 | - // | name_other | 9 | - // | name_ini | 10 | - // | firstname_ini | 11 | - $res = XDB::query("SELECT COUNT(*) - FROM fusionax_anciens AS f - INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) - LEFT JOIN profile_name AS pnp ON (p.pid = pnp.pid AND pnp.typeid = 1) - LEFT JOIN profile_name AS pnm ON (p.pid = pnm.pid AND pnm.typeid = 2) - LEFT JOIN profile_name AS pno ON (p.pid = pno.pid AND pno.typeid = 3) - LEFT JOIN profile_name AS pne ON (p.pid = pne.pid AND pne.typeid = 9) - LEFT JOIN profile_name AS pni ON (p.pid = pni.pid AND pni.typeid = 10) - WHERE IF(f.partic_patro, CONCAT(f.partic_patro, CONCAT(' ', f.Nom_patronymique)), f.Nom_patronymique) NOT IN (pnp.name, pno.name, pnm.name, pne.name, pni.name) - OR IF(f.partic_nom, CONCAT(f.partic_nom, CONCAT(' ', f.Nom_usuel)), f.Nom_usuel) NOT IN (pnp.name, pno.name, pnm.name, pne.name, pni.name) - OR f.Nom_complet NOT IN (pnp.name, pno.name, pnm.name, pne.name, pni.name)"); + $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()); - $res = XDB::query('SELECT COUNT(*) - FROM fusionax_anciens AS f - INNER JOIN profiles AS p ON (f.ax_id = p.ax_id) - LEFT JOIN profile_name AS pnf ON (p.pid = pnf.pid AND pnf.typeid = 4) - LEFT JOIN profile_name AS pno ON (p.pid = pno.pid AND pno.typeid = 7) - LEFT JOIN profile_name AS pne ON (p.pid = pne.pid AND pne.typeid = 8) - LEFT JOIN profile_name AS pni ON (p.pid = pni.pid AND pni.typeid = 11) - WHERE f.prenom NOT IN (pnf.name, pno.name, pne.name, pni.name)'); + $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()); }