Delete php warning and secure SQL

This commit is contained in:
Simon Leblanc 2011-05-22 02:13:44 +02:00
parent 7d5c2a6fb8
commit d43e818c11

View File

@ -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);
@ -109,28 +109,39 @@ EOF;
$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 {
//modification de la base SQL avec le nouveau titre
$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);
//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 . "'");
}
}
}
// 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 {
$commentaires = htmlentities(html_entity_decode($_POST['nouveauxcommentaires'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
//modification de la base SQL avec les nouveaux commentaires
$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,
@ -138,18 +149,22 @@ if (isset($_POST["boutonnouveauxcommentaires"])) {
" :\n\n".getUrlSondage($numsondageadmin, true)." \n\n" .
_("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
$headers);
//modification de la base SQL avec les nouveaux commentaires
$connect->Execute("UPDATE sondage SET commentaires = '" . $connect->qstr(strip_tags($nouveauxcommentaires)) . "' WHERE id_sondage = '" . $numsondage . "'");
}
}
}
//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 {
$nouvelleadresse = htmlentities(html_entity_decode($_POST['nouvelleadresse'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
//modification de la base SQL avec la nouvelle adresse
$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,
@ -157,9 +172,7 @@ if (isset($_POST["boutonnouvelleadresse"])){
" :\n\n".getUrlSondage($numsondageadmin, true)."\n\n" .
_("Thanks for your confidence.") . "\n" . NOMAPPLICATION,
$headers);
//modification de la base SQL avec la nouvelle adresse
$connect->Execute("UPDATE sondage SET mail_admin = '" . $_POST['nouvelleadresse'] . "' WHERE id_sondage = '" . $numsondage . "'");
}
}
}
@ -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 '<body>'."\n";
logo();
@ -198,7 +210,7 @@ if ($_POST["ajoutsujet_x"]){
echo '<select name="nouveaumois"> '."\n";
echo '<OPTION VALUE="vide"></OPTION>'."\n";
for($i = 1; $i < 13; $i++) {
echo '<OPTION VALUE="'.$i.'">'.strftime('%B').'</OPTION>'."\n";
echo '<OPTION VALUE="'.$i.'">'.strftime('%B', mktime(0, 0, 0, $i)).'</OPTION>'."\n";
}
echo '</SELECT>'."\n";
@ -254,10 +266,17 @@ 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:');
//destruction des données dans la base SQL
$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');
@ -269,12 +288,6 @@ if ($_POST["confirmesuppression"]) {
_("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' ");
//affichage de l'ecran de confirmation de suppression de sondage
print_header();
echo '<body>'."\n";
@ -294,30 +307,35 @@ if ($_POST["confirmesuppression"]) {
echo '</html>'."\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 .'")') );
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;
}
}
}
//s'il existe on affiche la page normale
@ -356,9 +374,12 @@ $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"]) {
}
}
$nom = htmlentities(html_entity_decode($_POST["nom"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8');
while($user = $user_studs->FetchNextObject(false)) {
if ($_POST["nom"]==$user->nom){
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' ");
$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".get_server_name()."/studs.php?sondage=$numsondage \n\n " . _("Thanks for your confidence.") . "\n".NOMAPPLICATION,$headers);
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") {
if (isset($_POST["nouveaujour"]) && $_POST["nouveaujour"] != "vide" &&
isset($_POST["nouveaumois"]) && $_POST["nouveaumois"] != "vide" &&
isset($_POST["nouvelleannee"]) && $_POST["nouvelleannee"] != "vide") {
$nouvelledate=mktime(0, 0, 0, $_POST["nouveaumois"], $_POST["nouveaujour"], $_POST["nouvelleannee"]);
if ($_POST["nouvelleheuredebut"]!="vide") {
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";
@ -433,7 +464,7 @@ 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"]))))) {
$erreur_ajout_date = false;
} else {
$erreur_ajout_date = "yes";
}
@ -458,7 +489,7 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+
array_splice($datesbase, $cleinsertion, 0, $nouvelledate);
$cle = array_search($nouvelledate, $datesbase);
$dateinsertion = '';
for ($i = 0; $i < count($datesbase); $i++) {
$dateinsertion.=",";
$dateinsertion.=$datesbase[$i];
@ -467,17 +498,25 @@ if ($_POST["ajoutercolonne_x"] &&($dsondage->format=="D"||$dsondage->format=="D+
$dateinsertion = substr("$dateinsertion", 1);
//mise a jour avec les nouveaux sujets dans la base
if (!$erreur_ajout_date) {
$connect->Execute("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é
$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++) {
@ -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;
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";
@ -513,12 +552,14 @@ 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']) {
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,6 +585,9 @@ while ($dcomment = $comment_user->FetchNextObject(false)) {
//on teste pour voir si une ligne doit etre modifiée
$testmodifier = false;
$testligneamodifier = false;
for ($i = 0; $i < $nblignes; $i++) {
if (isset($_POST["modifierligne$i"]) || isset($_POST['modifierligne'.$i.'_x'])) {
$ligneamodifier=$i;
@ -547,7 +595,7 @@ for ($i=0;$i<$nblignes;$i++) {
}
//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,6 +604,7 @@ for ($i=0;$i<$nblignes;$i++) {
//si le test est valide alors on affiche des checkbox pour entrer de nouvelles valeurs
if ($testmodifier) {
$nouveauchoix = '';
for ($i = 0; $i < $nbcolonnes; $i++) {
//recuperation des nouveaux choix de l'utilisateur
if (isset($_POST["choix$i"])) {
@ -570,7 +619,9 @@ if ($testmodifier) {
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++;
@ -583,9 +634,10 @@ 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 .= ',';
@ -600,7 +652,11 @@ for ($i=0;$i<$nbcolonnes;$i++) {
//nettoyage des reponses actuelles correspondant au sujet effacé
$compteur = 0;
$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
@ -615,20 +671,46 @@ for ($i=0;$i<$nbcolonnes;$i++) {
$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 '<body>'."\n";
logo();
bandeau_tete();
bandeau_titre(_("Error!"));
echo '<div class=corpscentre>'."\n";
print "<H2>" . _("This poll doesn't exist !") . "</H2><br><br>"."\n";
print "" . _("Back to the homepage of ") . " <a href=\"index.php\"> ".NOMAPPLICATION."</A>. "."\n";
echo '<br><br><br><br>'."\n";
echo '</div>'."\n";
bandeau_pied();
echo'</body>'."\n";
echo '</html>'."\n";
die();
}
//on recupere les données et les sujets du sondage
$dsujet=$sujets->FetchObject(false);
@ -654,7 +736,7 @@ echo '<td></td>'."\n";
echo '<td></td>'."\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 '<td class=somme><input type="image" name="effacecolonne'.$i.'" value="Effacer la colonne" src="images/cancel.png"></td>'."\n";
}
@ -671,10 +753,22 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
//affichage des années
$colspan=1;
for ($i = 0; $i < count($toutsujet); $i++) {
if (strftime("%Y",$toutsujet[$i])==strftime("%Y",$toutsujet[$i+1])) {
$current = $toutsujet[$i];
if (strpos($toutsujet[$i], '@') !== false) {
$current = substr($toutsujet[$i], 0, strpos($toutsujet[$i], '@'));
}
if (isset($toutsujet[$i+1]) && strpos($toutsujet[$i+1], '@') !== false) {
$next = substr($toutsujet[$i+1], 0, strpos($toutsujet[$i+1], '@'));
} elseif (isset($toutsujet[$i+1])) {
$next = $toutsujet[$i+1];
}
if (isset($toutsujet[$i+1]) && strftime("%Y",$current) == strftime("%Y",$next)){
$colspan++;
} else {
echo '<td colspan='.$colspan.' class="annee">'.strftime("%Y",$toutsujet[$i]).'</td>'."\n";
echo '<td colspan='.$colspan.' class="annee">'.strftime("%Y", $current).'</td>'."\n";
$colspan=1;
}
}
@ -688,13 +782,25 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
//affichage des mois
$colspan = 1;
for ($i = 0; $i < count($toutsujet); $i++) {
if (strftime("%B",$toutsujet[$i])==strftime("%B",$toutsujet[$i+1])&&strftime("%Y",$toutsujet[$i])==strftime("%Y",$toutsujet[$i+1])) {
$current = $toutsujet[$i];
if (strpos($toutsujet[$i], '@') !== false) {
$current = substr($toutsujet[$i], 0, strpos($toutsujet[$i], '@'));
}
if (isset($toutsujet[$i+1]) && strpos($toutsujet[$i+1], '@') !== false) {
$next = substr($toutsujet[$i+1], 0, strpos($toutsujet[$i+1], '@'));
} elseif (isset($toutsujet[$i+1])) {
$next = $toutsujet[$i+1];
}
if (isset($toutsujet[$i+1]) && strftime("%B", $current) == strftime("%B", $next) && strftime("%Y", $current) == strftime("%Y", $next)){
$colspan++;
} else {
if ($_SESSION["langue"]=="EN") {
echo '<td colspan='.$colspan.' class="mois">'.date("F",$toutsujet[$i]).'</td>'."\n";
echo '<td colspan='.$colspan.' class="mois">'.date("F",$current).'</td>'."\n";
} else {
echo '<td colspan='.$colspan.' class="mois">'.strftime("%B",$toutsujet[$i]).'</td>'."\n";
echo '<td colspan='.$colspan.' class="mois">'.strftime("%B",$current).'</td>'."\n";
}
$colspan=1;
@ -710,13 +816,25 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
//affichage des jours
$colspan = 1;
for ($i = 0; $i < count($toutsujet); $i++) {
if (strftime("%a %e",$toutsujet[$i])==strftime("%a %e",$toutsujet[$i+1])&&strftime("%B",$toutsujet[$i])==strftime("%B",$toutsujet[$i+1])) {
$current = $toutsujet[$i];
if (strpos($toutsujet[$i], '@') !== false) {
$current = substr($toutsujet[$i], 0, strpos($toutsujet[$i], '@'));
}
if (isset($toutsujet[$i+1]) && strpos($toutsujet[$i+1], '@') !== false) {
$next = substr($toutsujet[$i+1], 0, strpos($toutsujet[$i+1], '@'));
} elseif (isset($toutsujet[$i+1])) {
$next = $toutsujet[$i+1];
}
if (isset($toutsujet[$i+1]) && strftime("%a %e",$current)==strftime("%a %e",$next)&&strftime("%B",$current)==strftime("%B",$next)){
$colspan++;
} else {
if ($_SESSION["langue"]=="EN") {
echo '<td colspan='.$colspan.' class="jour">'.date("D jS",$toutsujet[$i]).'</td>'."\n";
echo '<td colspan='.$colspan.' class="jour">'.date("D jS",$current).'</td>'."\n";
} else {
echo '<td colspan='.$colspan.' class="jour">'.strftime("%a %e",$toutsujet[$i]).'</td>'."\n";
echo '<td colspan='.$colspan.' class="jour">'.strftime("%a %e",$current).'</td>'."\n";
}
$colspan=1;
@ -732,9 +850,13 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
echo '<td></td>'."\n";
echo '<td></td>'."\n";
for ($i=0;$toutsujet[$i];$i++) {
for ($i = 0; isset($toutsujet[$i]); $i++) {
$heures=explode("@", $toutsujet[$i]);
if (isset($heures[1])) {
echo '<td class="heure">'.$heures[1].'</td>'."\n";
} else {
echo '<td class="heure"></td>'."\n";
}
}
echo '<td class="heure"><input type="image" name="ajoutsujet" src="images/add-16.png" alt="' . _('Add') . '"></td>'."\n";
@ -748,7 +870,7 @@ if ($dsondage->format=="D"||$dsondage->format=="D+") {
echo '<td></td>'."\n";
echo '<td></td>'."\n";
for ($i=0;$toutsujet[$i];$i++) {
for ($i = 0; isset($toutsujet[$i]); $i++) {
echo '<td class="sujet">'.$toutsujet[$i].'</td>'."\n";
}
@ -777,6 +899,9 @@ while ($data=$user_studs->FetchNextObject(false)) {
$car = substr($ensemblereponses, $k, 1);
if ($car == "1") {
echo '<td class="ok">OK</td>'."\n";
if (isset($somme[$k]) === false) {
$somme[$k] = 0;
}
$somme[$k]++;
} else {
echo '<td class="non"></td>'."\n";
@ -800,6 +925,9 @@ while ($data=$user_studs->FetchNextObject(false)) {
if ($car == "1") {
echo '<td class="ok">OK</td>'."\n";
if (isset($somme[$k]) === false) {
$somme[$k] = 0;
}
$somme[$k]++;
} else {
echo '<td class="non"></td>'."\n";
@ -845,14 +973,16 @@ echo '</tr>'."\n";
//determination du meilleur choix
for ($i = 0; $i < $nbcolonnes + 1; $i++) {
if (isset($somme[$i]) === true) {
if ($i == "0") {
$meilleurecolonne = $somme[$i];
}
if ($somme[$i]>$meilleurecolonne) {
if (isset($somme[$i]) && $somme[$i] > $meilleurecolonne){
$meilleurecolonne = $somme[$i];
}
}
}
//affichage de la ligne contenant les sommes de chaque colonne
@ -861,13 +991,17 @@ echo '<td></td>'."\n";
echo '<td align="right">'. _("Addition") .'</td>'."\n";
for ($i = 0; $i < $nbcolonnes; $i++) {
if (isset($somme[$i]) === true) {
$affichesomme = $somme[$i];
} else {
$affichesomme = '';
}
if ($affichesomme == "") {
$affichesomme = "0";
}
if ($somme[$i]==$meilleurecolonne) {
if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){
echo '<td class="somme">'.$affichesomme.'</td>'."\n";
} else {
echo '<td class="somme">'.$affichesomme.'</td>'."\n";
@ -879,7 +1013,7 @@ echo '<td></td>'."\n";
echo '<td class="somme"></td>'."\n";
for ($i = 0; $i < $nbcolonnes; $i++) {
if ($somme[$i]==$meilleurecolonne&&$somme[$i]) {
if (isset($somme[$i]) === true && isset($meilleurecolonne) === true && $somme[$i] == $meilleurecolonne){
echo '<td class="somme"><img src="images/medaille.png" alt="Meilleur resultat"></td>'."\n";
} else {
echo '<td class="somme"></td>'."\n";
@ -890,25 +1024,25 @@ echo '</tr>'."\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 '<tr>'."\n";
print "<td colspan=10><font color=#FF0000>" . _("Enter a name !") . "</font>\n";
echo '</tr>'."\n";
}
if ($erreur_prenom) {
if (isset($erreur_prenom) && $erreur_prenom) {
echo '<tr>'."\n";
print "<td colspan=10><font color=#FF0000>" . _("The name you've chosen already exist in this poll!") . "</font></td>\n";
echo '</tr>'."\n";
}
if ($erreur_injection) {
if (isset($erreur_injection) && $erreur_injection) {
echo '<tr>'."\n";
print "<td colspan=10><font color=#FF0000>" . _("Characters \" ' < et > are not permitted") . "</font></td>\n";
echo '</tr>'."\n";
}
if ($erreur_ajout_date) {
if (isset($erreur_ajout_date) && $erreur_ajout_date) {
echo '<tr>'."\n";
print "<td colspan=10><font color=#FF0000>" . _("The date is not correct !") . "</font></td>\n";
echo '</tr>'."\n";
@ -928,12 +1062,14 @@ $toutsujet=explode(",",$dsujet->sujet);
//recuperation des sujets des meilleures colonnes
$compteursujet = 0;
$meilleursujet = '';
for ($i = 0; $i < $nbcolonnes; $i++) {
if ($somme[$i]==$meilleurecolonne) {
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") {
@ -962,16 +1098,16 @@ $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 '<p class=affichageresultats>'."\n";
//affichage de la phrase annoncant le meilleur sujet
if ($compteursujet=="1"&&$meilleurecolonne) {
if (isset($meilleurecolonne) && $compteursujet == "1") {
print "<img src=\"images/medaille.png\" alt=\"Meilleur resultat\">" . _("The best choice at this time is") . " : <b>$meilleursujet </b>" . _("with") . " <b>$meilleurecolonne </b>" . $vote_str . ".<br>\n";
} elseif ($meilleurecolonne) {
} elseif (isset($meilleurecolonne)) {
print "<img src=\"images/medaille.png\" alt=\"Meilleur resultat\"> " . _("The bests choices at this time are") . " : <b>$meilleursujet </b>" . _("with") . " <b>$meilleurecolonne </b>" . $vote_str . ".<br>\n";
}
@ -988,44 +1124,29 @@ echo '<br>'."\n";
//Changer le titre du sondage
$adresseadmin=$dsondage->mail_admin;
echo _("Change the title") .' :<br>' .
'<input type="text" name="nouveautitre" size="40" value="'.$titre.'">'.
'<input type="text" name="nouveautitre" size="40" value="'.$dsondage->titre.'">'.
'<input type="image" name="boutonnouveautitre" value="Changer le titre" src="images/accept.png" alt="Valider"><br><br>'."\n";
echo '</form>'."\n";
if ($dsondage->format=="D"||$dsondage->format=="D+") {
echo '<form name="formulaire2" action="exportpdf.php" method="POST" onkeypress="javascript:process_keypress(event)">'."\n";
echo _("Generate the convocation letter (.PDF), choose the place to meet and validate") .'<br>';
echo '<input type="text" name="lieureunion" size="100" value="" />';
echo '<input type="hidden" name="sondage" value="$numsondageadmin" />';
echo '<input type="hidden" name="meilleursujet" value="$meilleursujetexport" />';
echo '<input type="image" name="exportpdf" value="Export en PDF" src="images/accept.png" alt="Export PDF"><br><br>';
echo '</form>'."\n";
// '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
}
// TODO
if ($_POST["exportpdf_x"]&&!$_POST["lieureunion"]) {
echo '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\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 '<font color="#FF0000">'. _("Enter a new title!") .'</font><br><br>'."\n";
}
//Changer les commentaires du sondage
echo _("Change the comments") .' :<br> <textarea name="nouveauxcommentaires" rows="7" cols="40">'.$commentaires.'</textarea><br><input type="image" name="boutonnouveauxcommentaires" value="Changer les commentaires" src="images/accept.png" alt="Valider"><br><br>'."\n";
echo _("Change the comments") .' :<br> <textarea name="nouveauxcommentaires" rows="7" cols="40">'.$dsondage->commentaires.'</textarea><br><input type="image" name="boutonnouveauxcommentaires" value="Changer les commentaires" src="images/accept.png" alt="Valider"><br><br>'."\n";
//Changer l'adresse de l'administrateur
echo _("Change your email address") .' :<br> <input type="text" name="nouvelleadresse" size="40" value="'.$dsondage->mail_admin.'"> <input type="image" name="boutonnouvelleadresse" value="Changer votre adresse" src="images/accept.png" alt="Valider"><br>'."\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 '<font color="#FF0000">'. _("Enter a new email address!") .'</font><br><br>'."\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 "<br><b>" . _("Comments") . " :</b><br>\n";
@ -1038,7 +1159,7 @@ if ($comment_user->RecordCount() != 0) {
echo '<br>';
}
if ($erreur_commentaire_vide=="yes") {
if (isset($erreur_commentaire_vide) && $erreur_commentaire_vide=="yes") {
print "<font color=#FF0000>" . _("Enter a name and a comment!") . "</font>";
}
@ -1052,11 +1173,29 @@ echo '<input type="image" name="ajoutcomment" value="Ajouter un commentaire" src
echo '<br>'."\n";
echo _("Remove your poll") .' : <input type="image" name="suppressionsondage" value="'. _("Remove the poll") .'" src="images/cancel.png" alt="' . _('Cancel') . '"><br><br>'."\n";
if ($_POST["suppressionsondage"]) {
if (isset($_POST["suppressionsondage"])) {
echo _("Confirm removal of your poll") .' : <input type="submit" name="confirmesuppression" value="'. _("Remove this poll!") .'">'."\n";
echo '<input type="submit" name="annullesuppression" value="'. _("Keep this poll!") .'"><br><br>'."\n";
}
echo '</form>'."\n";
if ($dsondage->format == "D" || $dsondage->format == "D+") {
echo '<form name="formulaire2" action="'.get_server_name().'exportpdf.php" method="POST" onkeypress="javascript:process_keypress(event)">'."\n";
echo _("Generate the convocation letter (.PDF), choose the place to meet and validate") .'<br>';
echo '<input type="text" name="lieureunion" size="100" value="" />';
echo '<input type="hidden" name="sondage" value="$numsondageadmin" />';
echo '<input type="hidden" name="meilleursujet" value="$meilleursujetexport" />';
echo '<input type="image" name="exportpdf" value="Export en PDF" src="images/accept.png" alt="Export PDF"><br><br>';
echo '</form>'."\n";
// '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
}
// TODO
if (isset($_POST["exportpdf_x"]) && !issetAndNoEmpty('lieureunion')) {
echo '<font color="#FF0000">'. _("Enter a meeting place!") .'</font><br><br>'."\n";
}
echo '<a name="bas"></a>'."\n";
echo '<br><br>'."\n";