inscrire done !!!
authorx2000habouzit <x2000habouzit>
Mon, 19 Jul 2004 08:58:02 +0000 (08:58 +0000)
committerx2000habouzit <x2000habouzit>
Mon, 19 Jul 2004 08:58:02 +0000 (08:58 +0000)
PS: did you read the fuckin doc before using marty plugins/functions ????
a smarty function does not ECHO or PRINTF anything, it RETURNS the html result, since it can break all the ob handlers.
half of the functions defined for profil and applis are completly borked !!!!!!!!!

15 files changed:
configs/mails.conf
etat_migration
htdocs/inscrire.php [new file with mode: 0644]
include/applis.func.inc.php
include/auto.prepend.inc.php
include/identification.inc.php [new file with mode: 0644]
include/profil.func.inc.php
include/profil.inc.php
plugins/function.select_db_table.php [new file with mode: 0644]
templates/inscrire.charte.tpl [new file with mode: 0644]
templates/inscrire.form_data.tpl [new file with mode: 0644]
templates/inscrire.form_id.tpl [new file with mode: 0644]
templates/inscrire.preins.tpl [new file with mode: 0644]
templates/mails/inscrire.mail.tpl [new file with mode: 0644]
templates/mails/marketing.relance.tpl

index 6dae23f..90eea4a 100644 (file)
@@ -30,4 +30,7 @@ cc=Equipe Polytechnique.org <validation+sondages@polytechnique.org>
 from=Polytechnique.org <support@polytechnique.org>
 
 [marketing_relance]
-from=Pré Inscription <register@polytechnique.org>
+from=Pre-Inscription <register@polytechnique.org>
+
+[inscrire]
+from=Pre-Inscription <register@polytechnique.org>
index 44cdae2..cba5af0 100644 (file)
@@ -30,7 +30,6 @@ Etat  | Ancien nom                                                              | Nouveau nom
 ------+-[ emails ... ]----------------------------+----------------
 ;        | routage-mail.php                                              | 
 ------+-[ inscription + mdp ]---------------------+----------------
-;        | inscrire.php                                                          | 
 ;        | maj.php                                                                       | 
 ;        | step4.php                                                             | 
 ;        | tmpPWD.php                                                            | 
@@ -159,6 +158,7 @@ xx!   | groupex/donne-chall.php                                       | -
 xx!      | groupex/export-econfiance.php                         | -
 xx       | groupex.php                                                           | groupex/index.php 
 xx       | index.php                                                             | -
+xx       | inscrire.php                                                          | 
 xx       | login.php                                                             | -
 xx       | marketing.php                                                         | marketing/public.php
 xx       | mescontacts.php                                                       | -
diff --git a/htdocs/inscrire.php b/htdocs/inscrire.php
new file mode 100644 (file)
index 0000000..9e924a7
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+require("auto.prepend.inc.php");
+
+$erreur = Array();
+
+if(isset($_REQUEST["charte"])) { // ok la variable $_REQUEST["charte"] existe
+    if( empty($_REQUEST["promo"])  && empty($_REQUEST["nom"])  && empty($_REQUEST["prenom"]) )  {
+        //  id non remplie, affichage form id
+        new_skinned_page('inscrire.form_id.tpl', AUTH_PUBLIC, true);
+        $page->assign('erreur', $erreur);
+        $page->run();
+    } elseif (empty($_REQUEST["email"])) { // formulaire identification soumis
+        // data pas encore envoyées
+        // vérification du format des données rentrées
+        if( empty($_REQUEST["nom"]) || empty($_REQUEST["prenom"]) || empty($_REQUEST["promo"])
+                || ( strlen(strtok($_REQUEST["nom"],"()")) < strlen($_REQUEST["nom"]) )
+          ) {
+            //  il manque au moins une donnée
+            new_skinned_page('inscrire.form_id.tpl', AUTH_PUBLIC, true);
+            $erreur[] = "Il manque des champs ou certains champs contiennent des caractères interdits. Recommence.";
+            $page->assign('erreur', $erreur);
+            $page->run();
+        } else  {
+            // $_REQUEST["nom"], $_REQUEST["prenom"] et $_REQUEST["promo"] existent
+            new_skinned_page('inscrire.form_data.tpl', AUTH_PUBLIC, true);
+            
+           require("identification.inc.php");
+            require("applis.func.inc.php");
+           
+           $page->assign('homonyme', $homonyme);
+           $page->assign('loginbis', $loginbis);
+           $page->assign('mailorg', $mailorg);
+           
+           $page->assign('prenom', $prenom);
+           $page->assign('nom', $nom);
+           
+            $page->assign('erreur', $erreur);
+           $page->run();
+        }
+    } else { // $_REQUEST["email"] est renseignée donc l'inscription est finie
+        require("identification.inc.php");
+        require("xorg.misc.inc.php");
+       
+       if(!isvalid_email($_REQUEST["email"]))
+           $erreur[] = "Le champ 'E-mail' n'est pas valide.";
+       if (!isvalid_email_redirection($_REQUEST["email"]))
+           $erreur[] = "\"$mailorg@polytechnique.org\" doit renvoyer vers un email existant valide. En particulier, il ne peut pas être renvoyé vers lui-même.";
+       if (!ereg("[0-3][0-9][0-1][0-9][1][9]([0-9]{2})", $_REQUEST["naissance"]))
+           $erreur[] = "La 'Date de naissance' n'est pas correcte. Elle est obligatoire pour continuer mais ne sera jamais visible sur le site par la suite.";
+       
+       if(!empty($erreur)) {
+           new_skinned_page('inscrire.form_data.tpl', AUTH_PUBLIC, true);
+           $page->assign('erreur', $erreur);
+           $page->run();
+       }
+
+       $ins_id=rand_url_id(12);
+       $pass_clair=rand_pass();
+       $password=md5($pass_clair);
+       $date=date("Y-m-j");
+       
+       // on nettoie les appli_type(1|2) si elles ne sont pas affectees
+       if (!isset($_REQUEST["appli_type1"])) $_REQUEST["appli_type1"]=0;
+       if (!isset($_REQUEST["appli_type2"])) $_REQUEST["appli_type2"]=0;
+       if (!isset($loginbis)) $loginbis="";
+       
+       // nouvelle inscription
+       $sql="REPLACE INTO  en_cours
+                      SET  ins_id='$ins_id', password='$password', matricule='$matricule', promo='{$_REQUEST['promo']}',
+                       nom='".addslashes($nom)."', prenom='".addslashes($prenom)."', email='{$_REQUEST['email']}',
+                       naissance='{$_REQUEST['naissance']}', date='$date', nationalite='{$_REQUEST['nationalite']}',
+                       appli_id1='{$_REQUEST['appli_id1']}', appli_type1='{$_REQUEST['appli_type1']}',
+                       appli_id2='{$_REQUEST['appli_id2']}', appli_type2='{$_REQUEST['appli_type2']}',
+                       loginbis='$loginbis', username='$mailorg'";
+       $globals->db->query($sql);
+        
+        $globals->db->query("UPDATE identification SET last_known_email='".$_REQUEST["email"]."' WHERE matricule = " . $matricule);
+        
+        // si on vient de la page maj.php, on met a jour la table envoidirect
+        if(isset($envoidirect))
+            $globals->db->query("UPDATE envoidirect SET date_succes='".date("Y-m-j")."' WHERE uid='".$envoidirect."'");
+
+        require("tpl.mailer.inc.php");
+        $mymail = new TplMailer('inscrire.mail.tpl');
+        $mymail->assign('mailorg',$mailorg);
+        $mymail->assign('pass_clair',$pass_clair);
+        $mymail->assign('baseurl',$baseurl);
+        $mymail->assign('ins_id',$ins_id);
+        
+        $mymail->assign('subj',$mailorg."@polytechnique.org");
+        $mymail->send();
+
+       new_skinned_page('inscrire.preins.tpl', AUTH_PUBLIC, true);
+        $page->assign('mailorg', $mailorg);
+        $page->run();
+    }          
+} else {
+    // $_REQUEST["charte"] n'existe pas, afficher la charte
+    new_skinned_page('inscrire.charte.tpl', AUTH_PUBLIC, true);
+    $page->assign('erreur', $erreur);
+    $page->run();
+}
+?>
index 8cb9af3..cef3e1c 100644 (file)
@@ -9,21 +9,21 @@
  * @see include/form_rech_av.inc.php
  */
 function applis_options($current=0) {
-  global $globals;
-  echo '<option value="-1"></option>';
-  $res=$globals->db->query("select * from applis_def order by text");
-  while ($arr_appli=mysql_fetch_array($res)) { 
-    echo '<option value="'.$arr_appli["id"].'"';
-    if ($arr_appli["id"]==$current) echo " selected";
-    echo '>'.$arr_appli["text"]."</option>\n";
-  }
+    global $globals;
+    echo '<option value="-1"></option>';
+    $res=$globals->db->query("select * from applis_def order by text");
+    while ($arr_appli=mysql_fetch_array($res)) { 
+       echo '<option value="'.$arr_appli["id"].'"';
+       if ($arr_appli["id"]==$current) echo " selected";
+       echo '>'.$arr_appli["text"]."</option>\n";
+    }
 }
 /** pour appeller applis_options depuis smarty
  */
 function _applis_options_smarty($params){
-  if(!isset($params['selected']))
-    $params['selected'] = 0;
-  applis_options($params['selected']);
+    if(!isset($params['selected']))
+       $params['selected'] = 0;
+    applis_options($params['selected']);
 }
 $page->register_function('applis_options','_applis_options_smarty');
 
@@ -31,22 +31,24 @@ $page->register_function('applis_options','_applis_options_smarty');
 /** affiche un Array javascript contenant les types de chaque appli
  */
 function applis_type(){
-  $res=mysql_query("select type from applis_def order by text");
-  if (list($appli_type)=mysql_fetch_row($res))
-    echo "new Array('".str_replace(",","','",$appli_type)."')";
-  while (list($appli_type)=mysql_fetch_row($res))
-    echo ",\nnew Array('".str_replace(",","','",$appli_type)."')";
-  mysql_free_result($res);
+    global $globals;
+    $res=$globals->db->query("select type from applis_def order by text");
+    if (list($appli_type)=mysql_fetch_row($res))
+       echo "new Array('".str_replace(",","','",$appli_type)."')";
+    while (list($appli_type)=mysql_fetch_row($res))
+       echo ",\nnew Array('".str_replace(",","','",$appli_type)."')";
+    mysql_free_result($res);
 }
 $page->register_function('applis_type','applis_type');
 
 /** affiche tous les types possibles d'applis
  */
 function applis_type_all(){
-  $res = mysql_query("show columns from applis_def like 'type'");
-  $arr_appli = mysql_fetch_array($res);
-  echo str_replace(")","",str_replace("set(","",$arr_appli["Type"]));
-  mysql_free_result($res);
+    global $globals;
+    $res = $globals->db->query("show columns from applis_def like 'type'");
+    $arr_appli = mysql_fetch_array($res);
+    echo str_replace(")","",str_replace("set(","",$arr_appli["Type"]));
+    mysql_free_result($res);
 }
 $page->register_function('applis_type_all','applis_type_all');
 
@@ -56,13 +58,13 @@ function applis_fmt($params, &$smarty) {
     extract($params);
     $txt="";
     if (($type!="Ingénieur")&&($type!="Diplôme"))
-        $txt .= $type;
+       $txt .= $type;
     if ($text!="Université") {
-        if ($txt) $txt .= " ";
-        if ($url) 
-            $txt .= "<a target=\"_blank\" href=\"$url\">$text</a>";
-        else 
-            $txt .= $text;
+       if ($txt) $txt .= " ";
+       if ($url) 
+           $txt .= "<a target=\"_blank\" href=\"$url\">$text</a>";
+       else 
+           $txt .= $text;
     }
     return $txt;
 }
index 47c3470..3351e91 100644 (file)
@@ -3,11 +3,11 @@
 ini_set('include_path', '/home/x2000habouzit/dev/diogenes/lib/:'.ini_get('include_path'));
 require("config.xorg.inc.php") ;
 setlocale(LC_TIME, "fr_FR");
-require("xorg.common.inc.php");
+require_once("xorg.common.inc.php");
 
 function _new_page($type, $tpl_name, $tpl_head, $min_auth, $popup=false, $admin=false) {
     global $page;
-    require("xorg.page.inc.php");
+    require_once("xorg.page.inc.php");
     if(!empty($admin)) {
         $page = new XorgAdmin($tpl_name, $type);
     } else switch($min_auth) {
@@ -42,7 +42,7 @@ function new_admin_page($tpl_name, $popup=false, $tpl_head="") {
 function new_admin_table_editor($table,$idfield) {
     global $editor;
     new_admin_page('table-editor.tpl');
-    require('xorg.table-editor.inc.php');
+    require_once('xorg.table-editor.inc.php');
     $editor = new XOrgAdminTableEditor($table,$idfield);
 }
 
diff --git a/include/identification.inc.php b/include/identification.inc.php
new file mode 100644 (file)
index 0000000..6b6180d
--- /dev/null
@@ -0,0 +1,240 @@
+<?php
+
+function sortie_id($err) {
+    global $erreur,$page;
+    $erreur[] = $err;
+    new_skinned_page('inscrire.form_id.tpl', AUTH_PUBLIC, true);
+    $page->assign('erreur', $erreur);
+    $page->run();
+}
+
+if (strlen($_REQUEST["promo"])<4) {
+    sortie_id("La promotion comporte 4 chiffres.");
+}
+
+/* on recupere les donnees  */
+$prenom=trim(strip_request('prenom'));
+$prenom=eregi_replace("[[:space:]]+"," ",$prenom);
+
+$nom=trim(strip_request('nom'));
+$nom=eregi_replace("[[:space:]]+"," ",$nom);
+
+// majuscules pour nom et prenom
+$nom=strtoupper(replace_accent($nom));
+$prenom = make_firstname_case($prenom);
+
+// calcul du login
+$mailorg = make_username($prenom,$nom);
+
+// version uppercase du prenom
+$prenomup=strtoupper(replace_accent($prenom));
+
+// calcul de la plus longue chaine servant à l'identification
+$chaine1=strtok($nom," -'");
+$chaine2=strtok(" -'");
+if ( strlen($chaine2) > strlen($chaine1) ) {
+    $chaine = $chaine2;
+} else {
+    $chaine = $chaine1;
+}
+
+// c'est parti pour l'identification, les champs étant corrects
+if ($_REQUEST["promo"] > 1995)  {
+
+    if (strlen($_REQUEST["matricule"]) != 6) {
+       sortie_id("Le matricule qu'il faut que tu  rentres doit comporter 6 chiffres.");
+    }
+
+    /* transformation du matricule afin de le rendre Y2K compliant (i.e. de la forme PPPP0XXX où PPPP est l'année d'inscription à l'école (i.e. le numéro de promotion sauf pour les étrangers voie 2) et XXX le numéro d'entrée cette année-là */
+
+    $matrcondense = $_REQUEST["matricule"];
+    $rangentree = substr($_REQUEST["matricule"], 3, 3);
+    $anneeimmatric = substr($_REQUEST["matricule"],0,2);
+    if ($anneeimmatric >= 96 && $anneeimmatric <= 99) {
+       // jusqu'à la promo 99 c'est 9?0XXX
+       $matricule = "19" . substr($_REQUEST["matricule"], 0, 3) . $rangentree;
+    }  else  {
+       // depuis les 2000 c'est 10?XXX
+       $matricule = "20" . substr($_REQUEST["matricule"], 1, 2) . "0" . $rangentree;
+    }
+
+    // on vérifie que le matricule n'est pas déjà dans auth_user_md5
+    // sinon le même X pourrait s'inscrire deux fois avec le même matricule
+    // exemple yann.buril et yann.buril-dupont seraient acceptés ! alors que
+    // le matricule est unique
+    $result=$globals->db->query("SELECT user_id FROM auth_user_md5 where matricule=$matricule");
+    if ($myrow = mysql_fetch_array($result))  {
+       $str="Matricule déjà existant. Causes possibles<br />\n"
+           ."- tu t'es trompé de matricule<br />\n"
+           ."- tu t'es déjà inscrit une fois";
+       $matricule = $matrcondense;
+       sortie_id($str);
+    }
+    // promotion jeune
+    $result=$globals->db->query("SELECT nom, prenom FROM identification where matricule='".$matricule."' AND promo='".$_REQUEST["promo"]."' AND deces=0");
+    list($mynom, $myprenom) = mysql_fetch_row($result);
+    $mynomup=strtoupper(replace_accent($mynom));
+    $myprenomup=strtoupper(replace_accent($myprenom));
+    $autorisation = FALSE;
+
+    if (strlen($chaine2)>0)  {        // il existe au moins 2 chaines
+       // on teste l'inclusion des deux chaines
+       if ( strstr($mynomup,$chaine1) && strstr($mynomup,$chaine2) && ($myprenomup == $prenomup )) 
+           $autorisation = TRUE;
+    }  else   {
+       // la chaine2 est vide, on n'utilise que chaine
+       if ( strstr($mynomup,$chaine) && ($myprenomup == $prenomup) )  
+           $autorisation = TRUE;
+    }
+
+    if (!$autorisation) {
+       $str="Echec dans l'identification. Réessaie, il y a une erreur quelque part !";
+       sortie_id($str);
+    }
+
+    // identification > 1990 OK
+
+} else {       // promotion avant 1996 pas de matricule !
+
+    // CODE SPECIAL POUR LES X DES PROMOTIONS AVANT 1996
+    $sql = "SELECT nom,prenom,matricule FROM identification WHERE promo='".$_REQUEST["promo"]."' AND deces=0";
+    $result = $globals->db->query($sql);
+    $autorisation = FALSE;
+
+    if (strlen($chaine2)>0)  {        // il existe au moins 2 chaines
+
+       while (list($mynom,$myprenom,$mymat) = mysql_fetch_array($result))  {
+           // verification de toute la promo !
+           $mynomup=strtoupper(replace_accent($mynom));
+           $myprenomup=strtoupper(replace_accent($myprenom));
+
+           if ( strstr($mynomup,$chaine1) && strstr($mynomup,$chaine2) && ($myprenomup==$prenomup) )  {
+               $autorisation = TRUE;
+               $matricule=$mymat;
+               break;
+           }
+       }
+    } else  {                       // une seule chaine
+
+       while (list($mynom,$myprenom,$mymat) = mysql_fetch_array($result))  {
+           // verification de toute la promo !
+           $mynomup=strtoupper(replace_accent($mynom));
+           $myprenomup=strtoupper(replace_accent($myprenom));
+           if ( strstr($mynomup,$chaine) && ($myprenomup==$prenomup) )  {
+               $autorisation = TRUE;
+               $matricule=$mymat;
+               break;
+           }
+       }
+    }
+    mysql_free_result($result);
+
+    // on vérifie que le matricule n'est pas déjà dans auth_user_md5
+    // sinon le même X pourrait s'inscrire deux fois avec le même matricule
+    // exemple yann.buril et yan.buril seraient acceptés ! alors que le matricule
+    // est unique
+    if (! empty($matricule)) { 
+       $result=$globals->db->query("SELECT * FROM auth_user_md5 where matricule='".$matricule."'");
+       if ($myrow = mysql_fetch_array($result))  {
+           $str="Tu t'es déjà inscrit une fois. "
+               ."Ecris à <a href=\"mailto:support@polytechnique.org\">support@polytechnique.org</a> "
+               ."pour tout problème.";
+           sortie_id($str);
+       }
+    }
+
+    if (!$autorisation)  {
+       $str="Echec dans l'identification. Réessaie, il y a une erreur quelque part !";
+       sortie_id($str);
+    }
+    // identification < 1991 OK
+}
+
+// test si homonyme
+$result=$globals->db->query("SELECT nom, prenom, promo FROM identification WHERE nom = '".addslashes($nom)."' AND prenom = '".addslashes($prenom)."' AND matricule <> '".$matricule."'");
+// (les comparaisons sont indépendantes de la case et des accents en mysql)
+$homonyme = 0;
+if ( mysql_num_rows($result) > 0 ) {
+    // on a un homonyme
+    $homonyme = 1;
+    $loginbis = $mailorg;
+    $mailorg = $mailorg . substr($_REQUEST["promo"],-2);
+    while ( list($mynom,$myprenom,$mypromo) = mysql_fetch_row($result) ) {
+       if (($mypromo % 100) == ($_REQUEST["promo"] % 100)) {
+           sortie_id("Tu as un homonyme dans ta promo, il "
+                   ."faut traiter ce cas manuellement, envoie un mail à "
+                   ."<a href=\"mailto:support@polytechnique.org\">support@polytechnique.org</a>");
+       }
+    }
+    $result=$globals->db->query("SELECT user_id, promo FROM auth_user_md5 where username='$loginbis'");
+    if ( list($uid,$mypromo) = mysql_fetch_row($result) ) {
+       // un homonyme est déjà enregistré, le prévenir
+       // (la promo ne peut pas être pareille, cas déjà testé)
+       mysql_free_result($result);
+       $newlogin = sprintf("%s%02d",$loginbis,$mypromo%100);
+       $sql = "UPDATE auth_user_md5 SET loginbis='$loginbis', username = '$newlogin', alias='$loginbis', date_mise_alias_temp = NOW() WHERE user_id = $uid";
+       $globals->db->query($sql);
+       if ( mysql_affected_rows() == 0 ) {
+           // pb de mise à jour
+           $MESSAGE =
+               "Pb lors de l'execution de \"$sql\" avec le message".mysql_error().", a corriger";
+           mail("support","Pb d'update lors de l'inscription d'un homonyme",$MESSAGE);
+       } else {
+           // mise à jour OK
+           $HEADER =
+               "From: support@polytechnique.org\nCc: support@polytechnique.org";
+           $MESSAGE =
+               "Un homonyme s'est inscrit, nous ne pouvons donc garder  ton  identifiant"
+               ."\n($loginbis) unique, il devient $newlogin ."
+               ."\n\nTu dois dès maintenant l'utiliser pour te connecter sur le site mais"
+               ."\nton adresse de courriel :"
+               ."\n    $loginbis@polytechnique.org"
+               ."\nreste encore valable pour 1 mois, le temps que tu passes sur ta nouvelle"
+               ."\nadresse :"
+               ."\n    $newlogin@polytechnique.org"
+               ."\nqui est déjà utilisable."
+               ."\n\nQuand ton identifiant sera désactivé, l'adresse :"
+               ."\n    $loginbis@polytechnique.org"
+               ."\nrenverra vers un robot qui indique qu'il y a plusieurs personnes portant"
+               ."\nle même nom ; cela évite que l'un des homonymes  reçoive  des  courriels"
+               ."\ndestinés à l'autre."
+               ."\n\nSache que tu peux aussi demander un alias de ton choix qui te donne  une"
+               ."\nautre adresse qui te conviendra peut-être mieux."
+               ."\n\nCordialement"
+               ."\n\n-- \nPolytechnique.org"
+               ."\n\"Le portail des élèves & anciens élèves de l'X\"";
+           mail($loginbis,"Changement de ton login",$MESSAGE,$HEADER);
+       } // END IF if ( mysql_affected_rows() == 0 ) THEN ELSE
+    } // END IF
+} // END IF
+
+// on teste si il n'y a pas d'alias
+if (isset($loginbis))
+    $result=$globals->db->query("SELECT username FROM auth_user_md5 where alias='$loginbis'");
+    else
+    $result=$globals->db->query("SELECT username FROM auth_user_md5 where alias='$mailorg'");
+    while ( list($autre_user) = mysql_fetch_row($result) ) {
+       // mise à jour OK
+       $HEADER="From: support@polytechnique.org\nBcc: support@polytechnique.org";
+       $MESSAGE="Un homonyme s'est inscrit, nous ne pouvons donc garder ton alias "
+           .$loginbis. "\n\n"
+           ."Dès que tu auras pu prévenir tes correspondants fais nous signe, "
+           ."nous supprimerons ton alias.\n\n"
+           ."-- \nPolytechnique.org\n"
+           ."\"Le portail des élèves & anciens élèves de l'X\"";
+       mail($autre_user,"Changement de ton login",$MESSAGE,$HEADER);
+    }
+mysql_free_result($result);
+
+// on vérifie l'adresse n'existe pas déjà dans auth_user_md5 !!
+$result=$globals->db->query("SELECT * FROM auth_user_md5 where username='$mailorg'");
+if ( mysql_num_rows($result) > 0 ) {
+    // le même login existe déjà
+    $str="L'adresse ".$mailorg."@polytechnique.org est déjà prise. "
+       ."Seule une inscription manuelle est possible avec une autre adresse.<br />"
+       ."Envoie un mail &agrave; <a href=\"mailto:support@polytechnique.org\">"
+       ."support@polytechnique.org</a>";
+    sortie_id($str);
+}
+
+?>
index c662071..6428a89 100644 (file)
@@ -36,30 +36,4 @@ function put_in_db($string){
   return trim(addslashes($string));
 }
 
-function select_options($table,$valeur,$champ="text",$pad=false,$where="") {
-  $sql = "SELECT id,$champ FROM $table $where ORDER BY $champ";
-  $result = mysql_query($sql);
-  // on ajoute une entree vide si $pad est vrai
-  if ($pad) 
-    printf("<option value=\"0\" %s></option>\n",($valeur==0?"selected":""));
-  while (list($my_id,$my_text) = mysql_fetch_row($result)) {
-    printf("<option value=\"%s\" %s>%s</option>\n",$my_id,($valeur==$my_id?"selected":""),$my_text);
-  }
-  mysql_free_result($result);
-}
-
-function _select_options_smarty($params){
-  if((!isset($params['table'])) || (!isset($params['valeur'])))
-    return;
-  if(!isset($params['champ']))
-    $params['champ'] = 'text';
-  if(!isset($params['pad']) || !($params['pad']))
-    $pad = false;
-  else
-    $pad = true;
-  if(!isset($params['where']))
-    $params['where'] = '';
-  select_options($params['table'], $params['valeur'], $params['champ'], $pad, $params['where']);
-}
-
 ?>
index 636422c..9d95951 100644 (file)
@@ -5,7 +5,6 @@ require_once('tabs.inc.php');
 require_once('profil.func.inc.php');
 
 $page->register_modifier('print_html','_print_html_modifier');
-$page->register_function('select_db_table','_select_options_smarty');
 $page->register_function('draw_onglets','draw_all_tabs');
 
 
diff --git a/plugins/function.select_db_table.php b/plugins/function.select_db_table.php
new file mode 100644 (file)
index 0000000..c3845f7
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+function select_options($table,$valeur,$champ="text",$pad=false,$where="") {
+    global $globals;
+    $sql = "SELECT id,$champ FROM $table $where ORDER BY $champ";
+    $result = $globals->db->query($sql);
+
+    $sel = ' selected="selected"';
+
+    // on ajoute une entree vide si $pad est vrai
+    $html = "";
+    if ($pad)
+       $html.= '<option value="0"'.($valeur==0?$sel:"")."></option>\n";
+    while (list($my_id,$my_text) = mysql_fetch_row($result)) {
+       $html .= printf("<option value=\"%s\" %s>%s</option>\n",$my_id,($valeur==$my_id?$sel:""),$my_text);
+    }
+    mysql_free_result($result);
+    return $html;
+}
+
+function smarty_function_select_db_table($params, &$smarty) {
+    if(empty($params['table']))
+       return;
+    if(empty($params['champ']))
+       $params['champ'] = 'text';
+    if(empty($params['pad']) || !($params['pad']))
+       $pad = false;
+    else
+       $pad = true;
+    if(empty($params['where']))
+       $params['where'] = '';
+    return select_options($params['table'], $params['valeur'], $params['champ'], $pad, $params['where']);
+}
+
+?>
diff --git a/templates/inscrire.charte.tpl b/templates/inscrire.charte.tpl
new file mode 100644 (file)
index 0000000..c1e2d48
--- /dev/null
@@ -0,0 +1,20 @@
+{* $Id: inscrire.charte.tpl,v 1.1 2004-07-19 08:58:04 x2000habouzit Exp $ *}
+
+<form action="{$smarty.server.REQUEST_URI}" method="post">
+  <div class="rubrique">
+    Conditions générales
+  </div>
+  <p class="normal">
+  L'enregistrement se déroule <strong>en deux étapes</strong>. La pré-inscription te prendra moins
+  de 5 minutes. La seconde étape est une phase de validation où c'est nous qui te
+  recontactons pour te fournir un mot de passe et te demander de le changer.
+  </p>
+  {include file="docs/charte.tpl"}
+  <input type="hidden" value="OUI" name="charte" />
+  <div class="center">
+    <input type="submit" value="J'accepte ces conditions" name="submit" />
+  </div>
+</form>
+
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/inscrire.form_data.tpl b/templates/inscrire.form_data.tpl
new file mode 100644 (file)
index 0000000..54a1e57
--- /dev/null
@@ -0,0 +1,149 @@
+{* $Id: inscrire.form_data.tpl,v 1.1 2004-07-19 08:58:04 x2000habouzit Exp $ *}
+
+{include file="applis.js.tpl"}
+
+<div class="rubrique">
+  Formulaire de pré-inscription
+</div>
+
+{dynamic}
+
+{foreach from=$erreur item=err}
+<p class="erreur">{$err}</p>
+{/foreach}
+
+<form action="{$gotourl|default:$smarty.server.REQUEST_URI}" method="post" name="infos">
+  <input type="hidden" value="OUI" name="charte" />
+  <input type="hidden" value="{$smarty.request.nom}" name="nom" />
+  <input type="hidden" value="{$smarty.request.prenom}" name="prenom" />
+  <input type="hidden" value="{$smarty.request.promo}" name="promo" />
+  <input type="hidden" value="{$smarty.request.matricule}" name="matricule" />
+  {if $homonyme}
+  <p class="normal">
+  Tu as un homonyme dans notre base de données, nous ne pouvons donc pas te donner 
+  l'adresse <strong>{$loginbis}@polytechnique.org</strong>, ton adresse sera 
+  <strong>{$mailorg}@polytechnique.org</strong> et l'adresse précédente sera 
+  redirigée vers un auto-reply indiquant l'existence d'homonymes. Sache que tu peux 
+  demander un alias qui te donne une autre adresse de ton choix.
+  </p>
+  {else}
+  <p class="normal">
+  Ton adresse sera :<br/>
+  <strong>{$mailorg}@polytechnique.org</strong>
+  </p>
+  {/if}
+  
+  <p class="normal">
+  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 <strong>impérativement être correct</strong> pour que nous puissions 
+  te recontacter.
+  </p>
+  <table class="bicol" cellpadding="3" cellspacing="0" summary="Préinscription">
+    <tr>
+      <th colspan="2">
+        Contact et sécurité
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        E-mail<br />
+        <span class="smaller">(Premier forward)</span>
+      </td>
+      <td>
+        <input type="text" size="35" maxlength="50" name="email" value="{$smarty.request.email}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Date de naissance<br />
+        <span class="smaller">(Format JJMMAAAA)</span>
+      </td>
+      <td>
+        <input type="text" size="8" maxlength="8" name="naissance"  value="{$smarty.request.naissance}" />
+        (demandée si perte de mot de passe)
+      </td>
+    </tr>
+    <tr>
+      <th colspan="2">
+        Fiche personnelle
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Identité
+      </td>
+      <td>
+        {$prenom} {$nom}, X{$smarty.request.promo}
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Nom de mariage
+      </td>
+      <td>
+        Si ton nom de mariage est différent de {$nom}, tu pourras le préciser dans
+        ton profil une fois que tu auras confirmé ton inscription.
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Nationalité
+      </td>
+      <td>
+        <select name="nationalite">
+          {select_db_table table="nationalites" valeur=$smarty.request.nationalite}
+        </select>
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Appli graduate
+      </td>
+      <td>
+        <select name="appli_id1" onChange="fillType(this.form.appli_type1, this.selectedIndex-1);">
+          {applis_options selected=$smarty.request.appli_id1}
+        </select>
+        <br />
+        <select name="appli_type1">
+          <option value=""></option>
+        </select>
+        <script type="text/javascript">
+          <!--        
+          fillType(document.infos.appli_type1, document.infos.appli_id1.selectedIndex-1);
+          selectType(document.infos.appli_type1, '{$smarty.request.appli_type1}');
+          //-->       
+        </script>
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Post-graduate
+      </td>
+      <td>
+        <select name="appli_id2" onChange="fillType(this.form.appli_type2, this.selectedIndex-1);">
+          {applis_options selected=$smarty.request.appli_id2}
+        </select>
+        <br />
+        <select name="appli_type2">
+          <option value=""></option>
+        </select>
+        <script type="text/javascript">
+          <!--        
+          fillType(document.infos.appli_type2, document.infos.appli_id2.selectedIndex-1);
+          selectType(document.infos.appli_type2, '{$smarty.request.appli_type2}');
+          //-->       
+        </script>
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2" class="center">
+        <input type="submit" value="Terminer la pré-inscription" name="submit" />
+      </td>
+    </tr>
+  </table>
+</form>
+
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/inscrire.form_id.tpl b/templates/inscrire.form_id.tpl
new file mode 100644 (file)
index 0000000..d4cb58d
--- /dev/null
@@ -0,0 +1,82 @@
+{* $Id: inscrire.form_id.tpl,v 1.1 2004-07-19 08:58:04 x2000habouzit Exp $ *}
+
+{dynamic}
+
+{foreach from=$erreur item=err}
+<p class="erreur">{$err}</p>
+{/foreach}
+
+<form action="{$smarty.server.REQUEST_URI}" method="POST">
+  <div class="rubrique">
+    Identification
+  </div>
+  <input type="hidden" value="OUI" name="charte" />
+  <p class="normal">
+    Renseigne tes nom, prénom et promotion, et si tu es d'une promotion
+    postérieure à la 1996, ton numéro de matricule.
+  </p>
+  <table class="bicol" summary="Identification" cellpadding="3">
+    <tr>
+      <th>
+        Promo &lt; 1996
+      </th>
+      <th>
+        Promo depuis 1996
+      </th>
+    </tr>
+    <tr>
+      <td>
+        Le numéro d'identification n'est pas nécessaire pour 
+        l'inscription pour les promotions jusqu'à 1995 incluse.
+      </td>
+      <td>
+        <span class="bicoltitre">Matricule X : </span>&nbsp;&nbsp;
+        <input type="text" size="6" maxlength="6" name="matricule" value="{$smarty.request.matricule}" />
+        <br />
+        6 chiffres terminant par le numéro d'entrée<br />
+        (ex: 960532 ou 100532)<br />
+        Voir sur le GU ou un bulletin de solde pour trouver cette information<br /><br />
+        Pour les élèves étrangers voie 2, il est du type :<br />
+        Promotion: 1995, Matricule: 960XXX - Promotion: 2001, Matricule 102XXX.
+      </td>
+    </tr>
+    <tr>
+      <th colspan="2">
+        Identification
+      </th>
+    </tr>
+    <tr>
+      <td class="titre"> 
+        Nom<br />
+        <span class="smaller">(Xettes mariées : nom à l'X)</span>
+      </td>
+      <td>
+        <input type="text" size="20" maxlength="30" name="nom" value="{$smarty.request.nom}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Prénom
+      </td>
+      <td>
+        <input type="text" size="15" maxlength="20" name="prenom" value="{$smarty.request.prenom}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Promotion
+      </td>
+      <td>
+        <input type="text" size="4" maxlength="4" name="promo" value="{$smarty.request.promo}" />
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2" class="center">
+        <input type="submit" value="Continuer l'inscription" name="submit" />
+      </td>
+    </tr>
+  </table>
+</form>
+
+{/dynamic}
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/inscrire.preins.tpl b/templates/inscrire.preins.tpl
new file mode 100644 (file)
index 0000000..5eed41b
--- /dev/null
@@ -0,0 +1,28 @@
+{* $Id: inscrire.preins.tpl,v 1.1 2004-07-19 08:58:04 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+  Pré-inscription réussie
+</div>
+
+<p class="normal">
+La pré-inscription que tu viens de soumettre a été enregistrée.
+</p>
+{dynamic}
+<p class="normal">
+Les instructions te permettant notamment d'activer ton e-mail
+<strong>{$mailorg}@polytechnique.org</strong>, ainsi que ton mot de passe pour
+acc&eacute;der au site viennent de t'être envoyés à l'adresse
+<strong>{$smarty.request.email}</strong>.
+</p>
+<p class="normal">
+Tu n'as que quelques jours pour suivre ces instructions après quoi la pré-inscription
+est effacée automatiquement de nos bases et il faut tout recommencer. Si tu as soumis
+plusieurs pré-inscriptions, seul le dernier e-mail reçu est valable, les précédents
+ne servant plus.
+</p>
+<p class="normal">
+Si tu ne reçois rien, vérifie bien l'adresse <strong>{$smarty.request.email}</strong>.
+</p>
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/mails/inscrire.mail.tpl b/templates/mails/inscrire.mail.tpl
new file mode 100644 (file)
index 0000000..fb23269
--- /dev/null
@@ -0,0 +1,27 @@
+{* $Id: inscrire.mail.tpl,v 1.1 2004-07-19 08:58:04 x2000habouzit Exp $ *}
+{config_load file="mails.conf" section="inscrire"}
+{subject text="$subj"}
+{from full=#from#}
+{to addr="$lemail"}
+Bonjour,
+
+Ton inscription sur Polytechnique.org est presque terminée, un clic sur le lien ci-dessous et c'est fini.
+
+Après activation, tes paramètres seront :
+
+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 :
+
+{$baseurl}/step4.php?ref={$ins_id}
+
+Si en cliquant dessus tu n'y arrives pas, copie intégralement l'adresse dans la barre de ton navigateur.
+
+Nous espérons que tu profiteras pleinement des services en ligne de Polytechnique.org : s'ils te convainquent, n'oublie pas d'en parler aux camarades autour de toi !
+
+Bien cordialement,
+Polytechnique.org
+"Le portail des élèves & anciens élèves de l'Ecole polytechnique"
+
+{* vim:set nocindent noautoindent textwidth=0: *}
index e1fcaf7..22073a0 100644 (file)
@@ -1,5 +1,5 @@
-{* $Id: marketing.relance.tpl,v 1.1 2004-07-17 14:16:47 x2000habouzit Exp $ *}
-{config_load file="mails.conf" section="valid_alias"}
+{* $Id: marketing.relance.tpl,v 1.2 2004-07-19 08:58:04 x2000habouzit Exp $ *}
+{config_load file="mails.conf" section="marketing_relance"}
 {subject text="$subj"}
 {from full=#from#}
 {to addr="$lemail"}