You are here

public function CvDateDateFormatValidator::getJavascriptSettings in Clientside Validation 7.2

Overrides ClientsideValidationValidator::getJavascriptSettings

File

clientside_validation_date/plugins/validator/dateformat.inc, line 23

Class

CvDateDateFormatValidator

Code

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),
      ),
    ),
  );
}