public function AvailabilityCalendarsNodeEditCalendarFormHandler::validateCommand in Availability Calendars 7.2
Validates a single command line.
Parameters
string $change: Command line: state: <string> from: yyyy-mm-dd[(pm)] to: yyyy-mm-dd[(am)]
Return value
boolean|array An array with key 'from', 'to' and 'state' representing the parsed and validated command line or FALSE on validation errors.
1 call to AvailabilityCalendarsNodeEditCalendarFormHandler::validateCommand()
- AvailabilityCalendarsNodeEditCalendarFormHandler::validate in ./
availability_calendars.node.inc - Callback to validate the form for the styles form.
File
- ./
availability_calendars.node.inc, line 447
Class
Code
public function validateCommand($change) {
// Basic syntax checking.
$parts = explode(' ', trim($change));
if (count($parts) !== 6 || $parts[0] !== 'state:' || !array_key_exists($parts[1], $this->settings->states) || $parts[2] !== 'from:' || preg_match('/^[1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9](\\(pm\\))?$/', $parts[3]) !== 1 || $parts[4] !== 'to:' || preg_match('/^[1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9](\\(am\\))?$/', $parts[5]) !== 1) {
return FALSE;
}
// Check dates: valid date, in between ranges of the calendar, no am/pm when no split days
// allowed, and from <= to (including the pm/am modifier: this prevents the "same day from
// pm to am" situation.
$year = date('Y');
$month = date('m');
if (!checkdate(substr($parts[3], 5, 2), substr($parts[3], 8, 2), substr($parts[3], 0, 4)) || $parts[3] < date(AC_ISODATE, mktime(0, 0, 0, $month, 1, $year))) {
return FALSE;
}
if (!checkdate(substr($parts[5], 5, 2), substr($parts[5], 8, 2), substr($parts[5], 0, 4)) || $parts[5] > date(AC_ISODATE, mktime(0, 0, 0, $month + $this->settings->monthcount + 1, 0, $year))) {
return FALSE;
}
if ($this->settings->splitday == '0' && (strlen($parts[3]) > 10 || strlen($parts[5]) > 10)) {
return FALSE;
}
if ($parts[3] > $parts[5]) {
return FALSE;
}
return array(
'from' => $parts[3],
'to' => $parts[5],
'state' => $parts[1],
);
}