Oops.
[platal.git] / modules / fusionax.php
index cf6f9ec..9d35861 100644 (file)
@@ -629,31 +629,100 @@ class FusionAxModule extends PLModule
         $page->assign('nbMissmatchingPromosTotal', $nbMissmatchingPromos);
     }
 
-    function handler_names($page, $action = '')
+    private function format($string)
+    {
+        return preg_replace('/(\s+|\-)/', '', $string);
+    }
+
+    private function retrieve_firstnames()
+    {
+        $res = XDB::rawFetchAllAssoc('SELECT  p.pid, p.ax_id, p.hrpid,
+                                              f.prenom, ppn.firstname_initial, ppn.firstname_main, ppn.firstname_ordinary
+                                        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)');
+
+        $issues = array();
+        foreach ($res as $item) {
+            if (!($item['firstname_ordinary'] != '' || $item['firstname_main'] != $item['firstname_initial'])) {
+                $ax = $this->format(mb_strtolower(replace_accent($item['prenom'])));
+                $xorg = $this->format(mb_strtolower(replace_accent($item['firstname_main'])));
+                if ($ax != $xorg) {
+                    $issues[] = $item;
+                }
+            }
+        }
+
+        return $issues;
+    }
+
+    function handler_names($page, $action = '', $csv = false)
     {
         $page->changeTpl('fusionax/names.tpl');
 
-        $res = XDB::query('SELECT  COUNT(*)
-                             FROM  fusionax_anciens AS f
-                       INNER JOIN  profiles         AS p    ON (f.ax_id = p.ax_id)');
-        $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)
-                                 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)
-                                 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);
+        if ($action == 'first') {
+            $res = $this->retrieve_firstnames();
+            if ($csv) {
+                pl_cached_content_headers('text/x-csv', 'utf-8', 1, 'firstnames.csv');
 
+                $csv = fopen('php://output', 'w');
+                fputcsv($csv,  array('pid', 'ax_id', 'hrpid', 'AX', 'initial', 'principal', 'ordinaire'), ';');
+                foreach ($res as $item) {
+                    fputcsv($csv, $item, ';');
+                }
+                fclose($csv);
+                exit();
+            } else {
+                $page->assign('firstnameIssues', $res);
+            }
+        } elseif ($action == 'last') {
+            $res = XDB::rawFetchAllAssoc("SELECT  p.pid, p.ax_id, p.hrpid,
+                                                  f.Nom_patronymique, f.Nom_usuel, f.Nom_complet,
+                                                  ppn.lastname_initial, ppn.lastname_main, ppn.lastname_marital, ppn.lastname_ordinary
+                                            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)");
+
+            if ($csv) {
+                pl_cached_content_headers('text/x-csv', 'utf-8', 1, 'lastnames.csv');
+
+                $csv = fopen('php://output', 'w');
+                fputcsv($csv,  array('pid', 'ax_id', 'hrpid', 'AX patro', 'AX usuel', 'AX complet', 'initial', 'principal', 'marital', 'ordinaire'), ';');
+                foreach ($res as $item) {
+                    fputcsv($csv, $item, ';');
+                }
+                fclose($csv);
+                exit();
+            } else {
+                $page->assign('lastnameIssues', $res);
+            }
+        } else {
+            $res = XDB::query('SELECT  COUNT(*)
+                                 FROM  fusionax_anciens AS f
+                           INNER JOIN  profiles         AS p    ON (f.ax_id = p.ax_id)');
+            $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)
+                                     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)
+                                     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', count($this->retrieve_firstnames()));
+        }
+        $page->assign('action', $action);
     }
 
     function handler_edu($page, $action = '')