You are here

dateformat.inc in Clientside Validation 7.2

File

clientside_validation_date/plugins/validator/dateformat.inc
View source
<?php

$plugin = array(
  'label' => t('Date format'),
  'validator' => array(
    'class' => 'CvDateDateFormatValidator',
  ),
  'weight' => -99,
);
class CvDateDateFormatValidator extends ClientsideValidationValidator {
  public function supports(array $element, array &$form_state) {
    return parent::supports($element, $form_state) && isset($element['#type']) && in_array($element['#type'], array(
      'date_popup',
      'date_text',
    )) && isset($element['date']);
  }
  public function getJavascriptSettings(array &$element, array &$form_state) {
    $name = $this
      ->getName($element['date']);
    $granularity = date_format_order($element['#date_format']);
    $format = date_limit_format($element['#date_format'], array_intersect($granularity, array(
      'month',
      'day',
      'year',
    )));
    $splitter = '/';
    if (strpos($format, '.') !== FALSE) {
      $splitter = '.';
    }
    elseif (strpos($format, ' ') !== FALSE) {
      $splitter = ' ';
    }
    elseif (strpos($format, '-') !== FALSE) {
      $splitter = '-';
    }
    $parts = explode($splitter, $format);
    $daypos = array_search('d', $parts) === FALSE ? array_search('j', $parts) : array_search('d', $parts);
    foreach (array(
      'm',
      'M',
      'F',
      'n',
    ) as $m) {
      $monthpos = array_search($m, $parts);
      if ($monthpos !== FALSE) {
        break;
      }
    }
    $yearpos = array_search('Y', $parts);
    return array(
      'rules' => array(
        $name => array(
          'dateFormat' => array(
            'format' => $format,
            'splitter' => $splitter,
            'daypos' => $daypos,
            'monthpos' => $monthpos,
            'yearpos' => $yearpos,
          ),
        ),
      ),
      'messages' => array(
        $name => array(
          'dateFormat' => $this
            ->getMessage($element),
        ),
      ),
    );
  }
  public function jsFiles(array &$element) {
    $files = parent::jsFiles($element);
    $files[] = drupal_get_path('module', 'clientside_validation_date') . '/plugins/validator/js/dateformat.cv.js';
    return $files;
  }
  public function getMessage(array $element) {
    return t('The value in !title is not a valid date.', array(
      '!title' => $element['#title'],
    ));
  }

}

Classes