8,7 → 8,7 |
* Les widget sont dans des dossiers en minuscule correspondant au nom de la classe du widget. |
* Exemple : /widget/carto avec la classe Carto.php dans le dossier carto. |
* |
* |
* |
* @author jpm |
* |
*/ |
19,10 → 19,10 |
|
/** Le nom du widget demandé. */ |
private $widget = null; |
|
|
/** Les chemins où l'autoload doit chercher des classes. */ |
private static $autoload_chemins = array(); |
|
|
/** Les paramètres de l'url $_GET nettoyés. */ |
private $parametres = null; |
|
34,20 → 34,20 |
public function __construct($fichier_ini = 'widget.ini.php') { |
// Chargement de la configuration |
self::$config = parse_ini_file($fichier_ini, TRUE); |
|
|
// Paramêtres de config dynamiques |
self::$config['chemins']['baseURLAbsoluDyn'] = 'http://'.$_SERVER['SERVER_NAME'].self::$config['chemins']['baseURL'].'%s'; |
|
|
// Gestion de la mémoire maximum allouée aux services |
ini_set('memory_limit', self::$config['parametres']['limiteMemoire']); |
|
|
// Réglages de PHP |
setlocale(LC_ALL, self::$config['parametres']['locale']); |
date_default_timezone_set(self::$config['parametres']['fuseauHoraire']); |
|
|
// Gestion des erreurs |
error_reporting(self::$config['parametres']['erreurNiveau']); |
|
|
if (isset($_SERVER['REQUEST_URI']) && isset($_SERVER['QUERY_STRING'])) { |
$url_morceaux = $this->parserUrl(); |
if (isset($url_morceaux[0])) { |
57,10 → 57,10 |
} |
// Chargement des chemins pour l'autoload |
$this->chargerCheminAutoload(); |
|
|
// Enregistrement de la méthode gérant l'autoload des classes |
spl_autoload_register(array('Widget', 'chargerClasse')); |
|
|
// Nettoyage du $_GET (sécurité) |
$this->collecterParametres(); |
} else { |
68,7 → 68,7 |
trigger_error($e, E_USER_ERROR); |
} |
} |
|
|
private function parserUrl() { |
if (strlen($_SERVER['QUERY_STRING']) == 0) { |
$len = strlen($_SERVER['REQUEST_URI']); |
79,7 → 79,7 |
$url_morceaux = explode('/', $url); |
return $url_morceaux; |
} |
|
|
private function collecterParametres() { |
if (isset($_GET) && $_GET != '') { |
$this->nettoyerGet(); |
86,7 → 86,7 |
$this->parametres = $_GET; |
} |
} |
|
|
private function nettoyerGet() { |
foreach ($_GET as $cle => $valeur) { |
$verifier = array('NULL', "\n", "\r", "\\", '"', "\x00", "\x1a", ';'); |
93,12 → 93,12 |
$_GET[$cle] = strip_tags(str_replace($verifier, '', $valeur)); |
} |
} |
|
|
private function chargerCheminAutoload() { |
$chemins_communs = explode(';', self::$config['chemins']['autoload']); |
$chemins_communs = array_map('trim', $chemins_communs); |
array_unshift($chemins_communs, ''); |
|
|
$chemins_widget = array(); |
if (isset(self::$config[$this->widget]['autoload'])) { |
$chemins_widget = explode(';', self::$config[$this->widget]['autoload']); |
106,10 → 106,10 |
$chemins_widget[$cle] = self::$config['chemins']['widgetCourantDossier'].trim($chemin); |
} |
} |
|
|
self::$autoload_chemins = array_merge($chemins_communs, $chemins_widget); |
} |
|
|
/** |
* La méthode chargerClasse() charge dynamiquement les classes trouvées dans le code. |
* Cette fonction est appelée par php5 quand il trouve une instanciation de classe dans le code. |
128,8 → 128,8 |
} |
} |
} |
|
|
|
|
/** |
* Execute le widget. |
*/ |
146,7 → 146,7 |
} |
} |
} |
|
|
/** |
* Charge le fichier de config spécifique du wiget et fusionne la config avec celle partagés par l'ensemble des widgets. |
*/ |
157,5 → 157,4 |
self::$config = array_merge(self::$config, $widget_config); |
} |
} |
} |
?> |
} |