/**
  * 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);
 }
Beispiel #4
0
 /**
  * @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);
     }
 }
Beispiel #5
0
 /**
  * @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");
 }