From: x2000habouzit Date: Sun, 8 Feb 2004 12:38:25 +0000 (+0000) Subject: sondages. attention, les includes sont récupérés mais pas encore en templates cvs... X-Git-Tag: xorg/old~1886 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=b8a1baf6d0d4390a08ba8048e42316672fa73795;p=platal.git sondages. attention, les includes sont récupérés mais pas encore en templates cvs upcvs up --- diff --git a/configs/mails.conf b/configs/mails.conf index ba897ca..f13b74c 100644 --- a/configs/mails.conf +++ b/configs/mails.conf @@ -21,3 +21,8 @@ cc=Equipe Polytechnique.org [valid_evts] from=Equipe Polytechnique.org cc=Equipe Polytechnique.org + +[valid_sondages] +from=Equipe Polytechnique.org +cc=Equipe Polytechnique.org + diff --git a/include/sondage.footer.inc.php b/include/sondage.footer.inc.php new file mode 100644 index 0000000..555b1dc --- /dev/null +++ b/include/sondage.footer.inc.php @@ -0,0 +1,10 @@ + + + + diff --git a/include/sondage.header.inc.php b/include/sondage.header.inc.php new file mode 100644 index 0000000..59ff2a9 --- /dev/null +++ b/include/sondage.header.inc.php @@ -0,0 +1,52 @@ + + + + + + + + + " media="screen"> + + " media="screen"> + + + Sondage + + + + diff --git a/include/sondage.requetes.inc.php b/include/sondage.requetes.inc.php new file mode 100644 index 0000000..498a3fb --- /dev/null +++ b/include/sondage.requetes.inc.php @@ -0,0 +1,992 @@ +username; + return $res; +} + +/** renvoie la liste des modérateurs d'un sondage + * @param $SID l'id du sondage + * @return $res un tableau d'enregistrements (promo,nom,prenom) + */ +function moderateurs($SID) { + $resultat = mysql_query_p("select user_id,prenom,nom,promo,username ". + "from x4dat.auth_user_md5 as u,sondage.moderateurs as m ". + "where u.user_id=m.idu and m.ids=$SID order by promo,nom,prenom"); + $res = null; + for ($i=0;$iprenom=$donnee["prenom"]; + $nouveau->nom=$donnee["nom"]; + $nouveau->promo=$donnee["promo"]; + $nouveau->username=$donnee["username"]; + $nouveau->uid=$donnee["user_id"]; + $res[]=$nouveau; + } + return $res; +} + +/** renvoie le mail des modérateurs (tous) d'un sondage + * @param $SID l'id du sondage + * @return $res une adresse mail (chaîne) + */ +function mail_moderateurs($SID) { + $resultat=mysql_query_p("select username ". + "from x4dat.auth_user_md5 as u, sondage.moderateurs as m ". + "where m.ids=$SID and m.idu=u.user_id"); + $res = ""; + for ($i=0;$iprenom=$donnee["prenom"]; + $nouveau->nom=$donnee["nom"]; + $nouveau->promo=$donnee["promo"]; + $nouveau->username=$donnee["username"]; + $nouveau->uid=$donnee["user_id"]; + $res[]=$nouveau; + } + return $res; +} + +/** renvoie l'id d'un utilisateur dont on a l'username + * @param $adresse le nom d'utilisateur + * @return l'uid ou NULL s'il n'y a pas d'utilisateur avec cet username + */ +function recupere_uid($adresse) { + $resultat = mysql_query_p("select user_id from x4dat.auth_user_md5 ". + "where username='$adresse'"); + if (mysql_num_rows($resultat)<=0) { + erreur("Il n'y a pas d'X inscrit d'identifiant : $adresse."); + return NULL; + } + else { + $donnee=mysql_fetch_array($resultat); + return $donnee["user_id"]; + } +} + +/** ajoute un modérateur à un sondage + * @param $SID l'id du sondage + * @param $adresse l'username à ajouter + * @return rien + */ +function ajouter_moderateur($SID,$adresse) { + $UID = recupere_uid($adresse); + if (isset($UID)) + mysql_query_p("insert into sondage.moderateurs (ids,idu) values($SID,$UID)"); +} + +/** ajoute un inscrit à un sondage + * @param $SID l'id du sondage + * @param $adresse l'username à ajouter + * @return rien + */ +function ajouter_inscrit($SID,$adresse) { + $UID = recupere_uid($adresse); + if (isset($UID)) + mysql_query_p("insert into sondage.inscrits (ids,idu) values($SID,$UID)"); +} + +/** supprime un modérateur à un sondage + * @param $SID l'id du sondage + * @param $adresse l'username à supprimer + * @return rien + */ +function supprimer_moderateur($SID,$adresse) { + $resultat = mysql_query_p("select idu from sondage.moderateurs where ids=$SID"); + if (mysql_num_rows($resultat) <= 1) + erreur("Il doit y avoir au moins un modérateur pour un sondage."); + else { + $UID = recupere_uid($adresse); + if (isset($UID)) + mysql_query_p("delete from sondage.moderateurs where ids=$SID and idu=$UID"); + } +} + +/** supprime un inscrit à un sondage + * @param $SID l'id du sondage + * @param $adresse l'username à supprimer + * @return rien + */ +function supprimer_inscrit($SID,$adresse) { + $UID = recupere_uid($adresse); + if (isset($UID)) + mysql_query_p("delete from sondage.inscrits where ids=$SID and idu=$UID"); +} + +/** renvoie les titres des sondages qui sont/ne sont pas en production pour un certain utilisateur + * @param $uid l'id de l'utilisateur + * @param $prod en production ou non + * @return $res un tableau d'enregistrements (ids,titre) + */ +function sondages($prod,$uid) { + if ($prod == 1) + $not = ""; + else + $not = "!"; + $resultat=mysql_query_p("select d.ids,titre ". + "from sondage.description_generale as d,sondage.moderateurs as m ". + "where $not FIND_IN_SET('prod',d.flags) and d.ids=m.ids and m.idu=$uid"); + $res = null; + for ($i=0;$iid=$donnee["ids"]; + $nouveau->titre=$donnee["titre"]; + $res[]=$nouveau; + } + return $res; +} + +/** sondages qui sont en production pour un certain utilisateur + * @param $uid l'id de l'utilisateur + * @return un tableau d'enregistrements (ids,titre) + */ +function sondages_en_prod($uid) { + return sondages(1,$uid); +} + +/** sondages qui ne sont pas en production pour un certain utilisateur + * @param $uid l'id de l'utilisateur + * @return un tableau d'enregistrements (ids,titre) + */ +function sondages_non_en_prod($uid) { + return sondages(0,$uid); +} +/** nombre de sondages en production et en modification + * @param $uid l'id de l'utilisateur + * @return $res un enregistrement (en_prod,en_modif) + */ +function nb_sondages_prod($uid) { + $resultat = mysql_query_p("select sum(FIND_IN_SET('prod',d.flags)),count(d.flags)". + "from sondage.description_generale as d,sondage.moderateurs as m ". + "where d.ids=m.ids and m.idu=$uid"); + list($res->en_prod,$res->en_modif) = mysql_fetch_row($resultat); + $res->en_modif=$res->en_modif-$res->en_prod; + return $res; +} + +/** passer un sondage en production + * @param $SID l'id du sondage + * @return rien + */ +function passer_en_prod($SID,$alias) { + mysql_query_p("update sondage.description_generale " + . "set flags=CONCAT_WS(',',flags,'prod'), alias='$alias' where ids=$SID"); +} + +/** dit si un utilisateur a déjà voté à un sondage + * @param $SID l'id du sondage + * @param $user_id l'id de l'utilisateur + * @param $sondage informations sur le sondage (renvoyées par la fonction infos_sondage) + * @return un booléen + */ +function deja_vote($SID,$user_id,$sondage) { + $resultat = mysql_query_p("select idu from sondage.sondes where ids=$SID and idu=$user_id"); + if (mysql_num_rows($resultat) > 0 && $sondage->en_prod==1) + return 1; + else + return 0; +} + +/** renvoyer les informations générales sur un sondage + * @param $SID l'id du sondage + * @return $res un enregistrement (titre,en_tete,pied,parties,prod,tous,mail) + */ +function infos_sondage($SID) { + $resultat=mysql_query_p("select titre,en_tete,pied,mail". + ", FIND_IN_SET('prod',flags), !FIND_IN_SET('parties',flags), !FIND_IN_SET('tous',flags)". + " from sondage.description_generale where ids=$SID"); + $res = null; + if (mysql_num_rows($resultat)>0) { + list($res->titre, $res->en_tete, $res->pied, $res->mail, $res->en_prod, $res->parties, $res->tous) = mysql_fetch_row($resultat); + } + else { + require_once("header1.inc.php"); + require_once("header2.inc.php"); + erreur("Ce sondage n'existe pas."); + require("footer.inc.php"); + exit; + } + return $res; +} + +/** renvoyer l'id d'un sondage et récupérer les informations générales + * @param $alias l'alias du sondage + * @return $SID l'id du sondage + */ +function obtenir_sid($alias) { + global $sondage; + $resultat=mysql_query_p("select ids,titre,en_tete,pied,mail". + ", FIND_IN_SET('prod',flags), !FIND_IN_SET('parties',flags), !FIND_IN_SET('tous',flags)". + " from sondage.description_generale where alias='$alias'"); + if (mysql_num_rows($resultat)>0) { + list($SID,$res->titre, $res->en_tete, $res->pied, $res->mail, $res->en_prod, $res->parties, $res->tous) = mysql_fetch_row($resultat); + $sondage = $res; + } + else { + require_once("header1.inc.php"); + require_once("header2.inc.php"); + erreur("Ce sondage n'existe pas."); + require("footer.inc.php"); + exit; + } + return $SID; +} + +/** renvoyer les informations générales sur une partie + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return $res un enregistrement (idp,titre,en_tete,pied,ordre) + */ +function infos_partie($SID,$PID) { + $resultat=mysql_query_p("select idp,sous_titre,en_tete,pied,ordre ". + "from sondage.parties where ids=$SID and idp=$PID"); + $res = null; + if (mysql_num_rows($resultat)>0) { + $donnees=mysql_fetch_array($resultat); + $res->idp = $donnees["idp"]; + $res->titre=$donnees["sous_titre"]; + $res->en_tete=$donnees["en_tete"]; + $res->pied=$donnees["pied"]; + $res->ordre=$donnees["ordre"]; + } + return $res; +} + +/** renvoyer les informations générales sur une question + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @return $res un enregistrement (idq,texte,type_reponse,ordre) + */ +function infos_question($SID,$PID,$QID) { + $resultat=mysql_query_p("select idq,texte,type_reponse,ordre ". + "from sondage.questions where ids=$SID and idp=$PID and idq=$QID"); + $res = null; + if (mysql_num_rows($resultat)>0) { + $donnees=mysql_fetch_array($resultat); + $res->idq=$donnees["idq"]; + $res->texte = $donnees["texte"]; + /** champ texte, choix multiple... */ + $res->type_question = $donnees["type_reponse"]; + $res->ordre=$donnees["ordre"]; + } + return $res; +} + +/** renvoyer les informations générales sur un choix de réponse + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID l'id du choix + * @return $res un enregistrement (idr,texte,coche,ordre) + */ +function infos_reponse($SID,$PID,$QID,$RID) { + $resultat=mysql_query_p("select idr,reponse,coche,ordre ". + "from sondage.choix where ids=$SID and idp=$PID and idq=$QID and idr=$RID"); + $res = null; + if (mysql_num_rows($resultat)>0) { + $donnees=mysql_fetch_array($resultat); + $res->idr=$donnees["idr"]; + $res->texte = $donnees["reponse"]; + /** coché par défaut */ + $res->coche = $donnees["coche"]; + $res->ordre=$donnees["ordre"]; + } + return $res; +} + +/** renvoyer les informations sur les parties d'un sondage + * @param $SID l'id du sondage + * @return $res un tableau d'enregistrements (idp,titre,en_tete,pied,ordre) + */ +function infos_parties($SID) { + $resultat=mysql_query_p("select idp from sondage.parties where ids=$SID order by ordre"); + $res = null; + for ($i=0;$i0) + $reponse_texte = mysql_fetch_array($reponses_texte); + if (mysql_num_rows($reponses_choix)>0) + $reponse_choix = mysql_fetch_array($reponses_choix); + $t = 0; + $c = 0; + } + $res = null; + if (mysql_num_rows($questions)>0) + $question= mysql_fetch_array($questions); + if (mysql_num_rows($reponses)>0) + $reponse= mysql_fetch_array($reponses); + $j=0; + $k=0; + for ($i=0;$iidp = $partie["idp"]; + $res[$i]->titre=$partie["sous_titre"]; + $res[$i]->en_tete=$partie["en_tete"]; + $res[$i]->pied=$partie["pied"]; + $res[$i]->ordre=$partie["ordre"]; + $resq = null; + $l = 0; + if (mysql_num_rows($questions)>0) + while($question["idp"] == $partie["idp"] && $j<=mysql_num_rows($questions)) { + $resq[$l]->idq=$question["idq"]; + $resq[$l]->texte = $question["texte"]; + /** champ texte, choix multiple... */ + $resq[$l]->type_question = $question["type_reponse"]; + $resq[$l]->ordre=$question["ordre"]; + $resr = null; + $m = 0; + if (mysql_num_rows($reponses)>0) + while($reponse["idp"] == $partie["idp"] && $reponse["idq"] == $question["idq"] + && $k<=mysql_num_rows($reponses)) { + $resr[$m]->idr=$reponse["idr"]; + $resr[$m]->texte = $reponse["reponse"]; + /** coché par défaut */ + $resr[$m]->coche = $reponse["coche"]; + $resr[$m]->ordre=$reponse["ordre"]; + if (mysql_num_rows($reponses)>0) + $reponse= mysql_fetch_array($reponses); + $k++; + $m++; + } + $resq[$l]->reponses=$resr; + if ($en_prod == 1) { + if ($question["type_reponse"]==$QUESTION_TEXTE) { + if (mysql_num_rows($reponses_texte)>0) + while($reponse_texte["idp"] == $partie["idp"] + && $reponse_texte["idq"] == $question["idq"] + && $t<=mysql_num_rows($reponses_texte)) { + $resv[]=$reponse_texte["reponse"]; + if (mysql_num_rows($reponses_texte)>0) + $reponse_texte= mysql_fetch_array($reponses_texte); + $t++; + } + $resq[$l]->propositions = $resv; + } + else { + $nb_reponses = count($resr); + if ($resq[$l]->type_question==$QUESTION_MULT) + $codage = $MULTIPLE; + else + $codage = $UNIQUE; + $counter = 0; + for ($cj=0;$cj<$nb_reponses;$cj++) + $votes[$cj] = 0; + if (mysql_num_rows($reponses_choix)>0) + while($c<=mysql_num_rows($reponses_choix) + && $reponse_choix["idp"] == $partie["idp"] + && $reponse_choix["idq"] == $question["idq"]) { + if ($codage == $UNIQUE) { //la valeur stockée correspond au numéro du choix + if ($reponse_choix["code"]!=0) + $votes[$reponse_choix["code"]-1]++; + } + else { //la représentation binaire de la valeur stockée correspond aux choix cochés + $code = $reponse_choix["code"]; + for ($cj=0;$cj<$nb_reponses;$cj++) { + $votes[$cj]+=$code%2; + $code=$code/2; + } + } + if (mysql_num_rows($reponses_choix)>0) + $reponse_choix=mysql_fetch_array($reponses_choix); + $c++; + $counter++; + } + $resc = null; + for ($cj=0;$cj<$nb_reponses;$cj++) { + $resc[$cj]->votes=$votes[$cj]; + if ($counter>0) + $resc[$cj]->pourcentage=$votes[$cj]/$counter*100; + else + $resc[$cj]->pourcentage=0; + } + $resq[$l]->resultats = $resc; + } + } + if ($jquestions=$resq; + } + return $res; +} + +/** renvoyer les informations sur les questions d'une partie + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return $res un tableau d'enregistrements (idq,texte,type_reponse,ordre) + */ +function infos_questions($SID,$PID) { + $resultat=mysql_query_p("select idq from sondage.questions where ids=$SID and idp=$PID order by ordre"); + $res = null; + for ($i=0;$ivotes = $votes[$j]; + if (mysql_num_rows($resultat)>0) + $res[$j]->pourcentage = $votes[$j]/mysql_num_rows($resultat)*100; + else + $res[$j]->pourcentage = 0; + } + return $res; +} + +/** renvoyer le texte d'un topo explicatif de l'interface + * @param $TOPO l'id du topo + * @return une chaîne + */ +function topo_req($TOPO) { + $resultat = mysql_query_p("select texte from sondage.topo where ref = $TOPO"); + $ligne = mysql_fetch_array($resultat); + return $ligne["texte"]; +} + +/** ajouter un sondage dont le premier modérateur sera un certain utilisateur + * @param $user_id l'id de l'utilisateur + * @return $SID l'id du sondage créé + */ +function ajouter_sondage($user_id) { + //on vérifie que l'utilisateur n'a pas trop de sondages + $resultat = mysql_query_p("select count(ids) from sondage.moderateurs where idu=$user_id"); + list($nb_sondages) = mysql_fetch_row($resultat); + if ($nb_sondages > 5) { + erreur("Tu as atteint le quota maximal de sondages autorisés. Tu ne peux plus en créer."); + require("footer.inc.php"); + exit; + } + mysql_query_p("insert into sondage.description_generale (titre) values('')"); + mysql_query("lock sondage.description_generale");//lock nécessaire pour le retour de SID + $resultat = mysql_query_p("select max(ids) from sondage.description_generale"); + $ligne = mysql_fetch_row($resultat); + $SID = $ligne[0]; + mysql_query_p("insert into sondage.moderateurs (ids,idu) values($SID,$user_id)"); + mysql_query("unlock sondage.description_generale"); + return $SID; +} + +/** renvoyer un numéro d'ordre disponible pour une partie d'un sondage + * @param $SID l'id du sondage + * @return l'ordre de la partie + */ +function pid_transitoire($SID) { + $resultat = mysql_query_p("select max(ordre) from sondage.parties where ids=$SID"); + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]==null) + return 1; + else + return $ligne[0]+1; +} + +/** renvoyer un numéro d'ordre disponible pour une question d'une partie + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return l'ordre de la question + */ +function qid_transitoire($SID,$PID) { + $resultat = mysql_query_p("select max(ordre) from sondage.questions where ids=$SID and idp=$PID"); + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]==null) + return 1; + else + return $ligne[0]+1; +} + +/** renvoyer un numéro d'ordre disponible pour un choix d'une question + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @return l'ordre du choix + */ +function rid_transitoire($SID,$PID,$QID) { + $resultat = mysql_query_p("select max(ordre) from sondage.choix where ids=$SID and idp=$PID and idq=$QID"); + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]==null) + return 1; + else + return $ligne[0]+1; +} + +/** ajouter une partie à un sondage + * @param $SID l'id du sondage + * @return $PID l'id de la partie créée + */ +function ajouter_partie($SID) { + mysql_query("lock sondage.parties");//lock nécessaire pour le retour de PID + $resultat = mysql_query_p("select max(idp),max(ordre) from sondage.parties where ids = $SID"); + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]==null) + $PID = 1; + else + $PID = $ligne[0]+1; + if ($ligne[1]==null) + $ordre = 1; + else + $ordre = $ligne[1]+1; + mysql_query_p("insert into sondage.parties (ids,idp,ordre,sous_titre,en_tete,pied) values($SID,$PID,$ordre,'','','')"); + mysql_query("unlock sondage.parties"); + return $PID; +} + +/** ajouter une question à une partie + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return $QID l'id de la question créée + */ +function ajouter_question($SID,$PID) { + mysql_query("lock sondage.questions");//lock nécessaire pour le retour de QID + $resultat = mysql_query_p("select max(idq),max(ordre) from sondage.questions where ids = $SID and idp=$PID"); + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]==null) + $QID = 1; + else + $QID = $ligne[0]+1; + if ($ligne[1]==null) + $ordre = 1; + else + $ordre = $ligne[1]+1; + mysql_query_p("insert into sondage.questions (ids,idp,idq,ordre,texte,type_reponse) values($SID,$PID,$QID,$ordre,'',0)"); + mysql_query("unlock sondage.questions"); + return $QID; +} + +/** ajouter un choix de réponse à une question + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @return $RID l'id du choix créé + */ +function ajouter_reponse($SID,$PID,$QID) { + mysql_query("lock sondage.choix");//lock nécessaire pour le retour de RID + $resultat = mysql_query_p("select max(idr),max(ordre) from sondage.choix where ids = $SID and idp=$PID and idq=$QID"); + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]==null) + $RID = 1; + else + $RID = $ligne[0]+1; + if ($ligne[1]==null) + $ordre = 1; + else + $ordre = $ligne[1]+1; + mysql_query_p("insert into sondage.choix (ids,idp,idq,idr,ordre) values($SID,$PID,$QID,$RID,$ordre)"); + mysql_query("unlock sondage.choix"); + return $RID; +} + +/** mettre à jour les informations d'un sondage + * @param $SID l'id du sondage + * @param $titre titre du sondage + * @param $en_tete en-tête du sondage + * @param $pied pied de page + * @param $prod le sondage est-il en production ? + * @param $parties y a-t-il plusieurs parties? + * @param $tous tous les inscrits peuvent-ils voter ? + * @param $mail mail de contact des sondés + * @return rien + */ +function mettre_a_jour_sondage($SID,$titre,$en_tete,$pied,$prod,$parties,$tous,$mail) { + // on connait l'ensemble des flags, on peut donc reconstruire le champ flag en entier + $flags = ($prod == 1 ? 'prod,' : ''); + $flags .= ($parties != 1 ? 'parties,' : ''); + $flags .= ($tous != 1 ? 'tous,' : ''); + mysql_query_p("update sondage.description_generale " + ."set titre='$titre',en_tete='$en_tete',pied='$pied', flags = '$flags', mail='$mail' where ids=$SID"); +} + +/** mettre à jour les informations d'une partie + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $titre titre du sondage + * @param $en_tete en-tête du sondage + * @param $pied pied de page + * @return rien + */ +function mettre_a_jour_partie($SID,$PID,$titre,$en_tete,$pied) { + mysql_query_p("update sondage.parties set sous_titre='$titre',en_tete='$en_tete',pied='$pied' ". + "where ids=$SID and idp=$PID"); +} + +/** mettre à jour les informations d'une question + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $texte intitulé de la question + * @param $type_question type de la question (texte, choix multiple...) + * @return rien + */ +function mettre_a_jour_question($SID,$PID,$QID,$texte,$type_question) { + mysql_query_p("update sondage.questions set texte='$texte',type_reponse='$type_question' ". + "where ids=$SID and idp=$PID and idq=$QID"); +} + +/** mettre à jour les informations d'un choix de réponse + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID l'id du choix + * @param $texte intitulé du choix + * @param $coche coché par défaut ? + * @return rien + */ +function mettre_a_jour_reponse($SID,$PID,$QID,$RID,$texte,$coche) { + if ($texte!="") { + mysql_query_p("update sondage.choix set reponse='$texte',coche='$coche' ". + "where ids=$SID and idp=$PID and idq=$QID and idr=$RID"); + } +} + +/** supprimer une partie + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return rien + */ +function supprimer_partie($SID,$PID) { + mysql_query_p("delete from sondage.parties where ids=$SID and idp=$PID"); + mysql_query_p("delete from sondage.questions where ids=$SID and idp=$PID"); + mysql_query_p("delete from sondage.choix where ids=$SID and idp=$PID"); +} + +/** supprimer une question + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @return rien + */ +function supprimer_question($SID,$PID,$QID) { + mysql_query_p("delete from sondage.questions where ids=$SID and idp=$PID and idq=$QID"); + mysql_query_p("delete from sondage.choix where ids=$SID and idp=$PID and idq=$QID"); +} + +/** supprimer un choix de réponse + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID l'id du choix + * @return rien + */ +function supprimer_reponse($SID,$PID,$QID,$RID) { + mysql_query_p("delete from sondage.choix where ids=$SID and idp=$PID and idq=$QID and idr=$RID"); +} + +/** échanger la position de deux parties + * @param $SID l'id du sondage + * @param $PID1 l'ordre de la partie 1 + * @param $PID2 l'ordre de la partie 2 + * @return rien + */ +function echanger_partie($SID,$PID1,$PID2,$temp) { + //$temp = pid_transitoire($SID); + mysql_query_p("update sondage.parties set ordre=$temp where ids=$SID and ordre=$PID1"); + mysql_query_p("update sondage.parties set ordre=$PID1 where ids=$SID and ordre=$PID2"); + mysql_query_p("update sondage.parties set ordre=$PID2 where ids=$SID and ordre=$temp"); +} + +/** échanger la position de deux questions + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID1 l'ordre de la question 1 + * @param $QID2 l'ordre de la question 2 + * @return rien + */ +function echanger_question($SID,$PID,$QID1,$QID2,$temp) { + //$temp = qid_transitoire($SID,$PID); + mysql_query_p("update sondage.questions set ordre=$temp where ids=$SID and idp=$PID and ordre=$QID1"); + mysql_query_p("update sondage.questions set ordre=$QID1 where ids=$SID and idp=$PID and ordre=$QID2"); + mysql_query_p("update sondage.questions set ordre=$QID2 where ids=$SID and idp=$PID and ordre=$temp"); +} + +/** échanger la position de deux choix de réponse + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID1 l'ordre du choix 1 + * @param $RID2 l'ordre du choix 2 + * @return rien + */ +function echanger_reponse($SID,$PID,$QID,$RID1,$RID2,$temp) { + //$temp = rid_transitoire($SID,$PID,$QID); + mysql_query_p("update sondage.choix set ordre=$temp where ids=$SID and idp=$PID and idq=$QID and ordre=$RID1"); + mysql_query_p("update sondage.choix set ordre=$RID1 where ids=$SID and idp=$PID and idq=$QID and ordre=$RID2"); + mysql_query_p("update sondage.choix set ordre=$RID2 where ids=$SID and idp=$PID and idq=$QID and ordre=$temp"); +} + +/** descendre une partie d'un niveau + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return rien + */ +function descendre_partie($SID,$PID) { + mysql_query("lock sondage.parties");//lock nécessaire pour récupérer max(ordre) + $resultat = mysql_query_p("select min(s1.ordre),s2.ordre ". + "from sondage.parties as s1,sondage.parties as s2 ". + "where s2.ids=$SID and s2.idp=$PID and s1.ids=$SID and s1.ordre>s2.ordre group by s2.ordre"); + if (mysql_num_rows($resultat)>0) { + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]!=null) + echanger_partie($SID,$ligne[1],$ligne[0],0); + } + mysql_query("unlock sondage.parties"); +} + +/** descendre une question d'un niveau + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @return rien + */ +function descendre_question($SID,$PID,$QID) { + mysql_query("lock sondage.questions");//lock nécessaire pour récupérer max(ordre) + $resultat = mysql_query_p("select min(s1.ordre),s2.ordre ". + "from sondage.questions as s1,sondage.questions as s2 ". + "where s2.ids=$SID and s2.idp=$PID and s2.idq=$QID and ". + "s1.ids=$SID and s1.idp=$PID and s1.ordre>s2.ordre group by s2.ordre"); + if (mysql_num_rows($resultat)>0) { + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]!=null) + echanger_question($SID,$PID,$ligne[1],$ligne[0],0); + } + mysql_query("unlock sondage.questions"); +} + +/** descendre un choix de réponse d'un niveau + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID l'id du choix + * @return rien + */ +function descendre_reponse($SID,$PID,$QID,$RID) { + mysql_query("lock sondage.choix");//lock nécessaire pour récupérer max(ordre) + $resultat = mysql_query_p("select min(s1.ordre),s2.ordre ". + "from sondage.choix as s1,sondage.choix as s2 ". + "where s2.ids=$SID and s2.idp=$PID and s2.idq=$QID and s2.idr=$RID and ". + "s1.ids=$SID and s1.idp=$PID and s1.idq=$QID and s1.ordre>s2.ordre group by s2.ordre"); + if (mysql_num_rows($resultat)>0) { + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]!=null) + echanger_reponse($SID,$PID,$QID,$ligne[1],$ligne[0],0); + } + mysql_query("unlock sondage.choix"); +} + +/** monter une partie d'un niveau + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @return rien + */ +function monter_partie($SID,$PID) { + mysql_query("lock sondage.parties");//lock nécessaire pour récupérer max(ordre) + $resultat = mysql_query_p("select max(s1.ordre),s2.ordre ". + "from sondage.parties as s1,sondage.parties as s2 ". + "where s2.ids=$SID and s2.idp=$PID and s1.ids=$SID and s1.ordre0) { + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]!=null) + echanger_partie($SID,$ligne[1],$ligne[0],0); + } + mysql_query("unlock sondage.parties"); +} + +/** monter une question d'un niveau + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @return rien + */ +function monter_question($SID,$PID,$QID) { + mysql_query("lock sondage.questions");//lock nécessaire pour récupérer max(ordre) + $resultat = mysql_query_p("select max(s1.ordre),s2.ordre ". + "from sondage.questions as s1,sondage.questions as s2 ". + "where s2.ids=$SID and s2.idp=$PID and s2.idq=$QID and ". + "s1.ids=$SID and s1.idp=$PID and s1.ordre0) { + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]!=null) + echanger_question($SID,$PID,$ligne[1],$ligne[0],0); + } + mysql_query("unlock sondage.questions"); +} + +/** monter un choix de réponse d'un niveau + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID l'id du choix + * @return rien + */ +function monter_reponse($SID,$PID,$QID,$RID) { + mysql_query("lock sondage.choix");//lock nécessaire pour récupérer max(ordre) + $resultat = mysql_query_p("select max(s1.ordre),s2.ordre ". + "from sondage.choix as s1,sondage.choix as s2 ". + "where s2.ids=$SID and s2.idp=$PID and s2.idq=$QID and s2.idr=$RID and ". + "s1.ids=$SID and s1.idp=$PID and s1.idq=$QID and s1.ordre0) { + $ligne = mysql_fetch_array($resultat); + if ($ligne[0]!=null) + echanger_reponse($SID,$PID,$QID,$ligne[1],$ligne[0],0); + } + mysql_query("unlock sondage.choix"); +} + +?> diff --git a/include/sondage.utils.inc.php b/include/sondage.utils.inc.php new file mode 100644 index 0000000..3edeb44 --- /dev/null +++ b/include/sondage.utils.inc.php @@ -0,0 +1,520 @@ +"))); + else + return NULL; +} + +/** récupérer une variable en REQUEST obligatoirement + * et la purifier de ses balises ou autres + * si elle n'est pas définie, le script s'arrête là en ajoutant header et footer + * @param $nom_variable nom de la variable à récupérer + * @return variable purifiée ou arrêt du script si non définie en REQUEST + */ +function recupere_non_vide_avec_header($nom_variable) { + $res = recupere($nom_variable); + if (!isset($res)) { + require_once("header1.inc.php"); + require_once("header2.inc.php"); + erreur("Il y a eu un problème lors de la transmission des données du formulaire."); + require("footer.inc.php"); + exit; + } + else + return $res; +} + +/** récupérer une variable en REQUEST obligatoirement + * et la purifier de ses balises ou autres + * si elle n'est pas définie, le script s'arrête là en ajoutant footer (les header doivent être + * inclus avant) + * @param $nom_variable nom de la variable à récupérer + * @return variable purifiée ou arrêt du script si non définie en REQUEST + */ +function recupere_non_vide_sans_header($nom_variable) { + $res = recupere($nom_variable); + if (!isset($res)) { + erreur("Il y a eu un problème lors de la transmission des données du formulaire."); + require("footer.inc.php"); + exit; + } + else + return $res; +} + +/** teste si l'utilisateur a le droit de modifier un sondage + * sinon termine le script + * @param $SID l'id du sondage + * @return les infos du sondage + */ +function permission_modifications($SID) { + global $sondage; + global $moderos; + + if (isset($SID)) { + if (!isset($sondage)) + $sondage = infos_sondage($SID); + if ($sondage->en_prod == 1)//le sondage est en prod, seuls les admins peuvent le modifier + check_perms(); + else { + if (!isset($moderos)) + $moderos = moderateurs($SID); + check_perms(usernames($moderos)); + } + return $sondage; + } + else + return NULL; +} + +/** teste si l'utilisateur est dans une liste d'"ayants-droits" + * sinon termine le script avec le footer spécial sondage + * (vote sans les menus de x.org) + * @param $auth_array tableau de chaînes (username) + * @return rien + */ +function check_perms_sondage($auth_array) { + if (!has_perms($auth_array)) { + $_SESSION['log']->log("noperms",$_SERVER['PHP_SELF']); + echo "
"; + echo "Tu n'as pas les permissions nécessaires pour accéder à cette page."; + echo "
"; + include("sondage.footer.inc.php"); + exit; + } +} + +/** afficher un titre + * @param $intitule le texte du titre + * @return rien + */ +function titre($intitule) { + echo "
\n"; + echo $intitule."\n"; + echo "
\n"; +} + +/** commencer un paragraphe + * @return rien + */ +function debut_paragraphe() { + echo "

\n"; +} + +/** terminer un paragraphe + * @return rien + */ +function fin_paragraphe() { + echo "

\n"; +} + +/** donner l'attribut correspondant à une ligne de tableau paire ou impaire + * @param $pair paire ou impaire ? + * @return rien + */ +function nom($pair) { + if ($pair == 0) + return " class =\"pair\""; + else + return " class=\"impair\""; +} + +/** changer la valeur courante de la ligne (paire ou impaire) + * @param $pair pair ou impair ? + * @return la nouvelle valeur de pair + */ +function change($pair) { + if ($pair == 0) + return 1; + else + return 0; +} + +/** commencer un formulaire POST vers un fichier php + * @param $formulaire nom du fichier php à appeler + * @return rien + */ +function debut_formulaire($formulaire) { + echo "
\n"; +} + +/** commencer un formulaire POST vers le fichier php appelant + * @return rien + */ +function debut_formulaire_self() { + debut_formulaire($_SERVER['PHP_SELF']); +} + +/** terminer un formulaire + * @return rien + */ +function fin_formulaire() { + echo "
\n"; +} + +/** afficher un texte en gras sur une ligne + * @param $intitule texte à afficher + * @return rien + */ +function affiche_intitule($intitule) { + if ($intitule!="") + echo "".$intitule."
\n"; +} + +/** afficher une erreur + * @param $intitule texte de l'erreur + * @return rien + */ +function erreur($intitule) { + if ($intitule!="") + echo "
".$intitule."
\n"; +} + +/** afficher un mail avec lien hypertexte + * @param $mail adresse à afficher + * @return rien + */ +function affiche_mail($mail) { + if ($mail!="") + echo mailto($mail); +} + +/** afficher un topo + * @param $TOPO code du topo à afficher + * @return rien + */ +function topo($TOPO) { + debut_paragraphe(); + echo topo_req($TOPO); + fin_paragraphe(); +} + +/** afficher une liste d'utilisateurs + * @param $liste tableau d'enregistrements (promo,nom,prenom) + * @param $type_utilisateur moderateur ou inscrit + * @param $SID id du sondage + * @return rien + */ +function affiche_liste_utilisateurs($liste,$type_utilisateur,$SID) { + debut_paragraphe(); + $promo_courante = 0; + echo ""; + if (count($liste) == 0) + echo "Aucun X n'est abonné."; + else { + echo count($liste)." X "; + if (count($liste) ==1) + echo "est abonné :"; + else + echo "sont abonnés :"; + } + echo "
"; + for ($i=0;$ipromo != $promo_courante) { + if ($promo_courante!=0) + echo "
"; + $promo_courante = $liste[$i]->promo; + echo "[$promo_courante] "; + $virgule = false; + } + if ($virgule) + echo ", "; + echo $liste[$i]->prenom.' '; + echo "username."')\">"; + echo $liste[$i]->nom.' '; + echo '[Supprimer]'; + } + fin_paragraphe(); +} + +/** afficher un choix de sondages + * @param $sond tableau d'enregistrements (id,titre) représentants des sondages + * @param $formulaire fichier php vers lequel renvoyer le choix d'un de ces sondages + * @return rien + */ +function affiche_choix($sond,$formulaire) { + for($i=0;$i$sond[$i]->id)); + soumettre(array($sond[$i]->titre=>"modifier")); + fin_formulaire(); + } +} + +/** afficher un champ texte + * @param $intitule invite texte affichée avant le champ texte + * @param $nom_variable nom de la variable associée au champ + * @param $defaut valeur par défaut du champ + * @param $type ligne ou paragraphe (4 lignes) + * @return rien + */ +function champ_texte($intitule,$nom_variable,$defaut,$type) { + global $LIGNE,$PARAGRAPHE; + + debut_paragraphe(); + affiche_intitule($intitule); + if ($type==$LIGNE) + echo "\n"; + else if ($type==$PARAGRAPHE) + echo "\n"; + fin_paragraphe(); +} + +/** afficher une liste de choix multiples + * @param $intitule invite texte affichée avant la liste + * @param $nom_variable nom de la variable associée au choix (base des noms de variables pour les cases à cocher) + * @param $defaut valeur par défaut du choix (binaire pour les cases à cocher) + * @param $choix liste des choix (tableau de chaînes) + * @param $type unique (boutons radio) ou multiple (cases à cocher) + * @return rien + */ +function choix_multiple($intitule,$nom_variable,$defaut,$choix,$type) { + global $UNIQUE,$MULTIPLE; + + debut_paragraphe(); + affiche_intitule($intitule); + if ($type==$UNIQUE) //boutons radio + $type_choix="radio"; + else if ($type==$MULTIPLE) //cases à cocher + $type_choix="checkbox"; + for ($i=0;$i defaut = numéro de la case cochée + $nom_var=$nom_variable; + $val=$i; + if ($defaut==$i) + ${$nom_var}=1; + else + ${$nom_var}=0; + } + else if ($type==$MULTIPLE) { //cases à cocher -> defaut = représentation binaire des cases cochées + $nom_var=$nom_variable."_".$i; + $val=1; + if ($defaut%2) + ${$nom_var}=1; + else + ${$nom_var}=0; + $defaut/=2; + } + echo ""; + echo $choix[$i]; + echo "
\n"; + } + fin_paragraphe(); +} + +/** placer des champs cachés dans un formulaire + * @param $variables tableau associatif (nom_de_la_variable => valeur) + * @return rien + */ +function caches($variables) { + foreach ($variables as $nom_variable=>$valeur) { + echo "\n"; + } +} + +/** placer des boutons de validation dans un formulaire + * @param $boutons tableau associatif (texte_du_bouton => nom_de_la_variable_associée) + * @return rien + */ +function soumettre($boutons) { + debut_paragraphe(); + foreach ($boutons as $intitule=>$nom_variable) { + echo "  \n"; + } + fin_paragraphe(); +} + +/** placer un bouton éditer dans un formulaire avec variables cachées + * @param $variables tableau associatif (nom_de_la_variable => valeur) de variables cachées + * @param $formulaire nom du fichier php cible du formulaire + * @return rien + */ +function editer($variables,$formulaire) { + echo ""; + debut_formulaire($formulaire); + caches($variables); + soumettre(array("Editer"=>"editer")); + fin_formulaire(); + echo ""; +} + +/** placer des boutons supprimer,descendre,monter avec variables cachées + * dans un formulaire de cible modifie.php + * @param $variables tableau associatif (nom_de_la_variable => valeur) de variables cachées + * @return rien + */ +function suppr_des_mont($variables) { + echo ""; + debut_formulaire("modifie.php"); + caches($variables); + soumettre(array("Suppr."=>"supprimer","->"=>"descendre","<-"=>"monter")); + fin_formulaire(); + echo ""; +} + +/** afficher un choix de réponse dans le tableau de modification principal + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $RID l'id du choix + * @param $texte chaîne correspondant au choix de réponse + * @param $pair ligne paire ou impaire ? + * @return nouvelle valeur de ligne paire ou impaire + */ +function afficher_reponse($SID,$PID,$QID,$RID,$texte,$pair) { + echo ""; + echo "".$texte.""; + echo ""; + suppr_des_mont(array("SID"=>$SID,"PID"=>$PID,"QID"=>$QID,"RID"=>$RID)); + echo ""; + return change($pair); +} + +/** afficher une question dans le tableau de modification principal + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $QID l'id de la question + * @param $texte intitulé de la question + * @param $pair ligne paire ou impaire ? + * @return $pair nouvelle valeur de ligne paire ou impaire + */ +function afficher_question($SID,$PID,$QID,$texte,$pair,$infos) { + global $QUESTION_TEXTE; + + echo ""; + echo "".$texte.""; + editer(array("SID"=>$SID,"PID"=>$PID,"QID"=>$QID),"question.php"); + suppr_des_mont(array("SID"=>$SID,"PID"=>$PID,"QID"=>$QID)); + echo ""; + $pair=change($pair); + if ($infos->type_question!=$QUESTION_TEXTE) { + $reponses = $infos->reponses; + $ordre_courant = 0; + if (count($reponses)>0) + $min_courant = $reponses[0]->ordre; + $min = 0; + for ($i=0;$iordre>$ordre_courant && $reponses[$j]->ordre<$min_courant) { + $min = $j; + $min_courant = $reponses[$j]->ordre; + } + $ordre_courant = $min_courant; + $min_courant = 255;//nb max de réponses + $pair = afficher_reponse($SID,$PID,$QID,$reponses[$min]->idr,$reponses[$min]->texte,$pair); + } + } + return $pair; +} + +/** afficher une partie dans le tableau de modification principal + * @param $SID l'id du sondage + * @param $PID l'id de la partie + * @param $titre titre de la partie + * @param $pair ligne paire ou impaire ? + * @param $parties le sondage comporte plusieurs parties ? + * @return $pair nouvelle valeur de ligne paire ou impaire + */ +function afficher_partie($SID,$PID,$titre,$pair,$parties,$infos) { + if ($parties == 0) { + echo ""; + echo "".$titre.""; + editer(array("SID"=>$SID,"PID"=>$PID,"partie"=>0),"titre.php"); + suppr_des_mont(array("SID"=>$SID,"PID"=>$PID)); + echo ""; + $pair = change($pair); + } + $questions = $infos->questions; + $ordre_courant = 0; + if (count($questions)>0) + $min_courant = $questions[0]->ordre; + $min = 0; + for ($i=0;$iordre>$ordre_courant && $questions[$j]->ordre<$min_courant) { + $min = $j; + $min_courant = $questions[$j]->ordre; + } + $ordre_courant = $min_courant; + $min_courant = 255;//nb max de questions + $pair = + afficher_question($SID,$PID,$questions[$min]->idq,($i+1).'. '.$questions[$min]->texte,$pair,$questions[$min]); + } + echo ""; + debut_formulaire("modifie.php"); + caches(array("SID"=>$SID,"PID"=>$PID)); + soumettre(array("Ajouter une question"=>"ajouter_question")); + fin_formulaire(); + echo ""; + $pair = change($pair); + return $pair; +} + +/** afficher les réponses d'une question texte données par les sondés + * @param $reponses les propositions faites par les sondés + */ +function afficher_reponses_texte($reponses) { + echo ''; + echo ''; + $pair = 0; + for ($i=0;$i"; + $pair = change($pair); + } + } + echo '
Réponses
"; + echo $reponses[$i]; + echo "
'; +} + +/** afficher les réponses d'une question à choix multiples données par les sondés + * @param $infos les infos du choix dont son intitulé + * @param $reponses les résultats en nombre de votes et pourcentage + */ +function afficher_reponses_choix($infos,$reponses) { + echo ''; + echo ''; + $pair = 0; + for ($i=0;$i'; + $pair = change($pair); + } + echo '
RéponseVotes%
'; + echo $infos[$i]->texte; + echo ''; + echo $reponses[$i]->votes; + echo ''; + echo number_format($reponses[$i]->pourcentage,2); + echo '
'; +} + +?> diff --git a/include/valid_sondages.inc.php b/include/valid_sondages.inc.php index 1e1b46c..eb36078 100644 --- a/include/valid_sondages.inc.php +++ b/include/valid_sondages.inc.php @@ -28,52 +28,7 @@ class SondageReq extends Validate { return parent::get_request($uid,'sondage',$stamp); } - function formu() { - global $baseurl; - $url = "$baseurl/sondage/questionnaire.php?SID=".$this->sid; - return <<<________EOF -
- - - - - - - - - - - - - - - - - - - - - - - - -
Demandeur : - - {$this->prenom} {$this->nom} - old)) echo "({$this->old})";?> -
Titre du sondage :{$this->titre}
Prévisualisation du sondage :{$this->titre} -
Alias du sondage : (ne doit - pas contenir le caractère ')
- -

- -
-

Raison du refus:

- -
-
-________EOF; - } + function formu() { return 'include/form.valid.sondages.tpl'; } function handle_formu () { global $no_update_bd,$baseurl; @@ -86,64 +41,42 @@ ________EOF; if ($_REQUEST['submit']!="Refuser") { $alias = stripslashes($_REQUEST['alias']); if ($alias=="") { - echo "
Il faut entrer un alias pour valider ce sondage."; - return false; + return '

Il faut entrer un alias pour valider ce sondage.

'; } else { if (strlen($alias)>15) { - echo "
L'alias est trop long."; - return false; + return "

L'alias est trop long.

"; } else if (strpos($alias,"'")) { - echo "
L'alias ne doit pas contenir le caractère '"; - return false; + return "

L'alias ne doit pas contenir le caractère '

"; } 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; + return "

Cet alias est déjà utilisé.

"; } } } $this->alias=$alias; } - require_once("diogenes.mailer.inc.php"); + require_once("tpl.mailer.inc.php"); $lien = "$baseurl/sondage/questionnaire.php?alias=".urlencode($this->alias); - $titre = '"'.str_replace(''',"'",$this->titre).'"'; - - $mymail = new DiogenesMailer('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"; + + $mymail = new TplMailer('valid.sondages.tpl'); + $mymail->assign('username', $this->username); + $mymail->assign('alias', $this->alias); + $mymail->assign('titre', '"'.str_replace(''',"'",$this->titre).'"'); 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"; + $mymail->assign('answer','yes'); } 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"; + $mymail->assign('answer','no'); } - $message .= - "\n". - "Cordialement,\n". - "L'équipe X.org"; - $message = wordwrap($message,78); - $mymail->setBody($message); $mymail->send(); //Suppression de la demande $this->clean(); diff --git a/templates/include/form.valid.sondages.tpl b/templates/include/form.valid.sondages.tpl new file mode 100644 index 0000000..dec7261 --- /dev/null +++ b/templates/include/form.valid.sondages.tpl @@ -0,0 +1,44 @@ +{* $Id: form.valid.sondages.tpl,v 1.1 2004-02-08 12:38:26 x2000habouzit Exp $ *} + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
Demandeur : + username"|url}')"> + {$valid->prenom} {$valid->nom} + {if $valid->old}({$valid->old}){/if} +
Titre du sondage :{$valid->titre}
Prévisualisation du sondage :sid"|url}" target="_blank">{$valid->titre} +
Alias du sondage : (ne doit pas contenir le caractère ') +
+ +

+ +
+

Raison du refus:

+ +
+
+ +{* vim:set et sw=2 sts=2 sws=2: *} diff --git a/templates/mails/valid.sondages.tpl b/templates/mails/valid.sondages.tpl new file mode 100644 index 0000000..58bc8fb --- /dev/null +++ b/templates/mails/valid.sondages.tpl @@ -0,0 +1,26 @@ +{* $Id: valid.sondages.tpl,v 1.1 2004-02-08 12:38:27 x2000habouzit Exp $ *} +{config_load file="mails.conf" section="valid_sondages"} +{subject text="[Polytechnique.org/SONDAGE] Demande de validation du sondage $titre par $username"} +{from full=#from#} +{to addr="$username@polytechnique.org"} +{cc full=#cc#} +{if $answer eq "yes"} +Cher(e) camarade, + + Le sondage {$titre} que tu as composé vient d'être validé. + Il ne te reste plus qu'à transmettre aux sondés l'adresse où ils pourront voter. Cette adresse est : https://www.polytechnique.org/sondages/questionnaire.php?alias={$alias|escape:'url'} + +Cordialement, +L'équipe X.org +{elseif $answer eq 'no'} + +Cher(e) camarade, + + Le sondage $titre que tu avais proposé a été refusé. +La raison de ce refus est : +{$smarty.request.motif} + +Cordialement, +L'équipe X.org +{/if} +{* vim:set nocindent noautoindent textwidth=0: *}