--- /dev/null
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('step4.tpl', AUTH_PUBLIC);
+
+require("inscription_listes_base.inc.php");
+require("inscription_forums_base.inc.php");
+require("db_connectpolyedu.inc.php");
+require('tpl.mailer.inc.php');
+
+define("ERROR_REF", 1);
+define("ERROR_ALREADY_SUBSCRIBED", 2);
+define("ERROR_DB", 3);
+$lastnewslogin = '20030908010000'; //valeur par défaut
+
+if (!empty($_REQUEST['ref'])) {
+ $sql = "SELECT username,loginbis,matricule,promo,password".
+ ",nom,prenom,nationalite,email,naissance,date".
+ ",appli_id1,appli_type1,appli_id2,appli_type2".
+ " FROM en_cours WHERE ins_id='".$_REQUEST["ref"]."'";
+ $res = $globals->db->query($sql);
+ //vérifions que la référence de l'utilisateur est valide
+ if (!list($username, $loginbis, $matricule, $promo, $password, $nom, $prenom,$nationalite,
+ $email, $naissance,$date,$appli_id1,$appli_type1,$appli_id2,$appli_type2) = mysql_fetch_row($res)) {
+ $page->assign('error',ERROR_REF);
+ $page->run();
+ }
+
+ // vérifions qu'il n'y a pas déjà une inscription dans le passé
+ // ce qui est courant car les double-clic...
+ $sql = "SELECT user_id FROM auth_user_md5 where username='$username'";
+ $res = $globals->db->query($sql);
+ if ( mysql_num_rows($res) != 0) {
+ $page->assign('error',ERROR_ALREADY_SUBSCRIBED);
+ $page->run();
+ }
+
+ $nom = stripslashes($nom);
+ $prenom = stripslashes($prenom);
+ $sql = "INSERT INTO auth_user_md5 SET username='$username',loginbis='$loginbis',matricule='$matricule',promo=$promo,
+ password='$password',nom='".addslashes($nom)."',prenom='".addslashes($prenom)."',nationalite=$nationalite,
+ date='$date',naissance=$naissance, date_ins = NULL, lastnewslogin='$lastnewslogin'";
+ $globals->db->query($sql);
+
+ // on vérifie qu'il n'y a pas eu d'erreur
+ if ($globals->db->err()) {
+ $page->assign('error',ERROR_DB);
+ $page->assign('error_db',$globals->db->error());
+ $page->run();
+ }
+ // ok, pas d'erreur, on continue
+ $uid=$globals->db->insert_id();
+
+ // on cree un objet logger et on log l'evenement
+ $logger = new DiogenesCoreLogger($uid);
+ $logger->log("inscription",$email);
+ $page->assign('username',$username);
+
+ /****************** insertion de l'email dans la table emails ***/
+ require("mtic.inc.php");
+ $flags = 'filtre'.(check_mtic($email) ? ',mtic':'');
+ $sql = "insert into emails set uid = $uid, num = 0, email = '\"|maildrop /var/mail/.maildrop_filters/tag_spams $uid\"', flags = 'active'";
+ $globals->db->query($sql);
+ $sql = "insert into emails set uid = $uid, num = 1, email = '$email', flags = '$flags'";
+ $globals->db->query($sql);
+ /****************** ajout des formations ****************/
+ if (($appli_id1>0)&&($appli_type1))
+ $globals->db->query("insert into applis_ins set uid=$uid,aid=$appli_id1,type='$appli_type1',ordre=0");
+ if (($appli_id2>0)&&($appli_type2))
+ $globals->db->query("insert into applis_ins set uid=$uid,aid=$appli_id2,type='$appli_type2',ordre=1");
+ /****************** envoi d'un mail au démarcheur ***************/
+ /* si la personne a été marketingnisée, alors on prévient son démarcheur */
+ $res = $globals->db->query("SELECT a.username,e.date_envoi FROM envoidirect as e INNER JOIN auth_user_md5 as a ON e.sender = a.user_id
+ WHERE e.matricule = '".$matricule."' GROUP BY a.username");
+ while (list($sender_usern, $sender_date) = mysql_fetch_row($res)) {
+ $mymail = new TplMailer('marketing.thanks.tpl');
+ $mymail->assign('to', $sender_usern);
+ $mymail->assign('prenom', $prenom);
+ $mymail->assign('nom',$nom);
+ $mymail->assign('promo',$promo);
+ $mymail->send();
+ }
+
+ /****************** inscription à la liste promo ****************/
+ $inspromo = inscription_liste_promo($uid,$promo);
+ /****************** inscription à la newsletter ****************/
+ $insnewsletter = inscription_newsletter($uid);
+ /****************** inscription à la newsletter ****************/
+ $insforumpromo = inscription_forum_promo($uid,$promo);
+ /****************** inscription à la newsletter ****************/
+ $insforums = inscription_forums($uid);
+
+ // effacer la pré-inscription devenue inscription
+ $globals->db->query("update en_cours set loginbis='INSCRIT' WHERE username='$username'");
+
+ // insérer l'inscription dans la table des inscriptions confirmées
+ $globals->db->query("INSERT INTO ins_confirmees SET id=$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)");
+
+ // inscription sur polytechnique.edu
+ $polyedu_ok=false;
+ $db_edu = connect_polyedu();
+ if($db_edu) {
+ $result = mysql_query("select a.id, a.alias from x, aliases as a"
+ ." where x.id=a.id and x.matricule = $matricule", $db_edu);
+ if($result and list($id_edu, $alias_edu) = mysql_fetch_row($result)) {
+ mysql_free_result($result);
+ mysql_query("replace into emails (id,email) values ($id_edu,'$username@m4x.org')", $db_edu);
+ $polyedu_ok = (mysql_errno($db_edu)==0);
+ } // if($result)
+ } // if($db_edu)
+ if(!$polyedu_ok) $polyedu_error = mysql_errno($db_edu). ": ". mysql_error($db_edu);
+ mysql_close($db_edu);
+
+ // si erreur sur polyedu, envoi du mail aux gestionnaires
+ if(!$polyedu_ok) {
+ $mymail = new TplMailer('polyedu.error.tpl');
+ $mymail->assign('username', $username);
+ $mymail->assign('polyedu_error', $polyedu_error);
+ $mymail->send();
+ }
+
+ // envoi du mail à l'utilisateur
+ $mymail = new TplMailer('inscription.reussie.tpl');
+ $mymail->assign('username', $username);
+ $mymail->assign('prenom', $prenom);
+ $mymail->send();
+
+ // s'il est dans la table envoidirect, on le marque comme inscrit
+ $globals->db->query("update envoidirect set date_succes=NOW() where matricule = $matricule");
+}
+else
+ $page->assign('error',ERROR_REF);
+
+$page->assign('dev',(isset($site_dev) && $site_dev)?1:0);
+$page->run();
--- /dev/null
+<?php
+
+/** inscrit l'uid donnée au forum promo
+ * @param $uid UID
+ * @param $promo promo
+ * @return la reponse MySQL
+ * @see step4.php
+ */
+function inscription_forum_promo($uid,$promo) {
+ global $globals;
+ // récupération de l'id du forum promo
+ $result=$globals->db->query("SELECT fid FROM forums.list WHERE nom='xorg.promo.x$promo'");
+ if (!list($fid)=mysql_fetch_row($result)) { // pas de forum promo, il faut le créer
+ $req_au=$globals->db->query("SELECT count(*) FROM auth_user_md5 WHERE promo='$promo'");
+ list($effau) = mysql_fetch_row($req_au);
+ $req_id=$globals->db->query("SELECT count(*) FROM identification WHERE promo='$promo'");
+ list($effid) = mysql_fetch_row($req_id);
+ if (5*$effau>$effid) { // + de 20% d'inscrits
+ $mymail = new TplMailer('forums.promo.tpl');
+ $mymail->assign('promo', $promo);
+ $mymail->send();
+ }
+ $fid = false;
+ }
+ mysql_free_result($result);
+ if ($fid) {
+ $globals->db->query("INSERT INTO forums.abos (fid,uid) VALUES ('$fid','$uid')");
+ $res = !($globals->db->err());
+ } else $res = false;
+ return $res;
+}
+
+
+/** inscrit UID aux forums par défaut
+ * @param $uid UID
+ * @return la reponse MySQL globale
+ * @see step4.php
+ */
+function inscription_forums($uid) {
+ global $globals;
+ $res = true;
+ $cible = array('xorg.general','xorg.pa.emploi','xorg.pa.divers','xorg.pa.logements');
+ while (list ($key, $val) = each ($cible)) {
+ $result=$globals->db->query("SELECT fid FROM forums.list WHERE nom='$val'");
+ list($fid)=mysql_fetch_row($result);
+ $globals->db->query("INSERT INTO forums.abos (fid,uid) VALUES ('$fid','$uid')");
+ $res = $res and !($globals->db->err());
+ }
+ return $res;
+}
+
+
+
+?>
--- /dev/null
+{if !isset($error)}
+ <div class="rubrique">
+ Dernière étape
+ </div>
+ <p class="normal">
+ Tu as maintenant accès au site en utilisant les paramètres reçus par mail.
+ Les adresses électroniques <strong>{$username}@polytechnique.org</strong>
+ et <strong>{$username}@m4x.org</strong> sont déjà ouvertes, essaie-les !
+ </p>
+ <p class="normal">
+ Remarque: m4x.org est un domaine "discret" qui veut dire "mail for X" et
+ qui comporte exactement les mêmes adresses que le domaine polytechnique.org.
+ </p>
+ <p class="normal">
+ <strong><a href="{if $dev eq 0}https://www.polytechnique.org/{/if}motdepassemd5.php">Clique ici pour changer ton mot de passe.</a></strong>
+ </p>
+ <p class="normal">
+ N'oublie pas : si tu perds ton mot de passe, nous n'avons aucun engagement, en
+ particulier en termes de rapidité, mais pas seulement, à te redonner accès au
+ site. Cela peut prendre plusieurs semaines, les pertes de mot de passe sont
+ traitées avec la priorité minimale.
+ </p>
+{elseif $error eq $smarty.const.ERROR_DB}
+ {$error_db}
+
+ <p class="normal">
+ Une erreur s'est produite lors de la mise en place définitive de ton inscription,
+ essaie à nouveau, si cela ne fonctionne toujours pas, envoie un mail à
+ <a href="mailto:webmestre@polytechnique.org">webmaster@polytechnique.org</a>
+ </p>
+{elseif $error eq $smarty.const.ERROR_ALREADY_SUBSCRIBED}
+ <p class="normal">
+ Tu es déjà inscrit à polytechnique.org. Tu as sûrement cliqué deux fois sur le même lien de
+ référence ou effectué un double clic. Consultes tes mails pour obtenir ton identifiant et ton
+ mot de passe.
+ </p>
+{elseif $error eq $smarty.const.ERROR_REF}
+ <div class="rubrique">
+ OOOooups !
+ </div>
+ <p class="normal">
+ Cette adresse n'existe pas, ou plus, sur le serveur.
+ </p>
+ <p class="normal">
+ Causes probables :
+ </p>
+ <ol>
+ <li>
+ Vérifie que tu visites l'adresse du dernier e-mail reçu s'il y en a eu plusieurs.
+ </li>
+ <li>
+ Tu as peut-être mal copié l'adresse reçue par mail, vérifie-la à la main.
+ </li>
+ <li>
+ Tu as peut-être attendu trop longtemps pour confirmer. Les
+ pré-inscriptions sont annulées tous les 30 jours.
+ </li>
+ </ol>
+{/if}