diff includes/class.requete.php @ 0:629389204276

Import initial
author Franck Deroche <webmaster@defr.org>
date Sat, 20 Oct 2007 14:15:10 +0200
parents
children 8d209692d734
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/includes/class.requete.php	Sat Oct 20 14:15:10 2007 +0200
@@ -0,0 +1,59 @@
+<?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]));
+		}
+	}
+?>
\ No newline at end of file