Deletes lost addresses, medals and phones.
[platal.git] / modules / admin.php
index c533a6c..9c1e108 100644 (file)
@@ -585,9 +585,9 @@ class AdminModule extends PLModule
         } else if (!Post::blank('del_fwd')) {
             $redirect->delete_email(Post::t('del_fwd'));
         } else if (!Post::blank('activate_fwd')) {
-            $redirect->modify_one_email(Post::t('activate_fwd', true));
+            $redirect->modify_one_email(Post::t('activate_fwd'), true);
         } else if (!Post::blank('deactivate_fwd')) {
-            $redirect->modify_one_email(Post::t('deactivate_fwd', false));
+            $redirect->modify_one_email(Post::t('deactivate_fwd'), false);
         } else if (Post::has('disable_fwd')) {
             $redirect->disable();
         } else if (Post::has('enable_fwd')) {
@@ -604,7 +604,7 @@ class AdminModule extends PLModule
             if (strpos($alias, '@') !== false) {
                 list($alias, $domain) = explode('@', $alias);
             } else {
-                $domain = $globals->mail->domain;
+                $domain = $user->mainEmailDomain();
             }
 
             // Checks for alias' user validity.
@@ -620,15 +620,15 @@ class AdminModule extends PLModule
                 } else {
                     $page->trigError("Impossible d'ajouter l'alias '$alias@$domain', il est probablement déjà attribué.");
                 }
-            } elseif ($domain == $globals->mail->domain || $domain == $globals->mail->domain2) {
+            } elseif ($domain == $user->mainEmailDomain()) {
                 XDB::execute('INSERT INTO  email_source_account (email, uid, domain, type, flags)
                                    SELECT  {?}, {?}, id, \'alias\', \'\'
                                      FROM  email_virtual_domains
                                     WHERE  name = {?}',
-                              $alias, $user->id(), $globals->mail->alias_dom);
+                              $alias, $user->id(), $domain);
                 $page->trigSuccess("Nouvel alias '$alias' ajouté");
             } else {
-                $page->trigError("Le domaine '$domain' n'est pas valide");
+                $page->trigError("Le domaine '$domain' n'est pas valide pour cet utilisateur.");
             }
         } else if (!Post::blank('del_alias')) {
             $delete_alias = Post::t('del_alias');
@@ -637,7 +637,7 @@ class AdminModule extends PLModule
                             FROM  email_source_account  AS s
                       INNER JOIN  email_virtual_domains AS m ON (s.domain = m.id)
                       INNER JOIN  email_virtual_domains AS d ON (d.aliasing = m.id)
-                           WHERE  s.email = {?} AND s.uid = {?} AND d.name = {?} AND type = \'alias\'',
+                           WHERE  s.email = {?} AND s.uid = {?} AND d.name = {?} AND type != \'forlife\'',
                           $email, $user->id(), $domain);
             XDB::execute('UPDATE  email_redirect_account AS r
                       INNER JOIN  email_virtual_domains  AS m ON (m.name = {?})
@@ -709,12 +709,12 @@ class AdminModule extends PLModule
         $aliases = XDB::iterator("SELECT  CONCAT(s.email, '@', d.name) AS email, (s.type = 'forlife') AS forlife,
                                           (s.email REGEXP '\\\\.[0-9]{2}$') AS hundred_year,
                                           FIND_IN_SET('bestalias', s.flags) AS bestalias, s.expire,
-                                          (d.name = {?}) AS alias
+                                          (s.type = 'alias_aux') AS alias
                                     FROM  email_source_account  AS s
                               INNER JOIN  email_virtual_domains AS d ON (s.domain = d.id)
                                    WHERE  s.uid = {?}
                                 ORDER BY  !alias, s.email",
-                                 $globals->mail->alias_dom, $user->id());
+                                 $user->id());
         $page->assign('aliases', $aliases);
         $page->assign('account_types', XDB::iterator('SELECT * FROM account_types ORDER BY type'));
         $page->assign('skins', XDB::iterator('SELECT id, name FROM skins ORDER BY name'));
@@ -778,9 +778,9 @@ class AdminModule extends PLModule
     {
         switch ($sex) {
           case 'F':
-            return PlUser::GENDER_FEMALE;
+            return 'female';
           case 'M':
-            return PlUser::GENDER_MALE;
+            return 'male';
           default:
             $page->trigError("La ligne $line n'a pas été ajoutée car le sexe $sex n'est pas pris en compte.");
             return null;
@@ -806,7 +806,6 @@ class AdminModule extends PLModule
             $nameTypes = array_flip($nameTypes);
 
             if (Env::t('add_type') == 'promo') {
-                $type = 'x';
                 $eduSchools = DirEnum::getOptions(DirEnum::EDUSCHOOLS);
                 $eduSchools = array_flip($eduSchools);
                 $eduDegrees = DirEnum::getOptions(DirEnum::EDUDEGREES);
@@ -818,6 +817,7 @@ class AdminModule extends PLModule
                     $grad_year = $promotion + 3;
                     $promo = 'X' . $promotion;
                     $hrpromo = $promotion;
+                    $type = 'x';
                     break;
                   case 'M':
                     $degreeid = $eduDegrees[Profile::DEGREE_M];
@@ -847,7 +847,11 @@ class AdminModule extends PLModule
                             $fullName = $infos[1] . ' ' . $infos[0];
                             $directoryName = $infos[0] . ' ' . $infos[1];
                             $birthDate = self::formatBirthDate($infos[2]);
-                            $xorgId = Profile::getXorgId($infos[4]);
+                            if ($type == 'x') {
+                                $xorgId = Profile::getXorgId($infos[4]);
+                            } else {
+                                $xorgId = trim($infos[4]);
+                            }
                             if (is_null($xorgId)) {
                                 $page->trigError("La ligne $line n'a pas été ajoutée car le matricule École est mal renseigné.");
                                 continue;
@@ -938,7 +942,6 @@ class AdminModule extends PLModule
 
     function handler_homonyms($page, $op = 'list', $target = null)
     {
-        global $globals;
         $page->changeTpl('admin/homonymes.tpl');
         $page->setTitle('Administration - Homonymes');
         $this->load("homonyms.inc.php");
@@ -973,19 +976,14 @@ class AdminModule extends PLModule
                 case 'correct':
                     S::assert_xsrf_token();
 
-                    XDB::execute('DELETE  e
-                                    FROM  email_source_account  AS e
-                              INNER JOIN  email_virtual_domains AS d ON (e.domain = d.id)
-                                   WHERE  e.email = {?} AND d.name = {?}',
-                                 $loginbis, $globals->mail->domain);
+                    XDB::execute('DELETE FROM  email_source_account
+                                        WHERE  email = {?} AND type = \'alias\'',
+                                 $loginbis);
                     XDB::execute('INSERT INTO  email_source_other (hrmid, email, domain, type, expire)
-                                       SELECT  CONCAT(\'h.\', {?}, \'.\', {?}), {?}, id, \'homonym\', NOW()
+                                       SELECT  {?}, {?}, id, \'homonym\', NOW()
                                          FROM  email_virtual_domains
                                         WHERE  name = {?}',
-                                 $loginbis, $globals->mail->domain, $loginbis, $globals->mail->domain);
-                    XDB::execute('INSERT IGNORE INTO  homonyms_list (hrmid, uid)
-                                              VALUES  ({?}, {?})',
-                                 'h.' . $loginbis . '.' . $globals->mail->domain, $target);
+                                 User::makeHomonymHrmid($loginbis), $loginbis, $user->mainEmailDomain());
                     fix_bestalias($user);
                     send_robot_homonyme($user, $loginbis);
                     $op = 'list';
@@ -1000,10 +998,8 @@ class AdminModule extends PLModule
                                     FROM  email_source_other    AS o
                               INNER JOIN  homonyms_list         AS h ON (o.hrmid = h.hrmid)
                               INNER JOIN  email_source_account  AS f ON (h.uid = f.uid AND f.type = \'forlife\')
-                              INNER JOIN  email_virtual_domains AS d ON (f.domain = d.id)
-                                   WHERE  o.expire IS NOT NULL AND d.name = {?}
-                                ORDER BY  homonym, forlife',
-                                 $globals->mail->domain);
+                                   WHERE  o.expire IS NOT NULL
+                                ORDER BY  homonym, forlife');
             $homonyms = array();
             while ($item = $res->next()) {
                 $homonyms[$item['homonym']][] = $item;
@@ -1016,10 +1012,8 @@ class AdminModule extends PLModule
                               INNER JOIN  homonyms_list         AS l ON (e.uid = l.uid)
                               INNER JOIN  homonyms_list         AS h ON (l.hrmid = h.hrmid)
                               INNER JOIN  email_source_account  AS f ON (h.uid = f.uid AND f.type = \'forlife\')
-                              INNER JOIN  email_virtual_domains AS d ON (f.domain = d.id)
-                                   WHERE  e.expire IS NOT NULL AND d.name = {?}
-                                ORDER BY  homonym, forlife',
-                                 $globals->mail->domain);
+                                   WHERE  e.expire IS NOT NULL
+                                ORDER BY  homonym, forlife');
             $homonyms_to_fix = array();
             while ($item = $res->next()) {
                 $homonyms_to_fix[$item['homonym']][] = $item;