/** * Register specific services for the module * * @package las * @version 1.0 * * @param object $di dependency Injector * * @return void */ public function registerServices($di) { //Registering a dispatcher $di->set('dispatcher', function () { //Create/Get an EventManager $eventsManager = new \Phalcon\Events\Manager(); //Attach a listener $eventsManager->attach("dispatch", function ($event, $dispatcher, $exception) { //controller or action doesn't exist if ($event->getType() == 'beforeException') { switch ($exception->getCode()) { case \Phalcon\Dispatcher::EXCEPTION_HANDLER_NOT_FOUND: case \Phalcon\Dispatcher::EXCEPTION_ACTION_NOT_FOUND: $dispatcher->forward(array('controller' => 'index', 'action' => 'notFound')); return false; } } }); $dispatcher = new \Phalcon\Mvc\Dispatcher(); //Set default namespace to doc module $dispatcher->setDefaultNamespace("Las\\Doc\\Controllers"); //Bind the EventsManager to the dispatcher $dispatcher->setEventsManager($eventsManager); return $dispatcher; }); //Registering the view component $di->set('view', function () use($di) { $view = new \Phalcon\Mvc\View(); $view->setViewsDir(__DIR__ . '/views/'); $view->registerEngines(\Las\Library\Tool::registerEngines($view, $di)); return $view; }); }
/** * Display firewall code * * @package las * @version 1.0 */ public static function display($path, $vars = []) { $di = \Phalcon\DI::getDefault(); if ($di->getShared('router')->getModuleName() == 'cli') { $view = $di->getShared('view'); } else { $view = new \Phalcon\Mvc\View(); $view->setDI($di); $view->registerEngines(\Las\Library\Tool::registerEngines($view, $di)); } $settings = json_decode(json_encode(\Las\Library\Arr::from_model(Settings::find('status=' . Settings::ACTIVE), 'name', 'value'))); $lans = Networks::find('status = ' . Networks::ACTIVE . ' AND type = ' . Networks::LAN); $wans = Networks::find('status = ' . Networks::ACTIVE . ' AND type = ' . Networks::WAN); $vars = ['clients' => Clients::find(), 'devices' => Devices::find('status=' . Devices::ACTIVE), 'messages' => Messages::find('status=' . Messages::ACTIVE), 'tariffs' => Tariffs::find('status=' . Tariffs::ACTIVE), 'settings' => $settings, 'redirects' => Redirects::find('status=' . Redirects::ACTIVE), 'services' => Services::find('status=' . Services::ACTIVE . ' AND client_id=0 AND device_id=0'), 'lans' => $lans, 'lan' => $lans->getFirst(), 'wans' => $wans, 'wan' => $wans->getFirst(), 'ipt' => $settings->iptables, 'tc' => $settings->tc, 'EOL' => PHP_EOL]; $view->setViewsDir(ROOT_PATH . '/app/common/cache/volt/app/cli/views/'); ob_start(); $view->partial($path, $vars); return preg_replace(['/^\\s+|^[\\t\\s]*\\n+/m', "/\r/"], '', ob_get_clean()); //return preg_replace('/^\s+|^[\t\s]*\n+/m', "/\x0D/"], '', $view->partial($path, $vars, false)); }
/** * Catch the exception and log it, display pretty view * * @package las * @version 1.0 * * @param \Exception $e */ public static function exception(\Exception $e) { $config = \Phalcon\DI::getDefault()->getShared('config'); $errors = array('error' => get_class($e) . '[' . $e->getCode() . ']: ' . $e->getMessage(), 'info' => $e->getFile() . '[' . $e->getLine() . ']', 'debug' => "Trace: \n" . $e->getTraceAsString() . "\n"); if ($config->app->env == "development") { // Display debug output echo Dump::all($errors); } else { // Display pretty view of the error $di = new \Phalcon\DI\FactoryDefault(); $view = new \Phalcon\Mvc\View\Simple(); $view->setDI($di); $view->setViewsDir(ROOT_PATH . '/app/frontend/views/'); $view->registerEngines(\Las\Library\Tool::registerEngines($view, $di)); echo $view->render('error', array('i18n' => I18n::instance(), 'config' => $config)); // Log errors to file and send email with errors to admin \Las\Bootstrap::log($errors); } }