%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/custom_pages/components/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/custom_pages/components/PageUrlRule.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2016 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\custom_pages\components; use yii\base\Component; use yii\web\UrlRuleInterface; use humhub\modules\custom_pages\models\Page; /** * CustomPages URL Rule * * @author luke */ class PageUrlRule extends Component implements UrlRuleInterface { /** * @var string default route to page home */ public $defaultRoutes = ['custom_pages/view', 'custom_pages/view/view']; /** * @var array map with space guid/url pairs */ protected static $pageUrlMap = []; /** * @inheritdoc */ public function createUrl($manager, $route, $params) { if (in_array($route, $this->defaultRoutes) && isset($params['id'])) { $route = ''; $urlPart = static::getUrlByPageId($params['id']); if ($urlPart !== null) { $url = "p/" . urlencode($urlPart); unset($params['id']); if (!empty($params) && ($query = http_build_query($params)) !== '') { $url .= '?' . $query; } return $url; } } return false; } /** * @inheritdoc */ public function parseRequest($manager, $request) { $pathInfo = $request->getPathInfo(); if (substr($pathInfo, 0, 2) == "p/") { $parts = explode('/', $pathInfo, 3); if (isset($parts[1])) { $page = Page::find()->where(['id' => $parts[1]])->orWhere(['url' => $parts[1]])->one(); if ($page !== null) { if (!isset($parts[2]) || $parts[2] == "") { $parts[2] = $this->defaultRoutes[0]; } $params = $request->get(); $params['id'] = $page->id; return [$parts[2], $params]; } } } return false; } /** * Gets space url name by given guid * * @param string $guid * @return string|null the space url part */ public static function getUrlByPageId($id) { if (isset(static::$pageUrlMap[$id])) { return static::$pageUrlMap[$id]; } $page = Page::findOne(['id' => $id]); if ($page !== null) { static::$pageUrlMap[$page->id] = !empty($page->url) ? $page->url : $page->id; return static::$pageUrlMap[$page->id]; } return null; } }