From f59bc2fb255328f8a36ff4895d6f1b5e5d41ae66 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Mon, 10 Jul 2006 05:54:15 +0000 Subject: [PATCH] migrate register git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@413 839d8a87-29fc-0310-9880-83ba4fa771e5 --- htdocs/register/end.php | 123 --------- htdocs/register/index.php | 130 --------- htdocs/register/success.php | 44 --- modules/register.php | 300 +++++++++++++++++++++ .../{mails => register}/inscription.reussie.tpl | 0 templates/{mails => register}/inscrire.mail.tpl | 2 +- templates/register/step0.tpl | 2 +- templates/register/step1.tpl | 2 +- templates/register/step2.tpl | 4 +- templates/register/step3.tpl | 2 +- templates/register/success.tpl | 4 +- 11 files changed, 308 insertions(+), 305 deletions(-) delete mode 100644 htdocs/register/end.php delete mode 100644 htdocs/register/index.php delete mode 100644 htdocs/register/success.php create mode 100644 modules/register.php rename templates/{mails => register}/inscription.reussie.tpl (100%) rename templates/{mails => register}/inscrire.mail.tpl (98%) diff --git a/htdocs/register/end.php b/htdocs/register/end.php deleted file mode 100644 index b7256f8..0000000 --- a/htdocs/register/end.php +++ /dev/null @@ -1,123 +0,0 @@ -xdb->query( - "SELECT r.uid, r.forlife, r.bestalias, r.mailorg2, r.password, r.email, r.naissance, u.nom, u.prenom, u.promo, u.flags - FROM register_pending AS r - INNER JOIN auth_user_md5 AS u ON r.uid = u.user_id - WHERE hash={?} AND hash!='INSCRIT'", Env::get('hash')); -} - -if ( !Env::has('hash') || - !list($uid, $forlife, $bestalias, $mailorg2, $password, $email, $naissance, $nom, $prenom, $promo, $femme) = $res->fetchOneRow()) -{ - $page->kill("

Cette adresse n'existe pas, ou plus, sur le serveur.

-

Causes probables :

-
    -
  1. Vérifie que tu visites l'adresse du dernier e-mail reçu s'il y en a eu plusieurs.
  2. -
  3. Tu as peut-être mal copié l'adresse reçue par mail, vérifie-la à la main.
  4. -
  5. - Tu as peut-être attendu trop longtemps pour confirmer. Les - pré-inscriptions sont annulées tous les 30 jours. -
  6. -
  7. - Tu es en fait déjà inscrit. -
  8. -
"); -} - - - -/***********************************************************/ -/****************** REALLY CREATE ACCOUNT ******************/ -/***********************************************************/ - -$globals->xdb->execute('UPDATE auth_user_md5 - SET password={?}, perms="user", date=NOW(), naissance={?}, date_ins = NOW() - WHERE user_id={?}', $password, $naissance, $uid); -$globals->xdb->execute('REPLACE INTO auth_user_quick (user_id) VALUES ({?})', $uid); -$globals->xdb->execute('INSERT INTO aliases (id,alias,type) VALUES ({?}, {?}, "a_vie")', $uid, $forlife); -$globals->xdb->execute('INSERT INTO aliases (id,alias,type,flags) VALUES ({?}, {?}, "alias", "bestalias")', $uid, $bestalias); -if ($mailorg2) { - $globals->xdb->execute('INSERT INTO aliases (id,alias,type) VALUES ({?}, {?}, "alias")', $uid, $mailorg2); -} - -require_once('emails.inc.php'); -$redirect = new Redirect($uid); -$redirect->add_email($email); - -// on cree un objet logger et on log l'inscription -$logger = new DiogenesCoreLogger($uid); -$logger->log('inscription', $email); - -$globals->xdb->execute('UPDATE register_pending SET hash="INSCRIT" WHERE uid={?}', $uid); - -$globals->hook->subscribe($forlife, $uid, $promo, $password); - -require_once('xorg.mailer.inc.php'); -$mymail = new XOrgMailer('mails/inscription.reussie.tpl'); -$mymail->assign('forlife', $forlife); -$mymail->assign('prenom', $prenom); -$mymail->send(); - -start_connexion($uid,false); -$_SESSION['auth'] = AUTH_MDP; - -/***********************************************************/ -/************* envoi d'un mail au démarcheur ***************/ -/***********************************************************/ -$res = $globals->xdb->iterRow( - "SELECT DISTINCT sa.alias, IF(s.nom_usage,s.nom_usage,s.nom) AS nom, s.prenom, s.flags AS femme - FROM register_marketing AS m - INNER JOIN auth_user_md5 AS s ON ( m.sender = s.user_id ) - INNER JOIN aliases AS sa ON ( sa.id = m.sender AND FIND_IN_SET('bestalias', sa.flags) ) - WHERE m.uid = {?}", $uid); -$globals->xdb->execute("UPDATE register_mstats SET success=NOW() WHERE uid={?}", $uid); - -while (list($salias, $snom, $sprenom, $sfemme) = $res->next()) { - require_once('diogenes/diogenes.hermes.inc.php'); - $mymail = new HermesMailer(); - $mymail->setSubject("$prenom $nom s'est inscrit à Polytechnique.org !"); - $mymail->setFrom('"Marketing Polytechnique.org" '); - $mymail->addTo("\"$sprenom $snom\" <$salias@{$globals->mail->domain}>"); - $msg = ($sfemme?'Cher':'Chère')." $sprenom,\n\n" - . "Nous t'écrivons pour t'informer que {$prenom} {$nom} (X{$promo}), " - . "que tu avais incité".($femme?'e':'')." à s'inscrire à Polytechnique.org, " - . "vient à l'instant de terminer son inscription.\n\n" - . "Merci de ta participation active à la reconnaissance de ce site !!!\n\n" - . "Bien cordialement,\n" - . "L'équipe Polytechnique.org"; - $mymail->setTxtBody(wordwrap($msg, 72)); - $mymail->send(); -} - -$globals->xdb->execute("DELETE FROM register_marketing WHERE uid = {?}", $uid); - -redirect('success.php'); -$page->assign('uid', $uid); -$page->run(); - -?> diff --git a/htdocs/register/index.php b/htdocs/register/index.php deleted file mode 100644 index 41db686..0000000 --- a/htdocs/register/index.php +++ /dev/null @@ -1,130 +0,0 @@ -xdb->query( - "SELECT m.uid, u.promo, u.nom, u.prenom, u.matricule - FROM register_marketing AS m - INNER JOIN auth_user_md5 AS u ON u.user_id = m.uid - WHERE m.hash={?}", Env::get('hash')); - if (list($uid, $promo, $nom, $prenom, $ourmat) = $res->fetchOneRow()) { - $sub_state['uid'] = $uid; - $sub_state['hash'] = Env::get('hash'); - $sub_state['promo'] = $promo; - $sub_state['nom'] = $nom; - $sub_state['prenom'] = $prenom; - $sub_state['ourmat'] = $ourmat; - - $globals->xdb->execute( - "REPLACE INTO register_mstats (uid,sender,success) - SELECT m.uid, m.sender, 0 - FROM register_marketing AS m - WHERE m.hash", $sub_state['hash']); - } -} - -switch ($sub_state['step']) { - case 0: - if (Post::has('step1')) { - $sub_state['step'] = 1; - if (isset($sub_state['hash'])) { - $sub_state['step'] = 3; - require_once('register.inc.php'); - create_aliases($sub_state); - } - } - break; - - case 1: - if (Post::has('promo')) { - $promo = Post::getInt('promo'); - if ($promo < 1900 || $promo > date('Y')) { - $err = "La promotion saisie est incorrecte !"; - } else { - $sub_state['step'] = 2; - $sub_state['promo'] = $promo; - if ($promo >= 1996 && $promo<2000) { - $sub_state['mat'] = ($promo % 100)*10 . '???'; - } elseif($promo >= 2000) { - $sub_state['mat'] = 100 + ($promo % 100) . '???'; - } - } - } - break; - - case 2: - if (count($_POST)) { - require_once('register.inc.php'); - $sub_state['prenom'] = Post::get('prenom'); - $sub_state['nom'] = Post::get('nom'); - $sub_state['mat'] = Post::get('mat'); - $err = check_new_user($sub_state); - - if ($err !== true) { break; } - $err = create_aliases($sub_state); - if ($err === true) { - unset($err); - $sub_state['step'] = 3; - } - } - break; - - case 3: - if (count($_POST)) { - require_once('register.inc.php'); - if (!isvalid_email(Post::get('email'))) { - $err[] = "Le champ 'E-mail' n'est pas valide."; - } elseif (!isvalid_email_redirection(Post::get('email'))) { - $err[] = $sub_state['forlife']." doit renvoyer vers un email existant ". - "valide, en particulier, il ne peut pas être renvoyé vers lui-même."; - } - if (!preg_match('/^[0-3][0-9][01][0-9][12][90][0-9][0-9]$/', Post::get('naissance'))) { - $err[] = "La 'Date de naissance' n'est pas correcte."; - } - - if (isset($err)) { - $err = join('
', $err); - } else { - $birth = Env::get('naissance'); - $sub_state['naissance'] = sprintf("%s-%s-%s", substr($birth,4,4), substr($birth,2,2), substr($birth,0,2)); - $sub_state['email'] = Post::get('email'); - $sub_state['step'] = 4; - finish_ins($sub_state); - } - } - break; -} - -$_SESSION['sub_state'] = $sub_state; -new_simple_page('register/step'.intval($sub_state['step']).'.tpl', AUTH_PUBLIC); -if (isset($err)) { $page->trig($err); } -$page->run(); -?> diff --git a/htdocs/register/success.php b/htdocs/register/success.php deleted file mode 100644 index ec3f678..0000000 --- a/htdocs/register/success.php +++ /dev/null @@ -1,44 +0,0 @@ -xdb->execute('UPDATE auth_user_md5 SET password={?} WHERE user_id={?}', $password, Session::getInt('uid')); - - $log =& Session::getMixed('log'); - $log->log('passwd', ''); - - if (Cookie::get('ORGaccess')) { - require_once('secure_hash.inc.php'); - setcookie('ORGaccess', hash_encrypt($password), (time()+25920000), '/', '' ,0); - } - - $page->assign('mdpok', true); -} - -$page->addJsLink('javascript/motdepasse.js'); - -$page->run(); -?> diff --git a/modules/register.php b/modules/register.php new file mode 100644 index 0000000..67f9a26 --- /dev/null +++ b/modules/register.php @@ -0,0 +1,300 @@ + $this->make_hook('register', AUTH_PUB), + 'register/end' => $this->make_hook('end', AUTH_PUB), + 'register/success' => $this->make_hook('success', AUTH_MDP), + ); + } + + function handler_register(&$page) + { + global $globals; + + $sub_state = Session::getMixed('sub_state', Array()); + if (!isset($sub_state['step'])) { + $sub_state['step'] = 0; + } + if (Get::has('back') && Get::getInt('back') < $sub_state['step']) { + $sub_state['step'] = max(0,Get::getInt('back')); + } + + if (Env::has('hash')) { + $res = $globals->xdb->query( + "SELECT m.uid, u.promo, u.nom, u.prenom, u.matricule + FROM register_marketing AS m + INNER JOIN auth_user_md5 AS u ON u.user_id = m.uid + WHERE m.hash={?}", Env::get('hash')); + if (list($uid, $promo, $nom, $prenom, $ourmat) = $res->fetchOneRow()) { + $sub_state['uid'] = $uid; + $sub_state['hash'] = Env::get('hash'); + $sub_state['promo'] = $promo; + $sub_state['nom'] = $nom; + $sub_state['prenom'] = $prenom; + $sub_state['ourmat'] = $ourmat; + + $globals->xdb->execute( + "REPLACE INTO register_mstats (uid,sender,success) + SELECT m.uid, m.sender, 0 + FROM register_marketing AS m + WHERE m.hash", $sub_state['hash']); + } + } + + switch ($sub_state['step']) { + case 0: + if (Post::has('step1')) { + $sub_state['step'] = 1; + if (isset($sub_state['hash'])) { + $sub_state['step'] = 3; + require_once('register.inc.php'); + create_aliases($sub_state); + } + } + break; + + case 1: + if (Post::has('promo')) { + $promo = Post::getInt('promo'); + if ($promo < 1900 || $promo > date('Y')) { + $err = "La promotion saisie est incorrecte !"; + } else { + $sub_state['step'] = 2; + $sub_state['promo'] = $promo; + if ($promo >= 1996 && $promo<2000) { + $sub_state['mat'] = ($promo % 100)*10 . '???'; + } elseif($promo >= 2000) { + $sub_state['mat'] = 100 + ($promo % 100) . '???'; + } + } + } + break; + + case 2: + if (count($_POST)) { + require_once('register.inc.php'); + $sub_state['prenom'] = Post::get('prenom'); + $sub_state['nom'] = Post::get('nom'); + $sub_state['mat'] = Post::get('mat'); + $err = check_new_user($sub_state); + + if ($err !== true) { break; } + $err = create_aliases($sub_state); + if ($err === true) { + unset($err); + $sub_state['step'] = 3; + } + } + break; + + case 3: + if (count($_POST)) { + require_once('register.inc.php'); + if (!isvalid_email(Post::get('email'))) { + $err[] = "Le champ 'E-mail' n'est pas valide."; + } elseif (!isvalid_email_redirection(Post::get('email'))) { + $err[] = $sub_state['forlife']." doit renvoyer vers un email existant ". + "valide, en particulier, il ne peut pas être renvoyé vers lui-même."; + } + if (!preg_match('/^[0-3][0-9][01][0-9][12][90][0-9][0-9]$/', + Post::get('naissance'))) + { + $err[] = "La 'Date de naissance' n'est pas correcte."; + } + + if (isset($err)) { + $err = join('
', $err); + } else { + $birth = Env::get('naissance'); + $sub_state['naissance'] = sprintf("%s-%s-%s", + substr($birth,4,4), + substr($birth,2,2), + substr($birth,0,2)); + $sub_state['email'] = Post::get('email'); + $sub_state['step'] = 4; + finish_ins($sub_state); + } + } + break; + } + + $_SESSION['sub_state'] = $sub_state; + $page->changeTpl('register/step'.intval($sub_state['step']).'.tpl'); + if (isset($err)) { + $page->trig($err); + } + + return PL_OK; + } + + function handler_end(&$page, $hash = null) + { + global $globals; + + $page->changeTpl('register/end.tpl'); + + require_once('user.func.inc.php'); + + if ($hash) { + $res = $globals->xdb->query( + "SELECT r.uid, r.forlife, r.bestalias, r.mailorg2, + r.password, r.email, r.naissance, u.nom, u.prenom, + u.promo, u.flags + FROM register_pending AS r + INNER JOIN auth_user_md5 AS u ON r.uid = u.user_id + WHERE hash={?} AND hash!='INSCRIT'", Env::get('hash')); + } + + if (!$hash || !list($uid, $forlife, $bestalias, $mailorg2, $password, $email, + $naissance, $nom, $prenom, $promo, $femme) = $res->fetchOneRow()) + { + $page->kill("

Cette adresse n'existe pas, ou plus, sur le serveur.

+

Causes probables :

+
    +
  1. Vérifie que tu visites l'adresse du dernier + e-mail reçu s'il y en a eu plusieurs.
  2. +
  3. Tu as peut-être mal copié l'adresse reçue par + mail, vérifie-la à la main.
  4. +
  5. Tu as peut-être attendu trop longtemps pour + confirmer. Les pré-inscriptions sont annulées + tous les 30 jours.
  6. +
  7. Tu es en fait déjà inscrit.
  8. +
"); + } + + + + /***********************************************************/ + /****************** REALLY CREATE ACCOUNT ******************/ + /***********************************************************/ + + $globals->xdb->execute('UPDATE auth_user_md5 + SET password={?}, perms="user", + date=NOW(), naissance={?}, date_ins = NOW() + WHERE user_id={?}', $password, $naissance, $uid); + $globals->xdb->execute('REPLACE INTO auth_user_quick (user_id) VALUES ({?})', $uid); + $globals->xdb->execute('INSERT INTO aliases (id,alias,type) + VALUES ({?}, {?}, "a_vie")', $uid, + $forlife); + $globals->xdb->execute('INSERT INTO aliases (id,alias,type,flags) + VALUES ({?}, {?}, "alias", "bestalias")', + $uid, $bestalias); + if ($mailorg2) { + $globals->xdb->execute('INSERT INTO aliases (id,alias,type) + VALUES ({?}, {?}, "alias")', $uid, + $mailorg2); + } + + require_once('emails.inc.php'); + $redirect = new Redirect($uid); + $redirect->add_email($email); + + // on cree un objet logger et on log l'inscription + $logger = new DiogenesCoreLogger($uid); + $logger->log('inscription', $email); + + $globals->xdb->execute('UPDATE register_pending SET hash="INSCRIT" WHERE uid={?}', $uid); + + $globals->hook->subscribe($forlife, $uid, $promo, $password); + + require_once('xorg.mailer.inc.php'); + $mymail = new XOrgMailer('register/inscription.reussie.tpl'); + $mymail->assign('forlife', $forlife); + $mymail->assign('prenom', $prenom); + $mymail->send(); + + start_connexion($uid,false); + $_SESSION['auth'] = AUTH_MDP; + + /***********************************************************/ + /************* envoi d'un mail au démarcheur ***************/ + /***********************************************************/ + $res = $globals->xdb->iterRow( + "SELECT DISTINCT sa.alias, IF(s.nom_usage,s.nom_usage,s.nom) AS nom, + s.prenom, s.flags AS femme + FROM register_marketing AS m + INNER JOIN auth_user_md5 AS s ON ( m.sender = s.user_id ) + INNER JOIN aliases AS sa ON ( sa.id = m.sender + AND FIND_IN_SET('bestalias', sa.flags) ) + WHERE m.uid = {?}", $uid); + $globals->xdb->execute("UPDATE register_mstats SET success=NOW() WHERE uid={?}", $uid); + + while (list($salias, $snom, $sprenom, $sfemme) = $res->next()) { + require_once('diogenes/diogenes.hermes.inc.php'); + $mymail = new HermesMailer(); + $mymail->setSubject("$prenom $nom s'est inscrit à Polytechnique.org !"); + $mymail->setFrom('"Marketing Polytechnique.org" '); + $mymail->addTo("\"$sprenom $snom\" <$salias@{$globals->mail->domain}>"); + $msg = ($sfemme?'Cher':'Chère')." $sprenom,\n\n" + . "Nous t'écrivons pour t'informer que {$prenom} {$nom} (X{$promo}), " + . "que tu avais incité".($femme?'e':'')." à s'inscrire à Polytechnique.org, " + . "vient à l'instant de terminer son inscription.\n\n" + . "Merci de ta participation active à la reconnaissance de ce site !!!\n\n" + . "Bien cordialement,\n" + . "L'équipe Polytechnique.org"; + $mymail->setTxtBody(wordwrap($msg, 72)); + $mymail->send(); + } + + $globals->xdb->execute("DELETE FROM register_marketing WHERE uid = {?}", $uid); + + redirect('success.php'); + $page->assign('uid', $uid); + + return PL_OK; + } + + function handler_success(&$page) + { + global $globals; + + $page->changeTpl('register/success.tpl'); + + if (Env::has('response2')) { + $_SESSION['password'] = $password = Post::get('response2'); + + $globals->xdb->execute('UPDATE auth_user_md5 SET password={?} + WHERE user_id={?}', $password, + Session::getInt('uid')); + + $log =& Session::getMixed('log'); + $log->log('passwd', ''); + + if (Cookie::get('ORGaccess')) { + require_once('secure_hash.inc.php'); + setcookie('ORGaccess', hash_encrypt($password), (time()+25920000), '/', '' ,0); + } + + $page->assign('mdpok', true); + } + + $page->addJsLink('javascript/motdepasse.js'); + + return PL_OK; + } +} + +?> diff --git a/templates/mails/inscription.reussie.tpl b/templates/register/inscription.reussie.tpl similarity index 100% rename from templates/mails/inscription.reussie.tpl rename to templates/register/inscription.reussie.tpl diff --git a/templates/mails/inscrire.mail.tpl b/templates/register/inscrire.mail.tpl similarity index 98% rename from templates/mails/inscrire.mail.tpl rename to templates/register/inscrire.mail.tpl index fc4c20e..43edea5 100644 --- a/templates/mails/inscrire.mail.tpl +++ b/templates/register/inscrire.mail.tpl @@ -35,7 +35,7 @@ mot de passe : {$pass} Rends-toi sur la page web suivante afin d'activer ta pré-inscription, et de changer ton mot de passe en quelque chose de plus facile à mémoriser : -{$baseurl}/register/end.php?hash={$hash} +{$baseurl}/register/end/{$hash} Si en cliquant dessus tu n'y arrives pas, copie intégralement l'adresse dans la barre de ton navigateur. diff --git a/templates/register/step0.tpl b/templates/register/step0.tpl index aa2b9d4..6cd8875 100644 --- a/templates/register/step0.tpl +++ b/templates/register/step0.tpl @@ -38,7 +38,7 @@ L'enregistrement se d {include file="docs/charte.tpl"} -
+
diff --git a/templates/register/step1.tpl b/templates/register/step1.tpl index 7be5842..16b8d02 100644 --- a/templates/register/step1.tpl +++ b/templates/register/step1.tpl @@ -22,7 +22,7 @@

Identification

- +

Avant toute chose, il te faut nous donner ta promotion :

diff --git a/templates/register/step2.tpl b/templates/register/step2.tpl index acec7b5..0fb394b 100644 --- a/templates/register/step2.tpl +++ b/templates/register/step2.tpl @@ -23,10 +23,10 @@

Identification

-retour +retour

- + {if $smarty.session.sub_state.promo >= 1996} diff --git a/templates/register/step3.tpl b/templates/register/step3.tpl index e94c065..73a217a 100644 --- a/templates/register/step3.tpl +++ b/templates/register/step3.tpl @@ -25,7 +25,7 @@

Formulaire de pré-inscription

- + {if $smarty.session.sub_state.mailorg2}

Tu n'as pour le moment aucun homonyme dans notre base de données, nous allons diff --git a/templates/register/success.tpl b/templates/register/success.tpl index 13d1278..9418a5b 100644 --- a/templates/register/success.tpl +++ b/templates/register/success.tpl @@ -46,7 +46,7 @@ ton mot de passe a bien Tu as recu un mot de passe par défaut, si tu souhaites en changer, tu peux le faire ici :

- +
@@ -77,7 +77,7 @@ Tu as recu un mot de passe par d
-
+
-- 2.1.4