X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=modules%2Fregister.php;h=95b896f8bd7321daf6f3e8f3051cda64d1d76b54;hb=f036c8966e64d9f2bb3923bbeb278353bc7e1083;hp=82703f1ab2dcfea6a4b5768e368e8152fb2d5523;hpb=a245a3e14efde886a8a92307c0066f2caa2d8710;p=platal.git diff --git a/modules/register.php b/modules/register.php index 82703f1..95b896f 100644 --- a/modules/register.php +++ b/modules/register.php @@ -1,6 +1,6 @@ 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)); XDB::execute('INSERT INTO register_mstats (uid, sender, success) @@ -249,13 +250,12 @@ class RegisterModule extends PLModule } $page->changeTpl('register/step' . $subState->i('step') . '.tpl'); - $page->addJsLink('password.js'); if (isset($error)) { $page->trigError($error); } } - function handler_end(&$page, $hash = null) + function handler_end($page, $hash = null) { global $globals; $_SESSION['subState'] = array('step' => 5); @@ -277,7 +277,7 @@ class RegisterModule extends PLModule $res = XDB::query("SELECT r.uid, p.pid, r.forlife, r.bestalias, r.mailorg2, r.password, r.email, r.services, r.naissance, pnl.name AS lastname, pnf.name AS firstname, - pd.promo, p.sex, p.birthdate_ref + pd.promo, p.sex, p.birthdate_ref, a.type AS eduType FROM register_pending AS r INNER JOIN accounts AS a ON (r.uid = a.uid) INNER JOIN account_profiles AS ap ON (a.uid = ap.uid AND FIND_IN_SET('owner', ap.perms)) @@ -303,12 +303,13 @@ class RegisterModule extends PLModule } list($uid, $pid, $forlife, $bestalias, $emailXorg2, $password, $email, $services, - $birthdate, $lastname, $firstname, $promo, $sex, $birthdate_ref) = $res->fetchOneRow(); + $birthdate, $lastname, $firstname, $promo, $sex, $birthdate_ref, $eduType) = $res->fetchOneRow(); + $isX = ($eduType == 'x'); $yearpromo = substr($promo, 1, 4); + $mail_domain = User::$sub_mail_domains[$eduType]; // Prepare the template for display. $page->changeTpl('register/end.tpl'); - $page->addJsLink('do_challenge_response_logged.js'); $page->assign('forlife', $forlife); $page->assign('firstname', $firstname); @@ -328,6 +329,7 @@ class RegisterModule extends PLModule // // Create the user account. // + XDB::startTransaction(); XDB::execute("UPDATE accounts SET password = {?}, state = 'active', registration_date = NOW(), email = NULL @@ -335,18 +337,27 @@ class RegisterModule extends PLModule XDB::execute("UPDATE profiles SET birthdate = {?}, last_change = NOW() WHERE pid = {?}", $birthdate, $pid); - XDB::execute("INSERT INTO aliases (uid, alias, type) - VALUES ({?}, {?}, 'a_vie')", $uid, $forlife); - XDB::execute("INSERT INTO aliases (uid, alias, type, flags) - VALUES ({?}, {?}, 'alias', 'bestalias')", $uid, $bestalias); + XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain) + SELECT {?}, {?}, \'forlife\', \'\', id + FROM email_virtual_domains + WHERE name = {?}', + $forlife, $uid, $mail_domain); + XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain) + SELECT {?}, {?}, \'alias\', \'bestalias\', id + FROM email_virtual_domains + WHERE name = {?}', + $bestalias, $uid, $mail_domain); if ($emailXorg2) { - XDB::execute("INSERT INTO aliases (uid, alias, type) - VALUES ({?}, {?}, 'alias')", $uid, $emailXorg2); + XDB::execute('INSERT INTO email_source_account (email, uid, type, flags, domain) + SELECT {?}, {?}, \'alias\', \'\', id + FROM email_virtual_domains + WHERE name = {?}', + $emailXorg2, $uid, $mail_domain); } + XDB::commit(); // Add the registration email address as first and only redirection. require_once 'emails.inc.php'; - $user = User::getSilentWithUID($uid); $redirect = new Redirect($user); $redirect->add_email($email); @@ -356,30 +367,33 @@ class RegisterModule extends PLModule // Subscribe the user to the services she did request at registration time. foreach (explode(',', $services) as $service) { + require_once 'newsletter.inc.php'; switch ($service) { case 'ax_letter': - Platal::load('axletter', 'axletter.inc.php'); - AXLetter::subscribe($uid); + NewsLetter::forGroup(NewsLetter::GROUP_AX)->subscribe($user); + break; + case 'nl': + NewsLetter::forGroup(NewsLetter::GROUP_XORG)->subscribe($user); break; case 'imap': - $storage = new EmailStorage($user, 'imap'); - $storage->activate(); + 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 INTO group_members (uid, asso_id) - VALUES ({?}, {?})', + XDB::execute('INSERT IGNORE INTO group_members (uid, asso_id) + VALUES ({?}, {?})', $uid, $asso_id); - $mmlist = new MMList($uid, S::v('password')); - $mmlist->subscribe("promo" . S::v('promo')); + 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; - case 'nl': - require_once 'newsletter.inc.php'; - NewsLetter::subscribe($uid); - break; } } @@ -391,6 +405,12 @@ class RegisterModule extends PLModule // Congratulate our newly registered user by email. $mymail = new PlMailer('register/success.mail.tpl'); + $mymail->addTo("\"{$user->fullName()}\" <{$user->forlifeEmail()}>"); + if ($isX) { + $mymail->setSubject('Bienvenue parmi les X sur le web !'); + } else { + $mymail->setSubject('Bienvenue sur Polytechnique.org !'); + } $mymail->assign('forlife', $forlife); $mymail->assign('firstname', $firstname); $mymail->send();