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)); } } //verification de l'existence du sondage, s'il n'existe pas on met une page d'erreur if (!$sondage || $sondage->RecordCount() != 1){ Utils::print_header( _("Error!")); bandeau_titre(_("Error!")); echo '

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

' . _('Back to the homepage of ') . ' ' . NOMAPPLICATION . '

'."\n"; bandeau_pied(); die(); } $dsujet=$sujets->FetchObject(false); $dsondage=$sondage->FetchObject(false); // Send email (only once during the session) to alert admin of the change he made. ==> two modifications (comment, title, description, ...) on differents polls in the same session will generate only one mail. $email_admin = $dsondage->mail_admin; $poll_title = $dsondage->titre; $smtp_allowed = $config['use_smtp']; function send_mail_admin() { global $email_admin; global $poll_title; global $numsondageadmin; global $smtp_allowed; if($smtp_allowed==true){ if(!isset($_SESSION["mail_admin_sent"])) { Utils::sendEmail( $email_admin, _("[ADMINISTRATOR] New settings for your poll") . ' ' . stripslashes( $poll_title ), _("You have changed the settings of your poll. \nYou can modify this poll with this link") . " :\n\n" . Utils::getUrlSondage($numsondageadmin, true) . "\n\n" . _("Thanks for your confidence.") . "\n" . NOMAPPLICATION ); $_SESSION["mail_admin_sent"]=true; } } } //si la valeur du nouveau titre est valide et que le bouton est activé if (isset($_POST["boutonnouveautitre"])) { if (Utils::issetAndNoEmpty('nouveautitre') === false) { $err |= TITLE_EMPTY; } else { //Update SQL database with new title $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); //Email sent to the admin if ($connect->Execute($sql, array($nouveautitre, $numsondage))) { send_mail_admin(); } } } // si le bouton est activé, quelque soit la valeur du champ textarea if (isset($_POST["boutonnouveauxcommentaires"])) { if (Utils::issetAndNoEmpty('nouveautitre') === false) { $err |= COMMENT_EMPTY; } else { $commentaires = htmlentities(html_entity_decode($_POST['nouveauxcommentaires'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); //Update SQL database with new description $sql = 'UPDATE sondage SET commentaires = '.$connect->Param('commentaires').' WHERE id_sondage = '.$connect->Param('numsondage'); $sql = $connect->Prepare($sql); //Email sent to the admin if ($connect->Execute($sql, array($commentaires, $numsondage))) { send_mail_admin(); } } } //si la valeur de la nouvelle adresse est valide et que le bouton est activé if (isset($_POST["boutonnouvelleadresse"])) { if (Utils::issetAndNoEmpty('nouvelleadresse') === false || Utils::isValidEmail($_POST["nouvelleadresse"]) === false) { $err |= INVALID_EMAIL; } else { $nouvelleadresse = htmlentities(html_entity_decode($_POST['nouvelleadresse'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); //Update SQL database with new email $sql = 'UPDATE sondage SET mail_admin = '.$connect->Param('nouvelleadresse').' WHERE id_sondage = '.$connect->Param('numsondage'); $sql = $connect->Prepare($sql); //Email sent to the admin if ($connect->Execute($sql, array($nouvelleadresse, $numsondage))) { send_mail_admin(); } } } //New poll rules if (isset($_POST["btn_poll_rules"])) { echo ''; if($_POST['poll_rules'] == '+') { $new_poll_rules = substr($dsondage->format, 0, 1).'+'; } elseif($_POST['poll_rules'] == '-') { $new_poll_rules = substr($dsondage->format, 0, 1).'-'; } else { $new_poll_rules = substr($dsondage->format, 0, 1); } //Update SQL database with new rules $sql = 'UPDATE sondage SET format = '.$connect->Param('new_poll_rules').' WHERE id_sondage = '.$connect->Param('numsondage'); $sql = $connect->Prepare($sql); //Email sent to the admin if ($connect->Execute($sql, array($new_poll_rules, $numsondage))) { send_mail_admin(); } } // reload $dsujet=$sujets->FetchObject(false); $dsondage=$sondage->FetchObject(false); if (isset($_POST["ajoutsujet"])) { Utils::print_header( _("Add a column") .' - ' . stripslashes( $dsondage->titre )); bandeau_titre(_("Make your polls")); //on recupere les données et les sujets du sondage echo '

' . _("Column's adding") . '

'."\n"; if (substr($dsondage->format, 0, 1)=="A"){ echo '
'."\n"; } else { //ajout d'une date avec creneau horaire echo '

'. _("You can add a new scheduling date to your poll.").'
'._("If you just want to add a new hour to an existant date, put the same date and choose a new hour.") .'

'. _("(dd/mm/yyyy)") .'
'; } echo '

'; bandeau_pied(); die(); } if (isset($_POST["suppressionsondage"])) { Utils::print_header( _("Confirm removal of your poll") .' - ' . stripslashes( $dsondage->titre )); bandeau_titre(_("Confirm removal of your poll")); echo '

' . _("Confirm removal of your poll") . '

'; bandeau_pied(); die(); } // Remove all the comments if (isset($_POST["removecomments"])) { $sql = 'DELETE FROM comments WHERE id_sondage='.$connect->Param('numsondage'); $sql = $connect->Prepare($sql); $cleaning = $connect->Execute($sql, array($numsondage)); } // Remove all the votes if (isset($_POST["removevotes"])) { $sql = 'DELETE FROM user_studs WHERE id_sondage='.$connect->Param('numsondage'); $sql = $connect->Prepare($sql); $cleaning = $connect->Execute($sql, array($numsondage)); } //action si bouton confirmation de suppression est activé if (isset($_POST["confirmesuppression"])) { $nbuser=$user_studs->RecordCount(); $date=date('H:i:s d/m/Y:'); if (Utils::remove_sondage($connect, $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\n", 3, 'admin/logs_studs.txt'); // Email sent send_mail_admin(); //affichage de l'ecran de confirmation de suppression de sondage Utils::print_header(_("Your poll has been removed!")); bandeau_titre(_("Make your polls")); echo '

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

' . _('Back to the homepage of ') . ' ' . NOMAPPLICATION . '

'."\n"; bandeau_pied(); die(); } } // quand on ajoute un commentaire utilisateur if (isset($_POST['ajoutcomment'])) { if (Utils::issetAndNoEmpty('commentuser') === false) { $err |= COMMENT_USER_EMPTY; } else { $comment_user = htmlentities(html_entity_decode($_POST["commentuser"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); } if(Utils::issetAndNoEmpty('comment') === false) { $err |= COMMENT_EMPTY; } if (Utils::issetAndNoEmpty('comment') && !Utils::is_error(COMMENT_EMPTY) && !Utils::is_error(NO_POLL) && !Utils::is_error(COMMENT_USER_EMPTY)) { $comment = htmlentities(html_entity_decode($_POST["comment"], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); // Check for doublons $comment_doublon = false; $req = 'SELECT * FROM comments WHERE id_sondage='.$connect->Param('numsondage').' ORDER BY id_comment'; $sql = $connect->Prepare($req); $comment_user_doublon = $connect->Execute($sql, array($numsondage)); if ($comment_user_doublon->RecordCount() != 0) { while ( $dcomment_user_doublon=$comment_user_doublon->FetchNextObject(false)) { if($dcomment_user_doublon->comment == $comment && $dcomment_user_doublon->usercomment == $comment_user) { $comment_doublon = true; }; } } if(!$comment_doublon) { $req = 'INSERT INTO comments (id_sondage, comment, usercomment) VALUES ('. $connect->Param('id_sondage').','. $connect->Param('comment').','. $connect->Param('comment_user').')'; $sql = $connect->Prepare($req); $comments = $connect->Execute($sql, array($numsondage, $comment, $comment_user)); if ($comments === false) { $err |= COMMENT_INSERT_FAILED; } } } } $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 (isset($_POST["boutonp"])) { //si on a un nom dans la case texte if (Utils::issetAndNoEmpty('nom')){ $nouveauchoix = ''; $erreur_prenom = false; for ($i=0;$i<$nbcolonnes;$i++){ // radio checked 1 = Yes, 2 = Ifneedbe, 0 = No if (isset($_POST["choix$i"])) { switch ($_POST["choix$i"]) { case 1: $nouveauchoix .= "1";break; case 2: $nouveauchoix .= "2";break; default: $nouveauchoix .= "0";break; } } } $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"; } } // Ecriture des choix de l'utilisateur dans la base 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 (isset($_POST["ajoutercolonne"]) && Utils::issetAndNoEmpty('nouvellecolonne') && (substr($dsondage->format, 0, 1) == "A" )) { $nouveauxsujets=$dsujet->sujet; //on rajoute la valeur a la fin de tous les sujets deja entrés $nouveauxsujets.=","; $nouveauxsujets.=str_replace(","," ",$_POST["nouvellecolonne"]); $nouveauxsujets = htmlentities(html_entity_decode($nouveauxsujets, ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8'); //mise a jour avec les nouveaux sujets dans la base $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))) { send_mail_admin(); } } //action quand on ajoute une colonne au format DATE if (isset($_POST["ajoutercolonne"]) && (substr($dsondage->format, 0, 1) == "D")) { $nouveauxsujets=$dsujet->sujet; if (isset($_POST["newdate"]) && $_POST["newdate"] != "vide") { $nouvelledate=mktime(0, 0, 0, substr($_POST["newdate"],3,2), substr($_POST["newdate"],0,2), substr($_POST["newdate"],6,4)); if (isset($_POST["newhour"]) && $_POST["newhour"]!="vide"){ $nouvelledate.="@"; $nouvelledate.=$_POST["newhour"]; } //on rajoute la valeur dans les valeurs $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); } else { 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); $dateinsertion = ''; for ($i = 0; $i < count($datesbase); $i++) { $dateinsertion.=","; $dateinsertion.=$datesbase[$i]; } $dateinsertion = substr("$dateinsertion", 1); //mise a jour avec les nouveaux sujets dans la base //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; $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++) { $car=substr($ensemblereponses,$j,1); //si les reponses ne concerne pas la colonne ajoutée, on concatene if ($j==$cle) { $newcar.="0"; } $newcar.=$car; } //mise a jour des reponses utilisateurs dans la base if (isset($erreur_ajout_date) && !$erreur_ajout_date){ $connect->Execute($sql, array($newcar, $data->nom, $data->id_users)); } } //Email sent to the admin send_mail_admin(); } else { $erreur_ajout_date="yes"; } } //suppression de ligne dans la base for ($i = 0; $i < $nblignes; $i++) { if (isset($_POST["effaceligne$i"])) { $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($sql, array($data->nom, $data->id_users)); } $compteur++; } } } //suppression d'un commentaire utilisateur $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 (isset($_POST['suppressioncomment'.$i])) { $sql = 'DELETE FROM comments WHERE id_comment = '.$connect->Param('id_comment'); $sql = $connect->Prepare($sql); $connect->Execute($sql, array($dcomment->id_comment)); } $i++; } //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"])) { $ligneamodifier=$i; $testligneamodifier="true"; } //test pour voir si une ligne est a modifier if (isset($_POST["validermodifier$i"])) { $modifier=$i; $testmodifier="true"; } } //si le test est valide alors on affiche des checkbox pour entrer de nouvelles valeurs if ($testmodifier) { $nouveauchoix = ''; for ($i = 0; $i < $nbcolonnes; $i++) { // radio checked 1 = Yes, 2 = Ifneedbe, 0 = No if (isset($_POST["choix$i"])) { switch ($_POST["choix$i"]) { case 1: $nouveauchoix .= "1";break; case 2: $nouveauchoix .= "2";break; default: $nouveauchoix .= "0";break; } } } $compteur=0; while ($data=$user_studs->FetchNextObject(false)) { //mise a jour des données de l'utilisateur dans la base SQL if ($compteur==$modifier) { $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++; } } //suppression de colonnes dans la base for ($i = 0; $i < $nbcolonnes; $i++) { if ((isset($_POST["effacecolonne$i"])) && $nbcolonnes > 1){ $toutsujet = explode(",",$dsujet->sujet); //sort($toutsujet, SORT_NUMERIC); $j = 0; $nouveauxsujets = ''; //parcours de tous les sujets actuels 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]; } $j++; } //on enleve la virgule au début $nouveauxsujets = substr("$nouveauxsujets", 1); //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 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; } } $compteur++; //mise a jour des reponses utilisateurs dans la base $connect->Execute($sql, array($newcar, $data->nom, $data->id_users)); } //mise a jour des sujets dans la base $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 $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 { Utils::print_header(_("Error!")); bandeau_titre(_("Error!")); echo '

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

' . _('Back to the homepage of ') . ' ' . NOMAPPLICATION . '

'."\n"; bandeau_pied(); die(); } // Errors $errors = ''; if ((isset($_POST["boutonp"])) && $_POST["nom"] == "") { $errors .= '
  • ' . _("Enter a name") . '
  • '; } if (isset($erreur_prenom) && $erreur_prenom) { $errors .= '
  • ' . _("The name you've chosen already exist in this poll!") . '
  • '; } if (isset($erreur_injection) && $erreur_injection) { $errors .= '
  • ' . _("Characters \" ' < et > are not permitted") . '
  • '; } if (isset($erreur_ajout_date) && $erreur_ajout_date) { $errors .= '
  • ' . _("The date is not correct !") . '
  • '; } //Poll title, description and email values $title = (isset($_POST["boutonnouveautitre"]) && Utils::issetAndNoEmpty('nouveautitre')) ? htmlentities(html_entity_decode($_POST['nouveautitre'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8') : stripslashes( $dsondage->titre ); $description = (isset($_POST["nouveauxcommentaires"])) ? stripslashes(htmlentities(html_entity_decode($_POST['nouveauxcommentaires'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8')) : stripslashes( $dsondage->commentaires ); $email_admin = (isset($_POST["boutonnouvelleadresse"]) && Utils::issetAndNoEmpty('nouvelleadresse')) ? htmlentities(html_entity_decode($_POST['nouvelleadresse'], ENT_QUOTES, 'UTF-8'), ENT_QUOTES, 'UTF-8') : stripslashes( $dsondage->mail_admin ); //Poll format (locked A-/D-, open A/D, editable A+/D+) $poll_rules = (isset($_POST["poll_rules"]) && Utils::issetAndNoEmpty('btn_poll_rules')) ? $_POST["poll_rules"] : substr($dsondage->format, 1, 1); $poll_rules_opt1 = '';$poll_rules_opt2 = '';$poll_rules_opt3 = ''; if($poll_rules == '+') { $poll_rules_text = ' '. _("Votes are editable"); $poll_rules_opt3 = 'selected'; } elseif($poll_rules == '-') { $poll_rules_text = ' '. _("Votes and comments are locked"); $poll_rules_opt1 = 'selected'; } else { $poll_rules_text = ' '. _("Votes and comments are open"); $poll_rules_opt2 = 'selected'; } if ($errors!='') { Utils::print_header(_("Error!")); bandeau_titre(_("Error!")); echo '
    '."\n"; } else { Utils::print_header(_('Poll administration').' - '.$title); bandeau_titre(_('Poll administration').' - '.$title); // session_unset(); } echo '

    '.$title.'

    '. _("Initiator of the poll") .'

    '.stripslashes($dsondage->nom_admin).'

    '.$email_admin.'

    '._("Description") .'


    '.$description.'

    '. _("Expiration's date") .'

    '.date("d/m/Y",strtotime($dsondage->date_fin)).'

    '.$poll_rules_text.'

    '."\n"; // .jumbotron //on recupere les données et les sujets du sondage $dsujet=$sujets->FetchObject(false); $dsondage=$sondage->FetchObject(false); //reformatage des données des sujets du sondage $toutsujet=explode(",",$dsujet->sujet); $toutsujet=str_replace("°","'",$toutsujet); $nbcolonnes=substr_count($dsujet->sujet,',')+1; // Table headers $thead = ''; // Button in the first td to avoid remove col on "Return" keypress) $tr_add_remove_col = ''; $border = array(); // bordure pour distinguer les mois $td_headers = array(); // for a11y, headers="M1 D4 H5" on each td $radio_title = array(); // date for // Dates poll if (substr($dsondage->format, 0, 1)=="D") { $tr_months = ''; $tr_days = ''; $tr_hours = ''; // Headers $colspan_month = 1; $colspan_day = 1; for ($i = 0; $i < count($toutsujet); $i++) { // Current date $current = $toutsujet[$i];//format date@hour. ex : 2020292820@10:00 $horoCur = explode("@",$current); //horoCur[0] = date, horoCur[1] = hour if (isset($toutsujet[$i+1])){ $next = $toutsujet[$i+1]; $horoNext = explode("@",$next); } $border[$i] = false; $radio_title[$i] = strftime($date_format['txt_short'],$horoCur[0]); // Months $td_headers[$i] = 'M'.($i+1-$colspan_month); if (isset($toutsujet[$i+1]) && strftime("%B", $horoCur[0]) == strftime("%B", $horoNext[0]) && strftime("%Y", $horoCur[0]) == strftime("%Y", $horoNext[0])){ $colspan_month++; } else { $border[$i] = true; $tr_months .= ''.strftime("%B",$horoCur[0]).' '.strftime("%Y", $horoCur[0]).''; $colspan_month=1; } // Days $td_headers[$i] .= ' D'.($i+1-$colspan_day); if (isset($toutsujet[$i+1]) && strftime($date_format['txt_day'],$horoCur[0])==strftime($date_format['txt_day'],$horoNext[0]) && strftime("%B",$horoCur[0])==strftime("%B",$horoNext[0])){ $colspan_day++; } else { $rbd = ($border[$i]) ? ' rbd' : ''; $tr_days .= ''.strftime($date_format['txt_day'],$horoCur[0]).''; $colspan_day=1; } // Hours $rbd = ($border[$i]) ? ' rbd' : ''; if (isset($horoCur[1]) && $horoCur[1] !== '') { $tr_hours .= ''.$horoCur[1].''; $radio_title[$i] .= ' - '.$horoCur[1]; $td_headers[$i] .= ' H'.$i; } else { $tr_hours .= ''; } // Remove col $tr_add_remove_col .= (count($toutsujet) > 1 ) ? '' : ''; } $border[count($border)-1] = false; // suppression de la bordure droite du dernier mois $tr_months .= ''; $tr_days .= ''; $tr_hours .= ''; // Add col $tr_add_remove_col .= ''; $thead = "\n".$tr_add_remove_col."\n".$tr_months."\n".$tr_days."\n".$tr_hours."\n"; // Subjects poll } else { $toutsujet=str_replace("@","
    ",$toutsujet); $tr_subjects = ''; for ($i = 0; isset($toutsujet[$i]); $i++) { $td_headers[$i]='';$radio_title[$i]=''; // init before concatenate // Subjects preg_match_all('/\[!\[(.*?)\]\((.*?)\)\]\((.*?)\)/',$toutsujet[$i],$md_a_img); // Markdown [![alt](src)](href) preg_match_all('/!\[(.*?)\]\((.*?)\)/',$toutsujet[$i],$md_img); // Markdown ![alt](src) preg_match_all('/\[(.*?)\]\((.*?)\)/',$toutsujet[$i],$md_a); // Markdown [text](href) if (isset($md_a_img[2][0]) && $md_a_img[2][0]!='' && isset($md_a_img[3][0]) && $md_a_img[3][0]!='') { // [![alt](src)](href) $th_subject_text = (isset($md_a_img[1][0]) && $md_a_img[1][0]!='') ? stripslashes($md_a_img[1][0]) : _("Choice") .' '.($i+1); $th_subject_html = ''.$th_subject_text.''; } elseif (isset($md_img[2][0]) && $md_img[2][0]!='') { // ![alt](src) $th_subject_text = (isset($md_img[1][0]) && $md_img[1][0]!='') ? stripslashes($md_img[1][0]) : _("Choice") .' '.($i+1); $th_subject_html = ''.$th_subject_text.''; } elseif (isset($md_a[2][0]) && $md_a[2][0]!='') { // [text](href) $th_subject_text = (isset($md_a[1][0]) && $md_a[1][0]!='') ? stripslashes($md_a[1][0]) : _("Choice") .' '.($i+1); $th_subject_html = ''.$th_subject_text.''; } else { // text only $th_subject_text = stripslashes($toutsujet[$i]); $th_subject_html = $th_subject_text; } $tr_subjects .= ''.$th_subject_html.''; $border[$i] = false; $td_headers[$i] .= 'S'.$i; $radio_title[$i] .= $th_subject_text; // Remove col $tr_add_remove_col .= ''; } // Add col $tr_add_remove_col .= ''; $thead = $tr_add_remove_col.$tr_subjects.''; } // Print headers echo '

    ' . _('As poll administrator, you can change all the lines of this poll with this button ').'' . _('Edit') . ', ' . _(' remove a column or a line with ') . '' . _('Remove') . ' ' . _('and add a new column with '). ''. _('Add a column') . '

    ' . _('Finally, you can change the informations of this poll like the title, the comments or your email address.') . '

    '._('Votes of the poll ').'

    '. $thead . ''; // Print poll results $somme[] = 0; $compteur = 0; while ($data = $user_studs->FetchNextObject(false)) { $ensemblereponses = $data->reponses; // Print name $nombase=str_replace("°","'",$data->nom); echo ''."\n"; // si la ligne n'est pas a changer, on affiche les données if (!$testligneamodifier) { for ($k = 0; $k < $nbcolonnes; $k++) { $rbd = ($border[$k]) ? ' rbd' : ''; $car = substr($ensemblereponses, $k, 1); switch ($car) { case "1": echo ''."\n"; if (isset($somme[$k]) === false) { $somme[$k] = 0; } $somme[$k]++; break; case "2": echo ''."\n"; break; default: echo ''."\n";break; } } } else { // sinon on remplace les choix de l'utilisateur par une ligne de radio pour recuperer de nouvelles valeurs // si c'est bien la ligne a modifier on met les radios if ($compteur == "$ligneamodifier") { for ($j = 0; $j < $nbcolonnes; $j++) { $car = substr($ensemblereponses, $j, 1); // variable pour afficher la valeur cochée $car_html[0]='value="0"';$car_html[1]='value="1"';$car_html[2]='value="2"'; switch ($car) { case "1": $car_html[1]='value="1" checked';break; case "2": $car_html[2]='value="2" checked';break; default: $car_html[0]='value="0" checked';break; } echo ' '."\n"; } } else { //sinon on affiche les lignes normales for ($k = 0; $k < $nbcolonnes; $k++) { $rbd = ($border[$k]) ? ' rbd' : ''; $car = substr($ensemblereponses, $k, 1); switch ($car) { case "1": echo ''."\n"; if (isset($somme[$k]) === false) { $somme[$k] = 0; } $somme[$k]++; break; case "2": echo ''."\n"; break; default: echo ''."\n";break; } } } } //a la fin de chaque ligne se trouve les boutons modifier if (!$testligneamodifier=="true") { echo ' '."\n"; } //demande de confirmation pour modification de ligne for ($i = 0; $i < $nblignes; $i++) { if (isset($_POST["modifierligne$i"])) { if ($compteur == $i) { echo ''."\n"; } } } $compteur++; echo ''."\n"; } if (!$testligneamodifier=="true") { //affichage de la case vide de texte pour un nouvel utilisateur echo ''."\n"; //une ligne de checkbox pour le choix du nouvel utilisateur for ($i = 0; $i < $nbcolonnes; $i++) { echo ' '."\n"; } // Affichage du bouton de formulaire pour inscrire un nouvel utilisateur dans la base echo ''."\n"; } // Addition and Best choice //affichage de la ligne contenant les sommes de chaque colonne $tr_addition = ''; $meilleurecolonne = max($somme); $compteursujet = 0; $meilleursujet = ''; $meilleursujet.= '
  • '.$radio_title[$i].'
  • '; $compteursujet++; } else { $tr_addition .= ''; } } else { $tr_addition .= ''; } } $tr_addition .= ''; //recuperation des valeurs des sujets et adaptation pour affichage $toutsujet = explode(",", $dsujet->sujet); $meilleursujet = str_replace("°", "'", $meilleursujet).''; $vote_str = ($meilleurecolonne > 1) ? $vote_str = _('votes') : _('vote'); // Print Addition and Best choice echo $tr_addition.'
    '._('Votes of the poll ').$title.'
    '.stripslashes($nombase).' ' . _('Yes') . '() ' . _('Yes') . _(', ifneedbe') . '' . _('No') . '
    ' . _('Yes') . '() ' . _('Yes') . _(', ifneedbe') . '' . _('No') . '
    '. _("Addition") .''.$somme[$i].''.$somme[$i].'
    '."\n"; if ($compteursujet == 1) { echo '

    ' . _("Best choice") . '

    ' . _("The best choice at this time is:") . '

    ' . $meilleursujet . '

    ' . _("with") . ' ' . $meilleurecolonne . ' ' . $vote_str . '.

    '."\n"; } elseif ($compteursujet > 1) { echo '

    ' . _("Best choices") . '

    ' . _("The bests choices at this time are:") . '

    ' . $meilleursujet . '

    ' . _("with") . ' ' . $meilleurecolonne . ' ' . $vote_str . '.

    '."\n"; } echo '

    '."\n"; // Commments $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) { echo '

    ' . _("Comments of polled people") . '

    '."\n"; $i = 0; while ( $dcomment=$comment_user->FetchNextObject(false)) { echo '
    '.stripslashes($dcomment->usercomment). ' : ' . stripslashes(nl2br($dcomment->comment)) . '
    '; $i++; } echo '
    '; } echo '
    ' . _("Add a comment in the poll") . '


    '; bandeau_pied();