You are here

function date_repeat_rrule_validate in Date 7.3

Same name and namespace in other branches
  1. 8 date_repeat/date_repeat_form.inc \date_repeat_rrule_validate()
  2. 5.2 date_repeat/date_repeat_form.inc \date_repeat_rrule_validate()
  3. 6.2 date_repeat/date_repeat_form.inc \date_repeat_rrule_validate()
  4. 6 date_repeat/date_repeat_form.inc \date_repeat_rrule_validate()
  5. 7 date_repeat/date_repeat_form.inc \date_repeat_rrule_validate()
  6. 7.2 date_repeat/date_repeat_form.inc \date_repeat_rrule_validate()

Build a RRULE out of the form values.

1 string reference to 'date_repeat_rrule_validate'
date_repeat_element_info in date_repeat/date_repeat.module
Implements hook_element_info().

File

date_repeat/date_repeat_form.inc, line 965
Add a date repeat selection form to a date field.

Code

function date_repeat_rrule_validate($element, &$form_state) {
  if (date_hidden_element($element)) {
    return;
  }
  $parents = $element['#parents'];
  array_pop($parents);
  $field_values = drupal_array_get_nested_value($form_state['values'], $parents);
  if ($field_values['show_repeat_settings'] === 0 || $field_values['rrule']['FREQ'] === 'NONE') {
    form_set_value($element, NULL, $form_state);
    return;
  }

  // Clean the buttons off of the form. Needed to avoid errors when the date is
  // used on a user object, which then passes the form through
  // form_state_values_clean().
  foreach ($form_state['buttons'] as $delta => $item) {
    if (!empty($item['#ajax']['callback']) && in_array($item['#ajax']['callback'], array(
      'date_repeat_add_exception_callback',
      'date_repeat_add_addition_callback',
    ))) {
      unset($form_state['buttons'][$delta]);
    }
  }
  module_load_include('inc', 'date_api', 'date_api_ical');
  $item = drupal_array_get_nested_value($form_state['values'], $element['#parents']);
  $item = date_repeat_merge($item, $element);
  $rrule = date_api_ical_build_rrule($item);
  form_set_value($element, $rrule, $form_state);
}