Example #1
0
 /**
  * @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;
 }
Example #3
0
 /**
  * @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();
 }
Example #4
0
 /**
  * @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;
 }
Example #5
0
 /**
  * @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);
     }
 }