XP arrives ...
authorPierre Habouzit (MadCoder <pierre.habouzit@m4x.org>
Sun, 12 Dec 2004 17:00:30 +0000 (17:00 +0000)
committerFlorent Bruneau <florent.bruneau@polytechnique.org>
Thu, 26 Jun 2008 21:26:33 +0000 (23:26 +0200)
 * Refactor code to make use of an XOrgError class.
 * track every place in the code that uses errors and make use of the new policy.

git-archimport-id: opensource@polytechnique.org--2005/platal--mainline--0.9--patch-64

66 files changed:
htdocs/TESTS/__init__.php [new file with mode: 0644]
htdocs/TESTS/index.php [new file with mode: 0644]
htdocs/TESTS/xorg_errors.inc.php [new file with mode: 0644]
htdocs/admin/utilisateurs.php
htdocs/alias.php
htdocs/carnet/mescontacts.php
htdocs/carnet/notifs.php
htdocs/css/default.css
htdocs/css/openweb.css
htdocs/emails/broken.php
htdocs/emails/send.php
htdocs/inscription/step3.php
htdocs/inscription/step4.php
htdocs/listes/admin.php
htdocs/listes/create.php
htdocs/marketing/volontaire.php
htdocs/paiement/index.php
htdocs/profil.php
htdocs/recovery.php
htdocs/tmpPWD.php
htdocs/trombino.php
htdocs/trombipromo.php
htdocs/webredirect.php
include/identification.inc.php
include/profil/verif_general.inc.php
include/profil/verif_mentor.inc.php
include/search.classes.inc.php
include/xorg.hook.inc.php
include/xorg.page.inc.php
include/xorg/errors.inc.php [moved from templates/tmpPWD.failure.tpl with 69% similarity]
include/xorg/session.inc.php
templates/admin/utilisateurs.tpl
templates/alias.tpl
templates/carnet/mescontacts.tpl
templates/carnet/notifs.tpl
templates/emails/broken.tpl
templates/emails/send.tpl
templates/inscription/step1.tpl
templates/inscription/step2.tpl
templates/inscription/step4.tpl
templates/listes/admin.tpl
templates/listes/create.tpl
templates/marketing/volontaire.tpl
templates/paiment/index.tpl
templates/profil/naissance.tpl
templates/recovery.tpl
templates/search.adv.form.tpl
templates/search.adv.links.tpl
templates/search.quick.form.tpl
templates/search.tpl
templates/skin/common.content.tpl [moved from templates/failure.tpl with 88% similarity]
templates/skin/default.tpl
templates/skin/espace.tpl
templates/skin/humlinux.tpl
templates/skin/linux.tpl
templates/skin/liteskin.tpl
templates/skin/nbviolet.tpl
templates/skin/newxorg.tpl
templates/skin/oldtimes.tpl
templates/skin/openweb.tpl
templates/skin/sharky.tpl
templates/skin/spectral.tpl
templates/skin/trapped.tpl
templates/stats/nb_by_promo.tpl
templates/trombipromo.tpl
templates/webredirect.tpl

diff --git a/htdocs/TESTS/__init__.php b/htdocs/TESTS/__init__.php
new file mode 100644 (file)
index 0000000..0672eb0
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+
+ini_set("include_path", "../../:/home/x2000habouzit/simpletest/");
+define('PATH', dirname(__FILE__));
+
+require_once('unit_tester.php');
+require_once('reporter.php');
+
+?>
diff --git a/htdocs/TESTS/index.php b/htdocs/TESTS/index.php
new file mode 100644 (file)
index 0000000..ef6fb19
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+require_once("__init__.php");
+    
+require_once('shell_tester.php');
+require_once('mock_objects.php');
+
+class AllTests extends GroupTest {
+    function AllTests() {
+        $this->GroupTest('All tests');
+        foreach (glob(PATH.'/*_*.php') as $tfile) {
+            $this->addTestFile($tfile);
+        }
+    }
+}
+
+$test = &new AllTests();
+
+if (SimpleReporter::inCli())
+{
+    exit ($test->run(new TextReporter()) ? 0 : 1);
+}
+$test->run(new HtmlReporter());
+
+?>
diff --git a/htdocs/TESTS/xorg_errors.inc.php b/htdocs/TESTS/xorg_errors.inc.php
new file mode 100644 (file)
index 0000000..9309508
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+require_once("__init__.php");
+require_once('include/xorg/errors.inc.php');
+
+class TestOfXOrgErrors extends UnitTestCase {
+    function TestOfXOrgErrors() {
+        $this->UnitTestCase('XOrgErrors Test');
+    }
+
+    function testCreatingXOrgErrors() {
+        $errors = new XOrgErrors();
+        $this->assertIdentical($errors->errs, Array());
+        $this->assertIdentical($errors->failure, false);
+    }
+
+    function testTrigger() {
+        $errors = new XOrgErrors();
+        $errors->trigger("Foo error");
+        $this->assertIdentical($errors->errs, Array("Foo error"));
+        $this->assertIdentical($errors->failure, false);
+    }
+
+    function testFail() {
+        $errors = new XOrgErrors();
+        $errors->fail("Foo error");
+        $this->assertIdentical($errors->errs, Array("Foo error"));
+        $this->assertIdentical($errors->failure, true);
+    }
+}
+
+$test = &new TestOfXOrgErrors();
+$test->run(new HtmlReporter());
+?>
index 67dcc75..16c3244 100644 (file)
@@ -24,6 +24,14 @@ new_admin_page('admin/utilisateurs.tpl');
 require_once("emails.inc.php");
 
 /*
+ * Already in SUID ?
+ */
+
+if (isset($_SESSION['suid'])) {
+    $page->kill("déjà en SUID !!!");
+}
+
+/*
  * LOGS de l'utilisateur
  */
 
@@ -53,8 +61,6 @@ if(isset($_REQUEST['suid_button']) and isset($_REQUEST['login']) and !isset($_SE
  * LE RESTE
  */
 
-$errors = Array();
-
 if (!empty($_REQUEST['login'])) {
     $needle = strtolower($_REQUEST['login']);
 
@@ -70,7 +76,7 @@ if (!empty($_REQUEST['login'])) {
             if (list($redir) = mysql_fetch_row($res)) {
                 list($login) = split('@', $redir);
             } else {
-                $errors[] = "il n'y a pas d'utilisateur avec cet alias melix";
+                $page->trigger("il n'y a pas d'utilisateur avec cet alias melix");
             }
             mysql_free_result($res);
         } else {
@@ -82,9 +88,9 @@ if (!empty($_REQUEST['login'])) {
                 if ($i) {
                     $aliases = Array();
                     while (list($a) = mysql_fetch_row($res)) $aliases[] = $a;
-                    $errors[] = "Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases) ;
+                    $page->trigger("Il y a $i utilisateurs avec cette adresse mail : ".join(', ', $aliases));
                 } else {
-                    $errors[] = "il n'y a pas d'utilisateur avec cette adresse mail";
+                    $page->trigger("il n'y a pas d'utilisateur avec cette adresse mail");
                 }
             } else {
                 list($login) = mysql_fetch_row($res);
@@ -102,7 +108,7 @@ if (!empty($_REQUEST['login'])) {
         if ($tmp = mysql_fetch_assoc($r)) {
             $mr =& $tmp;
         } else {
-            $errors[] = "il n'y a pas d'utilisateur avec ce login (ou alors il a des homonymes)";
+            $page->trigger("il n'y a pas d'utilisateur avec ce login (ou alors il a des homonymes)");
         }
         mysql_free_result($r);
     }
@@ -127,11 +133,11 @@ if(isset($mr)) {
            case "add_fwd":
                $email = $_REQUEST['email'];
                if (!isvalid_email_redirection($email)) {
-                   $errors[] = "invalid email $email";
+                    $page->trigger("invalid email $email");
                    break;
                }
                $redirect->add_email(trim($email));
-               $errors[] = "Ajout de $email effectué";
+                $page->trigger("Ajout de $email effectué");
                break;
 
            case "del_fwd":
@@ -144,7 +150,7 @@ if(isset($mr)) {
                $globals->db->query("DELETE FROM aliases WHERE id='{$_REQUEST['user_id']}' AND alias='$val'
                                                                AND type!='a_vie' AND type!='homonyme'");
                fix_bestalias($_REQUEST['user_id']);
-               $errors[] = $val." a été supprimé";
+                $page->trigger($val." a été supprimé");
                break;
 
            case "add_alias":
@@ -186,7 +192,7 @@ if(isset($mr)) {
                fputs($f,"1");
                fclose($f);
 
-               $errors[] = "updaté correctement.";
+                $page->trigger("updaté correctement.");
                // envoi du mail au webmaster
                require_once("diogenes.hermes.inc.php");
                $mailer = new HermesMailer();
@@ -204,7 +210,7 @@ if(isset($mr)) {
            case "u_kill":
                require_once("user.func.inc.php");
                user_clear_all_subs($_REQUEST['user_id']);
-               $errors[] = "'{$_REQUEST['user_id']}' a été désinscrit !";
+                $page->trigger("'{$_REQUEST['user_id']}' a été désinscrit !");
                require_once("diogenes.hermes.inc.php");
                $mailer = new HermesMailer();
                $mailer->setFrom("webmaster@polytechnique.org");
@@ -247,6 +253,5 @@ if(isset($mr)) {
     $page->assign('emails',$redirect->emails);
 }
 
-$page->assign('errors',$errors);
 $page->run();
 ?>
index 17579cc..3fc21ac 100644 (file)
@@ -41,7 +41,7 @@ if($result = $globals->db->query($sql)) {
 
 //Si l'utilisateur vient de faire une damande
 if (isset($_REQUEST['alias']) and isset($_REQUEST['raison'])) {
-    $alias = $_REQUEST['alias'];
+    $alias  = $_REQUEST['alias'];
     $raison = $_REQUEST['raison'];
 
     $page->assign('r_alias', $alias);
@@ -49,17 +49,17 @@ if (isset($_REQUEST['alias']) and isset($_REQUEST['raison'])) {
 
     //Quelques vérifications sur l'alias (caractères spéciaux)
     if (!preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $alias)) {
-        $page->assign('error', "L'adresse demandée n'est pas valide.
-                                Vérifie qu'elle comporte entre 3 et 20 caractères
-                                et qu'elle ne contient que des lettres non accentuées,
-                                des chiffres ou les caractères - et .");
+        $page->trigger("L'adresse demandée n'est pas valide.
+                        Vérifie qu'elle comporte entre 3 et 20 caractères
+                        et qu'elle ne contient que des lettres non accentuées,
+                        des chiffres ou les caractères - et .");
         $page->run('error');
     } else {
         //vérifier que l'alias n'est pas déja pris
         $result = $globals->db->query("SELECT 1 FROM virtual WHERE alias='$alias@{$globals->mail->alias_dom}'");
         if (mysql_num_rows($result)>0) {
-            $page->assign('error', "L'alias $alias@{$globals->mail->alias_dom} a déja été attribué.
-                                    Tu ne peux donc pas l'obtenir.");
+            $page->trigger("L'alias $alias@{$globals->mail->alias_dom} a déja été attribué.
+                            Tu ne peux donc pas l'obtenir.");
             $page->run('error');
         }
 
@@ -67,8 +67,8 @@ if (isset($_REQUEST['alias']) and isset($_REQUEST['raison'])) {
         $it = new ValidateIterator ();
         while($req = $it->next()) {
             if ($req->type == "alias" and $req->alias == $alias) {
-                $page->assign('error', "L'alias $alias@{$globals->mail->alias_dom} a déja été demandé.
-                                        Tu ne peux donc pas l'obtenir pour l'instant.");
+                $page->trigger("L'alias $alias@{$globals->mail->alias_dom} a déja été demandé.
+                                Tu ne peux donc pas l'obtenir pour l'instant.");
                 $page->run('error');
             }
         }
index 0dd0431..b413ff7 100644 (file)
@@ -28,16 +28,18 @@ if (isset($_REQUEST['action'])) {
     if($_REQUEST['action']=='retirer') {
        $user = $_REQUEST['user'];
        if (preg_match('/^\d+$/', $user)) {
-           if ($globals->db->query("DELETE FROM contacts WHERE uid = '{$_SESSION['uid']}' AND contact='{$user}'"))
-               $page->assign('erreur', "Contact retiré !\n");
+           if ($globals->db->query("DELETE FROM contacts WHERE uid = '{$_SESSION['uid']}' AND contact='{$user}'")) {
+               $page->trigger("Contact retiré !");
+            }
        } else {
            if ($globals->db->query(
                "DELETE FROM  contacts
                       USING  contacts AS c
                   INNER JOIN  aliases  AS a ON (c.contact=a.id and a.type!='homonyme')
                       WHERE  c.uid = '{$_SESSION['uid']}' AND a.alias='$user'"
-                  ))
-               $page->assign('erreur', "Contact retiré !\n");
+                  )) {
+               $page->trigger("Contact retiré !");
+            }
        }
 
         // si l'utilisateur demande l'ajout de qqun à sa liste
@@ -46,11 +48,11 @@ if (isset($_REQUEST['action'])) {
         if (($res = $globals->db->query("SELECT id FROM aliases WHERE alias='{$_REQUEST['user']}' AND type!='homonyme'")) && mysql_num_rows($res)==1) {
             list($cont_user_id) = mysql_fetch_row($res);
             if ($globals->db->query("INSERT INTO contacts set uid = '{$_SESSION['uid']}', contact = '$cont_user_id'")) {
-                $page->assign('erreur', 'Contact ajouté !');
+                $page->trigger('Contact ajouté !');
             } else
-                $page->assign('erreur', 'Contact déjà dans la liste !');
+                $page->trigger('Contact déjà dans la liste !');
         } else {
-            $page->assign('erreur', 'Utilisateur inexistant ou non inscrit !');
+            $page->trigger('Utilisateur inexistant ou non inscrit !');
         }
     }
 }
index 8dfc844..7c33735 100644 (file)
@@ -25,13 +25,11 @@ require_once('notifs.inc.php');
 
 $watch = new Watch($_SESSION['uid']);
 
-$err = Array();
-
 if(isset($_REQUEST['promo'])) {
     if(preg_match('!^ *(\d{4}) *$!', $_REQUEST['promo'], $matches)) {
        $p = intval($matches[1]);
        if($p<1900 || $p>2100) {
-           $err[] = 'la promo entrée est invalide';
+            $page->trigger("la promo entrée est invalide");
        } else {
            if(isset($_REQUEST['add_promo'])) $watch->_promos->add($p);
            if(isset($_REQUEST['del_promo'])) $watch->_promos->del($p);
@@ -40,15 +38,15 @@ if(isset($_REQUEST['promo'])) {
        $p1 = intval($matches[1]);
        $p2 = intval($matches[2]);
        if($p1<1900 || $p1>2100) {
-           $err[] = 'la première promo de la plage entrée est invalide';
+            $page->trigger('la première promo de la plage entrée est invalide');
        } elseif($p2<1900 || $p2>2100) {
-           $err[] = 'la seconde promo de la plage entrée est invalide';
+            $page->trigger('la seconde promo de la plage entrée est invalide');
        } else {
            if(isset($_REQUEST['add_promo'])) $watch->_promos->addRange($p1,$p2);
            if(isset($_REQUEST['del_promo'])) $watch->_promos->delRange($p1,$p2);
        }
     } else {
-       $err[] = "La promo (ou la plage de promo) entrée est dans un format incorrect.";
+        $page->trigger("La promo (ou la plage de promo) entrée est dans un format incorrect.");
     }
 }
 
@@ -62,8 +60,5 @@ if(isset($_REQUEST['flags'])) {
 }
 
 $page->assign_by_ref('watch', $watch);
-$page->assign_by_ref('err', $err);
-
 $page->run();
-
 ?>
index 738eea4..29aa71a 100644 (file)
@@ -73,7 +73,7 @@ p {
     text-align: justify;
 }
 
-p.error, span.error, p.erreur, span.erreur {
+.erreur {
     font-weight: bold;
     color: #ff0000;
     background: inherit;
index e7f6ae6..fe9fbe2 100644 (file)
@@ -78,7 +78,7 @@ p {
     text-align: justify;
 }
 
-p.error, span.error, p.erreur, span.erreur {
+.erreur {
     font-weight: bold;
     color: #ff0000;
     background: inherit;
index 98cf700..b77963d 100644 (file)
@@ -61,7 +61,7 @@ L'
        $mail->setSubject("Une de tes adresse de redirection Polytechnique.org ne marche plus !!");
        $mail->setTxtBody($message);
        $mail->send();
-        $page->assign('erreur', "Mail envoyé ! :o)");
+        $page->trigger("Mail envoyé ! :o)");
     }
 } elseif (array_key_exists('email', $_POST)) {
     $email = valide_email($_POST['email']);
index 9db6665..71801fd 100644 (file)
@@ -41,7 +41,7 @@ if (isset($_REQUEST['submit']) and $_REQUEST['submit'] == 'Envoyer'
     }
     
     if ($_REQUEST['to'] == '' and $_REQUEST['cc'] == '' and $autre_to == '') {
-        $page->assign('error',"Indique au moins un destinataire.");
+        $page->trigger("Indique au moins un destinataire.");
     } else {
         require_once("diogenes.hermes.inc.php");
         //$_REQUEST['contenu'] = chunk_split($_REQUEST['contenu'], 76, "\n"); // pas bon, ne tient pas compte des mots
@@ -54,10 +54,10 @@ if (isset($_REQUEST['submit']) and $_REQUEST['submit'] == 'Envoyer'
        if (!empty($_REQUEST['bcc'])) $mymail->addBcc($_REQUEST['bcc']);
         $mymail->setTxtBody(wordwrap($_REQUEST['contenu'],72,"\n"));
         if ($mymail->send()) {
-            $page->assign('error',"Ton mail a bien été envoyé.");
+            $page->trigger("Ton mail a bien été envoyé.");
             $_REQUEST = array();
         } else {
-            $page->assign('error',"Erreur lors de l'envoi du courriel, réessaye.\n");
+            $page->trigger("Erreur lors de l'envoi du courriel, réessaye.");
         }
     } // ! if ($_REQUEST['to'] == '' and $_REQUEST['cc'] == '')
 }
index f5591de..e19b7ee 100644 (file)
  ***************************************************************************/
 
 require_once("xorg.inc.php");
+new_skinned_page('inscription/step3.tpl', AUTH_PUBLIC);
+require_once("identification.inc.php");
 
-$erreur = Array();
+$page->assign('mailorg', $mailorg);
+$page->assign('forlife', $forlife);
 
-require_once("identification.inc.php");
+if(!isvalid_email($_REQUEST["email"])) {
+    $page->trigger("Le champ 'E-mail' n'est pas valide.");
+}
 
-if(!isvalid_email($_REQUEST["email"]))
-    $erreur[] = "Le champ 'E-mail' n'est pas valide.";
-if (!isvalid_email_redirection($_REQUEST["email"]))
-    $erreur[] = "\"$forlife@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 (!isvalid_email_redirection($_REQUEST["email"])) {
+    $page->trigger("\"$forlife@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"])) {
+    $page->trigger("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('inscription/step2.tpl', AUTH_PUBLIC);
+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);
     
-    $page->assign('erreur', join("\n",$erreur));
     $page->run();
 }
 
@@ -83,8 +89,5 @@ $mymail->assign('ins_id',$ins_id);
 $mymail->assign('subj',$forlife."@polytechnique.org");
 $mymail->send();
 
-new_skinned_page('inscription/step3.tpl', AUTH_PUBLIC);
-$page->assign('mailorg', $mailorg);
-$page->assign('forlife', $forlife);
 $page->run();
 ?>
index 549f173..8f27e9c 100644 (file)
@@ -25,122 +25,130 @@ new_skinned_page('inscription/step4.tpl', AUTH_PUBLIC);
 require_once("user.func.inc.php");
 require_once('xorg.mailer.inc.php');
 
-define("ERROR_REF", 1);
-define("ERROR_ALREADY_SUBSCRIBED", 2);
-define("ERROR_DB", 3);
-
 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 
-    if (!list($forlife, $alias, $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();
-    }
-    $page->assign('forlife',$forlife);
-    
-    // vérifions qu'il n'y a pas déjà une inscription dans le passé
-    // ce qui est courant car les double-clic...
-    $res = $globals->db->query("SELECT alias FROM aliases WHERE alias='$forlife'");
-    if ( mysql_num_rows($res) != 0)  {
-        $page->assign('error',ERROR_ALREADY_SUBSCRIBED);
-        $page->run();
-    }
-    
-    $nom = stripslashes($nom);
-    $prenom = stripslashes($prenom);
-    $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)
-                  SELECT  user_id
-                   FROM  auth_user_md5
-                  WHERE  matricule='$matricule'";
-    $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
-    $resbis=$globals->db->query("SELECT user_id FROM auth_user_md5 WHERE matricule='$matricule'");
-    if ((list($uid) = mysql_fetch_row($resbis)) === false) {
-        $page->assign('error',ERROR_DB);
-        $page->assign('error_db',$globals->db->error());
-        $page->run();
-    }
-
-    $globals->db->query("INSERT INTO aliases (id,alias,type) VALUES ($uid,'$forlife','a_vie')");
-    if($alias) {
-       $p2 = sprintf("%02u",($promo%100));
-       $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'
-    $logger = new DiogenesCoreLogger($uid);
-    $logger->log("inscription",$email);
-
-    /****************** insertion de l'email dans la table emails + bogofilter ***/
-    require_once("emails.inc.php");
-    $redirect = new Redirect($uid);
-    $redirect->add_email($email);
-    fix_bestalias($uid);
-    /****************** 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  DISTINCT a.alias,e.date_envoi
-                                  FROM  envoidirect AS e
-                           INNER JOIN  aliases     AS a ON ( a.id = e.sender AND a.type='a_vie' )
-                                 WHERE  e.matricule = '$matricule'");
-    while (list($sender_usern, $sender_date) = mysql_fetch_row($res)) {
-        $mymail = new XOrgMailer('marketing.thanks.tpl');
-        $mymail->assign('to', $sender_usern);
-        $mymail->assign('prenom', $prenom);
-        $mymail->assign('nom',$nom);
-        $mymail->assign('promo',$promo);
-        $mymail->send();
-    }
-   
-    // effacer la pré-inscription devenue 
-    $globals->db->query("update en_cours set loginbis='INSCRIT' WHERE username='$forlife'");
-
-    // insérer l'inscription dans la table des notifications
-    require_once('notifs.inc.php');
-    register_watch_op($uid,WATCH_INSCR);
-    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)");
-
-    // envoi du mail à l'inscrit
-    $mymail = new XOrgMailer('inscription.reussie.tpl');
-    $mymail->assign('forlife', $forlife);
+}
+
+//vérifions que la référence de l'utilisateur est 
+if (empty($_REQUEST['ref'] ||
+        !list( $forlife, $alias, $matricule, $promo, $password, $nom, $prenom,$nationalite, 
+        $email, $naissance,$date,$appli_id1,$appli_type1,$appli_id2,$appli_type2) = mysql_fetch_row($res))
+{
+        $page->kill("<p>Cette adresse n'existe pas, ou plus, sur le serveur.</p>
+                 <p>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>");
+}
+
+$page->assign('forlife',$forlife);
+
+// vérifions qu'il n'y a pas déjà une inscription dans le passé
+// ce qui est courant car les double-clic...
+$res = $globals->db->query("SELECT alias FROM aliases WHERE alias='$forlife'");
+if (mysql_num_rows($res))  {
+    $page->kill("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.");
+}
+
+$nom = stripslashes($nom);
+$prenom = stripslashes($prenom);
+$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)
+              SELECT  user_id
+                FROM  auth_user_md5
+               WHERE  matricule='$matricule'";
+$globals->db->query($sql);
+
+// on vérifie qu'il n'y a pas eu d'erreur
+if ($globals->db->err()) {
+    $page->kill($globals->db->error() .  '<br />
+            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>');
+}
+// ok, pas d'erreur, on continue
+$resbis=$globals->db->query("SELECT user_id FROM auth_user_md5 WHERE matricule='$matricule'");
+if ((list($uid) = mysql_fetch_row($resbis)) === false) {
+    $page->kill($globals->db->error() .  '<br />
+            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>');
+}
+
+$globals->db->query("INSERT INTO aliases (id,alias,type) VALUES ($uid,'$forlife','a_vie')");
+if($alias) {
+    $p2 = sprintf("%02u",($promo%100));
+    $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'
+$logger = new DiogenesCoreLogger($uid);
+$logger->log("inscription",$email);
+
+/****************** insertion de l'email dans la table emails + bogofilter ***/
+require_once("emails.inc.php");
+$redirect = new Redirect($uid);
+$redirect->add_email($email);
+fix_bestalias($uid);
+/****************** 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  DISTINCT a.alias,e.date_envoi
+                              FROM  envoidirect AS e
+                        INNER JOIN  aliases     AS a ON ( a.id = e.sender AND a.type='a_vie' )
+                             WHERE  e.matricule = '$matricule'");
+while (list($sender_usern, $sender_date) = mysql_fetch_row($res)) {
+    $mymail = new XOrgMailer('marketing.thanks.tpl');
+    $mymail->assign('to', $sender_usern);
     $mymail->assign('prenom', $prenom);
+    $mymail->assign('nom',$nom);
+    $mymail->assign('promo',$promo);
     $mymail->send();
+}
+
+// effacer la pré-inscription devenue 
+$globals->db->query("update en_cours set loginbis='INSCRIT' WHERE username='$forlife'");
+
+// insérer l'inscription dans la table des notifications
+require_once('notifs.inc.php');
+register_watch_op($uid,WATCH_INSCR);
+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)");
+
+// envoi du mail à l'inscrit
+$mymail = new XOrgMailer('inscription.reussie.tpl');
+$mymail->assign('forlife', $forlife);
+$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");
+// s'il est dans la table envoidirect, on le marque comme inscrit
+$globals->db->query("update envoidirect set date_succes=NOW() where matricule = $matricule");
 
-    require_once("xorg.hook.inc.php");
-    $hook = new XOrgHook('core');
-    $hook->subscribe($forlife, $uid, $promo, $password, true);
-    
-    start_connexion($uid,false);
-} else
-    $page->assign('error',ERROR_REF);
+require_once("xorg.hook.inc.php");
+$hook = new XOrgHook('core');
+$hook->subscribe($forlife, $uid, $promo, $password, true);
 
-$page->assign('dev',$globals->debug);
+start_connexion($uid,false);
 $page->run();
 ?>
index f4dd7c3..25b5028 100644 (file)
@@ -26,13 +26,13 @@ require_once("xorg.inc.php");
 new_skinned_page('listes/admin.tpl', AUTH_MDP);
 require_once('lists.inc.php');
 
-$err = Array();
 $client =& lists_xmlrpc($_SESSION['uid'], $_SESSION['password']);
 
 if(isset($_REQUEST['add_member'])) {
     $arr = $client->mass_subscribe($liste, Array($_REQUEST['add_member']));
     if(is_array($arr)) {
-       foreach($arr as $addr) $err[] = "{$addr[0]} inscrit.";
+       foreach($arr as $addr) {
+            $page->trigger("{$addr[0]} inscrit.");
     }
 }
 
@@ -42,8 +42,9 @@ if(isset($_REQUEST['del_member'])) {
 }
 
 if(isset($_REQUEST['add_owner'])) {
-    if($client->add_owner($liste, $_REQUEST['add_owner']))
-       $err = $_REQUEST['add_owner']." ajouté aux modérateurs.";
+    if($client->add_owner($liste, $_REQUEST['add_owner'])) {
+        $page->trigger($_REQUEST['add_owner']." ajouté aux modérateurs.");
+    }
 }
 
 if(isset($_REQUEST['del_owner'])) {
@@ -88,6 +89,5 @@ if(list($det,$mem,$own) = $client->get_members($liste)) {
 } else
     $page->assign('no_list',true);
 
-$page->assign('err', $err);
 $page->run();
 ?>
index b33ca6d..3fc793e 100644 (file)
@@ -55,30 +55,41 @@ ksort($owners);      array_unique($owners);
 ksort($members); array_unique($members);
 
 if(isset($_POST['submit'])) {
-    $err = Array();
 
-    if(empty($_POST['liste'])) $err[] = 'champs «addresse souhaitée» vide';
-    if(!preg_match("/^[a-zA-Z0-9\-]*$/", $_POST['liste']))
-       $err = 'le nom de la liste ne doit contenir que des lettres, chiffres et tirets';
+    if(empty($_POST['liste'])) {
+        $page->trigger('champs «addresse souhaitée» vide');
+    }
+    if(!preg_match("/^[a-zA-Z0-9\-]*$/", $_POST['liste'])) {
+       $page->trigger('le nom de la liste ne doit contenir que des lettres, chiffres et tirets');
+    }
 
     $res = $globals->db->query("SELECT COUNT(*) FROM aliases WHERE alias='{$_POST['liste']}'");
     list($n) = mysql_fetch_row($res);
     mysql_free_result($res);
-    if($n) $err[] = 'cet alias est déjà pris';
 
-    if(empty($_POST['desc'])) $err[] = 'le sujet est vide';
-    if(!count($owners)) $err[] = 'pas de gestionnaire';
-    if(count($members)<4) $err[] = 'pas assez de membres';
+    if($n) {
+        $page->trigger('cet alias est déjà pris');
+    }
+
+    if(empty($_POST['desc'])) {
+        $page->trigger('le sujet est vide');
+    }
+    
+    if(!count($owners)) {
+        $page->trigger('pas de gestionnaire');
+    }
+    
+    if(count($members)<4) {
+        $page->trigger('pas assez de membres');
+    }
 
-    if(!count($err)) {
+    if (!$page->nb_errs()) {
        $page->assign('created', true);
        require_once('validations.inc.php');
        $req = new ListeReq($_SESSION['uid'], $_POST['liste'], $_POST['desc'],
            $_POST['advertise'], $_POST['modlevel'], $_POST['inslevel'],
            $owners, $members);
        $req->submit();
-    } else {
-       $page->assign('err', $err);
     }
 }
 
index 2eb2703..8ac0bc1 100644 (file)
 require_once("xorg.inc.php");
 new_admin_page('marketing/volontaire.tpl');
 
-$errors = Array();
-
 // traitement des paramètres éventuels
 if (!empty($_GET["del"])) {
     $globals->db->query("DELETE FROM marketing WHERE id ='{$_GET['del']}'");
-    $errors[] = "Entrée effacée";
+    $page->trigger("Entrée effacée");
 }
 if (!empty($_GET["done"])) {
     $globals->db->query("UPDATE marketing SET flags = CONCAT(flags,',envoye') WHERE id ='{$_GET['done']}'");
-    $errors[] = "Entrée mise à jour";
+    $page->trigger("Entrée mise à jour");
 }
 
-$page->assign_by_ref('errors', $errors);
-
 $sql = "SELECT  m.id, m.expe, m.dest, m.email, 
                i.promo, i.nom, i.prenom, i.last_known_email, 
                u.promo AS spromo, u.nom AS snom, u.prenom AS sprenom, a.alias AS forlife,
index 39dccad..0d63423 100644 (file)
@@ -26,26 +26,24 @@ require_once('money.inc.php');
 
 // initialisation
 $op = isset($_REQUEST['op']) ? $_REQUEST['op'] : 'select';
-$erreur = Array();
 
 $meth = new PayMethod(isset($_REQUEST['methode']) ? $_REQUEST['methode'] : -1);
 $pay  = new Payment(isset($_REQUEST['ref']) ? $_REQUEST['ref'] : -1);
 
 if($pay->flags->hasflag('old')){
-    $erreur[] = "La transaction selectionnée est périmée.";
+    $page->trigger("La transaction selectionnée est périmée.");
     $pay = new Payment();
 }
 $val  = (($op=="submit") && isset($_REQUEST['montant'])) ? $_REQUEST['montant'] : $pay->montant_def;
 
 if (($e = $pay->check($val)) !== true) {
-    $erreur[] = $e;
+    $page->trigger($e);
 }
 
 if ($op=='submit') {
     $pay->init($val, $meth);
 }
 
-$page->assign('erreur', $erreur);
 $page->assign('montant',$val);
 
 $page->assign('meth', $meth);
index 404d9a9..317cab4 100644 (file)
@@ -49,7 +49,8 @@ if (!$naissance)  {
     if (isset($_REQUEST['birth'])) {
        //en cas d'erreur :
        if (!ereg("[0-3][0-9][0-1][0-9][1][9]([0-9]{2})", $_REQUEST['birth'])) {
-           $page->assign('etat_naissance','erreur');
+            $page->trigger("Date de naissance incorrecte ou incohérente.");
+           $page->assign('etat_naissance','query');
            $page->run();//on reaffiche le formulaire
        }
       
@@ -64,16 +65,13 @@ if (!$naissance)  {
     $page->run();//on affiche le formulaire pour naissance
 }
 
-$errs=Array();
-
 //doit-on faire un update ?
 if (isset($_REQUEST['modifier']) || isset($_REQUEST['suivant'])) {
     require_once("profil/get_{$opened_tab}.inc.php");
     require_once("profil/verif_{$opened_tab}.inc.php");
 
-    if(!empty($errs)) {
+    if($page->nb_errs()) {
        require_once("profil/assign_{$opened_tab}.inc.php");
-       $page->assign("errs", $errs);
        $page->assign('onglet',$opened_tab);
        $page->assign('onglet_last',get_last_tab());
        $page->assign('onglet_tpl',"profil/$opened_tab.tpl");
@@ -115,7 +113,6 @@ require_once("profil/get_{$new_tab}.inc.php");
 require_once("profil/verif_{$new_tab}.inc.php");
 require_once("profil/assign_{$new_tab}.inc.php");
 
-$page->assign("errs", $errs);
 $page->assign('onglet',$new_tab);
 $page->assign('onglet_last',get_last_tab());
 $page->assign('onglet_tpl',"profil/$new_tab.tpl");
index 90d5675..eef8942 100644 (file)
 require_once("xorg.inc.php");
 new_skinned_page('recovery.tpl', AUTH_PUBLIC);
 
-$errors = Array();
-
 if (isset($_REQUEST['login']) and isset($_REQUEST['birth']))  {
     if (!ereg("[0-3][0-9][0-1][0-9][1][9]([0-9]{2})", $_REQUEST['birth'])) {
-        $page->assign('error', "Date de naissance incorrecte ou incohérente");
+        $page->trigger("Date de naissance incorrecte ou incohérente");
         $page->run();
     }
     $birth = sprintf("%s-%s-%s", substr($_REQUEST["birth"],4,4), substr($_REQUEST["birth"],2,2), substr($_REQUEST["birth"],0,2));
@@ -93,7 +91,7 @@ Mail envoy
        $logger = $_SESSION['log'] = (isset($logger) ? $logger : new DiogenesCoreLogger($uid));
        $logger->log("recovery",$emails);
     } else {
-        $page->assign('error', "Pas de résultat correspondant aux champs entrés dans notre base de données.");
+        $page->trigger("Pas de résultat correspondant aux champs entrés dans notre base de données.");
     }
 }
 
index 9345ae3..5e86ae8 100644 (file)
@@ -41,15 +41,13 @@ if ($ligne = mysql_fetch_array($result))  {
         $globals->db->query($sql);
         new_skinned_page('tmpPWD.success.tpl', AUTH_PUBLIC);
         $page->run();
-    }
-    else {
+    } else {
         new_skinned_page('motdepassemd5.tpl', AUTH_PUBLIC, 'motdepassemd5.head.tpl');
         $page->run();
     }
-}
-else {
-    new_skinned_page('tmpPWD.failure.tpl', AUTH_PUBLIC);
-    $page->run();
+} else {
+    new_skinned_page('index.tpl', AUTH_PUBLIC);
+    $page->kill("Cette adresse n'existe pas ou n'existe plus sur le serveur.");
 }
 
 ?>
index 880928b..e67300a 100644 (file)
@@ -25,16 +25,15 @@ new_skinned_page('trombino.tpl', AUTH_MDP);
 require_once("validations.inc.php");
 
 if (isset($_REQUEST["ordi"]) and
-    isset($_FILES["userfile"]) and isset($_FILES["userfile"]["tmp_name"])) {
+        isset($_FILES["userfile"]) and isset($_FILES["userfile"]["tmp_name"])) {
     //Fichier en local
     $myphoto = new PhotoReq($_SESSION['uid'], $_FILES["userfile"]["tmp_name"]);
-    if(!isset($erreur))
-        $myphoto->submit();
+    $myphoto->submit();
 } elseif (isset($_REQUEST["web"]) and isset($_REQUEST["photo"])) {
     // net
     $fp = fopen($_REQUEST["photo"], 'r');
     if (!$fp) {
-        $erreur = "Fichier inexistant";
+        $page->trigger("Fichier inexistant");
     } else {
         $attach = fread($fp, 35000);
         fclose($fp);
@@ -43,8 +42,7 @@ if (isset($_REQUEST["ordi"]) and
         fwrite($fp, $attach);
         fclose($fp);
 
-       $myphoto = new PhotoReq($_SESSION['uid'], $file);
-    if(!isset($erreur))
+        $myphoto = new PhotoReq($_SESSION['uid'], $file);
         $myphoto->submit();
     }
 } elseif (isset($_REQUEST["trombi"])) {
@@ -52,8 +50,8 @@ if (isset($_REQUEST["ordi"]) and
     $file = "/home/web/trombino/photos".$_SESSION["promo"]."/".$_SESSION["forlife"].".jpg";
     $myphoto = new PhotoReq($_SESSION['uid'], $file);
     if($myphoto){// There was no errors, we can go on
-      $myphoto->commit();
-      $myphoto->clean();
+        $myphoto->commit();
+        $myphoto->clean();
     }
 } elseif (isset($_REQUEST["suppr"])) {
     // effacement de la photo
@@ -61,9 +59,6 @@ if (isset($_REQUEST["ordi"]) and
     $globals->db->query("DELETE FROM requests WHERE user_id = ".$_SESSION["uid"]." AND type='photo'");
 }
 
-// Si une requête a été faite et qu'une erreur est signalée, on affiche l'erreur
-if(isset($erreur)) $page->assign('erreur', $erreur);
-
 $sql = $globals->db->query("SELECT * FROM requests WHERE user_id='{$_SESSION['uid']}' AND type='photo'");
 $page->assign('submited', mysql_num_rows($sql) > 0);
 
index 7cb3c5b..454b6b8 100644 (file)
@@ -55,7 +55,8 @@ if(isset($_REQUEST['xpromo'])) {
     $xpromo = intval($_REQUEST['xpromo']);
 
     if ( $xpromo<1900 || $xpromo>date('Y') || ($xpromo == -1 && $_SESSION['perms']!="admin") ) {
-       $page->assign('erreur', "Promotion incorrecte (saisir au format YYYY). Recommence.");
+       $page->trigger("Promotion incorrecte (saisir au format YYYY). Recommence.");
+        $page->assign('error', true);
     } else {
        $trombi = new Trombi('getList');
        $trombi->hidePromo();
index 3b56bf9..6bbb490 100644 (file)
@@ -27,10 +27,9 @@ if (isset($_REQUEST['submit']) and ($_REQUEST['submit'] == "Valider" or $_REQUES
     $globals->db->query("update auth_user_quick set redirecturl = '{$_REQUEST['url']}' where user_id = '{$_SESSION['uid']}'");
     if (mysql_errno() == 0) {
         $_SESSION['log']->log("carva_add","http://".$_REQUEST['url']);
-        $page->assign('message',"<p class='normal'>Redirection activée vers <a href='http://"
-                .$_REQUEST['url']."'>{$_REQUEST['url']}</a></p>\n");
+        $page->trigger("Redirection activée vers <a href='http://{$_REQUEST['url']}'>{$_REQUEST['url']}</a>");
     } else {
-        $page->assign('message',"<p class='erreur'>Erreur de mise à jour</p>\n");
+        $page->trigger('Erreur de mise à jour');
     }
 } elseif (isset($_REQUEST['submit']) and $_REQUEST['submit'] == "Supprimer") {
     // on supprime la redirection
@@ -38,9 +37,9 @@ if (isset($_REQUEST['submit']) and ($_REQUEST['submit'] == "Valider" or $_REQUES
     if (mysql_errno() == 0) {
         $_SESSION['log']->log("carva_del",$_REQUEST['url']);
         $_POST['url'] = '';
-        $page->assign('message',"<p class='normal'>Redirection supprimée</p>");
+        $page->trigger('Redirection supprimée');
     } else {
-        $page->assign('message',"<p class='erreur'>Erreur de suppression</p>\n");
+        $page->trigger('Erreur de suppression');
     }
 }
 
index d3d5f2b..23fe873 100644 (file)
@@ -24,7 +24,7 @@ require_once('xorg.misc.inc.php');
 function sortie_id($err) {
     global $page;
     new_skinned_page('inscription/step1.tpl', AUTH_PUBLIC);
-    $page->assign('erreur', $err);
+    $page->trigger($err);
     $page->run();
 }
 
index 0d982d4..9e26d5e 100644 (file)
@@ -22,7 +22,7 @@
 
 // validité du mobile
 if (strlen(strtok($mobile,"<>{}@&#~\/:;?,!§*_`[]|%$^=")) < strlen($mobile)) {
-    $errs[] = "Le champ 'Téléphone mobile' contient un caractère interdit."; 
+    $page->trigger("Le champ 'Téléphone mobile' contient un caractère interdit.");
 }
 
 // correction du champ web si vide
@@ -30,7 +30,8 @@ if ($web=="http://" or $web == '') {
     $web='';
 } elseif (!preg_match("{^(https?|ftp)://[a-zA-Z0-9._%#+/?=&~-]+$}i", $web)) {
     // validité de l'url donnée dans web
-    $errs[] = "URL incorrecte dans le champ 'Page web perso', une url doit commencer par http:// ou https:// ou ftp:// et ne pas contenir de caractères interdits";
+    $page->trigger("URL incorrecte dans le champ 'Page web perso', une url doit commencer par
+                    http:// ou https:// ou ftp:// et ne pas contenir de caractères interdits");
 } else {
     $web = str_replace('&', '&amp;', $web);
 }
@@ -38,7 +39,7 @@ if ($web=="http://" or $web == '') {
 //validité du champ libre
 if (strlen(strtok($libre,"<>")) < strlen($libre))
 {
-    $errs[] = "Le champ 'Complément libre' contient un caractère interdit.";
+    $page->trigger("Le champ 'Complément libre' contient un caractère interdit.");
 }
 
 ?>
index 5df8e67..8a60bd1 100644 (file)
@@ -25,7 +25,7 @@ if(isset($_POST['mentor_expertise'])){
   $mentor_expertise = stripslashes($_POST['mentor_expertise']);
   if(!empty($mentor_expertise)){
       if (strlen(strtok($mentor_expertise,"<>{}~§`|%$^")) < strlen($mentor_expertise)){//TODO: affiner la liste
-           $errs[] = "L'expertise contient un caractère interdit.";
+           $page->trigger("L'expertise contient un caractère interdit.");
        }
   }
 }
index d996d27..7b84062 100644 (file)
@@ -84,7 +84,7 @@ class ThrowError
     function ThrowError($explain)
     {
         global $page;
-        $page->assign('error','Erreur : '.$explain);
+        $page->trigger('Erreur : '.$explain);
         $page->run();
     }
 }
index 3ac73e1..e3a2243 100644 (file)
@@ -106,7 +106,6 @@ class XOrgHook extends PEAR
             $this->raiseError("In the Hook « {$this->_name} » the function « $function » expects at least 1 argument");
         }
         foreach ($this->_mods as $mod) {
-            echo $mod.'_'.$function;
             if (!function_exists($mod.'_'.$function)) continue;
             $arguments[$i] =& call_user_func_array($mod.'_'.$function,$arguments);
         }
index 0b185cd..8f380fb 100644 (file)
@@ -38,6 +38,7 @@ class XorgPage extends DiogenesCorePage
     
     var $_page_type;
     var $_tpl;
+    var $_errors;
 
     // }}}
     // {{{ function XorgPage()
@@ -65,7 +66,9 @@ class XorgPage extends DiogenesCorePage
        }
 
         $this->_page_type = $type;
-        $this->_tpl = $tpl;
+        $this->_tpl       = $tpl;
+       require_once('xorg/errors.inc.php');
+        $this->_errors    = new XOrgErrors;
 
         $this->DiogenesCorePage();
        require_once('xorg/smarty.plugins.inc.php');
@@ -120,6 +123,8 @@ class XorgPage extends DiogenesCorePage
     function run($append_to_id="")
     {
         global $globals, $TIME_BEGIN;
+        $this->assign_by_ref("xorg_error", $this->_errors);
+        
         if ($this->_page_type == NO_SKIN) {
             $this->display($this->_tpl);
         } else {
@@ -160,14 +165,36 @@ class XorgPage extends DiogenesCorePage
     }
 
     // }}}
-    // {{{ function failure()
+    // {{{ function trigger()
+
+    function trigger($msg)
+    {
+        $this->_errors->trigger($msg);
+    }
+
+    // }}}
+    // {{{ function nb_errs()
+
+    function nb_errs()
+    {
+        return count($this->_errors->errs);
+    }
+
+    // }}}
+    // {{{ function fail()
+
+    function fail($msg)
+    {
+        $this->caching = false;
+        $this->_errors->fail($msg);
+    }
+
+    // }}}
+    // {{{ function kill()
 
-    function failure()
+    function kill($msg)
     {
-        $this->_page_type = SKINNED;
-        $this->_tpl = 'failure.tpl';
-        $this->assign('xorg_tpl', 'failure.tpl');
-        $this->caching=0;
+        $this->fail($msg);
         $this->run();
     }
 
similarity index 69%
rename from templates/tmpPWD.failure.tpl
rename to include/xorg/errors.inc.php
index 78fed07..c4e4f3f 100644 (file)
@@ -1,4 +1,5 @@
-{***************************************************************************
+<?php
+/***************************************************************************
  *  Copyright (C) 2003-2004 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  along with this program; if not, write to the Free Software            *
  *  Foundation, Inc.,                                                      *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
- ***************************************************************************}
+ ***************************************************************************/
 
-<h1>OOOooups !</h1>
-<p>
-  Cette adresse n'existe pas ou n'existe plus sur le serveur.
-</p>
-{* vim:set et sw=2 sts=2 sws=2: *}
+// {{{ class XOrgErrors
+
+class XOrgErrors
+{
+    // {{{ properties
+    
+    var $errs    = Array();
+    var $failure = false;
+    
+    // }}}
+    // {{{ constructor
+    
+    function XOrgErrors()
+    { }
+
+    // }}}
+    // {{{ function trigger
+        
+    function trigger($text) {
+        $this->errs[] = $text;
+    }
+
+    // }}}
+    // {{{
+    
+    function fail($text) {
+        $this->trigger($text);
+        $this->failure = true;
+    }
+
+    // }}}
+}
+
+// }}}
+
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker:
+?>
index 4dfa199..0b2d797 100644 (file)
@@ -186,7 +186,7 @@ function check_perms()
     if (!has_perms()) {
        require_once("diogenes.core.logger.inc.php");
        $_SESSION['log']->log("noperms",$_SERVER['PHP_SELF']);
-       $page->failure();
+       $page->die("Tu n'as pas les permissions nécessaires pour accéder à cette page.");
     }
 }
 
index 6927850..0e1e716 100644 (file)
@@ -31,10 +31,6 @@ Attention, d
 
 {dynamic}
 
-{foreach from=$errors item=e}
-<p class="erreur">{$e}</p>
-{/foreach}
-
 {if $smarty.post.u_kill_conf}
 <form method="post" action="{$smarty.server.PHP_SELF}">
   <div class="center">
index 7a04952..48b3715 100644 (file)
     Encore merci de nous faire confiance pour tes e-mails !
   </p>
 {else}
-  {if $error}
-  <p class="erreur">{dyn s=$error}</p>
-  {/if}
-
   <h1>
     Adresses e-mail personnalisées
   </h1>
index 256d563..a605570 100644 (file)
@@ -20,7 +20,6 @@
 
 
 {dynamic}
-<p class="erreur">{$erreur}</p>
 
 <h1>
   Ma liste personnelle de contacts
index bb522b1..a601cc3 100644 (file)
 
 {dynamic}
 
-{foreach from=$err item=e}
-<p class='erreur'>{$e}</p>
-{/foreach}
-
 <h1>Notifications automatiques</h1>
 
 <p>Les mails sont hebdomadaires (pour éviter une trop grosse charge du serveur de mails et de ta boite mail).
index 0b55606..36c6c9b 100644 (file)
 
 {dynamic}
 
-{if $erreur}
-<p class="erreur">{$erreur}</p>
-{/if}
-
 <h1>Vérifier une patte cassée</h1>
 
 {if $x && $x.nb_mails}
index e231943..9efb87d 100644 (file)
@@ -21,8 +21,6 @@
 
 {dynamic}
 
-<p class="erreur">{$error}</p>
-
 <h1>
   Envoyer un mail
 </h1>
index bfd0997..00b5d0b 100644 (file)
@@ -19,8 +19,7 @@
  ***************************************************************************}
 
 {dynamic}
-<p class='erreur'>{$erreur|smarty:nodefaults|nl2br}</p>
+
 <form action="{"inscription/step2.php"|url}" method="post" id='idf'>
   <h1>
     Identification
index a74cc61..4c64b2a 100644 (file)
@@ -27,8 +27,6 @@
 
 {dynamic}
 
-<p class="erreur">{$erreur|smarty:nodefaults|nl2br}</p>
-
 <form action="{"inscription/step3.php"|url}" method="post">
   {if $homonyme}
   <p>
index 17b77e7..85d8354 100644 (file)
  ***************************************************************************}
 
 {dynamic}
-{if !$error}
-  <h1>
-    Dernière étape
-  </h1>
-  <p>
-    Tu as maintenant accès au site en utilisant les paramètres reçus par mail.
-    Ton adresse électronique à vie <strong>{$forlife}@polytechnique.org</strong>
-    est déjà ouverte, essaie-la !
-  </p>
-  <p>
-    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>
-  <strong><a href="{if $dev eq 0}https://www.polytechnique.org/motdepassemd5.php{else}{"motdepassemd5.php"|url}{/if}">Clique ici pour changer ton mot de passe.</a></strong>
-  </p>
-  <p>
-    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>
-    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>
-    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}
-  <h1>
-    OOOooups !
-  </h1>
-  <p>
-    Cette adresse n'existe pas, ou plus, sur le serveur.
-  </p>
-  <p>
-    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}
+<h1>Dernière étape</h1>
+<p>
+  Tu as maintenant accès au site en utilisant les paramètres reçus par mail.
+  Ton adresse électronique à vie <strong>{$forlife}@polytechnique.org</strong>
+  est déjà ouverte, essaie-la !
+</p>
+<p>
+  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>
+<strong><a href="{#globals.baseurl#}/motdepassemd5.php">Clique ici pour changer ton mot de passe.</a></strong>
+</p>
+<p>
+  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>
 {/dynamic}
+
 {* vim:set et sw=2 sts=2 sws=2: *}
index ebdefc0..bcf9d31 100644 (file)
@@ -41,10 +41,6 @@ L'ic
 qui y était abonné.
 </p>
 
-{foreach from=$err item=e}
-<p class='error'>{$e}</p>
-{/foreach}
-
 <h1>
   modérateurs de la liste
 </h1>
index 1467af0..32826e0 100644 (file)
 
 {dynamic}
 
-{foreach from=$err item=e}
-<p class='erreur'>{$e}</p>
-{/foreach}
 <h1>
   Création d'une liste de diffusion
 </h1>
 
 {if $created}
+
 <p class='erreur'>Demande de création envoyée !</p>
 
 {else}
index 81bb6c6..4e36287 100644 (file)
 
 {dynamic}
 
-{foreach from=$errros item=err}
-<p class="erreur">{$err}</p>
-{/foreach}
-
 <h1>
   Marketing volontaire
 </h1>
index 3f95cb2..b4e5975 100644 (file)
 <h1>Micropaiments</h1>
 
 {dynamic}
-{if $smarty.request.op eq "submit" and !$erreur|count}
+{if $smarty.request.op eq "submit" and !$xorg_error->errs|count}
 
 {$pay->form($montant)|smarty:nodefaults}
 
 {else}
 
-{foreach from=$erreur item=e}
-<p class="erreur">{$e}</p>
-{/foreach}
-
 <form method="post" action="{$smarty.server.PHP_SELF}">
   <p> Si tu ne souhaites pas utiliser notre interface de
   télépaiement, tu peux virer directement la somme de ton choix sur notre compte
index 9fb39bc..9d2cee1 100644 (file)
 </script>
 {else}
 
-{if $etat_naissance == 'erreur'}
-<p class="erreur">
-Date de naissance incorrecte ou incohérente.
-Exemple: 1er février 1990 se rentre 01021990.
-</p>
-{/if}
-
 <h1>Date de naissance</h1>
 
 <form action="profil.php" method="post">
index a8da168..7baffbd 100644 (file)
  ***************************************************************************}
 
 
-<h1>
-  Perte du mot de passe
-</h1>
+<h1>Perte du mot de passe</h1>
 
 {dynamic}
 
-<div class="erreur">{$error}</div>
-
 {if $ok}
 
 <p>
index a246935..e0da094 100644 (file)
 
 <h1>Recherche avancée</h1>
 
-{if $error}
-<p class="error">{$error}</p>
-{/if}
-
 <p>[<a href="search.php">Recherche simple</a>]</p>
 
 <form id="recherche" action="{$smarty.server.PHP_SELF}" method="get">
index de92a70..978c7a4 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************}
 
- {if $do_title}<h1>Recherche avancée</h1>{/if}
-
-{if $error}
-<p class="error">{$error}</p>
-{/if}
+{if $do_title}<h1>Recherche avancée</h1>{/if}
 
 <ul>
   {if !$with_soundex && ($smarty.request.firstname || $smarty.request.name)}
index 3634824..6619767 100644 (file)
@@ -20,8 +20,6 @@
 
 <h1>Recherche simple dans l'annuaire</h1>
 
-{if $error}<p class="error">{$error}</p>{/if}
-
 <form action="{"search.php"|url}" method="get">
   <table class="bicol" cellspacing="0" cellpadding="4">
     <tr>
index b206429..c914764 100644 (file)
@@ -20,7 +20,7 @@
 
 {dynamic}
 
-{if $formulaire==0 and !$error}
+{if $formulaire==0 and !$xorg_error->errs|count}
   {if !$advanced}
   {include file='search.quick.form.tpl'}
   {else}
@@ -55,7 +55,7 @@
       {if $offset!=$smarty.section.offset.index*$perpage}
       <a href="{$smarty.server.PHP_SELF}?{$url_args}&amp;offset={$smarty.section.offset.index*$perpage}">{$smarty.section.offset.index+1}</a>
       {else}
-      <span class="error">{$smarty.section.offset.index+1}</span>
+      <span class="erreur">{$smarty.section.offset.index+1}</span>
       {/if}
       &nbsp;
     {/section}
similarity index 88%
rename from templates/failure.tpl
rename to templates/skin/common.content.tpl
index 07627fd..be33031 100644 (file)
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************}
 
+{dynamic}
+{foreach from=$xorg_error->errs|smarty:nodefaults item=err}
+<div class="erreur">{$err|smarty:nodefaults}</div>
+{/foreach}
+{/dynamic}
 
-<div class=\"erreur\">
-Tu n'as pas les permissions n&eacute;cessaires pour acc&eacute;der &agrave; cette page.
-</div>
+{if !$xorg_error->failure}{include file=$xorg_tpl}{/if}
 
 {* vim:set et sw=2 sts=2 sws=2: *}
index ffc1e09..8d1a4a1 100644 (file)
@@ -48,7 +48,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index a2044aa..d89b2cd 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index ab87600..cdabf71 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index 4f6e6c5..8be92a0 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index 82f2478..e9bac6a 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index 7542664..872ac5c 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index ec52e35..8020e83 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index d5027d0..a98f1b0 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index fd1ad3e..814f747 100644 (file)
@@ -47,9 +47,9 @@
 
   {if $simple}
 
-    <div id="body">
-      {include file=$xorg_tpl}
-    </div>
+  <div id="body">
+    {include file="skin/common.content.tpl"}
+  </div>
 
   {else}
 
         </td>
         <td>
           <div id="content">
-            {include file=$xorg_tpl}
+            {include file="skin/common.content.tpl"}
           </div>
         </td>
       </tr>
index 66a4156..64bd503 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index 599c771..8197a65 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index d7b5502..5653291 100644 (file)
@@ -49,7 +49,7 @@
   {if $simple}
 
     <div id="content">
-      {include file=$xorg_tpl}
+      {include file="skin/common.content.tpl"}
     </div>
 
   {else}
           {/perms}
         </td>
         <td id="content">
-          {include file=$xorg_tpl}
+          {include file="skin/common.content.tpl"}
         </td>
       </tr>
       <tr>
index 7638b6b..1569d92 100644 (file)
@@ -40,7 +40,7 @@ Voici le nombre d'inscrits par promo :
     {foreach item=nb from=$nb10}
     <td class="center">
       {if $nb && $nb.promo eq $smarty.request.promo}
-      <span class='error'>{$nb.nb}</span>
+      <span class='erreur'>{$nb.nb}</span>
       {elseif $nb}
       <a href="?promo={$nb.promo}">{$nb.nb}</a>
       {else}
index d5de840..9ac9019 100644 (file)
@@ -21,7 +21,7 @@
 
 {dynamic}
 
-{if !$smarty.request.xpromo || $erreur}
+{if !$smarty.request.xpromo || $error}
 <h1>
   Trombinoscope promo
 </h1>
@@ -36,7 +36,6 @@ en validant peut 
 idée de la taille, chaque photo est limitée à 30 ko, et
 chaque page affiche au plus {$limit} photos.
 </p>
-{if $erreur}<p>{$erreur}</p>{/if}
 
 <form action="{$smarty.server.PHP_SELF}" method="get">
   <table class="tinybicol" cellpadding="3" summary="Saisie promo" style="width: 30%; margin-left:35%">
index 3dee9cf..3bdb4d4 100644 (file)
  ***************************************************************************}
 
 
-{dynamic on="0$message"}
-<h1>Mise à jour de la redirection</h1>
-{$message|smarty:nodefaults}
-{/dynamic}
-
 <h1>Redirection de page WEB</h1>
 
 <h2>Pourquoi une redirection de page WEB ?</h2>