示例#1
1
文件: Panel.php 项目: dsyman2/X2CRM
 public function getModuleItems()
 {
     $basicModules = array('x2Activity', 'contacts', 'charts', 'accounts', 'opportunities', 'x2Leads', 'quotes', 'products', 'services', 'bugReports', 'users');
     $qpg = new QueryParamGenerator();
     $criteria = new CDbCriteria();
     $criteria->condition = '(name in ' . $qpg->bindArray($basicModules, true) . ' or custom) and visible and 
          moduleType in ("module", "pseudoModule") and name != "document"';
     $criteria->params = $qpg->getParams();
     $criteria->order = 'menuPosition ASC';
     $modules = Modules::model()->findAll($criteria);
     $modules = array_filter($modules, function ($module) {
         if ($module->title === 'charts') {
             $action = 'ReportsChartDashboard';
         } else {
             $action = ucfirst($module->title) . 'Index';
         }
         $authItem = Yii::app()->authManager->getAuthItem($action);
         return Yii::app()->params->isAdmin || is_null($authItem) || Yii::app()->user->checkAccess($action);
     });
     return array_map(function ($module) {
         $item = new ModulePanelItem();
         $item->module = $module;
         return $item;
     }, $modules);
 }
示例#2
0
 public static function supportedModules(CDbCriteria $criteria = null)
 {
     $basicModules = array('x2Activity', 'topics', 'contacts', 'charts', 'accounts', 'opportunities', 'x2Leads', 'quotes', 'products', 'services', 'bugReports', 'users');
     $qpg = new QueryParamGenerator();
     $newCriteria = new CDbCriteria();
     $newCriteria->condition = '(name in ' . $qpg->bindArray($basicModules, true) . ' or custom) and visible and 
          moduleType in ("module", "pseudoModule") and name != "document"';
     $newCriteria->params = $qpg->getParams();
     $newCriteria->order = 'menuPosition ASC';
     if ($criteria) {
         $newCriteria->mergeWith($criteria);
         $criteria = $newCriteria;
     } else {
         $criteria = $newCriteria;
     }
     $modules = Modules::model()->findAll($criteria);
     return $modules;
 }
示例#3
0
 protected function getVisibleRelationshipsCriteria()
 {
     $criteria = new CDbCriteria();
     $qpg = new QueryParamGenerator(':getRelationshipsCriteria');
     $models = $this->getVisibleRelatedX2Models();
     if (!count($models)) {
         $criteria->addCondition('FALSE');
     } else {
         foreach ($models as $model) {
             $criteria->addCondition("(firstType=:myType AND firstId=:myId AND\n                          secondType={$qpg->nextParam(get_class($model))} AND \n                          secondId={$qpg->nextParam($model->id)})", 'OR');
             $criteria->addCondition("(secondType=:myType AND secondId=:myId AND\n                          firstType={$qpg->nextParam(get_class($model))} AND \n                          firstId={$qpg->nextParam($model->id)})", 'OR');
         }
         $criteria->params = array_merge(array(':myType' => get_class($this->owner), ':myId' => $this->owner->id), $qpg->getParams());
     }
     return $criteria;
 }
示例#4
0
文件: X2Model.php 项目: keyeMyria/CRM
 public function getRelationshipsCriteria($visibleOnly = false)
 {
     if (!$visibleOnly) {
         $criteria = new CDbCriteria(array('condition' => '(firstType=:myType AND firstId=:myId OR
                   secondType=:myType AND secondId=:myId) AND
                  (firstId IS NOT NULL AND firstId != "" AND
                   secondId IS NOT NULL AND secondId != "")', 'params' => array(':myType' => get_class($this), ':myId' => $this->id)));
     } else {
         $criteria = new CDbCriteria();
         $qpg = new QueryParamGenerator(':getRelationshipsCriteria');
         $models = $this->getVisibleRelatedX2Models();
         if (!count($models)) {
             $criteria->addCondition('FALSE');
         } else {
             foreach ($models as $model) {
                 $criteria->addCondition("(firstType=:myType AND firstId=:myId AND\n                          secondType={$qpg->nextParam(get_class($model))} AND \n                          secondId={$qpg->nextParam($model->id)})", 'OR');
                 $criteria->addCondition("(secondType=:myType AND secondId=:myId AND\n                          firstType={$qpg->nextParam(get_class($model))} AND \n                          firstId={$qpg->nextParam($model->id)})", 'OR');
             }
             $criteria->params = array_merge(array(':myType' => get_class($this), ':myId' => $this->id), $qpg->getParams());
         }
     }
     return $criteria;
 }
示例#5
0
 public function renderAttribute($attr)
 {
     switch ($attr) {
         case 'isDefaultFor':
             $isDefaultFor = $this->getIsDefaultFor();
             if (in_array(self::DEFAULT_ALL_MODULES, $isDefaultFor)) {
                 return Yii::t('workflow', 'All modules');
             } elseif ($isDefaultFor) {
                 $qpg = new QueryParamGenerator();
                 $moduleNames = Yii::app()->db->createCommand()->select('name')->from('x2_modules')->where('id in ' . $qpg->bindArray($isDefaultFor, true))->queryColumn($qpg->getParams());
                 return implode(', ', ArrayUtil::asorti(array_map(function ($name) {
                     return Modules::displayName(true, $name);
                 }, $moduleNames)));
             }
             break;
         default:
             return $this->{$attr};
     }
 }
示例#6
0
 /**
  * Re-arrange the top bar menu.
  *
  * This form allows for the admin to change the order and visibility of top bar
  * menu items for all users.
  */
 public function actionManageModules()
 {
     $modules = Modules::model()->findAll();
     usort($modules, function ($a, $b) {
         $aPos = $a->menuPosition === null ? INF : (int) $a->menuPosition;
         $bPos = $b->menuPosition === null ? INF : (int) $b->menuPosition;
         if ($aPos < $bPos) {
             return -1;
         } elseif ($aPos > $bPos) {
             return 1;
         } else {
             return 0;
         }
     });
     $selectedItems = array();
     $deletableOptions = array();
     $menuItems = array();
     foreach ($modules as $module) {
         if ($module->name != 'users') {
             if (in_array($module->moduleType, array('link', 'recordLink'))) {
                 $deletableOptions[] = $module->id;
             }
             $menuItems[$module->id] = $module->getTitle();
             if ($module->visible) {
                 $selectedItems[] = $module->id;
             }
         }
     }
     if (isset($_POST['formSubmit'])) {
         $selectedItems = isset($_POST['menuItems']) ? $_POST['menuItems'] : array();
         $hiddenModuleIds = array_keys(array_diff_key($menuItems, array_flip($selectedItems)));
         // validate module ids
         $qpg = new QueryParamGenerator();
         $count = (int) Yii::app()->db->createCommand("\n                select count(*) from x2_modules\n                where id in " . $qpg->bindArray(array_merge($selectedItems, $hiddenModuleIds), true))->queryScalar($qpg->getParams());
         if ($count !== count(array_merge($selectedItems, $hiddenModuleIds))) {
             Yii::app()->user->setFlash('error', Yii::t('app', 'Selected module(s) not found.'));
         } elseif (Modules::updateTopBarLinks($selectedItems, $hiddenModuleIds)) {
             Yii::app()->user->setFlash('success', Yii::t('app', 'Updated top bar links.'));
             $this->redirect('manageModules');
         } else {
             Yii::app()->user->setFlash('error', Yii::t('app', 'Failed to update top bar links.'));
         }
     }
     $this->render('manageModules', array('selectedItems' => $selectedItems, 'menuItems' => $menuItems, 'deletableOptions' => $deletableOptions));
 }