view includes/class.requete.php @ 29:750613da68ec

Ajout d'un fallback en cas d'absence de TreeWalker. Ca devrait permettre de faire fonctionner l'administration dans la plupart des navigateurs (modulo la vérification de validité XML éventuellement).
author Franck Deroche <webmaster@defr.org>
date Thu, 01 Nov 2007 17:44:43 +0100
parents 629389204276
children 8d209692d734
line wrap: on
line source
<?php
/*
	Cette classe permet de filtrer tout le contenu entrant, et permet de se dispenser de
	toutes les super-globales.
	Element unique pour l'ensemble de la génération, on y accède via Factory::getRequest()
*/
	class Requete
	{
		private $arData;
		
		public function __construct()
		{
			$this->loadArray($_POST, 'POST');
			$this->loadArray($_GET, 'GET');
			$this->loadArray($_COOKIE, 'COOKIE');
		}
		
		// Chargement d'un tableau donné
		private function loadArray($array, $name = null)
		{
		    $magic_quotes = (ini_get('magic_quotes_gpc') == '1');
		    if(!is_array($array)) return;
		    if(empty($name)) $name = md5(serialize(microtime()));
		    foreach($array as $key => $value)
		    {
			$this->arData[$key][$name] = ($magic_quotes) ? $value : addslashes($value);
		    }
		}
		
		// Récuperation d'une des variables 
		public function get($varName, $orig = null, $default = '')
		{
			if(!isset($this->arData[$varName])) return $default;
			if(!empty($orig) && !isset($this->arData[$varName][$orig])) return $default;
			if(!empty($orig)) return $this->arData[$varName][$orig];
			return current($this->arData[$varName]);
		}
		
		// Récuperation d'un tableau de variables dont le nom correspond à un pattern
		public function matchingPattern($preg_pattern, $orig = null)
		{
			$returnValue = array();
			foreach($this->arData as $key => $array)
			{
				if(!preg_match($preg_pattern, $key)) continue;
				$returnValue[$key] = $this->get($key, $orig);
			}
			return $returnValue;
		}
		
		// Equivalent de |isset|
		public function varSet($varName, $orig = null)
		{
			if(!isset($this->arData[$varName])) return false;
			if(is_null($orig)) return true;
			return (isset($this->arData[$varName][$orig]));
		}
	}
?>