diff --git a/adminstuds.php b/adminstuds.php index f806f72..d63b673 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -52,7 +52,7 @@ $numsondageadmin = false; $sondage = false; // recuperation du numero de sondage admin (24 car.) dans l'URL -if (isset($_GET['sondage']) && !empty($_GET['sondage']) && is_string($_GET['sondage']) && strlen($_GET['sondage']) === 24) { +if (issetAndNoEmpty('sondage', $_GET) && is_string($_GET['sondage']) && strlen($_GET['sondage']) === 24) { $numsondageadmin=$_GET["sondage"]; //on découpe le résultat pour avoir le numéro de sondage (16 car.) $numsondage=substr($numsondageadmin, 0, 16); @@ -106,60 +106,73 @@ From: %s <%s> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EOF; -$headers = sprintf($headers_str, NOMAPPLICATION, ADRESSEMAILADMIN ); +$headers = sprintf($headers_str, NOMAPPLICATION, ADRESSEMAILADMIN); -if (isset($_POST["boutonnouveautitre"])) { - if(! isset($_POST["nouveautitre"]) || empty($_POST["nouveautitre"])) { +if (isset($_POST["boutonnouveautitre"]) || isset($_POST["boutonnouveautitre_x"])) { + if(issetAndNoEmpty('nouveautitre') === false) { $err |= TITLE_EMPTY; } else { - //envoi du mail pour prevenir l'admin de sondage - mail ($adresseadmin, - _("[ADMINISTRATOR] New title for your poll") . ' ' . NOMAPPLICATION, - _("You have changed the title of your poll. \nYou can modify this poll with this link") . - " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); - //modification de la base SQL avec le nouveau titre - $connect->Execute("UPDATE sondage SET titre = '" . $connect->qstr(strip_tags($_POST['nouveautitre'])) . "' WHERE id_sondage = '" . $numsondage . "'"); + $nouveautitre = htmlentities(html_entity_decode($_POST['nouveautitre'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); + $sql = 'UPDATE sondage SET titre = '.$connect->Param('nouveautitre').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + + //envoi du mail pour prevenir l'admin de sondage + if ($connect->Execute($sql, array($nouveautitre, $numsondage))) { + mail ($adresseadmin, + _("[ADMINISTRATOR] New title for your poll") . ' ' . NOMAPPLICATION, + _("You have changed the title of your poll. \nYou can modify this poll with this link") . + " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" . + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, + $headers); + } } } // si le bouton est activé, quelque soit la valeur du champ textarea -if (isset($_POST["boutonnouveauxcommentaires"])) { - if(! isset($_POST["nouveautitre"]) || empty($_POST["nouveautitre"])) { +if (isset($_POST["boutonnouveauxcommentaires"]) || isset($_POST["boutonnouveauxcommentaires_x"])) { + if(issetAndNoEmpty('nouveautitre') === false) { $err |= COMMENT_EMPTY; } else { - //envoi du mail pour prevenir l'admin de sondage - mail ($adresseadmin, - _("[ADMINISTRATOR] New comments for your poll") . ' ' . NOMAPPLICATION, - _("You have changed the comments of your poll. \nYou can modify this poll with this link") . - " :\n\n".getUrlSondage($numsondageadmin, true)." \n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); + $commentaires = htmlentities(html_entity_decode($_POST['nouveauxcommentaires'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); //modification de la base SQL avec les nouveaux commentaires - $connect->Execute("UPDATE sondage SET commentaires = '" . $connect->qstr(strip_tags($nouveauxcommentaires)) . "' WHERE id_sondage = '" . $numsondage . "'"); + $sql = 'UPDATE sondage SET commentaires = '.$connect->Param('commentaires').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + + if ($connect->Execute($sql, array($commentaires, $numsondage))) { + //envoi du mail pour prevenir l'admin de sondage + mail ($adresseadmin, + _("[ADMINISTRATOR] New comments for your poll") . ' ' . NOMAPPLICATION, + _("You have changed the comments of your poll. \nYou can modify this poll with this link") . + " :\n\n".getUrlSondage($numsondageadmin, true)." \n\n" . + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, + $headers); + } } } //si la valeur de la nouvelle adresse est valide et que le bouton est activé -if (isset($_POST["boutonnouvelleadresse"])){ - if(! isset($_POST["nouvelleadresse"]) || empty($_POST["nouvelleadresse"]) || - ! filter_var($_POST["nouvelleadresse"], FILTER_VALIDATE_EMAIL) || strpos($_POST["nouvelleadresse"], '@') === false) { +if (isset($_POST["boutonnouvelleadresse"]) || isset($_POST["boutonnouvelleadresse_x"])) { + if(issetAndNoEmpty('nouvelleadresse') === false || validateEmail($_POST["nouvelleadresse"]) === false) { $err |= INVALID_EMAIL; } else { - //envoi du mail pour prevenir l'admin de sondage - mail ($_POST['nouvelleadresse'], - _("[ADMINISTRATOR] New email address for your poll") . ' ' . NOMAPPLICATION, - _("You have changed your email address in your poll. \nYou can modify this poll with this link") . - " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); + $nouvelleadresse = htmlentities(html_entity_decode($_POST['nouvelleadresse'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); //modification de la base SQL avec la nouvelle adresse - $connect->Execute("UPDATE sondage SET mail_admin = '" . $_POST['nouvelleadresse'] . "' WHERE id_sondage = '" . $numsondage . "'"); + $sql = 'UPDATE sondage SET mail_admin = '.$connect->Param('nouvelleadresse').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + + if ($connect->Execute($sql, array($nouvelleadresse, $numsondage))) { + //envoi du mail pour prevenir l'admin de sondage + mail ($_POST['nouvelleadresse'], + _("[ADMINISTRATOR] New email address for your poll") . ' ' . NOMAPPLICATION, + _("You have changed your email address in your poll. \nYou can modify this poll with this link") . + " :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" . + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, + $headers); + } } } @@ -167,8 +180,7 @@ if (isset($_POST["boutonnouvelleadresse"])){ $dsujet=$sujets->FetchObject(false); $dsondage=$sondage->FetchObject(false); -if ($_POST["ajoutsujet_x"]){ - +if (isset($_POST["ajoutsujet"]) || isset($_POST["ajoutsujet_x"])) { print_header(true); echo ''."\n"; logo(); @@ -197,22 +209,22 @@ if ($_POST["ajoutsujet_x"]){ echo ''."\n"; echo ''."\n"; echo '

'. _("Add a start hour (optional)") .' :

'."\n"; echo ''."\n"; @@ -226,7 +238,7 @@ if ($_POST["ajoutsujet_x"]){ echo '

'. _("Add a end hour (optional)") .' :

'."\n"; echo ''."\n"; @@ -254,68 +266,74 @@ if ($_POST["ajoutsujet_x"]){ } //action si bouton confirmation de suppression est activé -if ($_POST["confirmesuppression"]) { +if (isset($_POST["confirmesuppression"]) || isset($_POST["confirmesuppression_x"])) { $nbuser=$user_studs->RecordCount(); $date=date('H:i:s d/m/Y:'); - // on ecrit dans le fichier de logs la suppression du sondage - error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\t$nbuser\t$dsujets->sujet\n", 3, 'admin/logs_studs.txt'); - - //envoi du mail a l'administrateur du sondage - mail ($adresseadmin, - _("[ADMINISTRATOR] Removing of your poll") . ' ' . NOMAPPLICATION, - _("You have removed your poll. \nYou can make new polls with this link") . - " :\n\n".get_server_name()."index.php \n\n" . - _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, - $headers); - //destruction des données dans la base SQL - $connect->Execute('DELETE FROM sondage LEFT INNER JOIN sujet_studs ON sujet_studs.id_sondage = sondage.id_sondage '. - 'LEFT INNER JOIN user_studs ON user_studs.id_sondage = sondage.id_sondage ' . - 'LEFT INNER JOIN comments ON comments.id_sondage = sondage.id_sondage ' . - "WHERE id_sondage = '$numsondage' "); + $sql = 'DELETE FROM sondage LEFT INNER JOIN sujet_studs ON sujet_studs.id_sondage = sondage.id_sondage '. + 'LEFT INNER JOIN user_studs ON user_studs.id_sondage = sondage.id_sondage '. + 'LEFT INNER JOIN comments ON comments.id_sondage = sondage.id_sondage '. + 'WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + if ($connect->Execute($sql, array($numsondage))) { + // on ecrit dans le fichier de logs la suppression du sondage + error_log($date . " SUPPRESSION: $dsondage->id_sondage\t$dsondage->format\t$dsondage->nom_admin\t$dsondage->mail_admin\t$nbuser\t$dsujets->sujet\n", 3, 'admin/logs_studs.txt'); + + //envoi du mail a l'administrateur du sondage + mail ($adresseadmin, + _("[ADMINISTRATOR] Removing of your poll") . ' ' . NOMAPPLICATION, + _("You have removed your poll. \nYou can make new polls with this link") . + " :\n\n".get_server_name()."index.php \n\n" . + _("Thanks for your confidence.") . "\n" . NOMAPPLICATION, + $headers); - //affichage de l'ecran de confirmation de suppression de sondage - print_header(); - echo ''."\n"; - logo(); - bandeau_tete(); - bandeau_titre(_("Make your polls")); - - echo '
'."\n"; - print "

" . _("Your poll has been removed!") . "



"; - print _("Back to the homepage of ") . " ".NOMAPPLICATION."."."\n"; - echo '


'."\n"; - echo '
'."\n"; - sur_bandeau_pied(); - bandeau_pied(); - echo ''."\n"; - echo ''."\n"; - echo ''."\n"; - die(); + //affichage de l'ecran de confirmation de suppression de sondage + print_header(); + echo ''."\n"; + logo(); + bandeau_tete(); + bandeau_titre(_("Make your polls")); + + echo '
'."\n"; + print "

" . _("Your poll has been removed!") . "



"; + print _("Back to the homepage of ") . " ".NOMAPPLICATION."."."\n"; + echo '


'."\n"; + echo '
'."\n"; + sur_bandeau_pied(); + bandeau_pied(); + echo ''."\n"; + echo ''."\n"; + echo ''."\n"; + die(); + } } // quand on ajoute un commentaire utilisateur -if(isset($_POST['ajoutcomment'])) { - if(!isset($_POST["commentuser"]) || empty($_POST["commentuser"])) { +if(isset($_POST['ajoutcomment']) || isset($_POST['ajoutcomment_x'])) { + if(issetAndNoEmpty('commentuser') === false) { $err |= COMMENT_USER_EMPTY; } else { - $comment_user = $connect->qstr(strip_tags($_POST["commentuser"])); + $comment_user = htmlentities(html_entity_decode($_POST["commentuser"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); } - if(empty($_POST["comment"])) { + + if(issetAndNoEmpty('comment') === false) { $err |= COMMENT_EMPTY; } - if (isset($_POST["comment"]) && - ! is_error(COMMENT_EMPTY) && ! is_error(NO_POLL) && - ! is_error(COMMENT_USER_EMPTY)) { - if( ! $connect->Execute('INSERT INTO comments ' . - '(id_sondage, comment, usercomment) VALUES ("'. - $numsondage . '","'. - $connect->qstr(strip_tags($_POST['comment'])). - '","' . - $comment_user .'")') ); - $err |= COMMENT_INSERT_FAILED; + if (issetAndNoEmpty('comment') && !is_error(COMMENT_EMPTY) && !is_error(NO_POLL) && !is_error(COMMENT_USER_EMPTY)) { + $comment = htmlentities(html_entity_decode($_POST["comment"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); + + $sql = 'INSERT INTO comments (id_sondage, comment, usercomment) VALUES ('. + $connect->Param('id_sondage').','. + $connect->Param('comment').','. + $connect->Param('comment_user').')'; + $sql = $connect->Prepare($sql); + + $comments = $connect->Execute($sql, array($numsondage, $comment, $comment_user)); + if ($comments === false) { + $err |= COMMENT_INSERT_FAILED; + } } } @@ -350,15 +368,18 @@ echo '
'."\n"; echo ''."\n"; -$nbcolonnes=substr_count($dsujet->sujet,',')+1; -$nblignes=$user_studs->RecordCount(); +$nbcolonnes = substr_count($dsujet->sujet, ',') + 1; +$nblignes = $user_studs->RecordCount(); //si il n'y a pas suppression alors on peut afficher normalement le tableau //action si le bouton participer est cliqué -if ($_POST["boutonp"]||$_POST["boutonp_x"]) { +if (isset($_POST["boutonp"]) || isset($_POST["boutonp_x"])) { //si on a un nom dans la case texte - if ($_POST["nom"]) { + if (issetAndNoEmpty('nom')){ + $nouveauchoix = ''; + $erreur_prenom = false; + for ($i=0;$i<$nbcolonnes;$i++){ //si la checkbox est cochée alors valeur est egale à 1 if (isset($_POST["choix$i"])){ @@ -368,27 +389,29 @@ if ($_POST["boutonp"]||$_POST["boutonp_x"]) { } } - while( $user=$user_studs->FetchNextObject(false)) { - if ($_POST["nom"]==$user->nom){ + $nom = htmlentities(html_entity_decode($_POST["nom"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); + while($user = $user_studs->FetchNextObject(false)) { + if ($nom == $user->nom){ $erreur_prenom="yes"; } } - if (preg_match(';<|>|"|\';i', $_POST["nom"])) { - $erreur_injection="yes"; - } - // Ecriture des choix de l'utilisateur dans la base - if (!$erreur_prenom&&!$erreur_injection) { - $nom=str_replace("'","°",$_POST["nom"]); - $connect->Execute("INSERT INTO user_studs VALUES ('$nom', '$numsondage', '$nouveauchoix')"); + if (!$erreur_prenom) { + $sql = 'INSERT INTO user_studs (nom, id_sondage, reponses) VALUES ('. + $connect->Param('nom').','. + $connect->Param('numsondage').','. + $connect->Param('nouveauchoix').')'; + + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($nom, $numsondage, $nouveauchoix)); } } } //action quand on ajoute une colonne au format AUTRE -if ($_POST["ajoutercolonne_x"] && $_POST["nouvellecolonne"]!=""&&($dsondage->format=="A"||$dsondage->format=="A+")) { +if (isset($_POST["ajoutercolonne_x"]) && issetAndNoEmpty('nouvellecolonne') && ($dsondage->format == "A" || $dsondage->format == "A+")) { $nouveauxsujets=$dsujet->sujet; //on rajoute la valeur a la fin de tous les sujets deja entrés @@ -397,22 +420,30 @@ if ($_POST["ajoutercolonne_x"] && $_POST["nouvellecolonne"]!=""&&($dsondage->for $nouveauxsujets=str_replace("'","°",$nouveauxsujets); //mise a jour avec les nouveaux sujets dans la base - $connect->Execute("UPDATE sujet_studs SET sujet = '$nouveauxsujets' WHERE id_sondage = '$numsondage' "); - - //envoi d'un mail pour prévenir l'administrateur du changement - $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; - mail ("$adresseadmin", "" . _("[ADMINISTRATOR] New column for your poll").NOMAPPLICATION, "" . _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") . " : \n\n".get_server_name()."/studs.php?sondage=$numsondage \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,$headers); + $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('nouveauxsujets').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + if ($connect->Execute($sql, array($nouveauxsujets, $numsondage))) { + //envoi d'un mail pour prévenir l'administrateur du changement + $headers="From: ".NOMAPPLICATION." <".ADRESSEMAILADMIN.">\r\nContent-Type: text/plain; charset=\"UTF-8\"\nContent-Transfer-Encoding: 8bit"; + mail ("$adresseadmin", "" . _("[ADMINISTRATOR] New column for your poll").NOMAPPLICATION, "" . + _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") . + " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION, + $headers); + } } //action quand on ajoute une colonne au format DATE -if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+")) { +if (isset($_POST["ajoutercolonne_x"]) && ($dsondage->format == "D" || $dsondage->format == "D+")) { $nouveauxsujets=$dsujet->sujet; - if ($_POST["nouveaujour"]!="vide"&&$_POST["nouveaumois"]!="vide"&&$_POST["nouvelleannee"]!="vide") { - $nouvelledate=mktime(0,0,0,$_POST["nouveaumois"],$_POST["nouveaujour"],$_POST["nouvelleannee"]); + if (isset($_POST["nouveaujour"]) && $_POST["nouveaujour"] != "vide" && + isset($_POST["nouveaumois"]) && $_POST["nouveaumois"] != "vide" && + isset($_POST["nouvelleannee"]) && $_POST["nouvelleannee"] != "vide") { - if ($_POST["nouvelleheuredebut"]!="vide") { + $nouvelledate=mktime(0, 0, 0, $_POST["nouveaumois"], $_POST["nouveaujour"], $_POST["nouvelleannee"]); + + if (isset($_POST["nouvelleheuredebut"]) && $_POST["nouvelleheuredebut"]!="vide"){ $nouvelledate.="@"; $nouvelledate.=$_POST["nouvelleheuredebut"]; $nouvelledate.="h"; @@ -422,7 +453,7 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+ } } - if ($_POST["nouvelleheurefin"]!="vide") { + if (isset($_POST["nouvelleheurefin"]) && $_POST["nouvelleheurefin"]!="vide"){ $nouvelledate.="-"; $nouvelledate.=$_POST["nouvelleheurefin"]; $nouvelledate.="h"; @@ -432,55 +463,63 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+ } } - if($_POST["nouvelleheuredebut"]=="vide"||($_POST["nouvelleheuredebut"]&&$_POST["nouvelleheurefin"]&&(($_POST["nouvelleheuredebut"]<$_POST["nouvelleheurefin"])||(($_POST["nouvelleheuredebut"]==$_POST["nouvelleheurefin"])&&($_POST["nouvelleminutedebut"]<$_POST["nouvelleminutefin"]))))) { - + if($_POST["nouvelleheuredebut"] == "vide" || ($_POST["nouvelleheuredebut"] && $_POST["nouvelleheurefin"] && (($_POST["nouvelleheuredebut"] < $_POST["nouvelleheurefin"]) || (($_POST["nouvelleheuredebut"] == $_POST["nouvelleheurefin"]) && ($_POST["nouvelleminutedebut"] < $_POST["nouvelleminutefin"]))))) { + $erreur_ajout_date = false; } else { - $erreur_ajout_date="yes"; + $erreur_ajout_date = "yes"; } //on rajoute la valeur dans les valeurs - $datesbase=explode(",",$dsujet->sujet); - $taillebase=sizeof($datesbase); + $datesbase = explode(",",$dsujet->sujet); + $taillebase = sizeof($datesbase); //recherche de l'endroit de l'insertion de la nouvelle date dans les dates deja entrées dans le tableau - if ($nouvelledate<$datesbase[0]) { - $cleinsertion=0; - } elseif ($nouvelledate>$datesbase[$taillebase-1]) { - $cleinsertion=count($datesbase); + if ($nouvelledate < $datesbase[0]) { + $cleinsertion = 0; + } elseif ($nouvelledate > $datesbase[$taillebase-1]) { + $cleinsertion = count($datesbase); } else { - for ($i=0;$i$datesbase[$i]&&$nouvelledate<$datesbase[$j]) { - $cleinsertion=$j; + for ($i = 0; $i < count($datesbase); $i++) { + $j = $i + 1; + if ($nouvelledate > $datesbase[$i] && $nouvelledate < $datesbase[$j]) { + $cleinsertion = $j; } } } - array_splice($datesbase,$cleinsertion,0,$nouvelledate); - $cle=array_search ($nouvelledate,$datesbase); - - for ($i=0;$iExecute("UPDATE sujet_studs SET sujet = '$dateinsertion' WHERE id_sondage = '$numsondage' "); + if (isset($erreur_ajout_date) && !$erreur_ajout_date){ + $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('dateinsertion').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($dateinsertion, $numsondage)); + if ($nouvelledate > strtotime($dsondage->date_fin)) { $date_fin=$nouvelledate+200000; - $connect->Execute("UPDATE sondage SET date_fin = '$date_fin' WHERE id_sondage = '$numsondage' "); + $sql = 'UPDATE sondage SET date_fin = '.$connect->Param('date_fin').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($date_fin, $numsondage)); } } //mise a jour des reponses actuelles correspondant au sujet ajouté - while ($data=$user_studs->FetchNextObject(false)) { + $sql = 'UPDATE user_studs SET reponses = '.$connect->Param('reponses').' WHERE nom = '.$connect->Param('nom').' AND id_users='.$connect->Param('id_users'); + $sql = $connect->Prepare($sql); + while ($data = $user_studs->FetchNextObject(false)) { $ensemblereponses=$data->reponses; + $newcar = ''; //parcours de toutes les réponses actuelles - for ($j=0;$j<$nbcolonnes;$j++) { + for ($j = 0; $j < $nbcolonnes; $j++) { $car=substr($ensemblereponses,$j,1); //si les reponses ne concerne pas la colonne ajoutée, on concatene @@ -492,18 +531,18 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+ } //mise a jour des reponses utilisateurs dans la base - if (!$erreur_ajout_date) { - $connect->Execute("update user_studs set reponses='$newcar' where nom='$data->nom' and id_users=$data->id_users"); + if (isset($erreur_ajout_date) && !$erreur_ajout_date){ + $connect->Execute($sql, array($newcar, $data->nom, $data->id_users)); } - - $newcar=""; } //envoi d'un mail pour prévenir l'administrateur du changement - $adresseadmin=$dsondage->mail_admin; + $adresseadmin = $dsondage->mail_admin; + mail ($adresseadmin, _("[ADMINISTRATOR] New column for your poll"), - _("You have added a new column in your poll. \nYou can inform the voters of this change with this link") . " : \n\n".get_server_name()."/studs.php?sondage=$numsondage \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION, + _("You have added a new column in your poll. \nYou can inform the voters of this change with this link"). + " : \n\n".getUrlSondage($numsondage)." \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION, $headers); } else { $erreur_ajout_date="yes"; @@ -512,13 +551,15 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+ //suppression de ligne dans la base -for ($i=0;$i<$nblignes;$i++) { - if ($_POST["effaceligne$i"]||$_POST['effaceligne'.$i.'_x']) { +for ($i = 0; $i < $nblignes; $i++) { + if (isset($_POST["effaceligne$i"]) || isset($_POST['effaceligne'.$i.'_x'])) { $compteur=0; + $sql = 'DELETE FROM user_studs WHERE nom = '.$connect->Param('nom').' AND id_users = '.$connect->Param('id_users'); + $sql = $connect->Prepare($sql); while ($data=$user_studs->FetchNextObject(false)) { if ($compteur==$i){ - $connect->Execute("delete from user_studs where nom = '$data->nom' and id_users = '$data->id_users'"); + $connect->Execute($sql, array($data->nom, $data->id_users)); } $compteur++; @@ -528,11 +569,15 @@ for ($i=0;$i<$nblignes;$i++) { //suppression d'un commentaire utilisateur -$comment_user=$connect->Execute("select * from comments where id_sondage='$numsondage' order by id_comment"); +$sql = 'SELECT * FROM comments WHERE id_sondage='.$connect->Param('numsondage').' ORDER BY id_comment'; +$sql = $connect->Prepare($sql); +$comment_user = $connect->Execute($sql, array($numsondage)); $i = 0; while ($dcomment = $comment_user->FetchNextObject(false)) { - if ($_POST['suppressioncomment'.$i.'_x']) { - $connect->Execute("delete from comments where id_comment = '$dcomment->id_comment'"); + if (isset($_POST['suppressioncomment'.$i.'_x'])) { + $sql = 'DELETE FROM comments WHERE id_comment = '.$connect->Param('id_comment'); + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($dcomment->id_comment)); } $i++; @@ -540,14 +585,17 @@ while ($dcomment = $comment_user->FetchNextObject(false)) { //on teste pour voir si une ligne doit etre modifiée -for ($i=0;$i<$nblignes;$i++) { - if (isset($_POST["modifierligne$i"])||isset($_POST['modifierligne'.$i.'_x'])) { +$testmodifier = false; +$testligneamodifier = false; + +for ($i = 0; $i < $nblignes; $i++) { + if (isset($_POST["modifierligne$i"]) || isset($_POST['modifierligne'.$i.'_x'])) { $ligneamodifier=$i; $testligneamodifier="true"; } //test pour voir si une ligne est a modifier - if (isset($_POST["validermodifier$i"])) { + if (isset($_POST["validermodifier$i"]) || isset($_POST['validermodifier'.$i.'_x'])) { $modifier=$i; $testmodifier="true"; } @@ -556,7 +604,8 @@ for ($i=0;$i<$nblignes;$i++) { //si le test est valide alors on affiche des checkbox pour entrer de nouvelles valeurs if ($testmodifier) { - for ($i=0;$i<$nbcolonnes;$i++) { + $nouveauchoix = ''; + for ($i = 0; $i < $nbcolonnes; $i++) { //recuperation des nouveaux choix de l'utilisateur if (isset($_POST["choix$i"])) { $nouveauchoix.="1"; @@ -567,10 +616,12 @@ if ($testmodifier) { $compteur=0; - while ( $data=$user_studs->FetchNextObject(false)) { + while ($data=$user_studs->FetchNextObject(false)) { //mise a jour des données de l'utilisateur dans la base SQL if ($compteur==$modifier) { - $connect->Execute("update user_studs set reponses='$nouveauchoix' where nom='$data->nom' and id_users='$data->id_users'"); + $sql = 'UPDATE user_studs SET reponses = '.$connect->Param('reponses').' WHERE nom = '.$connect->Param('nom').' AND id_users = '.$connect->Param('id_users'); + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($nouveauchoix, $data->nom, $data->id_users)); } $compteur++; @@ -579,56 +630,87 @@ if ($testmodifier) { //suppression de colonnes dans la base -for ($i=0;$i<$nbcolonnes;$i++) { - if ((isset($_POST["effacecolonne$i"])||isset($_POST['effacecolonne'.$i.'_x']))&&$nbcolonnes>1){ - $toutsujet=explode(",",$dsujet->sujet); - $j=0; +for ($i = 0; $i < $nbcolonnes; $i++) { + if ((isset($_POST["effacecolonne$i"]) || isset($_POST['effacecolonne'.$i.'_x'])) && $nbcolonnes > 1){ + $toutsujet = explode(",",$dsujet->sujet); + $j = 0; + $nouveauxsujets = ''; //parcours de tous les sujets actuels - while ($toutsujet[$j]) { + while (isset($toutsujet[$j])) { //si le sujet n'est pas celui qui a été effacé alors on concatene - if ($i!=$j) { - $nouveauxsujets.=','; - $nouveauxsujets.=$toutsujet[$j]; + if ($i != $j) { + $nouveauxsujets .= ','; + $nouveauxsujets .= $toutsujet[$j]; } $j++; } //on enleve la virgule au début - $nouveauxsujets=substr("$nouveauxsujets",1); + $nouveauxsujets = substr("$nouveauxsujets", 1); //nettoyage des reponses actuelles correspondant au sujet effacé $compteur = 0; - while ($data=$user_studs->FetchNextObject(false)) { - $ensemblereponses=$data->reponses; + $sql = 'UPDATE user_studs SET reponses = '.$connect->Param('reponses').' WHERE nom = '.$connect->Param('nom').' AND id_users = '.$connect->Param('id_users'); + $sql = $connect->Prepare($sql); + + while ($data = $user_studs->FetchNextObject(false)) { + $newcar = ''; + $ensemblereponses = $data->reponses; //parcours de toutes les réponses actuelles - for ($j=0;$j<$nbcolonnes;$j++) { - $car=substr($ensemblereponses,$j,1); + for ($j = 0; $j < $nbcolonnes; $j++) { + $car=substr($ensemblereponses, $j, 1); //si les reponses ne concerne pas la colonne effacée, on concatene - if ($i!=$j) { - $newcar.=$car; + if ($i != $j) { + $newcar .= $car; } } $compteur++; //mise a jour des reponses utilisateurs dans la base - $connect->Execute("update user_studs set reponses='$newcar' where nom='$data->nom' and id_users=$data->id_users"); - $newcar=""; + $connect->Execute($sql, array($newcar, $data->nom, $data->id_users)); } //mise a jour des sujets dans la base - $connect->Execute("update sujet_studs set sujet = '$nouveauxsujets' where id_sondage = '$numsondage' "); + $sql = 'UPDATE sujet_studs SET sujet = '.$connect->Param('nouveauxsujets').' WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + $connect->Execute($sql, array($nouveauxsujets, $numsondage)); } } //recuperation des donnes de la base -$sondage=$connect->Execute("select * from sondage where id_sondage_admin = '$numsondageadmin'"); -$sujets=$connect->Execute("select * from sujet_studs where id_sondage='$numsondage'"); -$user_studs=$connect->Execute("select * from user_studs where id_sondage='$numsondage' order by id_users"); +$sql = 'SELECT * FROM sondage WHERE id_sondage_admin = '.$connect->Param('numsondageadmin'); +$sql = $connect->Prepare($sql); +$sondage = $connect->Execute($sql, array($numsondageadmin)); + +if ($sondage !== false) { + $sql = 'SELECT * FROM sujet_studs WHERE id_sondage = '.$connect->Param('numsondage'); + $sql = $connect->Prepare($sql); + $sujets = $connect->Execute($sql, array($numsondage)); + + $sql = 'SELECT * FROM user_studs WHERE id_sondage = '.$connect->Param('numsondage').' order by id_users'; + $sql = $connect->Prepare($sql); + $user_studs = $connect->Execute($sql, array($numsondage)); +} else { + print_header(false); + echo ''."\n"; + logo(); + bandeau_tete(); + bandeau_titre(_("Error!")); + echo '
'."\n"; + print "

" . _("This poll doesn't exist !") . "



"."\n"; + print "" . _("Back to the homepage of ") . " ".NOMAPPLICATION.". "."\n"; + echo '



'."\n"; + echo '
'."\n"; + bandeau_pied(); + echo''."\n"; + echo ''."\n"; + die(); +} //on recupere les données et les sujets du sondage $dsujet=$sujets->FetchObject(false); @@ -654,7 +736,7 @@ echo ''."\n"; echo ''."\n"; //boucle pour l'affichage des boutons de suppression de colonne -for ($i=0;$toutsujet[$i];$i++) { +for ($i = 0; isset($toutsujet[$i]); $i++) { echo ''."\n"; } @@ -670,11 +752,23 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") { //affichage des années $colspan=1; - for ($i=0;$i'.strftime("%Y",$toutsujet[$i]).''."\n"; + echo ''.strftime("%Y", $current).''."\n"; $colspan=1; } } @@ -686,15 +780,27 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") { echo ''."\n"; //affichage des mois - $colspan=1; - for ($i=0;$i'.date("F",$toutsujet[$i]).''."\n"; + echo ''.date("F",$current).''."\n"; } else { - echo ''.strftime("%B",$toutsujet[$i]).''."\n"; + echo ''.strftime("%B",$current).''."\n"; } $colspan=1; @@ -708,15 +814,27 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") { echo ''."\n"; //affichage des jours - $colspan=1; - for ($i=0;$i'.date("D jS",$toutsujet[$i]).''."\n"; + echo ''.date("D jS",$current).''."\n"; } else { - echo ''.strftime("%a %e",$toutsujet[$i]).''."\n"; + echo ''.strftime("%a %e",$current).''."\n"; } $colspan=1; @@ -732,9 +850,13 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") { echo ''."\n"; echo ''."\n"; - for ($i=0;$toutsujet[$i];$i++) { - $heures=explode("@",$toutsujet[$i]); - echo ''.$heures[1].''."\n"; + for ($i = 0; isset($toutsujet[$i]); $i++) { + $heures=explode("@", $toutsujet[$i]); + if (isset($heures[1])) { + echo ''.$heures[1].''."\n"; + } else { + echo ''."\n"; + } } echo ''."\n"; @@ -748,7 +870,7 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") { echo ''."\n"; echo ''."\n"; - for ($i=0;$toutsujet[$i];$i++) { + for ($i = 0; isset($toutsujet[$i]); $i++) { echo ''.$toutsujet[$i].''."\n"; } @@ -758,11 +880,11 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") { //affichage des resultats -$somme[]=0; +$somme[] = 0; $compteur = 0; -while ($data=$user_studs->FetchNextObject(false)) { - $ensemblereponses=$data->reponses; +while ($data = $user_studs->FetchNextObject(false)) { + $ensemblereponses = $data->reponses; echo ''."\n"; echo ''."\n"; @@ -773,10 +895,13 @@ while ($data=$user_studs->FetchNextObject(false)) { //si la ligne n'est pas a changer, on affiche les données if (!$testligneamodifier) { - for ($k=0;$k<$nbcolonnes;$k++) { - $car=substr($ensemblereponses,$k,1); - if ($car=="1") { + for ($k = 0; $k < $nbcolonnes; $k++) { + $car = substr($ensemblereponses, $k, 1); + if ($car == "1") { echo 'OK'."\n"; + if (isset($somme[$k]) === false) { + $somme[$k] = 0; + } $somme[$k]++; } else { echo ''."\n"; @@ -785,21 +910,24 @@ while ($data=$user_studs->FetchNextObject(false)) { } else { //sinon on remplace les choix de l'utilisateur par une ligne de checkbox pour recuperer de nouvelles valeurs //si c'est bien la ligne a modifier on met les checkbox - if ($compteur=="$ligneamodifier") { - for ($j=0;$j<$nbcolonnes;$j++) { - $car=substr($ensemblereponses,$j,1); - if ($car=="1") { + if ($compteur == "$ligneamodifier") { + for ($j = 0; $j < $nbcolonnes; $j++) { + $car = substr($ensemblereponses, $j, 1); + if ($car == "1") { echo ''."\n"; } else { echo ''."\n"; } } } else { //sinon on affiche les lignes normales - for ($k=0;$k<$nbcolonnes;$k++) { - $car=substr($ensemblereponses,$k,1); + for ($k = 0; $k < $nbcolonnes; $k++) { + $car = substr($ensemblereponses, $k, 1); - if ($car=="1") { + if ($car == "1") { echo 'OK'."\n"; + if (isset($somme[$k]) === false) { + $somme[$k] = 0; + } $somme[$k]++; } else { echo ''."\n"; @@ -814,9 +942,9 @@ while ($data=$user_studs->FetchNextObject(false)) { } //demande de confirmation pour modification de ligne - for ($i=0;$i<$nblignes;$i++) { - if (isset($_POST["modifierligne$i"])||isset($_POST['modifierligne'.$i.'_x'])) { - if ($compteur==$i) { + for ($i = 0; $i < $nblignes; $i++) { + if (isset($_POST["modifierligne$i"]) || isset($_POST['modifierligne'.$i.'_x'])) { + if ($compteur == $i) { echo ''."\n"; } } @@ -835,7 +963,7 @@ echo '
'."\n"; echo ''."\n"; //une ligne de checkbox pour le choix du nouvel utilisateur -for ($i=0;$i<$nbcolonnes;$i++) { +for ($i = 0; $i < $nbcolonnes; $i++) { echo ''."\n"; } @@ -844,13 +972,15 @@ echo '$meilleurecolonne) { - $meilleurecolonne=$somme[$i]; +for ($i = 0; $i < $nbcolonnes + 1; $i++) { + if (isset($somme[$i]) === true) { + if ($i == "0") { + $meilleurecolonne = $somme[$i]; + } + + if (isset($somme[$i]) && $somme[$i] > $meilleurecolonne){ + $meilleurecolonne = $somme[$i]; + } } } @@ -860,14 +990,18 @@ echo ''."\n"; echo ''."\n"; echo ''. _("Addition") .''."\n"; -for ($i=0;$i<$nbcolonnes;$i++) { - $affichesomme=$somme[$i]; - - if ($affichesomme=="") { - $affichesomme="0"; +for ($i = 0; $i < $nbcolonnes; $i++) { + if (isset($somme[$i]) === true) { + $affichesomme = $somme[$i]; + } else { + $affichesomme = ''; } - if ($somme[$i]==$meilleurecolonne) { + if ($affichesomme == "") { + $affichesomme = "0"; + } + + if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){ echo ''.$affichesomme.''."\n"; } else { echo ''.$affichesomme.''."\n"; @@ -878,8 +1012,8 @@ echo ''."\n"; echo ''."\n"; echo ''."\n"; -for ($i=0;$i<$nbcolonnes;$i++) { - if ($somme[$i]==$meilleurecolonne&&$somme[$i]) { +for ($i = 0; $i < $nbcolonnes; $i++) { + if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){ echo 'Meilleur resultat'."\n"; } else { echo ''."\n"; @@ -890,25 +1024,25 @@ echo ''."\n"; // S'il a oublié de remplir un nom -if (($_POST["boutonp"]||$_POST["boutonp_x"])&&$_POST["nom"]=="") { +if ((isset($_POST["boutonp"]) || isset($_POST["boutonp_x"])) && $_POST["nom"] == "") { echo ''."\n"; print "" . _("Enter a name !") . "\n"; echo ''."\n"; } -if ($erreur_prenom) { +if (isset($erreur_prenom) && $erreur_prenom) { echo ''."\n"; print "" . _("The name you've chosen already exist in this poll!") . "\n"; echo ''."\n"; } -if ($erreur_injection) { +if (isset($erreur_injection) && $erreur_injection) { echo ''."\n"; print "" . _("Characters \" ' < et > are not permitted") . "\n"; echo ''."\n"; } -if ($erreur_ajout_date) { +if (isset($erreur_ajout_date) && $erreur_ajout_date) { echo ''."\n"; print "" . _("The date is not correct !") . "\n"; echo ''."\n"; @@ -924,28 +1058,30 @@ echo 'document.formulaire.nom.focus();'."\n"; echo ''."\n"; //recuperation des valeurs des sujets et adaptation pour affichage -$toutsujet=explode(",",$dsujet->sujet); +$toutsujet = explode(",", $dsujet->sujet); //recuperation des sujets des meilleures colonnes -$compteursujet=0; -for ($i=0;$i<$nbcolonnes;$i++) { - if ($somme[$i]==$meilleurecolonne) { +$compteursujet = 0; +$meilleursujet = ''; +for ($i = 0; $i < $nbcolonnes; $i++) { + if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){ $meilleursujet.=", "; - if ($dsondage->format=="D"||$dsondage->format=="D+") { - $meilleursujetexport=$toutsujet[$i]; - if (strpos($toutsujet[$i],'@') !== false) { - $toutsujetdate=explode("@",$toutsujet[$i]); - if ($_SESSION["langue"]=="EN") { - $meilleursujet.=date("l, F jS Y",$toutsujetdate[0])." " . _("for") ." ".$toutsujetdate[1]; + if ($dsondage->format == "D" || $dsondage->format == "D+") { + $meilleursujetexport = $toutsujet[$i]; + + if (strpos($toutsujet[$i], '@') !== false) { + $toutsujetdate = explode("@", $toutsujet[$i]); + if ($_SESSION["langue"] == "EN") { + $meilleursujet .= date("l, F jS Y",$toutsujetdate[0])." " . _("for") ." ".$toutsujetdate[1]; } else { - $meilleursujet.=strftime(_("%A, den %e. %B %Y"),$toutsujetdate[0]). ' ' . _("for") . ' ' . $toutsujetdate[1]; + $meilleursujet .= strftime(_("%A, den %e. %B %Y"),$toutsujetdate[0]). ' ' . _("for") . ' ' . $toutsujetdate[1]; } } else { - if ($_SESSION["langue"]=="EN") { - $meilleursujet.=date("l, F jS Y",$toutsujet[$i]); + if ($_SESSION["langue"] == "EN") { + $meilleursujet .= date("l, F jS Y",$toutsujet[$i]); } else { - $meilleursujet.=strftime(_("%A, den %e. %B %Y"),$toutsujet[$i]); + $meilleursujet .= strftime(_("%A, den %e. %B %Y"),$toutsujet[$i]); } } } else { @@ -957,21 +1093,21 @@ for ($i=0;$i<$nbcolonnes;$i++) { } //adaptation pour affichage des valeurs -$meilleursujet=substr("$meilleursujet",1); -$meilleursujet=str_replace("°","'",$meilleursujet); +$meilleursujet = substr("$meilleursujet", 1); +$meilleursujet = str_replace("°", "'", $meilleursujet); //ajout du S si plusieurs votes $vote_str = _('vote'); -if ($meilleurecolonne!="1") { +if (isset($meilleurecolonne) && $meilleurecolonne > 1) { $vote_str = _('votes'); } echo '

'."\n"; //affichage de la phrase annoncant le meilleur sujet -if ($compteursujet=="1"&&$meilleurecolonne) { +if (isset($meilleurecolonne) && $compteursujet == "1") { print "\"Meilleur" . _("The best choice at this time is") . " : $meilleursujet " . _("with") . " $meilleurecolonne " . $vote_str . ".
\n"; -} elseif ($meilleurecolonne) { +} elseif (isset($meilleurecolonne)) { print "\"Meilleur " . _("The bests choices at this time are") . " : $meilleursujet " . _("with") . " $meilleurecolonne " . $vote_str . ".
\n"; } @@ -988,44 +1124,29 @@ echo '
'."\n"; //Changer le titre du sondage $adresseadmin=$dsondage->mail_admin; echo _("Change the title") .' :
' . - ''. + ''. '

'."\n"; -echo ''."\n"; - -if ($dsondage->format=="D"||$dsondage->format=="D+") { - echo '

'."\n"; - echo _("Generate the convocation letter (.PDF), choose the place to meet and validate") .'
'; - echo ''; - echo ''; - echo ''; - echo '

'; - echo '
'."\n"; - // ''. _("Enter a meeting place!") .'

'."\n"; -} - -// TODO -if ($_POST["exportpdf_x"]&&!$_POST["lieureunion"]) { - echo ''. _("Enter a meeting place!") .'

'."\n"; -} //si la valeur du nouveau titre est invalide : message d'erreur -if (($_POST["boutonnouveautitre"]||$_POST["boutonnouveautitre_x"]) && $_POST["nouveautitre"]=="") { +if ((isset($_POST["boutonnouveautitre"]) || isset($_POST["boutonnouveautitre_x"])) && !issetAndNoEmpty('nouveautitre')) { echo ''. _("Enter a new title!") .'

'."\n"; } //Changer les commentaires du sondage -echo _("Change the comments") .' :



'."\n"; +echo _("Change the comments") .' :



'."\n"; //Changer l'adresse de l'administrateur echo _("Change your email address") .' :

'."\n"; //si l'adresse est invalide ou le champ vide : message d'erreur -if (($_POST["boutonnouvelleadresse"]||$_POST["boutonnouvelleadresse_x"]) && $_POST["nouvelleadresse"]=="") { +if ((isset($_POST["boutonnouvelleadresse"]) || isset($_POST["boutonnouvelleadresse_x"])) && !issetAndNoEmpty('nouvelleadresse')) { echo ''. _("Enter a new email address!") .'

'."\n"; } //affichage des commentaires des utilisateurs existants -$comment_user=$connect->Execute("select * from comments where id_sondage='$numsondage' order by id_comment"); +$sql = 'SELECT * FROM comments WHERE id_sondage='.$connect->Param('numsondage').' ORDER BY id_comment'; +$sql = $connect->Prepare($sql); +$comment_user = $connect->Execute($sql, array($numsondage)); if ($comment_user->RecordCount() != 0) { print "
" . _("Comments") . " :
\n"; @@ -1038,7 +1159,7 @@ if ($comment_user->RecordCount() != 0) { echo '
'; } -if ($erreur_commentaire_vide=="yes") { +if (isset($erreur_commentaire_vide) && $erreur_commentaire_vide=="yes") { print "" . _("Enter a name and a comment!") . ""; } @@ -1052,11 +1173,29 @@ echo ''."\n"; echo _("Remove your poll") .' :

'."\n"; -if ($_POST["suppressionsondage"]) { +if (isset($_POST["suppressionsondage"])) { echo _("Confirm removal of your poll") .' : '."\n"; echo '

'."\n"; } +echo ''."\n"; + +if ($dsondage->format == "D" || $dsondage->format == "D+") { + echo '
'."\n"; + echo _("Generate the convocation letter (.PDF), choose the place to meet and validate") .'
'; + echo ''; + echo ''; + echo ''; + echo '

'; + echo '
'."\n"; + // ''. _("Enter a meeting place!") .'

'."\n"; +} + +// TODO +if (isset($_POST["exportpdf_x"]) && !issetAndNoEmpty('lieureunion')) { + echo ''. _("Enter a meeting place!") .'

'."\n"; +} + echo ''."\n"; echo '

'."\n";