Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 240 → Rev 241

/trunk/framework/Controleur.php
29,18 → 29,21
/** Chemin de base vers les classes controleurs de la partie Controleur de l'application. */
private $base_chemin_controleur = null;
/** Base de l'url de l'application. */
/** Objet URL contant l'url de la base de l'application. */
private $base_url_applicaton = null;
 
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
protected $parametres_obligatoires = array('chemin_modeles', 'chemin_squelettes', 'chemin_controleurs', 'base_url_application');
/**
* Constructeur par défaut
*/
public function __construct() {
$this->registre = Registre::getInstance();
$this->registre->set('base_chemin_modele', Config::get('chemin_modeles'));
$this->registre->set('base_chemin_squelette', Config::get('chemin_squelettes'));
$this->registre->set('base_chemin_controleur', Config::get('chemin_controleurs'));
$this->registre->set('base_url_application', new Url(Config::get('base_url_application')));
Config::verifierPresenceParametres($this->parametres_obligatoires);
$this->base_chemin_modele = Config::get('chemin_modeles');
$this->base_chemin_squelette = Config::get('chemin_squelettes');
$this->base_chemin_controleur = Config::get('chemin_controleurs');
$this->base_url_application = new Url(Config::get('base_url_application'));
}
 
/**
96,8 → 99,8
*/
final protected function getVue($nom_squelette, &$donnees = array(), $ext = '.tpl.html') {
$donnees = $this->preTraiterDonnees($donnees);
$chemin_squelette = ($this->registre->get('base_chemin_squelette')).$nom_squelette.$ext;
 
$chemin_squelette = $this->base_chemin_squelette.$nom_squelette.$ext;
$sortie = SquelettePhp::analyser($chemin_squelette, $donnees);
 
return $sortie;
/trunk/framework/Framework.php
13,7 → 13,7
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
31,6 → 31,11
/** Chemin de base de l'application */
private static $chemin = null;
 
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private static $parametres_obligatoires = array('chemin_controleurs', 'chemin_modeles', 'chemin_bibliotheque',
'fw_url_arg_separateur_entree', 'fw_url_arg_separateur_sortie',
'sortie_encodage', 'appli_encodage');
/**
* Initialise l'environnement nécessaire au Framework : constantes globales, méthodeles autoload, séparateur d'arguments
* d'url.
69,7 → 74,10
private static function enregistrerMethodesAutoload() {
spl_autoload_register(array(get_class(), 'autoloadFw'));
// Vérification des paramètres de configuration obligatoire pour assurer le fonctionnement du Framework
Config::verifierPresenceParametres(self::$parametres_obligatoires);
// Initialisation du gestionnaire d'erreur avant toute chose
GestionnaireException::initialiser();
/trunk/framework/Service.php
13,7 → 13,8
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version SVN : $Id$
* @since 0.3
* @version $Id$
* @link /doc/framework/
*/
abstract class Service {
/trunk/framework/Url.php
6,12 → 6,10
*
* @category Php 5.2
* @package Framework
// Auteur principal
* @author Christian Schmidt <schmidt@php.net>
// Autre auteurs
* @author Christian SCHMIDT <schmidt@php.net> (Auteur classe originale)
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
87,11 → 85,16
*/
private $fragment = false;
 
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private $parametres_obligatoires = array('fw_url_arg_separateur_entree', 'fw_url_arg_separateur_sortie');
/**
* @param string $url une URL relative ou absolue
* @param array $options
*/
public function __construct($url, $options = null) {
Config::verifierPresenceParametres($this->parametres_obligatoires);
$this->setOption(self::OPTION_SEPARATEUR_ENTREE,
Config::get('fw_url_arg_separateur_entree'));
$this->setOption(self::OPTION_SEPARATEUR_SORTIE,
/trunk/framework/Script.php
9,8 → 9,9
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version SVN : $Id$
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @since 0.3
* @version $Id$
* @link /doc/framework/
*/
 
83,10 → 84,15
*/
protected $parametres = null;
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private static $parametres_obligatoires = array('chemin_modules', 'script_logs');
public function __construct($script_nom, $parametres_cli) {
$this->script_nom = $script_nom;
$this->parametres_cli = $parametres_cli;
Config::verifierPresenceParametres(self::$parametres_obligatoires);
$fichier_ini_script = $this->getScriptChemin().'config.ini';
Config::charger($fichier_ini_script);
/trunk/framework/Config.php
7,30 → 7,23
* Si vous avez besoin de modifier dynamiquement des paramètres de configuration, utiliser le @see Registe, il est fait pour ça.
*
* @category PHP 5.2
* @package Framework
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version SVN : $Id$
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
* @link /doc/framework/
*/
 
class Config {
 
/**
* instance de la classe pointant sur elle même (pour le pattern singleton)
*/
/** Instance de la classe pointant sur elle même (pour le pattern singleton). */
private static $instance = null;
 
/**
* paramètres de configuration
*/
/** Paramètres de configuration. */
private static $parametres = array();
 
/**
* Constructeur vide
*/
private function __construct() {
// Définition de paramètres avant chargement du config.ini
self::$parametres = array(
107,7 → 100,7
}
 
/**
* fusionne un tableau de paramètres avec le tableau de paramètres global
* Fusionne un tableau de paramètres avec le tableau de paramètres global
* @param array $ini le tableau à fusionner
*/
private static function fusionner(array $ini) {
115,7 → 108,7
}
 
/**
* renvoie la valeur demandé grâce une chaine de paramètres
* Renvoie la valeur demandée grâce une chaîne de paramètres
* @param string $param la chaine de paramètres
* @param array $config le tableau de paramètre
* @return string la valeur de la chaine demandée
164,7 → 157,7
}
 
/**
* analyse un tableau de paramètres
* Analyse un tableau de paramètres.
* @param array $config le tableau de paramètres
* @return array le tableau analysé
*/
182,8 → 175,8
}
 
/**
* dans le cas des chaine de configuration à sous clé (ex.: cle.souscle)
* evalue les valeurs correspondantes et crée les sous tableaux associés
* Dans le cas des chaine de configuration à sous clé (ex.: cle.souscle)
* évalue les valeurs correspondantes et crée les sous tableaux associés.
* @param array $config tableau de configuration (par référence)
* @param string $cle la cle dans le tableau
* @param string $valeur la valeur à affecter
211,7 → 204,7
}
 
/**
* Evalue les valeurs de références à une clé dans le tableau config (cas du ref:cle)
* Évalue les valeurs de références à une clé dans le tableau config (cas du ref:cle).
* @param array $config tableau de configuration
* @param string $cle la clé dont il faut évaluer les références
*/
224,7 → 217,7
}
 
/**
* Evalue le code php contenu dans un clé tu tableau config
* Évalue le code php contenu dans un clé tu tableau config.
* @param array $config tableau de configuration (par référence)
* @param string $cle le clé du tableau dont il faut évaluer la valeur
*/
235,7 → 228,7
}
 
/**
* Charge un fichier ini dans le tableau des paramètres de l'appli
* Charge un fichier ini dans le tableau des paramètres de l'appli.
* @param string $fichier_ini le nom du fichier à charger
* @return array le fichier ini parsé
*/
245,7 → 238,7
}
 
/**
* Acesseur pour la valeur d'un paramètre
* Accesseur pour la valeur d'un paramètre.
* @param string $param le nom du paramètre
* @return string la valeur du paramètre
*/
255,7 → 248,7
}
 
/**
* Vérifie si la valeur d'un paramètre existe
* Vérifie si la valeur d'un paramètre existe.
* @param string $param le nom du paramètre
* @return boolean vrai si le paramètre existe, false sinon
*/
263,5 → 256,26
self::verifierCreationInstance();
return self::existeValeur($param, self::$parametres);
}
/**
* Vérifie que tous les paramêtres de config nécessaires au fonctionnement d'une classe existe dans les fichiers
* de configurations.
* L'utilisation de cette méthode depuis la classe Config évite de faire appel à une classe supplémentaire.
*
* @param array $parametres tableau des noms des paramètres de la config à verifier.
* @return boolean true si tous les paramétres sont présents sinon false.
*/
public static function verifierPresenceParametres(Array $parametres) {
$ok = true;
foreach ($parametres as $param) {
if (is_null(self::get($param))) {
$classe = get_class();
$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration.";
trigger_error($m, E_USER_ERROR);
$ok = false;
}
}
return $ok;
}
}
?>
/trunk/framework/GestionnaireException.php
7,6 → 7,7
* @category PHP 5.2
* @package Framework
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @author Jean-Pascal MILCENT <jmp@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
33,6 → 34,9
/** Definit si php est lancé en ligne de commande ou en mode serveur */
private static $mode = null ;
 
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private static $parametres_obligatoires = array('fw_debogage', 'fw_debogage_contexte', 'fw_log_debogage');
/** Initialise le Gestionnaire d'exceptions et d'erreur sans tenir comptes des paramêtres de config. */
public static function initialiser() {
self::$mode = php_sapi_name();
47,6 → 51,7
/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */
public static function configurer() {
Config::verifierPresenceParametres(self::$parametres_obligatoires);
self::$contexte = Config::get('fw_debogage_contexte');
self::$logger = Config::get('fw_log_debogage');
self::$afficher = Config::get('fw_debogage');
/trunk/framework/Cli.php
12,13 → 12,18
* @author Delphine CAUQUIL <delphine@tela-botanica.org>
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version SVN : $Id$
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @since 0.3
* @version $Id$
* @link /doc/framework/
*/
 
class Cli {
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private static $parametres_obligatoires = array('chemin_modules');
/**
* Execute la ligne de commande en récupérant le nom du script à lancer et ses paramètres.
* Instancie la classe du script à lancer et appelle la méthode executer().
53,6 → 58,7
private static function charger($script_nom, $parametres) {
$Script = null;
Config::verifierPresenceParametres(self::$parametres_obligatoires);
$classe_nom = implode('', array_map('ucfirst', explode('_', strtolower($script_nom))));
$fichier_script = Config::get('chemin_modules').$script_nom.DS.$classe_nom.'.php';
/trunk/framework/I18n.php
12,7 → 12,7
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @since 0.3
19,7 → 19,6
* @version $Id$
* @link /doc/framework/
*/
 
class I18n {
/** Format de traduction utilisant les fichier .ini */
const FORMAT_INI = '.ini';
33,8 → 32,11
/** Langue courrante utilisée par l'application. */
private static $langue = null;
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private static $parametres_obligatoires = array('chemin_i18n', 'i18n_url_parametre', 'i18n_langue_defaut', 'fw_debogage');
private function __construct() {
self::verifierParametresConfig();
Config::verifierPresenceParametres(self::$parametres_obligatoires);
self::trouverLangue();
}
222,23 → 224,6
}
/**
* Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers
* de configurations.
*/
private static function verifierParametresConfig() {
$ok = true;
$parametres = array('chemin_i18n', 'i18n_url_parametre', 'i18n_langue_defaut');
foreach ($parametres as $param) {
if (is_null(Config::get($param))) {
$m = "L'utilisation de la classe I18n nécessite de définir '$param' dans un fichier de configuration.";
self::ajouterErreur($m);
$ok = false;
}
}
return $ok;
}
/**
* Ajouter une message d'erreur
*/
private static function ajouterErreur($m, $e = E_USER_WARNING) {
/trunk/framework/Log.php
4,59 → 4,45
* Classe permettant de logger des messages dans les fichier situés dans le dossier de log.
*
* @category PHP 5.2
* @package Framework
* @author aurelien <aurelien@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version SVN: $Id$
* @link /doc/framework/
* @package Framework
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version $Id$
* @link /doc/framework/
*/
 
class Log {
 
/**
* Boolean indiquant si l'on doit utiliser les logs ou pas
*/
/** Boolean indiquant si l'on doit utiliser les logs ou pas. */
private static $logger = false;
 
/**
* Tableau associatif stockant les descripteurs de fichiers
*/
/** Tableau associatif stockant les descripteurs de fichiers. */
private static $fichiersLog = array();
 
/**
* Chemin de base du dossier log de l'application
*/
/** Chemin de base du dossier log de l'application. */
private static $cheminLogs = '';
 
/**
* Booleen indiquant si l'on peut correctement écrire dans les fichiers de logs
*/
/** Booleen indiquant si l'on peut correctement écrire dans les fichiers de logs. */
private static $droitLogger = true;
 
/**
* Zone horaire (pour éviter des avertissements dans les dates)
*/
/** Zone horaire (pour éviter des avertissements dans les dates). */
private static $timeZone = 'Europe/Paris';
 
/**
* Taille maximum d'un fichier de log avant que celui ne soit archivé (en octets)
*/
/** Taille maximum d'un fichier de log avant que celui ne soit archivé (en octets). */
private static $tailleMax = 10000;
 
/**
* séparateur de dossier dans un chemin
*/
/** séparateur de dossier dans un chemin. */
private static $sd = DIRECTORY_SEPARATOR;
 
/**
* Extension des fichiers de log
*/
/** Extension des fichiers de log. */
private static $ext = '.log';
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private static $parametres_obligatoires = array('chemin_logs', 'i18n_timezone', 'fw_taille_max_logs', 'fw_log_debogage');
 
/**
* Initialiser les logs par défaut, sans tenir comptes des paramêtres de config.
*/
/** Initialiser les logs par défaut, sans tenir comptes des paramêtres de config. */
public static function initialiser() {
// gestion de la timezone pour éviter des erreurs
if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) {
68,11 → 54,9
}
}
/**
* Configure le Log à partir des paramêtres de config.
*/
/** Configure le Log à partir des paramêtres de config. */
public static function configurer() {
self::$sd = Config::get('ds');
Config::verifierPresenceParametres(self::$parametres_obligatoires);
self::$cheminLogs = Config::get('chemin_logs');
self::$timeZone = Config::get('i18n_timezone');
self::$tailleMax = Config::get('fw_taille_max_logs');
86,7 → 70,7
*/
public static function ajouterEntree($nomFichier, $entree, $mode = 'a+') {
if (self::$droitLogger) {
$date = "\n"."\n".date('d m Y H:i')."\n" ;
$date = "\n\n".date('d m Y H:i')."\n" ;
 
if (self::verifierOuvrirFichier($nomFichier, $mode)) {
fwrite(self::$fichiersLog[$nomFichier], $date.$entree);
155,9 → 139,7
GestionnaireException::gererException($e);
}
 
/**
* destructeur de classe, ferme les descripteurs ouverts
*/
/** Destructeur de classe, ferme les descripteurs ouverts. */
public function __destruct() {
foreach(self::$fichiersLog as $nomFichier => $fp) {
fclose($fp);
/trunk/framework/SquelettePhp.php
7,10 → 7,10
* @category php5
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $Id$
* @version $Id$
* @link /doc/framework/
*/
class SquelettePhp {
/trunk/framework/Chronometre.php
8,7 → 8,7
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
* @version $Id$
/trunk/framework/Debug.php
137,7 → 137,7
* @return string la chaine de debogage formatée ou bien null si echo
*/
private static function traiterDebogage($mot_cle, $sortie, $echo) {
self::verifierParametresConfig(self::$parametres_obligatoires);
Config::verifierPresenceParametres(self::$parametres_obligatoires);
$debogage = Config::get('fw_debogage');
$mode = Config::get('fw_debogage_mode');
182,25 → 182,5
}
return $sortie;
}
/**
* Vérifie que tous les paramêtres de config nécessaires au fonctionnement de cette classe existe dans les fichiers
* de configurations.
*
* @param array $parametres talbeau des noms des paramètres de la config à verifier.
* @return boolean true si tous les paramétres sont présents sinon false.
*/
public static function verifierParametresConfig(Array $parametres) {
$ok = true;
foreach ($parametres as $param) {
if (is_null(Config::get($param))) {
$classe = get_class();
$m = "L'utilisation de la classe $classe nécessite de définir '$param' dans un fichier de configuration.";
trigger_error($m, E_USER_ERROR);
$ok = false;
}
}
return $ok;
}
}
?>
/trunk/framework/Bdd.php
14,7 → 14,7
* @package Framework
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version $Id$
86,7 → 86,7
/** Constructeur par défaut, appelé à l'initialisation. */
public function __construct() {
Debug::verifierParametresConfig($this->parametres_obligatoires);
Config::verifierPresenceParametres($this->parametres_obligatoires);
$this->abstraction = strtolower(Config::get('bdd_abstraction'));
$this->type = Config::get('bdd_protocole');
$this->hote = Config::get('bdd_serveur');
/trunk/framework/Serveur.php
31,6 → 31,7
* @copyright Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @since 0.3
* @version $Id$
* @link /doc/framework/
*/
148,6 → 149,9
self::HTTP_CODE_CONTENU_REQUIS => 'Length Required',
self::HTTP_CODE_ERREUR => 'Internal Server Error'
);
/** Tableau des noms des paramètres à définir dans le fichier de config car obligatoirement nécessaire à cette classe.*/
private $parametres_obligatoires = array('fw_debogage', 'fw_debogage_mode', 'serveur.baseURL', 'chemin_modules');
 
/**
* Analyse les données envoyées au serveur, enregistre la méthode HTTP utilisée pour appeler le serveur et parse
154,6 → 158,8
* l'url appelée pour trouver le service demandé.
*/
public function __construct() {
Config::verifierPresenceParametres($this->parametres_obligatoires);
$this->debogageActivation = Config::get('fw_debogage');
$this->debogageMode = Config::get('fw_debogage_mode');