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