コード例 #1
0
 /**
  * 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();
     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;
 }
コード例 #2
0
ファイル: Collection.php プロジェクト: lchen01/STEdwards
 public function findPairsForSelectForm(array $options = array())
 {
     $db = $this->getDb();
     $subquery = new Omeka_Db_Select();
     $subquery->from(array('element_texts' => $db->ElementText), 'id');
     $subquery->joinInner(array('elements' => $db->Element), 'elements.id = element_texts.element_id', array());
     $subquery->joinInner(array('element_sets' => $db->ElementSet), 'element_sets.id = elements.element_set_id', array());
     $subquery->where("element_sets.name = 'Dublin Core'");
     $subquery->where("elements.name = 'Title'");
     $subquery->where("element_texts.record_type = 'Collection'");
     $subquery->where('element_texts.record_id = collections.id');
     $subquery->limit(1);
     $select = $this->getSelectForFindBy($options);
     $select->joinLeft(array('element_texts' => $db->ElementText), "element_texts.id = ({$subquery})", array());
     $select->reset(Zend_Db_Select::COLUMNS);
     $select->from(array(), array('collections.id', 'element_texts.text'));
     $select->order('element_texts.text');
     $pairs = $db->fetchPairs($select);
     foreach ($pairs as $collectionId => &$name) {
         if ($name === null || $name == '') {
             $name = __('[Untitled] #%s', $collectionId);
         } else {
             $name = strip_formatting($name);
         }
     }
     return $pairs;
 }
コード例 #3
0
ファイル: Table.php プロジェクト: kyfr59/cg35
 /**
  * Apply default column-based sorting for a table.
  *
  * @param Omeka_Db_Select $select
  * @param string $sortField Field to sort on.
  * @param string $sortDir Direction to sort.
  */
 public function applySorting($select, $sortField, $sortDir)
 {
     if ($sortField == 'volet') {
         $select->joinInner(array('hierarchy' => 'omeka_hierarchies'), 'items.id = hierarchy.id', array('hierarchy.atom_top_parent_id'));
         $select->order("hierarchy.atom_top_parent_id {$sortDir}");
         return;
     }
     if ($sortField == 'guide') {
         $select->joinInner(array('hierarchy' => 'omeka_hierarchies'), 'items.id = hierarchy.id', array('hierarchy.atom_top_parent_id'));
         $select->order("hierarchy.order {$sortDir}");
         return;
     }
     if (empty($sortField) || empty($sortDir)) {
         return;
     }
     if (in_array($sortField, $this->getColumns())) {
         $alias = $this->getTableAlias();
         $select->order("{$alias}.{$sortField} {$sortDir}");
     } else {
         if ($sortField == 'random') {
             $select->order('RAND()');
         }
     }
 }