/** * Define filters for browse and findBy. * * Available filters are: "tag" or "tags", "public" and "featured". "sort" * also adds specific sorting strategies "alpha" and "recent", but the * normal sorting can also be used. * * @param Omeka_Db_Select $select * @param array $params Key-value array of search parameters * @return Omeka_Db_Select */ public function applySearchFilters($select, $params) { $db = $this->getDb(); parent::applySearchFilters($select, $params); foreach ($params as $paramName => $paramValue) { switch ($paramName) { case 'tag': case 'tags': $tags = explode(',', $paramValue); $select->joinInner(array('tg' => $db->RecordsTags), 'tg.record_id = exhibits.id', array()); $select->joinInner(array('t' => $db->Tag), "t.id = tg.tag_id", array()); foreach ($tags as $k => $tag) { $select->where('t.name = ?', trim($tag)); } $select->where("tg.record_type = ? ", array('Exhibit')); break; case 'public': $this->filterByPublic($select, $params['public']); break; case 'range': $this->filterByRange($select, $params['range']); break; case 'featured': $this->filterByFeatured($select, $params['featured']); break; } } return $select; }
/** * Apply filters for searching pages to an SQL select object. * * Valid filters are "parent", "exhibit", "order", and "topOnly". * * @param Omeka_Db_Select $select * @param array $params */ public function applySearchFilters($select, $params) { parent::applySearchFilters($select, $params); if (isset($params['parent'])) { if (is_numeric($params['parent'])) { $this->filterByParentId($select, $params['parent']); } else { if ($params['parent'] instanceof ExhibitPage) { $parent = $params['parent']; $this->filterByParentId($select, $parent->id); } } } if (isset($params['exhibit'])) { if (is_numeric($params['exhibit'])) { $this->filterByExhibitId($select, $params['exhibit']); } else { if ($params['exhibit'] instanceof Exhibit) { $exhibit = $params['exhibit']; $this->filterByExhibitId($select, $exhibit->id); } } } if (isset($params['order'])) { $this->filterByOrder($select, $params['order']); } if (isset($params['topOnly'])) { $this->filterByTopOnly($select); } if (isset($params['item'])) { $this->filterByItem($select, $params['item']); } }
public function applySearchFilters($select, $params) { foreach ($params as $paramName => $paramValue) { if ($paramValue === null || is_string($paramValue) && trim($paramValue) == '') { continue; } switch ($paramName) { case 'contributor': $this->filterByContributor($select, $params['contributor']); break; case 'status': $this->filterByStatus($select, $params['status']); break; } } parent::applySearchFilters($select, $params); }
/** * @param Omeka_Db_Select * @param array * @return void */ public function applySearchFilters($select, $params) { $alias = $this->getTableAlias(); $boolean = new Omeka_Filter_Boolean(); $genericParams = array(); foreach ($params as $key => $value) { if ($value === null || is_string($value) && trim($value) == '') { continue; } switch ($key) { case 'owner_id': $this->filterByUser($select, $value, 'owner_id'); break; case 'status': switch ($value) { case 'ready': $genericParams['status'] = array(ArchiveFolder_Folder::STATUS_ADDED, ArchiveFolder_Folder::STATUS_RESET, ArchiveFolder_Folder::STATUS_PAUSED, ArchiveFolder_Folder::STATUS_STOPPED, ArchiveFolder_Folder::STATUS_KILLED, ArchiveFolder_Folder::STATUS_COMPLETED); break; case 'processing': $genericParams['status'] = array(ArchiveFolder_Folder::STATUS_QUEUED, ArchiveFolder_Folder::STATUS_PROGRESS, ArchiveFolder_Folder::STATUS_PAUSED); break; default: $genericParams['status'] = $value; break; } break; default: $genericParams[$key] = $value; } } if (!empty($genericParams)) { parent::applySearchFilters($select, $genericParams); } }
/** * @param Omeka_Db_Select * @param array * @return void */ public function applySearchFilters($select, $params) { $alias = $this->getTableAlias(); $boolean = new Omeka_Filter_Boolean(); $genericParams = array(); foreach ($params as $key => $value) { if ($value === null || is_string($value) && trim($value) == '') { continue; } switch ($key) { case 'folder': $this->filterByFolder($select, $value); break; case 'record': $this->filterByRecord($select, $value); break; case 'record_type': $this->filterByRecordType($select, $value); break; default: $genericParams[$key] = $value; } } if (!empty($genericParams)) { parent::applySearchFilters($select, $genericParams); } }
/** * @param Omeka_Db_Select * @param array * @return void */ public function applySearchFilters($select, $params) { $alias = $this->getTableAlias(); $boolean = new Omeka_Filter_Boolean(); $genericParams = array(); foreach ($params as $key => $value) { if ($value === null || is_string($value) && trim($value) == '') { continue; } switch ($key) { // Currently, Omeka manage only Item taggings. case 'record': case 'record_id': $this->filterByRecord($select, $value); break; case 'tag': case 'name': $genericParams['name'] = $value; break; case 'status': switch ($value) { case 'moderated': $genericParams['status'] = array('approved', 'rejected'); break; case 'not moderated': $genericParams['status'] = array('proposed', 'allowed'); break; default: $genericParams['status'] = $value; break; } break; case 'user_id': $this->filterByUser($select, $value, 'user_id'); break; case 'added_since': $this->filterBySince($select, $value, 'added'); break; default: $genericParams[$key] = $value; } } if (!empty($genericParams)) { parent::applySearchFilters($select, $genericParams); } // If we returning the data itself, we need to group by the record id. $select->group("{$alias}.id"); }