/**
  * Fetches the data from the persistent data storage.
  * @return array list of data items
  * @since v1.0
  */
 protected function fetchData()
 {
     if (($pagination = $this->getPagination()) !== false) {
         $pagination->setItemCount($this->getTotalItemCount());
         $this->_criteria->setLimit($pagination->getLimit());
         $this->_criteria->setOffset($pagination->getOffset());
     }
     /*if(($sort=$this->getSort())!==false && ($order=$sort->getOrderBy())!='')
       {
       $sort=array();
       foreach($this->getSortDirections($order) as $name=>$descending)
       {
       $sort[$name]=$descending ? EMongoCriteria::SORT_DESC : EMongoCriteria::SORT_ASC;
       }
       $this->_criteria->setSort($sort);
       } */
     if (($sort = $this->getSort()) !== false) {
         $sort->applyOrder($this->_criteria);
     }
     return $this->model->findAll($this->_criteria);
 }
Example #2
0
 public function findByParams(array $params)
 {
     $criteria = new EMongoCriteria();
     $sortedField = isset($params['sorted_field']) ? $params['sorted_field'] : 'created_time';
     if (empty($params['limit'])) {
         $params['limit'] = 25;
     }
     if (!empty($params['pid'])) {
         $criteria->addCondition('pid', $params['pid']);
     }
     if (empty($params['since'])) {
         $criteria->setSort([$sortedField => 'desc']);
     }
     if (!empty($params['since'])) {
         $criteria->addCondition($sortedField, (int) $params['since'], '$gt');
         $criteria->setSort([$sortedField => 'asc']);
     }
     if (!empty($params['until'])) {
         $criteria->addCondition($sortedField, (int) $params['until'], '$lt');
         $criteria->setSort([$sortedField => 'desc']);
     }
     $criteria->setLimit($params['limit']);
     return $this->find($criteria);
 }