/** * @param $id * @return string * @throws InvalidConfigException * @throws \yii\web\HttpException */ public function run($id) { $this->model = CmsContentElement::findOne(['id' => $id]); //Пробуем рендерить view для текущего типа страницы if ($this->model) { $cmsContent = $this->model->cmsContent; if ($cmsContent) { if ($cmsContent->viewFile) { $this->view = $cmsContent->viewFile; } else { $this->view = $cmsContent->code; } if ($cmsContent->access_check_element == 'Y') { /** * @var $filter CmsAccessControl */ $filter = \Yii::createObject(['class' => CmsAccessControl::className(), 'only' => [$this->id], 'rules' => [['allow' => true, 'matchCallback' => function ($rule, $action) { //Если такая привилегия заведена, нужно ее проверять. if ($permission = \Yii::$app->authManager->getPermission($this->model->permissionName)) { if (!\Yii::$app->user->can($permission->name)) { return false; } } return true; }]]]); $result = $filter->beforeAction($this); } } } return $this->_go(); }
/** * @return array|bool|null|CmsTree|\yii\db\ActiveRecord */ public function getModel() { if ($this->_model !== false) { return $this->_model; } if (!($id = \Yii::$app->request->get('id'))) { $this->_model = null; return false; } $this->_model = CmsContentElement::findOne(['id' => $id]); return $this->_model; }
/** * @param $id * @return string * @throws InvalidConfigException * @throws \yii\web\HttpException */ public function run($id) { $this->model = CmsContentElement::findOne(['id' => $id]); //Пробуем рендерить view для текущего типа страницы if ($this->model) { if ($this->model->cmsContent) { if ($this->model->cmsContent->viewFile) { $this->view = $this->model->cmsContent->viewFile; } else { $this->view = $this->model->cmsContent->code; } } } return $this->_go(); }
/** * @param \yii\web\UrlManager $manager * @param string $route * @param array $params * @return bool|string */ public function createUrl($manager, $route, $params) { if ($route == 'cms/content-element/view') { $suffix = (string) ($this->suffix === null ? $manager->suffix : $this->suffix); $id = (int) ArrayHelper::getValue($params, 'id'); $contentElement = ArrayHelper::getValue($params, 'model'); if (!$id && !$contentElement) { return false; } if ($contentElement && $contentElement instanceof CmsContentElement) { self::$models[$contentElement->id] = $contentElement; } else { /** * @var $contentElement CmsContentElement */ if (!($contentElement = ArrayHelper::getValue(self::$models, $id))) { $contentElement = CmsContentElement::findOne(['id' => $id]); self::$models[$id] = $contentElement; } } if (!$contentElement) { return false; } $url = ''; $cmsTree = ArrayHelper::getValue($params, 'cmsTree'); //We need to build on what that particular section of the settings if (!$cmsTree) { $cmsTree = $contentElement->cmsTree; } if ($cmsTree) { $url = $cmsTree->dir . "/"; } //$url .= $contentElement->id . '-' . $contentElement->code . ((bool) \Yii::$app->seo->useLastDelimetrContentElements ? DIRECTORY_SEPARATOR : ""); $url .= $contentElement->id . '-' . $contentElement->code . $suffix; ArrayHelper::remove($params, 'id'); ArrayHelper::remove($params, 'code'); ArrayHelper::remove($params, 'model'); if (!empty($params) && ($query = http_build_query($params)) !== '') { $url .= '?' . $query; } return $url; } return false; }
/** * @param \yii\web\UrlManager $manager * @param string $route * @param array $params * @return bool|string */ public function createUrl($manager, $route, $params) { if ($route == 'cms/content-element/view') { $id = (int) ArrayHelper::getValue($params, 'id'); $contentElement = ArrayHelper::getValue($params, 'model'); if (!$id && !$contentElement) { return false; } if ($contentElement && $contentElement instanceof CmsContentElement) { self::$models[$contentElement->id] = $contentElement; } else { /** * @var $contentElement CmsContentElement */ if (!($contentElement = ArrayHelper::getValue(self::$models, $id))) { $contentElement = CmsContentElement::findOne(['id' => $id]); self::$models[$id] = $contentElement; } } if (!$contentElement) { return false; } $url = ''; if ($contentElement->cmsTree) { $url = $contentElement->cmsTree->dir . DIRECTORY_SEPARATOR; } $url .= $contentElement->id . '-' . $contentElement->code . ((bool) \Yii::$app->seo->useLastDelimetrContentElements ? DIRECTORY_SEPARATOR : ""); ArrayHelper::remove($params, 'id'); ArrayHelper::remove($params, 'code'); ArrayHelper::remove($params, 'model'); if (!empty($params) && ($query = http_build_query($params)) !== '') { $url .= '?' . $query; } return $url; } return false; }
public function safeUp() { $rows = (new \yii\db\Query())->select(['id', 'files'])->from('cms_tree')->all(); if ($rows) { foreach ($rows as $row) { /** * @var \skeeks\cms\models\CmsTree $model */ if (!($modelId = \yii\helpers\ArrayHelper::getValue($row, 'id'))) { continue; } if (!($model = \skeeks\cms\models\CmsTree::findOne($modelId))) { continue; } $files = \yii\helpers\ArrayHelper::getValue($row, 'files'); if (!$files) { continue; } $files = Json::decode($files); if ($images = \yii\helpers\ArrayHelper::getValue($files, 'images')) { foreach ($images as $src) { $storageFile = \skeeks\cms\models\StorageFile::find()->where(['src' => $src])->one(); if ($storageFile) { if (!$model->getCmsTreeImages()->andWhere(['storage_file_id' => $storageFile->id])->one()) { $model->link('images', $storageFile); } } } } if ($files = \yii\helpers\ArrayHelper::getValue($files, 'files')) { foreach ($files as $src) { $storageFile = \skeeks\cms\models\StorageFile::find()->where(['src' => $src])->one(); if ($storageFile) { if (!$model->getCmsTreeFiles()->andWhere(['storage_file_id' => $storageFile->id])->one()) { $model->link('files', $storageFile); } } } } } } $rows = (new \yii\db\Query())->select(['id', 'files'])->from('cms_content_element')->all(); if ($rows) { foreach ($rows as $row) { /** * @var \skeeks\cms\models\CmsContentElement $model */ if (!($modelId = \yii\helpers\ArrayHelper::getValue($row, 'id'))) { continue; } if (!($model = \skeeks\cms\models\CmsContentElement::findOne($modelId))) { continue; } $files = \yii\helpers\ArrayHelper::getValue($row, 'files'); if (!$files) { continue; } $files = Json::decode($files); if ($images = \yii\helpers\ArrayHelper::getValue($files, 'images')) { foreach ($images as $src) { $storageFile = \skeeks\cms\models\StorageFile::find()->where(['src' => $src])->one(); if ($storageFile) { if (!$model->getCmsContentElementImages()->andWhere(['storage_file_id' => $storageFile->id])->one()) { $model->link('images', $storageFile); } } } } if ($files = \yii\helpers\ArrayHelper::getValue($files, 'files')) { foreach ($files as $src) { $storageFile = \skeeks\cms\models\StorageFile::find()->where(['src' => $src])->one(); if ($storageFile) { if (!$model->getCmsContentElementFiles()->andWhere(['storage_file_id' => $storageFile->id])->one()) { $model->link('files', $storageFile); } } } } } } }
/** * @return CmsContentElement */ public function getCmsContentElement() { if ($id = $this->model->{$this->attribute}) { return CmsContentElement::findOne($id); } }