Fixes pending doctorate registration.
authorStéphane Jacob <sj@m4x.org>
Tue, 19 Apr 2011 15:45:52 +0000 (17:45 +0200)
committerStéphane Jacob <sj@m4x.org>
Tue, 19 Apr 2011 15:48:08 +0000 (17:48 +0200)
Signed-off-by: Stéphane Jacob <sj@m4x.org>
modules/register.php

index 1437e16..9b0aafc 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.