From 5e66007f0629ab5a9b4449ca6ea4070f372bd656 Mon Sep 17 00:00:00 2001 From: msquare Date: Sun, 2 Oct 2016 23:00:01 +0200 Subject: introduce ShiftsFilter --- includes/sys_page.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'includes/sys_page.php') diff --git a/includes/sys_page.php b/includes/sys_page.php index e336261d..27e3e8ba 100644 --- a/includes/sys_page.php +++ b/includes/sys_page.php @@ -18,6 +18,19 @@ function raw_output($output) { die(); } +/** + * Returns an int[] from given request param name. + * + * @param String $name + * Name of the request param + */ +function check_request_int_array($name) { + if (isset($_REQUEST[$name]) && is_array($_REQUEST[$name])) { + return array_filter($_REQUEST[$name], 'is_numeric'); + } + return []; +} + /** * Checks if given request item (name) can be parsed to a date. * If not parsable, given error message is put into msg() and null is returned. -- cgit v1.2.3-54-g00ecf From f3a0ce865deb9603b77adc9c9237a55cd4d87eeb Mon Sep 17 00:00:00 2001 From: msquare Date: Mon, 3 Oct 2016 18:32:25 +0200 Subject: move sql queries from shifts controller to model --- includes/controller/shifts_controller.php | 70 ++++++++----------------------- includes/model/NeededAngelTypes_model.php | 52 ++++++++++++++++++++++- includes/model/Room_model.php | 11 ++++- includes/pages/admin_rooms.php | 32 +++++++------- includes/sys_page.php | 18 ++++++++ 5 files changed, 114 insertions(+), 69 deletions(-) (limited to 'includes/sys_page.php') diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php index 0d36aa49..aa1ac5d9 100644 --- a/includes/controller/shifts_controller.php +++ b/includes/controller/shifts_controller.php @@ -31,51 +31,16 @@ function shift_edit_controller() { } $shift_id = $_REQUEST['edit_shift']; - // Locations laden - $rooms = sql_select("SELECT * FROM `Room` WHERE `show`='Y' ORDER BY `Name`"); - $room_array = []; - foreach ($rooms as $room) { - $room_array[$room['RID']] = $room['Name']; - } - - $shift = sql_select(" - SELECT `ShiftTypes`.`name`, `Shifts`.*, `Room`.* FROM `Shifts` - JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) - JOIN `ShiftTypes` ON (`ShiftTypes`.`id` = `Shifts`.`shifttype_id`) - WHERE `SID`='" . sql_escape($shift_id) . "'"); - if (count($shift) == 0) { - redirect(page_link_to('user_shifts')); - } - $shift = $shift[0]; - - // Engeltypen laden - $types = sql_select("SELECT * FROM `AngelTypes` ORDER BY `name`"); - $angel_types = []; - $needed_angel_types = []; - foreach ($types as $type) { - $angel_types[$type['id']] = $type; - $needed_angel_types[$type['id']] = 0; - } - - $shifttypes_source = ShiftTypes(); - $shifttypes = []; - foreach ($shifttypes_source as $shifttype) { - $shifttypes[$shifttype['id']] = $shifttype['name']; - } + $shift = Shift($shift_id); - // Benötigte Engeltypen vom Raum - $needed_angel_types_source = sql_select("SELECT `AngelTypes`.*, `NeededAngelTypes`.`count` FROM `AngelTypes` LEFT JOIN `NeededAngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id` AND `NeededAngelTypes`.`room_id`='" . sql_escape($shift['RID']) . "') ORDER BY `AngelTypes`.`name`"); - foreach ($needed_angel_types_source as $type) { - if ($type['count'] != "") { - $needed_angel_types[$type['id']] = $type['count']; - } - } + $room = select_array(Rooms(), 'RID', 'Name'); + $angeltypes = select_array(AngelTypes(), 'id', 'name'); + $shifttypes = select_array(ShiftTypes(), 'id', 'name'); - // Benötigte Engeltypen von der Schicht - $needed_angel_types_source = sql_select("SELECT `AngelTypes`.*, `NeededAngelTypes`.`count` FROM `AngelTypes` LEFT JOIN `NeededAngelTypes` ON (`NeededAngelTypes`.`angel_type_id` = `AngelTypes`.`id` AND `NeededAngelTypes`.`shift_id`='" . sql_escape($shift_id) . "') ORDER BY `AngelTypes`.`name`"); - foreach ($needed_angel_types_source as $type) { - if ($type['count'] != "") { - $needed_angel_types[$type['id']] = $type['count']; + $needed_angel_types = select_array(NeededAngelTypes_by_shift($shift_id), 'id', 'count'); + foreach (array_keys($angeltypes) as $angeltype_id) { + if (! isset($needed_angel_types[$angeltype_id])) { + $needed_angel_types[$angeltype_id] = 0; } } @@ -90,11 +55,10 @@ function shift_edit_controller() { $title = strip_request_item('title'); // Auswahl der sichtbaren Locations für die Schichten - if (isset($_REQUEST['rid']) && preg_match("/^[0-9]+$/", $_REQUEST['rid']) && isset($room_array[$_REQUEST['rid']])) { + if (isset($_REQUEST['rid']) && preg_match("/^[0-9]+$/", $_REQUEST['rid']) && isset($room[$_REQUEST['rid']])) { $rid = $_REQUEST['rid']; } else { $valid = false; - $rid = $rooms[0]['RID']; $msg .= error(_("Please select a room."), true); } @@ -144,11 +108,11 @@ function shift_edit_controller() { if ($result === false) { engelsystem_error('Unable to update shift.'); } - sql_query("DELETE FROM `NeededAngelTypes` WHERE `shift_id`='" . sql_escape($shift_id) . "'"); + NeededAngelTypes_delete_by_shift($shift_id); $needed_angel_types_info = []; foreach ($needed_angel_types as $type_id => $count) { - sql_query("INSERT INTO `NeededAngelTypes` SET `shift_id`='" . sql_escape($shift_id) . "', `angel_type_id`='" . sql_escape($type_id) . "', `count`='" . sql_escape($count) . "'"); - $needed_angel_types_info[] = $angel_types[$type_id]['name'] . ": " . $count; + NeededAngelType_add($shift_id, $type_id, null, $count); + $needed_angel_types_info[] = $angeltypes[$type_id] . ": " . $count; } engelsystem_log("Updated shift '" . $shifttypes[$shifttype_id] . ", " . $title . "' from " . date("Y-m-d H:i", $start) . " to " . date("Y-m-d H:i", $end) . " with angel types " . join(", ", $needed_angel_types_info)); @@ -160,9 +124,9 @@ function shift_edit_controller() { } } - $angel_types = ""; - foreach ($types as $type) { - $angel_types .= form_spinner('type_' . $type['id'], $type['name'], $needed_angel_types[$type['id']]); + $angel_types_spinner = ""; + foreach ($angeltypes as $angeltype_id => $angeltype_name) { + $angel_types_spinner .= form_spinner('type_' . $angeltype_id, $angeltype_name, $needed_angel_types[$angeltype_id]); } return page_with_title(shifts_title(), [ @@ -171,11 +135,11 @@ function shift_edit_controller() { form([ form_select('shifttype_id', _('Shifttype'), $shifttypes, $shifttype_id), form_text('title', _("Title"), $title), - form_select('rid', _("Room:"), $room_array, $rid), + form_select('rid', _("Room:"), $room, $rid), form_text('start', _("Start:"), date("Y-m-d H:i", $start)), form_text('end', _("End:"), date("Y-m-d H:i", $end)), '

' . _("Needed angels") . '

', - $angel_types, + $angel_types_spinner, form_submit('submit', _("Save")) ]) ]); diff --git a/includes/model/NeededAngelTypes_model.php b/includes/model/NeededAngelTypes_model.php index 96ceca83..77a23c3d 100644 --- a/includes/model/NeededAngelTypes_model.php +++ b/includes/model/NeededAngelTypes_model.php @@ -1,9 +1,59 @@ 0) { - $room_id = $_REQUEST['id']; - $name = $room[0]['Name']; - $from_pentabarf = $room[0]['FromPentabarf']; - $public = $room[0]['show']; - $number = $room[0]['Number']; - $needed_angeltypes = sql_select("SELECT * FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); - foreach ($needed_angeltypes as $needed_angeltype) { - $angeltypes_count[$needed_angeltype['angel_type_id']] = $needed_angeltype['count']; - } - } else { + $room = Room($_REQUEST['id']); + if ($room === false) { + engelsystem_error("Unable to load room."); + } + if ($room == null) { redirect(page_link_to('admin_rooms')); } + + $room_id = $_REQUEST['id']; + $name = $room['Name']; + $from_pentabarf = $room['FromPentabarf']; + $public = $room['show']; + $number = $room['Number']; + + $needed_angeltypes = sql_select("SELECT * FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); + foreach ($needed_angeltypes as $needed_angeltype) { + $angeltypes_count[$needed_angeltype['angel_type_id']] = $needed_angeltype['count']; + } } if ($_REQUEST['show'] == 'edit') { @@ -106,7 +110,7 @@ function admin_rooms() { engelsystem_log("Room created: " . $name . ", pentabarf import: " . $from_pentabarf . ", public: " . $public . ", number: " . $number); } - sql_query("DELETE FROM `NeededAngelTypes` WHERE `room_id`='" . sql_escape($room_id) . "'"); + NeededAngelTypes_delete_by_room($room_id); $needed_angeltype_info = []; foreach ($angeltypes_count as $angeltype_id => $angeltype_count) { $angeltype = AngelType($angeltype_id); @@ -114,7 +118,7 @@ function admin_rooms() { engelsystem_error("Unable to load angeltype."); } if ($angeltype != null) { - sql_query("INSERT INTO `NeededAngelTypes` SET `room_id`='" . sql_escape($room_id) . "', `angel_type_id`='" . sql_escape($angeltype_id) . "', `count`='" . sql_escape($angeltype_count) . "'"); + NeededAngelType_add(null, $angeltype_id, $room_id, $count); $needed_angeltype_info[] = $angeltype['name'] . ": " . $angeltype_count; } } diff --git a/includes/sys_page.php b/includes/sys_page.php index 27e3e8ba..e62909ab 100644 --- a/includes/sys_page.php +++ b/includes/sys_page.php @@ -18,6 +18,24 @@ function raw_output($output) { die(); } +/** + * Helper function for transforming list of entities into array for select boxes. + * + * @param array $data + * The data array + * @param string $key_name + * name of the column to use as id/key + * @param string $value_name + * name of the column to use as displayed value + */ +function select_array($data, $key_name, $value_name) { + $ret = []; + foreach ($data as $value) { + $ret[$value[$key_name]] = $value[$value_name]; + } + return $ret; +} + /** * Returns an int[] from given request param name. * -- cgit v1.2.3-54-g00ecf From 42144ed21cbc7361857b375d719ec53b24314546 Mon Sep 17 00:00:00 2001 From: msquare Date: Tue, 4 Oct 2016 17:58:56 +0200 Subject: move static access to datetime parse function --- includes/controller/shifts_controller.php | 8 ++++---- includes/pages/admin_import.php | 4 ++-- includes/pages/admin_shifts.php | 14 +++++++------- includes/pages/guest_login.php | 4 ++-- includes/pages/user_settings.php | 8 ++++---- includes/pages/user_shifts.php | 7 ++----- includes/sys_page.php | 30 ++++++++++++++++++++++++++---- 7 files changed, 47 insertions(+), 28 deletions(-) (limited to 'includes/sys_page.php') diff --git a/includes/controller/shifts_controller.php b/includes/controller/shifts_controller.php index 3300c0d2..ca6fd906 100644 --- a/includes/controller/shifts_controller.php +++ b/includes/controller/shifts_controller.php @@ -69,15 +69,15 @@ function shift_edit_controller() { $msg .= error(_('Please select a shifttype.'), true); } - if (isset($_REQUEST['start']) && $tmp = DateTime::createFromFormat("Y-m-d H:i", trim($_REQUEST['start']))) { - $start = $tmp->getTimestamp(); + if (isset($_REQUEST['start']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['start'])) { + $start = $tmp; } else { $valid = false; $msg .= error(_("Please enter a valid starting time for the shifts."), true); } - if (isset($_REQUEST['end']) && $tmp = DateTime::createFromFormat("Y-m-d H:i", trim($_REQUEST['end']))) { - $end = $tmp->getTimestamp(); + if (isset($_REQUEST['end']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['end'])) { + $end = $tmp; } else { $valid = false; $msg .= error(_("Please enter a valid ending time for the shifts."), true); diff --git a/includes/pages/admin_import.php b/includes/pages/admin_import.php index 2c36e681..4af09dca 100644 --- a/includes/pages/admin_import.php +++ b/includes/pages/admin_import.php @@ -312,8 +312,8 @@ function prepare_events($file, $shifttype_id, $add_minutes_start, $add_minutes_e 'event-id' }); $shifts_pb[$event_id] = [ 'shifttype_id' => $shifttype_id, - 'start' => DateTime::createFromFormat("Ymd\THis", $event->dtstart)->getTimestamp() - $add_minutes_start * 60, - 'end' => DateTime::createFromFormat("Ymd\THis", $event->dtend)->getTimestamp() + $add_minutes_end * 60, + 'start' => parse_date("Ymd\THis", $event->dtstart) - $add_minutes_start * 60, + 'end' => parse_date("Ymd\THis", $event->dtend) + $add_minutes_end * 60, 'RID' => $rooms_import[trim($event->location)], 'title' => trim($event->summary), 'URL' => trim($event->url), diff --git a/includes/pages/admin_shifts.php b/includes/pages/admin_shifts.php index 3dd22f3a..42a8c682 100644 --- a/includes/pages/admin_shifts.php +++ b/includes/pages/admin_shifts.php @@ -9,7 +9,7 @@ function admin_shifts() { $valid = true; $rid = 0; - $start = DateTime::createFromFormat("Y-m-d H:i", date("Y-m-d") . " 00:00")->getTimestamp(); + $start = parse_date("Y-m-d H:i", date("Y-m-d") . " 00:00"); $end = $start; $mode = 'single'; $angelmode = 'manually'; @@ -71,15 +71,15 @@ function admin_shifts() { error(_('Please select a location.')); } - if (isset($_REQUEST['start']) && $tmp = DateTime::createFromFormat("Y-m-d H:i", trim($_REQUEST['start']))) { - $start = $tmp->getTimestamp(); + if (isset($_REQUEST['start']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['start'])) { + $start = $tmp; } else { $valid = false; error(_('Please select a start time.')); } - if (isset($_REQUEST['end']) && $tmp = DateTime::createFromFormat("Y-m-d H:i", trim($_REQUEST['end']))) { - $end = $tmp->getTimestamp(); + if (isset($_REQUEST['end']) && $tmp = parse_date("Y-m-d H:i", $_REQUEST['end'])) { + $end = $tmp; } else { $valid = false; error(_('Please select an end time.')); @@ -188,7 +188,7 @@ function admin_shifts() { } while ($shift_end < $end); } elseif ($mode == 'variable') { rsort($change_hours); - $day = DateTime::createFromFormat("Y-m-d H:i", date("Y-m-d", $start) . " 00:00")->getTimestamp(); + $day = parse_date("Y-m-d H:i", date("Y-m-d", $start) . " 00:00"); $change_index = 0; // Ersten/nächsten passenden Schichtwechsel suchen foreach ($change_hours as $i => $change_hour) { @@ -205,7 +205,7 @@ function admin_shifts() { $shift_start = $start; do { - $day = DateTime::createFromFormat("Y-m-d H:i", date("Y-m-d", $shift_start) . " 00:00")->getTimestamp(); + $day = parse_date("Y-m-d H:i", date("Y-m-d", $shift_start) . " 00:00"); $shift_end = $day + $change_hours[$change_index] * 60 * 60; if ($shift_end > $end) { diff --git a/includes/pages/guest_login.php b/includes/pages/guest_login.php index 1f1b7ab2..9f688321 100644 --- a/includes/pages/guest_login.php +++ b/includes/pages/guest_login.php @@ -104,8 +104,8 @@ function guest_register() { $msg .= error(sprintf(_("Your password is too short (please use at least %s characters)."), MIN_PASSWORD_LENGTH), true); } - if (isset($_REQUEST['planned_arrival_date']) && DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_arrival_date']))) { - $planned_arrival_date = DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_arrival_date']))->getTimestamp(); + if (isset($_REQUEST['planned_arrival_date']) && $tmp = parse_date("Y-m-d", $_REQUEST['planned_arrival_date'])) { + $planned_arrival_date = $tmp; } else { $valid = false; $msg .= error(_("Please enter your planned date of arrival."), true); diff --git a/includes/pages/user_settings.php b/includes/pages/user_settings.php index b2ea5752..22ead68b 100644 --- a/includes/pages/user_settings.php +++ b/includes/pages/user_settings.php @@ -56,16 +56,16 @@ function user_settings() { $valid = false; } - if (isset($_REQUEST['planned_arrival_date']) && DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_arrival_date']))) { - $planned_arrival_date = DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_arrival_date']))->getTimestamp(); + if (isset($_REQUEST['planned_arrival_date']) && $tmp = parse_date("Y-m-d", $_REQUEST['planned_arrival_date'])) { + $planned_arrival_date = $tmp; } else { $valid = false; $msg .= error(_("Please enter your planned date of arrival."), true); } if (isset($_REQUEST['planned_departure_date']) && $_REQUEST['planned_departure_date'] != '') { - if (DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_departure_date']))) { - $planned_departure_date = DateTime::createFromFormat("Y-m-d", trim($_REQUEST['planned_departure_date']))->getTimestamp(); + if ($tmp = parse_date("Y-m-d", $_REQUEST['planned_departure_date'])) { + $planned_departure_date = $tmp; } else { $valid = false; $msg .= error(_("Please enter your planned date of departure."), true); diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php index ad211181..8b6dd1fc 100644 --- a/includes/pages/user_shifts.php +++ b/includes/pages/user_shifts.php @@ -75,11 +75,8 @@ function update_ShiftsFilter(ShiftsFilter $shiftsFilter, $user_shifts_admin, $da $end_time = "23:59"; } - $startdatetime = DateTime::createFromFormat("Y-m-d H:i", $start_day . " " . $start_time); - $shiftsFilter->setStartTime($startdatetime->getTimestamp()); - - $enddatetime = DateTime::createFromFormat("Y-m-d H:i", $end_day . " " . $end_time); - $shiftsFilter->setEndTime($enddatetime->getTimestamp()); + $shiftsFilter->setStartTime(parse_date("Y-m-d H:i", $start_day . " " . $start_time)); + $shiftsFilter->setEndTime(parse_date("Y-m-d H:i", $end_day . " " . $end_time)); } return $shiftsFilter; diff --git a/includes/sys_page.php b/includes/sys_page.php index e62909ab..f20a791c 100644 --- a/includes/sys_page.php +++ b/includes/sys_page.php @@ -1,5 +1,26 @@ getTimestamp(); +} + /** * Leitet den Browser an die übergebene URL weiter und hält das Script an. */ @@ -11,7 +32,8 @@ function redirect($url) { /** * Echoes given output and dies. * - * @param String $output + * @param String $output + * String to display */ function raw_output($output) { echo $output; @@ -20,7 +42,7 @@ function raw_output($output) { /** * Helper function for transforming list of entities into array for select boxes. - * + * * @param array $data * The data array * @param string $key_name @@ -81,8 +103,8 @@ function check_request_date($name, $error_message = null, $null_allowed = false) * @return ValidationResult containing the parsed date */ function check_date($input, $error_message = null, $null_allowed = false) { - if (DateTime::createFromFormat("Y-m-d", trim($input))) { - return new ValidationResult(true, DateTime::createFromFormat("Y-m-d", trim($input))->getTimestamp()); + if ($tmp = parse_date("Y-m-d", trim($input))) { + return new ValidationResult(true, $tmp); } if ($null_allowed) { return new ValidationResult(true, null); -- cgit v1.2.3-54-g00ecf From a50b26490cf3c76d6dae293cb34b4cbff01133b6 Mon Sep 17 00:00:00 2001 From: msquare Date: Tue, 4 Oct 2016 18:52:52 +0200 Subject: reduce complexity of shiftsfilter update --- includes/pages/user_shifts.php | 37 ++++++------------------------------- includes/sys_page.php | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 31 deletions(-) (limited to 'includes/sys_page.php') diff --git a/includes/pages/user_shifts.php b/includes/pages/user_shifts.php index d13f9701..d415e5f5 100644 --- a/includes/pages/user_shifts.php +++ b/includes/pages/user_shifts.php @@ -35,38 +35,13 @@ function user_shifts() { * @param ShiftsFilter $shiftsFilter * The shiftfilter to update. */ -function update_ShiftsFilter_timerange(ShiftsFilter $shiftsFilter) { - $day = date('Y-m-d', time()); - $start_day = in_array($day, $days) ? $day : min($days); - if (isset($_REQUEST['start_day']) && in_array($_REQUEST['start_day'], $days)) { - $start_day = $_REQUEST['start_day']; - } - - $start_time = date("H:i"); - if (isset($_REQUEST['start_time']) && preg_match('#^\d{1,2}:\d\d$#', $_REQUEST['start_time'])) { - $start_time = $_REQUEST['start_time']; - } - - $day = date('Y-m-d', time() + 24 * 60 * 60); - $end_day = in_array($day, $days) ? $day : max($days); - if (isset($_REQUEST['end_day']) && in_array($_REQUEST['end_day'], $days)) { - $end_day = $_REQUEST['end_day']; - } +function update_ShiftsFilter_timerange(ShiftsFilter $shiftsFilter, $days) { + $shiftsFilter->setStartTime(check_request_datetime('start_day', 'start_time', $days, time())); + $shiftsFilter->setEndTime(check_request_datetime('end_day', 'end_time', $days, time() + 24 * 60 * 60)); - $end_time = date("H:i"); - if (isset($_REQUEST['end_time']) && preg_match('#^\d{1,2}:\d\d$#', $_REQUEST['end_time'])) { - $end_time = $_REQUEST['end_time']; + if ($shiftsFilter->getStartTime() > $shiftsFilter->getEndTime()) { + $shiftsFilter->setEndTime($shiftsFilter->getStartTime() + 24 * 60 * 60); } - - if ($start_day > $end_day) { - $end_day = $start_day; - } - if ($start_day == $end_day && $start_time >= $end_time) { - $end_time = "23:59"; - } - - $shiftsFilter->setStartTime(parse_date("Y-m-d H:i", $start_day . " " . $start_time)); - $shiftsFilter->setEndTime(parse_date("Y-m-d H:i", $end_day . " " . $end_time)); } /** @@ -91,7 +66,7 @@ function update_ShiftsFilter(ShiftsFilter $shiftsFilter, $user_shifts_admin, $da $shiftsFilter->setTypes(check_request_int_array('types')); } if ((isset($_REQUEST['start_time']) && isset($_REQUEST['start_day']) && isset($_REQUEST['end_time']) && isset($_REQUEST['end_day'])) || $shiftsFilter->getStartTime() == null || $shiftsFilter->getEndTime() == null) { - update_ShiftsFilter_timerange($shiftsFilter); + update_ShiftsFilter_timerange($shiftsFilter, $days); } } diff --git a/includes/sys_page.php b/includes/sys_page.php index f20a791c..3c548bab 100644 --- a/includes/sys_page.php +++ b/includes/sys_page.php @@ -4,6 +4,32 @@ * Provide page/request helper functions */ +/** + * Parse a date from da day and a time textfield. + * + * @param string $date_name + * Name of the textfield containing the day (format Y-m-d) + * @param string $time_name + * Name of the textfield containing the time (format H:i) + * @param string[] $allowed_days + * List of allowed days in format Y-m-d + * @param int $default_value + * Default value unix timestamp + */ +function check_request_datetime($date_name, $time_name, $allowed_days, $default_value) { + $time = date("H:i", $default_value); + $day = date("Y-m-d", $default_value); + + if (isset($_REQUEST[$time_name]) && preg_match('#^\d{1,2}:\d\d$#', trim($_REQUEST[$time_name]))) { + $time = trim($_REQUEST[$time_name]); + } + if (isset($_REQUEST[$date_name]) && in_array($_REQUEST[$date_name], $allowed_days)) { + $day = $_REQUEST[$date_name]; + } + + return parse_date("Y-m-d H:i", $day . " " . $time); +} + /** * Parse a date into unix timestamp * -- cgit v1.2.3-54-g00ecf