[development] error with hook_form_alter and views_filter
Lluís Forns
enboig at gmail.com
Wed Jun 29 13:09:07 UTC 2011
I have created a module to use date_popup on views filter. It works ok
with just one date, but fails when applied to "between" operator (but
only if both fields are changed, no error if I just change MAX or
MIN).
Here is my code:
<?php
function views_filter_date_popup_form_views_ui_config_item_form_alter(&$form,
$form_state) {
if ('2' != substr(views_api_version(), 0, 1)) {
// Only continue for Views 2.x
return;
}
if (!empty($form['options']['expose'])) {
if (isset($form['options']['value']['type']['#options']) &&
array_key_exists('date',
$form['options']['value']['type']['#options'])) {
$form['options']['value']['type']['#options']['user_defined_date']
= t('A user defined data using PHP date() wildcards');
$form['options']['value']['date_format'] = array(
'#type' => 'textfield',
'#title' => t('Date_format'),
'#default_value' =>
!empty($form_state['handler']->options['value']['date_format']) ?
$form_state['handler']->options['value']['date_format'] : 'Y/m/d',
);
}
}
}
function views_filter_date_popup_form_views_exposed_form_alter(&$form,
$form_state) {
foreach ($form_state['view']->filter as $field => $filter) {
if ($filter->options['value']['type']=='user_defined_date') {
switch($filter->options['operator']) {
case 'between':
$form[$filter->options['id']]['min']['#type'] = 'date_popup';
$form[$filter->options['id']]['min']['#size'] = '20';
//YYYY-MM-DD HH:MM:SS
$form[$filter->options['id']]['min']['#date_format'] =
$filter->options['value']['date_format'];
$form[$filter->options['id']]['max']['#type'] = 'date_popup';
$form[$filter->options['id']]['max']['#size'] = '20';
//YYYY-MM-DD HH:MM:SS
$form[$filter->options['id']]['max']['#date_format'] =
$filter->options['value']['date_format'];
break;
default:
$form[$filter->options['id']]['#type'] = 'date_popup';
$form[$filter->options['id']]['#size'] = '20'; //YYYY-MM-DD HH:MM:SS
$form[$filter->options['id']]['#date_format'] =
$filter->options['value']['date_format'];
break;
}
}
}
}
The error is:
warning: strtotime() expects parameter 1 to be string, array given in
/home/lluisforns/workspace/comptacau2/sites/all/modules/views/handlers/views_handler_filter_date.inc
on line 128.
Any hint?
--
*La vida no ha de ser feliç, ha de ser plena.
*Abans d'imprimir aquest missatge, pensa en el medi ambient.
More information about the development
mailing list