Checkboxes & radio buttons do not work with table prefixes

jessefulton - January 8, 2010 - 01:18
Project:Views Filter Pack
Version:6.x-1.x-dev
Component:Code
Category:bug report
Priority:critical
Assigned:Unassigned
Status:active
Issue tags:table prefix
Description

With a site using table prefixes, table names are not properly generated in the SQL and generates the following error:

user warning: Unknown column 'term_node.tid' in 'where clause' query: SELECT node.nid AS nid, node.title AS node_title, node_data_field_start_end.field_start_end_value AS node_data_field_start_end_field_start_end_value, node_data_field_start_end.field_start_end_value2 AS node_data_field_start_end_field_start_end_value2, node_data_field_start_end.field_start_end_rrule AS node_data_field_start_end_field_start_end_rrule, node_data_field_start_end.delta AS node_data_field_start_end_delta, node.type AS node_type, node.vid AS node_vid FROM school_node node LEFT JOIN school_content_field_start_end node_data_field_start_end ON node.vid = node_data_field_start_end.vid LEFT JOIN school_term_node term_node_value_0 ON node.vid = term_node_value_0.vid AND term_node_value_0.tid = 35 LEFT JOIN school_term_node term_node_value_1 ON node.vid = term_node_value_1.vid AND term_node_value_1.tid = 37 LEFT JOIN school_term_node term_node_value_2 ON node.vid = term_node_value_2.vid AND term_node_value_2.tid = 7 LEFT JOIN school_term_node term_node_value_3 ON node.vid = term_node_value_3.vid AND term_node_value_3.tid = 1 LEFT JOIN school_term_node term_node_value_4 ON node.vid = term_node_value_4.vid AND term_node_value_4.tid = 3 LEFT JOIN school_term_node term_node_value_5 ON node.vid = term_node_value_5.vid AND term_node_value_5.tid = 8 LEFT JOIN school_term_node term_node_value_6 ON node.vid = term_node_value_6.vid AND term_node_value_6.tid = 4 LEFT JOIN school_term_node term_node_value_7 ON node.vid = term_node_value_7.vid AND term_node_value_7.tid = 6 LEFT JOIN school_term_node term_node_value_8 ON node.vid = term_node_value_8.vid AND term_node_value_8.tid = 2 LEFT JOIN school_term_node term_node_value_9 ON node.vid = term_node_value_9.vid AND term_node_value_9.tid = 5 LEFT JOIN school_term_node term_node_value_10 ON node.vid = term_node_value_10.vid AND term_node_value_10.tid = 18 LEFT JOIN school_term_node term_node_value_11 ON node.vid = term_node_value_11.vid AND term_node_value_11.tid = 16 LEFT JOIN school_term_node term_node_value_12 ON node.vid = term_node_value_12.vid AND term_node_value_12.tid = 17 WHERE ((node.type in ('5')) AND (term_node_value_0.tid = 2 OR term_node_value_1.tid = 6 OR term_node_value_2.tid = 4 OR term_node_value_3.tid = 8 OR term_node_value_4.tid = 3 OR term_node_value_5.tid = 1 OR term_node_value_6.tid = 7 OR term_node_value_7.tid = 37 OR term_node_value_8.tid = 35 OR term_node_value_9.tid = 0) AND (term_node_value_10.tid = 35 OR term_node_value_11.tid = 37 OR term_node_value_12.tid = 7) AND (term_node.tid in('1','3','8','4','6','2','5','18','16','17'))) AND ((node_data_field_start_end.field_start_end_value <= '2010-01-24 00:00:00' AND node_data_field_start_end.field_start_end_value2 >= '2010-01-17 00:00:00')) ORDER BY node_data_field_start_end_field_start_end_value ASC

For this specific problem, I've changed the file views_filter_pack.module:386 to:

    '{term_node}.tid' => array(

I'm not sure if all fields need to be wrapped in brackets, but figured I'd share.

#1

torgosPizza - January 31, 2010 - 01:13

All table names should be wrapped in brackets. If this is a problem elsewhere in the code, then the module will break on multisite installs or other situations where prefixes are used.

 
 

Drupal is a registered trademark of Dries Buytaert.