You are here

function override_css_selector_value_validate in Override css 7

Validate selector group form

File

./override_css.admin.inc, line 348

Code

function override_css_selector_value_validate($form, &$form_state) {
  $selector = override_css_selector_load($form_state['values']['selector']);
  $available_properties = override_css_properties_list();
  $properties = array_filter($selector['properties']);

  // Integration with sliderfield module needs rewrite of the value
  if (module_exists('sliderfield')) {
    foreach ($form_state['values'] as $key => $element) {
      if (is_array($element) && isset($element['value'])) {
        $form_state['values'][$key] = $element['value'];
      }
    }
  }
  foreach ($properties as $property) {
    switch ($available_properties[$property]['type']) {
      case 'border':
        if ($form_state['values'][$property . '_size']) {
          if (!is_numeric($form_state['values'][$property . '_size'])) {
            form_set_error($property . '_opacity', 'Enkel numerieke waarden zijn toegestaan.');
          }
        }
        break;
      case 'shadow':
        $extra_fields = array(
          '_horizontal',
          '_vertical',
          '_blur',
          '_spread',
        );
        foreach ($extra_fields as $extra_field) {
          if ($form_state['values'][$property . $extra_field]) {
            if (!is_numeric($form_state['values'][$property . $extra_field])) {
              form_set_error($property . $extra_field, 'Enkel numerieke waarden zijn toegestaan.');
            }
          }
        }
      case 'background-color':
        if ($form_state['values'][$property . '_opacity']) {
          if (!is_numeric($form_state['values'][$property . '_opacity'])) {
            form_set_error($property . '_opacity', 'Enkel numerieke waarden zijn toegestaan.');
          }
          elseif ($form_state['values'][$property . '_opacity'] < 0 || $form_state['values'][$property . '_opacity'] > 100) {
            form_set_error($property . '_opacity', 'Enkel waarden tussen 0 (niet transparant) en 100 (transparant) zijn toegestaan.');
          }
        }
      case 'color':
        if ($form_state['values'][$property] && !preg_match('/^#([a-f0-9]{3}){1,2}$/iD', $form_state['values'][$property])) {
          form_set_error($property, 'De kleur is geen geldige hexadecimale css waarde (#xxxxxx).');
        }
        break;
      case 'size':
      case 'radius':
        if ($form_state['values'][$property] && !is_numeric($form_state['values'][$property])) {
          form_set_error($property, 'Enkel numerieke waarden zijn toegestaan.');
        }
        break;
      case 'image':
        module_load_include('inc', 'system', 'system.admin');

        //validate given path
        if ($form_state['values'][$property]) {
          $path = _system_theme_settings_validate_path($form_state['values'][$property]);
          if (!$path) {
            form_set_error($property, 'Het pad naar de afbeelding bestaat niet, gebruik het upload formulier om een nieuwe afbeelding up te loaden of geef een correct pad in.');
          }
        }

        // validate upload
        $validators = array(
          'file_validate_is_image' => array(),
        );
        $file = file_save_upload($property . '_upload', $validators);
        if (isset($file)) {
          if ($file) {
            $form_state['values'][$property . '_upload'] = $file;
          }
          else {
            form_set_error($property . '_upload', 'De afbeelding kon niet geüpload worden.');
          }
        }
        break;
      default:
        break;
    }
  }
}