| #2 | Phalcon\Mvc\Application->handle(/css/login.css)
/var/www/vhosts/intranet.viajesatlantis.com/httpdocs/apps/Bootstrap.php (410) <?php
class Bootstrap
{
public static function run()
{
$debug = new \Phalcon\Debug();
$debug->listen();
$config = new \Phalcon\Config\Adapter\Ini(__DIR__ . "/config/".APPLICATION_ENV.".ini");
Phalcon\Tag::setAutoescape(false);
// Global configurations
date_default_timezone_set('Europe/Madrid');
header("Access-Control-Allow-Origin: https://saas.nube-saas.com");
header("Access-Control-Allow-Credentials: true");
error_reporting(E_ALL); ini_set('display_errors', true);
// DI Container
$di = new Phalcon\DI\FactoryDefault();
// Loader, registering namespaces
$loader = new Phalcon\Loader();
$loader->registerNamespaces(array(
'Nube\Module' => __DIR__ . '/library/Nube/Module'
));
$loader->register();
$di->set('nimodules', function() use ($config){
return new \Nube\Module\Loader(__DIR__, $config->modules->load->toArray());
});
$loader->registerNamespaces(array(
'Nube\Core' => __DIR__ . '/core/',
'Nube\Core\Controllers' => __DIR__ . '/core/controllers/',
'Nube\Core\Models' => __DIR__ . '/core/models/',
'Nube\Backend' => __DIR__ . '/backend/',
'Nube\Frontend' => __DIR__ . '/frontend/',
'Nube\Frontend\Forms' => __DIR__ . '/frontend/forms/',
'Nube\Publicmod' => __DIR__ . '/publicmod/',
'Phalcon' => __DIR__ . '/library/Phalcon/',
'Nube\Forms' => __DIR__ . '/library/Nube/Forms/',
'Nube\Mvc' => __DIR__ . '/library/Nube/Mvc/',
'Nube\Translate' => __DIR__ . '/library/Nube/Translate/',
'Nube\Utils' => __DIR__ . '/library/Nube/Utils/',
'Esendex' => __DIR__ . '/library/Esendex',
'Phpmailer' => __DIR__ . '/library/Phpmailer'
) + $di->get('nimodules')->getNamespaces(), true);
$loader->registerClasses(array(
"PHPExcel" => __DIR__ . '/library/Prefixed/PHPExcel.php',
"FPDI" => __DIR__ . '/library/Prefixed/fpdi/fpdi.php',
"FPDF" => __DIR__ . '/library/Prefixed/fpdf/fpdf.php',
"PDFMerger" => __DIR__ . '/library/Prefixed/PDFMerger.php',
"RedsysAPI" => __DIR__ . '/library/Prefixed/Redsys/apiRedsys.php'
), true);
if (substr(\Phalcon\Version::get(),0,1) >= 2){
$loader->registerPrefixes(array(
'PHPExcel' => __DIR__ . '/library/Prefixed/PHPExcel/'
), true);
}
else{
$loader->registerPrefixes(array(
'PHPExcel_' => __DIR__ . '/library/Prefixed/PHPExcel/'
), true);
}
// $loader->registerNamespaces($loader->getNamespaces () + $di->get('nimodules')->getNamespaces());
$loader->register();
$di->set('globalconfig', $config->global);
// View
// $view = new Phalcon\Mvc\View();
// $view->setLayoutsDir($config->view->layoutsDir); // path with layouts
// $view->setPartialsDir($config->view->partialsDir); // relative path with partials
// $view->setLayout('main'); // default layout
// $view->registerEngines(array(
// ".phtml" => function($view, $di) {
// $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
// $volt->setOptions(array('compiledPath' => __DIR__ . '/cache/volt/'));
// return $volt;
// }
// ));
// $di->set('view', $view);
//
// Database
$di->set('db', function() use ($config) {
$eventsManager = new Phalcon\Events\Manager();
if ($config->global->debug_mode){
$logger = new Phalcon\Logger\Adapter\File(__DIR__."/logs/debug.log");
//Listen all the database events
$eventsManager->attach('db', function($event, $connection) use ($logger) {
if ($event->getType() == 'beforeQuery') {
$logger->log($connection->getSQLStatement(), Phalcon\Logger::INFO);
}
});
}
$connection = new Phalcon\Db\Adapter\Pdo\Mysql(array(
'host' => $config->database->host,
'username' => $config->database->username,
'password' => $config->database->password,
'dbname' => $config->database->dbname
// 'charset' => $config->database->charset,
));
//Assign the eventsManager to the db adapter instance
$connection->setEventsManager($eventsManager);
return $connection;
});
// // Cache
// $cache = new Phalcon\Cache\Backend\Memcache(
// new Phalcon\Cache\Frontend\Data(array(
// "lifetime" => 60,
// "prefix" => 'phalcon-modular-app',
// )), array(
// "host" => "localhost",
// "port" => "11211"
// ));
// $di->set('cache', $cache);
// $di->set('viewCache', $cache); // optional
// $di->set('modelsCache', $cache); //
// ModelsMetadata
// if (APPLICATION_ENV == 'dev') {
$modelsMetadata = new Phalcon\Mvc\Model\Metadata\Memory();
// } else {
// $modelsMetadata = new Phalcon\Mvc\Model\MetaData\Apc(array(
// "lifetime" => 3600,
// "prefix" => "phalcon-metadata"
// ));
// }
$di->set('modelsMetadata', $modelsMetadata);
$application = new Phalcon\Mvc\Application();
/**
* Register application modules
*/
$application->registerModules(array(
'core' => array(
'className' => 'Nube\Core\Module',
'path' => __DIR__ . '/core/Module.php'
),
'backend' => array(
'className' => 'Nube\Backend\Module',
'path' => __DIR__ . '/backend/Module.php'
),
'frontend' => array(
'className' => 'Nube\Frontend\Module',
'path' => __DIR__ . '/frontend/Module.php'
),
'publicmod' => array(
'className' => 'Nube\Publicmod\Module',
'path' => __DIR__ . '/publicmod/Module.php'
)
) + $di->get('nimodules')->getModulesReg());
// Routing
$router = new Phalcon\Mvc\Router();
$defaultModule = (isset($config->modules->default)? $config->modules->default->module : 'frontend');
$router->setDefaultModule($defaultModule);
$router->setDefaultController(isset($config->modules->default->controller)? $config->modules->default->controller : 'index');
$router->setDefaultAction(isset($config->modules->default->action)? $config->modules->default->action : 'index');
$defaultNamespace = $di->get('nimodules')->getNamespace($defaultModule);
if ($defaultNamespace === false){
$defaultNamespace = 'Nube\\'.mb_convert_case($defaultModule, MB_CASE_TITLE);
}
$routesClassName = $defaultNamespace.'\Routes';
if (class_exists($routesClassName)) {
$routesClass = new $routesClassName();
$router = $routesClass->add($router, $config);
}
foreach ($application->getModules() as $name => $module) {
if ($name !== $defaultModule){
$routesClassName = preg_replace('/Module$/', 'Routes', $module['className']);
if (class_exists($routesClassName)) {
$routesClass = new $routesClassName();
$router = $routesClass->add($router, $config);
}
}
}
$di->set('router', $router);
// URL component
$di->set('url', function() use ($config) {
$url = new Nube\Mvc\Url();
$url->setBaseUri($config->path->uri);
return $url;
}, true);
$di->set('getProtocol', function () {
return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
});
// Translator
$di->set('translator', function() use($di){
//Ask browser what is the best language
$language = $di->get('request')->getBestLanguage();
//Check if we have a translation file for that lang
if (!file_exists(__DIR__ . '/languages/'.$language)) {
$language = 'es_ES';
}
$translate = new Nube\Translate\Adapter\Gettext(array(
'locale' => $language,
'file' => 'messages',
'directory' => __DIR__ . '/languages/'
));
$domains = $di->get('nimodules')->getTranslations();
foreach ($domains as $domain => $folder){
$translate->addDomain(array(
'locale' => $language,
'file' => $domain,
'directory' => $folder
));
}
return $translate;
});
// Permissions
$di->setShared('acl', function() use($di) {
if ($di->get('session')->has('auth')){
$user = unserialize($di->get('session')->get('user'));
if (!file_exists(__DIR__ . "/cache/acl.data.".$user->id)) {
$acl = new \Phalcon\Acl\Adapter\Memory();
$acl->setDefaultAction(\Phalcon\Acl::DENY);
// $role = new \Phalcon\Acl\Role($user->id);
$acl->addRole('r'.$user->id);
// $roles = \Nube\Core\Models\ACLRoles::find();
// foreach($roles as $role){
// if ($role->countparentObj() == 0){
// $acl->addRole($role->name);
// }
// else{
// $acl->addRole($role->name, $role->parent->name);
// }
// }
$resources = \Nube\Core\Models\ACLResources::find();
foreach ($resources as $resource){
$customersResource = new \Phalcon\Acl\Resource($resource->controller);
$acl->addResource($customersResource, $resource->action);
}
$permissions = \Nube\Core\Models\ACLPermissions::find(array(
"conditions" => "id_usuario = ?1",
"bind" => array(1 => $user->id)));
foreach($permissions as $permission){
$acl->allow('r'.$user->id, @$permission->resourceObj->controller, @$permission->resourceObj->action);
}
// Store serialized list into plain file
// file_put_contents(__DIR__ . "/cache/acl.data.".$user->id, serialize($acl));
} else {
//Restore acl object from serialized file
$acl = unserialize(file_get_contents(__DIR__ . "/cache/acl.data.".$user->id));
}
return $acl;
}
return null;
});
// Session
$di->setShared('session', function() use ($config) {
ini_set("session.cookie_lifetime", 0);
ini_set("session.gc_maxlifetime", ($config->global->session_timeout*24));
ini_set("session.gc_probability", 1);
ini_set("session.gc_divisor", 1000);
ini_set("session.save_path", realpath($config->global->frontDir.'/../apps/tmp/'));
if (isset($config->global->session_cookiedomain)) {
ini_set('session.cookie_domain', $config->global->session_cookiedomain);
}
if (isset($config->global->session_cookiepath)) {
ini_set('session.cookie_path', $config->global->session_cookiepath);
}
//session_set_cookie_params(0);
$session = new Phalcon\Session\Adapter\Files();
$session->start();
return $session;
});
// Flash messenger
$di->set('flash', function() {
$flash = new Phalcon\Flash\Session(array(
'error' => 'alert alert-error',
'success' => 'alert alert-success',
'notice' => 'alert alert-info',
));
return $flash;
});
// Assets
$assetsManager = new Phalcon\Assets\Manager();
$assetsManager->collection('js')
->addJs('js/jquery-2.0.3.min.js')
->addJs('js/jquery.custom-select.js')
->addJs('js/jquery.custom-checkbox.js')
->addJs('js/jquery.custom-radio.js')
->addJs('js/knockout-3.2.0.js')
->addJs('js/main.js')
->addJs('js/jquery-ui.js');
if (file_exists($config->global->frontDir.'/js/languages/'.$di->get('translator')->getLanguage().'js')){
$assetsManager->collection('js')->addJs('js/languages/'.$di->get('translator')->getLanguage().'.js');
}
else{
$assetsManager->collection('js')->addJs('js/languages/es_ES.js');
}
// ->setPrefix($config->path->uri);
$assetsManager->collection('jsltie9');
$assetsManager->collection('jsMin')
// ->addFilter(new Phalcon\Assets\Filters\Jsmin())
// ->setTargetPath('public/js/output.js')
// ->setTargetUri('js/output.js?t='.microtime(true))
// ->setPrefix($config->path->uri)
->setLocal(true)
->join(true);
$assetsManager->collection('css')->addCss('css/jquery-ui.css');//->addCss('css/reset.css')
// ->setPrefix($config->path->uri);
$assetsManager->collection('css')->addCss('css/ni-template/style.css?ver=2.0.8');
$assetsManager->collection('cssMin')
// ->addFilter(new Phalcon\Assets\Filters\Cssmin())
// ->setTargetPath('public/css/output.css')
// ->setTargetUri('css/output.css?t='.microtime(true))
// ->setPrefix($config->path->uri)
->setLocal(true)
->join(true);
$assetsManager->collection('csslteie9');
$di->set('assets', $assetsManager);
$dispatcher = new \Phalcon\Mvc\Dispatcher();
$eventsManager = new \Phalcon\Events\Manager();
$eventsManager->attach("dispatch", function($event, $dispatcher, $exception) use ($di) {
if ($event->getType() == 'beforeDispatchLoop') {
$dispatcher->setActionName(\Phalcon\Text::camelize($dispatcher->getActionName()));
return false;
}
if ($event->getType() == 'beforeNotFoundAction') {
$dispatcher->forward(array(
'module' => 'frontend',
'controller' => 'error',
'action' => 'notFound'
));
return false;
}
if ($event->getType() == 'beforeException') {
switch ($exception->getCode()) {
case \Phalcon\Dispatcher::EXCEPTION_HANDLER_NOT_FOUND:
case \Phalcon\Dispatcher::EXCEPTION_ACTION_NOT_FOUND:
$dispatcher->forward(array(
'module' => 'frontend',
'controller' => 'error',
'action' => 'notFound'
));
return false;
}
}
});
//Bind the EventsManager to the dispatcher
$dispatcher->setEventsManager($eventsManager);
$di->setShared('dispatcher', $dispatcher);
$di->set('debug', function(){
$debugger = new \Nube\Utils\Debug();
return $debugger;
});
// Handle the request
$application->setDI($di);
// The core of all the work of the controller occurs when handle() is invoked:
echo $application->handle($di->get('url')->resolve())->getContent();
}
}
|