From 5f46a0794a98cb3fdae85ce12f109289c9560b79 Mon Sep 17 00:00:00 2001 From: Raphael Marichez Date: Sun, 19 Dec 2004 19:41:53 +0000 Subject: [PATCH] debug inscription/* and homonyms - few sql syntax error - alias "prenom.nom.NN" wasn't added in "aliases" in case of an homonym : usage of mailorg. - in en_cours, uid is not an integer ! - prefer future bestalias rather than forlife in the processus of pre-registering git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-113 --- htdocs/inscription/maj.php | 4 ++-- htdocs/inscription/step3.php | 15 +++++++-------- htdocs/inscription/step4.php | 23 ++++++++++++++--------- include/identification.inc.php | 15 +++++++++++---- include/select_user.inc.php | 2 +- templates/inscription/step2.tpl | 6 ++++-- templates/mails/inscrire.mail.tpl | 2 +- 7 files changed, 40 insertions(+), 27 deletions(-) diff --git a/htdocs/inscription/maj.php b/htdocs/inscription/maj.php index 49a9212..3ae7d72 100644 --- a/htdocs/inscription/maj.php +++ b/htdocs/inscription/maj.php @@ -22,7 +22,7 @@ require_once("xorg.inc.php"); if (Env::has('n')) { - $sql = "SELECT * FROM envoidirect WHERE uid=".Env::getInt('n'); + $sql = "SELECT * FROM envoidirect WHERE uid='".Env::get('n')."'"; $result = $globals->db->query($sql); if ($ligne = mysql_fetch_assoc($result)) { @@ -57,7 +57,7 @@ if (Env::has('n')) { $page->assign('prenom', $prenom); $page->assign('nom', $nom); - $page->assign('envoidirect', Env::getInt('n')); + $page->assign('envoidirect', Env::get('n')); $page->run(); } } diff --git a/htdocs/inscription/step3.php b/htdocs/inscription/step3.php index 8a1d787..d666a01 100644 --- a/htdocs/inscription/step3.php +++ b/htdocs/inscription/step3.php @@ -23,7 +23,6 @@ require_once("xorg.inc.php"); new_skinned_page('inscription/step3.tpl', AUTH_PUBLIC); require_once("identification.inc.php"); -$page->assign('mailorg', $mailorg); $page->assign('forlife', $forlife); if (!isvalid_email(Env::get('email'))) { @@ -44,7 +43,7 @@ if($page->nb_errs()) { $page->changeTpl('inscription/step2.tpl'); require_once("applis.func.inc.php"); $page->assign('homonyme', $homonyme); - $page->assign('loginbis', isset($loginbis) ? $loginbis : ''); + $page->assign('mailorg', $mailorg); $page->assign('prenom', $prenom); $page->assign('nom', $nom); @@ -57,8 +56,6 @@ $pass_clair = rand_pass(); $password = md5($pass_clair); $date = date("Y-m-j"); -if (!isset($loginbis)) $loginbis=""; - $birth = sprintf("%s-%s-%s", substr(Env::get('naissance'),4,4), substr(Env::get('naissance'),2,2), substr(Env::get('naissance'),0,2)); @@ -69,23 +66,25 @@ $sql="REPLACE INTO en_cours naissance='$birth', date='$date', nationalite='".Env::get('nationalite')."', appli_id1='".Env::get('appli_id1')."', appli_type1='".Env::get('appli_type1')."', appli_id2='".Env::get('appli_id2')."', appli_type2='".Env::get('appli_type2')."', - loginbis='$mailorg', username='$forlife'"; + loginbis='$mailorg', username='$forlife', homonyme='$homonyme'"; $globals->db->query($sql); $globals->db->query("UPDATE auth_user_md5 SET last_known_email='".Env::get('email')."' WHERE matricule = $matricule"); // si on venait de la page maj.php, on met a jour la table envoidirect if (Env::has('envoidirect')) { - $globals->db->query("UPDATE envoidirect SET date_succes=NOW() WHERE uid=".Env::getInt('envoidirect')); + if (Env::get('envoidirect')) { + $globals->db->query("UPDATE envoidirect SET date_succes=NOW() WHERE uid='".Env::get('envoidirect')."'"); + } } require_once('xorg.mailer.inc.php'); $mymail = new XOrgMailer('inscrire.mail.tpl'); -$mymail->assign('forlife', $forlife); +$mymail->assign('mailorg', $mailorg); $mymail->assign('lemail', Env::get('email')); $mymail->assign('pass_clair', $pass_clair); $mymail->assign('baseurl', $globals->baseurl); $mymail->assign('ins_id', $ins_id); -$mymail->assign('subj', $forlife."@polytechnique.org"); +$mymail->assign('subj', $mailorg."@polytechnique.org"); $mymail->send(); $page->run(); diff --git a/htdocs/inscription/step4.php b/htdocs/inscription/step4.php index 8dc0103..4f08d2a 100644 --- a/htdocs/inscription/step4.php +++ b/htdocs/inscription/step4.php @@ -26,16 +26,16 @@ require_once("user.func.inc.php"); require_once('xorg.mailer.inc.php'); if (Env::has('ref')) { - $sql = "SELECT username,loginbis,matricule,promo,password, + $sql = "SELECT username,homonyme,loginbis,matricule,promo,password, nom,prenom,nationalite,email,naissance,date, appli_id1,appli_type1,appli_id2,appli_type2 - FROM en_cours WHERE ins_id=".Env::getInt('ref'); + FROM en_cours WHERE ins_id='".Env::get('ref')."'"; $res = $globals->db->query($sql); } -//vérifions que la référence de l'utilisateur est -if (!Env::has('ref')) || - !list( $forlife, $alias, $matricule, $promo, $password, $nom, $prenom,$nationalite, +// vérifions que la référence de l'utilisateur est une référence existante dans "en_cours" +if ( !Env::has('ref') || + !list( $forlife, $homonyme, $alias, $matricule, $promo, $password, $nom, $prenom,$nationalite, $email, $naissance,$date,$appli_id1,$appli_type1,$appli_id2,$appli_type2) = mysql_fetch_row($res)) { $page->kill("

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

@@ -63,7 +63,7 @@ if (mysql_num_rows($res)) { $nom = stripslashes($nom); $prenom = stripslashes($prenom); -$sql = "UPDATE auth_user_md5 SET password='$password', nationalite=$nationalite, perms='user', +$sql = "UPDATE auth_user_md5 SET password='$password', nationalite='$nationalite', perms='user', date='$date', naissance='$naissance', date_ins = NULL WHERE matricule='$matricule'"; $globals->db->query($sql); $sql = "REPLACE INTO auth_user_quick (user_id) @@ -90,12 +90,17 @@ if ((list($uid) = mysql_fetch_row($resbis)) === false) { $globals->db->query("INSERT INTO aliases (id,alias,type) VALUES ($uid,'$forlife','a_vie')"); if($alias) { + // Les alias supplémentaires sont prenom.nom.NN et, si pas d'homonymie, prenom.nom.NN $p2 = sprintf("%02u",($promo%100)); + // Vérification d'homonymie + if(!$homonyme) { + // si homonyme, on a déjà calculé l'unique alias possible : prenom.nom.NN, qui se trouve dans $alias + $globals->db->query("INSERT INTO aliases (id,alias,type) VALUES ($uid,'$alias.$p2','alias')"); + } $globals->db->query("INSERT INTO aliases (id,alias,type) VALUES ($uid,'$alias','alias')"); - $globals->db->query("INSERT INTO aliases (id,alias,type) VALUES ($uid,'$alias.$p2','alias')"); } -// on cree un objet logger et on log l' +// on cree un objet logger et on log l'inscription $logger = new DiogenesCoreLogger($uid); $logger->log("inscription",$email); @@ -134,7 +139,7 @@ inscription_notifs_base($uid); // insérer une ligne dans user_changes pour que les coordonnées complètes // soient envoyées a l'AX -$globals->db->query("insert into user_changes ($uid)"); +$globals->db->query("insert into user_changes values ($uid)"); // envoi du mail à l'inscrit $mymail = new XOrgMailer('inscription.reussie.tpl'); diff --git a/include/identification.inc.php b/include/identification.inc.php index bbb20ba..c9287e3 100644 --- a/include/identification.inc.php +++ b/include/identification.inc.php @@ -176,6 +176,8 @@ $result = $globals->db->query("SELECT id,type,expire FROM aliases WHERE alias='$ $homonyme = mysql_num_rows($result) > 0; if ( $homonyme ) { + $newbestalias = $mailorg . "." . sprintf("%02u",($promo%100)); + list($h_id,$h_type,$expire) = mysql_fetch_row($result); mysql_free_result($result); @@ -197,18 +199,23 @@ if ( $homonyme ) { $mailer->addCc('"Support Polytechnique.org" '); $msg = "Un homonyme s'est inscrit, nous ne pouvons donc garder ton alias '$mailorg'.\n\n". - "Tu gardes tout de même l'usage de cet alias pour 1 mois encore à compter de ce jour.\n\n". + "Tu gardes tout de même l'usage de cet alias pour un mois encore à compter de ce jour.\n\n". "Lorsque cet alias sera désactivé, l'adresse :\n". " $mailorg@polytechnique.org\n". "renverra vers un robot qui indique qu'il y a plusieurs personnes portant le même nom ; cela évite que l'un des homonymes reçoive des courriels destinés à l'autre.\n\n". - "Cordialement\n\n". + "Pour te connecter au site, tu pourras utiliser comme 'login' soit ton adresse à vie '$forlife', ". + "soit l'alias '$newbestalias'. Par ailleurs, commence dès aujourd'hui à communiquer à tes correspondants ". + "ton adresse :\n". + " $newbestalias@polytechnique.org\n\n". + "En nous excusant pour le désagrément occasionné,\n". + "cordialement\n\n". "-- \n". - "Polytechnique.org\n". + "L'équipe de Polytechnique.org\n". "\"Le portail des élèves & anciens élèves de l'X\""; $mailer->SetTxtBody(wordwrap($msg,72)); $mailer->send(); } - unset($mailorg); + $mailorg = $newbestalias; } ?> diff --git a/include/select_user.inc.php b/include/select_user.inc.php index 6ce6e3c..67459af 100644 --- a/include/select_user.inc.php +++ b/include/select_user.inc.php @@ -36,7 +36,7 @@ if (!Env::has("xmat") || !Env::has("submit")) { $chaine2 = strtok(" -'"); $chaine = ( strlen($chaine2) > strlen($chaine1) ) ? $chaine2 : $chaine1; - $rq = strlen(Env::get("promoR")==4 ? "AND promo=".Env::getInt("promoR") : ""); + $rq = strlen(Env::get("promoR"))==4 ? "AND promo=".Env::getInt("promoR") : ""; $where = "prenom LIKE '%$prenom%' AND nom LIKE '%$chaine%' $rq ORDER BY promo,nom"; } diff --git a/templates/inscription/step2.tpl b/templates/inscription/step2.tpl index 4c64b2a..087ee5a 100644 --- a/templates/inscription/step2.tpl +++ b/templates/inscription/step2.tpl @@ -30,7 +30,9 @@
{if $homonyme}

- Ton adresse sera : {$forlife}@polytechnique.org + Tu as déjà un homonyme inscrit dans notre base de données mais dans une autre promotion, nous allons + donc te donner l'adresse {$mailorg}@polytechnique.org, en plus + de ton adresse à vie {$forlife}@polytechnique.org.

{else}

@@ -46,7 +48,7 @@ Elle pointera sur les e-mails de ton choix, indique-s-en un pour commencer (tu pourras indiquer les autres une fois l'inscription terminée). Attention, il doit impérativement être correct pour que nous puissions - te recontacter. + t'envoyer ton mot de passe.

diff --git a/templates/mails/inscrire.mail.tpl b/templates/mails/inscrire.mail.tpl index a5c06ee..22c0415 100644 --- a/templates/mails/inscrire.mail.tpl +++ b/templates/mails/inscrire.mail.tpl @@ -28,7 +28,7 @@ Ton inscription sur Polytechnique.org est presque termin Après activation, tes paramètres seront : -login : {$forlife} +login : {$mailorg} mot de passe : {$pass_clair} 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 : -- 2.1.4