From a949118520c65acf63f5141dd3b9098c52ef6477 Mon Sep 17 00:00:00 2001 From: x2000habouzit Date: Mon, 26 Jan 2004 22:29:01 +0000 Subject: [PATCH] =?utf8?q?alias,=20ATTENTION,=20les=20classes=20valid=5F*?= =?utf8?q?=20sont=20=E0=20r=E9crire=20en=20partie=20cvs=20add=20alias.php?= =?utf8?q?=20templates/alias.tplcvs=20add=20alias.php=20templates/alias.tp?= =?utf8?q?lcvs=20add=20alias.php=20templates/alias.tpl,=20ne=20pas=20les?= =?utf8?q?=20utiliser=20telles=20quelles=20pour=20le=20moment=20(il=20faut?= =?utf8?q?=20r=E9crire=20leurs=20::echo*)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- htdocs/alias.php | 60 ++++++++++ htdocs/css/default.css | 23 ++-- include/valid_aliases.inc.php | 126 ++++++++++++++++++++ include/valid_emploi.inc.php | 130 ++++++++++++++++++++ include/valid_epouses.inc.php | 157 ++++++++++++++++++++++++ include/valid_evts.inc.php | 166 ++++++++++++++++++++++++++ include/valid_ml.inc.php | 264 +++++++++++++++++++++++++++++++++++++++++ include/valid_photos.inc.php | 149 +++++++++++++++++++++++ include/valid_sondages.inc.php | 165 ++++++++++++++++++++++++++ include/validations.inc.php | 171 ++++++++++++++++++++++++++ include/xorg.page.inc.php | 3 +- templates/alias.tpl | 72 +++++++++++ 12 files changed, 1474 insertions(+), 12 deletions(-) create mode 100644 htdocs/alias.php create mode 100644 include/valid_aliases.inc.php create mode 100644 include/valid_emploi.inc.php create mode 100644 include/valid_epouses.inc.php create mode 100644 include/valid_evts.inc.php create mode 100644 include/valid_ml.inc.php create mode 100644 include/valid_photos.inc.php create mode 100644 include/valid_sondages.inc.php create mode 100644 include/validations.inc.php create mode 100644 templates/alias.tpl diff --git a/htdocs/alias.php b/htdocs/alias.php new file mode 100644 index 0000000..9d08802 --- /dev/null +++ b/htdocs/alias.php @@ -0,0 +1,60 @@ +assign('r_alias', $alias); + $page->assign('r_raison', $raison); + + //Quelques vérifications sur l'alias (caractères spéciaux) + if (!preg_match( "/^[a-zA-Z0-9\-.]{3,20}$/", $alias)) { + $page->assign('error', "L'adresse demandée n'est pas valide. + Vérifie qu'elle comporte entre 3 et 20 caractères + et qu'elle ne contient que des lettres non accentuées, + des chiffres ou les caractères - et ."); + $page->display('error'); + } else { + //vérifier que l'alias n'est pas déja pris + $result = mysql_query("SELECT 1 FROM groupex.aliases WHERE id=12 AND domain LIKE '$alias@melix.net'"); + if (mysql_num_rows($result)>0) { + $page->assign('error', "L'alias $alias@melix.net a déja été attribué. + Tu ne peux donc pas l'obtenir."); + $page->display('error'); + } + + //vérifier que l'alias n'est pas déja en demande + $it = new ValidateIterator (); + while($req = $it->next()) { + if ($req->type == "alias" and $req->alias == $alias) { + $page->assign('error', "L'alias $alias@melix.net a déja été demandé. + Tu ne peux donc pas l'obtenir pour l'instant."); + $page->display('error'); + } + } + + //Insertion de la demande dans la base, écrase les requêtes précédente + $myalias = new AliasReq($_SESSION['uid'], $alias, $raison); + $myalias->submit(); + $page->assign('success',$alias); + $page->display('succes'); + } +} else { + $page->assign('demande', AliasReq::get_unique_request($_SESSION['uid'])); + + //Récupération des alias éventuellement existants + $sql = "SELECT domain from groupex.aliases WHERE id=12 AND email like '".$_SESSION['username']."'"; + if($result = mysql_query($sql)) { + list($aliases) = mysql_fetch_row($result); + mysql_free_result($result); + $page->assign('actuel',$aliases); + } + $page->display(); +} + +?> diff --git a/htdocs/css/default.css b/htdocs/css/default.css index b50ce5a..dc23a70 100644 --- a/htdocs/css/default.css +++ b/htdocs/css/default.css @@ -61,29 +61,30 @@ table.bicol { width: 98%; margin-left: 1%; } -table.bicol tr.impair {} -table.bicol tr.pair { +table.tinybicol { + background-color: #eeeeee; + color: inherit; + border: 1px solid #336699; + border-collapse: collapse; + width: 70%; + margin-left: 15%; +} +table.tinybicol tr.impair, table.bicol tr.impair {} +table.tinybicol tr.pair, table.bicol tr.pair { background-color: #eeeed0; color: inherit; } -table.bicol th { +table.tinybicol th, table.bicol th { background-color: #336699; color: #FFFFFF; font-weight: bold; text-align: center; vertical-align: middle; } -table.bicol td { +table.tinybicol td, table.bicol td { color: #000000; background-color: inherit; } -table.bicolrech td {font-weight: bold;} -table.bicol td.bicoltitre,span.bicoltitre { - color: #000000; - background-color: inherit; - font-weight: bold; -} -table.bicol td.bouton { text-align: right; } /******************************************* * CHOIX SKINS * diff --git a/include/valid_aliases.inc.php b/include/valid_aliases.inc.php new file mode 100644 index 0000000..d82a8c3 --- /dev/null +++ b/include/valid_aliases.inc.php @@ -0,0 +1,126 @@ +Validate($_uid, true, 'alias', $_stamp); + $this->alias = $_alias; + $this->raison = $_raison; + + $sql = mysql_query("SELECT username,prenom,nom,domain FROM auth_user_md5 as u " + . "LEFT JOIN groupex.aliases as a ON (a.email = u.username and a.id = 12) " + . "WHERE user_id='".$this->uid."'"); + list($this->username,$this->prenom,$this->nom,$this->old) = mysql_fetch_row($sql); + mysql_free_result($sql); + } + + function get_unique_request($uid) { + return parent::get_unique_request($uid,'alias'); + } + + function echo_formu() { + require_once("popwin.inc.php"); +?> +
+ + + + + + + + + + + + + + + + + + + + +
Demandeur : + prenom." ".$this->nom;?> + old)) echo "({$this->old})";?> +
Nouvel alias :alias;?>@melix.net
Motif : + raison);?> +
+ +

+ +
+

Raison du refus:

+ +
+
+alias."@melix.net"; + $mxorg = $this->alias."@melix.org"; + + $mymail = new mailer('Equipe Polytechnique.org ', + $this->username."@polytechnique.org", + "[Polytechnique.org/MELIX] Demande de l'alias $mxnet par ".$this->username, + false, "validation+melix@m4x.org"); + + $message = + "Cher(e) camarade,\n". + "\n"; + + if($_REQUEST['submit']=="Accepter") { + $this->commit(); + $message .= + " Les adresses e-mail $mxnet et $mxorg que tu avais demandées viennent". + " d'être créées, tu peux désormais les utiliser à ta convenance.\n"; + } else { + $message .= + "La demande que tu avais faite pour les alias $mxnet et $mxorg a été refusée.\n"; + if (!empty($_REQUEST["motif"])) + $message .= "\nLa raison de ce refus est : \n". + stripslashes($_REQUEST["motif"])."\n"; + } + + $message .= + "\n". + "Cordialement,\n". + "L'équipe X.org"; + $message = wordwrap($message,78); + $mymail->setBody($message); + $mymail->send(); + echo "
Mail envoyé"; + //Suppression de la demande + $this->clean(); + } + + function commit () { + global $no_update_bd; + if($no_update_bd) return false; + + mysql_query("DELETE FROM groupex.aliases WHERE id=12 AND email='{$this->username}'"); + mysql_query("INSERT INTO groupex.aliases SET email='{$this->username}',domain='" + .$this->alias."@melix.net',id=12"); + } +} + +?> diff --git a/include/valid_emploi.inc.php b/include/valid_emploi.inc.php new file mode 100644 index 0000000..30e20b8 --- /dev/null +++ b/include/valid_emploi.inc.php @@ -0,0 +1,130 @@ +Validate(0, false, 'emploi', $_stamp); + $this->entreprise = $_entreprise; + $this->titre = $_titre; + $this->mail = $_mail; + $this->text = wordwrap($_text,78); + } + + function get_unique_request($uid) { + return false; // non unique + } + + function echo_formu() { +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ Offre d'emploi +
+ Demandeur + + entreprise). + " (".htmlentities($this->mail).")";?> +
+ Titre du post + + titre);?> +
+
text;?>
+
+ + +
+
+', + $this->mail, + "[Polytechnique.org/EMPLOI] Annonce emploi : ".$this->entreprise, + false, "validation+recrutement@m4x.org"); + + $message = + "Bonjour,\n". + "\n"; + + if($_REQUEST['submit']=="Accepter") { + require("nntp.inc.php"); + require("poster.inc.php"); + $post = new poster( + "Annonces recrutement ", + "xorg.pa.emploi", + "[OFFRE PUBLIQUE] {$this->entreprise} : {$this->titre}"); +# Ca c'est pour faire les tests (xorg.test) +# $post = new poster( +# "Tests annonces recrutement ", +# "xorg.test", +# "[TEST PUBLIC] {$this->entreprise} : {$this->titre}"); + $post->setbody($this->text + ."\n\n\n" + ."#############################################################################\n" + ." Ce forum n'est pas accessible à l'entreprise qui a proposé cette annonce.\n" + ." Pour y répondre, utilise les coordonnées mentionnées dans l'annonce\n" + ." elle-même.\n" + ."#############################################################################\n" + ); + $post->post(); + $message .= + " L'annonce << {$this->titre} >> ". + "a été acceptée par les modérateurs. Elle apparaîtra ". + "dans le forum emploi du site\n\n". + "Nous vous remercions d'avoir proposé cette annonce."; + } else { + $message .= + " L'annonce << {$this->titre} >> ". + "a été refusée par les modérateurs.\n\n"; + } + + $message .= + "\n". + "Cordialement,\n". + "L'équipe X.org"; + $message = wordwrap($message,78); + $mymail->setBody($message); + $mymail->send(); + $this->clean(); + } + } + + function commit() { + } +} + +?> diff --git a/include/valid_epouses.inc.php b/include/valid_epouses.inc.php new file mode 100644 index 0000000..85a77e7 --- /dev/null +++ b/include/valid_epouses.inc.php @@ -0,0 +1,157 @@ +Validate($_uid, true, 'epouse', $_stamp); + $this->epouse = $_epouse; + $this->username = $_username; + + list($prenom) = explode('.',$_username); + $this->alias = make_username($prenom,$this->epouse); + if(empty($_epouse)) + $this->alias = "suppression"; + + $sql = mysql_query("select u1.alias, u1.epouse, u1.prenom, u1.nom" + .", IFNULL(u2.username,u3.username)" + ." FROM auth_user_md5 as u1" + ." LEFT JOIN auth_user_md5 as u2" + ." ON(u2.username = '{$this->alias}' and u2.user_id != u1.user_id)" + ." LEFT JOIN auth_user_md5 as u3" + ." ON(u3.alias = '{$this->alias}' and u3.user_id != u1.user_id)" + ." WHERE u1.user_id = ".$this->uid); + list($this->oldalias, $this->oldepouse, $this->prenom, $this->nom, $this->homonyme) = mysql_fetch_row($sql); + mysql_free_result($sql); + } + + function get_unique_request($uid) { + return parent::get_unique_request($uid,'epouse'); + } + + function echo_formu() { + require_once("popwin.inc.php"); +?> +
+ + + + + + + + + + + + + + + + +homonyme)) { +?> + + + + + + + + +
Demandeur : + prenom." ".$this->nom;?> + + oldepouse) echo "({$this->oldepouse} - {$this->oldalias})";?> +
Épouse :epouse;?>
Nouvel alias :alias;?>
+ Probleme d'homonymie ! + + homonyme;?> + + +
+ +

+ +
+

Raison du refus:

+ +
+
+oldepouse) { + $message .= + " Les alias {$this->oldalias}@polytechnique.org et ". + "{$this->oldalias}@m4x.org ont été supprimés.\n\n"; + } + + if ($this->epouse) { + $message .= + " De plus, les alias ".$this->alias."@polytechnique.org et ". + $this->alias."@m4x.org ont été créés.\n\n"; + } + $this->commit(); + } else { // c'était donc Refuser + $message .= + "La demande de changement de nom de mariage que tu avais faite a été refusée.\n"; + if ($_REQUEST["motif"] != "" ) + $message .= "\nLa raison de ce refus est : \n". + stripslashes($_REQUEST["motif"])."\n\n"; + } + + $message .= + "Cordialement,\n". + "L'équipe X.org"; + + $message = wordwrap($message,78); + require_once("mailer.inc.php"); + $mymail = new mailer('Equipe Polytechnique.org ', + $this->username."@polytechnique.org", + "[Polytechnique.org/EPOUSE] Changement de nom de mariage de ".$this->username, + false, "validation+epouse@m4x.org"); + $mymail->setBody($message); + $mymail->send(); + + echo "
Mail envoyé"; + $this->clean(); + } + + function commit () { + global $no_update_bd; + if($no_update_bd) return false; + + $alias = ($this->epouse ? $this->alias : ""); + mysql_query("UPDATE auth_user_md5 set epouse='".$this->epouse."',epouse_soundex='".soundex_fr($this->epouse)."',alias='".$this->alias."' WHERE user_id=".$this->uid); + } +} + +?> diff --git a/include/valid_evts.inc.php b/include/valid_evts.inc.php new file mode 100644 index 0000000..e8d7d64 --- /dev/null +++ b/include/valid_evts.inc.php @@ -0,0 +1,166 @@ +Validate($_uid, false, 'evts', $_stamp); + $this->evtid = $_evtid; + $this->titre = $_titre; + $this->texte = $_texte; + $this->pmin = $_pmin; + $this->pmax = $_pmax; + $this->peremption = $_peremption; + $this->comment = $_comment; + $req = mysql_query("SELECT username,promo,nom,prenom FROM " + ."auth_user_md5 WHERE user_id='$_uid'"); + list($this->username,$this->promo,$this->nom,$this->prenom) + = mysql_fetch_row($req); + mysql_free_result($req); + } + + function get_unique_request($uid) { + return false; //non unique + } + + function echo_formu() { + require("popwin.inc.php"); +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Événement +
+ Posté par username}')\">" + ."{$this->prenom} {$this->nom} (X{$this->promo}) " + ."[username}@polytechnique.org\">lui " + ."écrire]"; ?> +
+ Titre + + titre; ?> +
+ Texte + + texte; ?> +
+ Péremption + + peremption ?> +
+ Promos + + pmin; ?> - pmax; ?> +
+ Commentaire + + comment; ?> +
+ + + +
+
+', + $this->username."@polytechnique.org", + "[Polytechnique.org/EVENEMENTS] Proposition d'événement", + false, "validation+evts@m4x.org"); + + $message = "Cher(e) camarade,\n\n"; + + if($_REQUEST['action']=="Valider") { + $req="UPDATE evenements SET creation_date = " + ."creation_date, validation_user_id =".$_SESSION['uid'] + .", validation_date = NULL, flags = CONCAT(flags," + ."',valide') WHERE id='{$this->evtid}' LIMIT 1"; + $result = mysql_query ($req); + $message .= "L'annonce que tu avais proposée (" + .strip_tags($this->titre).") vient d'être validée."; + } + if($_REQUEST['action']=="Invalider") { + $req="UPDATE evenements SET creation_date = " + ."creation_date, validation_user_id =".$_SESSION['uid'] + .", validation_date = NULL, flags = REPLACE(flags," + ."'valide','') WHERE id='{$this->evtid}' LIMIT 1"; + $result = mysql_query ($req); + $message .= "L'annonce que tu avais proposée (" + .strip_tags($this->titre).") a été refusée."; + } + if($_REQUEST['action']=="Supprimer") { + $req="DELETE from evenements WHERE id='{$this->evtid}'" + ." LIMIT 1"; + $result = mysql_query ($req); + } + $message .= + "\n". + "Cordialement,\n". + "L'équipe X.org"; + $message = wordwrap($message,78); + $mymail->setBody($message); + if ($_POST['action']!="Supprimer") + $mymail->send(); + $this->clean(); + } + } + + function commit() { + } +} + +?> diff --git a/include/valid_ml.inc.php b/include/valid_ml.inc.php new file mode 100644 index 0000000..fd3c4e2 --- /dev/null +++ b/include/valid_ml.inc.php @@ -0,0 +1,264 @@ +Validate($_uid, false, 'ml', $_stamp); + $this->alias = $_alias; + $this->topic = $_topic; + $this->publique = $_publique; + $this->libre = $_libre; + $this->archive = $_archive; + $this->freeins = $_freeins; + $this->comment = $_comment; + $this->moderos = $_moderos; + $this->membres = $_membres; + + $sql = mysql_query("SELECT username,prenom,nom FROM auth_user_md5 WHERE user_id=".$this->uid); + list($this->username,$this->prenom,$this->nom) = mysql_fetch_row($sql); + mysql_free_result($sql); + } + + function get_unique_request($uid) { + return false; // ben oui, c pas un objet unique !!! + } + + function echo_formu() { + require_once("popwin.inc.php"); +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Demandeur : + prenom." ".$this->nom;?> + +
Motif :comment);?> +
+ Alias : + + @polytechnique.org +
Topic : +
Propriétés : + publique?"checked=\"checked\"":"") + ?>/>Publique + libre?"checked=\"checked\"":"") + ?>/>Libre + freeins?"checked=\"checked\"":"") + ?>/>Freeins + archive?"checked=\"checked\"":"") + ?>/>Archive +
+ Modéros : + +moderos})" + ." ORDER BY nom, prenom"); + $tab = array(); + while(list($username) = mysql_fetch_row($sql)) + $tab[] = $username; + echo implode(', ', $tab); + mysql_free_result($sql); +?> +
Membres :membres})" + ." ORDER BY nom, prenom"); + $tab = array(); + while(list($username) = mysql_fetch_row($sql)) + $tab[] = $username; + echo implode(', ', $tab); + mysql_free_result($sql); + ?> +
+ +

+ +
+

Explication complémentaire (refus ou changement de config, ...)

+ +
+
+alias = $_REQUEST['alias']; + $this->topic = $_REQUEST['topic']; + $this->publique = isset($_REQUEST['publique']) && $_REQUEST['publique']; + $this->libre = isset($_REQUEST['libre']) && $_REQUEST['libre']; + $this->archive = isset($_REQUEST['archive']) && $_REQUEST['archive']; + $this->freeins = isset($_REQUEST['freeins']) && $_REQUEST['freeins']; + + $this->clean(); + $this->submit(); + + require_once("mailer.inc.php"); + + $mymail = new mailer('Equipe Polytechnique.org ', + $this->username."@polytechnique.org", + "[Polytechnique.org/LISTES] Demande de la liste {$this->alias} par ".$this->username, + false, "validation+listes@m4x.org"); + + $message = + "Cher(e) camarade,\n". + "\n"; + + if($_REQUEST['submit']=="Accepter") { + if($this->commit()) { + $message .= + " La mailing list {$this->alias} que tu avais demandée vient". + " d'être créée\n"; + if (!empty($_REQUEST["motif"])) + $message .= "\nInformations complémentaires :\n". + stripslashes($_REQUEST["motif"])."\n"; + } else { + echo "

Aucun mail envoyé, erreur !

\n"; + return false; + } + } else { + $message .= + "La demande que tu avais faite pour la mailing list ". + $this->alias." a été refusée.\n"; + if (!empty($_REQUEST["motif"])) + $message .= "\nLa raison de ce refus est : \n". + stripslashes($_REQUEST["motif"])."\n"; + $this->clean(); + } + + $message .= + "\n". + "Cordialement,\n". + "L'équipe X.org"; + $message = wordwrap($message,78); + $mymail->setBody($message); + $mymail->send(); + echo "

Mail envoyé

"; + return true; + } + + function commit () { + global $no_update_bd; + if($no_update_bd) return false; + + require_once("flagset.inc.php"); + $type = new flagset(); + if ($this->libre) $type->addflag('libre'); + if ($this->publique) $type->addflag('publique'); + if ($this->archive) $type->addflag('archive'); + if ($this->freeins) $type->addflag('freeins'); + + mysql_query("INSERT INTO listes_def SET type='".$type->value."', topic='{$this->topic}'"); + echo "

Liste {$this->alias} créée

\n"; + + if(!mysql_errno()) { + $id = mysql_insert_id(); + if ($this->archive) + mysql_query("replace into listes_ins set idl=$id, idu=0"); + mysql_query("INSERT INTO aliases (alias,type,id) VALUES". + "('{$this->alias}','liste',$id)". + ",('owner-{$this->alias}','liste-owner',$id)". + ",('sm-{$this->alias}','liste-sans-moderation',$id)". + ",('{$this->alias}-request','liste-request',$id)"); + + if (!mysql_errno()) { + echo "

Liste {$this->alias} ajoutée aux alias

\n"; + if (isset($this->moderos)) { + $tokens = explode(',',$this->moderos); + $values = array(); + foreach ($tokens as $tok) { + $values[] = "($id,$tok)"; + } + $values = implode(',', $values); + mysql_query("INSERT INTO listes_mod (idl, idu) VALUES $values"); + } + + // ajout des membres si précisés + if (isset($this->membres)) { + $tokens = explode(',',$this->membres); + $values = array(); + foreach ($tokens as $tok) { + $values[] = "($id,$tok)"; + } + $values = implode(',', $values); + mysql_query("INSERT INTO listes_ins (idl, idu) VALUES $values"); + } + + $this->clean(); + return true; + } else { // alias déjà existant ? + mysql_query("DELETE FROM aliases WHERE id='$id'"); + mysql_query("DELETE FROM listes_ins WHERE id='$id'"); + mysql_query("DELETE FROM listes_def WHERE id='$id'"); + echo "

Nom déjà utilisé (owner-{$this->alias} ou {$this->alias}-request)

\n"; + return false; + } // if mysql_errno == 0 pour insert dans aliases + } else { + echo "

Nom déjà utilisé

\n"; + return false; + } // if mysql_errno == 0 pour insert dans liste_def + + return true; + } +} + +?> diff --git a/include/valid_photos.inc.php b/include/valid_photos.inc.php new file mode 100644 index 0000000..7e2a09c --- /dev/null +++ b/include/valid_photos.inc.php @@ -0,0 +1,149 @@ +Validate($_uid, true, 'photo', $_stamp); + $sql = mysql_query("SELECT username, prenom, nom FROM auth_user_md5 WHERE user_id=".$this->uid); + list($this->username,$this->prenom,$this->nom) = mysql_fetch_row($sql); + mysql_free_result($sql); + + if(!file_exists($_file)) { + $erreur = "Fichier inexistant"; + return false; + } + // calcul de la taille de l'image + $image_infos = getimagesize($_file); + if(empty($image_infos)) { + $erreur = "Image invalide"; + return false; + } + list($this->x, $this->y, $this->mimetype) = $image_infos; + // récupération du type de l'image + switch($this->mimetype) { + case 1: $this->mimetype = "gif"; break; + case 2: $this->mimetype = "jpeg"; break; + case 3: $this->mimetype = "png"; break; + default: $erreur = "Type d'image invalide"; return false; + } + // lecture du fichier + if(!($size = filesize($_file)) or $size > SIZE_MAX) { + $erreur = "Image trop grande (max 30ko)"; + return false; + } + $fd = fopen($_file, 'r'); + if (!$fd) return false; + $this->data = fread($fd, SIZE_MAX); + fclose($fd); + + unset($erreur); + } + + function get_unique_request($uid) { + return parent::get_unique_request($uid,'photo'); + } + + function echo_formu() { + require_once("popwin.inc.php"); +?> +
+ + + + + + + + + + + + + + + +
Demandeur : + prenom." ".$this->nom;?> + +
+ " width=110 alt=" [ PHOTO ] " /> + " width=110 alt=" [ PHOTO ] " /> +
+ +

+ +
+

Raison du refus:

+ +
+
+uid); + list($old) = mysql_fetch_row($sql); + mysql_free_result($sql); + + $message .= + " La demande de changement de photo que tu as " + ."demandée vient d'être effectuée.\n\n"; + + $this->commit(); + } else { // c'était donc Refuser + $message .= + "La demande de changement de photo que tu avais faite a été refusée.\n"; + if ($_REQUEST["motif"] != "" ) + $message .= "\nLa raison de ce refus est : \n". + stripslashes($_REQUEST["motif"])."\n\n"; + } + + $message .= + "Cordialement,\n". + "L'équipe X.org"; + + $message = wordwrap($message,78); + require_once("mailer.inc.php"); + $mymail = new mailer('Equipe Polytechnique.org ', + $this->username."@polytechnique.org", + "[Polytechnique.org/PHOTO] Changement de photo de ".$this->username, + false, "validation+trombino@m4x.org"); + $mymail->setBody($message); + $mymail->send(); + + echo "
Mail envoyé"; + $this->clean(); + } + + function commit () { + global $no_update_bd; + if($no_update_bd) return false; + + mysql_query("REPLACE INTO photo set uid='".$this->uid."', attachmime = '".$this->mimetype."', attach='" + .addslashes($this->data)."', x='".$this->x."', y='".$this->y."'"); + } +} + +?> diff --git a/include/valid_sondages.inc.php b/include/valid_sondages.inc.php new file mode 100644 index 0000000..03dd978 --- /dev/null +++ b/include/valid_sondages.inc.php @@ -0,0 +1,165 @@ +Validate($_uid, false, 'sondage', $_stamp); + $this->sid = $_sid; + + $sql = mysql_query("SELECT username,prenom,nom FROM auth_user_md5 " + . "WHERE user_id='".$this->uid."'"); + list($this->username,$this->prenom,$this->nom) = mysql_fetch_row($sql); + mysql_free_result($sql); + $sql = mysql_query("SELECT titre FROM sondage.description_generale " + . "WHERE ids='".$this->sid."'"); + list($this->titre) = mysql_fetch_row($sql); + mysql_free_result($sql); + $this->alias = substr($this->titre,0,min(15,strlen($this->titre))); + } + + function get_request($uid,$stamp) { + return parent::get_request($uid,'sondage',$stamp); + } + + function echo_formu() { + require_once("popwin.inc.php"); +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Demandeur : + prenom." ".$this->nom;?> + old)) echo "({$this->old})";?> +
Titre du sondage :titre;?>
Prévisualisation du sondage :'.$this->titre; + ?> +
Alias du sondage : (ne doit + pas contenir le caractère ')
+ +

+ +
+

Raison du refus:

+ +
+
+Il faut entrer un alias pour valider ce sondage."; + return false; + } + else { + if (strlen($alias)>15) { + echo "
L'alias est trop long."; + return false; + } + else if (strpos($alias,"'")) { + echo "
L'alias ne doit pas contenir le caractère '"; + return false; + } + else {//on vérifie que l'alias n'existe pas déjà + $resultat = mysql_query("select alias from sondage.description_generale ". + "where alias='$alias'"); + if (mysql_num_rows($resultat)>0) { + echo "
Cet alias est déjà utilisé."; + return false; + } + } + } + $this->alias=$alias; + } + + require_once("mailer.inc.php"); + + $lien = "$baseurl/sondage/questionnaire.php?alias=".urlencode($this->alias); + $titre = '"'.str_replace(''',"'",$this->titre).'"'; + + $mymail = new mailer('Equipe Polytechnique.org ', + $this->username."@polytechnique.org", + "[Polytechnique.org/SONDAGE] Demande de validation du sondage $titre par ".$this->username, + false, "validation+sondage@m4x.org"); + + $message = + "Cher(e) camarade,\n". + "\n"; + + if($_REQUEST['submit']=="Accepter") { + $this->commit(); + $message .= + " Le sondage $titre que tu as composé vient d'être validé.\n". + "Il ne te reste plus qu'à transmettre aux sondés l'adresse". + " où ils pourront voter. Cette adresse est : $lien.\n"; + } else { + $message .= + "Le sondage $titre que tu avais proposé a été refusé.\n"; + if (!empty($_REQUEST["motif"])) + $message .= "\nLa raison de ce refus est : \n". + stripslashes($_REQUEST["motif"])."\n"; + } + + $message .= + "\n". + "Cordialement,\n". + "L'équipe X.org"; + $message = wordwrap($message,78); + $mymail->setBody($message); + $mymail->send(); + echo "
Mail envoyé"; + //Suppression de la demande + $this->clean(); + } + + function commit () { + global $no_update_bd; + require_once("sondage.requetes.inc.php"); + if($no_update_bd) return false; + + passer_en_prod($this->sid,$this->alias); + } +} + +?> diff --git a/include/validations.inc.php b/include/validations.inc.php new file mode 100644 index 0000000..9d992f4 --- /dev/null +++ b/include/validations.inc.php @@ -0,0 +1,171 @@ +sql = mysql_query("SELECT data,stamp FROM requests ORDER BY stamp"); + } + + /** renvoie l'objet suivant, ou false */ + function next () { + if(list($result,$stamp) = mysql_fetch_row($this->sql)) { + $result = unserialize($result); + $result->stamp = $stamp; + return($result); + } else { + mysql_free_result($this->sql); + return(false); + } + } +} + +/** classe "virtuelle" à dériver pour chaque nouvelle implémentation + * XXX attention, dans l'implémentation de la classe, il ne faut jamais faire confiance au timestamp + * de l'objet qui sort du BLOB de la BD, on met donc systématiquement le champt $this->stamp depuis + * le TIMESTAMP de la BD + * Par contre, à la sortie de toute fonction il faut que le stamp soit valide !!! XXX + */ +class Validate { + /** l'uid de la personne faisant la requête */ + var $uid; + /** le time stamp de la requête */ + var $stamp; + /** indique si la donnée est unique pour un utilisateur donné */ + var $unique; + /** donne le type de l'objet (certes redonant, mais plus pratique) */ + var $type; + + /** fonction statique qui renvoie la requête dans le cas d'un objet unique de l'utilisateur d'id $uid + * @param $uid l'id de l'utilisateur concerné + * @param $type le type de la requête + * + * XXX fonction "statique" XXX + * XXX à dériver XXX + * à utiliser uniquement pour récupérer un objet
unique
+ */ + function get_unique_request($uid,$type) { + $sql = mysql_query("SELECT data,stamp FROM requests WHERE user_id='$uid' and type='$type'"); + if(list($result,$stamp) = mysql_fetch_row($sql)) { + $result = unserialize($result); + // on ne fait jamais confiance au timestamp de l'objet, + $result->stamp = $stamp; + if(!$result->unique) // on vérifie que c'est tout de même bien un objet unique + $result = false; + } else + $result = false; + + mysql_free_result($sql); + return $result; + } + + /** fonction statique qui renvoie la requête de l'utilisateur d'id $uidau timestamp $t + * @param $uid l'id de l'utilisateur concerné + * @param $type le type de la requête + * @param $stamp le timestamp de la requête + * + * XXX fonction "statique" XXX + * à utiliser uniquement pour récupérer un objet dans la BD avec Validate::get_request(...) + */ + function get_request($uid, $type, $stamp) { + $sql = mysql_query("SELECT data,stamp" + ." FROM requests" + ." WHERE user_id='$uid' and type = '$type' and stamp='$stamp'"); + if(list($result,$stamp) = mysql_fetch_row($sql)) { + $result = unserialize($result); + // on ne fait jamais confiance au timestamp de l'objet, + $result->stamp = $stamp; + } else + $result = false; + + mysql_free_result($sql); + return($result); + } + + /** constructeur + * @param $_uid user id + * @param $_unique requête pouvant être multiple ou non + * @param $_type type de la donnée comme dans le champ type de x4dat.requests + * @param $_stamp stamp de création, 0 si c'estun nouvel objet + */ + function Validate($_uid, $_unique, $_type, $_stamp=0) { + $this->uid = $_uid; + $this->stamp = $_stamp; + $this->unique = $_unique; + $this->type = $_type; + } + + /** fonction à utiliser pour envoyer les données à la modération + * cette fonction supprimme les doublons sur un couple ($user,$type) si $this->unique est vrai + */ + function submit () { + global $no_update_bd; + if($no_update_bd) return false; + mysql_query("LOCK requests"); // le lock est obligatoire pour récupérer le dernier stamp ! + + if($this->unique) + mysql_query("DELETE FROM requests WHERE user_id='".$this->uid + . "' AND type='".$this->type."'"); + + mysql_query("INSERT INTO requests SET user_id='".$this->uid."', type='".$this->type + . "', data='".addslashes(serialize($this))."'"); + + // au cas où l'objet est réutilisé après un commit, il faut mettre son stamp à jour + $sql = mysql_query("SELECT MAX(stamp) FROM requests " + . "WHERE user_id='".$this->uid."' AND type='".$this->type."'"); + list($this->stamp) = mysql_fetch_row($sql); + mysql_free_result($sql); + + mysql_query("UNLOCK requests"); + return true; + } + + /** fonction à utiliser pour nettoyer l'entrée de la requête dans la table requests + * attention, tout est supprimé si c'est un unique + */ + function clean () { + global $no_update_bd; + if($no_update_bd) return false; + return mysql_query("DELETE FROM requests WHERE user_id='".$this->uid."' AND type='".$this->type."'" + .($this->unique ? "" : " AND stamp='".$this->stamp."'")); + } + + /** doit afficher le fomulaire de validation de la donnée + * XXX la fonction est "virtuelle" XXX + * XXX doit définir les variables $uid et $stamp en hidden XXX + */ + function echo_formu() { } + /** fonction à réaliser en cas de valistion du formulaire + * XXX la fonction est "virtuelle" XXX + */ + function handle_formu () { } + /** fonction à utiliser pour insérer les données dans x4dat + * XXX la fonction est "virtuelle" XXX + */ + function commit () { } +} + +//*************************************************************************************** +// +// IMPLEMENTATIONS +// +//*************************************************************************************** + +require("valid_aliases.inc.php"); +require("valid_epouses.inc.php"); +require("valid_photos.inc.php"); +require("valid_ml.inc.php"); +require("valid_sondages.inc.php"); +require("valid_emploi.inc.php"); +require("valid_evts.inc.php"); + +?> diff --git a/include/xorg.page.inc.php b/include/xorg.page.inc.php index 25fd7ac..29ab287 100644 --- a/include/xorg.page.inc.php +++ b/include/xorg.page.inc.php @@ -6,7 +6,7 @@ function block_dynamic($param, $content, &$smarty) { return $content; } -function function_dyn($params) { return implode(' ',$params); } +function function_dyn($params) { return stripslashes(htmlentities(implode(' ',$params))); } class XorgPage extends DiogenesCorePage { var $_page_type; @@ -41,6 +41,7 @@ class XorgPage extends DiogenesCorePage { parent::display('skin/'.$_SESSION['skin_popup'], $id); else parent::display('skin/'.$_SESSION['skin'], $id); + exit; } function make_id() { diff --git a/templates/alias.tpl b/templates/alias.tpl new file mode 100644 index 0000000..d980ce4 --- /dev/null +++ b/templates/alias.tpl @@ -0,0 +1,72 @@ +{* $Id: alias.tpl,v 1.1 2004-01-26 22:29:02 x2000habouzit Exp $ *} + +{if $success} +

+ a demande de création des alias {dyn s=$success}@melix.net et + {dyn s=$success}@melix.org a bien été enregistrée. Après + vérification, tu recevras un mail te signalant l'ouverture de ces adresses. +

+

+ Encore merci de nous faire confiance pour tes e-mails ! +

+{else} +{if $error} +

{dyn s=$error}

+{/if} + +
+ Adresses e-mail personnalisées +
+ +

+ Pour plus de convivialité dans l'utilisation de tes mails, tu peux choisir une adresse + e-mail discrète et personnalisée. Ce nouvel e-mail peut par exemple correspondre à ton surnom. +

+

+ Pour de plus amples informations sur ce service, nous t'invitons à consulter + cette documentation qui répondra + sans doute à toutes tes questions +

+ +{dynamic on="0$actuel"} +

+Note : tu as déjà l'alias {$actuel}, or tu ne peux avoir qu'un seul alias à la fois. + Si tu effectues une nouvelle demande l'ancien alias sera effacé. +

+{/dynamic} + +{dynamic on="0$demande"} +

+Note : tu as déjà effectué une demande pour {$demande->alias}, dont le traitement est + en cours. Si tu souhaites modifier ceci refais une demande, sinon ce n'est pas la peine. +

+{/dynamic} + +
+
+ + + + + + + + + + + + + + + + + + + +
Demande d'alias
Alias demandé :
@melix.net et @melix.org
Brève explication :
+
+ +{/if} + +{* vim:set et sw=2 sts=2 sws=2: *} -- 2.1.4