skeeks\cms\components\urlRules\UrlRuleTree::parseRequest PHP Method

parseRequest() public method

public parseRequest ( UrlManager $manager, Request $request ) : array | boolean
$manager yii\web\UrlManager
$request yii\web\Request
return array | boolean
    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;
        }
    }