/** * Filter SELECT statement based on items that are not tagged with a specific * set of tags * * @param Zend_Db_Select * @param array|string Set of tag names (either array or comma-delimited string) * @return void */ public function filterByExcludedTags($select, $tags) { $db = $this->getDb(); if (!is_array($tags)) { $tags = explode(get_option('tag_delimiter'), $tags); } $subSelect = new Omeka_Db_Select(); $subSelect->from(array('items' => $db->Item), 'items.id')->joinInner(array('records_tags' => $db->RecordsTags), 'records_tags.record_id = items.id AND records_tags.record_type = "Item"', array())->joinInner(array('tags' => $db->Tag), 'records_tags.tag_id = tags.id', array()); foreach ($tags as $key => $tag) { $subSelect->where('tags.name LIKE ?', $tag); } $select->where('items.id NOT IN (' . $subSelect->__toString() . ')'); }