| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526 | <?php/** * @file * Hooks provided by the Date module. *//** * Alter the default value for a date argument. * * @param object $argument *   The argument object. * @param string $value *   The default value created by the argument handler. */function hook_date_default_argument_alter(&$argument, &$value) {  $style_options = $style_options = $argument->view->display_handler->get_option('style_options');  if (!empty($style_options['track_date'])) {    $default_date = date_now();    $value = $default_date->format($argument->arg_format);  }}/** * Alter the entity before formatting it. * * @param object $entity *   The entity object being viewed. * @param array $variables *   The variables passed to the formatter. *   - entity: The $entity object. *   - entity_type: The $entity_type. *   - field: The $field array. *   - instance: The $instance array. *   - langcode: The $langcode. *   - items: The $items array. *   - display: The $display array. *   - dates: The processed dates array, empty at this point. *   - attributes: The attributes array, empty at this point. *   - rdf_mapping: The RDF mapping array. *   - add_rdf: If module_exists('rdf'). */function hook_date_formatter_pre_view_alter(&$entity, &$variables) {  if (!empty($entity->view)) {    $field = $variables['field'];    $date_id = 'date_id_' . $field['field_name'];    $date_delta = 'date_delta_' . $field['field_name'];    $date_item = $entity->view->result[$entity->view->row_index];    if (!empty($date_item->$date_id)) {      $entity->date_id = 'date.' . $date_item->$date_id . '.' . $field['field_name'] . '.' . $date_item->$date_delta . '.0';    }  }}/** * Alter the dates array created by date_formatter_process(). * * @param array $dates *   The $dates array created by the Date module. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. *   - format: The string $format. *   - entity_type: The $entity_type. *   - entity: The $entity object. *   - langcode: The string $langcode. *   - item: The $item array. *   - display: The $display array. */function hook_date_formatter_dates_alter(&$dates, $context) {  $field = $context['field'];  $instance = $context['instance'];  $format = $context['format'];  $entity_type = $context['entity_type'];  $entity = $context['entity'];  $date1 = $dates['value']['local']['object'];  $date2 = $dates['value2']['local']['object'];  $is_all_day = date_all_day_field($field, $instance, $date1, $date2);  $all_day1 = '';  $all_day2 = '';  if ($format != 'format_interval' && $is_all_day) {    $all_day1 = theme('date_all_day', array(      'field' => $field,      'instance' => $instance,      'which' => 'date1',      'date1' => $date1,      'date2' => $date2,      'format' => $format,      'entity_type' => $entity_type,      'entity' => $entity));    $all_day2 = theme('date_all_day', array(      'field' => $field,      'instance' => $instance,      'which' => 'date2',      'date1' => $date1,      'date2' => $date2,      'format' => $format,      'entity_type' => $entity_type,      'entity' => $entity));    $dates['value']['formatted_time'] = theme('date_all_day_label');    $dates['value2']['formatted_time'] = theme('date_all_day_label');    $dates['value']['formatted'] = $all_day1;    $dates['value2']['formatted'] = $all_day2;  }}/** * Alter the date_text element before the rest of the validation is run. * * @param array $element *   The $element array. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $input *   The array of input values to be validated. */function hook_date_text_pre_validate_alter(&$element, &$form_state, &$input) {  // Let Date module massage the format for all day values so they will pass  // validation. The All day flag, if used, actually exists on the parent  // element.  date_all_day_value($element, $form_state);}/** * Alter the date_select element before the rest of the validation is run. * * @param array $element *   The $element array. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $input *   The array of input values to be validated. */function hook_date_select_pre_validate_alter(&$element, &$form_state, &$input) {  // Let Date module massage the format for all day values so they will pass  // validation. The All day flag, if used, actually exists on the parent  // element.  date_all_day_value($element, $form_state);}/** * Alter the date_popup element before the rest of the validation is run. * * @param array $element *   The $element array. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $input *   The array of input values to be validated. */function hook_date_popup_pre_validate_alter(&$element, &$form_state, &$input) {  // Let Date module massage the format for all day values so they will pass  // validation. The All day flag, if used, actually exists on the parent  // element.  date_all_day_value($element, $form_state);}/** * Alter the date_combo element before the rest of the validation is run. * * @param array $element *   The $element array. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. *   - item: The $item array. * * @see date_combo_element_process() */function hook_date_combo_pre_validate_alter(&$element, &$form_state, $context) {  if (!empty($context['item']['all_day'])) {    $field = $context['field'];    // If we have an all day flag on this date and the time is empty, change the    // format to match the input value so we don't get validation errors.    $element['#date_is_all_day'] = TRUE;    $element['value']['#date_format'] = date_part_format('date', $element['value']['#date_format']);    if (!empty($field['settings']['todate'])) {      $element['value2']['#date_format'] = date_part_format('date', $element['value2']['#date_format']);    }  }}/** * Alter the local start date objects created by the date_combo validation. * * This is called before the objects are converted back to the database timezone * and stored. * * @param object $date *   The $date object. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *  - field: The $field array. *  - instance: The $instance array. *  - item: The $item array. *  - element: The $element array. */function hook_date_combo_validate_date_start_alter(&$date, &$form_state, $context) {  // If this is an 'All day' value, set the time to midnight.  if (!empty($context['element']['#date_is_all_day'])) {    $date->setTime(0, 0, 0);  }}/** * Alter the local end date objects created by the date_combo validation. * * This is called before the objects are converted back to the database timezone * and stored. * * @param object $date *   The $date object. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *  - field: The $field array. *  - instance: The $instance array. *  - item: The $item array. *  - element: The $element array. */function hook_date_combo_validate_date_end_alter(&$date, &$form_state, $context) {  // If this is an 'All day' value, set the time to midnight.  if (!empty($context['element']['#date_is_all_day'])) {    $date->setTime(0, 0, 0);  }}/** * Alter the date_text widget element. * * @param array $element *   An associative array containing the properties of the date_text element. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - form: Nested array of form elements that comprise the form. * * @see date_text_element_process() */function hook_date_text_process_alter(&$element, &$form_state, $context) {  $all_day_id = !empty($element['#date_all_day_id']) ? $element['#date_all_day_id'] : '';  if ($all_day_id != '') {    // All Day handling on text dates works only if the user leaves the time out    // of the input value. There is no element to hide or show.  }}/** * Alter the date_select widget element. * * @param array $element *   An associative array containing the properties of the date_select element. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - form: Nested array of form elements that comprise the form. * * @see date_select_element_process() */function hook_date_select_process_alter(&$element, &$form_state, $context) {  // Hide or show the element in reaction to the all_day status for the element.  $all_day_id = !empty($element['#date_all_day_id']) ? $element['#date_all_day_id'] : '';  if ($all_day_id != '') {    foreach (array('hour', 'minute', 'second', 'ampm') as $field) {      if (array_key_exists($field, $element)) {        $element[$field]['#states'] = array(          'visible' => array(            'input[name="' . $all_day_id . '"]' => array('checked' => FALSE),          ),        );      }    }  }}/** * Alter the date_popup widget element. * * @param array $element *   An associative array containing the properties of the date_popup element. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - form: Nested array of form elements that comprise the form. * * @see date_popup_element_process() */function hook_date_popup_process_alter(&$element, &$form_state, $context) {  // Hide or show the element in reaction to the all_day status for the element.  $all_day_id = !empty($element['#date_all_day_id']) ? $element['#date_all_day_id'] : '';  if ($all_day_id != '' && array_key_exists('time', $element)) {    $element['time']['#states'] = array(      'visible' => array(        'input[name="' . $all_day_id . '"]' => array('checked' => FALSE),      ),    );  }}/** * Alter the date_combo element after the Date module is finished with it. * * @param array $element *   The $element array. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. *   - form: Nested array of form elements that comprise the form. */function hook_date_combo_process_alter(&$element, &$form_state, $context) {  $field = $context['field'];  $instance = $context['instance'];  $field_name = $element['#field_name'];  $delta = $element['#delta'];  // Add a date repeat form element, if needed.  // We delayed until this point so we don't bother adding it to hidden fields.  if (date_is_repeat_field($field, $instance)) {    $item = $element['#value'];    $element['rrule'] = array(      '#type' => 'date_repeat_rrule',      '#theme_wrappers' => array('date_repeat_rrule'),      '#default_value' => isset($item['rrule']) ? $item['rrule'] : '',      '#date_timezone' => $element['#date_timezone'],      '#date_format'      => date_limit_format(date_input_format($element, $field, $instance), $field['settings']['granularity']),      '#date_text_parts'  => (array) $instance['widget']['settings']['text_parts'],      '#date_increment'   => $instance['widget']['settings']['increment'],      '#date_year_range'  => $instance['widget']['settings']['year_range'],      '#date_label_position' => $instance['widget']['settings']['label_position'],      '#date_repeat_widget' => str_replace('_repeat', '', $instance['widget']['type']),      '#date_repeat_collapsed' => $instance['widget']['settings']['repeat_collapsed'],      '#date_flexible' => 0,      '#weight' => $instance['widget']['weight'] + .4,    );  }}/** * Alter the date_timezone widget element. * * @param array $element *   An associative array containing the properties of the date_select element. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - form: Nested array of form elements that comprise the form. * * @see date_timezone_element_process() */function hook_date_timezone_process_alter(&$element, &$form_state, $context) {  // @todo.}/** * Alter the date_year_range widget element. * * @param array $element *   An associative array containing the properties of the date_select element. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - form: Nested array of form elements that comprise the form. * * @see date_year_range_element_process() */function hook_date_year_range_process_alter(&$element, &$form_state, $context) {  // @todo.}/** * Alter a date field settings form. * * @param array $form *   Nested array of form elements that comprise the form. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. *   - has_data: The value of $has_data. * * @see hook_field_settings_form() */function hook_date_field_settings_form_alter(&$form, $context) {  $field = $context['field'];  $instance = $context['instance'];  $has_data = $context['has_data'];  $form['repeat'] = array(    '#type' => 'select',    '#title' => t('Repeating date'),    '#default_value' => $field['settings']['repeat'],    '#options' => array(0 => t('No'), 1 => t('Yes')),    '#attributes' => array('class' => array('container-inline')),    '#description' => t("Repeating dates use an 'Unlimited' number of values. Instead of the 'Add more' button, they include a form to select when and how often the date should repeat."),    '#disabled' => $has_data,  );}/** * Alter a date field instance settings form. * * @param array $form *   Nested array of form elements that comprise the form. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. * * @see hook_field_instance_settings_form() */function hook_date_field_instance_settings_form_alter(&$form, $context) {  $field = $context['field'];  $instance = $context['instance'];  $form['new_setting'] = array(    '#type' => 'textfield',    '#default_value' => '',    '#title' => t('My new setting'),  );}/** * Alter a date field widget settings form. * * @param array $form *   Nested array of form elements that comprise the form. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. * * @see hook_field_widget_settings_form() */function hook_date_field_widget_settings_form_alter(&$form, $context) {  $field = $context['field'];  $instance = $context['instance'];  $form['new_setting'] = array(    '#type' => 'textfield',    '#default_value' => '',    '#title' => t('My new setting'),  );}/** * Alter a date field formatter settings form. * * @param array $form *   Nested array of form elements that comprise the form. * @param array $form_state *   A keyed array containing the current state of the form. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. *   - view_mode: The formatter view mode. * * @see hook_field_formatter_settings_form() */function hook_date_field_formatter_settings_form_alter(&$form, &$form_state, $context) {  $field = $context['field'];  $instance = $context['instance'];  $view_mode = $context['view_mode'];  $display = $instance['display'][$view_mode];  $formatter = $display['type'];  if ($formatter == 'date_default') {    $form['show_repeat_rule'] = array(      '#title' => t('Repeat rule:'),      '#type' => 'select',      '#options' => array(        'show' => t('Show repeat rule'),        'hide' => t('Hide repeat rule')),      '#default_value' => $settings['show_repeat_rule'],      '#access' => $field['settings']['repeat'],      '#weight' => 5,    );  }}/** * Alter a date field formatter settings summary. * * @param array $summary *   An array of strings to be concatenated into a short summary of the *   formatter settings. * @param array $context *   An associative array containing the following keys: *   - field: The $field array. *   - instance: The $instance array. *   - view_mode: The formatter view mode. * * @see hook_field_formatter_settings_summary() */function hook_date_field_formatter_settings_summary_alter(&$summary, $context) {  $field = $context['field'];  $instance = $context['instance'];  $view_mode = $context['view_mode'];  $display = $instance['display'][$view_mode];  $formatter = $display['type'];  $settings = $display['settings'];  if (isset($settings['show_repeat_rule']) && !empty($field['settings']['repeat'])) {    if ($settings['show_repeat_rule'] == 'show') {      $summary[] = t('Show repeat rule');    }    else {      $summary[] = t('Hide repeat rule');    }  }}
 |