/** * 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); }
/** * 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); }
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)); }