1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
|
<?php
/**
* Bootstap file for Immogestion
*
* @author Serge Fournier, safournier@free.fr
* @version
*/
/**
* fonction de renvoi vers une page d'erreur
* en cas d'erreur bloquante
*/
/*
set_exception_handler('bootstrapError');
function bootstrapError()
{
exit("Une erreur grave est survenue");
}
*/
ini_set ( 'error_reporting', E_ALL );
// ** VARIABLES ***************************************************************
// definition de constantes pour l'application
define ( 'APP_MODE', 'development' );
define ( 'CACHE_LIFETIME', 3600 );
// ** AUTOLOAD ****************************************************************
// Utilisation de Zend_Loader
require_once 'Zend/Loader/Autoloader.php';
// Chargement automatique des classes
Zend_Loader_Autoloader::getInstance ()->setFallbackAutoloader ( true );
// ** PATHS *******************************************************************
$rootPath = dirname ( dirname ( __FILE__ ) );
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
// ** CONFIG ******************************************************************
// Recuperation des objets de configuration
$configApplication = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/application.ini', APP_MODE );
$configSession = new Zend_Config_Ini ( APPLICATION_PATH . '/configs/session.ini', APP_MODE );
// ** SESSION *****************************************************************
// Configuration de la session (imperativement avant son demarrage)
if (! Zend_Session::isStarted ()) {
Zend_Session::setOptions ( $configSession->toArray () );
Zend_Session::setOptions ( array ('save_path' => $rootPath . $configSession->save_path ) );
Zend_Session::start();
}
$session = new Zend_Session_Namespace('lob');
Zend_Registry::set('lob', $session);
// Partage (et creation ou restauration) de l'objet de session dans le registre
// Ce premier appel a new Zend_Session_Namespace demarre la session PHP
Zend_Registry::set ( 'session', $session );
// ** LOG *********************************************************************
$log = new Zend_Log ( $writer = new Zend_Log_Writer_Stream ( $rootPath . $configApplication->logfile ) );
/*
// Ajout de parametres a enregistrer, adresse ip et navigateur
$log->setEventItem ( 'user_agent', $_SERVER ['HTTP_USER_AGENT'] );
$log->setEventItem ( 'client_ip', $_SERVER ['REMOTE_ADDR'] );
$log->addPriority ( 'USER', 8 );
// Ajout des parametres enregistres dans le format du journal a ecrire
$format = '%client_ip% %user_agent%' . Zend_Log_Formatter_Simple::DEFAULT_FORMAT;
// Ajout du format du journal au log
$writer->setFormatter ( new Zend_Log_Formatter_Simple ( $format ) );
Zend_Registry::set ( 'log', $log );
*/
// ** CACHE *******************************************************************
$frontendOptions = array(
'lifetime' => CACHE_LIFETIME,
'automatic_serialization' => true
);
$backendOptions = array(
// Répertoire où stocker les fichiers de cache
'cache_dir' => $rootPath . $configSession->save_path . '/'
);
// créer un objet Zend_Cache_Core
$cacheInstance = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
// ** LOCALE ******************************************************************
// locale pour la gestion de la langue
//Zend_Locale::$compatibilityMode = false;
$locale = new Zend_Locale ( ); // locale par defaut : navigateur utilise, sinon machine hote
Zend_Registry::set ( 'Zend_Locale', $locale );
// on attache le composant cache a Zend_Locale
Zend_Locale::setCache ( $cacheInstance );
// ** DATES *******************************************************************
date_default_timezone_set ( 'Europe/Paris' );
Zend_Date::setOptions ( array ('cache' => $cacheInstance ) );
// ** DATABASE ****************************************************************
try {
$db = Zend_Db::factory ( $configApplication->databaseImmo );
$db->query ( "SET NAMES 'UTF8'" );
$db->getConnection ();
// Passage de la connexion a toutes les classes passerelles
Zend_Db_Table_Abstract::setDefaultAdapter ( $db );
} catch ( Zend_Db_Exception $e ) {
// on passe l'exception sous silence, elle sera geree dans le systeme MVC plus tard
}
// activation du cache des meta donnees des passerelles
Zend_Db_Table_Abstract::setDefaultMetadataCache ( $cacheInstance );
// ** MVC *********************************************************************
// Set up the front controller and dispatch
try {
// Configuration du controleur frontal
$front = Zend_Controller_Front::getInstance ();
$front->setControllerDirectory ( APPLICATION_PATH . '/controllers' );
$front->throwExceptions ( false ); // par defaut
// propagation de parametres dans le systeme MVC
$front->setParam ( 'debug', $configApplication->debug );
$front->setParam ( 'locale', $locale );
$front->setParam ( 'config', $configApplication );
// enregistrement du plugin de sauvegarde de la page precedente
//$front->registerPlugin ( new Zend_Controller_Plugins_Session ( ) );
// Ajout du chemin des aides d'action dans le gestionnaire d'aides MVC
Zend_Controller_Action_HelperBroker::addPrefix ( 'Zend_Controller_ActionHelpers' );
// Configuration d'un entete de reponse HTTP global
$response = new Zend_Controller_Response_Http ( );
$response->setRawHeader ( 'Content-type: text/html; charset=utf-8' );
// passage de la reponse configuree au systeme MVC
$front->setResponse ( $response );
// recuperation du routeur
$router = $front->getRouter ();
Zend_Layout::startMvc ( array (APPLICATION_PATH . '/views/scripts' ) );
// ************************* VIEW ******************************************
$view = new Zend_View ( );
$view->setEncoding ( 'UTF-8' );
$view->strictVars ( ( bool ) $configApplication->debug );
// Recuperation de l'aide de rendu automatique de vues : viewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper ( 'ViewRenderer' );
// Passage de notre vue a ViewRenderer
$viewRenderer->setView ( $view );
// ** DISPATCH ****************************************************************
try {
$front->dispatch ();
} catch ( Zend_Exception $e ) {
$log->crit ( $e );
}
// Handle controller exceptions (usually 404)
} catch ( Zend_Controller_Exception $e ) {
include 'errors/404.phtml';
// Handle all other exceptions
} catch ( Exception $e ) {
include 'errors/500.phtml';
}
/*
// ** APPLICATION *************************************************************
// Zend_Application
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
*/ |
Partager