blob: 46a3761a09c4a408026e77b387c54f0923251dcb [file] [log] [blame]
Copybara botbe50d492023-11-30 00:16:42 +01001<?php
Adrià Vilanova Martínez5af86512023-12-02 20:44:16 +01002/*
3 * hores
4 * Copyright (c) 2023 Adrià Vilanova Martínez
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as
8 * published by the Free Software Foundation, either version 3 of the
9 * License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public
17 * License along with this program.
18 * If not, see http://www.gnu.org/licenses/.
19 */
20
Copybara botbe50d492023-11-30 00:16:42 +010021class calendarsView {
22 public static function renderCalendar($current, $ends, $selectedFunc, $disabled = false, $extra = false) {
23 $interval = new DateInterval("P1D");
24
25 echo '<div class="overflow-wrapper">';
26
27 $start = true;
28 $day = 0;
29 while ($current->diff($ends)->invert === 0) {
30 $dow = (int)$current->format("w");
31 if ($dow == 0) $dow = 7;
32 $dom = (int)$current->format("d");
33
34 if ($dow == 1) echo "</tr>";
35 if ($dom == 1) echo "</table>";
36 if ($dom == 1 || $start) echo "<div class='month'>".security::htmlsafe(ucfirst(strftime("%B %G", $current->getTimestamp())))."</div><table class='calendar'>";
37 if ($dow == 1 || $start) echo "<tr>";
38 if ($dom == 1 || $start) {
39 for ($i = 1; $i < $dow; $i++) {
40 echo "<td></td>";
41 }
42 }
43
44 echo "<td class='day'><span class='date'>".$dom."</span><br><select name='type[$day]'".($disabled ? " disabled" : "").">";
45
46 foreach (calendars::$types as $id => $type) {
47 echo "<option value='".(int)$id."'".($selectedFunc($current->getTimestamp(), $id, $dow, $dom, $extra) ? " selected" : "").">".security::htmlsafe($type)."</option>";
48 }
49
50 echo "</td>";
51
52 $start = false;
53 $day++;
54 $current->add($interval);
55 }
56
57 for ($i = $dow + 1; $i <= 7; $i++) {
58 echo "<td></td>";
59 }
60
61 echo "</tr></table></div>";
62 }
63}