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