Migration de step4.php
authorx2000bedo <x2000bedo>
Wed, 18 Aug 2004 23:45:52 +0000 (23:45 +0000)
committerx2000bedo <x2000bedo>
Wed, 18 Aug 2004 23:45:52 +0000 (23:45 +0000)
configs/mails.conf
etat_migration
htdocs/step4.php [new file with mode: 0644]
include/inscription_forums_base.inc.php [new file with mode: 0644]
include/inscription_listes_base.inc.php [new file with mode: 0644]
templates/mails/forums.promo.tpl [new file with mode: 0644]
templates/mails/inscription.reussie.tpl [new file with mode: 0644]
templates/mails/listes.promo.tpl [new file with mode: 0644]
templates/mails/marketing.thanks.tpl [new file with mode: 0644]
templates/mails/polyedu.error.tpl [new file with mode: 0644]
templates/step4.tpl [new file with mode: 0644]

index 90eea4a..86541eb 100644 (file)
@@ -32,5 +32,23 @@ from=Polytechnique.org <support@polytechnique.org>
 [marketing_relance]
 from=Pre-Inscription <register@polytechnique.org>
 
+[marketing_thanks]
+from=Marketing Polytechnique.org <register@polytechnique.org>
+
 [inscrire]
 from=Pre-Inscription <register@polytechnique.org>
+
+[forums_promo]
+from=Forums <forums@polytechnique.org>
+to=news@polytechnique.org
+
+[listes_promo]
+from=web@polytechnique.org
+to=web@polytechnique.org
+
+[polyedu_error]
+from=support+edu@polytechnique.org
+to=support@polytechnique.org
+
+[inscription]
+from=support@polytechnique.org
index 9e67947..754742c 100644 (file)
@@ -20,7 +20,7 @@ Etat  | Ancien nom                                                              | Nouveau nom
 ------+-[ emails ... ]----------------------------+----------------
 x        | routage-mail.php                                              | 
 ------+-[ inscription + mdp ]---------------------+----------------
-;        | step4.php                                                             | 
+x        | step4.php                                                             | 
 ;        | tmpPWD.php                                                            | 
 ------+-[ bordel ]--------------------------------+----------------
 x        | recherche.php                                                         | 
diff --git a/htdocs/step4.php b/htdocs/step4.php
new file mode 100644 (file)
index 0000000..28cb13b
--- /dev/null
@@ -0,0 +1,138 @@
+<?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();
diff --git a/include/inscription_forums_base.inc.php b/include/inscription_forums_base.inc.php
new file mode 100644 (file)
index 0000000..fe83d5a
--- /dev/null
@@ -0,0 +1,54 @@
+<?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;
+}
+
+
+
+?>
diff --git a/include/inscription_listes_base.inc.php b/include/inscription_listes_base.inc.php
new file mode 100644 (file)
index 0000000..82e51cb
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+
+
+/** inscrit l'uid donnée à la promo
+ * @param $uid UID
+ * @param $promo promo
+ * @return reponse MySQL
+ * @see admin/RegisterNewUser.php
+ * @see step4.php
+ */
+function inscription_liste_promo($uid,$promo) {
+  global $globals;
+  // récupération de l'id de la liste promo
+  $result=$globals->db->query("select id from aliases where alias = 'promo$promo' and type = 'liste'");
+  if (!list($Lid)=mysql_fetch_row($result)) { // pas de liste promo, il faut la créer
+        $mymail = new TplMailer('listes.promo.tpl');
+        $mymail->assign('promo', $promo);
+        $mymail->send();
+        $Lid=false;
+  }
+  mysql_free_result($result);
+  if ($Lid) {
+    $globals->db->query("insert into listes_ins set idl=$Lid, idu=$uid");
+    $res = !($globals->db->err());
+  } else  $res = false;
+  return $res;
+}
+
+
+
+/** inscription à la newsletter
+ * @param $uid UID
+ * @return reponse MySQL
+ * @see admin/RegisterNewUser.php
+ * @see step4.php
+ */
+function inscription_newsletter($uid) {
+    global $globals;
+    $result=$globals->db->query("select id from aliases where alias = 'newsletter' and type = 'liste'");
+    if (list($Lid)=mysql_fetch_row($result)) {
+        $globals->db->query("insert into listes_ins set idl=$Lid, idu=$uid");
+        $res = !($globals->db->err());
+    } else $res = false;
+    mysql_free_result($result);
+    return $res;
+}
+
+?>
diff --git a/templates/mails/forums.promo.tpl b/templates/mails/forums.promo.tpl
new file mode 100644 (file)
index 0000000..ee1b62f
--- /dev/null
@@ -0,0 +1,7 @@
+{config_load file="mails.conf" section="forums_promo"}
+{from full=#from#}
+{to addr=#to#}
+{subject text="Création du forum promo $promo"}
+
+Création du forum promo {$promo} à faire !
+(+ de 20% d'inscrits)
diff --git a/templates/mails/inscription.reussie.tpl b/templates/mails/inscription.reussie.tpl
new file mode 100644 (file)
index 0000000..00c2abd
--- /dev/null
@@ -0,0 +1,15 @@
+{config_load file="mails.conf" section="inscription"}
+{from full=#from#}
+{to addr="$username@polytechnique.org"}
+{subject text="Bienvenue parmi les X sur le web !"}
+
+{$prenom}, félicitations pour ton inscription :o))
+
+N'oublie pas de changer ton mot de passe sur le site. C'est très important
+si tu veux garder accès au site et ton e-mail en fonction.
+
+Tu as maintenant accès à l'annuaire en ligne, aux services de listes de diffusion,
+aux infos promo, etc. N'oublie pas de mettre ta fiche-annuaire à jour.
+--
+Polytechnique.org
+"Le portail des élèves & anciens élèves de l'Ecole polytechnique"
diff --git a/templates/mails/listes.promo.tpl b/templates/mails/listes.promo.tpl
new file mode 100644 (file)
index 0000000..2667f51
--- /dev/null
@@ -0,0 +1,6 @@
+{config_load file="mails.conf" section="listes_promo"}
+{from full=#from#}
+{to addr=#to#}
+{subject text="Création de la liste promo $promo"}
+
+Création de la liste promo {$promo} à faire !
diff --git a/templates/mails/marketing.thanks.tpl b/templates/mails/marketing.thanks.tpl
new file mode 100644 (file)
index 0000000..e874e02
--- /dev/null
@@ -0,0 +1,13 @@
+{config_load file="mails.conf" section="marketing_thanks"}
+{from full=#from#}
+{to addr="$to"}
+{subject text="$prenom $nom s'est inscrit à Polytechnique.org !"}
+Bonjour,
+
+Nous t'écrivons juste pour t'informer que {$prenom} {$nom} (X{$promo}), que tu avais incité à s'inscrire à Polytechnique.org, vient à l'instant de terminer son inscription !! :o)
+
+Merci de ta participation active à la reconnaissance de ce site !!!
+
+Bien cordialement,
+L'équipe Polytechnique.org
+"Le portail des élèves & anciens élèves de l'Ecole polytechnique"
diff --git a/templates/mails/polyedu.error.tpl b/templates/mails/polyedu.error.tpl
new file mode 100644 (file)
index 0000000..2509d33
--- /dev/null
@@ -0,0 +1,10 @@
+{config_load file="mails.conf" section="polyedu_error"}
+{from full=#from#}
+{to addr=#to#}
+{subject text="Erreur d'inscription sur polyedu pour le username $username"}
+
+Erreur d'inscription sur polyedu pour le username {$username}.
+Pour corriger, un petit tour dans la page d'admin suffit normalement.
+Le message d'erreur mysql est (s'il est vide, c'est qu'il n'y a pas d'entrée dans la table X, sûrement un homonyme qui devrait envoyer un mail avec une proposition d'alias) :
+
+{$polyedu_error}
diff --git a/templates/step4.tpl b/templates/step4.tpl
new file mode 100644 (file)
index 0000000..1bdc03e
--- /dev/null
@@ -0,0 +1,59 @@
+{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}