Your IP : 216.73.216.79


Current Path : /var/www/html/ebookingdbkl/common/components/
Upload File :
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'));
    }
}