global_filter.datewidget.inc in Views Global Filter 7
File
widgets/global_filter.datewidget.inc
View source
<?php
function global_filter_field_widget_properties_alter(&$widget, $context) {
if (empty($widget['is_global_filter'])) {
return;
}
switch ($widget['module']) {
case 'date':
$widget['is_new'] = FALSE;
break;
}
}
function global_filter_date_combo_process_alter(&$element, &$form_state, &$context) {
if (!empty($context['form']['#id']) && strpos($context['form']['#id'], 'global-filter') === 0) {
unset($element['show_todate']);
if (empty($element['value']['#title'])) {
unset($element['value2']['#title']);
}
}
}
function global_filter_field_date_widget_form_alter(&$element, &$form_state, $context) {
if (!empty($form_state['set_date_from_session'])) {
$session_value = global_filter_get_session_value($element['#field_name']);
if (class_exists('date_sql_handler')) {
$date_range = new date_sql_handler();
$parts = $date_range
->arg_parts($session_value);
}
else {
$parts = array();
}
if (!empty($parts[0]['date'])) {
$field = $context['field'];
$instance = $context['instance'];
$lang = $context['langcode'];
$instance['settings']['default_value'] = 'strtotime';
$instance['settings']['default_value_code'] = implode('-', $parts[0]['date']);
if (!empty($parts[1]['date'])) {
$instance['settings']['default_value2'] = 'strtotime';
$instance['settings']['default_value_code2'] = implode('-', $parts[1]['date']);
}
$default_date_range = date_default_value($field, $instance, $lang);
$element['#default_value'] = reset($default_date_range);
}
}
}
function global_filter_extract_date_range($form_state, $filter_key) {
$name = $form_state['global_filters'][$filter_key]['name'];
$lang = $form_state['language'];
if (empty($form_state['input'][$name][$lang][0]) || !is_array($form_state['input'][$name][$lang][0])) {
return FALSE;
}
$values = $form_state['input'][$name][$lang][0];
if (isset($values['value']['date'])) {
$date_string = $values['value']['date'];
if (!empty($date_string)) {
$timestamp = strtotime($date_string);
$value = format_date($timestamp, 'custom', 'Y-m-d');
if (!empty($values['value2']['date'])) {
$timestamp2 = strtotime($values['value2']['date']);
$value .= '--' . format_date($timestamp2, 'custom', 'Y-m-d');
}
}
}
elseif (!empty($values['value']['day'])) {
$value = $form_state['input'][$name][$lang][0]['value'];
$day = drupal_strlen($value['day']) == 1 ? '0' . $value['day'] : $value['day'];
$month = drupal_strlen($value['month']) == 1 ? '0' . $value['month'] : $value['month'];
$value = $value['year'] . '-' . $month . '-' . $day;
if (!empty($form_state['input'][$name][$lang][0]['value2']['day'])) {
$value2 = $form_state['input'][$name][$lang][0]['value2'];
$day = drupal_strlen($value2['day']) == 1 ? '0' . $value2['day'] : $value2['day'];
$month = drupal_strlen($value2['month']) == 1 ? '0' . $value2['month'] : $value2['month'];
$value .= '--' . $value2['year'] . '-' . $month . '-' . $day;
}
}
return empty($value) || drupal_strlen($value) < 10 ? '' : $value;
}
function global_filter_set_instance_date_widget_value(&$field, $instance, &$form_state) {
$name = $field['field_name'];
$lang = $form_state['language'];
if (empty($form_state['input'][$name][$lang])) {
$form_state['set_date_from_session'] = TRUE;
$items = array();
}
else {
$items = $form_state['input'][$name][$lang];
}
$form_state['field'][$name][$lang] = array(
'field' => $field,
'instance' => $instance,
'items_count' => 1,
);
$form_state['field'][$name][$lang]['field']['settings']['todate'] = TRUE;
$field['settings']['todate'] = TRUE;
return $items;
}