Index: src/include/init.php ================================================================== --- src/include/init.php +++ src/include/init.php @@ -1,9 +1,11 @@ -
\__/-
(xx)
//||\\\\
Une erreur fatale s\'est produite à l\'exécution de Garradin. Pour rapporter ce bug - merci d\'inclure le message ci-dessous :
-\__/-
(xx)
//||\\\\
Une erreur s\'est produite à l\'exécution de Garradin. Pour rapporter ce bug - merci d\'inclure le message suivant :
- -Une erreur s\'est produite à l\'exécution de Garradin.
-Le webmaster a été prévenu.
'; - } - } - - exit; -} - -set_error_handler('Garradin\exception_error_handler'); -set_exception_handler('Garradin\exception_handler'); - /** - * Auto-load classes and libs + * Auto-chargement des dépendances */ class Loader { /** - * Already loaded filenames + * Liste des classes déjà chargées * @var array */ static protected $loaded = []; /** - * Loads a class from the $name - * @param stringg $classname - * @return bool true + * Inclure un fichier de classe depuis le nom de la classe + * @param string $classname + * @return void */ static public function load($classname) { $classname = ltrim($classname, '\\'); + + if (array_key_exists($classname, self::$loaded)) + { + return true; + } + // Plugins if (substr($classname, 0, 16) == 'Garradin\\Plugin\\') { $classname = substr($classname, 16); $plugin_name = substr($classname, 0, strpos($classname, '\\')); $filename = str_replace('\\', '/', substr($classname, strpos($classname, '\\')+1)); @@ -307,35 +189,92 @@ $path = 'phar://' . PLUGINS_ROOT . '/' . strtolower($plugin_name) . '.tar.gz/lib/' . $filename . '.php'; } else { + // PSR-0 autoload $filename = str_replace('\\', '/', $classname); $path = ROOT . '/include/lib/' . $filename . '.php'; } - - if (array_key_exists($path, self::$loaded)) + + if (!file_exists($path)) { - return true; - } - - if (!file_exists($path)) { throw new \Exception('File '.$path.' doesn\'t exists'); } - self::$loaded[$path] = true; + self::$loaded[$classname] = true; require $path; } } \spl_autoload_register(['Garradin\Loader', 'load'], true); -$n = new Membres; +/* + * Gestion des erreurs et exceptions + */ + +class UserException extends \LogicException +{ +} + +// activer le gestionnaire d'erreurs/exceptions +ErrorManager::enable(SHOW_ERRORS ? ErrorManager::DEVELOPMENT : ErrorManager::PRODUCTION); +ErrorManager::setLogFile(DATA_ROOT . '/error.log'); + +// activer l'envoi de mails si besoin est +if (MAIL_ERRORS) +{ + ErrorManager::setEmail(MAIL_ERRORS); +} + +ErrorManager::setExtraDebugEnv([ + 'Garradin version' => garradin_version(), + 'Garradin data root' => DATA_ROOT, + ]); + +ErrorManager::setProductionErrorTemplate('Désolé mais le serveur a rencontré une erreur interne + et ne peut répondre à votre requête. Merci de ré-essayer plus tard.
+Si vous suspectez un bug dans Garradin, vous pouvez suivre + ces instructions + pour le rapporter.
+Un-e responsable a été notifié-e et cette erreur sera corrigée dès que possible.
Référence : {$ref}