| Current Path : /var/www/html/ebookingdbkl/common/components/ |
| Current File : /var/www/html/ebookingdbkl/common/components/PortalRouting.php |
<?php
namespace common\components;
use backend\models\frontend\FrontendSite;
use backend\models\frontendpage\FrontendPage;
class PortalRouting
{
private static $site_id;
private static $page_id;
private static $params;
private static $r;
private static $slug_enable;
private static $route;
const DEFAULT_SITE_ROUTE = 'site/index';
// landing page, portal
const DEFAULT_ERROR_ROUTE = 'site/error';
// error
public function __construct()
{
self::$params = \Yii::$app->request->getQueryParams();
self::$route = \Yii::$app->controller->route;
self::$r = self::$params['r'] ?? '';
self::$site_id = isset($_GET['site_id']) ? preg_replace('/[^\da-z\-]+/', '', $_GET['site_id']) : null;
self::$page_id = isset($_GET['page_id']) ? preg_replace('/[^\da-z\-]+/', '', $_GET['page_id']) : null;
}
public static function isFrontendControllerMethod()
{
return (self::$route != self::DEFAULT_SITE_ROUTE && self::$route !== self::DEFAULT_ERROR_ROUTE);
}
public static function isRouteError()
{
return (self::$route == self::DEFAULT_ERROR_ROUTE);
}
public static function isPrettyUrl()
{
return \Yii::$app->urlManager->enablePrettyUrl && (empty(self::$page_id) && empty(self::$site_id));
}
public static function isLanding()
{
$route = trim(\Yii::$app->request->url, '/');
return (empty(self::$page_id) && empty(self::$site_id) && empty($route));
}
public static function isBasedOnId()
{
return (! empty(self::$page_id) || ! empty(self::$site_id));
}
public static function getlandingSite()
{
return FrontendSite::findOne([
'site_default' => 1
]);
}
public static function getlandingPage()
{
$site = self::getlandingSite();
return FrontendPage::find()->where([
'site_id' => $site->site_id,
'page_default' => 1
])->one();
}
public static function getPageBasedOnSlug()
{
$routes = trim(\Yii::$app->request->url, '/');
if (! empty($routes)) {
$routes = explode("/", $routes);
$routes = preg_replace('/[^\da-z\-\?]+/', '', $routes);
// if routes less than 2 parameter // every route will start with site name such as main
if (count($routes) < 2) {
die(\Yii::$app->view->render('404'));
}
list ($site_slug, $slug) = $routes;
// separate get from url
$slug = preg_replace('/\?\S*$/', '', $slug);
$site = FrontendSite::find()->where([
'site_slug' => $site_slug,
'slug_enable' => 1
])->one();
if (! empty($site)) {
$page = FrontendPage::find()->where([
'site_id' => $site->site_id,
'page_slug' => $slug,
'slug_enable' => 1
])->one();
if (! empty($page)) {
return $page;
}
}
die(\Yii::$app->view->render('404'));
}
}
public static function getSiteObjectBaseOnId()
{
if (filter_var(self::$site_id, FILTER_VALIDATE_INT)) {
return FrontendSite::findOne(self::$site_id);
}
die(\Yii::$app->view->render('404'));
}
public static function getPageObjectBaseOnId()
{
$site = self::getSiteObjectBaseOnId();
if (empty(self::$page_id)) {
$page = FrontendPage::find()->where([
'site_id' => $site->site_id,
'page_default' => 1
])->one();
if (! empty($page)) {
return $page;
}
return FrontendPage::find()->where([
'site_id' => $site->site_id
])->one();
} else {
// by id
if (filter_var(self::$page_id, FILTER_VALIDATE_INT)) {
$page = FrontendPage::find()->where([
'site_id' => $site->site_id,
'page_id' => self::$page_id
])->one();
if (! empty($page)) {
return $page;
}
}
}
die(\Yii::$app->view->render('404'));
}
}