Ejemplo n.º 1
0
 public static function get_info()
 {
     $data = array('exec_time' => Utils::get_microtime() - Container::get('start'));
     $data['nb_queries'] = isset(DB::get_query_log()[0]) ? count(DB::get_query_log()[0]) : 'N/A';
     $data['mem_usage'] = function_exists('memory_get_usage') ? Utils::file_size(memory_get_usage()) : 'N/A';
     $data['mem_peak_usage'] = function_exists('memory_get_peak_usage') ? Utils::file_size(memory_get_peak_usage()) : 'N/A';
     return $data;
 }
Ejemplo n.º 2
0
 public static function get_info()
 {
     self::$feather = \Slim\Slim::getInstance();
     $data = array('exec_time' => Utils::get_microtime() - self::$feather->start);
     $data['nb_queries'] = isset(DB::get_query_log()[0]) ? count(DB::get_query_log()[0]) : 'N/A';
     $data['mem_usage'] = function_exists('memory_get_usage') ? Utils::file_size(memory_get_usage()) : 'N/A';
     $data['mem_peak_usage'] = function_exists('memory_get_peak_usage') ? Utils::file_size(memory_get_peak_usage()) : 'N/A';
     return $data;
 }
Ejemplo n.º 3
0
 public function __invoke($req, $res, $next)
 {
     // Set headers
     $res = $this->set_headers($res);
     // Block prefetch requests
     if (isset($this->app->environment['HTTP_X_MOZ']) && $this->app->environment['HTTP_X_MOZ'] == 'prefetch') {
         return $this->app->response->setStatus(403);
         // Send forbidden header
     }
     // Populate Slim object with forum_env vars
     Container::set('forum_env', $this->forum_env);
     // Load FeatherBB utils class
     Container::set('utils', function ($container) {
         return new Utils();
     });
     // Record start time
     Container::set('start', Utils::get_microtime());
     // Define now var
     Container::set('now', function () {
         return time();
     });
     // Load FeatherBB cache
     Container::set('cache', function ($container) {
         $path = $this->forum_env['FORUM_CACHE_DIR'];
         return new \FeatherBB\Core\Cache(array('name' => 'feather', 'path' => $path, 'extension' => '.cache'));
     });
     // Load FeatherBB permissions
     Container::set('perms', function ($container) {
         return new \FeatherBB\Core\Permissions();
     });
     // Load FeatherBB preferences
     Container::set('prefs', function ($container) {
         return new \FeatherBB\Core\Preferences();
     });
     // Load FeatherBB view
     Container::set('template', function ($container) {
         return new View();
     });
     // Load FeatherBB url class
     Container::set('url', function ($container) {
         return new Url();
     });
     // Load FeatherBB hooks
     Container::set('hooks', function ($container) {
         return new Hooks();
     });
     // Load FeatherBB email class
     Container::set('email', function ($container) {
         return new Email();
     });
     Container::set('parser', function ($container) {
         return new Parser();
     });
     // Set cookies
     Container::set('cookie', function ($container) {
         $request = $container->get('request');
         return new \Slim\Http\Cookies($request->getCookieParams());
     });
     Container::set('flash', function ($c) {
         return new \Slim\Flash\Messages();
     });
     // This is the very first hook fired
     Container::get('hooks')->fire('core.start');
     if (!is_file(ForumEnv::get('FORUM_CONFIG_FILE'))) {
         // Reset cache
         Container::get('cache')->flush();
         $installer = new \FeatherBB\Controller\Install();
         return $installer->run();
     }
     // Load config from disk
     include ForumEnv::get('FORUM_CONFIG_FILE');
     if (isset($featherbb_config) && is_array($featherbb_config)) {
         $this->forum_settings = array_merge(self::load_default_forum_settings(), $featherbb_config);
     } else {
         $this->app->response->setStatus(500);
         // Send forbidden header
         return $this->app->response->setBody('Wrong config file format');
     }
     // Init DB and configure Slim
     self::init_db($this->forum_settings, ForumEnv::get('FEATHER_SHOW_INFO'));
     Config::set('displayErrorDetails', ForumEnv::get('FEATHER_DEBUG'));
     if (!Container::get('cache')->isCached('config')) {
         Container::get('cache')->store('config', \FeatherBB\Model\Cache::get_config());
     }
     // Finalize forum_settings array
     $this->forum_settings = array_merge(Container::get('cache')->retrieve('config'), $this->forum_settings);
     Container::set('forum_settings', $this->forum_settings);
     // Set default style and assets
     Container::get('template')->setStyle(ForumSettings::get('o_default_style'));
     Container::get('template')->addAsset('js', 'style/themes/FeatherBB/phone.min.js');
     // Run activated plugins
     self::loadPlugins();
     // Define time formats and add them to the container
     Container::set('forum_time_formats', array(ForumSettings::get('o_time_format'), 'H:i:s', 'H:i', 'g:i:s a', 'g:i a'));
     Container::set('forum_date_formats', array(ForumSettings::get('o_date_format'), 'Y-m-d', 'Y-d-m', 'd-m-Y', 'm-d-Y', 'M j Y', 'jS M Y'));
     // Call FeatherBBAuth middleware
     return $next($req, $res);
 }
Ejemplo n.º 4
0
 public function call()
 {
     global $forum_time_formats, $forum_date_formats;
     // Legacy
     // Set headers
     $this->set_headers();
     // Block prefetch requests
     if (isset($this->app->environment['HTTP_X_MOZ']) && $this->app->environment['HTTP_X_MOZ'] == 'prefetch') {
         return $this->app->response->setStatus(403);
         // Send forbidden header
     }
     // Populate Slim object with forum_env vars
     $this->hydrate('forum_env', $this->forum_env);
     // Load FeatherBB utils class
     $this->app->container->singleton('utils', function () {
         return new Utils();
     });
     // Record start time
     $this->app->start = Utils::get_microtime();
     // Define now var
     $this->app->now = function () {
         return time();
     };
     // Load FeatherBB cache
     $this->app->container->singleton('cache', function ($container) {
         $path = $container->forum_env['FORUM_CACHE_DIR'];
         return new \FeatherBB\Core\Cache(array('name' => 'feather', 'path' => $path, 'extension' => '.cache'));
     });
     // Load FeatherBB view
     $this->app->container->singleton('template', function () {
         return new \FeatherBB\Core\View();
     });
     // Load FeatherBB url class
     $this->app->container->singleton('url', function () {
         return new \FeatherBB\Core\Url();
     });
     // Load FeatherBB hooks
     $this->app->container->singleton('hooks', function () {
         return new \FeatherBB\Core\Hooks();
     });
     // Load FeatherBB email class
     $this->app->container->singleton('email', function () {
         return new \FeatherBB\Core\Email();
     });
     $this->app->container->singleton('parser', function () {
         return new \FeatherBB\Core\Parser();
     });
     // This is the very first hook fired
     $this->app->hooks->fire('core.start');
     if (!is_file($this->forum_env['FORUM_CONFIG_FILE'])) {
         $installer = new \FeatherBB\Controller\Install();
         $installer->run();
         return;
     }
     // Load config from disk
     include $this->forum_env['FORUM_CONFIG_FILE'];
     if (isset($featherbb_config) && is_array($featherbb_config)) {
         $this->forum_settings = array_merge(self::load_default_forum_settings(), $featherbb_config);
     } else {
         $this->app->response->setStatus(500);
         // Send forbidden header
         return $this->app->response->setBody('Wrong config file format');
     }
     // Init DB and configure Slim
     self::init_db($this->forum_settings, $this->forum_env['FEATHER_SHOW_INFO']);
     $this->app->config(array('debug' => $this->forum_env['FEATHER_DEBUG'], 'cookies.encrypt' => true, 'cookies.secret_key' => $this->forum_settings['cookie_seed']));
     if (!$this->app->cache->isCached('config')) {
         $this->app->cache->store('config', \FeatherBB\Model\Cache::get_config());
     }
     // Finalize forum_settings array
     $this->forum_settings = array_merge($this->app->cache->retrieve('config'), $this->forum_settings);
     // Set default style and assets
     $this->app->template->setStyle($this->forum_settings['o_default_style']);
     $this->app->template->addAsset('js', 'style/themes/FeatherBB/phone.min.js');
     // Populate FeatherBB Slim object with forum_settings vars
     $this->hydrate('forum_settings', $this->forum_settings);
     $this->app->config = $this->forum_settings;
     // Legacy
     extract($this->forum_settings);
     // Legacy
     // Run activated plugins
     self::loadPlugins();
     // Define time formats
     $forum_time_formats = array($this->forum_settings['o_time_format'], 'H:i:s', 'H:i', 'g:i:s a', 'g:i a');
     $forum_date_formats = array($this->forum_settings['o_date_format'], 'Y-m-d', 'Y-d-m', 'd-m-Y', 'm-d-Y', 'M j Y', 'jS M Y');
     // Call FeatherBBAuth middleware
     $this->next->call();
 }