Exemplo n.º 1
0
 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));
 }