Subversion Repositories Applications.referentiel

Rev

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

Rev 39 Rev 45
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
	const RENDU_NAVIGATION = 'navigation';
19
	const RENDU_NAVIGATION = 'navigation';
20
	const RENDU_MENU = 'menu';
20
	const RENDU_MENU = 'menu';
21
	
21
	
22
	// FIXME : voir s'il est plus intéressant d'utiliser une méthode dans les classes filles
22
	// FIXME : voir s'il est plus intéressant d'utiliser une méthode dans les classes filles
23
	protected $url = null;
23
	protected $url = null;
24
	private $parametres = array();
24
	private $parametres = array();
25
	private $sortie = array();
25
	private $sortie = array();
26
	private $messages = null;
26
	private $messages = null;
27
	
27
	
28
	//+----------------------------------------------------------------------------------------------------------------+
28
	//+----------------------------------------------------------------------------------------------------------------+
29
	// Constructeur
29
	// Constructeur
30
	
30
	
31
	public function __construct()  {
31
	public function __construct()  {
32
		$registre = Registre::getInstance();
32
		$registre = Registre::getInstance();
33
		$this->parametres = $registre->get('parametres');
33
		$this->parametres = $registre->get('parametres');
34
		$this->url = $this->parametres['url'];
34
		$this->url = $this->parametres['url'];
35
		parent::__construct();
35
		parent::__construct();
36
	}
36
	}
37
	
37
	
38
	//+----------------------------------------------------------------------------------------------------------------+
38
	//+----------------------------------------------------------------------------------------------------------------+
39
	// Accesseurs
39
	// Accesseurs
40
 
40
 
41
	/**
41
	/**
42
	 * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
42
	 * Retourne le tableau de sortie à utiliser dans le controleur principal de l'application.
43
	 */
43
	 */
44
	public function getSortie() {
44
	public function getSortie() {
45
		return $this->sortie;
45
		return $this->sortie;
46
	}
46
	}
47
 
47
 
48
	/**
48
	/**
49
	 * Attribue à la bonne position de sortie un contenu.
49
	 * Attribue à la bonne position de sortie un contenu.
50
	 */
50
	 */
51
	protected function setSortie($position, $contenu, $fusionner = false) {
51
	protected function setSortie($position, $contenu, $fusionner = false) {
52
		if ($this->verifierExistencePosition($position)) {
52
		if ($this->verifierExistencePosition($position)) {
53
			if ($fusionner) {
53
			if ($fusionner) {
54
				$this->sortie[$position] .= $contenu;
54
				$this->sortie[$position] .= $contenu;
55
			} else {
55
			} else {
56
				$this->sortie[$position] = $contenu;
56
				$this->sortie[$position] = $contenu;
57
			}
57
			}
58
		}
58
		}
59
	}
59
	}
60
	
60
	
61
	/**
61
	/**
62
	 * Retourne le tableau des messages
62
	 * Retourne le tableau des messages
63
	 */
63
	 */
64
	protected function getMessages() {
64
	protected function getMessages() {
65
		return $this->messages;
65
		return $this->messages;
66
	}
66
	}
67
	/**
67
	/**
68
	 * Ajoute un message
68
	 * Ajoute un message
69
	 */
69
	 */
70
	protected function addMessage($message) {
70
	protected function addMessage($message) {
71
		if ('' != $message) {
71
		if ('' != $message) {
72
			$this->messages[] = $message;
72
			$this->messages[] = $message;
73
		}
73
		}
74
	}
74
	}
75
	
75
	
76
	
76
	
77
	//+----------------------------------------------------------------------------------------------------------------+
77
	//+----------------------------------------------------------------------------------------------------------------+
78
	// Méthodes
78
	// Méthodes
79
	
79
	
80
	/**
80
	/**
81
	 * Vérifie l'existence de la position indiquée pour son utilisation dans le tableau de sortie.
81
	 * Vérifie l'existence de la position indiquée pour son utilisation dans le tableau de sortie.
82
	 * @param string la position à tester.
82
	 * @param string la position à tester.
83
	 * @return bool true si la position est valide, sinon false.
83
	 * @return bool true si la position est valide, sinon false.
84
	 */
84
	 */
85
	private function verifierExistencePosition($position) {
85
	private function verifierExistencePosition($position) {
86
		$existe = true;
86
		$existe = true;
87
		if ($position != self::RENDU_TETE &&
87
		if ($position != self::RENDU_TETE &&
88
			$position != self::RENDU_CORPS &&
88
			$position != self::RENDU_CORPS &&
89
			$position != self::RENDU_PIED &&
89
			$position != self::RENDU_PIED &&
90
			$position != self::RENDU_NAVIGATION &&
90
			$position != self::RENDU_NAVIGATION &&
91
			$position != self::RENDU_MENU) {
91
			$position != self::RENDU_MENU) {
92
			trigger_error("La position '$position' n'est pas une valeur prédéfinie.", E_USER_WARNING);
92
			trigger_error("La position '$position' n'est pas une valeur prédéfinie.", E_USER_WARNING);
93
			$existe = false;
93
			$existe = false;
94
		}
94
		}
95
		return $existe;
95
		return $existe;
96
	}
96
	}
97
	
97
	
98
	/**
98
	/**
99
	 * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
99
	 * Execute l'action d'un module donnée et fusionne le résultat avec le tableau de sortie.
100
	 */
100
	 */
101
	protected function executerAction($ClasseModule, $action) {
101
	protected function executerAction($ClasseModule, $action) {
102
		$module = new $ClasseModule();
102
		$module = new $ClasseModule();
103
		$module->$action();
103
		$module->$action();
104
		$this->fusionnerSortie($module->getSortie());
104
		$this->fusionnerSortie($module->getSortie());
105
		
105
		
106
	}
106
	}
107
	
107
	
108
	/**
108
	/**
109
	 * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
109
	 * Fusionne un tableau de sortie par défaut avec le tableau passé en paramêtre.
110
	 * @param array le tableau à fusionner
110
	 * @param array le tableau à fusionner
111
	 */
111
	 */
112
	private function fusionnerSortie($sortie) {
112
	private function fusionnerSortie($sortie) {
113
		$this->sortie = array_merge($this->sortie, $sortie);
113
		$this->sortie = array_merge($this->sortie, $sortie);
114
	}
114
	}
115
	
115
	
116
	protected function postraiterDonnees(&$tableau) {
116
	protected function postraiterDonnees(&$tableau) {
117
		if (count($tableau) > 0) {
117
		if (count($tableau) > 0) {
118
			foreach ($tableau as $cle => &$valeur) {
118
			foreach ($tableau as $cle => &$valeur) {
119
				if ($valeur == '') {
119
				if ($valeur == '') {
120
					$valeur = '&nbsp;';
120
					$valeur = '&nbsp;';
121
				} else if (is_string($valeur)) {
121
				} else if (is_string($valeur)) {
122
					$valeur = $this->remplacerEsperluette($valeur);
122
					$valeur = $this->remplacerEsperluette($valeur);
123
				} else if (is_array($valeur)) {
123
				} else if (is_array($valeur)) {
124
					$this->postraiterDonnees($valeur);
124
					$this->postraiterDonnees($valeur);
125
				}
125
				}
126
			}
126
			}
127
		}
127
		}
128
	}
128
	}
129
	
129
	
130
	protected function traiterEsperluette(&$tableau) {
130
	protected function traiterEsperluette(&$tableau) {
131
		if (count($tableau) > 0) {
131
		if (count($tableau) > 0) {
132
			foreach ($tableau as $cle => &$valeur) {
132
			foreach ($tableau as $cle => &$valeur) {
133
				if (is_string($valeur)) {
133
				if (is_string($valeur)) {
134
					$valeur = $this->remplacerEsperluette($valeur);
134
					$valeur = $this->remplacerEsperluette($valeur);
135
				} else if (is_array($valeur)) {
135
				} else if (is_array($valeur)) {
136
					$this->traiterEsperluette($valeur);
136
					$this->traiterEsperluette($valeur);
137
				}
137
				}
138
			}
138
			}
139
		}
139
		}
140
	}
140
	}
141
	
141
	
142
	private function remplacerEsperluette($txt) {
142
	private function remplacerEsperluette($txt) {
143
		$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9a-f]+);)/i', '&amp;', $txt, -1);
143
		$txt = preg_replace('/&(?!([a-z]+|#[0-9]+|#x[0-9a-f]+);)/i', '&amp;', $txt, -1);
144
		return $txt;
144
		return $txt;
145
	}
145
	}
-
 
146
	
-
 
147
	protected function initialiserModulePrincipal() {
-
 
148
		$_SESSION['module_principal'] = null;
-
 
149
	}
-
 
150
	
-
 
151
	protected function definirCommeModulePrincipal($module_nom) {
-
 
152
		$_SESSION['module_principal'] = $module_nom;
-
 
153
	}
-
 
154
 
-
 
155
	private function getModulePrincipalCourant() {
-
 
156
		return $_SESSION['module_principal'];
-
 
157
	}
-
 
158
	
146
	/**
159
	/**
147
	 * Construction du menu et stockage dans le conteneur de sortie RENDU_MENU.
160
	 * Construction du menu et stockage dans le conteneur de sortie RENDU_MENU.
148
	 * 
161
	 * 
149
	 * @param string $referentiel code du référentiel.
162
	 * @param string $referentiel code du référentiel.
150
	 */
163
	 */
151
	protected function construireMenu($referentiel) {
164
	protected function construireMenu($referentiel) {
152
		$menu['nom'] = 'Accueil';
165
		$menu['nom'] = 'Accueil';
153
		$menu['url'] = $this->obtenirUrlMenuAccueil(); 
166
		$menu['url'] = $this->obtenirUrlMenuAccueil(); 
154
		$donnees['menus'][] = $menu;
167
		$donnees['menus'][] = $menu;
155
		$menu['nom'] = 'Tests';
168
		$menu['nom'] = 'Tests';
156
		$menu['url'] = $this->obtenirUrlMenuTest($referentiel); 
169
		$menu['url'] = $this->obtenirUrlMenuTest($referentiel); 
157
		$donnees['menus'][] = $menu;
170
		$donnees['menus'][] = $menu;
158
		$menu['nom'] = 'Versionnage';
171
		$menu['nom'] = 'Versionnage';
159
		$menu['url'] = $this->obtenirUrlMenuVersionnage($referentiel);
172
		$menu['url'] = $this->obtenirUrlMenuVersionnage($referentiel);
160
		$donnees['menus'][] = $menu;
173
		$donnees['menus'][] = $menu;
161
		$menu['nom'] = 'Consultation';
174
		$menu['nom'] = 'Consultation';
162
		$menu['url'] = $this->obtenirUrlMenuConsultation($referentiel);
175
		$menu['url'] = $this->obtenirUrlMenuConsultation($referentiel);
163
		$donnees['menus'][] = $menu;
176
		$donnees['menus'][] = $menu;
164
		$this->setSortie(self::RENDU_MENU, $this->getVue('menu', $donnees), false);
177
		$this->setSortie(self::RENDU_MENU, $this->getVue('menu', $donnees), false);
165
	}
178
	}
166
	/**
179
	/**
167
	 * Construction du fil d'ariane et stockage dans le conteneur de sortie RENDU_NAVIGATION.
180
	 * Construction du fil d'ariane et stockage dans le conteneur de sortie RENDU_NAVIGATION.
168
	 * 
181
	 * 
169
	 * @param $referentiel code du référentiel
182
	 * @param $referentiel code du référentiel
170
	 * @param $id_traitement id du traitement
183
	 * @param $id_traitement id du traitement
171
	 * @param $id_resultat id du résultat
184
	 * @param $id_resultat id du résultat
172
	 */
185
	 */
173
	protected function construireFilAriane($referentiel = null, $id_traitement = null, $id_resultat = null) {
186
	protected function construireFilAriane($referentiel = null, $id_traitement = null, $id_resultat = null) {
174
		$entree['nom'] = 'Accueil';
187
		$entree['nom'] = 'Accueil';
175
		$entree['url'] = $this->obtenirUrlMenuAccueil();
188
		$entree['url'] = $this->obtenirUrlMenuAccueil();
176
		$donnees['entrees'][] = $entree;
189
		$donnees['entrees'][] = $entree;
177
		
190
		
178
		if (isset($referentiel)) {
191
		if (isset($referentiel)) {
179
			$entree['nom'] = strtoupper($referentiel);
192
			$entree['nom'] = strtoupper($referentiel);
180
			$entree['url'] = $this->obtenirUrlDetailReferentiel($referentiel);
193
			$entree['url'] = $this->obtenirUrlDetailReferentiel($referentiel);
181
			$donnees['entrees'][] = $entree;
194
			$donnees['entrees'][] = $entree;
182
			
195
			
183
			$module = Referentiel::getModule();
196
			$module_principal = $this->getModulePrincipalCourant();
184
			if ($module != 'Accueil') {
197
			if (isset($module_principal)) {
185
				$entree['nom'] = $module;
198
				$entree['nom'] = $module_principal;
186
				$entree['url'] = $this->obtenirUrlMenu($module, $referentiel);
199
				$entree['url'] = $this->obtenirUrlMenu($module_principal, $referentiel);
187
				$donnees['entrees'][] = $entree;
200
				$donnees['entrees'][] = $entree;
188
			}
201
			}
189
			
202
			
190
			if (isset($id_traitement)) {
203
			if (isset($id_traitement)) {
191
				$entree['nom'] = "Traitement #$id_traitement";
204
				$entree['nom'] = "Traitement #$id_traitement";
192
				$entree['url'] = $this->obtenirUrlFicheTraitement($referentiel, $id_traitement);
205
				$entree['url'] = $this->obtenirUrlFicheTraitement($referentiel, $id_traitement);
193
				$donnees['entrees'][] = $entree;
206
				$donnees['entrees'][] = $entree;
194
			}
207
			}
195
			
208
			
196
			if (isset($id_resultat)) {
209
			if (isset($id_resultat)) {
197
				$entree['nom'] = "Résultat #$id_resultat";
210
				$entree['nom'] = "Résultat #$id_resultat";
198
				$entree['url'] = $this->obtenirUrlFicheResultat($referentiel, $id_resultat);
211
				$entree['url'] = $this->obtenirUrlFicheResultat($referentiel, $id_resultat);
199
				$donnees['entrees'][] = $entree;
212
				$donnees['entrees'][] = $entree;
200
			}
213
			}
201
		}
214
		}
202
		
215
		
203
		$this->setSortie(self::RENDU_NAVIGATION, $this->getVue('fil_ariane', $donnees), false);
216
		$this->setSortie(self::RENDU_NAVIGATION, $this->getVue('fil_ariane', $donnees), false);
204
	}
217
	}
205
	
218
	
206
	protected function obtenirUrlDetailReferentiel($referentiel) {
219
	protected function obtenirUrlDetailReferentiel($referentiel) {
207
		$this->url->setRequete(false);
220
		$this->url->setRequete(false);
208
		$this->url->setVariableRequete('module', 'Accueil');
221
		$this->url->setVariableRequete('module', 'Accueil');
209
		$this->url->setVariableRequete('action', 'afficherDetail');
222
		$this->url->setVariableRequete('action', 'afficherDetail');
210
		$this->url->setVariableRequete('ref', $referentiel);
223
		$this->url->setVariableRequete('ref', $referentiel);
211
		$url = $this->url->getURL();
224
		$url = $this->url->getURL();
212
		$this->url->unsetVariablesRequete(array('module', 'action', 'ref'));
225
		$this->url->unsetVariablesRequete(array('module', 'action', 'ref'));
213
		return $url;
226
		return $url;
214
	}
227
	}
215
	
228
	
216
	protected function obtenirUrlMenuAccueil() {
229
	protected function obtenirUrlMenuAccueil() {
217
		return $this->obtenirUrlMenu('Accueil');
230
		return $this->obtenirUrlMenu('Accueil');
218
	}
231
	}
219
	
232
	
220
	protected function obtenirUrlMenuTest($referentiel) {
233
	protected function obtenirUrlMenuTest($referentiel) {
221
		return $this->obtenirUrlMenu('Test', $referentiel);
234
		return $this->obtenirUrlMenu('Test', $referentiel);
222
	}
235
	}
223
	
236
	
224
	protected function obtenirUrlMenuVersionnage($referentiel) {
237
	protected function obtenirUrlMenuVersionnage($referentiel) {
225
		return $this->obtenirUrlMenu('Versionnage', $referentiel);
238
		return $this->obtenirUrlMenu('Versionnage', $referentiel);
226
	}
239
	}
227
	
240
	
228
	protected function obtenirUrlMenuConsultation($referentiel) {
241
	protected function obtenirUrlMenuConsultation($referentiel) {
229
		return $this->obtenirUrlMenu('Consultation', $referentiel);
242
		return $this->obtenirUrlMenu('Consultation', $referentiel);
230
	}
243
	}
231
	
244
	
232
	private function obtenirUrlMenu($menu, $referentiel = null) {
245
	private function obtenirUrlMenu($menu, $referentiel = null) {
233
		$this->url->setRequete(false);
246
		$this->url->setRequete(false);
234
		$this->url->setVariableRequete('module', $menu);
247
		$this->url->setVariableRequete('module', $menu);
235
		if (isset($referentiel)) {
248
		if (isset($referentiel)) {
236
			$this->url->setVariableRequete('ref', $referentiel);
249
			$this->url->setVariableRequete('ref', $referentiel);
237
		}
250
		}
238
		$url = $this->url->getURL();
251
		$url = $this->url->getURL();
239
		$this->url->unsetVariablesRequete(array('module', 'ref'));
252
		$this->url->unsetVariablesRequete(array('module', 'ref'));
240
		return $url;
253
		return $url;
241
	}
254
	}
242
	
255
	
243
	protected function obtenirUrlFicheTraitement($referentiel, $id_traitement) {
256
	protected function obtenirUrlFicheTraitement($referentiel, $id_traitement) {
244
		$this->url->setRequete(false);
257
		$this->url->setRequete(false);
245
		$this->url->setVariableRequete('module', 'Traitement');
258
		$this->url->setVariableRequete('module', 'Traitement');
246
		$this->url->setVariableRequete('id-t', $id_traitement);
259
		$this->url->setVariableRequete('id-t', $id_traitement);
247
		$this->url->setVariableRequete('ref', $referentiel);
260
		$this->url->setVariableRequete('ref', $referentiel);
248
		$url = $this->url->getURL();
261
		$url = $this->url->getURL();
249
		$this->url->unsetVariablesRequete(array('module', 'id-t', 'ref'));
262
		$this->url->unsetVariablesRequete(array('module', 'id-t', 'ref'));
250
		return $url;
263
		return $url;
251
	}
264
	}
252
	
265
	
253
	protected function obtenirUrlFicheResultat($referentiel, $id_resultat) {
266
	protected function obtenirUrlFicheResultat($referentiel, $id_resultat) {
254
		$this->url->setRequete(false);
267
		$this->url->setRequete(false);
255
		$this->url->setVariableRequete('module', 'Resultat');
268
		$this->url->setVariableRequete('module', 'Resultat');
256
		$this->url->setVariableRequete('id-r', $id_resultat);
269
		$this->url->setVariableRequete('id-r', $id_resultat);
257
		$this->url->setVariableRequete('ref', $referentiel);
270
		$this->url->setVariableRequete('ref', $referentiel);
258
		$url = $this->url->getURL();
271
		$url = $this->url->getURL();
259
		$this->url->unsetVariablesRequete(array('module', 'id-r', 'ref'));
272
		$this->url->unsetVariablesRequete(array('module', 'id-r', 'ref'));
260
		return $url;
273
		return $url;
261
	}
274
	}
262
	
275
	
263
	/**
276
	/**
264
	 * Lance l'ajout d'un traitement
277
	 * Lance l'ajout d'un traitement
265
	 */
278
	 */
266
	protected function ajouterTraitement($referentiel_code, $script_nom) {
279
	protected function ajouterTraitement($referentiel_code, $script_nom) {
267
		if (is_null($referentiel_code)) {
280
		if (is_null($referentiel_code)) {
268
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
281
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
269
		} else {
282
		} else {
270
			$traitementDao = new TraitementDao();
283
			$traitementDao = new TraitementDao();
271
			$resultat_traitement_en_attente = $traitementDao->getTraitementsEnAttente($referentiel_code, $script_nom);
284
			$resultat_traitement_en_attente = $traitementDao->getTraitementsEnAttente($referentiel_code, $script_nom);
272
			if ($resultat_traitement_en_attente) {
285
			if ($resultat_traitement_en_attente) {
273
				$this->addMessage("Un traitement est déjà en attente...");
286
				$this->addMessage("Un traitement est déjà en attente...");
274
			} else {
287
			} else {
275
				$resultat_traitement_en_cours = $traitementDao->getTraitementsEnCours($referentiel_code, $script_nom);
288
				$resultat_traitement_en_cours = $traitementDao->getTraitementsEnCours($referentiel_code, $script_nom);
276
				if ($resultat_traitement_en_cours) {
289
				if ($resultat_traitement_en_cours) {
277
					$this->addMessage("Un traitement est déjà en cours...");
290
					$this->addMessage("Un traitement est déjà en cours...");
278
				} else {
291
				} else {
279
					$resultat = $traitementDao->ajouterTraitement($referentiel_code, $script_nom);
292
					$resultat = $traitementDao->ajouterTraitement($referentiel_code, $script_nom);
280
					if ($resultat != false) {
293
					if ($resultat != false) {
281
						$this->addMessage("Le traitement #'$resultat' a été ajouté.");
294
						$this->addMessage("Le traitement #'$resultat' a été ajouté.");
282
						$this->lancerScript($referentiel_code, $script_nom);
295
						$this->lancerScript($referentiel_code, $script_nom);
283
					} else {
296
					} else {
284
						$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
297
						$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
285
					}
298
					}
286
				}
299
				}
287
			}
300
			}
288
		}
301
		}
289
	}
302
	}
290
	
303
	
291
	/**
304
	/**
292
	 * Lance le script d'execution des traitements
305
	 * Lance le script d'execution des traitements
293
	 */
306
	 */
294
	protected function lancerScript($referentiel_code, $script_nom) {
307
	protected function lancerScript($referentiel_code, $script_nom) {
295
		$php = Config::get('chemin_bin_php');
308
		$php = Config::get('chemin_bin_php');
296
		$exe = Config::get('chemin_script');
309
		$exe = Config::get('chemin_script');
297
		$action = 'tout';
310
		$action = 'tout';
298
		$log = Config::get('chemin_script_log');
311
		$log = Config::get('chemin_script_log');
299
		$commande = "$php -d memory_limit=1073741824 -f $exe $script_nom -p $referentiel_code -a $action > $log &";
312
		$commande = "$php -d memory_limit=1073741824 -f $exe $script_nom -p $referentiel_code -a $action > $log &";
300
		
313
		
301
		if ($this->verifierSafeModeOff() === false) {
314
		if ($this->verifierSafeModeOff() === false) {
302
			$e = "Le safe_mode est actif sur ce serveur.";
315
			$e = "Le safe_mode est actif sur ce serveur.";
303
		} else if ($this->verifierAccesFonctionExec() === false) {
316
		} else if ($this->verifierAccesFonctionExec() === false) {
304
			$e = "La fonction 'exec()' fait partie des fonctions désactivées sur ce serveur (voir disable_functions).";
317
			$e = "La fonction 'exec()' fait partie des fonctions désactivées sur ce serveur (voir disable_functions).";
305
		} else {
318
		} else {
306
			$this->addMessage("Lancement du script effectuant les traitements.");
319
			$this->addMessage("Lancement du script effectuant les traitements.");
307
			exec($commande);
320
			exec($commande);
308
		}
321
		}
309
 
322
 
310
		// Affichage des message de paramêtrage du serveur si nécessaire
323
		// Affichage des message de paramêtrage du serveur si nécessaire
311
		if (Config::get('script_messages') == true) {
324
		if (Config::get('script_messages') == true) {
312
			$message_erreur_tpl = "%s\n.".
325
			$message_erreur_tpl = "%s\n.".
313
				"Il est nécessaire de configurer le lancement du script via une tache dans le cron.\n".
326
				"Il est nécessaire de configurer le lancement du script via une tache dans le cron.\n".
314
				"La commande à lancer est : <code>$commande</code>";
327
				"La commande à lancer est : <code>$commande</code>";
315
			$this->addMessage(sprintf($message_erreur_tpl, $e));
328
			$this->addMessage(sprintf($message_erreur_tpl, $e));
316
		}
329
		}
317
	}
330
	}
318
	
331
	
319
	private function verifierSafeModeOff() {
332
	private function verifierSafeModeOff() {
320
		return ('1' == ini_get('safe_mode')) ? false : true;
333
		return ('1' == ini_get('safe_mode')) ? false : true;
321
	}
334
	}
322
	
335
	
323
	private function verifierAccesFonctionExec() {
336
	private function verifierAccesFonctionExec() {
324
		$disabled = explode(', ', ini_get('disable_functions'));
337
		$disabled = explode(', ', ini_get('disable_functions'));
325
		return !in_array('exec', $disabled);
338
		return !in_array('exec', $disabled);
326
	}
339
	}
327
}
340
}