public function actionLists() { $filter = new X2List('search'); $criteria = new CDbCriteria(); $criteria->addCondition('type="static" OR type="dynamic"'); if (!Yii::app()->params->isAdmin) { $condition = 'visibility="1" OR assignedTo="Anyone" OR assignedTo="' . Yii::app()->user->getName() . '"'; /* x2temp */ $groupLinks = Yii::app()->db->createCommand()->select('groupId')->from('x2_group_to_user')->where('userId=' . Yii::app()->user->getId())->queryColumn(); if (!empty($groupLinks)) { $condition .= ' OR assignedTo IN (' . implode(',', $groupLinks) . ')'; } $condition .= 'OR (visibility=2 AND assignedTo IN (SELECT username FROM x2_group_to_user WHERE groupId IN (SELECT groupId FROM x2_group_to_user WHERE userId=' . Yii::app()->user->getId() . ') ) )'; $criteria->addCondition($condition); } $perPage = Profile::getResultsPerPage(); //$criteria->offset = isset($_GET['page']) ? $_GET['page'] * $perPage - 3 : -3; //$criteria->limit = $perPage; $criteria->order = 'createDate DESC'; $filter->compareAttributes($criteria); $contactLists = X2Model::model('X2List')->findAll($criteria); $totalContacts = X2Model::model('Contacts')->count(); $totalMyContacts = X2Model::model('Contacts')->count('assignedTo="' . Yii::app()->user->getName() . '"'); $totalNewContacts = X2Model::model('Contacts')->count('assignedTo="' . Yii::app()->user->getName() . '" AND createDate >= ' . mktime(0, 0, 0)); $allContacts = new X2List(); $allContacts->attributes = array('id' => 'all', 'name' => Yii::t('contacts', 'All {module}', array('{module}' => Modules::displayName())), 'description' => '', 'type' => 'dynamic', 'visibility' => 1, 'count' => $totalContacts, 'createDate' => 0, 'lastUpdated' => 0); $newContacts = new X2List(); $newContacts->attributes = array('id' => 'new', 'assignedTo' => Yii::app()->user->getName(), 'name' => Yii::t('contacts', 'New {module}', array('{module}' => Modules::displayName())), 'description' => '', 'type' => 'dynamic', 'visibility' => 1, 'count' => $totalNewContacts, 'createDate' => 0, 'lastUpdated' => 0); $myContacts = new X2List(); $myContacts->attributes = array('id' => 'my', 'assignedTo' => Yii::app()->user->getName(), 'name' => Yii::t('contacts', 'My {module}', array('{module}' => Modules::displayName())), 'description' => '', 'type' => 'dynamic', 'visibility' => 1, 'count' => $totalMyContacts, 'createDate' => 0, 'lastUpdated' => 0); $contactListData = array($allContacts, $myContacts, $newContacts); $filteredPseudoLists = $filter->filter($contactListData); $lists = array_merge($filteredPseudoLists, $contactLists); $dataProvider = new CArrayDataProvider($lists, array('pagination' => array('pageSize' => $perPage), 'sort' => array('attributes' => array('name', 'type' => array('asc' => 'type asc, id desc', 'desc' => 'type desc, id desc'), 'count' => array('asc' => 'count asc, id desc', 'desc' => 'count desc, id desc'), 'assignedTo' => array('asc' => 'assignedTo asc, id desc', 'desc' => 'assignedTo desc, id desc'))), 'totalItemCount' => count($contactLists) + 3)); $this->render('listIndex', array('contactLists' => $dataProvider, 'filter' => $filter)); }