| Current Path : /var/www/html/dvs/frontend/views/layouts/ |
| 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>