#2 | Phalcon\Mvc\View->partial(main/sitemap, Array([links] => Array(478)))
/home/hamsongsg/domains/dieuhanhgiaothong-sgtcc.hochiminhcity.gov.vn/public_html/app/themes/hotmagazine/modules/Sitemap/Controller/IndexController.php (76) <?php
namespace Sitemap\Controller;
use Application\Mvc\Controller;
use Cms\Model\Language;
use Application\Mvc\Router\DefaultRouter;
class IndexController extends Controller
{
private $cacheViewKey;
private $models;
private $links = [];
public function initialize()
{
$this->cacheViewKey = HOST_HASH . md5('Sitemap\Model\Sitemap');
$this->models = [
[
'class' => 'Post',
'model' => 'Post',
'where' => "", // preview_inner='0' , etc.
'getLink' => function($model, $lang){
return $this->url->get([
'for' => 'post_detail',
'id' => $model->getId(),
'slug' => $model->getSlug()]);
}
]
];
}
public function indexAction()
{
$this->view->setRenderLevel( \Phalcon\Mvc\View::LEVEL_NO_RENDER );
$cache = $this->getDi()->get('cache');
$sitemap_xml = $cache->get($this->cacheViewKey);
$sitemap_xml = null;
if(!$sitemap_xml){
$langs = Language::find(['columns' => 'iso,primary']);
//link(s) for main-page(s)
foreach ($langs as $lang){
$suffix = !$lang['primary'] ? $lang['iso'] . '/' : '';
$this->links[] = [
'url' => 'http://' . $_SERVER['HTTP_HOST'] . '/' . $suffix,
'updated_at' => date('c',time()),
];
}
foreach ($this->models as $m) {
$class_name = '\\' . $m['class'] . '\Model\\' . $m['model'];
$where = !empty($m['where']) ? $m['where'] : '';
$rows = $class_name::find($where);
foreach ($langs as $lang) {
foreach ($rows as $row) {
$row::setCustomLang($lang->iso);
if($row->getSlug() !== 'index' && $row->getTitle()){
$this->links[] = [
'url' => 'http://' . $_SERVER['HTTP_HOST'] . $m['getLink']($row, $lang->iso),
'updated_at' => date('c', strtotime($row->getUpdatedAt())),
];
}
}
}
}
/*$sitemap_xml = '<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">';
foreach ($this->links as $key => $link) {
$sitemap_xml .= '<url><loc>' . $link['url'] . '</loc><lastmod>' . $link['updated_at'] . '</lastmod></url>';
}
$sitemap_xml .= '</urlset>';*/
$sitemap_xml = $this->view->partial('main/sitemap', ['links' => $this->links]);
//$cache->save($this->cacheViewKey, $sitemap_xml);
}
$this->response->setHeader("Content-Type", "application/xml");
$this->response->setContent($sitemap_xml);
}
public function langUrlCustom($params, $lang)
{
$routeName = $params['for'];
$routeName = DefaultRouter::ML_PREFIX . $routeName . '_' . $lang;
$params['for'] = $routeName;
return $this->url->get($params);
}
private function getRawXml()
{
$this->view->setRenderLevel( \Phalcon\Mvc\View::LEVEL_ACTION_VIEW );
$this->view->links = $this->links;
$this->view->start();
$this->view->setLayoutsDir('../views/');
$this->view->render('index', 'index');
$this->view->finish();
return $this->view->getContent();
}
} |
#5 | Phalcon\Dispatcher->dispatch()
/home/hamsongsg/domains/dieuhanhgiaothong-sgtcc.hochiminhcity.gov.vn/public_html/app/Bootstrap.php (367) <?php
namespace PhalartCMS;
use Application\Cache\Manager as CacheManager;
use Cms\Model\Configuration as CmsConfiguration;
use \PhalartCMS\Plugin\CheckPoint as CheckPointPlugin;
use \PhalartCMS\Plugin\Localization as LocalizationPlugin;
use \PhalartCMS\Plugin\AdminLocalization as AdminLocalizationPlugin;
use \PhalartCMS\Plugin\Acl as AclPlugin;
use \PhalartCMS\Plugin\MobileDetect as MobileDetectPlugin;
use PhalartCMS\Plugin\Shortcode;
use \PhalartCMS\Plugin\Title as TitlePlugin;
if (APPLICATION_ENV == 'development') {
date_default_timezone_set('Asia/Bangkok');
ini_set('display_errors', false);
error_reporting(E_ALL);
}
define('ROOT_APP', __DIR__);
class Bootstrap
{
public function run()
{
$di = new \Phalcon\DI\FactoryDefault();
$application = include_once APPLICATION_PATH . '/config/environment/' . APPLICATION_ENV . '.php';
$config_default = [
'base_path' => (isset($application['base_path'])) ? $application['base_path'] : null,
'base_uri' => (isset($application['base_uri'])) ? $application['base_uri'] : null,
'database' => (isset($application['database'])) ? $application['database'] : null,
'cache' => (isset($application['cache'])) ? $application['cache'] : null,
'memcache' => (isset($application['memcache'])) ? $application['memcache'] : null,
'memcached' => (isset($application['memcached'])) ? $application['memcached'] : null,
'assets' => (isset($application['assets'])) ? $application['assets'] : null,
];
$config = new \Phalcon\Config($config_default);
// Database
$db = new \Phalcon\Db\Adapter\Pdo\Mysql([
"host" => $config->database->host,
"username" => $config->database->username,
"password" => $config->database->password,
"dbname" => $config->database->dbname,
"charset" => $config->database->charset,
]);
$di->set('db', $db);
// Config
$result = $db->fetchOne(
"SELECT * FROM `cms_configuration` WHERE `key` = 'THEME'"
);
$theme = $result['value'];
define('THEME', $theme);
define('THEME_PATH', __DIR__ . '/themes/' . $theme);
require_once LIBRARY_PATH . '/modules/Cms/ConfigApp.php';
$config2 = \Cms\ConfigApp::get();
$config->merge($config2);
$di->set('config', $config);
// Registry
$registry = new \Phalcon\Registry();
$di->set('registry', $registry);
// Loader
$loader = new \Phalcon\Loader();
$loader->registerNamespaces($config->loader->namespaces->toArray());
$loader->registerDirs([LIBRARY_PATH . "/plugins/"]);
$loader->registerFiles([APPLICATION_PATH . '/../vendor/autoload.php']);
$loader->register();
// Get Option setting
$di->set('options', new \PhalartCMS\Plugin\Options());
// Get Option setting
// View
$this->initView($di);
$this->initSimpleView($di);
// URL
$url = new \Phalcon\Mvc\Url();
$url->setBasePath($config->base_path);
$url->setBaseUri($config->base_path);
$di->set('url', $url);
// Cache
$this->initCache($di);
// CMS
$cmsModel = new CmsConfiguration();
$registry->cms = $cmsModel->getConfig();
// Application
$application = new \Phalcon\Mvc\Application();
$application->registerModules($config->modules->toArray());
// Events Manager, Dispatcher
$this->initEventManager($di);
// Session
$session = new \Phalcon\Session\Adapter\Files();
$session->start();
$di->set('session', $session);
$acl = new \Application\Acl\DefaultAcl();
$di->set('acl', $acl);
// JS Assets
$this->initAssetsManager($di);
// Flash helper
$flash = new \Phalcon\Flash\Session([
'error' => 'alert alert-danger',
'success' => 'alert alert-success',
'notice' => 'alert alert-info',
'warning' => 'alert alert-warning',
]);
$flash->setAutoescape(false);
$di->set('flash', $flash);
$di->set('helper', new \Application\Mvc\Helper());
// Routing
$this->initRouting($application, $di);
$application->setDI($di);
$di->setShared('shortcode', new Shortcode($application));
// Main dispatching process
$response = $this->dispatch($di);
$response->send();
}
private function initRouting($application, $di)
{
$router = new \Application\Mvc\Router\DefaultRouter();
$router->setDi($di);
foreach ($application->getModules() as $module) {
$routesClassName = str_replace('Module', 'Routes', $module['className']);
if (class_exists($routesClassName)) {
$routesClass = new $routesClassName();
$router = $routesClass->init($router);
}
$initClassName = str_replace('Module', 'Init', $module['className']);
if (class_exists($initClassName)) {
new $initClassName();
}
}
$di->set('router', $router);
}
private function initAssetsManager($di)
{
$config = $di->get('config');
$assetsManager = new \Application\Assets\Manager();
$js_collection = $assetsManager->collection('js')
->setLocal(true)
->addFilter(new \Phalcon\Assets\Filters\Jsmin())
->setTargetPath(ROOT . '/assets/js.js')
->setTargetUri('assets/js.js')
->join(true);
if ($config->assets->js) {
foreach ($config->assets->js as $js) {
$js_collection->addJs(ROOT . '/' . $js);
}
}
// Admin JS Assets
$assetsManager->collection('modules-admin-js')
->setLocal(true)
->addFilter(new \Phalcon\Assets\Filters\Jsmin())
->setTargetPath(ROOT . '/assets/modules-admin.js')
->setTargetUri('assets/modules-admin.js')
->join(true);
// Admin LESS Assets
$assetsManager->collection('modules-admin-less')
->setLocal(true)
->addFilter(new \Application\Assets\Filter\Less())
->setTargetPath(ROOT . '/assets/modules-admin.less')
->setTargetUri('assets/modules-admin.less')
->join(true)
->addCss(APPLICATION_PATH . '/modules/Admin/assets/admin.less');
$di->set('assets', $assetsManager);
}
private function initEventManager($di)
{
$eventsManager = new \Phalcon\Events\Manager();
$dispatcher = new \Phalcon\Mvc\Dispatcher();
$eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) use ($di) {
new CheckPointPlugin($di->get('request'));
new LocalizationPlugin($dispatcher);
new AdminLocalizationPlugin($di->get('config'));
new AclPlugin($di->get('acl'), $dispatcher, $di->get('view'));
new MobileDetectPlugin($di->get('session'), $di->get('view'), $di->get('request'));
});
$eventsManager->attach("dispatch:afterDispatchLoop", function ($event, $dispatcher) use ($di) {
new \Seo\Plugin\SeoManager($dispatcher, $di->get('request'), $di->get('router'), $di->get('view'));
new TitlePlugin($di);
});
// Profiler
$registry = $di->get('registry');
if ($registry->cms['PROFILER']) {
$profiler = new \Phalcon\Db\Profiler();
$di->set('profiler', $profiler);
$eventsManager->attach('db', function ($event, $db) use ($profiler) {
if ($event->getType() == 'beforeQuery') {
$profiler->startProfile($db->getSQLStatement());
}
if ($event->getType() == 'afterQuery') {
$profiler->stopProfile();
}
});
}
$db = $di->get('db');
$db->setEventsManager($eventsManager);
$dispatcher->setEventsManager($eventsManager);
$di->set('dispatcher', $dispatcher);
}
private function initView($di)
{
$view = new \Phalcon\Mvc\View();
$theme = THEME;
define('MAIN_VIEW_PATH', ROOT_APP . "/themes/{$theme}/views/");
/*$view->setViewsDir(MAIN_VIEW_PATH);
$view->setPartialsDir(MAIN_VIEW_PATH . "/partials/");
$view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_ACTION_VIEW);*/
// Volt
$volt = new \Application\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions([
'compiledPath' => APPLICATION_PATH . '/../data/cache/volt/',
'compileAlways' => !(APPLICATION_ENV == 'development'),
]);
$volt->initCompiler();
$phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
$viewEngines = [
".volt" => $volt,
".phtml" => $phtml,
];
$view->registerEngines($viewEngines);
$ajax = $di->get('request')->getQuery('_ajax');
if ($ajax) {
$view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT);
}
$di->set('view', $view);
return $view;
}
private function initSimpleView($di)
{
$view = new \Phalcon\Mvc\View\Simple();
// Volt
$volt = new \Application\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(['compiledPath' => APPLICATION_PATH . '/../data/cache/volt/']);
$volt->initCompiler();
$phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
$viewEngines = [
".volt" => $volt,
".phtml" => $phtml,
];
$view->registerEngines($viewEngines);
$di->set('simpleView', $view);
return $view;
}
private function initCache($di)
{
$config = $di->get('config');
$cacheFrontend = new \Phalcon\Cache\Frontend\Data([
"lifetime" => 60,
"prefix" => HOST_HASH,
]);
$cache = null;
switch ($config->cache) {
case 'file':
$cache = new \Phalcon\Cache\Backend\File($cacheFrontend, [
"cacheDir" => APPLICATION_PATH . "/../data/cache/backend/"
]);
break;
case 'memcache':
$cache = new \Phalcon\Cache\Backend\Memcache(
$cacheFrontend, [
"host" => $config->memcache->host,
"port" => $config->memcache->port,
]);
break;
case 'memcached':
$cache = new \Phalcon\Cache\Backend\Libmemcached(
$cacheFrontend, [
"host" => $config->memcached->host,
"port" => $config->memcached->port,
]);
break;
}
$di->set('cache', $cache, true);
$di->set('modelsCache', $cache, true);
// var_dump($cache);die;
\Application\Widget\Proxy::$cache = $cache; // Modules Widget System
$modelsMetadata = new \Phalcon\Mvc\Model\Metadata\Memory();
$di->set('modelsMetadata', $modelsMetadata);
$di->set('cacheManager', new CacheManager());
}
private function dispatch($di)
{
$router = $di['router'];
$router->handle();
$view = $di['view'];
$dispatcher = $di['dispatcher'];
$response = $di['response'];
$dispatcher->setModuleName($router->getModuleName());
$dispatcher->setControllerName($router->getControllerName());
$dispatcher->setActionName($router->getActionName());
$dispatcher->setParams($router->getParams());
$moduleName = \Application\Utils\ModuleName::camelize($router->getModuleName());
$ModuleClassName = $moduleName . '\Module';
if (class_exists($ModuleClassName)) {
$module = new $ModuleClassName;
$module->registerAutoloaders();
$module->registerServices($di);
}
$view->start();
$registry = $di['registry'];
if ($registry->cms['DEBUG_MODE']) {
$debug = new \Phalcon\Debug();
$debug->listen();
$dispatcher->dispatch();
} else {
try {
$dispatcher->dispatch();
} catch (\Phalcon\Exception $e) {
// Errors catching
$view->setViewsDir(__DIR__ . '/modules/Index/views/');
$view->setPartialsDir('');
$view->e = $e;
if ($e instanceof \Phalcon\Mvc\Dispatcher\Exception) {
$response->setStatusCode(404, 'Not Found');
$view->partial('error/error404');
} else {
$response->setStatusCode(503, 'Service Unavailable');
$view->partial('error/error503');
}
return $response;
}
}
$view->render(
$dispatcher->getControllerName(),
$dispatcher->getActionName(),
$dispatcher->getParams()
);
$view->finish();
// AJAX
$request = $di['request'];
$_ajax = $request->getQuery('_ajax');
if ($_ajax) {
$contents = $view->getContent();
$return = new \stdClass();
$return->html = $contents;
$return->title = $di->get('helper')->title()->get();
$return->success = true;
if ($view->bodyClass) {
$return->bodyClass = $view->bodyClass;
}
$headers = $response->getHeaders()->toArray();
if (isset($headers[404]) || isset($headers[503])) {
$return->success = false;
}
$response->setContentType('application/json', 'UTF-8');
$response->setContent(json_encode($return));
} else {
$response->setContent($view->getContent());
}
return $response;
}
}
|
#6 | PhalartCMS\Bootstrap->dispatch(Object(Phalcon\Di\FactoryDefault))
/home/hamsongsg/domains/dieuhanhgiaothong-sgtcc.hochiminhcity.gov.vn/public_html/app/Bootstrap.php (135) <?php
namespace PhalartCMS;
use Application\Cache\Manager as CacheManager;
use Cms\Model\Configuration as CmsConfiguration;
use \PhalartCMS\Plugin\CheckPoint as CheckPointPlugin;
use \PhalartCMS\Plugin\Localization as LocalizationPlugin;
use \PhalartCMS\Plugin\AdminLocalization as AdminLocalizationPlugin;
use \PhalartCMS\Plugin\Acl as AclPlugin;
use \PhalartCMS\Plugin\MobileDetect as MobileDetectPlugin;
use PhalartCMS\Plugin\Shortcode;
use \PhalartCMS\Plugin\Title as TitlePlugin;
if (APPLICATION_ENV == 'development') {
date_default_timezone_set('Asia/Bangkok');
ini_set('display_errors', false);
error_reporting(E_ALL);
}
define('ROOT_APP', __DIR__);
class Bootstrap
{
public function run()
{
$di = new \Phalcon\DI\FactoryDefault();
$application = include_once APPLICATION_PATH . '/config/environment/' . APPLICATION_ENV . '.php';
$config_default = [
'base_path' => (isset($application['base_path'])) ? $application['base_path'] : null,
'base_uri' => (isset($application['base_uri'])) ? $application['base_uri'] : null,
'database' => (isset($application['database'])) ? $application['database'] : null,
'cache' => (isset($application['cache'])) ? $application['cache'] : null,
'memcache' => (isset($application['memcache'])) ? $application['memcache'] : null,
'memcached' => (isset($application['memcached'])) ? $application['memcached'] : null,
'assets' => (isset($application['assets'])) ? $application['assets'] : null,
];
$config = new \Phalcon\Config($config_default);
// Database
$db = new \Phalcon\Db\Adapter\Pdo\Mysql([
"host" => $config->database->host,
"username" => $config->database->username,
"password" => $config->database->password,
"dbname" => $config->database->dbname,
"charset" => $config->database->charset,
]);
$di->set('db', $db);
// Config
$result = $db->fetchOne(
"SELECT * FROM `cms_configuration` WHERE `key` = 'THEME'"
);
$theme = $result['value'];
define('THEME', $theme);
define('THEME_PATH', __DIR__ . '/themes/' . $theme);
require_once LIBRARY_PATH . '/modules/Cms/ConfigApp.php';
$config2 = \Cms\ConfigApp::get();
$config->merge($config2);
$di->set('config', $config);
// Registry
$registry = new \Phalcon\Registry();
$di->set('registry', $registry);
// Loader
$loader = new \Phalcon\Loader();
$loader->registerNamespaces($config->loader->namespaces->toArray());
$loader->registerDirs([LIBRARY_PATH . "/plugins/"]);
$loader->registerFiles([APPLICATION_PATH . '/../vendor/autoload.php']);
$loader->register();
// Get Option setting
$di->set('options', new \PhalartCMS\Plugin\Options());
// Get Option setting
// View
$this->initView($di);
$this->initSimpleView($di);
// URL
$url = new \Phalcon\Mvc\Url();
$url->setBasePath($config->base_path);
$url->setBaseUri($config->base_path);
$di->set('url', $url);
// Cache
$this->initCache($di);
// CMS
$cmsModel = new CmsConfiguration();
$registry->cms = $cmsModel->getConfig();
// Application
$application = new \Phalcon\Mvc\Application();
$application->registerModules($config->modules->toArray());
// Events Manager, Dispatcher
$this->initEventManager($di);
// Session
$session = new \Phalcon\Session\Adapter\Files();
$session->start();
$di->set('session', $session);
$acl = new \Application\Acl\DefaultAcl();
$di->set('acl', $acl);
// JS Assets
$this->initAssetsManager($di);
// Flash helper
$flash = new \Phalcon\Flash\Session([
'error' => 'alert alert-danger',
'success' => 'alert alert-success',
'notice' => 'alert alert-info',
'warning' => 'alert alert-warning',
]);
$flash->setAutoescape(false);
$di->set('flash', $flash);
$di->set('helper', new \Application\Mvc\Helper());
// Routing
$this->initRouting($application, $di);
$application->setDI($di);
$di->setShared('shortcode', new Shortcode($application));
// Main dispatching process
$response = $this->dispatch($di);
$response->send();
}
private function initRouting($application, $di)
{
$router = new \Application\Mvc\Router\DefaultRouter();
$router->setDi($di);
foreach ($application->getModules() as $module) {
$routesClassName = str_replace('Module', 'Routes', $module['className']);
if (class_exists($routesClassName)) {
$routesClass = new $routesClassName();
$router = $routesClass->init($router);
}
$initClassName = str_replace('Module', 'Init', $module['className']);
if (class_exists($initClassName)) {
new $initClassName();
}
}
$di->set('router', $router);
}
private function initAssetsManager($di)
{
$config = $di->get('config');
$assetsManager = new \Application\Assets\Manager();
$js_collection = $assetsManager->collection('js')
->setLocal(true)
->addFilter(new \Phalcon\Assets\Filters\Jsmin())
->setTargetPath(ROOT . '/assets/js.js')
->setTargetUri('assets/js.js')
->join(true);
if ($config->assets->js) {
foreach ($config->assets->js as $js) {
$js_collection->addJs(ROOT . '/' . $js);
}
}
// Admin JS Assets
$assetsManager->collection('modules-admin-js')
->setLocal(true)
->addFilter(new \Phalcon\Assets\Filters\Jsmin())
->setTargetPath(ROOT . '/assets/modules-admin.js')
->setTargetUri('assets/modules-admin.js')
->join(true);
// Admin LESS Assets
$assetsManager->collection('modules-admin-less')
->setLocal(true)
->addFilter(new \Application\Assets\Filter\Less())
->setTargetPath(ROOT . '/assets/modules-admin.less')
->setTargetUri('assets/modules-admin.less')
->join(true)
->addCss(APPLICATION_PATH . '/modules/Admin/assets/admin.less');
$di->set('assets', $assetsManager);
}
private function initEventManager($di)
{
$eventsManager = new \Phalcon\Events\Manager();
$dispatcher = new \Phalcon\Mvc\Dispatcher();
$eventsManager->attach("dispatch:beforeDispatchLoop", function ($event, $dispatcher) use ($di) {
new CheckPointPlugin($di->get('request'));
new LocalizationPlugin($dispatcher);
new AdminLocalizationPlugin($di->get('config'));
new AclPlugin($di->get('acl'), $dispatcher, $di->get('view'));
new MobileDetectPlugin($di->get('session'), $di->get('view'), $di->get('request'));
});
$eventsManager->attach("dispatch:afterDispatchLoop", function ($event, $dispatcher) use ($di) {
new \Seo\Plugin\SeoManager($dispatcher, $di->get('request'), $di->get('router'), $di->get('view'));
new TitlePlugin($di);
});
// Profiler
$registry = $di->get('registry');
if ($registry->cms['PROFILER']) {
$profiler = new \Phalcon\Db\Profiler();
$di->set('profiler', $profiler);
$eventsManager->attach('db', function ($event, $db) use ($profiler) {
if ($event->getType() == 'beforeQuery') {
$profiler->startProfile($db->getSQLStatement());
}
if ($event->getType() == 'afterQuery') {
$profiler->stopProfile();
}
});
}
$db = $di->get('db');
$db->setEventsManager($eventsManager);
$dispatcher->setEventsManager($eventsManager);
$di->set('dispatcher', $dispatcher);
}
private function initView($di)
{
$view = new \Phalcon\Mvc\View();
$theme = THEME;
define('MAIN_VIEW_PATH', ROOT_APP . "/themes/{$theme}/views/");
/*$view->setViewsDir(MAIN_VIEW_PATH);
$view->setPartialsDir(MAIN_VIEW_PATH . "/partials/");
$view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_ACTION_VIEW);*/
// Volt
$volt = new \Application\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions([
'compiledPath' => APPLICATION_PATH . '/../data/cache/volt/',
'compileAlways' => !(APPLICATION_ENV == 'development'),
]);
$volt->initCompiler();
$phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
$viewEngines = [
".volt" => $volt,
".phtml" => $phtml,
];
$view->registerEngines($viewEngines);
$ajax = $di->get('request')->getQuery('_ajax');
if ($ajax) {
$view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_LAYOUT);
}
$di->set('view', $view);
return $view;
}
private function initSimpleView($di)
{
$view = new \Phalcon\Mvc\View\Simple();
// Volt
$volt = new \Application\Mvc\View\Engine\Volt($view, $di);
$volt->setOptions(['compiledPath' => APPLICATION_PATH . '/../data/cache/volt/']);
$volt->initCompiler();
$phtml = new \Phalcon\Mvc\View\Engine\Php($view, $di);
$viewEngines = [
".volt" => $volt,
".phtml" => $phtml,
];
$view->registerEngines($viewEngines);
$di->set('simpleView', $view);
return $view;
}
private function initCache($di)
{
$config = $di->get('config');
$cacheFrontend = new \Phalcon\Cache\Frontend\Data([
"lifetime" => 60,
"prefix" => HOST_HASH,
]);
$cache = null;
switch ($config->cache) {
case 'file':
$cache = new \Phalcon\Cache\Backend\File($cacheFrontend, [
"cacheDir" => APPLICATION_PATH . "/../data/cache/backend/"
]);
break;
case 'memcache':
$cache = new \Phalcon\Cache\Backend\Memcache(
$cacheFrontend, [
"host" => $config->memcache->host,
"port" => $config->memcache->port,
]);
break;
case 'memcached':
$cache = new \Phalcon\Cache\Backend\Libmemcached(
$cacheFrontend, [
"host" => $config->memcached->host,
"port" => $config->memcached->port,
]);
break;
}
$di->set('cache', $cache, true);
$di->set('modelsCache', $cache, true);
// var_dump($cache);die;
\Application\Widget\Proxy::$cache = $cache; // Modules Widget System
$modelsMetadata = new \Phalcon\Mvc\Model\Metadata\Memory();
$di->set('modelsMetadata', $modelsMetadata);
$di->set('cacheManager', new CacheManager());
}
private function dispatch($di)
{
$router = $di['router'];
$router->handle();
$view = $di['view'];
$dispatcher = $di['dispatcher'];
$response = $di['response'];
$dispatcher->setModuleName($router->getModuleName());
$dispatcher->setControllerName($router->getControllerName());
$dispatcher->setActionName($router->getActionName());
$dispatcher->setParams($router->getParams());
$moduleName = \Application\Utils\ModuleName::camelize($router->getModuleName());
$ModuleClassName = $moduleName . '\Module';
if (class_exists($ModuleClassName)) {
$module = new $ModuleClassName;
$module->registerAutoloaders();
$module->registerServices($di);
}
$view->start();
$registry = $di['registry'];
if ($registry->cms['DEBUG_MODE']) {
$debug = new \Phalcon\Debug();
$debug->listen();
$dispatcher->dispatch();
} else {
try {
$dispatcher->dispatch();
} catch (\Phalcon\Exception $e) {
// Errors catching
$view->setViewsDir(__DIR__ . '/modules/Index/views/');
$view->setPartialsDir('');
$view->e = $e;
if ($e instanceof \Phalcon\Mvc\Dispatcher\Exception) {
$response->setStatusCode(404, 'Not Found');
$view->partial('error/error404');
} else {
$response->setStatusCode(503, 'Service Unavailable');
$view->partial('error/error503');
}
return $response;
}
}
$view->render(
$dispatcher->getControllerName(),
$dispatcher->getActionName(),
$dispatcher->getParams()
);
$view->finish();
// AJAX
$request = $di['request'];
$_ajax = $request->getQuery('_ajax');
if ($_ajax) {
$contents = $view->getContent();
$return = new \stdClass();
$return->html = $contents;
$return->title = $di->get('helper')->title()->get();
$return->success = true;
if ($view->bodyClass) {
$return->bodyClass = $view->bodyClass;
}
$headers = $response->getHeaders()->toArray();
if (isset($headers[404]) || isset($headers[503])) {
$return->success = false;
}
$response->setContentType('application/json', 'UTF-8');
$response->setContent(json_encode($return));
} else {
$response->setContent($view->getContent());
}
return $response;
}
}
|
#7 | PhalartCMS\Bootstrap->run()
/home/hamsongsg/domains/dieuhanhgiaothong-sgtcc.hochiminhcity.gov.vn/public_html/public/index.php (40) <?php
/**
* @copyright Copyright (c) 2018 Phalart
* @author Nhan Phong <nhanphong@vinadesign.vn>
* User: nhanphong
* Date: 6/4/18
* Time: 10:51 AM
*/
chdir(dirname(__DIR__));
define('ROOT', __DIR__);
define('HOST_HASH', substr(md5($_SERVER['HTTP_HOST']), 0, 12));
if (isset($_SERVER['APPLICATION_ENV'])) {
$applicationEnv = ($_SERVER['APPLICATION_ENV'] ? $_SERVER['APPLICATION_ENV'] : 'production');
} else {
$applicationEnv = (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production');
}
define('APPLICATION_ENV', $applicationEnv);
define('BASE_URL', (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]");
$actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$parts = parse_url($actual_link);
$prefix = substr($parts['path'], 1);
$part = explode('/', $prefix);
$admin = 'admin';
$theme = 'blog';
//define('THEME', $theme);
if ($part[0] != $admin) {
define('IS_ADMIN', false);
define('APPLICATION_PATH', __DIR__ . '/../app');
require_once APPLICATION_PATH . '/Bootstrap.php';
} else {
define('IS_ADMIN', true);
define('APPLICATION_PATH', __DIR__ . '/../admin');
define('ADMINISTRATOR_PATH', __DIR__ . '/../admin');
require_once ADMINISTRATOR_PATH . '/Bootstrap.php';
}
define('LIBRARY_PATH', __DIR__ . '/../library');
$bootstrap = new PhalartCMS\Bootstrap();
$bootstrap->run(); |