diff -ur flag_content/flag_content.module /home/michiganpeaceworks/michiganpeaceworks.org/sites/all/modules/flag_content/flag_content.module --- flag_content/flag_content.module 2008-03-11 16:50:52.000000000 -0700 +++ /home/michiganpeaceworks/michiganpeaceworks.org/sites/all/modules/flag_content/flag_content.module 2008-04-29 13:47:57.000000000 -0700 @@ -521,3 +521,41 @@ 'body' => $body, ); } + +/** + * Implementation of hook_views_tables_alter() from Views API + * Add a new filter to views to allow filtering on whether a post is flagged + * Based on code from the Views PHP Filter module + */ +function flag_content_views_tables_alter(&$table_data) { + if (isset($table_data['node']['filters'])) { + $table_data['node']['filters']['flagged'] = array ( + 'name' => t('Node: Node is Flagged'), + 'operator' => array('=' => t('Equals')), + 'list' => 'views_handler_operator_yesno', + 'list-type' => 'select', + 'cacheable' => 'no', + 'handler' => 'flag_content_views_handler_filter_flagged', + 'help' => t('This filter allows you to filter on whether or not a node is flagged.'), + ); + } +} + +function flag_content_views_handler_filter_flagged($op, $filter, $filterinfo, + &$query) { + if (isset ($filter['value'])) { + $flagged = _flag_content_get_list(); + + foreach ($flagged as $k => $v) { + $result[] = $v->eid; + } + $nids = implode(',', $result); + if ($nids != '') { + if ($filter['operator'] == '=') { + $query->add_where("node.nid IN (%s)", $nids); + } else { + $query->add_where("node.nid NOT IN (%s)", $nids); + } + } + } +}