--- date_repeat_form.inc.orig 2012-08-13 04:22:34.000000000 -0500 +++ date_repeat_form.inc 2013-07-11 22:15:12.000000000 -0500 @@ -483,7 +483,7 @@ '#type' => 'textfield', '#title' => t('Count', array(), array('context' => 'Date repeat')), '#default_value' => $COUNT, - '#element_validate' => array('element_validate_integer_positive'), + '#element_validate' => array('element_validate_integer_positive','element_validate_integer_range'), '#attributes' => array('placeholder' => array('#')), '#prefix' => $prefix, '#suffix' => $suffix, @@ -975,3 +975,27 @@ function date_repeat_transform_checkbox_values_to_select_values($values) { return array_filter($values, 'date_repeat_filter_non_zero_value'); } + +function element_validate_integer_range($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['range_of_repeat'] == 'COUNT') { + $count = $field_values['count_child']; + if ($count > 50 ) { + form_set_error('rrule][choice', "Stop Repeating after number of occurences must be less than or equal to 50"); + } + } else { + $date = $field_values['until_child']['datetime']['date']; + $start = new DateTime('now'); + $end = new DateTime($date); + $interval = $start->diff($end); + $days = $interval->format('%R%a days'); + if ($days > 365*3) { + form_set_error('rrule][choice', "Stop Repeating on Date must be less than 3 years from today"); + } + } +}