Example #1
0
 /**
  * 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() . ')');
 }