choix_date.php 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  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->rights->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. ajouter_sondage();
  164. }
  165. }
  166. // Reset days
  167. if (GETPOST('reset')) {
  168. $nbofchoice = count($_SESSION["totalchoixjour"]);
  169. for ($i = 0; $i < $nbofchoice; $i++) {
  170. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  171. unset($_SESSION["horaires$i"][$j]);
  172. }
  173. }
  174. unset($_SESSION["totalchoixjour"]);
  175. unset($_SESSION["nbrecaseshoraires"]);
  176. }
  177. /*
  178. * View
  179. */
  180. if (!isset($_SESSION['description']) && !isset($_SESSION['mail'])) {
  181. dol_print_error('', $langs->trans('ErrorOpenSurveyFillFirstSection'));
  182. exit;
  183. }
  184. $arrayofjs = array();
  185. $arrayofcss = array('/opensurvey/css/style.css');
  186. llxHeader('', $langs->trans("OpenSurvey"), "", '', 0, 0, $arrayofjs, $arrayofcss);
  187. //nombre de cases par défaut
  188. if (!isset($_SESSION["nbrecaseshoraires"])) {
  189. $_SESSION["nbrecaseshoraires"] = 5;
  190. } elseif (GETPOST('ajoutcases') && $_SESSION["nbrecaseshoraires"] == 5) {
  191. $_SESSION["nbrecaseshoraires"] = 10;
  192. }
  193. //valeurs de la date du jour actuel
  194. $jourAJ = date("j");
  195. $moisAJ = date("n");
  196. $anneeAJ = date("Y");
  197. // Initialisation des jour, mois et année
  198. if (!isset($_SESSION['jour'])) {
  199. $_SESSION['jour'] = date('j');
  200. }
  201. if (!isset($_SESSION['mois'])) {
  202. $_SESSION['mois'] = date('n');
  203. }
  204. if (!isset($_SESSION['annee'])) {
  205. $_SESSION['annee'] = date('Y');
  206. }
  207. //mise a jour des valeurs de session si bouton retour a aujourd'hui
  208. if (!issetAndNoEmpty('choixjourajout') && !issetAndNoEmpty('choixjourretrait') && (issetAndNoEmpty('retourmois') || issetAndNoEmpty('retourmois_x'))) {
  209. $_SESSION["jour"] = date("j");
  210. $_SESSION["mois"] = date("n");
  211. $_SESSION["annee"] = date("Y");
  212. }
  213. //mise a jour des valeurs de session si mois avant
  214. if (issetAndNoEmpty('moisavant_x') || issetAndNoEmpty('moisavant')) {
  215. if ($_SESSION["mois"] == 1) {
  216. $_SESSION["mois"] = 12;
  217. $_SESSION["annee"] = $_SESSION["annee"] - 1;
  218. } else {
  219. $_SESSION["mois"] -= 1;
  220. }
  221. //On sauvegarde les heures deja entrées
  222. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  223. $nbofchoice = count($_SESSION["totalchoixjour"]);
  224. for ($i = 0; $i < $nbofchoice; $i++) {
  225. //affichage des 5 cases horaires
  226. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  227. $horairesi = GETPOST("horaires".$i);
  228. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  229. }
  230. }
  231. }
  232. }
  233. //mise a jour des valeurs de session si mois apres
  234. if (issetAndNoEmpty('moisapres_x') || issetAndNoEmpty('moisapres')) {
  235. if ($_SESSION["mois"] == 12) {
  236. $_SESSION["mois"] = 1;
  237. $_SESSION["annee"] += 1;
  238. } else {
  239. $_SESSION["mois"] += 1;
  240. }
  241. //On sauvegarde les heures deja entrées
  242. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  243. $nbofchoice = count($_SESSION["totalchoixjour"]);
  244. for ($i = 0; $i < $nbofchoice; $i++) {
  245. //affichage des 5 cases horaires
  246. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  247. $horairesi = GETPOST("horaires".$i);
  248. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  249. }
  250. }
  251. }
  252. }
  253. //mise a jour des valeurs de session si annee avant
  254. if (issetAndNoEmpty('anneeavant_x') || issetAndNoEmpty('anneeavant')) {
  255. $_SESSION["annee"] -= 1;
  256. //On sauvegarde les heures deja entrées
  257. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  258. $nbofchoice = count($_SESSION["totalchoixjour"]);
  259. for ($i = 0; $i < $nbofchoice; $i++) {
  260. //affichage des 5 cases horaires
  261. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  262. $horairesi = GETPOST("horaires".$i);
  263. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  264. }
  265. }
  266. }
  267. }
  268. //mise a jour des valeurs de session si annee apres
  269. if (issetAndNoEmpty('anneeapres_x') || issetAndNoEmpty('anneeapres')) {
  270. $_SESSION["annee"] += 1;
  271. //On sauvegarde les heures deja entrées
  272. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  273. $nbofchoice = count($_SESSION["totalchoixjour"]);
  274. for ($i = 0; $i < $nbofchoice; $i++) {
  275. //affichage des 5 cases horaires
  276. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  277. $horairesi = GETPOST("horaires".$i);
  278. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  279. }
  280. }
  281. }
  282. }
  283. //valeurs du nombre de jour dans le mois et du premier jour du mois
  284. $nbrejourmois = date("t", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["annee"]));
  285. $premierjourmois = date("N", mktime(0, 0, 0, $_SESSION["mois"], 1, $_SESSION["annee"])) - 1;
  286. //traduction de la valeur du mois
  287. if (is_integer($_SESSION["mois"]) && $_SESSION["mois"] > 0 && $_SESSION["mois"] < 13) {
  288. $motmois = dol_print_date(mktime(0, 0, 0, $_SESSION["mois"], 10), '%B');
  289. } else {
  290. $motmois = dol_print_date(dol_now(), '%B');
  291. }
  292. //Debut du formulaire et bandeaux de tete
  293. print '<form name="formulaire" action="" method="POST">'."\n";
  294. print '<input type="hidden" name="token" value="'.newToken().'">';
  295. print load_fiche_titre($langs->trans("CreatePoll").' (2 / 2)');
  296. //affichage de l'aide pour les jours
  297. print '<div class="bodydate">'."\n";
  298. print $langs->trans("OpenSurveyStep2")."\n";
  299. print '</div>'."\n";
  300. //debut du tableau qui affiche le calendrier
  301. print '<div class="corps">'."\n";
  302. print '<div class="center">'."\n";
  303. print '<table align="center">'."\n"; // The div class=center has no effect on table, so we must keep the align=center for table
  304. print '<tr><td><input type="image" name="anneeavant" value="<<" src="../img/rewind.png"></td><td><input type="image" name="moisavant" value="<" src="../img/previous.png"></td>';
  305. print '<td width="150px" align="center"> '.$motmois.' '.$_SESSION["annee"].'<br>';
  306. print '<input type="image" name="retourmois" alt="'.dol_escape_htmltag($langs->trans("BackToCurrentMonth")).'" title="'.dol_escape_htmltag($langs->trans("BackToCurrentMonth")).'" value="" src="'.img_picto('', 'refresh', '', 0, 1).'">';
  307. print '</td><td><input type="image" name="moisapres" value=">" src="../img/next.png"></td>';
  308. print '<td><input type="image" name="anneeapres" value=">>" src="../img/fforward.png"></td><td></td><td></td><td></td><td></td><td></td><td>';
  309. print '</td></tr>'."\n";
  310. print '</table>'."\n";
  311. print '</div>'."\n";
  312. print '<div class="center calendrier">'."\n";
  313. print '<table align="center">'."\n"; // The div class=center has no effect on table, so we must keep the align=center for table
  314. print '<tr>'."\n";
  315. //affichage des jours de la semaine en haut du tableau
  316. for ($i = 0; $i < 7; $i++) {
  317. print '<td align="center" class="joursemaine">'.dol_print_date(mktime(0, 0, 0, 0, $i, 10), '%A').'</td>';
  318. }
  319. print '</tr>'."\n";
  320. //ajout d'une entrée dans la variable de session qui contient toutes les dates
  321. if (issetAndNoEmpty('choixjourajout')) {
  322. if (!isset($_SESSION["totalchoixjour"])) {
  323. $_SESSION["totalchoixjour"] = array();
  324. }
  325. // Test pour éviter les doublons dans la variable qui contient toutes les dates
  326. $journeuf = true;
  327. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true && issetAndNoEmpty('choixjourajout') === true) {
  328. $nbofchoice = count($_SESSION["totalchoixjour"]);
  329. for ($i = 0; $i < $nbofchoice; $i++) {
  330. $choixjourajout = GETPOST("choixjourajout");
  331. if ($_SESSION["totalchoixjour"][$i] == mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"])) {
  332. $journeuf = false;
  333. }
  334. }
  335. }
  336. // Si le test est passé, alors on insere la valeur dans la variable de session qui contient les dates
  337. if ($journeuf && issetAndNoEmpty('choixjourajout') === true) {
  338. $choixjourajout = GETPOST("choixjourajout");
  339. array_push($_SESSION["totalchoixjour"], dol_mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"]));
  340. sort($_SESSION["totalchoixjour"]);
  341. $cle = array_search(dol_mktime(0, 0, 0, $_SESSION["mois"], $choixjourajout[0], $_SESSION["annee"]), $_SESSION["totalchoixjour"]);
  342. //On sauvegarde les heures deja entrées
  343. for ($i = 0; $i < $cle; $i++) {
  344. $horairesi = GETPOST("horaires".$i);
  345. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  346. if (issetAndNoEmpty('horaires'.$i) === true && issetAndNoEmpty($i, $_POST['horaires'.$i]) === true) {
  347. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  348. }
  349. }
  350. }
  351. $nbofchoice = count($_SESSION["totalchoixjour"]);
  352. for ($i = $cle; $i < $nbofchoice; $i++) {
  353. $k = $i + 1;
  354. if (issetAndNoEmpty('horaires'.$i) === true && issetAndNoEmpty($i, $_POST['horaires'.$i]) === true) {
  355. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  356. $horairesi = GETPOST("horaires".$i);
  357. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  358. }
  359. }
  360. }
  361. unset($_SESSION["horaires$cle"]);
  362. }
  363. }
  364. //retrait d'une entrée dans la variable de session qui contient toutes les dates
  365. if (issetAndNoEmpty('choixjourretrait')) {
  366. //On sauvegarde les heures deja entrées
  367. $nbofchoice = count($_SESSION["totalchoixjour"]);
  368. for ($i = 0; $i < $nbofchoice; $i++) {
  369. //affichage des 5 cases horaires
  370. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  371. $horairesi = GETPOST("horaires".$i);
  372. $_SESSION["horaires$i"][$j] = $horairesi[$j];
  373. }
  374. }
  375. for ($i = 0; $i < $nbofchoice; $i++) {
  376. $choixjourretrait = GETPOST('choixjourretrait');
  377. if ($_SESSION["totalchoixjour"][$i] == mktime(0, 0, 0, $_SESSION["mois"], $choixjourretrait[0], $_SESSION["annee"])) {
  378. for ($j = $i; $j < $nbofchoice; $j++) {
  379. $k = $j + 1;
  380. $_SESSION["horaires$j"] = $_SESSION["horaires$k"];
  381. }
  382. array_splice($_SESSION["totalchoixjour"], $i, 1);
  383. }
  384. }
  385. }
  386. //report des horaires dans toutes les cases
  387. if (issetAndNoEmpty('reporterhoraires')) {
  388. $_SESSION["horaires0"] = GETPOST("horaires0");
  389. $nbofchoice = count($_SESSION["totalchoixjour"]);
  390. for ($i = 0; $i < $nbofchoice; $i++) {
  391. $j = $i + 1;
  392. $_SESSION["horaires$j"] = $_SESSION["horaires$i"];
  393. }
  394. }
  395. //report des horaires dans toutes les cases
  396. if (issetAndNoEmpty('resethoraires')) {
  397. $nbofchoice = count($_SESSION["totalchoixjour"]);
  398. for ($i = 0; $i < $nbofchoice; $i++) {
  399. unset($_SESSION["horaires$i"]);
  400. }
  401. }
  402. // affichage du calendrier
  403. print '<tr>'."\n";
  404. for ($i = 0; $i < $nbrejourmois + $premierjourmois; $i++) {
  405. $numerojour = $i - $premierjourmois + 1;
  406. // On saute a la ligne tous les 7 jours
  407. if (($i % 7) == 0 && $i != 0) {
  408. print '</tr><tr>'."\n";
  409. }
  410. // On affiche les jours precedants en gris et incliquables
  411. if ($i < $premierjourmois) {
  412. print '<td class="avant"></td>'."\n";
  413. } else {
  414. if (issetAndNoEmpty('totalchoixjour', $_SESSION) === true) {
  415. $nbofchoice = count($_SESSION["totalchoixjour"]);
  416. for ($j = 0; $j < $nbofchoice; $j++) {
  417. // show red buttons
  418. if (date("j", $_SESSION["totalchoixjour"][$j]) == $numerojour && date("n", $_SESSION["totalchoixjour"][$j]) == $_SESSION["mois"] && date("Y", $_SESSION["totalchoixjour"][$j]) == $_SESSION["annee"]) {
  419. print '<td align="center" class="choisi"><input type="submit" class="bouton OFF" name="choixjourretrait[]" value="'.$numerojour.'"></td>'."\n";
  420. $dejafait = $numerojour;
  421. }
  422. }
  423. }
  424. // If no red button, we show green or grey button with number of day
  425. if (isset($dejafait) === false || $dejafait != $numerojour) {
  426. // green button
  427. if (($numerojour >= $jourAJ && $_SESSION["mois"] == $moisAJ && $_SESSION["annee"] == $anneeAJ) || ($_SESSION["mois"] > $moisAJ && $_SESSION["annee"] == $anneeAJ) || $_SESSION["annee"] > $anneeAJ) {
  428. print '<td align="center" class="libre"><input type="submit" class="bouton ON" name="choixjourajout[]" value="'.$numerojour.'"></td>'."\n";
  429. } else {
  430. // grey button
  431. print '<td align="center" class="avant">'.$numerojour.'</td>'."\n";
  432. }
  433. }
  434. }
  435. }
  436. //fin du tableau
  437. print '</tr>'."\n";
  438. print '</table>'."\n";
  439. print '</div></div>'."\n";
  440. print '<div class="bodydate"><div class="center">'."\n";
  441. // affichage de tous les jours choisis
  442. if (issetAndNoEmpty('totalchoixjour', $_SESSION) || $erreur) {
  443. //affichage des jours
  444. print '<br>'."\n";
  445. print '<div align="left">';
  446. print '<strong>'.$langs->trans("SelectedDays").':</strong>'."<br>\n";
  447. print $langs->trans("SelectDayDesc")."<br>\n";
  448. print '</div><br>';
  449. print '<table>'."\n";
  450. print '<tr>'."\n";
  451. print '<td></td>'."\n";
  452. for ($i = 0; $i < $_SESSION["nbrecaseshoraires"]; $i++) {
  453. $j = $i + 1;
  454. print '<td classe="somme"><div class="center">'.$langs->trans("Time").' '.$j.'</div></td>'."\n";
  455. }
  456. if ($_SESSION["nbrecaseshoraires"] < 10) {
  457. print '<td classe="somme"><input type="image" name="ajoutcases" src="../img/add-16.png"></td>'."\n";
  458. }
  459. print '</tr>'."\n";
  460. //affichage de la liste des jours choisis
  461. $nbofchoice = count($_SESSION["totalchoixjour"]);
  462. for ($i = 0; $i < $nbofchoice; $i++) {
  463. print '<tr>'."\n";
  464. print '<td>'.dol_print_date($_SESSION["totalchoixjour"][$i], 'daytext').' ('.dol_print_date($_SESSION["totalchoixjour"][$i], '%A').')</td>';
  465. //affichage des cases d'horaires
  466. for ($j = 0; $j < $_SESSION["nbrecaseshoraires"]; $j++) {
  467. //si on voit une erreur, le fond de la case est rouge
  468. if (isset($errheure[$i][$j]) && $errheure[$i][$j]) {
  469. print '<td><input type=text size="10" maxlength="11" name=horaires'.$i.'[] value="'.$_SESSION["horaires$i"][$j].'" style="background-color:#FF6666;"></td>'."\n";
  470. } else {
  471. //sinon la case est vide normalement
  472. print '<td><input type=text size="10" maxlength="11" name=horaires'.$i.'[] value="'.$_SESSION["horaires$i"][$j].'"></td>'."\n";
  473. }
  474. }
  475. print '</tr>'."\n";
  476. }
  477. print '</table>'."\n";
  478. // show buttons to cancel, delete days or create survey
  479. print '<table>'."\n";
  480. print '<tr>'."\n";
  481. print '<td><input type="submit" class="button" name="reset" value="'.dol_escape_htmltag($langs->trans("RemoveAllDays")).'"></td><td><input type="submit" class="button" name="reporterhoraires" value="'.dol_escape_htmltag($langs->trans("CopyHoursOfFirstDay")).'"></td><td><input type="submit" class="button" name="resethoraires" value="'.dol_escape_htmltag($langs->trans("RemoveAllHours")).'"></td></tr>'."\n";
  482. print'<tr><td colspan="3"><br><br></td></tr>'."\n";
  483. print '<tr><td colspan="3" align="center"><input type="submit" class="button" name="confirmation" value="'.$langs->trans("CreatePoll").'"></td></tr>'."\n";
  484. print '</table>'."\n";
  485. }
  486. print '</tr>'."\n";
  487. print '</table>'."\n";
  488. print '<a name=bas></a>'."\n";
  489. //fin du formulaire et bandeau de pied
  490. print '</form>'."\n";
  491. //bandeau de pied
  492. print '<br><br><br><br>'."\n";
  493. print '</div></div>'."\n";
  494. // End of page
  495. llxFooter();
  496. $db->close();