Subversion Repositories eFlore/Applications.del

Rev

Rev 1793 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
723 gduche 1
<?php
1794 jpm 2
// declare(encoding='UTF-8');
723 gduche 3
/**
1794 jpm 4
 * Gère les paramètres de type "masque..." utilisés dans l'URL.
5
 *
6
 * @category DEL
7
 * @package Services
8
 * @subpackage Bibliotheque
9
 * @version 0.1
10
 * @author Mathias CHOUET <mathias@tela-botanica.org>
11
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
12
 * @author Aurelien PERONNET <aurelien@tela-botanica.org>
13
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
14
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
15
 * @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>
723 gduche 16
*/
17
class Masque {
1793 jpm 18
 
1794 jpm 19
	const PREFIXE = 'masque.';
20
	const MASQUE_GENERAL = 'masque';
1793 jpm 21
 
723 gduche 22
	private $masquesPossibles;
23
	private $parametres;
24
	private $masque;
1793 jpm 25
 
723 gduche 26
	/**
27
	 * Constructeur de la classe Masque
28
	 * @param $masquesPossibles la liste des masques autorisés séparé par des ','
29
	 * */
30
	public function __construct($masquesPossibles, $parametres = null) {
817 aurelien 31
		if ($masquesPossibles != null && trim($masquesPossibles) == '') {
723 gduche 32
			$message = 'La liste des masques possibles est obligatoire';
33
			$code = RestServeur::HTTP_CODE_ERREUR;
34
			throw new Exception($message, $code);
35
		}
36
		$this->masquesPossibles = explode(',', $masquesPossibles);
37
		$this->parametres = $parametres;
38
		$this->chargerMasque();
39
	}
1793 jpm 40
 
723 gduche 41
	/**
42
	 * Parcourir le tableau Paramètres pour trouver tous les champs masque
43
	 */
1794 jpm 44
	private function chargerMasque() {
1793 jpm 45
		if ($this->parametres != null) {
723 gduche 46
			foreach ($this->parametres as $id => $parametre) {
1794 jpm 47
				if (strpos($id, self::PREFIXE) === 0 || $id == self::MASQUE_GENERAL) {
48
					if (in_array(str_replace(self::PREFIXE, '', $id), $this->masquesPossibles)) {
723 gduche 49
						$this->masque[$id] = $parametre;
50
					}
51
				}
52
			}
53
		}
54
	}
1793 jpm 55
 
723 gduche 56
	/**
57
	 * Retourner les masques sous forme de chaine
58
	 * @return String la chaine de caractère sous la forme masque=valeur&masque2=valeur*/
59
	public function getChaineMasque() {
60
		if (!empty($this->masque)) {
61
			$chaine = array();
62
			foreach ($this->masque as $id => $valeur) {
63
				$chaine[] = $id.'='.$valeur;
64
			}
65
			return implode('&', $chaine);
66
		} else {
67
			return '';
68
		}
69
	}
1793 jpm 70
 
723 gduche 71
	/**
72
	 * Récupérer tout ou partie du masque
73
	 * @param String $id (optionnel) l'idenfiant du masque
74
	 * @return une chaine de caractère si l'identifiant est passé en paramètre, un tableau sinon
75
	 * */
76
	public function getMasque($id = null) {
77
		if (isset($id)) {
1794 jpm 78
			return $this->masque[self::PREFIXE.$id];
723 gduche 79
		} else {
80
			return $this->masque;
81
		}
82
	}
1793 jpm 83
}