Subversion Repositories Applications.framework

Compare Revisions

Ignore whitespace Rev 474 → Rev 473

/branches/v0.2-buhl/framework/I18n.php
File deleted
\ No newline at end of file
/branches/v0.2-buhl/framework/Application.php
3,12 → 3,17
/**
* Classe fournissant des informations au Framework sur l'application.
*
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* PHP version 5
*
* @category Debogage
* @package Framework
// Auteur principal :
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
// Autres auteurs :
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $Id$
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org)
*/
class Application {
 
/branches/v0.2-buhl/framework/config.defaut.ini
21,10 → 21,6
; Débogage
; Indique si oui ou non on veut afficher le débogage.
fw_debogage = true
; Indique sous quelle forme les méssages de débogage doivent s'afficher :
; - Debug::MODE_ECHO : le message est affiché en utilisant echo
; - Debug::MODE_NOTICE : le message est affiché en utilisant une erreur de type notice
fw_debogage_mode = "php:Debug::MODE_ECHO"
; Indique si oui ou non on veut afficher le contexte de débogage.
fw_debogage_contexte = false
; Niveau d'erreur à employer pour le code PHP. Voir le manuel de PHP pour les différents niveaux disponibles.
31,9 → 27,6
fw_debogage_niveau = 2048
; Indique si oui ou non on veut activer la journalisation des erreurs.
fw_log_debogage = false
 
; +------------------------------------------------------------------------------------------------------+
; Log
; Indique le fuseau horaire pour le datage des logs.
fw_timezone = Europe/Paris
; Indique la taille max d'un fichier log (en octets)
45,7 → 38,7
fw_benchmark_chrono = true
 
; +------------------------------------------------------------------------------------------------------+
; Chemins, dossiers et fichiers
; Chemins et fichiers
; Nom des fichiers de config recherché. Défini par défaut dans la classe Config
; fw_fichier_config = "config%s.ini"
; Chemin vers le dossier du framework. Défini par défaut dans la classe Config
101,8 → 94,8
bdd_mot_de_passe = ""
; Nom de la base de données principale.
bdd_nom = ""
; Encodage de la base de données principale. Normalement le même que l'application mais au format base de
; données : voir ici : http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html
; Encodage de la base de données principale. Normalement le même que l'application mais au format base de
; données : voir ici : http://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html
; et là: http://www.postgresql.org/docs/8.1/static/multibyte.html pour les correspondances
bdd_encodage = "utf8"
 
114,13 → 107,6
sortie_encodage = "UTF-8"
 
; +------------------------------------------------------------------------------------------------------+
; I18n
; Indique le nom du paramêtre à rechercher dans le GET pour connaître la langue actuellement demandée
i18n_url_parametre = "langue"
; Indique la langue par défaut
i18n_langue_defaut = "fr"
 
; +------------------------------------------------------------------------------------------------------+
; URLs
; URL de base de l'application, si elle est laissée vide, l'application fonctionnera en Stand-alone
; Peut utiliser une objet Net_URL comme ceci : "php:$mon_objet_net_url->getUrl()"
/branches/v0.2-buhl/framework/Chronometre.php
1,25 → 1,32
<?php
// declare(encoding='UTF-8');
/** Classe Chronometre() - Permet de stocker et d'afficher les temps d'éxécution de script.
/** Classe Chronometre() - Permet de stocker et d'afficher
* les temps d'éxécution de script.
*
* Cette classe permet de réaliser un ensemble de mesure de temps prises à différents endroits d'un script.
* Ces mesures peuvent ensuite être affichées au sein d'un tableau XHTML.
* Cette classe permet de réaliser un ensemble
* de mesure de temps prises à
* différents endroits d'un script.
* Ces mesures peuvent ensuite être affichées au
* sein d'un tableau XHTML.
*
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
*
* PHP Version 5
*
* @category PHP
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version Release: <package_version>
* @link /doc/framework/
*/
class Chronometre {
/*** Attributs : ***/
private static $instance = null;
private static $temps = array();
private $_temps = array();
 
/** Constructeur : **/
private function __construct() {
self::setTemps('depart', microtime());
public function __construct() {
$this->setTemps(array('depart' => microtime()));
}
 
/** Accesseurs :
28,12 → 35,12
*
* @return int le temps écoulé
*/
private static function getTemps($cle = null) {
public function getTemps($cle = null) {
$temps = '';
if (!is_null($cle)) {
$temps = self::$temps[$cle];
$temps = $this->_temps[$cle];
} else {
$temps = self::$temps;
$temps = $this->_temps;
}
return $temps;
}
44,46 → 51,39
*
* @return null
*/
private static function setTemps($cle, $moment) {
array_push(self::$temps, array($cle => $moment));
public function setTemps($moment = array ()) {
array_push($this->_temps, $moment);
}
 
/*** Méthodes : ***/
 
/**
* Effectue un chronometrage.
*
* @param string le nom du point de chronométrage
* @return null
*/
public static function chrono($cle) {
$moment = microtime();
self::verifierCreationInstance();
self::setTemps($cle, $moment);
}
 
/**
/** Méthode afficherChrono() -
* Permet d'afficher les temps d'éxécution de différentes parties d'un script.
*
* Cette fonction permet d'afficher un ensemble de mesure de temps prises à différents endroits d'un script.
* Ces mesures sont affichées au sein d'un tableau XHTML dont on peut controler l'indentation des balises.
* Pour un site en production, il suffit d'ajouter un style #chrono {display:none;} dans la css.
* De cette façon, le tableau ne s'affichera pas. Le webmaster lui pourra rajouter sa propre feuille de style
* affichant le tableau.
* Cette fonction permet d'afficher un ensemble de
* mesure de temps prises à différents endroits d'un script.
* Ces mesures sont affichées au sein d'un tableau XHTML
* dont on peut controler l'indentation des balises.
* Pour un site en production, il suffit d'ajouter un style
* #chrono {display:none;} dans la css. De cette façon,
* le tableau ne s'affichera pas. Le webmaster lui pourra
* rajouter sa propre feuille de style affichant le tableau.
* Le développeur initial de cette fonction est Loic d'Anterroches.
* Elle a été modifiée par Jean-Pascal Milcent.
* Elle utilise une variable gobale : $_CHRONO_
*
* @author Loic d'Anterroches
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*
* @param int $indentation_origine l'indentation de base.
* @param int $indentation le pas d'indentation.
* @return string la chaine XHTML de mesure des temps.
*/
public static function afficherChrono($indentation_origine = 8, $indentation = 4) {
self::verifierCreationInstance();
public function afficherChrono($indentation_origine = 8, $indentation = 4) {
// Création du chrono de fin
self::setTemps('fin', microtime());
$GLOBALS['_SCRIPT_']['chrono']->setTemps(array (
'fin' => microtime()
));
 
// Début création de l'affichage
$sortie = str_repeat(' ', $indentation_origine) .
105,13 → 105,13
$total_tps_ecoule = 0;
 
// Récupération de la premiére mesure
$tab_depart = self::getTemps(0);
$tab_depart = & $this->getTemps(0);
list ($usec, $sec) = explode(' ', $tab_depart['depart']);
 
// Ce temps correspond à tps_fin
$tps_debut = ((float) $usec + (float) $sec);
 
foreach (self::getTemps() as $tab_temps) {
foreach ($this->getTemps() as $tab_temps) {
foreach ($tab_temps as $cle => $valeur) {
list ($usec, $sec) = explode(' ', $valeur);
$tps_fin = ((float) $usec + (float) $sec);
148,14 → 148,5
 
return $sortie;
}
 
/**
* Vérifie si l'instance de classe à été crée, si non la crée
*/
private static function verifierCreationInstance() {
if (empty(self::$instance)) {
self::$instance = new Chronometre();
}
}
}
?>
/branches/v0.2-buhl/framework/Config.php
5,12 → 5,15
* Elle offre l'accès en lecture seule aux paramètres de config.
* C'est une Singleton.
*
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* PHP Version 5
*
* @category PHP
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright 2009 Tela-Botanica
* @license GPL-v3 et CECILL-v2
* @version SVN: <svn_id>
* @link /doc/framework/
*/
 
class Config {
90,7 → 93,7
* @param string $fichier_ini nom du fichier ini à parser
* @return array tableau contenant les paramètres du fichier ini
*/
public static function parserFichierIni($fichier_ini) {
private static function parserFichierIni($fichier_ini) {
$retour = false;
if (file_exists($fichier_ini)) {
$ini = parse_ini_file($fichier_ini, true);
/branches/v0.2-buhl/framework/Modele.php
8,12 → 8,15
*
* PHP Version 5
*
* @category PHP 5.2
* @package Framework
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* @category Class
* @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
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
* @version SVN: $$Id$$
* @link /doc/framework/
*
*/
abstract class Modele {
 
/branches/v0.2-buhl/framework/Debug.php
5,18 → 5,20
* L'affichage et l'utilisation de ces fonctions sont améliorés via cette classe.
* Cette classe est inspirée de la classe Zend_Debug.
*
* @category PHP 5.2
* @package Framework
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* PHP version 5
*
* @category Debogage
* @package Framework
// Auteur principal :
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
// Autres auteurs :
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $$Id$$
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org)
*/
class Debug {
 
const MODE_ECHO = 'echo';
const MODE_NOTICE = 'e_user_notice';
 
/**
* mode de php (cli ou sapi)
*/
40,7 → 42,7
* @param boolean $echo si true on affiche le résultat, si false on ne renvoie que la chaine sans l'afficher
* @return string la chaine à afficher representant le dump ou null si echo
*/
public static function dump($variable, $mot_cle = null, $echo = false) {
public static function dump($variable, $mot_cle = null, $echo = true) {
// var_dump de la variable dans un buffer et récupération de la sortie
ob_start();
var_dump($variable);
54,13 → 56,13
}
 
/**
* Equivalent de print_r.
* Equivalent de print_r
* @param mixed $variable la variable à afficher
* @param string $mot_cle le mot cle à associer
* @param boolean $echo faire un echo ou non
* @return string la chaine contenant la variable printée ou null si echo
*/
public static function printr($variable, $mot_cle = null, $echo = false) {
public static function printr($variable, $mot_cle = null, $echo = true) {
// Récupération de la sortie
$sortie = print_r($variable, true);
 
83,14 → 85,10
$sortie = self::traiterSortieSuivantMode($mot_cle, $sortie);
 
// Affichage et/ou retour
self::verifierParametresConfig();
if (Config::get('fw_debogage') == true) {
if ($echo === true || Config::get('fw_debogage_mode') == self::MODE_ECHO) {
if ($echo) {
echo $sortie;
return null;
} else if (Config::get('fw_debogage_mode') == self::MODE_NOTICE) {
trigger_error($sortie, E_USER_NOTICE);
return null;
} else {
return $sortie;
}
121,23 → 119,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.
*/
private static function verifierParametresConfig() {
$ok = true;
$parametres = array('fw_debogage', 'fw_debogage_mode');
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_WARNING);
$ok = false;
}
}
return $ok;
}
}
?>
/branches/v0.2-buhl/framework/GestionnaireException.php
5,17 → 5,20
* C'est un Singleton.
*
* @category PHP 5.2
* @package Framework
* @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 GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* @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 GestionnaireException {
 
const MODE_CLI = 'cli';
 
/** Liste des exceptions enregistrées */
private static $exceptions = array();
 
37,12 → 40,12
// Désactivation des balises HTML dans les messages d'erreur de PHP en mode ligne de commande
if (self::$mode == self::MODE_CLI) {
ini_set('html_errors', 0);
}
 
}
set_exception_handler(array(get_class(),'gererException'));
set_error_handler(array(get_class(),'gererErreur'));
}
 
/** Configure le Gestionnaire d'exceptions et d'erreur à partir des paramêtres de config. */
public static function configurer() {
self::$contexte = Config::get('fw_debogage_contexte');
49,8 → 52,21
self::$logger = Config::get('fw_log_debogage');
self::$afficher = Config::get('fw_debogage');
}
 
/** Renvoie le booleen définissant si l'on affiche le contexte ou non */
/**
* Renvoie le nombre d'exceptions et d'erreurs levées.
* @see getExceptions() pour obtenir les exceptions formatées.
* @since 0.3
* @return int le nombre d'exception actuellement levées
*/
public static function getExceptionsNbre() {
return count(self::$exceptions);
}
/**
* Renvoie le booleen définissant si l'on affiche le contexte ou non
* @return bool true si on affiche le contexte sinon false.
*/
public static function getContexte() {
return self::$contexte;
}
64,14 → 80,16
}
 
/**
* Fonction de gestion des exceptions, remplace le handler par défaut
* Fonction de gestion des exceptions, remplace le handler par défaut.
* Si une boucle génère de multiple exception (ou erreur) identique une seule sera stockée.
* @param Exception $e l'exception à traiter
*/
public static function gererException(Exception $e) {
// pour le moment on se contente de l'ajouter au tableau et de les afficher
self::$exceptions[] = $e;
// Log si nécéssaire
self::loggerException($e);
$cle = hash('md5', $e->getMessage().'-'.$e->getFile().'-'.$e->getLine());
if (!isset(self::$exceptions[$cle])) {
self::$exceptions[$cle] = $e;
self::loggerException($e);
}
}
 
/**
86,70 → 104,123
// Si un rapport d'erreur existe, création d'une exception
if (error_reporting() != 0) {
$e = new ErrorException($message, 0, $niveau, $fichier, $ligne);
// que l'on donne au tableau d'exceptions
self::$exceptions[] = $e;
// Log si nécéssaire
self::loggerException($e);
self::gererException($e);
}
return null;
}
 
/**
* Renvoie les exceptions au format (X)HTML
* ou bien au format texte suivant le mode d'utilisation de PHP
* Renvoie les exceptions au format (X)HTML ou bien au format texte suivant le mode d'utilisation de PHP.
* @since 0.3
* @deprecated
* @see getExceptionsFormatees()
* @return string les exceptions formatées en texte ou (X)HTML.
*/
public static function getExceptions() {
return self::getExceptionsFormatees();
}
/**
* Renvoie les exceptions au format (X)HTML ou bien au format texte suivant le mode d'utilisation de PHP.
* @since 0.3
* @return string les exceptions formatées en texte ou (X)HTML.
*/
public static function getExceptionsFormatees() {
$retour = '';
foreach (self::$exceptions as $cle => $e) {
switch (self::$mode) {
case self::MODE_CLI :
$retour .= $e->getMessage()."\n";
$retour .= 'Fichier : '.$e->getFile()."\n";
$retour .= 'Ligne : '.$e->getLine()."\n";
if (self::getContexte()) {
$retour .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n";
}
break;
default:
$retour .= '<div class="debogage">'."\n";
$retour .= $e->getMessage()."\n";
$retour .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
$retour .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
if (self::getContexte()) {
$retour .= '<pre>'."\n";
$retour .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n";
$retour .= '</pre>'."\n";
}
$retour .= '</div>'."\n";
if (self::getExceptionsNbre() > 0) {
foreach (self::$exceptions as $cle => $e) {
switch (self::$mode) {
case self::MODE_CLI :
$retour .= self::formaterExceptionTxt($e);
break;
default:
$retour .= self::formaterExceptionXhtml($e);
}
// Nous vidons le tableau des exceptions au fur et à mesure pour éviter le réaffichage avec le destructeur.
unset(self::$exceptions[$cle]);
}
// Nous vidons le tableau des exceptions au fur et à mesure
unset(self::$exceptions[$cle]);
}
return $retour;
}
/**
* Renvoie le tableau d'objets Exception générées par le script PHP triées du niveau de sévérité le plus élevé au moins élevé.
* Format du tableau :
* array{sévérité_1 = array{Exception1, Exception2, Exception3,...}, sévérité_1 = array{Exception1, Exception2, ...}, ...};
* ATTENTION : si vous utilisez cette méthode, c'est à vous de gérer l'affichage des Exceptions. Le gestionnaire d'exception
* n'enverra plus rien au navigateur ou à la console.
* @since 0.3
* @return array le tableau trié d'objet Exception.
*/
public static function getExceptionsTriees() {
$retour = array();
if (self::getExceptionsNbre() > 0) {
foreach (self::$exceptions as $cle => $e) {
$retour[$e->getSeverity()][] = $e;
// Nous vidons le tableau des exceptions au fur et à mesure pour éviter le réaffichage avec le destructeur.
unset(self::$exceptions[$cle]);
}
ksort($retour);
}
return $retour;
}
 
/**
* Logue une exception donnée sous une forme lisible si self::logger vaut true.
* @param Exception $e l'exception à logger
*/
private static function loggerException($e) {
private static function loggerException(Exception $e) {
if (self::$logger) {
$erreur = '';
$erreur .= $e->getMessage()."\n";
$erreur .= 'Fichier : '.$e->getFile()."\n";
$erreur .= 'Ligne : '.$e->getLine()."\n";
if (self::getContexte()) {
$erreur .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n";
}
$erreur .= "\n";
Log::ajouterEntree('erreurs', $erreur);
$message = self::formaterExceptionTxt($e);
Log::ajouterEntree('erreurs', $message);
}
}
 
/**
* Formate en texte une exception passée en paramètre.
* @since 0.3
* @param Exception l'exception à formater.
*/
public static function formaterExceptionTxt(Exception $e) {
$message = '';
$message .= $e->getMessage()."\n";
$message .= 'Fichier : '.$e->getFile()."\n";
$message .= 'Ligne : '.$e->getLine()."\n";
if (self::getContexte()) {
$message .= 'Contexte : '."\n".print_r($e->getTraceAsString(), true)."\n";
}
$message .= "\n";
return $message;
}
/**
* Formate en (X)HTML une exception passée en paramètre.
* @since 0.3
* @param Exception l'exception à formater.
*/
public static function formaterExceptionXhtml(Exception $e) {
$message = '';
$message .= '<div class="debogage">'."\n";
$message .= $e->getMessage()."\n";
$message .= '<span class="debogage_fichier">'.'Fichier : '.$e->getFile().'</span>'."\n";
$message .= '<span class="debogage_ligne">'.'Ligne : '.$e->getLine().'</span>'."\n";
if (self::getContexte()) {
$message .= '<pre>'."\n";
$message .= '<strong>Contexte : </strong>'."\n".print_r($e->getTraceAsString(), true)."\n";
$message .= '</pre>'."\n";
}
$message .= '</div>'."\n";
return $message;
}
/**
* Lors de la destruction de la classe si des exceptions n'ont pas été affichées, et si le débogage est à true, elles sont
* affichées.
*/
public function __destruct() {
// Si des erreurs n'ont pas été affichée nous forçons leur affichage
if (self::$afficher && count(self::$exceptions) > 0) {
echo self::getExceptions();
if (self::$afficher && self::getExceptionsNbre() > 0) {
echo self::getExceptionsFormatees();
}
}
 
/branches/v0.2-buhl/framework/Controleur.php
5,18 → 5,21
* qui devrait être appelée de l'extérieur.
* Elle est abstraite donc doit obligatoirement être étendue.
*
* @category PHP 5.2
* @category php5
* @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 GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* @copyright 2009 Tela-Botanica
* @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$
* @link /doc/framework/
*
*/
abstract class Controleur {
/** Variable statique indiquant que les tableaux _GET et _POST ont déjà été encodé au format de l'appli. */
private static $encodage = false;
 
/** Registre global, normalement accessible partout */
private $registre;
 
110,35 → 113,9
$_GET = $this->encoderTableau($_GET, Config::get('appli_encodage'), Config::get('sortie_encodage'));
self::$encodage = true;
}
 
// traitement des magic quotes
$this->verifierEtTraiterSlashTableauRequete();
}
 
/**
* Procédure vérifiant l'activation des magic quotes et remplace les slash dans les tableaux de requete
*/
private function verifierEtTraiterSlashTableauRequete() {
 
if ( get_magic_quotes_gpc() ) {
 
if (!function_exists('stripslashes_deep')) {
function stripslashes_deep( $value ) {
 
return ( is_array($value) )
? array_map('stripslashes_deep', $value)
: stripslashes($value);
 
} // end of 'stripslashes_deep()'
 
$_GET = array_map('stripslashes_deep', $_GET);
$_POST = array_map('stripslashes_deep', $_POST);
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
}
}
}
 
/**
* Fonction récursive transcodant toutes les valeurs d'un tableau de leur encodage d'entrée vers un encodage de sortie donné
* @param $tableau Array Un tableau de données à encoder
* @param $encodage_sortie String l'encodage vers lequel on doit transcoder
/branches/v0.2-buhl/framework/Log.php
5,10 → 5,11
*
* @category PHP 5.2
* @package Framework
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @copyright Copyright (c) 2009, Tela Botanica (accueil@tela-botanica.org)
* @license GNU-GPL-v3 <http://www.gnu.org/licenses/gpl.html>
* @license CECILL-v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* @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/
*/
 
class Log {
66,7 → 67,7
self::desactiverEcriture();
}
}
 
/**
* Configure le Log à partir des paramêtres de config.
*/
110,7 → 111,7
 
/**
* Vérifie la présence d'un fichier dans le tableau, ses droits d'écriture, l'ouvre si nécessaire.
*
*
* @param string $nomFichier le nom du fichier dont on doit vérifier la présence
* @return boolean true si le fichier est ouvert ou maintenant accessible, false sinon
*/