function availability_calendar_field_widget_month_form_validate_line in Availability Calendars 7.4
Same name and namespace in other branches
- 7.5 availability_calendar.widget.inc \availability_calendar_field_widget_month_form_validate_line()
- 7.3 availability_calendar.widget.inc \availability_calendar_field_widget_month_form_validate_line()
Validates a single command line.
Parameters
string $line: Command line: "state: <sid> from: yyyy-mm-dd to: yyyy-mm-dd".
array $element:
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 availability_calendar_field_widget_month_form_validate_line()
- availability_calendar_field_widget_month_form_validate in ./
availability_calendar.widget.inc - Callback to validate the calendar changes. @link http://api.drupal.org/api/drupal/developer--topics--forms_api_reference....
File
- ./
availability_calendar.widget.inc, line 200
Code
function availability_calendar_field_widget_month_form_validate_line($line, $element) {
// Basic syntax checking.
$parts = explode(' ', trim($line));
if (count($parts) !== 6 || $parts[0] !== 'state:' || $parts[2] !== 'from:' || preg_match('/^[1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9]$/', $parts[3]) !== 1 || $parts[4] !== 'to:' || preg_match('/^[1-2][0-9]{3}-[0-1][0-9]-[0-3][0-9]$/', $parts[5]) !== 1) {
return FALSE;
}
// Check state: allowed state.
$state = $parts[1];
if (!array_key_exists($state, $element['availability_states']['#options'])) {
return FALSE;
}
// Check dates: valid dates, in between ranges of the calendar and from <= to.
$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;
}
$months = $element['availability_calendar']['#settings']['show_number_of_months'];
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 + $months + 1, 0, $year))) {
return FALSE;
}
$from = new DateTime($parts[3]);
$to = new DateTime($parts[5]);
if ($from > $to) {
return FALSE;
}
return array(
'state' => $state,
'from' => $from,
'to' => $to,
);
}