Example #1
0
 protected function _go($normalizeDir = null)
 {
     if (\Yii::$app->seo->useLastDelimetrTree) {
         $normalizeDir = substr($normalizeDir, 0, strlen($normalizeDir) - 1);
     }
     try {
         $dependency = new TagDependency(['tags' => [(new Tree())->getTableCacheTag()]]);
         if (!$normalizeDir) {
             $treeNode = Tree::getDb()->cache(function ($db) {
                 return Tree::find()->where(["site_code" => \Yii::$app->cms->site->code, "level" => 0])->one();
             }, null, $dependency);
             /*$treeNode = Tree::find()->where([
                   "site_code"         => \Yii::$app->cms->site->code,
                   "level"             => 0,
               ])->one();*/
         } else {
             /*$treeNode = Tree::getDb()->cache(function ($db) {
                   return Tree::find()->where([
                       (new Tree())->dirAttrName       => $normalizeDir,
                       "site_code"                     => \Yii::$app->cms->site->code,
                   ])->one();
               }, null, $dependency);*/
             $treeNode = Tree::find()->where(["dir" => $normalizeDir, "site_code" => \Yii::$app->cms->site->code])->one();
         }
     } catch (Exception $e) {
         if (in_array($e->getCode(), NotConnectedToDbException::$invalidConnectionCodes)) {
             throw new NotConnectedToDbException();
         }
     } catch (\yii\base\InvalidConfigException $e) {
         throw new NotConnectedToDbException();
     }
     if ($treeNode) {
         \Yii::$app->cms->setCurrentTree($treeNode);
         $params['id'] = $treeNode->id;
         return ['cms/tree/view', $params];
     } else {
         return false;
     }
 }
Example #2
0
 /**
  * @param \yii\web\UrlManager $manager
  * @param \yii\web\Request $request
  * @return array|bool
  */
 public function parseRequest($manager, $request)
 {
     if ($this->mode === self::CREATION_ONLY) {
         return false;
     }
     if (!empty($this->verb) && !in_array($request->getMethod(), $this->verb, true)) {
         return false;
     }
     $pathInfo = $request->getPathInfo();
     if ($this->host !== null) {
         $pathInfo = strtolower($request->getHostInfo()) . ($pathInfo === '' ? '' : '/' . $pathInfo);
     }
     $params = $request->getQueryParams();
     $suffix = (string) ($this->suffix === null ? $manager->suffix : $this->suffix);
     $treeNode = null;
     $originalDir = $pathInfo;
     if ($suffix) {
         $originalDir = substr($pathInfo, 0, strlen($pathInfo) - strlen($suffix));
     }
     $dependency = new TagDependency(['tags' => [(new Tree())->getTableCacheTag()]]);
     if (!$pathInfo) {
         $treeNode = Tree::getDb()->cache(function ($db) {
             return Tree::find()->where(["site_code" => \Yii::$app->cms->site->code, "level" => 0])->one();
         }, null, $dependency);
     } else {
         $treeNode = Tree::find()->where(["dir" => $originalDir, "site_code" => \Yii::$app->cms->site->code])->one();
     }
     if ($treeNode) {
         \Yii::$app->cms->setCurrentTree($treeNode);
         $params['id'] = $treeNode->id;
         return ['cms/tree/view', $params];
     } else {
         return false;
     }
 }