You are here

function _clientside_validation_set_fapi_validation in Clientside Validation 6

Same name and namespace in other branches
  1. 7 clientside_validation_fapi/clientside_validation_fapi.module \_clientside_validation_set_fapi_validation()

Set fapi validation.

1 call to _clientside_validation_set_fapi_validation()
clientside_validation_fapi_regular in clientside_validation_fapi/clientside_validation_fapi.module

File

clientside_validation_fapi/clientside_validation_fapi.module, line 79
Add client side validation support for fapi validation

Code

function _clientside_validation_set_fapi_validation($element, $rule, $params, &$js_rules, $message = '') {
  $callback = $rule['callback'];
  $name = $element['#name'];
  $title = $name;
  if (isset($element['#title'])) {
    $title = $element['#title'];
  }
  $expressions = array(
    'fapi_validation_rule_alpha' => '/^[\\p{L}]+$/uD',
    'fapi_validation_rule_alpha_numeric' => '/^[\\p{L}\\p{N}]+$/uD',
    'fapi_validation_rule_ipv4' => '/^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' . '(\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/',
    'fapi_validation_rule_alpha_dash' => '/^[-\\p{L}\\p{N}_]+$/uD',
    'fapi_validation_rule_digit' => '/^\\d+$/',
  );
  if (strpos($message, '%field') !== FALSE) {
    $message = t($message, array(
      '%field' => variable_get('clientside_validation_prefix', '') . $title . variable_get('clientside_validation_suffix', ''),
    ));
  }
  switch ($callback) {
    case 'fapi_validation_rule_alpha':
      $type = 'alpha';
    case 'fapi_validation_rule_alpha_numeric':
      $type = 'alpha numeric';
    case 'fapi_validation_rule_ipv4':
      $type = 'ipv4';
    case 'fapi_validation_rule_alpha_dash':
      $type = 'alpha dash';
    case 'fapi_validation_rule_digit':
      $type = 'digit';
    case 'fapi_validation_rule_regexp':
      if ($callback == 'fapi_validation_rule_regexp') {
        $expressions['fapi_validation_rule_regexp'] = is_array($params) ? $params[0] : $params;
        $type = 'regexp';
      }
      _clientside_validation_set_regex_pcre($name, $title, $js_rules, $expressions[$callback], $message, $type);
      break;
    case 'fapi_validation_rule_numeric':
      _clientside_validation_set_number_decimal($name, $title, '.', $js_rules, $message);
      break;
    case 'fapi_validation_rule_email':
      _clientside_validation_set_email($name, $title, $js_rules, $message);
      break;
    case 'fapi_validation_rule_length':
      if (count($params) == 1) {
        _clientside_validation_set_minmaxlength($name, $title, '', $params[0], $js_rules, $message);
      }
      elseif (count($params) == 2) {
        _clientside_validation_set_minmaxlength($name, $title, $params[0], $params[1], $js_rules, $message);
      }
      break;
    case 'fapi_validation_rule_url':
      _clientside_validation_set_url($name, $title, $js_rules, $message);
      break;
    case 'fapi_validation_rule_chars':
      _clientside_validation_set_specific_values($name, $title, $params, $js_rules, $message);
      break;
    case 'fapi_validation_rule_decimal':
      if (count($params) == 2) {
        $expression = '/^[0-9]{' . $params[0] . '}\\.[0-9]{' . $params[1] . '}$/';
      }
      else {
        $expression = '/\\d+\\.\\d+/';
      }
      _clientside_validation_set_regex_pcre($name, $title, $js_rules, $expression, $message, 'decimal');
      break;
    default:
      $context = array(
        'type' => 'fapi',
        'rule' => $rule,
        'message' => $message,
        'params' => $params,
      );
      drupal_alter('clientside_validation_rule', $js_rules, $element, $context);
      break;
  }
}