You are here

function _datex_node_edit_form_author_date_validate in Datex 7

Element validation callback for date fields.

1 string reference to '_datex_node_edit_form_author_date_validate'
datex_form_alter in ./datex.module
Implements hook_form_alter().

File

./datex.module, line 209
Convert output of date_format() to Jalali in a patched drupal installation.

Code

function _datex_node_edit_form_author_date_validate($element, &$form_state, $form) {
  if (_datex_skip_language() || empty($element['#value'])) {
    return;
  }
  $element['#value'] = DatexFormatter::decor($element['#value'], FALSE);
  $m = array();
  $ok = preg_match('#^([0-9]{2,4})[-\\/\\\\]([0-9]{1,2})[-\\/\\\\]([0-9]{1,2})( {1,}([0-9]{1,2})\\:([0-9]{1,2})\\:([0-9]{1,2}))?#', $element['#value'], $m);

  // 1969: It's a dirty hack: If entered year is less than EPOCH limit, Then
  // probably is it Jalali otherwise it is Gregorian.
  if ($ok && count($m) == 8 && (int) $m[1] < 1969) {
    $date = array(
      'hour' => $m[5],
      'minute' => $m[6],
      'second' => $m[7],
      'year' => $m[1],
      'month' => $m[2],
      'day' => $m[3],
    );
    $date = new DatexObject($date, DATEX_JALALI, date_default_timezone_get());
    $element['#value'] = $date
      ->xformat('Y-m-d H:i:s O');
    form_set_value($element, $element['#value'], $form_state);
  }
  else {
    form_set_error($element['#name'], t('You have to specify a valid date.'));
  }
}