/** * Sanitize and validate Schedule settings * * @param unknown_type $input * @return boolean */ public static function sanitize_schedule_settings($input) { // from server or to user - get_date_from_gmt // from user or to server get_gmt_from_date $schedule_start_date = null; if (isset($input[HA_Common::SCHEDULED_START_DATE_OPTION]) && strlen($input[HA_Common::SCHEDULED_START_DATE_OPTION]) > 0) { if (HA_Common::check_date_format($input[HA_Common::SCHEDULED_START_DATE_OPTION]) == false) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_start_date_error', 'Scheduled start date invalid format', 'error'); $input[HA_Common::SCHEDULED_START_DATE_OPTION] = ''; } else { list($year, $month, $day) = explode('-', $input[HA_Common::SCHEDULED_START_DATE_OPTION]); // default yyyy-mm-dd format // add time part $scheduled_start_time_part = $_POST['scheduled_start_time_part']; $hour = 0; $minute = 0; if (!preg_match("/([01]?[0-9]|2[0-3]):([0-5][0-9])/", $scheduled_start_time_part)) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'scheduled_start_time_part_invalid_format_error', 'Invalid scheduled start time format. Time must be in 24 hour format HH:mm (i.e. 12:30).', 'error'); // Default to 0, 0, 0 } else { // set time parts list($hour, $minute) = explode(':', $scheduled_start_time_part); } $schedule_start_date = get_gmt_from_date(date("Y-m-d H:i:s", gmmktime($hour, $minute, 0, $month, $day, $year))); $today = get_gmt_from_date(get_date_from_gmt(date("Y-m-d H:i:s"))); if (strtotime($schedule_start_date) <= strtotime($today)) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_start_date_past_error', 'Scheduled start date must be in the future', 'error'); $input[HA_Common::SCHEDULED_START_DATE_OPTION] = ''; } $input[HA_Common::SCHEDULED_START_DATE_OPTION] = $schedule_start_date; } } else { $input[HA_Common::SCHEDULED_START_DATE_OPTION] = ""; } if (isset($input[HA_Common::SCHEDULED_END_DATE_OPTION]) && strlen($input[HA_Common::SCHEDULED_END_DATE_OPTION]) > 0) { if (HA_Common::check_date_format($input[HA_Common::SCHEDULED_END_DATE_OPTION]) == false) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_end_date_error', 'Scheduled end date invalid format', 'error'); $input[HA_Common::SCHEDULED_START_DATE_OPTION] = ''; } else { list($year, $month, $day) = explode('-', $input[HA_Common::SCHEDULED_END_DATE_OPTION]); // default yyyy-mm-dd format // add time part $scheduled_end_time_part = $_POST['scheduled_end_time_part']; $hour = 23; $minute = 59; if (!preg_match("/([01]?[0-9]|2[0-3]):([0-5][0-9])/", $scheduled_end_time_part)) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'scheduled_end_time_part_invalid_format_error', 'Invalid scheduled end time format. Time must be in 24 hour format HH:mm (i.e. 12:30).', 'error'); // Default to 0, 0, 0 } else { // set time parts list($hour, $minute) = explode(':', $scheduled_end_time_part); } $schedule_end_date = get_gmt_from_date(date("Y-m-d H:i:s", gmmktime($hour, $minute, 0, $month, $day, $year))); $today = get_gmt_from_date(get_date_from_gmt(date("Y-m-d H:i:s"))); if (strtotime($schedule_end_date) <= strtotime($today)) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_end_date_past_error', 'Scheduled end date must be in the future', 'error'); $input[HA_Common::SCHEDULED_END_DATE_OPTION] = ''; } else { if ($schedule_start_date != null && strtotime($schedule_end_date) <= strtotime($schedule_start_date)) { add_settings_error(HA_Common::SCHEDULE_SETTINGS_KEY, 'schedule_end_date_after_start_date_error', 'Scheduled end date must be after the scheduled start date', 'error'); $input[HA_Common::SCHEDULED_END_DATE_OPTION] = ''; } } $input[HA_Common::SCHEDULED_END_DATE_OPTION] = $schedule_end_date; } } else { $input[HA_Common::SCHEDULED_END_DATE_OPTION] = ""; } return $input; }