BIG commit.
authorx2000habouzit <x2000habouzit>
Wed, 4 Feb 2004 19:47:45 +0000 (19:47 +0000)
committerx2000habouzit <x2000habouzit>
Wed, 4 Feb 2004 19:47:45 +0000 (19:47 +0000)
c'est le travail de 4 jours sans le net ://///

ATTENTION, je n'ai pas pu tester le code, les pages sont donc marquées en 'x' dans la liste des pages basculées, je vais tenter de déboguer ca (c même pas sur que ca compile ...) mais rien ne vous interdit d'y jeter un oueil.

désolé pour le log pourri, mais bon, 50 logs à se taper c chiant ....

59 files changed:
etat_migration
guide-todo [new file with mode: 0644]
htdocs/acces_wap.php [new file with mode: 0644]
htdocs/admin/ax-xorg.php [new file with mode: 0644]
htdocs/admin/deces_promo.php [new file with mode: 0644]
htdocs/admin/index.php [new file with mode: 0644]
htdocs/admin/postfix_blacklist.php [new file with mode: 0644]
htdocs/admin/postfix_perm.php [new file with mode: 0644]
htdocs/admin/postfix_retardes.php [new file with mode: 0644]
htdocs/domaineperso.php [new file with mode: 0644]
htdocs/dons.php [new file with mode: 0644]
htdocs/epouse.php [new file with mode: 0644]
htdocs/groupex/donne-chall.php [new file with mode: 0644]
htdocs/groupex/export-econfiance.php [new file with mode: 0644]
htdocs/groupex/index.php [new file with mode: 0644]
htdocs/login.php
htdocs/pattecassee.php [new file with mode: 0644]
htdocs/rss.php [new file with mode: 0644]
htdocs/sendmail.php [new file with mode: 0644]
htdocs/skins.php
htdocs/stats/coupure.php [new file with mode: 0644]
htdocs/stats/graph_promo.php [new file with mode: 0644]
htdocs/stats/nb_by_promo.php
htdocs/stats/parselog.php [new file with mode: 0644]
htdocs/stats/stats_promo.php [new file with mode: 0644]
htdocs/vcard.php
include/domaine.inc.php [new file with mode: 0644]
include/insert.pattecassee.inc.php [new file with mode: 0644]
include/nonhtml.inc.php [new file with mode: 0644]
include/valid_emploi.inc.php
include/valid_evts.inc.php
include/valid_ml.inc.php
include/valid_photos.inc.php
include/xorg.page.inc.php
scripts/xhtml/get_classes.pl
templates/acces_smtp.tpl
templates/acces_wap.tpl [new file with mode: 0644]
templates/admin/ax-xorg.tpl [new file with mode: 0644]
templates/admin/deces_promo.tpl [new file with mode: 0644]
templates/admin/index.tpl [new file with mode: 0644]
templates/admin/postfix.common.tpl [new file with mode: 0644]
templates/antispam.tpl
templates/domaineperso.tpl [new file with mode: 0644]
templates/dons.tpl [new file with mode: 0644]
templates/epouse.tpl [new file with mode: 0644]
templates/form_naissance.tpl
templates/groupex/index.tpl [new file with mode: 0644]
templates/include/liste_domaines.tpl [new file with mode: 0644]
templates/password_prompt.tpl
templates/password_prompt_logged.tpl
templates/pattecassee.tpl [new file with mode: 0644]
templates/preferences.tpl
templates/rss.tpl [new file with mode: 0644]
templates/sendmail.tpl [new file with mode: 0644]
templates/skins.tpl
templates/stats/coupure.tpl [new file with mode: 0644]
templates/stats/nb_by_promo.tpl
templates/stats/parselog.tpl [new file with mode: 0644]
templates/stats/stats_promo.tpl [new file with mode: 0644]

index 03c2aa3..79c478a 100644 (file)
@@ -3,45 +3,29 @@
 ,---------------------.
 | NB Etats :          |
 |     -> rien de fait |
-| x   -> en cours     |
+| x   -> à tester     |
 | xx  -> en templates |
 | xxx -> anonyme      |
+| !!! -> postponned   |
 | --- -> supprimée    |
+| @@@ -> non modifiée |
 `---------------------'
 
 # PS pour trier : V<down><down>...<down>:!sort<enter>
 
 ------+-------------------------------------------+----------------
 Etat  | Ancien nom                                                               | Nouveau nom
-------+-------------------------------------------+----------------
-         | acces_wap.php                                                         | 
+------+-[ admin ]---------------------------------+----------------
+         | admin/FormatePrenomNOM.php                            | 
+         | admin/FormatePrenomNOM2.php                           | 
          | admin/admin_faqs.php                                          | 
          | admin/admin_trombino.php                              | 
-         | admin/ax-xorg.php                                             | 
          | admin/comptesPOP.php                                          | 
          | admin/correction_adr.php                              | 
-         | admin/deces_promo.php                                         | 
          | admin/envoidirect.php                                         | 
          | admin/evenements.php                                          | 
-         | admin/FormatePrenomNOM2.php                           | 
-         | admin/FormatePrenomNOM.php                            | 
-         | admin/gerer_applis.php                                        | 
-         | admin/gerer_auth-groupex.php                          | 
-         | admin/gerer_binets.php                                        | 
-         | admin/gerer_coupure.php                                       | 
-         | admin/gerer_groupesx.php                              | 
-         | admin/gerer_listes.php                                        | 
-         | admin/gerer_paiement.php                              | 
-         | admin/gerer_skins.php                                         | 
-         | admin/gerer_sondages.php                              | 
-         | admin/graph_promo.php                                         | 
          | admin/homonymes.php                                           | 
-         | admin/index.php                                                       | 
          | admin/ins_confirmees.php                              | 
-         | admin/logger_actions.php                              | 
-         | admin/logger_events.php                                       | 
-         | admin/logger.php                                              | 
-         | admin/logger_user.php                                         | 
          | admin/marketing.php                                           | 
          | admin/marketing_promo.php                             | 
          | admin/marketing_volontaire.php                        | 
@@ -50,33 +34,22 @@ Etat  | Ancien nom                                                            | Nouveau nom
          | admin/newsletter_pattecassee.php              | 
          | admin/newsletter_prep.php                             | 
          | admin/pg.php                                                          | 
-         | admin/postfix_blacklist.php                           | 
-         | admin/postfix_perm.php                                        | 
-         | admin/postfix_retardes.php                            | 
          | admin/relance.php                                             | 
-         | admin/stats_promo.php                                         | 
-         | admin/statut_antispam.php                             | 
+         | admin/utilisateurs.php                                        | 
          | admin/utilisateurs_identification.php         | 
          | admin/utilisateurs_marketing.php              | 
-         | admin/utilisateurs.php                                        | 
-         | confbanana.php                                                        | 
-         | coupure.php                                                           | stats/coupure.php
+------+-[ docs ]----------------------------------+----------------
          | docs/FROM.php                                                         | docs/from.php
-         | domaineperso.php                                              | 
-         | domaine.php                                                           | 
-         | dons.php                                                              | 
-         | emails.php                                                            | 
-         | emploi.php                                                            | 
-         | emploi_public.php                                             | 
          | en-cours.php                                                          | docs/en-cours.php
-         | epouse.php                                                            | 
-         | evenements.php                                                        | 
-         | groupex/donne-chall.php                                       | 
-         | groupex/export-econfiance.php                         | 
-         | groupex.php                                                           | 
-         | index.coupure.php                                             | 
-         | info-groupesx.php                                             | 
-         | inscrire.php                                                          | 
+         | info-groupesx.php                                             | docs/info-groupesx.php
+         | plan.php                                                              | ? docs/plan.php
+         | services.php                                                          | docs/services.php
+------+-[ stats ]---------------------------------+----------------
+         | parselogD.php                                                         | stats/...
+         | parselogN.php                                                         | stats/...
+         | parselogR.php                                                         | stats/...
+         | stats.php                                                             | stats/index.php
+------+-[ listes ]--------------------------------+----------------
          | listes/creation.php                                           | 
          | listes/gere_listes.php                                        | 
          | listes/gere_msg.php                                           | 
@@ -84,69 +57,109 @@ Etat  | Ancien nom                                                           | Nouveau nom
          | listes/liste.php                                              | 
          | listes/mailtoins.inc.php                              | 
          | listes/trombiliste.php                                        | 
-         | maj.php                                                                       | 
-         | marketing.php                                                         | 
-         | mescontacts_pdf.php                                           | 
-         | mescontacts.php                                                       | 
-         | news/abonnements.php                                          | 
-         | news/article.php                                              | 
-         | news/attachment.php                                           | 
-         | news/config.news.inc.php                              | 
-         | news/faq_admin.php                                            | 
-         | news/index.php                                                        | 
-         | newsletter.php                                                        | 
-         | newsletter_req.php                                            | 
-         | news/newsportal.php                                           | 
-         | news/offreemploi.php                                          | 
-         | news/post.php                                                         | 
-         | news/thread.php                                                       | 
+------+-[ paiement ]------------------------------+----------------
          | paiement/cyberpaiement.inc.php                        | 
          | paiement/cyberpaiement_retour.php             | 
          | paiement/index.php                                            | 
-         | parselogD.php                                                         | stats/...
-         | parselogN.php                                                         | stats/...
-         | parselog.php                                                          | stats/...
-         | parselogR.php                                                         | stats/...
-         | pattecassee.php                                                       | 
-         | pg.confirm.php                                                        | 
-         | pg.php                                                                        | 
-         | plan.php                                                              | ? docs/plan.php
-         | profil2.php                                                           | 
-         | profil.php                                                            | 
-         | recherche.php                                                         | 
-         | recovery.php                                                          | 
-         | redirect/error.php                                            | 
-         | redirect/redirect.php                                         | 
-         | routage-mail.php                                              | 
-         | rss.php                                                                       | 
-         | sendmail.php                                                          | 
-         | services.php                                                          | docs/services.php
+------+-[ sondages ]------------------------------+----------------
          | sondage/accueil.php                                           | 
          | sondage/bloc.php                                              | 
          | sondage/droits.php                                            | 
          | sondage/exemples.php                                          | 
          | sondage/modifie.php                                           | 
-         | sondage/questionnaire.php                             | 
          | sondage/question.php                                          | 
+         | sondage/questionnaire.php                             | 
          | sondage/reponse.php                                           | 
          | sondage/resultats.php                                         | 
          | sondage/titre.php                                             | 
          | sondage/validation.php                                        | 
-         | stats.php                                                             | stats/index.php
-         | step4.php                                                             | 
-         | tmpPWD.php                                                            | 
-         | trackers/index.php                                            | 
-         | trackers/tracker_admin.php                            | 
-         | trackers/tracker_delete.php                           | 
-         | trackers/tracker_show.php                             | 
-         | trackers/tracker_show_rq.php                          | 
+------+-[ trezo ]---------------------------------+----------------
          | trezo/gere_operations.php                             | 
          | trezo/index.php                                                       | 
          | trezo/trezo.inc.php                                           | 
+------+-[ emails ... ]----------------------------+----------------
+         | emails.php                                                            | 
+         | routage-mail.php                                              | 
+------+-[ inscription + mdp ]---------------------+----------------
+         | inscrire.php                                                          | 
+         | maj.php                                                                       | 
+         | recovery.php                                                          | 
+         | step4.php                                                             | 
+         | tmpPWD.php                                                            | 
+------+-[ bordel ]--------------------------------+----------------
+         | domaine.php                                                           | 
+         | emploi.php                                                            | 
+         | emploi_public.php                                             | 
+         | evenements.php                                                        | 
+         | index.coupure.php                                             | 
+         | marketing.php                                                         | 
+         | mescontacts.php                                                       | 
+         | mescontacts_pdf.php                                           | 
+         | newsletter.php                                                        | 
+         | newsletter_req.php                                            | 
+         | pg.confirm.php                                                        | 
+         | pg.php                                                                        | 
+         | profil.php                                                            | 
+         | profil2.php                                                           | 
+         | recherche.php                                                         | 
+         | redirect/error.php                                            | 
+         | redirect/redirect.php                                         | 
          | trombino.php                                                          | 
          | trombipromo.php                                                       | 
          | x.php                                                                         | 
+------+-[ admin ]---------------------------------+----------------
+!!!      | admin/gerer_applis.php                                        | \
+!!!      | admin/gerer_auth-groupex.php                          |  |
+!!!      | admin/gerer_binets.php                                        |  |
+!!!      | admin/gerer_coupure.php                                       |  |
+!!!      | admin/gerer_groupesx.php                              |   > utiliser les classes Diogènes, j'ai pas diogènes hors ligne :/
+!!!      | admin/gerer_listes.php                                        |  |
+!!!      | admin/gerer_paiement.php                              |  |
+!!!      | admin/gerer_skins.php                                         |  |---> mef la table a changé
+!!!      | admin/gerer_sondages.php                              | /
+!!!      | admin/logger.php                                              | \
+!!!      | admin/logger_actions.php                              |  \ Utiliser les classes de Jeremy, donc pour plus tard
+!!!      | admin/logger_events.php                                       |  /
+!!!      | admin/logger_user.php                                         | /
+------+-[ news ]----------------------------------+----------------
+!!!      | news/abonnements.php                                          | \
+!!!      | news/article.php                                              |  |
+!!!      | news/attachment.php                                           |  |
+!!!      | news/config.news.inc.php                              |  |
+!!!      | news/faq_admin.php                                            |   \ s'en débarasser ?
+!!!      | news/index.php                                                        |   /
+!!!      | news/newsportal.php                                           |  |
+!!!      | news/offreemploi.php                                          |  |
+!!!      | news/post.php                                                         |  |
+!!!      | news/thread.php                                                       | /
+!!!      | confbanana.php                                                        | -> dépend de banana, à passer plus tard ...
+------+-[ trackers ]------------------------------+----------------
+ x       | trackers/tracker_show.php                             | -
+ x       | trackers/tracker_show_rq.php                          | -
 ------+-------------------------------------------+----------------
+@@@      | groupex/donne-chall.php                                       | -
+@@@      | groupex/export-econfiance.php                         | -
+x        | acces_wap.php                                                         | -
+x        | admin/ax-xorg.php                                             | -
+x        | admin/deces_promo.php                                         | -
+x        | admin/graph_promo.php                                         | stats/graph_promo.php
+x        | admin/index.php                                                       | -
+x        | admin/postfix_blacklist.php                           | -
+x        | admin/postfix_perm.php                                        | -
+x        | admin/postfix_retardes.php                            | -
+x        | admin/stats_promo.php                                         | stats/stats_promo.php
+x        | coupure.php                                                           | stats/coupure.php
+x        | domaineperso.php                                              | -
+x        | dons.php                                                              | -
+x        | epouse.php                                                            | -
+x        | groupex.php                                                           | groupex/index.php 
+x        | nbpromo2.php                                                          | stats/nb_by_promo.php
+x        | parselog.php                                                          | stats/...
+x        | pattecassee.php                                                       | -
+x        | rss.php                                                                       | -
+x        | sendmail.php                                                          | -
+x        | trackers/index.php                                            | -
+x        | trackers/tracker_admin.php                            | -
 xx       | AccesPermanentOff.php                                         | cookie_off.php
 xx       | AccesPermanentOn.php                                          | cookie_on.php
 xx       | acces_redirect.php                                            | carva_redirect.php
@@ -180,12 +193,13 @@ xx          | getphoto.php                                                          | -
 xx       | index.php                                                             | -
 xx       | login.php                                                             | -
 xx       | motdepassemd5.php                                             | -
-xx       | nbpromo2.php                                                          | stats/nb_by_promo.php
 xx       | preferences.php                                                       | -
 xx       | secu.php                                                              | docs/secu.php
 xx       | skins.php                                                             | -
 xx       | vcard.php                                                             | -
 ------+-------------------------------------------+----------------
----      | aide.php                                                              | 
----      | auth-wiki.php                                                         | 
+---      | trackers/tracker_delete.php                           | -
+---      | admin/statut_antispam.php                             | inutilisée et même pas en var superglobales ...
+---      | aide.php                                                              | --> faq.php
+---      | auth-wiki.php                                                         | obsolete
 ------+-------------------------------------------+----------------
diff --git a/guide-todo b/guide-todo
new file mode 100644 (file)
index 0000000..7283862
--- /dev/null
@@ -0,0 +1,31 @@
+CSS :
+ - éviter autant que possible les hook en head inutiles pour des css
+ - récupérer la classe css qui vous convient le mieux dans les existantes,
+   et sinon, créer une classe la plus générale possible (factorisation de la css -> plus rapide à parser, à dl, etc ...)
+ - ajouter *qqs* ID bien particuliers : #skin (fait), #x (pour x.php), #profil (pour le profil) ...
+
+XHTML :
+ - b, u, i, center, font, ... sont à proscrire (utiliser em, strong ou des css)
+ - (v)align=, border=, ... sont à proscrire (utiliser les css qvb ou un style=)
+ - les attributs/balises sont en minuscule
+ - les balises ferment toutes (attention, à cause de certains browsers, <br/> est à éviter, utiliser <br /> etc ...)
+
+Code :
+ - passer les validations en templates correctement
+ - optimiser le cache (y'a surement des erreurs de cache d'ailleurs)
+ - utiliser XOrgPage::mysql_assign(...) au lieu de :
+    ,-------------------------------------------------
+    | $res = mysql_query(...);
+    | $truc = array();
+    | while($truc[] = mysql_fetch_assoc($res));
+    | array_pop($truc);
+    | mysql_free_result($res);
+    `-------------------------------------------------
+
+TODO:
+ - revérifier tous les liens du site une fois basculé (utiliser tjs {"..."|url} et mettre à jour les liens)
+ - regarder du coté de $default_modifiers pour éviter de l'injection de code (genre array('escape:"html"'))
+ - compile_check à false pour le site de prod ...
+ - affiner le cache :
+   pour les pages dont la modification est controlée, faire détuire le cache et utiliser is_cached
+    (exemple : liste des trackers ... liste des domaines ... etc)
diff --git a/htdocs/acces_wap.php b/htdocs/acces_wap.php
new file mode 100644 (file)
index 0000000..bb56655
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+require("auto.prepend.inc.php");
+
+new_skinned_page('access_wap.tpl', AUTH_MDP);
+
+if (isset($_REQUEST['op']) && $_REQUEST['op'] == "valid") {
+    // on enregistre les modifications des parametres
+    $sql="update wap set flags='";
+    if (isset($_REQUEST['actif'])) $sql.="actif,";
+    if (isset($_REQUEST['useimage'])) $sql.="useimage,";
+    if (isset($_REQUEST['ccfrom'])) $sql.="ccfrom,"; 
+    if (isset($_REQUEST['IMAPssl'])) $sql.="IMAPssl";   
+    $sql.="'";
+    if (isset($_REQUEST['screenwidth'])&&is_integer($_REQUEST['screenwidth'])) $sql.=",screenwidth = {$_REQUEST['screenwidth']}";
+    if (isset($_REQUEST['screenheight'])&&is_integer($_REQUEST['screenheight'])) $sql.=",screenheight = {$_REQUEST['screenheight']}";
+    if (isset($_REQUEST['fromaddr'])&&in_array($_REQUEST['fromaddr'],array("m4x","polytechnique","autre"))) $sql.=",fromaddr = '{$_REQUEST['fromaddr']}'";
+    if (isset($_REQUEST['otheraddr'])) $sql.=",otheraddr = '".addslashes($_REQUEST['otheraddr'])."'";
+    if (isset($_REQUEST['IMAPserver'])) $sql.=",IMAPserver = '".addslashes($_REQUEST['IMAPserver'])."'";
+    if (isset($_REQUEST['IMAPport'])&&is_integer($_REQUEST['IMAPport'])) $sql.=",IMAPport = {$_REQUEST['IMAPport']}";
+    if (isset($_REQUEST['IMAPdir'])) $sql.=",IMAPdir = '".addslashes($_REQUEST['IMAPdir'])."'";
+    $sql.=" where uid = ".$_SESSION['uid'];
+    mysql_query($sql);
+
+    $page->assign('OK',true);
+    $page->display('OK');
+} else { // pas de formulaire soumis
+    $sql = "SELECT  FIND_IN_SET('actif',flags) AS actif,
+                    FIND_IN_SET('useimage',flags) AS useimage,
+                    screenwidth,screenheight,fromaddr,otheraddr,
+                    FIND_IN_SET('ccfrom',flags) AS ccfrom,
+                    IMAPserver,IMAPport,IMAPdir,
+                    FIND_IN_SET('IMAPssl',flags) AS IMAPssl
+                    FROM wap WHERE uid = ".$_SESSION['uid'];
+    $result = mysql_query($sql);
+
+    if (mysql_num_rows($result)==0) {
+        //l'utilisateur n'a pas de profil WAP => on le crée
+        mysql_query("INSERT INTO wap (uid) VALUES (".$_SESSION['uid'].")");
+        $result = mysql_query($sql);
+    }
+
+    $page->assign('wap', mysql_fetch_assoc($result));
+    mysql_free_result($result);
+}
+?>
diff --git a/htdocs/admin/ax-xorg.php b/htdocs/admin/ax-xorg.php
new file mode 100644 (file)
index 0000000..ac2f862
--- /dev/null
@@ -0,0 +1,29 @@
+<?php
+require('auto.prepend.inc.php');
+new_admin_page('admin/ax-xorg.tpl');
+
+// liste des différences
+$sql = "SELECT i.promo,i.nom AS nom,i.prenom AS prenom,ia.nom AS nomax,ia.prenom AS prenomax,i.matricule AS mat,ia.matricule_ax AS matax
+        FROM identification AS i
+        INNER JOIN identification_ax AS ia ON i.matricule_ax = ia.matricule_ax
+        WHERE (SOUNDEX(i.nom) != SOUNDEX(ia.nom) AND SOUNDEX(CONCAT(ia.particule,i.nom)) != SOUNDEX(ia.nom)
+            AND SOUNDEX(i.nom) != SOUNDEX(ia.nom_patro) AND SOUNDEX(CONCAT(ia.particule,i.nom)) != SOUNDEX(ia.nom_patro))
+            OR i.prenom != ia.prenom
+           OR (i.promo != ia.promo AND i.promo != ia.promo+1 AND i.promo != ia.promo-1)
+           ORDER BY i.promo,i.nom,i.prenom";
+$page->mysql_assign($sql,'diffs','nb_diffs');
+
+// gens à l'ax mais pas chez nous
+$sql = "SELECT ia.promo,ia.nom,ia.nom_patro,ia.prenom
+        FROM identification_ax as ia
+        LEFT JOIN identification AS i ON i.matricule_ax = ia.matricule_ax
+        WHERE i.nom IS NULL";
+$page->mysql_assign($sql,'mank','nb_mank');
+
+// gens chez nous et pas à l'ax
+$sql = "SELECT promo,nom,prenom FROM identification WHERE matricule_ax IS NULL";
+$page->mysql_assign($sql,'plus','nb_plus');
+
+
+$page->display();
+?>
diff --git a/htdocs/admin/deces_promo.php b/htdocs/admin/deces_promo.php
new file mode 100644 (file)
index 0000000..c864a31
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+require("auto.prepend.inc.php");
+new_admin_page('admin/deces_promo.tpl');
+
+$promo = ( isset($_REQUEST["promo"]) ? $_REQUEST["promo"] : 0 );
+if(isset($_REQUEST['sub10']))   $promo -= 10;
+if(isset($_REQUEST['sub01']))   $promo --;
+if(isset($_REQUEST['add01']))   $promo ++;
+if(isset($_REQUEST['add10']))   $promo += 10;
+
+$page->assign('promo',$promo);
+
+if (isset($_REQUEST["valider"]) && $_REQUEST["valider"] == "Valider") {
+    $res = mysql_query("SELECT matricule FROM identification WHERE promo = $promo");
+    while (list($mat) = mysql_fetch_row($res)) {
+        mysql_query("UPDATE identification SET deces='".$_REQUEST[$mat]."' WHERE matricule = '".$mat."'");
+    }
+}
+
+$sql = "SELECT matricule, nom, prenom, deces FROM identification WHERE promo = $promo ORDER BY nom,prenom";
+$page->mysql_assign($sql, 'decedes');
+
+$page->display();
+?>
diff --git a/htdocs/admin/index.php b/htdocs/admin/index.php
new file mode 100644 (file)
index 0000000..a74573d
--- /dev/null
@@ -0,0 +1,6 @@
+<?php
+require("auto.prepend.inc.php");
+new_admin_page('admin/index.tpl');
+
+$page->display();
+?>
diff --git a/htdocs/admin/postfix_blacklist.php b/htdocs/admin/postfix_blacklist.php
new file mode 100644 (file)
index 0000000..52f4429
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+require("auto.prepend.inc.php");
+new_admin_page('admin/postfix.common.tpl');
+
+if(isset($_REQUEST['nomligne'])) {
+    $nomligne = $_REQUEST['nomligne'];
+
+    if (!empty($_REQUEST['del'])) {
+        exec("/home/web/spam/effacerBlacklist $nomligne {$_SESSION['username']}");
+        $page->assign('erreur', "Action: DEL($nomligne)");
+    } else if (!empty($_REQUEST['add'])) {
+        exec("/home/web/spam/ajouterBlacklist ".$nomligne);
+        $page->assign('erreur', "Action: ADD($nomligne)");
+    }
+}
+
+$blacklist = Array();
+$fd = fopen ("/etc/postfix/spamaccess", "r");
+while (!feof ($fd)) {
+    $buffer = fgets($fd, 4096);
+    if ($buffer[0]!='#' && (strlen($buffer)>1) { # FIXME $string[i] is deprecated
+        $blacklist[] = $buffer;
+    }
+}
+fclose($fd);
+
+$page->assign_by_ref('list',$blacklist);
+$page->assign('title','Bannis de polytechnique.org');
+$page->assign('expl','Ne mettre dans les cases que des emails (aucun espace ni commentaire supplémentaire)');
+$page->display();
+?>
diff --git a/htdocs/admin/postfix_perm.php b/htdocs/admin/postfix_perm.php
new file mode 100644 (file)
index 0000000..26a4cf2
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+require("auto.append.inc.php");
+new_admin_page('admin/postfix.common.tpl');
+
+if(isset($_REQUEST['nomligne'])) {
+    $nomligne = $_REQUEST['nomligne'];
+    
+    if (!empty($_REQUEST['del'])) {
+        exec("/home/web/spam/effacerPermissions $nomligne {$_SESSION['username']}");
+        $page->assign('erreur', "Action: DEL($nomligne)");
+    } else if (!empty($_REQUEST['add'])) {
+        exec("/home/web/spam/ajouterPermissions '".$nomligne."'");
+        $page->assign('erreur', "Action: ADD($nomligne)");
+    }
+}
+
+$permis = Array();
+$fd = fopen ("/etc/postfix/spampermis", "r");
+while (!feof ($fd)) {
+    $buffer = fgets($fd, 4096);
+    if ($buffer[0]!='#' && (strlen($buffer)>1) { # FIXME $string[i] is deprecated
+        $permis[] = $buffer;
+    }
+}
+fclose($fd);
+
+$page->assign_by_ref('list',$blacklist);
+$page->assign('title','Permissions de polytechnique.org');
+$page->assign('expl','On peut placer dans les cases les emails de personnes pouvant diffuser sans restriction.');
+$page->display();
+?>
diff --git a/htdocs/admin/postfix_retardes.php b/htdocs/admin/postfix_retardes.php
new file mode 100644 (file)
index 0000000..e286b85
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+require("auto.append.inc.php");
+new_admin_page('admin/postfix.common.tpl');
+
+if (isset($_REQUEST["del"]) && !empty($_REQUEST["del"])) {
+    exec("/home/web/spam/effacerRetardes ".$_REQUEST["nomligne"]);
+    $page->assign('erreur', "Action: DEL({$_REQUEST['nomligne']})");
+}
+        
+$retard = Array();
+$fd = fopen ("/etc/postfix/spamdefer", "r");
+
+while (!feof ($fd)) {
+    $buffer = fgets($fd, 4096);
+    if ($buffer[0]!='#' && (strlen($buffer)>1) { # FIXME $string[i] is deprecated
+        $retard[] = $buffer;
+    }
+}
+fclose($fd);
+
+$page->assign_by_ref('list',$blacklist);
+$page->assign('title','Mails retardés de polytechnique.org');
+$page->assign('expl','Les envoyeurs ici présents verront leurs mails retardés toutes les heures jusqu\'au délai de 5j (bounce). Placer ici uniquement des emails (pas de commentaires).');
+$page->display();
+?>
diff --git a/htdocs/domaineperso.php b/htdocs/domaineperso.php
new file mode 100644 (file)
index 0000000..700ba40
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+require("auto.prepend.inc.php");
+require("domaine.inc.php");
+
+new_skinned_page('domaineperso.tpl', AUTH_MDP);
+
+if (isset($_REQUEST['dnom']))
+    $page->assign('result', add_domain($_REQUEST['dnom']));
+
+$domaines = liste_domaines():
+    
+$page->assign('nb_dom',count($domaines));
+$page->assign_by_ref('domaines',$domaines);
+
+$page->display();
+?>
diff --git a/htdocs/dons.php b/htdocs/dons.php
new file mode 100644 (file)
index 0000000..b3144bf
--- /dev/null
@@ -0,0 +1,5 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('dons.tpl', AUTH_COOKIE);
+$page->display();
+?>
diff --git a/htdocs/epouse.php b/htdocs/epouse.php
new file mode 100644 (file)
index 0000000..7225c88
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+require("auto.prepend.inc.php");
+require("validations.inc.php");
+
+new_skinned_page('epouse.tpl', AUTH_MDP);
+
+$res = mysql_query("select u.nom,u.epouse,i.flags from auth_user_md5 as u
+                    left join identification as i using(matricule)
+                    where user_id=".$_SESSION['uid']);
+list($nom,$epouse_old,$flags) = mysql_fetch_row($res);
+$flags=new flagset($flags);
+$page->assign('not_femme',!$flags->hasflag("femme"));
+
+$epouse = replace_accent(trim(clean_request('epouse'))); 
+$epouse = strtoupper($epouse);
+$page->assign('epouse_req',$epouse);
+
+if (!empty($_REQUEST['submit']) && ($epouse != $epouse_old)) {
+    // on vient de recevoir une requete, differente de l'ancien nom de mariage
+    if ($epouse == $nom) {
+        $page->assign('same',true);
+    } else { // le nom de mariage est distinct du nom à l'X
+        // on calcule l'alias pour l'afficher
+        $myepouse = new EpouseReq($_SESSION['uid'], $_SESSION['username'], $epouse);
+        list($prenom_username,) = explode('.',$_SESSION['username']);
+        $alias_old=make_username($prenom_username,$epouse_old);
+        $myepouse->submit();
+
+        $page->assign('epouse_old',$epouse_old);
+        $page->assign('alias_old',$alias_old);
+        $page->assign('myepouse',$myepouse);
+    }
+}
+
+$page->display($flags->hasflag("femme") ? '' : 'not_femme');
+?>
diff --git a/htdocs/groupex/donne-chall.php b/htdocs/groupex/donne-chall.php
new file mode 100644 (file)
index 0000000..f982c7c
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+/* Ce script donne un challenge et un numéro de session afin de permettre l'extraction de données pour eConfiance tout en procédant à une identification préalable... */
+
+session_start();
+session_register("chall");
+$_SESSION["chall"] = uniqid(rand(), 1);
+echo $_SESSION["chall"] . "\n" . session_id();
+
+?>
diff --git a/htdocs/groupex/export-econfiance.php b/htdocs/groupex/export-econfiance.php
new file mode 100644 (file)
index 0000000..e535a25
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+
+/* Script permettant l'export de la liste des membres de la mailing list eConfiance, pour intégration par J-P Figer dans la liste des membres de X-Informatique */
+
+session_start();
+
+$cle = "186357043dcbe666ba6cb8.04581835";
+
+if (isset($_SESSION["chall"]) && $_SESSION["chall"] != "" && $_GET["PASS"] == md5($_SESSION["chall"].$cle)) {
+
+require("db_connect.inc.php");
+
+$all = mysql_query("SELECT prenom,nom,username FROM auth_user_md5 as u,listes_ins as i WHERE i.idu=u.user_id AND i.idl=174 AND i.idu != 0 ORDER BY nom");
+
+$res = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n\n<membres>\n\n";
+
+while (list ($prenom1,$nom1,$email1) = mysql_fetch_row($all)) {
+        $res .= "<membre>\n";
+       $res .= "\t<nom>".$nom1."</nom>\n";
+       $res .= "\t<prenom>".$prenom1."</prenom>\n";
+       $res .= "\t<email>".$email1."</email>\n";
+       $res .= "</membre>\n\n";
+}
+mysql_free_result($all);
+
+$res .= "</membres>\n\n";
+
+echo $res;
+
+}
+
+?>
diff --git a/htdocs/groupex/index.php b/htdocs/groupex/index.php
new file mode 100644 (file)
index 0000000..2e97041
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+require("auto.prepend.inc.php");
+require("domaine.inc.php");
+
+new_skinned_page('groupex/index.tpl');
+
+$domaines = liste_domaines():
+    
+$page->assign('nb_dom',count($domaines));
+$page->assign_by_ref('domaines',$domaines);
+
+$page->display();
+?>
index d029be7..05f0b3c 100644 (file)
@@ -53,18 +53,14 @@ $page->assign_by_ref('publicite', $publicite);
 // affichage des evenements
 // annonces promos triées par présence d'une limite sur les promos
 // puis par dates croissantes d'expiration
-$res = mysql_query(
-        "SELECT e.id,e.titre,e.texte,a.username,a.nom,a.prenom,a.promo
+$sql = "SELECT e.id,e.titre,e.texte,a.username,a.nom,a.prenom,a.promo
         FROM evenements AS e INNER JOIN auth_user_md5 AS a
         ON e.user_id=a.user_id
         WHERE FIND_IN_SET(flags, 'valide') AND peremption >= NOW()
         AND (e.promo_min = 0 || e.promo_min <= {$_SESSION['promo']})
         AND (e.promo_max = 0 || e.promo_max >= {$_SESSION['promo']})
-        ORDER BY (e.promo_min != 0 AND  e.promo_max != 0) DESC,  e.peremption");
-$evenement = Array();
-while($evenement[] = mysql_fetch_assoc($res));
-@array_pop($evenement);
-mysql_free_result($res);
-$page->assign_by_ref('evenement', $evenement);
+        ORDER BY (e.promo_min != 0 AND  e.promo_max != 0) DESC,  e.peremption";
+$page->mysql_assign($sql, 'evenement');
+
 $page->display();
 ?>
diff --git a/htdocs/pattecassee.php b/htdocs/pattecassee.php
new file mode 100644 (file)
index 0000000..3e2837e
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('pattecassee.tpl',AUTH_COOKIE);
+    
+function valide_email($str) {
+
+   $em = trim(rtrim($str));
+   $em = str_replace("<", "", $em);
+   $em = str_replace(">", "", $em);
+   list($ident, $dom) = explode("@", $em);
+   if ($dom == "m4x.org" or $dom == "polytechnique.org") {
+       list($ident1) = explode("_", $ident);
+       list($ident) = explode("+", $ident1);
+   }
+   return $ident . "@" . $dom;
+}
+
+if (array_key_exists('email', $_GET) && array_key_exists('action', $_GET)) {
+    $email = valide_email($_GET['email']);
+    // vérifications d'usage
+    $sel = mysql_query(
+      "SELECT e.uid, a.username
+       FROM emails AS e
+       INNER JOIN auth_user_md5 AS a ON e.uid = a.user_id
+       WHERE e.email='$email'");
+    if (list($uid, $dest) = mysql_fetch_row($sel)) {
+       // envoi du mail
+       $message = "Bonjour !
+       
+Ce mail a été généré automatiquement par le service de patte cassée de
+Polytechnique.org car un autre utilisateur, "
+.$_SESSION["prenom"]." ".$_SESSION["nom"].",
+nous a signalé qu'en t'envoyant un mail, il avait reçu un message d'erreur
+indiquant que ton adresse de redirection " . $email . "
+ne fonctionnait plus !
+
+Nous te suggérons de vérifier cette adresse, et le cas échéant de mettre
+à jour sur le site <https://www.polytechnique.org/emails.php> tes adresses
+de redirection...
+
+Pour plus de rensignements sur le service de patte cassée, n'hésites pas à
+consulter la page <https://www.polytechnique.org/pattecassee.php>.
+
+
+A bientôt sur Polytechnique.org !
+L'équipe d'administration <support@polytechnique.org>";
+
+       $mail = new DiogenesMailer('Polytechnique.org <support@polytechnique.org>', $dest, "Une de tes adresse de redirection Polytechnique.org ne marche plus !!", false);
+       $mail->setBody($message);
+       $mail->send();
+        $page->assign('erreur', "Mail envoyé ! :o)");
+    }
+} else if (array_key_exists('email', $_POST)) {
+    $email = valide_email($_POST['email']);
+    $page->assign('email',$email);
+    $sel = mysql_query("SELECT e1.uid, e1.panne != 0 AS panne, count(e2.uid) AS nb_mails, u.nom, u.prenom, u.promo"
+        ." FROM emails as e1"
+        ." LEFT JOIN emails as e2 ON(e1.uid = e2.uid AND FIND_IN_SET('active', e2.flags) AND e1.num != e2.num)"
+        ." INNER JOIN auth_user_md5 as u ON(e1.uid = u.user_id)"
+        ." WHERE e1.email ='$email'"
+        ." GROUP BY e1.uid");
+    if ($x = mysql_fetch_assoc($sel)) {
+        // on écrit dans la base que l'adresse est cassée
+       if (!$x['panne'])
+           mysql_query("UPDATE emails SET panne='".date("Y-m-d")."' WHERE email =  '".$email."'");
+        $page->assign_by_ref('x',$x);
+    }
+}
+
+$page->display();
+?>
diff --git a/htdocs/rss.php b/htdocs/rss.php
new file mode 100644 (file)
index 0000000..95292e0
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+require("nonhtml.inc.php");
+
+$requete="SELECT e.id,e.titre,e.texte FROM evenements AS e WHERE FIND_IN_SET(flags, 'valide') AND peremption >= NOW()";
+
+if (isset($_REQUEST["promo"])) {
+    $requete.=" AND (e.promo_min = 0 || e.promo_min <= {$_REQUEST['promo']}) AND (e.promo_max = 0 || e.promo_max >= {$_REQUEST['promo']})";
+    $page->assign('promo',$_REQUEST["promo"]);
+}
+
+$requete.=" ORDER BY (e.promo_min != 0 AND e.promo_max != 0) DESC,  e.peremption";
+$page->msyql_assign($requete,'rss');
+
+header("Content-Type: text/xml");
+$page->display('rss.tpl');
+?> 
diff --git a/htdocs/sendmail.php b/htdocs/sendmail.php
new file mode 100644 (file)
index 0000000..09c32b4
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('sendmail.tpl',AUTH_MDP,true);
+
+// action si on recoit un formulaire
+if (isset($_REQUEST['submit']) and $_REQUEST['submit'] == 'Envoyer'
+    and isset($_REQUEST['to']) and isset($_REQUEST['sujet']) 
+    and isset($_REQUEST['contenu']) and isset($_REQUEST['cc'])
+    and isset($_REQUEST['bcc'])) {
+        $autre_to = (isset($_REQUEST['contacts']) ? join(', ',$_REQUEST['contacts']) : '');
+
+    if ($_REQUEST['to'] == '' and $_REQUEST['cc'] == '' and $autre_to == '') {
+        echo "<p class=\"erreur\">\n  Indique au moins un destinataire.\n</p>\n";
+    } else {
+        if (get_magic_quotes_gpc()) {
+            $_REQUEST['contenu'] = str_replace('\r', '', stripslashes($_REQUEST['contenu']));
+            $_REQUEST['to'] = stripslashes($_REQUEST['to']);
+            $_REQUEST['sujet'] = stripslashes($_REQUEST['sujet']);
+            $_REQUEST['from'] = stripslashes($_REQUEST['from']);
+            $_REQUEST['cc'] = stripslashes($_REQUEST['cc']);
+            $_REQUEST['bcc'] = stripslashes($_REQUEST['bcc']);
+            $autre_to = stripslashes($autre_to);
+        }
+        require("mailer.inc.php");
+        $FROM = "From: {$_REQUEST['from']}";
+        //$_REQUEST['contenu'] = chunk_split($_REQUEST['contenu'], 76, "\n"); // pas bon, ne tient pas compte des mots
+            $dest = $_REQUEST['to'].', '.$autre_to;
+        $mymail = new mailer($_SESSION['username'], $dest, $_REQUEST['sujet'], false, $_REQUEST['cc'], $_REQUEST['bcc']);
+        $mymail->addHeader($FROM);
+        $mymail->setBody(wordwrap($_REQUEST['contenu'],72,"\n"));
+        if ($mymail->send()) {
+            $page->assign('error',"Ton mail a bien été envoyé.");
+            $_REQUEST = array();
+        } else {
+            $page->assign('error',"Erreur lors de l'envoi du courriel, réessaye.\n");
+        }
+    } // ! if ($_REQUEST['to'] == '' and $_REQUEST['cc'] == '')
+}
+
+$sql = "SELECT u.prenom, u.nom, u.promo, u.username
+        FROM auth_user_md5 as u, contacts as c
+        WHERE u.user_id = c.contact AND c.uid = {$_SESSION['uid']}
+        ORDER BY u.nom, u.prenom";
+$page->mysql_assoc($sql, 'contacts','nb_contacts');
+
+$page->display();
+?>
index 81052dd..0347b4d 100644 (file)
@@ -9,17 +9,11 @@ if (isset($_REQUEST['submit']))  {  // formulaire soumis, traitons les donn
     set_skin();
 }
 
-$res = mysql_query("SELECT id,skin_tpl,skin_popup,snapshot,name,s.date,comment,auteur,count(*) AS nb FROM skins AS s
-                    LEFT JOIN auth_user_md5 AS a ON s.id=a.skin
-                    WHERE !FIND_IN_SET('cachee',type) AND skin_tpl != ''
-                    GROUP BY id ORDER BY s.date DESC");
-echo mysql_error();
-$skins = Array();
-while($skins[] = mysql_fetch_assoc($res));
-mysql_free_result($res);
-array_pop($skins);
-
-$page->assign_by_ref('skins',$skins);
+$sql = "SELECT id,skin_tpl,skin_popup,snapshot,name,s.date,comment,auteur,count(*) AS nb FROM skins AS s
+        LEFT JOIN auth_user_md5 AS a ON s.id=a.skin
+        WHERE !FIND_IN_SET('cachee',type) AND skin_tpl != ''
+        GROUP BY id ORDER BY s.date DESC";
+$page->mysql_assign($sql, 'skins');
 $page->assign('stochaskin',SKIN_STOCHASKIN_ID);
 
 $page->display();
diff --git a/htdocs/stats/coupure.php b/htdocs/stats/coupure.php
new file mode 100644 (file)
index 0000000..fc68bf5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('stats/coupure.tpl',
+
+if (isset($_REQUEST['cp_id'])) 
+    $res=mysql_query("select UNIX_TIMESTAMP(debut) AS debut, TIME_FORMAT(duree,'%kh%i') AS duree, resume, description, services from coupures where id='{$_REQUEST['cp_id']}'");
+else
+    $res="";
+
+if(($res)&&($cp == mysql_fetch_assoc($res))) {
+    $page->assign_by_ref('cp',$cp);
+} else {
+    $beginning_date = date("Ymd", time() - 3600*24*21) . "000000";
+    $sql = "select id, UNIX_TIMESTAMP(debut) as debut, resume, services from coupures where debut > '" . $beginning_date
+        .  "' order by debut desc";
+    $page->mysql_assign($sql, 'coupures');
+}
+
+$page->display();
+?>
diff --git a/htdocs/stats/graph_promo.php b/htdocs/stats/graph_promo.php
new file mode 100644 (file)
index 0000000..a621c4e
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page('index.tpl',AUTH_COOKIE);
+
+
+// genere le graph de l'evolution du nombre d'inscrits dans une promotion 
+
+$promo = (isset($_REQUEST['promo']) ? intval($_REQUEST["promo"]) : $_SESSION["promo"]);
+
+//nombre de jours sur le graph
+$JOURS=364;
+define('DUREEJOUR',24*3600);
+
+//recupere le nombre d'inscriptions par jour sur la plage concernée
+$donnees=mysql_query("SELECT if(date_ins>DATE_SUB(NOW(),INTERVAL $JOURS DAY), TO_DAYS(date_ins)-TO_DAYS(NOW()), ".(-($JOURS+1)).") AS jour,
+                             count(username) AS nb
+                      FROM auth_user_md5 WHERE promo = $promo GROUP BY jour");
+
+//genere des donnees compatibles avec GNUPLOT
+$inscrits='';
+
+// la première ligne contient le total des inscrits avant la date de départ (J - $JOURS)
+list(,$init_nb)=mysql_fetch_row($donnees);
+$total = $init_nb;
+
+list($numjour, $nb) = mysql_fetch_row($donnees);
+for ($i=-$JOURS;$i<=0;$i++) {
+    if ($numjour<$i) {
+        if(!list($numjour, $nb) = mysql_fetch_row($donnees)) {
+            $numjour = 0;
+            $nb = 0;
+        }
+    }
+    if ($numjour==$i) $total+=$nb;
+    $inscrits .= date('d/m/y',$i*DUREEJOUR+time())." ".$total."\n";
+}
+
+//Genere le graphique à la volée avec GNUPLOT
+header( "Content-type: image/png");
+
+$gnuplot="gnuplot <<EOF\n";
+$param1="set term png small color\nset size 640/480\nset xdata time\nset timefmt \"%d/%m/%y\"\n";
+$param2="set format x \"%m/%y\"\nset yr [".round($init_nb*0.90,0).":]\n";
+$title="set title \"Nombre d'inscrits de la promotion ".$promo."\"\n";
+$plot="plot \"-\" using 1:2 title 'inscrits' with lines;\n".$inscrits."e\nEOF\n";
+$plot_command=$gnuplot.$param1.$param2.$title.$plot;
+
+passthru($plot_command);
+?>
index 2e2eaf8..37623cb 100644 (file)
@@ -7,8 +7,8 @@ $max=0; $min=3000;
 while(list($promo,$nb)=mysql_fetch_row($result)) {
     $promo=intval($promo);
     if(!isset($nbpromo[$promo/10]))
-        $nbpromo[$promo/10] = Array('','', '','', '','', '','', '','');
-    $nbpromo[$promo/10][$promo%10]=$nb;
+        $nbpromo[$promo/10] = Array('','','','','','','','','',''); // tableau de 10 cases vides
+    $nbpromo[$promo/10][$promo%10]=Array('promo' => $promo, 'nb' => $nb);
 }
 
 $page->assign_by_ref('nbs', $nbpromo);
diff --git a/htdocs/stats/parselog.php b/htdocs/stats/parselog.php
new file mode 100644 (file)
index 0000000..a6440e9
--- /dev/null
@@ -0,0 +1,6 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page("stats/parselog.tpl");
+
+$page->display();
+?>
diff --git a/htdocs/stats/stats_promo.php b/htdocs/stats/stats_promo.php
new file mode 100644 (file)
index 0000000..3952122
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+require("auto.prepend.inc.php");
+new_skinned_page("stats/stats_promo.tpl", AUTH_COOKIE);
+
+$promo = isset($_REQUEST["promo"]) ? intval($_REQUEST["promo"]) : $_SESSION["promo"];
+$page->assign('promo',$promo);
+$page->display();
+?>
index 30a7b6e..ed6aedb 100644 (file)
@@ -1,6 +1,5 @@
 <?php
-require("auto.prepend.inc.php");
-require("Smarty.class.php");
+require("nonhtml.inc.php");
 
 function quoted_printable_encode($input, $line_max = 76) {
     $hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
@@ -52,15 +51,6 @@ function format_adr($params, &$smarty) {
     return quoted_printable_encode($res);
 }
 
-
-$page = new smarty();
-$page->template_dir = $globals->spoolroot . "/templates/";
-$page->compile_dir  = $globals->spoolroot . "/templates_c/";
-$page->plugins_dir[]= $globals->spoolroot . "/plugins/";
-$page->cache_dir    = $globals->spoolroot . "/cache/";
-$page->compile_check = true;
-$page->caching = false;
-
 $page->register_modifier('qp_enc', 'quoted_printable_encode');
 $page->register_function('format_adr', 'format_adr');
 
diff --git a/include/domaine.inc.php b/include/domaine.inc.php
new file mode 100644 (file)
index 0000000..5ac8bb9
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/** liste les domaines présents dans le result mysql donné
+* @see domaineperso.php
+* @see groupex.php
+* @return Array
+*/
+function liste_domaines() {
+
+    // on récupère la liste des domaines gérables par l'utilisateur
+    $sql = "SELECT domain FROM groupex.aliases as d ".
+            ($_SESSION['perms'] == 'admin'?'':', groupex.gestionnaires as g').
+           " WHERE domain NOT LIKE '%@%'".
+            ($_SESSION['perms'] == 'admin'?'':" AND g.did = d.id AND g.uid = {$_SESSION['uid']}").
+           " ORDER BY domain";
+
+    $result = mysql_query($sql);
+
+    $ret = Array();
+    while (list($domaine) = mysql_fetch_row($result)) {
+        $ret[] = $domaine;
+    }
+    mysql_free_result($result);
+
+    return $ret;
+}
+
+/** ajoute domaine
+* @param $domaine nom du domaine
+* @return string message indiquant le succes ou l'echec de l'ajout de domaine
+* @see domaineperso.php
+*/
+function add_domain($domaine) {
+    if ($_SESSION['perms'] == 'admin') {
+        $ok = true;
+    } else { // si pas admin, on verifie qu'il n'a pas deja de domaine
+        $sql = "SELECT 1 FROM groupex.aliases AS a, groupex.gestionnaires AS g
+                WHERE g.uid = {$_SESSION['uid']} AND a.id = g.did AND a.domain NOT LIKE '%@%'
+                    AND a.domain NOT LIKE '%polytechnique.org'";
+        $result = mysql_query($sql);
+        $ok = (mysql_num_rows($result) < 1);
+    }
+    if ($ok) {
+        // ok, ajout du domaine et des droits d'utilisation (sauf si admin)
+        if(mysql_query("insert into groupex.aliases set domain = '$domaine'")) {;
+        $did = mysql_insert_id();
+            if ($_SESSION['perms'] != 'admin')
+            if(mysql_query("INSERT INTO groupex.gestionnaires SET did = $did, uid = {$_SESSION['uid']}"))
+                return "<p class='erreur'>Félicitations, ton domaine a été ajouté aux domaines gérés par Polytechnique.org.\n"
+                    .  "Clique sur le lien ci-dessous pour lui ajouter des alias</p>\n";
+        } else
+            return "<p class='erreur'>Erreur : ".mysql_error()."</p>\n";
+    } else {
+        return "<p class=\"erreur\">Tu as déjà un nom de domaine perso, tu ne peux pas en avoir plusieurs.</p>\n";
+    }
+}
+
+?>
diff --git a/include/insert.pattecassee.inc.php b/include/insert.pattecassee.inc.php
new file mode 100644 (file)
index 0000000..103d5b2
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+
+function smarty_insert_serv_to_str($params, &$smarty) {
+    $flags = explode(',',implode(',',$params));
+    $ret = Array();
+    foreach($flags as $flag)
+        switch($flag) {
+            case "web":
+              $ret[] = "site web";
+              break;
+            case "mail":
+              $ret[] = "redirection mail";
+              break;
+            case "smtp":
+              $ret[] = "serveur s&eacute;curis&eacute; d'envoi de mails";
+              break;
+            case "nntp":
+              $ret[] = "serveur des forums de discussion";
+              break;
+          }
+    return implode(', ',$ret);
+}
+
+?>
diff --git a/include/nonhtml.inc.php b/include/nonhtml.inc.php
new file mode 100644 (file)
index 0000000..c518cfc
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+ini_set('include_path', ".:..:/home/x2000habouzit/dev/public/include:/home/x2000habouzit/dev/diogenes/lib/:/home/x2000habouzit/dev/smarty/");
+require("xorg.globals.inc.php");
+require("Smarty.class.php");
+
+$page = new Smarty();
+
+$page->template_dir = $globals->spoolroot . "/templates/";
+$page->compile_dir  = $globals->spoolroot . "/templates_c/";
+$page->plugins_dir[]= $globals->spoolroot . "/plugins/";
+$page->cache_dir    = $globals->spoolroot . "/cache/";
+    
+$page->config_overwrite=false;
+$page->compile_check=true;
+$page->caching=false;
+?>
index e1cd333..a7de1a1 100644 (file)
@@ -47,7 +47,7 @@ class EmploiReq extends Validate {
               <td colspan="2"><pre>{$texte}</pre></td>
             </tr>
             <tr>
-              <td class="bouton" colspan="2">
+              <td class="center" colspan="2">
                 <input type="submit" name="submit" value="Accepter" />
                 <input type="submit" name="submit" value="Refuser" />
               </td>
index e935129..e23cba8 100644 (file)
@@ -77,7 +77,7 @@ class EvtReq extends Validate {
                 <td>{$this->comment}</td>
               </tr>
               <tr>
-                <td class="bouton" colspan="2">
+                <td class="center" colspan="2">
                   <input type="submit" name="action" value="Valider" />
                   <input type="submit" name="action" value="Invalider" />
                   <input type="submit" name="action" value="Supprimer" />
index 2ae23ca..c991dd4 100644 (file)
@@ -190,8 +190,7 @@ ________EOF;
         global $no_update_bd;
         if($no_update_bd) return false;
         
-        require_once("flagset.inc.php");
-        $type = new flagset();
+        $type = new DiogenesFlagset();
         if ($this->libre) $type->addflag('libre');
         if ($this->publique) $type->addflag('publique');
         if ($this->archive) $type->addflag('archive');
index 64dae9f..b930003 100644 (file)
@@ -70,8 +70,8 @@ class PhotoReq extends Validate {
         </tr>
         <tr>
             <td style="vertical-align: middle;" colspan="2">
-                <img src="../getphoto.php?x={$this->uid}$url_app" width=110 alt=" [ PHOTO ] " />
-                <img src="../getphoto.php?x={$this->uid}&amp;req=true$url_app" width=110 alt=" [ PHOTO ] " />
+                <img src="../getphoto.php?x={$this->uid}$url_app" style="width:110px;" alt=" [ PHOTO ] " />
+                <img src="../getphoto.php?x={$this->uid}&amp;req=true$url_app" style="width:110px;" alt=" [ PHOTO ] " />
             </td>
         </tr>
         <tr>
index 81276d4..814c9bb 100644 (file)
@@ -43,7 +43,7 @@ class XorgPage extends DiogenesCorePage {
   }
 
   function make_id($append_to_id="") {
-      $ret = str_replace('/','|',$this->_tpl);
+      $ret = $this->_tpl;
       if($append_to_id)
           $ret.="|$append_to_id";
 
@@ -57,6 +57,22 @@ class XorgPage extends DiogenesCorePage {
 
   function doAuth() { }
 
+  function mysql_assign($sql_query,$var_name,$var_nb_name='') {
+    $sql = mysql_query($sql_query);
+    if(mysql_errno($sql))
+      return(mysql_error($sql));
+
+    $array = Array();
+    while($array[] = mysql_fetch_assoc($sql));
+    array_pop($array);
+    mysql_free_result($sql);
+
+    $this->assign_by_ref($var_name,$array);
+    if(!empty($var_nb_name))
+      $this->assign($var_nb_name, count($array));
+    return 0;
+  }
+
 }
 
 
index 39a0104..25f2ce9 100755 (executable)
@@ -59,9 +59,12 @@ sub parse_tag($$) {
 
     # tag interdits en xhtml
     print STDERR "${red}XHTML error: ${yel}<$1> ${blu}($file)${gra}\n"
-        if($tag =~ /^(b|i|u|center)( |$)/);
+        if($tag =~ /^(b|i|u|big|small|font|center)( |$)/);
     print STDERR "${red}XHTML error: ${yel}<$1> sans '/' ${blu}($file)${gra}\n"
         if($tag =~ /^(br|hr|img|link|input)( [^\/]*)?$/);
+
+    print STDERR "${red}XHTML error: ${yel}attribut $1 ${blu}($file)${gra}\n"
+        if($tag =~ / (align|width|border|color|valign)=/);
    
     # récupération des classes utilisées ...
     if($tag =~ /^(\w+).* class=('{[^}]*}'|"{[^}]*}"|'[^{}']*'|"[^{}"]*")/) {
index cd4360b..e308439 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: acces_smtp.tpl,v 1.2 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: acces_smtp.tpl,v 1.3 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 
 {dynamic on="0$message"}
 <p class="erreur">
@@ -51,7 +51,7 @@
 {/if}
 </p>
 <form action="{$smarty.server.REQUEST_URI}" method="POST" name="smtppass_form" id="smtppass_form">
-  <table class="tinybicol" cellpadding="3" border="0" summary="Définition du mot de passe">
+  <table class="tinybicol" cellpadding="3" summary="Définition du mot de passe">
     <tr>
       <th colspan="2">
         Définition du mot de passe
diff --git a/templates/acces_wap.tpl b/templates/acces_wap.tpl
new file mode 100644 (file)
index 0000000..821e2c4
--- /dev/null
@@ -0,0 +1,159 @@
+{* $Id: acces_wap.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+{if $OK}
+<p class="erreur">
+  Configuration du site WAP enregistrée.
+</p>
+{else}
+<div class="rubrique">Paramètre du site WAP</div>
+
+<p class="normal">
+  Tu peux utiliser certaines fonctionnalités du site Polytechnique.org sur un terminal WAP.<br />
+  (téléphone portable, PDA, ...)<br />
+  Il est disponible à l'adresse https://wap.polytechnique.org (# TODO # adresse de devel: http://wap.m4x.org/?u=prenom.nom&amp;p=passsmtp)<br />
+  <a href="docs/doc_wap.php">Pourquoi et comment</a> utiliser le site WAP de Polytechnique.org. (##TODO## à ecrire)<br />
+</p>
+<p class="normal">
+  Pour utiliser le site WAP, il faut que tu l'actives explicitement en cochant la case ci dessous.
+</p>
+{dynamic}
+<form action="{$smarty.server.REQUEST_URI}" method="POST" name="wap_form">
+  <table class="bicol" cellpadding="3" summary="Paramètres généraux du site WAP">
+    <tr>
+      <th colspan="2">
+        Paramètres généraux du site WAP
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Activer l'accès WAP:
+      </td>
+      <td>
+        <input type="checkbox" name="actif" {if $wap.actif}checked="checked"{/if} />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Terminal affichant les images:
+      </td>
+      <td>
+        <input type="checkbox" name="useimage" {if $wap.useimage}checked="checked"{/if} />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Largeur de l'écran (pixels):
+      </td>
+      <td>
+        <input type="text" name="screenwidth" size="4" value="{$wap.screenwidth}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Hauteur de l'écran (pixels):
+      </td>
+      <td>
+        <input type="text" name="screenwidth" size="4" value="{$wap.screenheight}" />
+      </td>
+    </tr>
+  </table>
+
+  <p class="normal">
+    La largeur et la hauteur de l'écran sont juste utilisé à titre <strong>indicatif</strong> pour améliorer l'affichage des photos.
+    Si vous ne les connaissez pas, vous pouvez les laisser à la valeur par défaut ou faire des essais successifs.<br />
+  </p>
+  <br />
+  <table class="bicol" cellpadding="3" summary="Envoi de mail">
+    <tr>
+      <th colspan="2">
+        Paramètres pour l'envoi de mail
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Adresse de l'expéditeur:
+      </td>
+      <td>
+       <select name="fromaddr">
+          <option value="m4x" {if $wap.fromaddr eq "m4x"}selected="selected"{/if}>
+          {$smarty.session.username}@m4x.org
+          </option>
+          <option value="polytechnique" {if $wap.fromaddr eq "polytechnique"}selected="selected"{/if}>
+          {$smarty.session.username}@polytechnique.org
+          </option>
+          <option value="autre" {if $wap.fromaddr eq "autre"}selected="selected"{/if}>
+          Autre...
+          </option>
+       </select>
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        (si autre)
+      </td>
+      <td>
+        <input type="text" name="otheraddr" size="60" value="{$wap.otheraddr}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Mettre mon adresse en CC:
+      </td>
+      <td>
+        <input type="checkbox" name="ccfrom" {if $wap.ccfrom}checked="checked"{/if} />
+      </td>
+    </tr>
+  </table>
+  <p class="normal">
+    <br/>
+    Si votre boite mail est sur un serveur <strong>IMAP</strong>, vous pouvez activer la lecture de vos mails depuis le site WAP.
+  </p>
+  <table class="bicol" cellpadding="3" summary="Lecture des mails">
+    <tr>
+      <th colspan="2">
+        Paramètres pour la lecture des mails
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Serveur IMAP:
+      </td>
+      <td>
+        <input type="text" name="IMAPserver" size="40" value="{$wap.IMAPserver}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Utiliser le SSL:
+      </td>
+      <td>
+        <input type="checkbox" name="IMAPssl" {if $wap.IMAPssl}checked="checked"{if} />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Port:
+      </td>
+      <td>
+        <input type="text" name="IMAPport" size="10" value="{$wap.IMAPport}" />
+      </td>
+    </tr>
+    <tr>
+      <td class="titre">
+        Répertoire à lire:
+      </td>
+      <td>
+        <input type="text" name="IMAPdir" size="40" value="{$wap.IMAPdir}" />
+      </td>
+    </tr>
+  </table>
+  <br />
+  <div class="center">
+    <input type="hidden" name="op" value="valid" />
+    <input type="submit" value="Valider" />
+  </div>
+</form>
+{/dynamic}
+{/if}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/admin/ax-xorg.tpl b/templates/admin/ax-xorg.tpl
new file mode 100644 (file)
index 0000000..2d9817d
--- /dev/null
@@ -0,0 +1,81 @@
+{* $Id: ax-xorg.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+  Vérifier notre table de correspondance entre l'annuaire de l'AX et le nôtre
+</div>
+
+<div class="ssrubrique">
+  Liste des camarades qui n'apparaissent pas sous le même nom dans les deux annuaires
+</div>
+
+{dynamic}
+<table class="bicol" summary="liste des absents de notre annuaire">
+  <tr>
+    <th>Promo</th>
+    <th>Nom X.org</th>  <th>Prénom X.org</th>   <th>Mat X.org</th>
+    <th>Nom AX</th>     <th>Prénom AX</th>      <th>Mat AX</th>
+  </tr>
+{foreach item=x from=$diff}
+  <tr class="{cycle values="impair,pair"}">
+    <td>{$x.promo}</td>
+    <td>{$x.nom}</td>   <td>{$x.prenom}</td>    <td>{$x.mat}</td>
+    <td>{$x.nomax}</td> <td>{$x.prenomax}</td>  <td>{$x.matax}</td>
+  </tr>
+{/foreach}
+</table>
+
+<p class="normal">
+  <strong>{$nb_diffs} camarades ont un état civil différent dans les 2 annuaires.</strong>
+</p>
+{/dynamic}
+
+<br />
+<br />
+
+<div class="ssrubrique">
+  Liste des camarades de l'annuaire de l'AX qui manquent à notre annuaire
+</div>
+
+{dynamic}
+<table class="bicol" summary="liste des absents de notre annuaire">;
+  <tr>
+    <th>Promo</th>  <th>Nom</th>  <th>Prénom</th>
+  </tr>
+{foreach item=x from=$mank}
+  <tr class="{cycle values="impair,pair"}">
+    <td>{$x.promo}</td>
+    <td>{$x.nom} {if $x.nom_patro neq $x.nom}({$c.nom_patro}){/if}</td>
+    <td>{$x.prenom}</td>
+  </tr>
+{/foreach}
+</table>
+<p class="normal">
+  <strong>{$nb_mank} camarades sont absents de notre annuaire.</strong>
+</p>
+{/dynamic}
+
+<br />
+<br />
+
+<div class="ssrubrique">
+  Liste des camarades de notre annuaire qui ne sont pas dans l'annuaire de l'AX
+</div>
+
+{dynamic}
+<table class="bicol" summary="liste des absents de l'AX">
+  <tr>
+    <th>Promo</th>        <th>Nom</th>        <th>Prénom</th>
+  </tr>
+{foreach item=x from=$plus}
+  <tr class="{cycle values="impair,pair"}">
+    <td>{$x.promo}</td>   <td>{$x.nom}</td>   <td>{$x.prenom}</td>
+  </tr>
+{/foreach}
+</table>
+
+<p class="normal">
+  <strong>{$nb_plus} camarades sont absents de notre annuaire.</strong>
+</p>
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/admin/deces_promo.tpl b/templates/admin/deces_promo.tpl
new file mode 100644 (file)
index 0000000..58d110a
--- /dev/null
@@ -0,0 +1,46 @@
+{* $Id: deces_promo.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+<form action="{$smarty.server.PHP_SELF}" method="post">
+<table class="bicol">
+  <tr>
+    <td><input type="submit" value="<<" name="sub10" /></td>
+    <td><input type="submit" value="<"  name="sub01" /></td>
+    <td>
+      Promotion :
+{dynamic}
+      <input type="text" name="promo" value="{$promo}" size="4" maxlength="4" />
+{/dynamic}
+      <input type="submit" value="GO" />
+    </td>
+    <td><input type="submit" value=">"  name="add01" /></td>
+    <td><input type="submit" value=">>" name="add10" /></td>
+  </tr>
+</table>
+</form>
+
+<form action="{$smarty.server.PHP_SELF}" method="post">
+<input type="hidden" name="promo" value="{$promo}" />
+<table class="bicol" summary="liste des dates de décès">
+  <tr>
+    <th>Nom</th>
+    <th>Date de décès</th>
+  </tr>
+{dynamic}
+{foreach item=x from=$decedes}
+  <tr class="{cycle values="impair,pair"}">
+    <td>{$x.nom} {$x.prenom}</td>
+    <td class="center">
+      <input type="text" name="{$x.matricule}" value="{$x.deces}" size="10" maxlength="10">
+    </td>
+  </tr>
+{/foreach}
+{/dynamic}
+  <tr>
+    <td class="center">
+      <input type="submit" name="valider" value="Valider" />
+    </td>
+  </tr>
+</table>
+</form>
+       
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/admin/index.tpl b/templates/admin/index.tpl
new file mode 100644 (file)
index 0000000..518a443
--- /dev/null
@@ -0,0 +1,112 @@
+{* $Id: index.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+<div class="rubrique">Administration Polytechnique.org</div>
+
+<table class="bicol" cellpadding="3" summary="Système">
+<tr><th>Syst&egrave;me</th></tr>
+<tr class="impair"><td>
+  <strong>Postfix : </strong>
+  <a href="postfix_blacklist.php">Blacklist</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="postfix_perm.php">Permissions</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="postfix_retardes.php">Retards</a>
+</td></tr>
+<tr class="pair"><td>
+  <strong>Statistiques : </strong>
+  <a href="../stats/admin.html">Syst&egrave;me</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="../parselog.php">Logs Postfix</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="../webalizer/">Webalizer</a>
+</td></tr>
+<tr class="impair"><td>
+  <strong>S&eacute;curit&eacute; : </strong>
+  <a href="logger.php">Logs des sessions</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="logger_user.php">Logs utilisateur</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="logger_actions.php">Actions</a>
+</td></tr>
+</table>
+
+<br />
+<table class="bicol" cellpadding="3" summary="Système">
+<tr><th>Contenu du site</th></tr>
+<tr class="impair"><td>
+ <strong>Utilisateurs : </strong>
+  <a href="utilisateurs.php">Gestion/SU</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="utilisateurs_identification.php">Identification</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="homonymes.php">Homonymes</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="marketing.php">Marketing</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="ax-xorg.php">AX/X.org</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="deces_promo.php">Décès</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="comptesPOP.php">Comptes POP</a>
+</td></tr>
+<tr class="pair"><td>
+  <strong>Infos dynamiques : </strong>
+  <a href="gerer_coupure.php">Coupures</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="evenements.php">&Eacute;v&eacute;nements</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="http://www.polytechnique.net/admin/">X.net</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="pg.php">Point Gamma</a>
+</td></tr>
+<tr class="impair"><td>
+  <strong>Champs profil : </strong>
+  <a href="gerer_applis.php">Formations</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="gerer_binets.php">Binets</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="gerer_groupesx.php">Groupes X</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="gerer_skins.php">Skins</a>
+</td></tr>
+<tr class="pair"><td>
+  <strong>Newsletter : </strong>
+  <a href="newsletter_prep.php">Pr&eacute;paration</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="newsletter_archi.php">Archives</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="newsletter_pattecassee.php">Adresses en panne</a>  
+</td></tr>
+<tr class="impair"><td>
+ <strong>Administrer : </strong>
+  <a href="gerer_auth-groupex.php">Auth Groupes X</a>&nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="../listes/gere_listes.php">Listes</a>
+</td></tr>
+<tr class="pair"><td>
+    <strong>Valider demandes : </strong>
+    <a href="valider.php">Valider</a>
+    &nbsp;&nbsp;|&nbsp;&nbsp;
+    <a href="evenements.php">&Eacute;v&eacute;nements</a>
+</td></tr>
+<tr class="impair"><td>
+  <strong>Forums : </strong>
+  <a href="admin_faqs.php">FAQs</a> 
+</td></tr>
+<tr class="pair"><td>
+ <strong>Tr&eacute;sorerie : </strong>
+  <a href="../trezo/gere_operations.php">Comptes</a>
+    &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="gerer_paiement.php">Paiements</a>
+</td></tr>
+</table>
+
+<br />
+<table class="bicol" cellpadding="3" summary="Système">
+<tr><th>Développement</th></tr>
+<tr class="impair">
+    <td style="width:4em;"><strong>Trackers : </strong>
+    <a href="../trackers/tracker_show.php?tr_id=2">BugList</a>
+    &nbsp;&nbsp;|&nbsp;&nbsp;
+    <a href="../trackers/tracker_show.php?tr_id=1">TodoList</a>
+    </td>
+</tr>
+<tr class="pair">
+    <td><strong>CVS : </strong>
+        <a href="http://dev.m4x.org/cvs/">ViewCVS</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+        <a href="http://dev.m4x.org/depview/">DepView</a>
+    </td>
+</tr>
+</table>
+
+<br />
+<table class="bicol" cellpadding="3" summary="Système">
+<tr><th>Gestion et entretien</th></tr>
+<tr class="impair"><td>
+  <strong>Reformatage Prenom NOM : </strong>
+  <a href="FormatePrenomNOM.php">Table
+               auth_user_md5</a> &nbsp;&nbsp;|&nbsp;&nbsp;
+  <a href="FormatePrenomNOM2.php">Table identification</a>
+</td></tr>
+</table>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/admin/postfix.common.tpl b/templates/admin/postfix.common.tpl
new file mode 100644 (file)
index 0000000..d0685eb
--- /dev/null
@@ -0,0 +1,32 @@
+{* $Id: postfix.common.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+{dynamic}
+<p class="erreur">{$erreur}</p>
+
+<div class="rubrique">
+{$title}
+</div>
+
+<a href="{""|url}">page d'admin</a> |
+<a href="{"postfix_blacklist.php"|url}">blacklist</a> |
+<a href="{"postfix_perm.php"|url}">permissions</a> | 
+<a href="{"postfix_retardes.php"|url}">mails retardés</a>
+
+<p class="normal">
+{$expl}
+</p>
+
+<form method="post" action="{$smarty.server.PHP_SELF}">
+  <input type="text" name="nomligne" size="100" />
+  <input type="submit" name="add" value="Add" />
+</form>
+
+{foreach item=line from=$list}
+<form method="post" action="{$smarty.server.PHP_SELF}">
+  <input type="text" name="nomligne" value="{$line}" size="100">
+  <input type="submit" name="del" value="Del">
+</form>
+{/foreach}
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
index 69adba1..bb83298 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: antispam.tpl,v 1.2 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: antispam.tpl,v 1.3 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 
 <div class="rubrique">
   Ton filtre anti-spam
@@ -24,7 +24,7 @@ Trois r
 </ul>
 </p>
 <form action="{$smarty.server.PHP_SELF}" method="POST" name="filtre">
-  <table class="tinybicol" width="90%" summary="filtre anti-spam">
+  <table class="tinybicol" summary="filtre anti-spam">
     <tr>
       <td>
         <strong>Choisis ton propre réglage :</strong><br />
diff --git a/templates/domaineperso.tpl b/templates/domaineperso.tpl
new file mode 100644 (file)
index 0000000..86c921f
--- /dev/null
@@ -0,0 +1,61 @@
+{* $Id: domaineperso.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+{include file='include/liste_domaines.tpl' result=$result nb_dom=$nbdom domaines=$domaines}
+
+<div class="rubrique">
+  Gère les emails de ton domaine perso
+</div>
+
+<p class="normal">
+ Polytechnique.org te propose de gérer les emails de ton domaine personnel.
+</p>
+<p class="normal">
+  Effet, si tu disposes d'un domaine personnel comme ton-nom.org, tu dois utiliser un hébergeur pour ta 
+  DNS, pour tes adresses emails et pour ton espace web. En général, c'est le même pour 
+  les trois éléments, mais tu peux aussi utiliser des hébergeurs différents. Il en 
+  existe certains qui sont gratuits (comme <a href="http://www.mydomain.com/">
+  Mydomain</a>), mais pas toujours très performants. Polytechnique.org te propose de 
+  s'occuper de tes emails dans un premier temps.
+</p>
+<p class="normal">
+  Pour que ton domaine soit géré par Polytechnique.org, active d'abord le domaine dans 
+  le formulaire ci-dessous. Le domaine apparaît alors en haut de cette page, places-y 
+  les alias que tu désires.
+</p>
+<p class="normal">
+  Ensuite, configure ton serveur DNS pour que le champ MX de ton domaine soit 
+  a.mx.polytechnique.org (ou a.mx.m4x.org pour être plus discret
+  mais pas les deux, c'est la même machine).
+</p>
+<p class="normal">
+  Laisse le temps à la DNS de se mettre à jour (24 à 48h), et le tour est joué.
+</p>
+<p class="normal">
+  Pour toute question, n'hesite pas à {mailto address'info@polytechnique.org' text='envoyer un mail' encode='javascript'}
+</p>
+<div class="ssrubrique">
+  Indique le domaine que tu souhaites gérer :
+</div>
+<form action="{$smarty.server.REQUEST_URI}" method="post">
+  <table class="bicol" cellpadding="3" summary="Saisie du domaine à gérer">
+    <tr>
+      <th colspan="2">
+        Nom de domaine à gérer
+      </th>
+    </tr>
+    <tr>
+      <td class="titre">
+        Nom :
+      </td>
+      <td>
+       <input type="text" name="dnom" value="" />
+      </td>
+    </tr>
+    <tr>
+      <td colspan="2" class="center">
+       <input type="submit" name="submit" value="Envoyer" />
+      </td>
+    </tr>
+  </table>
+</form>
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/dons.tpl b/templates/dons.tpl
new file mode 100644 (file)
index 0000000..060785d
--- /dev/null
@@ -0,0 +1,30 @@
+{* $Id: dons.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+Dons au profit de l'association Polytechnique.org
+</div>
+
+<p class="normal">
+Comme tu le sais sans doute, le site Polytechnique.org est géré par 
+l'<a href="http://x-org.polytechnique.org/">association</a> loi 1901 du même
+nom. Le travail effectué sur le site est entièrement bénévole et les outils
+que nous utilisons sont des <a href="http://www.fsf.org/philosophy/free-sw.fr.html">logiciels libres</a>
+donc nos frais de fonctionnement restent très modérés,
+mais ils n'en existent pas moins. Parmis ces frais on peut citer l'achat des
+différents noms de domaines du site et l'achat de matériel informatique pour
+suivre la progression rapide du nombre d'inscrits au site.
+</p>
+
+<p class="normal">
+Nous mettons à ta disposition les informations concernant nos comptes <a
+href="trezo/">ici</a>.
+</p>
+
+<p class="normal">
+Si tu le souhaites, tu peux nous aider à maintenir et à développer la qualité
+de nos services à la communauté polytechnicienne en <a href="paiement/?ref=0">effectuant un don</a>
+du montant de ton choix à l'association.
+Nous te remercions par avance de ta générosité!
+</p>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/epouse.tpl b/templates/epouse.tpl
new file mode 100644 (file)
index 0000000..e23dae4
--- /dev/null
@@ -0,0 +1,71 @@
+{* $Id: epouse.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+  Nom de mariage
+</div>
+
+{if $not_femme}
+
+<p class="erreur">
+  Tu n'es pas autorisé à avoir accès à cette page !
+</p>
+
+{else}
+
+  {dynamic}
+  {if $same}
+  <p class="erreur">
+      Si ton nom de mariage est identique à ton nom à l'X, il n'est pas
+      nécessaire de le saisir ici!
+  </p>
+  {else}
+    {if $epouse_old}
+    <p class="normal">
+      Ta demande de suppression de ton nom de mariage ainsi que de tes
+      alias {$alias_old}@polytechnique.org et
+      {$alias_old}@m4x.org a bien été enregistrée. 
+    </p>
+    {/if}
+
+    {if $epouse_req}
+    <p class="normal">
+      Ta demande d'ajout de ton nom de mariage a bien été enregistrée. Sa
+      validation engendrera la création des alias
+      <strong>{$myepouse->alias}@polytechnique.org</strong> et
+      <strong>{$myepouse->alias}@m4x.org</strong>.
+    </p>
+    {/if}
+    
+    <p class="normal">
+      Tu recevras un mail dès que les changements demandés auront été effectués. 
+      Encore merci de nous faire confiance pour tes e-mails !
+    </p>
+  {/if}
+  {/dynamic}
+
+{/if}
+  
+<p class="normal">
+Afin d'être joignable à la fois sous ton nom à l'X et sous ton nom de mariage, tu peux
+saisir ici ce dernier. Il apparaîtra alors dans l'annuaire et tu disposeras
+des adresses correspondantes @m4x.org et @polytechnique.org, en plus de
+celles que tu possèdes déjà.
+</p>
+
+<br />
+
+<form action="{$smarty.server.PHP_SELF}" method="POST" name="epouse_dem">
+<table class="bicol" cellpadding="4" summary="Nom d'epouse">
+  <tr>
+    <th>Nom de mariage</th>
+  </tr>
+  <tr>
+    <td class="center"><input type="text" name="epouse" value="{$epouse_old}" /></td>
+  </tr>
+  <tr>
+    <td class="center"><input type="submit" name="submit" value="Envoyer" /></td>
+  </tr>
+</table>
+</form>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
index 932e2de..8894be2 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: form_naissance.tpl,v 1.3 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: form_naissance.tpl,v 1.4 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 <div class="rubrique">
   Date de naissance
 </div>
@@ -12,8 +12,7 @@
   à cela. Elle n'est jamais visible ou lisible.
   </p>
   <br />
-  <table class="bicol" border="0" cellpadding="4" cellspacing="0"
-    summary="Formulaire de naissance" width="60%">
+  <table class="tinybicol" cellpadding="4" cellspacing="0"  summary="Formulaire de naissance">
     <tr>
       <th colspan="2">
         Date de naissance
diff --git a/templates/groupex/index.tpl b/templates/groupex/index.tpl
new file mode 100644 (file)
index 0000000..cd5f7fb
--- /dev/null
@@ -0,0 +1,45 @@
+{* $Id: index.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+<div class="rubrique">Que sont les groupes X ?</div>
+<p class="normal">
+  Les groupes X sont des associations, formées de Polytechniciens, anciens ou élèves. Parfois, ils intègrent aussi
+  des personnes originaires d'autres grandes écoles.<br>
+  Un site est dédié aux activités associatives. Il contient en particulier une liste de tous les groupes X. Tu le
+  trouveras à l'adresse <a href="http://www.polytechnique.net/">http://www.polytechnique.net/</a>.
+</p>
+
+{include file='include/liste_domaines.tpl' nb_dom=$nbdom domaines=$domaines}
+
+<div class="rubrique">Services aux Groupes X</div>
+<p class="normal">
+  Polytechnique.org a le plaisir d'offrir plusieurs services intéressants aux groupes X.
+</p>
+<p class="normal">
+  D'abord, chaque groupe X peut avoir un nom de domaine sur le modèle nomdugroupe.polytechnique.org.
+  Sur ce domaine, nous te donnons la possibilité d'avoir un site web et des emails. Pour obtenir un domaine,
+  {mailto address="info@polytechnique.org" text="écris-nous" subject="Domaine de groupeX" encode="javascript"}.
+</p>
+<p class="normal">
+  Pour le site web, ce peut être soit une simple redirection vers un site que tu héberges
+  toi-même, soit un site complètement hébergé par nos soins. <b>Dans le premier cas</b>, il te suffit
+  de nous donner  l'adresse web de ton site, http://nomdugroupe.polytechnique.org/ devient alors
+  son &eacute;quivalent. Il faut donc avoir un hébergeur de site web comme il en existe de nombreux gratuits
+  (comme <a href="http://www.free.fr/">free.fr</a> ou <a href="http://www.freesurf.fr/">freesurf.fr</a>...)
+  <b>Dans le second cas</b>, l'hébergement se fait grâce à notre logiciel Diogenes. Plusieurs groupes ont déjà
+  opté pour cette solution, comme tu pourras le constater à l'adresse suivante :
+  <a href="http://diogenes.polytechnique.org/">http://diogenes.polytechnique.org/</a>.
+</p>
+<p class="normal">
+  Pour les emails, tu pourras mettre en place tous les adresses souhaitées dans le domaine
+  nomdugroupe.polytechnique.org, comme par exemple membres@nomdugroupe.polytechnique.org ou
+  bureau@nomdugroupe.polytechnique.org. Ces alias peuvent être redirigés vers une liste de diffusion
+  déjà existante sur polytechnique.org, vers des utilisateurs de polytechnique.org, mais aussi
+  vers des personnes extérieures (non Polytechniciens par exemple).
+</p>
+<p class="normal">
+  Dans tous les cas, pour la mise en place du domaine de ton groupe X ou pour des
+  questions sur les services aux groupes X,
+  {mailto address="info@polytechnique.org" text="écris-nous" subject="Domaine de groupeX" encode="javascript"}.
+</p>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/include/liste_domaines.tpl b/templates/include/liste_domaines.tpl
new file mode 100644 (file)
index 0000000..b9e5881
--- /dev/null
@@ -0,0 +1,27 @@
+{* $Id: liste_domaines.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+{dynamic}
+{$result}
+
+{if $nb_dom}
+<div class="rubrique">
+Administrer le routage email sur ton(tes) domaine(s)
+</div>
+
+<p class="normal">
+  Voici le(s) domaine(s) dont tu es administrateur.
+  Pour administrer un domaine, il te suffit à l'heure actuelle de cliquer sur son nom.
+  Cependant, prends bien note que cette administration se fera bientôt depuis le site www.polytechnique.net.
+</p>
+
+<p style="text-align: right;">
+{foreach item=dom from=$domaines}
+  <a href="{"domaine.php?domaine=$dom"|escape:"url"|url}">{$dom}</a>
+  <br />
+{/foreach}
+</p>
+{/if}
+
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
index 8353f23..6aba0e5 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: password_prompt.tpl,v 1.9 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: password_prompt.tpl,v 1.10 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 <noscript>
   <span class="erreur">
     Ton navigateur n'accepte pas le javaScript !!
@@ -68,7 +68,7 @@ Si tu n'es pas {insert name="getName" script="insert.password.inc.php"}, change
         <img src="{"images/pi.png"|url}" alt=" [ ? ] " />
         <a href="{"recovery.php"|url}">J'ai perdu mon mot de passe</a>
       </td>
-      <td align=right>
+      <td style="text-align:right;">
         <input type="submit" name="submitbtn" value="Envoyer" />
       </td>
     </tr>
index df344e3..0f31147 100644 (file)
@@ -1,7 +1,7 @@
-{* $Id: password_prompt_logged.tpl,v 1.7 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: password_prompt_logged.tpl,v 1.8 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 
 <div class="center">
-  <table width="90%" summary="Accès sécurisé">
+  <table summary="Accès sécurisé" style="width: 90%;">
     <tr>
       <td>
         <img src="{"images/cadenas_rouge.png"|url}" alt=" [ CADENAS ROUGE ] ">
@@ -33,7 +33,7 @@
         <img src="{"images/pi.png"|url}" alt=" [ ? ] ">
         <a href="{"recovery.php"|url}">J'ai perdu mon mot de passe</a>
       </td>
-      <td style="text-align:right">
+      <td style="text-align:right;">
         <input  type="submit" name="submitbtn" value="Envoyer" />
       </td>
     </tr>
diff --git a/templates/pattecassee.tpl b/templates/pattecassee.tpl
new file mode 100644 (file)
index 0000000..5efe1b1
--- /dev/null
@@ -0,0 +1,76 @@
+{* $Id: pattecassee.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+{dynamic on="0$erreur"}
+<p class="erreur">{$erreur}</p>
+{/dynamic}
+
+<div class="rubrique">
+  Vérifier une patte cassée
+</div>
+
+{dynamic}
+{if $x && $x.nb_emails}
+  <p class="erreur">
+    Ton correspondant a à l'heure actuelle {$x.nb_emails} adresse(s) email(s) de redirection active(s)
+    en dehors de celle que tu nous as communiquée. Cela ne veut pas forcément dire qu'il les avait
+    déjà activées lorsque tu as envoyé ton email, mais c'est fort probable.
+  </p>
+  <p class="erreur">
+    Nous pensons qu'il serait une bonne idée de le prévenir que cette adresse email ne fonctionne plus.
+    Si tu veux que nous lui envoyions un mail automatique de ta part pour le prévenir,
+    <a href="{$smarty.server.PHP_SELF}?email={$email}&amp;action=mail">clique sur ce lien</a>.
+  </p>
+{elseif $x}
+  <p class="erreur">
+    Désolé, mais ton correspondant, {$x.prenom} {$x.nom} (X{$x.promo}),
+    n'a actuellement aucune adresse email de redirection active autre que celle que tu viens de rentrer.
+    Nous t'invitons à prendre contact avec lui autrement que par email,
+    l'idéal étant de l'informer si possible que sa patte Polytechnique.org est cassée...!
+  </p>
+{else}
+<p class="erreur">
+  Désolé mais plus personne n'utilise l'adresse {$email} comme adresse de redirection.
+  Nous ne pouvons donc malheureusement te fournir aucune information...
+</p>
+{/if}
+{/dynamic}
+
+<p class="normal">
+  <strong>Qu'est-ce qu'une patte cassée ?</strong>
+</p>
+<p class="normal">
+    Cette page sert à <strong>analyser les messages d'erreur</strong> que tu reçois
+    lorsque tu envoies un mail à des utilisateurs de Polytechnique.org. Plus
+    précisément, si après avoir rédigé un email, tu reçois en retour un message
+    t'indiquant que l'un des destinataires n'a pas eu ton message sur l'une de
+    ses adresses de redirections, nous allons pouvoir te dire s'il a reçu ton
+    email sur une autre adresse de redirection...!
+</p>
+<p>
+    Pour plus d'explications concernant cette page, nous t'invitons à consulter
+    la <a href="{"docs/doc_patte_cassee.php"|url}">documentation suivante</a>
+</p>
+<p class="normal">
+    Rentre dans la zone de saisie ci-dessous l'adresse email à laquelle ton
+    courrier n'a pas été distribué puis valide. Nous te dirons si le
+    destinataire possède d'autres adresses de redirection grâce auxquelles il a
+    tout de même eu ton message.
+</p>
+<br />
+<div class="center">
+  <form action="{$smarty.server.PHP_SELF}" method="post">
+  <table class="bicol" cellpadding="3" summary="Saisie email en panne">
+    <tr>
+      <th colspan="2">Adresse email défectueuse</th>
+    </tr>
+    <tr>
+      <td><input type="text" name="email" size="50" maxlength="50" /></td>
+    </tr>
+    <tr>
+      <td colspan="2" class="center"><input type="submit" value="Ok" /></td>
+    </tr>
+  </table>
+  </form>
+</div>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
index d6125b7..ab3e0d8 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: preferences.tpl,v 1.4 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: preferences.tpl,v 1.5 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 <div class="rubrique">
   Préférences
 </div>
@@ -44,7 +44,7 @@
 
 <br />
 
-<table class="bicol" summary="Préférences: mdp" width="95%" cellpadding="3">
+<table class="bicol" summary="Préférences: mdp" cellpadding="3">
   <tr>
     <th>Mots de passe et accès au site</th>
   </tr>
diff --git a/templates/rss.tpl b/templates/rss.tpl
new file mode 100644 (file)
index 0000000..a1afeec
--- /dev/null
@@ -0,0 +1,24 @@
+{* $Id: rss.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN"
+ "http://my.netscape.com/publish/formats/rss-0.91.dtd">
+
+<rss version="0.91">
+
+<channel>
+<title>Polytechnique.org :: News</title>
+<link>http://{$smarty.server.SERVER_NAME}/</link>
+<description>L'actualité polytechnicienne...{if $promo} Promotion {$promo}{/if}</description>
+<language>fr</language>
+
+{foreach item=line from=$rss}
+<item>
+<title>{$line.titre|strip_tags}</title>
+<link>http://{$smarty.server.SERVER_NAME}/login.php#newsid{$line.id}</link>
+</item>
+{/foreach}
+
+</channel>
+</rss>
+{* vim:set et sw=2 sts=2 sws=2 syntax=xml: *}
diff --git a/templates/sendmail.tpl b/templates/sendmail.tpl
new file mode 100644 (file)
index 0000000..ed2c895
--- /dev/null
@@ -0,0 +1,128 @@
+{* $Id: sendmail.tpl,v 1.1 2004-02-04 19:47:47 x2000habouzit Exp $ *}
+
+{dynamic}
+
+{$error}
+
+<div class="rubrique">
+  Envoyer un mail
+</div>
+
+<ul>
+  <li>
+    Les destinataires sont simplement séparés par des espaces ou des virgules
+  </li>
+  <li>
+    Pour les destinataires en polytechnique.org, le domaine n'est pas nécessaire
+  </li>
+  <li>
+    Pense à te mettre en copie cachée du mail sinon tu n'auras aucun moyen de retrouver 
+    le mail que tu envoies par cette page
+  </li>
+</ul>
+
+<form action="{$smarty.server.REQUEST_URI}" method="POST">
+  <input type='hidden' name='signature' value='1' />
+  <table class="bicol" cellpadding="2" cellspacing="0" summary="En-têtes du message">
+    <tr> 
+      <th colspan="2">en-têtes</th>
+    </tr>
+    <tr> 
+      <td class="titre">de&nbsp;:</td>
+      <td>
+        <input type='text' name='from' size=45 value="{if $smarty.request.from}
+{$smarty.request.from|escape:"html"}
+{else}
+{"\"`$smarty.session.prenom` `$smarty.session.nom`\" <`$smarty.session.username`@polytechnique.org>"|escape:"html"}
+{/if}" />
+      </td>
+    </tr>
+    <tr> 
+      <td class="titre">à&nbsp;:</td>
+      <td>
+        <input type='text' name='to' size=45 value="{$smarty.request.to|escape:"html"}" />
+      </td>
+    </tr>
+    <tr> 
+      <td class="titre">copie&nbsp;:</td>
+      <td>
+        <input type='text' name='cc' size=45 value="{$smarty.request.cc|escape:"html"}" />
+      </td>
+    </tr>
+    <tr> 
+      <td class="titre">copie cachée&nbsp;:</td>
+      <td>
+        <input type='text' name='bcc' size=45 value="{$smarty.request.bcc|escape:"html"}" />
+      </td>
+    </tr>
+    <tr> 
+      <td class="titre">sujet&nbsp;:</td>
+      <td> 
+        <input type='text' name='sujet' size=45 value="{$smarty.request.sujet|escape:"html"}" />
+      </td>
+    </tr>
+  </table>
+
+{if $nb_contacts}
+  <ul>
+    <li>
+      <p class="normal">
+        Tu peux également ajouter certains de tes contacts aux destinataires :
+      </p>
+    </li>
+  </ul>
+
+  <table class="bicol" cellpadding="2" cellspacing="0" summary="Destinataires parmi les contacts">
+{foreach key=key item=contact from=$contacts}
+{if $key is even}
+  <tr class="{cycle values="impair,pair"}">
+{/if}
+    <td>
+      <input type="checkbox" name="contacts[{$contact.username}]" value="{"`$contact.prenom` `$contact.nom` <`$contact.username`@polytechnique.org>"|escape:"html"}"
+        {if $smarty.request.contacts && $smarty.request.contacts.username}checked="checked"{/if} />
+      <a href="javascript:x()" onclick="popWin('x.php?x={$contact.username}')">{$contact.prenom} {$contact.nom}</a> (X{$contact.promo})
+    </td>
+{if $key is odd}
+  </tr>
+{/if}
+{/foreach}
+  </table>
+{/if}
+
+  <ul>
+    <li>
+      Ne mets que du texte dans le contenu, pas de tags HTML
+    </li>
+    <li>
+      Il n'est pas possible d'envoyer un fichier en attachement
+    </li>
+  </ul>
+
+  <table class="bicol" cellspacing="0" cellpadding="2" summary="Corps du message">
+    <tr> 
+      <th>
+        contenu
+      </th>
+    </tr>
+    <tr> 
+      <td class="center">
+        <textarea name='contenu' rows="30" cols="75">
+{$smarty.request.contenu}
+{if $smarty.request.signature}
+
+-- 
+{$smarty.session.prenom} {$smarty.session.nom}
+{/if}</textarea>
+      </td>
+    </tr>
+    <tr> 
+      <td class="center"> 
+        <input type="submit" name="submit" value="Envoyer" />
+      </td>
+    </tr>
+  </table>
+</form>
+
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
index d86eebd..32374dc 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: skins.tpl,v 1.3 2004-02-02 11:48:35 x2000habouzit Exp $ *}
+{* $Id: skins.tpl,v 1.4 2004-02-04 19:47:47 x2000habouzit Exp $ *}
 
 <div class="rubrique">
   Skins Polytechnique.org
@@ -21,9 +21,10 @@ Pour toute information compl
 </p>
 
 <form action="{$smarty.server.REQUEST_URI}" method="POST">
-  <div style="text-align:center; margin: 1em;">
+  <div class="center">
     <input type="submit" value="Enregistrer" name="submit" />
   </div>
+  <br />
   <table id="skin" cellpadding="0" cellspacing="0" summary="Choix de skins">
 {dynamic}
 {foreach item=skin from=$skins}    
@@ -41,13 +42,14 @@ Pour toute information compl
         Utilisée par <strong>{$skin.nb}</strong> inscrit{if $skin.nb>1}s{/if}
       </td>
       <td class="skidroite">
-        <img src="images/{$skin.snapshot}" width=171 height=162 alt=" [ CAPTURE D'ECRAN ] ">
+        <img src="images/{$skin.snapshot}" style="width:171px; height:162px;" alt=" [ CAPTURE D'ECRAN ] ">
       </td>
     </tr>
 {/foreach}
 {/dynamic}
   </table>
-  <div style="text-align:center; margin: 1em;">
+  <br />
+  <div class="center">
     <input type="submit" value="Enregistrer" name="submit" />
   </div>
 
diff --git a/templates/stats/coupure.tpl b/templates/stats/coupure.tpl
new file mode 100644 (file)
index 0000000..544193b
--- /dev/null
@@ -0,0 +1,81 @@
+{* $Id: coupure.tpl,v 1.1 2004-02-04 19:47:48 x2000habouzit Exp $ *}
+
+{dynamic}
+
+{if $cp}
+
+<table class="bicol" summary="Ruptures de service">
+  <tr>
+    <th colspan="2">détails de l'interruption de service<th>
+  </tr>
+  <tr>
+    <td class="titre">début</td>
+    <td>{$cp.debut|date_forma:"%d/%m/%Y, %Hh%M"}</td>
+  </tr>
+  <tr>
+    <td class="titre">durée</td>
+    <td>{$cp.duree}</td>
+  </tr>
+  <tr>
+    <td class="titre">résumé</td>
+    <td>{$cp.resume}</td>
+  </tr>
+  <tr>
+    <td class="titre">services</td>
+    <td>
+    {insert name="serv_to_str" arg=$cp.services script="insert.pattecassee.inc.php"}
+    </td>
+  </tr>
+  <tr>
+    <td class="titre">description </td>
+    <td>{$cp.description}</td>
+  </tr>
+</table>
+
+<p class="center">
+<a href="{$smarty.server.PHP_SELF}">retour à la liste</a>
+</p>
+
+{else}
+
+<p class="normal">
+  Tu trouveras ici les interruptions de service de Polytechnique.org qui ont été
+  constatées <b>durant les trois dernières semaines</b>, ou qui sont prévues dans le futur.
+  Il est à noter qu'à ce jour la quasi-totalité des coupures proviennent 
+  de défaillances du réseau de l'Ecole, où nos serveurs sont hébergés (rupture de la
+  connexion internet de l'Ecole, problème électrique, etc...).
+</p>
+<p class="normal">
+  Pour avoir les détails d'une interruption particulière il te suffit de cliquer dessus.
+</p>
+
+<table class="bicol" align="center" summary="Détail de la coupure">
+  <tr>
+    <th>date</th>
+    <th>résumé</th>
+    <th>services affectés</th>
+  </tr>
+{foreach item=cp from=$coupures}
+  <tr class="{cycle values="pair,impair"}">
+    <td>
+      <span class="smaller">
+        {$cp.debut|date_format:"%d/%m/%Y"}
+      </span>
+    </td>
+    <td>
+      <span class="smaller">
+        <a href="{$smarty.server.PHP_SELF}?cp_id={$cp.id}">{$cp.resume}</a>
+      </span>
+    </td>
+    <td>
+      <span class="smaller">
+        {$cp.services}
+      </span>
+    </td>
+  </tr>
+{/foreach}
+</table>
+
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}
index 9406d24..9d3fc22 100644 (file)
@@ -1,4 +1,4 @@
-{* $Id: nb_by_promo.tpl,v 1.1 2004-01-27 21:17:43 x2000habouzit Exp $ *}
+{* $Id: nb_by_promo.tpl,v 1.2 2004-02-04 19:47:48 x2000habouzit Exp $ *}
 
 <div class="rubrique">
   Inscrits par promo
@@ -8,23 +8,29 @@
 Voici le nombre d'inscrits par promo :
 </p>
 
-{dynamic}
 <table class="bicol" cellpadding="3" cellspacing="0" summary="Statistiques">
   <tr>
     <th></th>
     <th>0</th><th>1</th><th>2</th><th>3</th><th>4</th>
     <th>5</th><th>6</th><th>7</th><th>8</th><th>9</th>
   </tr>
+{dynamic}
   {foreach item=nb10 key=lustre from=$nbs}
   <tr>
     <th>{$lustre}-</th>
     {foreach item=nb from=$nb10}
-    <td class="center">{$nb|default:"-"}</td>
+    <td class="center">
+      {if $nb}
+      <a href="{"stats/stats_promo.php?promo=`$nb.promo`"|url}">{$nb.nb}</a>
+      {else}
+      -
+      {/if}
+    </td>
     {/foreach}
   </tr>
   {/foreach}
-</table>
 {/dynamic}
+</table>
 
 <div class="rubrique">
   Inscrits par promo en (%)
diff --git a/templates/stats/parselog.tpl b/templates/stats/parselog.tpl
new file mode 100644 (file)
index 0000000..e807525
--- /dev/null
@@ -0,0 +1,14 @@
+{* $Id: parselog.tpl,v 1.1 2004-02-04 19:47:48 x2000habouzit Exp $ *}
+
+<div class="rubrique">
+  Logs de polytechnique.org
+</div>
+
+<p class="normal">
+{dynamic}
+{fetch file="/home/web/public/lastParselog" assign=bob}
+{$bob|replace:" ":"&nbsp;"|nl2br}
+{/dynamic}
+</p>
+
+{* vim:set et sw=2 sts=2 sws=2: *}
diff --git a/templates/stats/stats_promo.tpl b/templates/stats/stats_promo.tpl
new file mode 100644 (file)
index 0000000..b3ae2a8
--- /dev/null
@@ -0,0 +1,17 @@
+{* $Id: stats_promo.tpl,v 1.1 2004-02-04 19:47:48 x2000habouzit Exp $ *}
+
+{dynamic}
+<div class="rubrique">
+  Statistiques de la promotion {$promo}
+</div>
+
+<div class="ssrubrique">
+  Nombre d'inscrits de la promotion {$promo}
+</div>
+
+<div class="center">
+  <img src="{"stats/graph_promo.php?promo=$promo"|url}" alt=" [ INSCRITS ] " width="640" height="480">
+</div>
+{/dynamic}
+
+{* vim:set et sw=2 sts=2 sws=2: *}