Subversion Repositories Applications.referentiel

Rev

Rev 26 | Rev 37 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 26 Rev 33
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Classe Controleur générale partagée par les différents modules de l'application.
4
 * Classe Controleur générale partagée par les différents modules de l'application.
5
 *
5
 *
6
 * @package		Referentiel
6
 * @package		Referentiel
7
 * @category	Php5.2
7
 * @category	Php5.2
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @copyright	2010 Tela-Botanica
9
 * @copyright	2010 Tela-Botanica
10
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version		SVN: $Id$
12
 * @version		SVN: $Id$
13
 */
13
 */
14
abstract class AppliControleur extends Controleur {
14
abstract class AppliControleur extends Controleur {
15
	
15
	
16
	const RENDU_TETE = 'tete';
16
	const RENDU_TETE = 'tete';
17
	const RENDU_CORPS = 'corps';
17
	const RENDU_CORPS = 'corps';
18
	const RENDU_PIED = 'pied';
18
	const RENDU_PIED = 'pied';
19
	
19
	
20
	// FIXME : voir s'il est plus intéressant d'utiliser une méthode dans les classes filles
20
	// FIXME : voir s'il est plus intéressant d'utiliser une méthode dans les classes filles
21
	protected $url = null;
21
	protected $url = null;
22
	private $parametres = array();
22
	private $parametres = array();
23
	private $sortie = array();
23
	private $sortie = array();
24
	private $messages = null;
24
	private $messages = null;
25
	
25
	
26
	//+----------------------------------------------------------------------------------------------------------------+
26
	//+----------------------------------------------------------------------------------------------------------------+
27
	// Constructeur
27
	// Constructeur
28
	
28
	
29
	public function __construct()  {
29
	public function __construct()  {
30
		$registre = Registre::getInstance();
30
		$registre = Registre::getInstance();
31
		$this->parametres = $registre->get('parametres');
31
		$this->parametres = $registre->get('parametres');
32
		$this->url = $this->parametres['url'];
32
		$this->url = $this->parametres['url'];
33
		parent::__construct();
33
		parent::__construct();
34
	}
34
	}
35
	
35
	
36
	//+----------------------------------------------------------------------------------------------------------------+
36
	//+----------------------------------------------------------------------------------------------------------------+
37
	// Accesseurs
37
	// Accesseurs
38
 
38
 
39
	/**
39
	/**
40
	 * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
40
	 * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
41
	 */
41
	 */
42
	public function getSortie() {
42
	public function getSortie() {
43
		return $this->sortie;
43
		return $this->sortie;
44
	}
44
	}
45
 
45
 
46
	/**
46
	/**
47
	 * Attribue à la bonne position de sortie un contenu.
47
	 * Attribue à la bonne position de sortie un contenu.
48
	 */
48
	 */
49
	protected function setSortie($position, $contenu, $fusionner = false) {
49
	protected function setSortie($position, $contenu, $fusionner = false) {
50
		if ($this->verifierExistencePosition($position)) {
50
		if ($this->verifierExistencePosition($position)) {
51
			if ($fusionner) {
51
			if ($fusionner) {
52
				$this->sortie[$position] .= $contenu;
52
				$this->sortie[$position] .= $contenu;
53
			} else {
53
			} else {
54
				$this->sortie[$position] = $contenu;
54
				$this->sortie[$position] = $contenu;
55
			}
55
			}
56
		}
56
		}
57
	}
57
	}
58
	
58
	
59
	/**
59
	/**
60
	 * Retourne le tableau des messages
60
	 * Retourne le tableau des messages
61
	 */
61
	 */
62
	protected function getMessages() {
62
	protected function getMessages() {
63
		return $this->messages;
63
		return $this->messages;
64
	}
64
	}
65
	/**
65
	/**
66
	 * Ajoute un message
66
	 * Ajoute un message
67
	 */
67
	 */
68
	protected function addMessage($message) {
68
	protected function addMessage($message) {
69
		if ('' != $message) {
69
		if ('' != $message) {
70
			$this->messages[] = $message;
70
			$this->messages[] = $message;
71
		}
71
		}
72
	}
72
	}
73
	
73
	
74
	
74
	
75
	//+----------------------------------------------------------------------------------------------------------------+
75
	//+----------------------------------------------------------------------------------------------------------------+
76
	// Méthodes
76
	// Méthodes
77
	
77
	
78
	/**
78
	/**
79
	 * Vérifie l'existence de la position indiquée pour son utilisation dans le tableau de sortie.
79
	 * Vérifie l'existence de la position indiquée pour son utilisation dans le tableau de sortie.
80
	 * @param string la position à tester.
80
	 * @param string la position à tester.
81
	 * @return bool true si la position est valide, sinon false.
81
	 * @return bool true si la position est valide, sinon false.
82
	 */
82
	 */
83
	private function verifierExistencePosition($position) {
83
	private function verifierExistencePosition($position) {
84
		$existe = true;
84
		$existe = true;
85
		if ($position != self::RENDU_TETE &&
85
		if ($position != self::RENDU_TETE &&
86
			$position != self::RENDU_CORPS &&
86
			$position != self::RENDU_CORPS &&
87
			$position != self::RENDU_PIED) {
87
			$position != self::RENDU_PIED) {
88
			trigger_error("La position '$position' n'est pas une valeur prédéfinie.", E_USER_WARNING);
88
			trigger_error("La position '$position' n'est pas une valeur prédéfinie.", E_USER_WARNING);
89
			$existe = false;
89
			$existe = false;
90
		}
90
		}
91
		return $existe;
91
		return $existe;
92
	}
92
	}
93
	
93
	
94
	/**
94
	/**
95
	 * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
95
	 * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
96
	 */
96
	 */
97
	protected function executerAction($ClasseModule, $action) {
97
	protected function executerAction($ClasseModule, $action) {
98
		$module = new $ClasseModule();
98
		$module = new $ClasseModule();
99
		$module->$action();
99
		$module->$action();
100
		$this->fusionnerSortie($module->getSortie());
100
		$this->fusionnerSortie($module->getSortie());
101
		
101
		
102
	}
102
	}
103
	
103
	
104
	/**
104
	/**
105
	 * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
105
	 * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
106
	 * @param array le tableau à fusionner
106
	 * @param array le tableau à fusionner
107
	 */
107
	 */
108
	private function fusionnerSortie($sortie) {
108
	private function fusionnerSortie($sortie) {
109
		$this->sortie = array_merge($this->sortie, $sortie);
109
		$this->sortie = array_merge($this->sortie, $sortie);
110
	}
110
	}
111
	
111
	
112
	protected function postraiterDonnees(&$tableau) {
112
	protected function postraiterDonnees(&$tableau) {
113
		if (count($tableau) > 0) {
113
		if (count($tableau) > 0) {
114
			foreach ($tableau as $cle => &$valeur) {
114
			foreach ($tableau as $cle => &$valeur) {
115
				if ($valeur == '') {
115
				if ($valeur == '') {
116
					$valeur = '&nbsp;';
116
					$valeur = '&nbsp;';
117
				} else if (is_string($valeur)) {
117
				} else if (is_string($valeur)) {
118
					$valeur = preg_replace('/&(?!amp;)/i', '&amp;', $valeur, -1);
118
					$valeur = $this->remplacerEsperluette($valeur);
119
				} else if (is_array($valeur)) {
119
				} else if (is_array($valeur)) {
120
					$this->postraiterDonnees($valeur);
120
					$this->postraiterDonnees($valeur);
121
				}
121
				}
122
			}
122
			}
123
		}
123
		}
124
	}
124
	}
-
 
125
	
-
 
126
	protected function traiterEsperluette(&$tableau) {
-
 
127
		if (count($tableau) > 0) {
-
 
128
			foreach ($tableau as $cle => &$valeur) {
-
 
129
				if (is_string($valeur)) {
-
 
130
					$valeur = $this->remplacerEsperluette($valeur);
-
 
131
				} else if (is_array($valeur)) {
-
 
132
					$this->traiterEsperluette($valeur);
-
 
133
				}
-
 
134
			}
-
 
135
		}
-
 
136
	}
-
 
137
	
-
 
138
	private function remplacerEsperluette($txt) {
-
 
139
		$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9a-f]+);)/i', '&amp;', $txt, -1);
-
 
140
		return $txt;
-
 
141
	}
-
 
142
	
125
}
143
}
126
144