Exemplo n.º 1
0
 /**
  * Export records from a model
  */
 public function actionExportModels($listId = null)
 {
     unset($_SESSION['modelExportFile'], $_SESSION['exportModelCriteria'], $_SESSION['modelExportMeta']);
     $modelList = Modules::getExportableModules();
     // Determine the model selected by the user
     if (isset($_GET['model']) || isset($_POST['model'])) {
         $model = isset($_GET['model']) ? $_GET['model'] : $_POST['model'];
         $modelName = str_replace(' ', '', $model);
     }
     if (isset($model) && in_array($modelName, array_keys($modelList))) {
         $staticModel = X2Model::model($modelName);
         $modulePath = '/' . $staticModel->module;
         $modulePath .= $modulePath;
         if (is_null($listId) || $model != 'Contacts') {
             $file = "records_export.csv";
             $listName = CHtml::link(Yii::t('admin', 'All {model}', array('{model}' => $model)), array($modulePath . '/index'), array('style' => 'text-decoration:none;'));
             // Forcefully disable eager loading so it doesn't go super-slow)
             $_SESSION['exportModelCriteria'] = new CDbCriteria();
             $_SESSION['exportModelCriteria']->with = array();
         } else {
             $list = X2List::load($listId);
             $_SESSION['exportModelCriteria'] = $list->queryCriteria();
             $file = "list" . $listId . ".csv";
             $listName = CHtml::link(Yii::t('admin', 'List') . " {$listId}: " . $list->name, array($modulePath . '/list', 'id' => $listId), array('style' => 'text-decoration:none;'));
         }
         $filePath = $this->safePath($file);
         $_SESSION['modelExportFile'] = $file;
         $attributes = X2Model::model($modelName)->attributes;
         if ($modelName === 'Actions') {
             // Make sure the ActionText is exported too
             $attributes = array_merge($attributes, array('actionDescription' => null));
         }
         $meta = array_keys($attributes);
         if (isset($list)) {
             // Figure out gridview settings to export those columns
             $gridviewSettings = json_decode(Yii::app()->params->profile->gridviewSettings, true);
             if (isset($gridviewSettings['contacts_list' . $listId])) {
                 $tempMeta = array_keys($gridviewSettings['contacts_list' . $listId]);
                 $meta = array_intersect($tempMeta, $meta);
             }
         }
         // Set up metadata
         $_SESSION['modelExportMeta'] = $meta;
         $fp = fopen($filePath, 'w+');
         fputcsv($fp, $meta);
         fclose($fp);
     } else {
         // If an invalid model was chosen, unset it so that the model list
         // will be displayed instead.
         if (isset($model)) {
             unset($model);
         }
     }
     $viewParam = array('modelList' => $modelList, 'listId' => $listId, 'model' => '');
     if (isset($model)) {
         $viewParam['model'] = $model;
         if ($model == 'Contacts') {
             $viewParam['listName'] = $listName;
         }
     }
     $this->render('exportModels', $viewParam);
 }
Exemplo n.º 2
0
 /**
  * Export records from a model
  */
 public function actionExportModels($listId = null)
 {
     unset($_SESSION['modelExportFile'], $_SESSION['exportModelCriteria'], $_SESSION['modelExportMeta'], $_SESSION['exportModelListId']);
     $modelList = Modules::getExportableModules();
     // Determine the model selected by the user
     if (isset($_GET['model']) || isset($_POST['model'])) {
         $model = isset($_GET['model']) ? $_GET['model'] : $_POST['model'];
         $modelName = str_replace(' ', '', $model);
     }
     if (isset($model) && in_array($modelName, array_keys($modelList))) {
         $staticModel = X2Model::model($modelName);
         $modulePath = '/' . $staticModel->module;
         $modulePath .= $modulePath;
         if (is_null($listId) || $model != 'Contacts') {
             $file = "records_export.csv";
             $listName = CHtml::link(Yii::t('admin', 'All {model}', array('{model}' => $model)), array($modulePath . '/index'), array('style' => 'text-decoration:none;'));
             // Forcefully disable eager loading so it doesn't go super-slow)
             $_SESSION['exportModelCriteria'] = new CDbCriteria();
             $_SESSION['exportModelCriteria']->with = array();
         } else {
             $list = X2List::load($listId);
             $_SESSION['exportModelListId'] = $listId;
             $_SESSION['exportModelCriteria'] = $list->queryCriteria();
             $file = "list" . $listId . ".csv";
             $listName = CHtml::link(Yii::t('admin', 'List') . " {$listId}: " . $list->name, array($modulePath . '/list', 'id' => $listId), array('style' => 'text-decoration:none;'));
         }
         $_SESSION['modelExportFile'] = $file;
     } else {
         // If an invalid model was chosen, unset it so that the model list
         // will be displayed instead.
         if (isset($model)) {
             unset($model);
         }
     }
     $viewParam = array('modelList' => $modelList, 'listId' => $listId, 'model' => '');
     if (isset($model)) {
         $viewParam['model'] = $model;
         if ($model == 'Contacts') {
             $viewParam['listName'] = $listName;
         }
     }
     $this->render('exportModels', $viewParam);
 }
Exemplo n.º 3
0
 public function actionList($id = null)
 {
     $list = X2List::load($id);
     if (!isset($list)) {
         Yii::app()->user->setFlash('error', Yii::t('app', 'The requested page does not exist.'));
         $this->redirect(array('lists'));
     }
     $model = new Contacts('search');
     Yii::app()->user->setState('vcr-list', $id);
     $dataProvider = $model->searchList($id);
     $list->count = $dataProvider->totalItemCount;
     $list->runWithoutBehavior('X2FlowTriggerBehavior', function () use($list) {
         $list->save();
     });
     X2Flow::trigger('RecordViewTrigger', array('model' => $list));
     $this->render('list', array('listModel' => $list, 'dataProvider' => $dataProvider, 'model' => $model));
 }