M/D do not have promotion groups and ML yet.
[platal.git] / modules / register.php
index 1437e16..e2f029c 100644 (file)
@@ -51,13 +51,12 @@ class RegisterModule extends PLModule
         if ($hash) {
             $nameTypes = DirEnum::getOptions(DirEnum::NAMETYPES);
             $nameTypes = array_flip($nameTypes);
-            $res = XDB::query("SELECT  a.uid, pd.promo, pnl.name AS lastname, pnf.name AS firstname, p.xorg_id AS xorgid,
+            $res = XDB::query("SELECT  a.uid, a.hruid, pnl.name AS lastname, pnf.name AS firstname, p.xorg_id AS xorgid,
                                        p.birthdate_ref AS birthdateRef, FIND_IN_SET('watch', a.flags) AS watch, m.hash, a.type
                                  FROM  register_marketing AS m
                            INNER JOIN  accounts           AS a   ON (m.uid = a.uid)
                            INNER JOIN  account_profiles   AS ap  ON (a.uid = ap.uid AND FIND_IN_SET('owner', ap.perms))
                            INNER JOIN  profiles           AS p   ON (p.pid = ap.pid)
-                           INNER JOIN  profile_display    AS pd  ON (p.pid = pd.pid)
                            INNER JOIN  profile_name       AS pnl ON (p.pid = pnl.pid AND pnl.typeid = {?})
                            INNER JOIN  profile_name       AS pnf ON (p.pid = pnf.pid AND pnf.typeid = {?})
                                 WHERE  m.hash = {?} AND a.state = 'pending'",
@@ -66,7 +65,7 @@ class RegisterModule extends PLModule
             if ($res->numRows() == 1) {
                 $subState->merge($res->fetchOneRow());
                 $subState->set('main_mail_domain', User::$sub_mail_domains[$subState->v('type')]);
-                $subState->set('yearpromo', substr($subState->s('promo'), 1, 4));
+                $subState->set('yearpromo', substr($subState->s('hruid'), -4));
 
                 XDB::execute('INSERT INTO  register_mstats (uid, sender, success)
                                    SELECT  m.uid, m.sender, 0
@@ -96,13 +95,14 @@ class RegisterModule extends PLModule
                     $edu_type = Post::t('edu_type');
                     $yearpromo = Post::i('yearpromo');
                     $promo = $edu_type . $yearpromo;
+                    $year = ($edu_type == 'X') ? 'entry_year' : 'grad_year';
                     $res = XDB::query("SELECT  COUNT(*)
                                          FROM  accounts         AS a
                                    INNER JOIN  account_profiles AS ap ON (a.uid = ap.uid AND FIND_IN_SET('owner', ap.perms))
                                    INNER JOIN  profiles         AS p  ON (p.pid = ap.pid)
-                                   INNER JOIN  profile_display  AS pd ON (p.pid = pd.pid)
-                                        WHERE  a.state = 'pending' AND p.deathdate IS NULL AND pd.promo = {?}",
-                                      $promo);
+                                   INNER JOIN  profile_education AS pe ON (pe.pid = p.pid AND FIND_IN_SET('primary', pe.flags))
+                                        WHERE  a.state = 'pending' AND p.deathdate IS NULL AND pe.$year = {?}",
+                                      $yearpromo);
 
                     if (!$res->fetchOneCell()) {
                         $error = 'La promotion saisie est incorrecte ou tous les camarades de cette promotion sont inscrits !';
@@ -311,7 +311,8 @@ class RegisterModule extends PLModule
         list($uid, $pid, $forlife, $bestalias, $emailXorg2, $password, $email, $services,
              $birthdate, $lastname, $firstname, $promo, $sex, $birthdate_ref, $eduType) = $res->fetchOneRow();
         $isX = ($eduType == 'x');
-        $yearpromo = substr($promo, 1, 4);
+        $yearpromo = substr($forlife, -4);
+        $promo = str_replace(' (en cours)', $yearpromo, $promo);
         $mail_domain = User::$sub_mail_domains[$eduType] . $globals->mail->domain;
 
         // Prepare the template for display.
@@ -386,18 +387,20 @@ class RegisterModule extends PLModule
                     Email::activate_storage($user, 'imap');
                     break;
                 case 'ml_promo':
-                    $r = XDB::query('SELECT id FROM groups WHERE diminutif = {?}', $yearpromo);
-                    if ($r->numRows()) {
-                        $asso_id = $r->fetchOneCell();
-                        XDB::execute('INSERT IGNORE INTO  group_members (uid, asso_id)
-                                                  VALUES  ({?}, {?})',
-                                     $uid, $asso_id);
-                        try {
-                            $mmlist = new MMList($user);
-                            $mmlist->subscribe("promo" . $yearpromo);
-                        } catch (Exception $e) {
-                            PlErrorReport::report($e);
-                            $page->trigError("L'inscription à la liste promo" . $yearpromo . " a échouée.");
+                    if ($isX) {
+                        $r = XDB::query('SELECT id FROM groups WHERE diminutif = {?}', $yearpromo);
+                        if ($r->numRows()) {
+                            $asso_id = $r->fetchOneCell();
+                            XDB::execute('INSERT IGNORE INTO  group_members (uid, asso_id)
+                                                      VALUES  ({?}, {?})',
+                                         $uid, $asso_id);
+                            try {
+                                $mmlist = new MMList($user);
+                                $mmlist->subscribe("promo" . $yearpromo);
+                            } catch (Exception $e) {
+                                PlErrorReport::report($e);
+                                $page->trigError("L'inscription à la liste promo" . $yearpromo . " a échouée.");
+                            }
                         }
                     }
                     break;