Your IP : 216.73.216.79


Current Path : /var/www/html/dvs/frontend/views/layouts/
Upload File :
Current File : /var/www/html/dvs/frontend/views/layouts/main.php

<?php

/* @var $this \yii\web\View */
/* @var $content string */
/* @var $param yii\base\View*/
use backend\models\frontend\FrontendSite;
use backend\models\frontendpage\FrontendPage;
use common\components\PortalEngine;
use Hashids\Hashids;
use backend\models\frontendtheme\FrontendTheme;

$this->title = 'Manage Center';

$params = Yii::$app->request->getQueryParams();
$routeparam = $params['r'] ?? '';

$siteid = isset($_GET['id']) ? preg_replace('/[^\da-z\-]+/', '', $_GET['id']) : null;
$pageid = isset($_GET['page_id']) ? preg_replace('/[^\da-z\-]+/', '', $_GET['page_id']) : null;

//pretty url
if (Yii::$app->urlManager->enablePrettyUrl) {
    $routes = Yii::$app->requestedRoute;
    
    if(!empty($routes)) {
        $routes = explode("/", $routes);
        $routes = preg_replace('/[^\da-z\-]+/', '', $routes);
        list($siteid, $pageid) = $routes;
    }
}
?>
<!DOCTYPE html>
<html>
<?php

/* start checking for routes */
if (isset($siteid) && isset($pageid)) {
        
        /* uncomment this line to enable encrypt */
        /* simple encryption */
        /* $hashids = new Hashids(Yii::$app->params['urlidcryptokey'] , 6);
        $id = $hashids->decode($siteid);
        if(count($id) > 0){
            $id = $id[0];
        }
        $page_id = $hashids->decode($pageid);
        if (count($page_id) > 0) {
            $page_id = $page_id[0];
        } */
        /* encode debug */
        // var_dump($hashids->encode($siteid),$hashids->encode($pageid),$id,$page_id);
        
        /* uncomment this line to enable encrypt */
        /* $siteid  = filter_var($id,FILTER_SANITIZE_NUMBER_INT);
        $pageid  = filter_var($page_id,FILTER_SANITIZE_NUMBER_INT); */
}
if (!isset($params['r']) || $routeparam == 'site/index') :
?>
<?php
/* if empty site id */
if (empty($siteid)) {
        /* get selected id's */
        $frontendid = FrontendSite::findOne([
            'site_default' => 1
        ]);

        if (! empty($frontendid)) {
            $siteid = $frontendid->site_id;
        } else {
            /* get top record */
            $frontendid = FrontendSite::find()->one();
            $siteid = $frontendid->site_id ?? 0;
        }
    } else {
        // by id
        if(filter_var($siteid, FILTER_VALIDATE_INT)) {
            $frontendid = FrontendSite::findOne($siteid);
        } else {
            $frontendid = FrontendSite::find()->where([
                'site_slug' => $siteid,
                'slug_enable' => 1
            ])->one();
        }
        
        if (empty($frontendid) && !empty($content)) {
            
            // if in prod enviroment
            if (YII_ENV === 'prod') {
                http_response_code(500);
                die('<pre>-- internal server error --</pre>');
            }
            
            http_response_code(404);
            
            die($content);
        }
        
        if (empty($frontendid) && empty($content)) {
            http_response_code(404);
            
            die($this->render('404'));
        }
        
        // assign site id
        $siteid = $frontendid->site_id;
    }
    
/* validate each id */

    if(empty($pageid)) {
        
        $defPageID = FrontendPage::find()->where('site_id = "' . $siteid . '" AND page_default = 1')->one();
        
        if (empty($defPageID)) {
            $defPageID = FrontendPage::find()->where('site_id = "' . $siteid . '"')->one();
        }
    } else {
        //by id
        if(filter_var($pageid, FILTER_VALIDATE_INT)) {
            $defPageID = FrontendPage::find()->where('site_id = "' . $siteid . '" AND page_id = "' . $pageid . '" ')->one();
        } else {
            if ($frontendid->slug_enable) {
                $defPageID = FrontendPage::find()->where('site_id = "' . $siteid . '" AND page_slug = "'.$pageid.'" AND slug_enable = 1')->one();
            }
        }
        
        if (empty($defPageID) && !empty($pageid) && !empty($content)) {
            die($content);
        }
    }
    
    if (empty($defPageID)) {
        http_response_code(404);
        
        die($this->render('404'));
    }
        
$pageid = $defPageID->page_id;
    

$rows_content = (new \yii\db\Query())
->select(['c.content_details', 'c.content_is_php', 'c.content_id', 'c.category_id', 'a.page_id'])
    ->from('frontend_content c')
    ->join('INNER JOIN', 'frontend_content_assign a', 'a.content_id = c.content_id AND a.page_id = ' . $pageid . '')
    ->where(['a.status' => '1'])
    ->orderBy('a.content_order')
    ->all();


$themeID = $defPageID->theme_id ?? 0;
$rows_header = (new \yii\db\Query())
    ->select(['h.*', 'f.*'])
    ->from('frontend_theme p')
    ->join('INNER JOIN', 'frontend_header h', 'h.header_id = p.header_id')
    ->join('INNER JOIN', 'frontend_footer f', 'f.footer_id = p.footer_id')
    ->where(" p.theme_id = " . $themeID . " ")
    ->one();
?>
<?php $this->beginPage() ?>
<?php
//closure prevent it from access global scope
$run = function($__dyna_content__, $__dyna_page_id, $__dyna_header, $__dyna_frontend_page) {
    $error = 0;
    
    $__dyna_frontend_theme = FrontendTheme::findOne($__dyna_frontend_page->theme_id);
    
    $THEME_CSS = $__dyna_frontend_theme->theme_css ?? null;
    $THEME_JS =  $__dyna_frontend_theme->theme_js ?? null;
    
    try {
        //theme setup
        eval( $__dyna_frontend_theme->theme_setup ?? null );
    } catch (Throwable $t){
        $__dyna_content_error['content_id'] = 'THEME SETUP';
        $__dyna_content_error['content_details'] = (FrontendTheme::findOne($__dyna_frontend_page->theme_id))->theme_setup;
        
        echo $this->render('error', ['exception' => $t, 'content' => $__dyna_content_error, 'pageid' => $__dyna_page_id, 'error' => $error]);
        $error = 1;
    } finally {
        unset($__dyna_frontend_theme);
    }
    
    try {
        //page-setup
        eval( $__dyna_frontend_page->page_setup ?? null );
    } catch (Throwable $t){
        $__dyna_content_error['content_id'] = 'PAGE SETUP';
        $__dyna_content_error['content_details'] = $__dyna_frontend_page->page_setup;
        
        echo $this->render('error', ['exception' => $t, 'content' => $__dyna_content_error, 'pageid' => $__dyna_page_id, 'error' => $error]);
        $error = 1;
    } finally {
        unset($__dyna_frontend_page);
    }

    try {
        //header
        if($__dyna_header['header_is_php']) {
            eval($__dyna_header['header_content']);
        } else {
            echo (PortalEngine::getInstance())->load( $__dyna_header['header_content'], get_defined_vars() + [$THEME_CSS, $THEME_JS]);
        }
    } catch (Throwable $t){ 
        $__dyna_content_error['content_id'] = 'PAGE HEADER';
        $__dyna_content_error['content_details'] = $__dyna_header['header_content'];
        
        echo $this->render('error', ['exception' => $t, 'content' => $__dyna_content_error, 'pageid' => $__dyna_page_id, 'error' => $error]);
        $error = 1;
    }
     
    //opened body
    echo PHP_EOL . '<body>' . PHP_EOL;
    
    foreach ($__dyna_content__ as $__dyna_content_row__) {
        try {
            //non-php content
            if ($__dyna_content_row__['content_is_php'] == 0) {
                echo (PortalEngine::getInstance())->load($__dyna_content_row__['content_details'], get_defined_vars() + [$THEME_CSS, $THEME_JS]);
            } else {
                eval($__dyna_content_row__['content_details']);
            }
            
        } catch (Throwable $t) {
            echo $this->render('error', ['exception' => $t, 'content' => $__dyna_content_row__, 'pageid' => $__dyna_page_id, 'error' => $error]);
            $error = 1;
        }
    }
           
    try {
        //footer
        if($__dyna_header['footer_is_php']) {
            eval($__dyna_header['footer_content']);
        } else {
            echo PHP_EOL . (PortalEngine::getInstance())->load( $__dyna_header['footer_content'], get_defined_vars());
        }
        
    } catch (Throwable $t){
        $__dyna_content_error['content_id'] = $__dyna_header['footer_id'];
        $__dyna_content_error['content_details'] = $__dyna_header['footer_content'];
        echo $this->render('error', ['exception' => $t, 'content' => $__dyna_content_error, 'pageid' => $__dyna_page_id, 'error' => $error]);
        $error = 1;
    }
};

//run main content
$run($rows_content, $pageid, $rows_header, $defPageID);

//send 200 status
die(http_response_code(200));
?>

<?php $this->endPage() ?>


<?php 
/* show the content of routes */
else : 
?>

<?php $this->beginPage() ?>
<?php $this->beginBody() ?>

<div class="wrap">
    <?= $content?>
</div>

<?php $this->endBody() ?>
<?php $this->endPage() ?>
<!-- end checking for routes -->
<?php endif; ?>
</body>
</html>