Download & Extend

Office Hours Exposed Filter Error

Project:Office Hours
Version:6.x-1.x-dev
Component:Code
Category:support request
Priority:normal
Assigned:Unassigned
Status:postponed (maintainer needs more info)
Issue tags:day, exposed, office hours

Issue Summary

Hi,

I tried to add Office Hours in the views' filter and I am not having much luck at the moment.

- Office Hours: Day filter is working fine (i can select day)
- Office Hours: Start Hours Filter is not working at all... When I tried to add it's giving me an error message:
"Fatal Error: Call to undefined function _create_hours_arr() in *************/includes/mass_times_handler_filter_hours.inc on line 107""
I did try to uncommented this and another error message displayed.
warning: Invalid argument supplied for foreach() in ******/includes/form.inc on line 1434.
and no time displayed at all.

- Office Hours: End hours filter is not working as well
I got this error message:
Error: handler for node_data_field_oh > field_oh_endhours doesn't exist!

Has anyone managed to make exposed filter working for either start time or end time? I just need one to work :)

Please help and thank you.

Comments

#1

I think I have managed to fix this error myself, not sure if it's working or not as I haven't tried to put some nodes to try.

Anyway here is what I do:
I updated $opt on /includes/mass_times_handler_filter_hours.inc on line 107 to

$opt = array(0 => t('12:00 AM'), 100 => t('1:00 AM'), 200 => t('2:00 AM'), 300 => t('3:00 AM'), 400 => t('4:00 AM'), 500 => t('5:00 AM'), 600 => t('6:00 AM'), 700 => t('7:00 AM'), 800 => t('8:00 AM'), 900 => t('9:00 AM'), 1000 => t('10:00 AM'), 1100 => t('11:00 AM'), 1200 => t('12:00 PM'), 1300 => t('1:00 PM'), 1400 => t('2:00 PM'), 1500 => t('3:00 PM'), 1600 => t('4:00 PM'), 1700 => t('5:00 PM'), 1800 => t('6:00 PM'), 1900 => t('7:00 PM'), 2000 => t('8:00 PM'), 2100 => t('9:00 PM'), 2200 => t('10:00 PM'), 2300 => t('11:00 PM') );

$opt is being used as options operator by other functions, therefore we need to declare $opt.

So when I do try to exposed my hours I can select the time and I didn't get any error message.

Please let me know if this is working well or not.

#2

double post :( something wrong with the posting.

#3

triple post

#4

Hi Guys,

I am now having issue with exposed day filter.

When I select 'any' it will display all the nodes.
But when I filter it to Tuesday, no nodes displayed even though I have a node that is open on Tuesday.

When I check the SQL, I don't think it's right as well.

SELECT node.nid AS nid FROM d6_node node 
LEFT JOIN d6_content_type_office_hours node_data_field_test_masstimes_value_0 ON node.vid = node_data_field_test_masstimes_value_0.vid AND node_data_field_test_masstimes_value_0.field_test_masstimes_day = '2'

WHERE (node.type in ('office_hours'))
AND (node_data_field_test_masstimes_value_0.field_test_masstimes_day in ('0')) //this last bit should be 2 as well instead of 0

I did try to open the handler_filter_day.inc and I found out of I change %s with number 1, 2, 3 and so on

  function query() {
   if (empty($this->value)) {
      return;
    }
    $this->ensure_my_table();
    $placeholder = !empty($this->definition['numeric']) ? '%d' : "'%s'"; //change this %s to anything and it will change Where clause

    $replace = array_fill(0, sizeof($this->value), $placeholder);
    $in = ' (' . implode(", ", $replace) . ')';

    // We use array_values() because the checkboxes keep keys and that can cause
    // array addition problems.
    $this->query->add_where($this->options['group'], "$this->table_alias.$this->real_field " . $this->operator . $in, array_keys($this->value));
  }

then the Where condition in SQL will follow what we change on %s.
WHERE (node.type in ('office_hours')) AND (node_data_field_test_masstimes_value_0.field_test_masstimes_day in ('1, 2, 3, and so on'))

Unfortunately I am not really good with coding, therefore any hand to help to fix this issue is much appreciated...

#5

try to change to this

// We use array_values() because the checkboxes keep keys and that can cause
    // array addition problems.
    $this->query->add_where($this->options['group'], "$this->table_alias.$this->real_field " . $this->operator . $in, array_values($this->value));

#6

Status:active» postponed (maintainer needs more info)

@HippoOnDiet, any luck/progress on this?

nobody click here