. # # ***** END LICENSE BLOCK ***** /** * The Minz_FrontController class is the framework Dispatcher. * It runs the application. * It is generally invoqued by an index.php file at the root. */ class Minz_FrontController { protected $dispatcher; /** * Constructeur * Initialise le dispatcher, met à jour la Request */ public function __construct () { try { $this->setReporting(); Minz_Request::init(); $url = $this->buildUrl(); $url['params'] = array_merge ( $url['params'], $_POST ); Minz_Request::forward ($url); } catch (Minz_Exception $e) { Minz_Log::error($e->getMessage()); $this->killApp ($e->getMessage()); } $this->dispatcher = Minz_Dispatcher::getInstance(); } /** * Returns an array representing the URL as passed in the address bar * @return array URL representation */ private function buildUrl() { $url = array(); $url['c'] = $_GET['c'] ?? Minz_Request::defaultControllerName(); $url['a'] = $_GET['a'] ?? Minz_Request::defaultActionName(); $url['params'] = $_GET; // post-traitement unset($url['params']['c']); unset($url['params']['a']); return $url; } /** * Démarre l'application (lance le dispatcher et renvoie la réponse) */ public function run() { try { $this->dispatcher->run(); } catch (Minz_Exception $e) { try { Minz_Log::error($e->getMessage()); } catch (Minz_PermissionDeniedException $e) { $this->killApp ($e->getMessage ()); } if ($e instanceof Minz_FileNotExistException || $e instanceof Minz_ControllerNotExistException || $e instanceof Minz_ControllerNotActionControllerException || $e instanceof Minz_ActionException) { Minz_Error::error ( 404, array('error' => array ($e->getMessage ())), true ); } else { $this->killApp($e->getMessage()); } } } /** * Permet d'arrêter le programme en urgence */ private function killApp ($txt = '') { if (function_exists('errorMessage')) { //If the application has defined a custom error message function exit(errorMessage('Application problem', $txt)); } exit('### Application problem ###
' . "\n" . $txt); } private function setReporting() { $envType = getenv('FRESHRSS_ENV'); if ($envType == '') { $conf = Minz_Configuration::get('system'); $envType = $conf->environment; } switch ($envType) { case 'development': error_reporting(E_ALL); ini_set('display_errors', 'On'); ini_set('log_errors', 'On'); break; case 'silent': error_reporting(0); break; case 'production': default: error_reporting(E_ALL); ini_set('display_errors', 'Off'); ini_set('log_errors', 'On'); break; } } }