choix_date.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. <?php
  2. /* Copyright (C) 2013 Laurent Destailleur <eldy@users.sourceforge.net>
  3. * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 3 of the License, or
  8. * (at your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful,
  11. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. * GNU General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program. If not, see <https://www.gnu.org/licenses/>.
  17. */
  18. /**
  19. * \file htdocs/opensurvey/wizard/choix_date.php
  20. * \ingroup opensurvey
  21. * \brief Page to create a new survey (date selection)
  22. */
  23. // Load Dolibarr environment
  24. require '../../main.inc.php';
  25. require_once DOL_DOCUMENT_ROOT."/core/lib/admin.lib.php";
  26. require_once DOL_DOCUMENT_ROOT."/core/lib/files.lib.php";
  27. require_once DOL_DOCUMENT_ROOT."/opensurvey/lib/opensurvey.lib.php";
  28. // Security check
  29. if (!$user->hasRight('opensurvey', 'write')) {
  30. accessforbidden();
  31. }
  32. // Survey type is DATE
  33. $_SESSION["formatsondage"] = "D";
  34. $erreur = false;
  35. $erreurNbchoice = 0;
  36. /*
  37. * Actions
  38. */
  39. // Insert survey
  40. if (GETPOST('confirmation')) {
  41. // We save hours entered
  42. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true && issetAndNoEmpty('nbrecaseshoraires', $_SESSION) === true) {
  43. $nbofchoice = count($_SESSION["totalchoixjour"]);
  44. $errheure = array();
  45. if ($nbofchoice * $_SESSION["nbrecaseshoraires"] > 200) {
  46. setEventMessages($langs->trans("ErrorFieldTooLong"), null, 'errors');
  47. $erreurNb++;
  48. } else {
  49. for ($i = 0; $i < $nbofchoice; $i++) {
  50. // Show hours choices
  51. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  52. $horairesi = GETPOST("horaires".$i);
  53. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  54. $tmphorairesi = GETPOST('horaires'.$i, 'array');
  55. if (!is_array($tmphorairesi)) {
  56. $errheure[$i][$j] = true;
  57. $erreur = true;
  58. continue;
  59. }
  60. // A range like 8:00-11:00
  61. $creneaux = array();
  62. $heures = array();
  63. if (preg_match("/(\d{1,2}:\d{2})-(\d{1,2}:\d{2})/", $tmphorairesi[$j], $creneaux)) {
  64. //on recupere les deux parties du preg_match qu'on redécoupe autour des ":"
  65. $debutcreneau = explode(":", $creneaux[1]);
  66. $fincreneau = explode(":", $creneaux[2]);
  67. //comparaison des heures de fin et de debut
  68. //si correctes, on entre les données dans la variables de session
  69. if ($debutcreneau[0] < 24 && $fincreneau[0] < 24 && $debutcreneau[1] < 60 && $fincreneau[1] < 60 && ($debutcreneau[0] < $fincreneau[0] || ($debutcreneau[0] == $fincreneau[0] && $debutcreneau[1] < $fincreneau[1]))) {
  70. $_SESSION["horaires$i"][$j] = $creneaux[1].'-'.$creneaux[2];
  71. } else { //sinon message d'erreur et nettoyage de la case
  72. $errheure[$i][$j] = true;
  73. $erreur = true;
  74. }
  75. } elseif (preg_match(";^(\d{1,2}h\d{0,2})-(\d{1,2}h\d{0,2})$;i", $tmphorairesi[$j], $creneaux)) { //si c'est un creneau type 8h00-11h00
  76. //on recupere les deux parties du preg_match qu'on redécoupe autour des "H"
  77. $debutcreneau = preg_split("/h/i", $creneaux[1]);
  78. $fincreneau = preg_split("/h/i", $creneaux[2]);
  79. //comparaison des heures de fin et de debut
  80. //si correctes, on entre les données dans la variables de session
  81. if ($debutcreneau[0] < 24 && $fincreneau[0] < 24 && $debutcreneau[1] < 60 && $fincreneau[1] < 60 && ($debutcreneau[0] < $fincreneau[0] || ($debutcreneau[0] == $fincreneau[0] && $debutcreneau[1] < $fincreneau[1]))) {
  82. $_SESSION["horaires$i"][$j] = $creneaux[1].'-'.$creneaux[2];
  83. } else { //sinon message d'erreur et nettoyage de la case
  84. $errheure[$i][$j] = true;
  85. $erreur = true;
  86. }
  87. } elseif (preg_match(";^(\d{1,2}):(\d{2})$;", $tmphorairesi[$j], $heures)) { //si c'est une heure simple type 8:00
  88. //si valeures correctes, on entre les données dans la variables de session
  89. if ($heures[1] < 24 && $heures[2] < 60) {
  90. $_SESSION["horaires$i"][$j] = $heures[0];
  91. } else { //sinon message d'erreur et nettoyage de la case
  92. $errheure[$i][$j] = true;
  93. $erreur = true;
  94. }
  95. } elseif (preg_match(";^(\d{1,2})h(\d{0,2})$;i", $tmphorairesi[$j], $heures)) { //si c'est une heure encore plus simple type 8h
  96. //si valeures correctes, on entre les données dans la variables de session
  97. if ($heures[1] < 24 && $heures[2] < 60) {
  98. $_SESSION["horaires$i"][$j] = $heures[0];
  99. } else { //sinon message d'erreur et nettoyage de la case
  100. $errheure[$i][$j] = true;
  101. $erreur = true;
  102. }
  103. } elseif (preg_match(";^(\d{1,2})-(\d{1,2})$;", $tmphorairesi[$j], $heures)) { //si c'est un creneau simple type 8-11
  104. //si valeures correctes, on entre les données dans la variables de session
  105. if ($heures[1] < $heures[2] && $heures[1] < 24 && $heures[2] < 24) {
  106. $_SESSION["horaires$i"][$j] = $heures[0];
  107. } else { //sinon message d'erreur et nettoyage de la case
  108. $errheure[$i][$j] = true;
  109. $erreur = true;
  110. }
  111. } elseif (preg_match(";^(\d{1,2})h-(\d{1,2})h$;", $tmphorairesi[$j], $heures)) { //si c'est un creneau H type 8h-11h
  112. //si valeures correctes, on entre les données dans la variables de session
  113. if ($heures[1] < $heures[2] && $heures[1] < 24 && $heures[2] < 24) {
  114. $_SESSION["horaires$i"][$j] = $heures[0];
  115. } else { //sinon message d'erreur et nettoyage de la case
  116. $errheure[$i][$j] = true;
  117. $erreur = true;
  118. }
  119. } elseif ($tmphorairesi[$j] == "") { //Si la case est vide
  120. unset($_SESSION["horaires$i"][$j]);
  121. } else { //pour tout autre format, message d'erreur
  122. $errheure[$i][$j] = true;
  123. $erreur = true;
  124. }
  125. if (issetAndNoEmpty('horaires'.$i, $_SESSION) === false || issetAndNoEmpty($j, $_SESSION['horaires'.$i]) === false) {
  126. if (issetAndNoEmpty('horaires'.$i, $_SESSION) === true) {
  127. $_SESSION["horaires$i"][$j] = '';
  128. } else {
  129. $_SESSION["horaires$i"] = array();
  130. $_SESSION["horaires$i"][$j] = '';
  131. }
  132. }
  133. }
  134. if ($_SESSION["horaires$i"][0] == "" && $_SESSION["horaires$i"][1] == "" && $_SESSION["horaires$i"][2] == "" && $_SESSION["horaires$i"][3] == "" && $_SESSION["horaires$i"][4] == "") {
  135. $choixdate .= ",";
  136. $choixdate .= $_SESSION["totalchoixjour"][$i];
  137. } else {
  138. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  139. if ($_SESSION["horaires$i"][$j] != "") {
  140. $choixdate .= ",";
  141. $choixdate .= $_SESSION["totalchoixjour"][$i];
  142. $choixdate .= "@";
  143. // On remplace la virgule et l'arobase pour ne pas avoir de problème par la suite
  144. $choixdate .= str_replace(array(',', '@'), array('&#44;', '&#64;'), $_SESSION["horaires$i"][$j]);
  145. }
  146. }
  147. }
  148. }
  149. }
  150. if (!empty($errheure)) {
  151. setEventMessages($langs->trans("ErrorBadFormat"), null, 'errors');
  152. }
  153. }
  154. //If just one day and no other time options, error message
  155. $tmphoraires0 = GETPOST('horaires0', 'array');
  156. if (count($_SESSION["totalchoixjour"]) == "1" && $tmphoraires0[0] == "" && $tmphoraires0[1] == "" && $tmphoraires0[2] == "" && $tmphoraires0[3] == "" && $tmphoraires0[4] == "") {
  157. setEventMessages($langs->trans("MoreChoices"), null, 'errors');
  158. $erreur = true;
  159. }
  160. // Add survey into database
  161. if (!$erreur && $erreurNb == 0) {
  162. $_SESSION["toutchoix"] = substr("$choixdate", 1);
  163. unset($_SESSION["nbrecaseshoraires"]);
  164. ajouter_sondage();
  165. }
  166. }
  167. // Reset days
  168. if (GETPOST('reset')) {
  169. $nbofchoice = count($_SESSION["totalchoixjour"]);
  170. for ($i = 0; $i < $nbofchoice; $i++) {
  171. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  172. unset($_SESSION["horaires$i"][$j]);
  173. }
  174. }
  175. unset($_SESSION["totalchoixjour"]);
  176. unset($_SESSION["nbrecaseshoraires"]);
  177. }
  178. /*
  179. * View
  180. */
  181. if (!isset($_SESSION['description']) && !isset($_SESSION['mail'])) {
  182. dol_print_error('', $langs->trans('ErrorOpenSurveyFillFirstSection'));
  183. exit;
  184. }
  185. $arrayofjs = array();
  186. $arrayofcss = array('/opensurvey/css/style.css');
  187. llxHeader('', $langs->trans("OpenSurvey"), "", '', 0, 0, $arrayofjs, $arrayofcss);
  188. //nombre de cases par défaut
  189. if (!isset($_SESSION["nbrecaseshoraires"])) {
  190. $_SESSION["nbrecaseshoraires"] = 5;
  191. } elseif ((GETPOST('ajoutcases') || GETPOST("ajoutcases_y")) && $_SESSION["nbrecaseshoraires"] == 5) {
  192. $_SESSION["nbrecaseshoraires"] = 10;
  193. //On sauvegarde les heures deja entrées
  194. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  195. $nbofchoice = count($_SESSION["totalchoixjour"]);
  196. for ($i = 0; $i < $nbofchoice; $i++) {
  197. //affichage des 5 cases horaires
  198. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  199. $horairesi = GETPOST("horaires".$i);
  200. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  201. }
  202. }
  203. }
  204. }
  205. //valeurs de la date du jour actuel
  206. $jourAJ = date("j");
  207. $moisAJ = date("n");
  208. $anneeAJ = date("Y");
  209. // Initialisation des jour, mois et année
  210. if (!isset($_SESSION['jour'])) {
  211. $_SESSION['jour'] = date('j');
  212. }
  213. if (!isset($_SESSION['mois'])) {
  214. $_SESSION['mois'] = date('n');
  215. }
  216. if (!isset($_SESSION['annee'])) {
  217. $_SESSION['annee'] = date('Y');
  218. }
  219. //mise a jour des valeurs de session si bouton retour a aujourd'hui
  220. if (!issetAndNoEmpty('choixjourajout') && !issetAndNoEmpty('choixjourretrait') && (issetAndNoEmpty('retourmois') || issetAndNoEmpty('retourmois_x'))) {
  221. $_SESSION["jour"] = date("j");
  222. $_SESSION["mois"] = date("n");
  223. $_SESSION["annee"] = date("Y");
  224. }
  225. //mise a jour des valeurs de session si mois avant
  226. if (issetAndNoEmpty('moisavant_x') || issetAndNoEmpty('moisavant')) {
  227. if ($_SESSION["mois"] == 1) {
  228. $_SESSION["mois"] = 12;
  229. $_SESSION["annee"] = $_SESSION["annee"] - 1;
  230. } else {
  231. $_SESSION["mois"] -= 1;
  232. }
  233. //On sauvegarde les heures deja entrées
  234. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  235. $nbofchoice = count($_SESSION["totalchoixjour"]);
  236. for ($i = 0; $i < $nbofchoice; $i++) {
  237. //affichage des 5 cases horaires
  238. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  239. $horairesi = GETPOST("horaires".$i);
  240. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  241. }
  242. }
  243. }
  244. }
  245. //mise a jour des valeurs de session si mois apres
  246. if (issetAndNoEmpty('moisapres_x') || issetAndNoEmpty('moisapres')) {
  247. if ($_SESSION["mois"] == 12) {
  248. $_SESSION["mois"] = 1;
  249. $_SESSION["annee"] += 1;
  250. } else {
  251. $_SESSION["mois"] += 1;
  252. }
  253. //On sauvegarde les heures deja entrées
  254. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  255. $nbofchoice = count($_SESSION["totalchoixjour"]);
  256. for ($i = 0; $i < $nbofchoice; $i++) {
  257. //affichage des 5 cases horaires
  258. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  259. $horairesi = GETPOST("horaires".$i);
  260. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  261. }
  262. }
  263. }
  264. }
  265. //mise a jour des valeurs de session si annee avant
  266. if (issetAndNoEmpty('anneeavant_x') || issetAndNoEmpty('anneeavant')) {
  267. $_SESSION["annee"] -= 1;
  268. //On sauvegarde les heures deja entrées
  269. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  270. $nbofchoice = count($_SESSION["totalchoixjour"]);
  271. for ($i = 0; $i < $nbofchoice; $i++) {
  272. //affichage des 5 cases horaires
  273. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  274. $horairesi = GETPOST("horaires".$i);
  275. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  276. }
  277. }
  278. }
  279. }
  280. //mise a jour des valeurs de session si annee apres
  281. if (issetAndNoEmpty('anneeapres_x') || issetAndNoEmpty('anneeapres')) {
  282. $_SESSION["annee"] += 1;
  283. //On sauvegarde les heures deja entrées
  284. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  285. $nbofchoice = count($_SESSION["totalchoixjour"]);
  286. for ($i = 0; $i < $nbofchoice; $i++) {
  287. //affichage des 5 cases horaires
  288. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  289. $horairesi = GETPOST("horaires".$i);
  290. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  291. }
  292. }
  293. }
  294. }
  295. //valeurs du nombre de jour dans le mois et du premier jour du mois
  296. $nbrejourmois = date("t", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["annee"]));
  297. $premierjourmois = date("N", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["annee"])) - 1;
  298. //traduction de la valeur du mois
  299. if (is_integer($_SESSION["mois"]) && $_SESSION["mois"] > 0 && $_SESSION["mois"] < 13) {
  300. $motmois = dol_print_date(mktime(0, 0, 0, $_SESSION["mois"], 10), '%B');
  301. } else {
  302. $motmois = dol_print_date(dol_now(), '%B');
  303. }
  304. //Debut du formulaire et bandeaux de tete
  305. print '<form name="formulaire" action="" method="POST">'."\n";
  306. print '<input type="hidden" name="token" value="'.newToken().'">';
  307. print load_fiche_titre($langs->trans("CreatePoll").' (2 / 2)');
  308. //affichage de l'aide pour les jours
  309. print '<div class="bodydate">'."\n";
  310. print $langs->trans("OpenSurveyStep2")."\n";
  311. print '</div>'."\n";
  312. //debut du tableau qui affiche le calendrier
  313. print '<div class="corps">'."\n";
  314. print '<div class="center">'."\n";
  315. print '<table align="center">'."\n"; // The div class=center has no effect on table, so we must keep the align=center for table
  316. print '<tr><td><input type="image" class="buttonwebsite" name="anneeavant" value="<<" src="../img/rewind.png"></td>';
  317. print '<td><input type="image" class="buttonwebsite" name="moisavant" value="<" src="../img/previous.png"></td>';
  318. print '<td width="150px" class="center"> '.$motmois.' '.$_SESSION["annee"].'<br>';
  319. print '<input type="image" name="retourmois" class="buttonreset" alt="'.dol_escape_htmltag($langs->trans("BackToCurrentMonth")).'" title="'.dol_escape_htmltag($langs->trans("BackToCurrentMonth")).'" value="" src="'.img_picto('', 'refresh', '', 0, 1).'">';
  320. print '</td>';
  321. print '<td><input type="image" class="buttonwebsite" name="moisapres" value=">" src="../img/next.png"></td>';
  322. print '<td><input type="image" class="buttonwebsite" name="anneeapres" value=">>" src="../img/fforward.png"></td><td></td><td></td><td></td><td></td><td></td><td>';
  323. print '</td></tr>'."\n";
  324. print '</table>'."\n";
  325. print '</div>'."\n";
  326. print '<div class="center calendrier">'."\n";
  327. print '<table align="center">'."\n"; // The div class=center has no effect on table, so we must keep the align=center for table
  328. print '<tr>'."\n";
  329. //affichage des jours de la semaine en haut du tableau
  330. for ($i = 0; $i < 7; $i++) {
  331. print '<td align="center" class="joursemaine">'.dol_print_date(mktime(0, 0, 0, 0, $i, 10), '%A').'</td>';
  332. }
  333. print '</tr>'."\n";
  334. //ajout d'une entrée dans la variable de session qui contient toutes les dates
  335. if (issetAndNoEmpty('choixjourajout')) {
  336. if (!isset($_SESSION["totalchoixjour"])) {
  337. $_SESSION["totalchoixjour"] = array();
  338. }
  339. // Test pour éviter les doublons dans la variable qui contient toutes les dates
  340. $journeuf = true;
  341. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true && issetAndNoEmpty('choixjourajout') === true) {
  342. $nbofchoice = count($_SESSION["totalchoixjour"]);
  343. for ($i = 0; $i < $nbofchoice; $i++) {
  344. $choixjourajout = GETPOST("choixjourajout");
  345. if ($_SESSION["totalchoixjour"][$i] == mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"])) {
  346. $journeuf = false;
  347. }
  348. }
  349. }
  350. // Si le test est passé, alors on insere la valeur dans la variable de session qui contient les dates
  351. if ($journeuf && issetAndNoEmpty('choixjourajout') === true) {
  352. $choixjourajout = GETPOST("choixjourajout");
  353. array_push($_SESSION["totalchoixjour"], dol_mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"]));
  354. sort($_SESSION["totalchoixjour"]);
  355. $cle = array_search(dol_mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"]), $_SESSION["totalchoixjour"]);
  356. //On sauvegarde les heures deja entrées
  357. for ($i = 0; $i < $cle; $i++) {
  358. $horairesi = GETPOST("horaires".$i);
  359. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  360. if (issetAndNoEmpty('horaires'.$i) === true && issetAndNoEmpty($i, $_POST['horaires'.$i]) === true) {
  361. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  362. }
  363. }
  364. }
  365. $nbofchoice = count($_SESSION["totalchoixjour"]);
  366. for ($i = $cle; $i < $nbofchoice; $i++) {
  367. $k = $i + 1;
  368. if (issetAndNoEmpty('horaires'.$i) === true && issetAndNoEmpty($i, $_POST['horaires'.$i]) === true) {
  369. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  370. $horairesi = GETPOST("horaires".$i, 'array');
  371. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  372. }
  373. }
  374. }
  375. unset($_SESSION["horaires$cle"]);
  376. }
  377. }
  378. //retrait d'une entrée dans la variable de session qui contient toutes les dates
  379. if (issetAndNoEmpty('choixjourretrait')) {
  380. //On sauvegarde les heures deja entrées
  381. $nbofchoice = count($_SESSION["totalchoixjour"]);
  382. for ($i = 0; $i < $nbofchoice; $i++) {
  383. //affichage des 5 cases horaires
  384. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  385. $horairesi = GETPOST("horaires".$i);
  386. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  387. }
  388. }
  389. for ($i = 0; $i < $nbofchoice; $i++) {
  390. $choixjourretrait = GETPOST('choixjourretrait');
  391. if ($_SESSION["totalchoixjour"][$i] == mktime(0, 0, 0, $_SESSION["mois"], $choixjourretrait[0], $_SESSION["annee"])) {
  392. for ($j = $i; $j < $nbofchoice; $j++) {
  393. $k = $j + 1;
  394. $_SESSION["horaires$j"] = $_SESSION["horaires$k"];
  395. }
  396. array_splice($_SESSION["totalchoixjour"], $i, 1);
  397. }
  398. }
  399. }
  400. //report des horaires dans toutes les cases
  401. if (issetAndNoEmpty('reporterhoraires')) {
  402. $_SESSION["horaires0"] = GETPOST("horaires0");
  403. $nbofchoice = count($_SESSION["totalchoixjour"]);
  404. for ($i = 0; $i < $nbofchoice; $i++) {
  405. $j = $i + 1;
  406. $_SESSION["horaires$j"] = $_SESSION["horaires$i"];
  407. }
  408. }
  409. //effacer les horaires dans toutes les cases
  410. if (issetAndNoEmpty('resethoraires')) {
  411. $nbofchoice = count($_SESSION["totalchoixjour"]);
  412. for ($i = 0; $i < $nbofchoice; $i++) {
  413. unset($_SESSION["horaires$i"]);
  414. }
  415. }
  416. // affichage du calendrier
  417. print '<tr>'."\n";
  418. for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) {
  419. $numerojour = $i - $premierjourmois + 1;
  420. // On saute a la ligne tous les 7 jours
  421. if (($i % 7) == 0 && $i != 0) {
  422. print '</tr><tr>'."\n";
  423. }
  424. // On affiche les jours precedants en gris et incliquables
  425. if ($i < $premierjourmois) {
  426. print '<td class="avant"></td>'."\n";
  427. } else {
  428. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  429. $nbofchoice = count($_SESSION["totalchoixjour"]);
  430. for ($j = 0; $j < $nbofchoice; $j++) {
  431. // show red buttons
  432. if (date("j", $_SESSION["totalchoixjour"][$j]) == $numerojour && date("n", $_SESSION["totalchoixjour"][$j]) == $_SESSION["mois"] && date("Y", $_SESSION["totalchoixjour"][$j]) == $_SESSION["annee"]) {
  433. print '<td align="center" class="choisi"><input type="submit" class="bouton OFF centpercent nomarginleft buttonwebsite" name="choixjourretrait[]" value="'.$numerojour.'"></td>'."\n";
  434. $dejafait = $numerojour;
  435. }
  436. }
  437. }
  438. // If no red button, we show green or grey button with number of day
  439. if (isset($dejafait) === false || $dejafait != $numerojour) {
  440. // green button
  441. if (($numerojour >= $jourAJ && $_SESSION["mois"] == $moisAJ && $_SESSION["annee"] == $anneeAJ) || ($_SESSION["mois"] > $moisAJ && $_SESSION["annee"] == $anneeAJ) || $_SESSION["annee"] > $anneeAJ) {
  442. print '<td class="center libre"><input type="submit" class="bouton ON centpercent nomarginleft buttonwebsite" name="choixjourajout[]" value="'.$numerojour.'"></td>'."\n";
  443. } else {
  444. // grey button
  445. print '<td class="center avant">'.$numerojour.'</td>'."\n";
  446. }
  447. }
  448. }
  449. }
  450. //fin du tableau
  451. print '</tr>'."\n";
  452. print '</table>'."\n";
  453. print '</div></div>'."\n";
  454. print '<div class="bodydate"><div class="center">'."\n";
  455. // affichage de tous les jours choisis
  456. if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur) {
  457. //affichage des jours
  458. print '<br>'."\n";
  459. print '<div align="left">';
  460. print '<strong>'.$langs->trans("SelectedDays").':</strong>'."<br>\n";
  461. print $langs->trans("SelectDayDesc")."<br>\n";
  462. print '</div><br>';
  463. print '<table>'."\n";
  464. print '<tr>'."\n";
  465. print '<td></td>'."\n";
  466. for ($i = 0; $i < $_SESSION["nbrecaseshoraires"]; $i++) {
  467. $j = $i + 1;
  468. print '<td classe="somme"><div class="center">'.$langs->trans("Time").' '.$j.'</div></td>'."\n";
  469. }
  470. if ($_SESSION["nbrecaseshoraires"] < 10) {
  471. print '<td classe="somme"><input type="image" name="ajoutcases" src="../img/add-16.png"></td>'."\n";
  472. }
  473. print '</tr>'."\n";
  474. // Show list of selected days
  475. $nbofchoice = count($_SESSION["totalchoixjour"]);
  476. for ($i = 0; $i < $nbofchoice; $i++) {
  477. print '<tr>'."\n";
  478. print '<td class="left">'.dol_print_date($_SESSION["totalchoixjour"][$i], 'daytext').' <span class="opacitymedium">('.dol_print_date($_SESSION["totalchoixjour"][$i], '%A').')</span></td>';
  479. //affichage des cases d'horaires
  480. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  481. //si on voit une erreur, le fond de la case est rouge
  482. if (isset($errheure[$i][$j]) && $errheure[$i][$j]) {
  483. print '<td><input type=text size="10" maxlength="11" name=horaires'.$i.'[] value="'.$_SESSION["horaires$i"][$j].'" style="background-color:#FF6666;"></td>'."\n";
  484. } else {
  485. //sinon la case est vide normalement
  486. print '<td><input type=text size="10" maxlength="11" name=horaires'.$i.'[] value="'.$_SESSION["horaires$i"][$j].'"></td>'."\n";
  487. }
  488. }
  489. print '</tr>'."\n";
  490. }
  491. print '</table>'."\n";
  492. // show buttons to cancel, delete days or create survey
  493. print '<table>'."\n";
  494. print '<tr>'."\n";
  495. print '<td><input type="submit" class="button small" name="reset" value="'.dol_escape_htmltag($langs->trans("RemoveAllDays")).'"></td>';
  496. print '<td><input type="submit" class="button small" name="reporterhoraires" value="'.dol_escape_htmltag($langs->trans("CopyHoursOfFirstDay")).'"></td>';
  497. print '<td><input type="submit" class="button small" name="resethoraires" value="'.dol_escape_htmltag($langs->trans("RemoveAllHours")).'"></td></tr>'."\n";
  498. print'<tr><td colspan="3"><br><br></td></tr>'."\n";
  499. print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="confirmation" value="'.$langs->trans("CreatePoll").'"></td></tr>'."\n";
  500. print '</table>'."\n";
  501. }
  502. print '</tr>'."\n";
  503. print '</table>'."\n";
  504. print '<a name=bas></a>'."\n";
  505. //fin du formulaire et bandeau de pied
  506. print '</form>'."\n";
  507. //bandeau de pied
  508. print '<br><br><br><br>'."\n";
  509. print '</div></div>'."\n";
  510. // End of page
  511. llxFooter();
  512. $db->close();