public function smartSearch($criteria, $pageSize = null) { $sort = new SmartSort(get_class($this->owner), isset($this->owner->uid) ? $this->owner->uid : get_class($this->owner)); $sort->multiSort = false; $sort->attributes = $this->owner->getSort(); $sort->defaultOrder = 't.lastUpdated DESC, t.id DESC'; if (!$pageSize) { if (!Yii::app()->user->isGuest) { $pageSize = Profile::getResultsPerPage(); } else { $pageSize = 20; } } $dataProvider = new SmartActiveDataProvider(get_class($this->owner), array('sort' => $sort, 'pagination' => array('pageSize' => $pageSize), 'criteria' => $criteria, 'uid' => $this->owner->uid, 'dbPersistentGridSettings' => $this->owner->dbPersistentGridSettings)); $sort->applyOrder($criteria); return $dataProvider; }
/** * Base search function, includes Retrieves a list of models based on the current * search/filter conditions. * @param CDbCriteria $criteria the attribute name * @param integer $pageSize If set, will override property of profile model * @return CActiveDataProvider the data provider that can return the models based on the * search/filter conditions. */ public function searchBase($criteria, $pageSize = null, $showHidden = false) { if (isset($_GET['showHidden']) && $_GET['showHidden'] && Yii::app()->user->checkAccess(self::getModuleName(get_class($this)) . 'Admin')) { $showHidden = true; } if ($criteria === null) { $criteria = $this->getAccessCriteria('t', Yii::app()->params->modelPermissions, $showHidden); } else { $criteria->mergeWith($this->getAccessCriteria('t', Yii::app()->params->modelPermissions, $showHidden)); } $filterCriteria = new CDbCriteria(); $this->compareAttributes($filterCriteria); $criteria->mergeWith($filterCriteria); $criteria->with = array(); // No joins necessary! $sort = new SmartSort(get_class($this), isset($this->uid) ? $this->uid : get_class($this)); $sort->multiSort = false; $sort->attributes = $this->getSort(); $sort->defaultOrder = 't.lastUpdated DESC, t.id DESC'; if ($pageSize === null) { if (!Yii::app()->user->isGuest) { $pageSize = Profile::getResultsPerPage(); } else { $pageSize = 20; } } $dataProvider = new SmartActiveDataProvider(get_class($this), array('sort' => $sort, 'pagination' => array('pageSize' => $pageSize), 'criteria' => $criteria, 'uid' => $this->uid, 'dbPersistentGridSettings' => $this->dbPersistentGridSettings, 'disablePersistentGridSettings' => $this->disablePersistentGridSettings)); $sort->applyOrder($criteria); return $dataProvider; }