Subversion Repositories Applications.referentiel

Rev

Rev 45 | Rev 47 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 45 Rev 46
Line 20... Line 20...
20
	const RENDU_MENU = 'menu';
20
	const RENDU_MENU = 'menu';
Line 21... Line 21...
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
	protected $manuel = null;
25
	private $sortie = array();
26
	private $sortie = array();
Line 26... Line 27...
26
	private $messages = null;
27
	private $messages = null;
27
	
28
	
Line 28... Line 29...
28
	//+----------------------------------------------------------------------------------------------------------------+
29
	//+----------------------------------------------------------------------------------------------------------------+
29
	// Constructeur
30
	// Constructeur
30
	
31
	
31
	public function __construct()  {
32
	public function __construct()  {
-
 
33
		$registre = Registre::getInstance();
-
 
34
		$this->parametres = $registre->get('parametres');
32
		$registre = Registre::getInstance();
35
		$this->url = $this->parametres['url'];
33
		$this->parametres = $registre->get('parametres');
36
		// Chargement des infos du manuel technique des référentiels
Line 34... Line 37...
34
		$this->url = $this->parametres['url'];
37
		$this->manuel = parse_ini_file(Config::get('chemin_appli').DS.'..'.DS.'configurations'.DS.'referentiel_v2.1.ini');
35
		parent::__construct();
38
		parent::__construct();
Line 236... Line 239...
236
	
239
	
237
	protected function obtenirUrlMenuVersionnage($referentiel) {
240
	protected function obtenirUrlMenuVersionnage($referentiel) {
238
		return $this->obtenirUrlMenu('Versionnage', $referentiel);
241
		return $this->obtenirUrlMenu('Versionnage', $referentiel);
Line -... Line 242...
-
 
242
	}
-
 
243
	
-
 
244
	protected function obtenirUrlDemandeVersionnage($referentiel) {
-
 
245
		$this->url->setRequete(false);
-
 
246
		$this->url->setVariableRequete('module', 'Versionnage');
-
 
247
		$this->url->setVariableRequete('action', 'demanderTraitement');
-
 
248
		$this->url->setVariableRequete('ref', $referentiel);
-
 
249
		$url = $this->url->getURL();
-
 
250
		$this->url->unsetVariablesRequete(array('module', 'action', 'ref'));
-
 
251
		return $url;
239
	}
252
	}
240
	
253
	
241
	protected function obtenirUrlMenuConsultation($referentiel) {
254
	protected function obtenirUrlMenuConsultation($referentiel) {
Line 242... Line 255...
242
		return $this->obtenirUrlMenu('Consultation', $referentiel);
255
		return $this->obtenirUrlMenu('Consultation', $referentiel);
Line 278... Line 291...
278
	 */
291
	 */
279
	protected function ajouterTraitement($referentiel_code, $script_nom) {
292
	protected function ajouterTraitement($referentiel_code, $script_nom) {
280
		if (is_null($referentiel_code)) {
293
		if (is_null($referentiel_code)) {
281
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
294
			$this->addMessage("Aucun code de projet de référentiel n'est indiqué (Ex. bdnff).");
282
		} else {
295
		} else {
-
 
296
			$traitements_a_supprimer = null;
283
			$traitementDao = new TraitementDao();
297
			$traitementDao = new TraitementDao();
284
			$resultat_traitement_en_attente = $traitementDao->getTraitementsEnAttente($referentiel_code, $script_nom);
298
			$resultat_traitement_en_attente = $traitementDao->getTraitementsEnAttente($referentiel_code, $script_nom);
285
			if ($resultat_traitement_en_attente) {
299
			if ($resultat_traitement_en_attente) {
-
 
300
				foreach ($resultat_traitement_en_attente as $traitement) {
-
 
301
					$difference = $this->differenceEnSecondeEntreDeuxDates($traitement['meta_date_creation'], date ("Y-m-d H:i:s"));
-
 
302
					Debug::printr("Différence attente : $difference > ".Config::get('ddv_traitement_attente'));
-
 
303
					if ($difference > Config::get('ddv_traitement_attente')) {
-
 
304
						$traitements_a_supprimer[] = $traitement['id_traitement'];
-
 
305
						$this->addMessage("Le traitement #{$traitement['id_traitement']} était en attente depuis plus de 5mn, il a été supprimé.");
-
 
306
					} else {
286
				$this->addMessage("Un traitement est déjà en attente...");
307
						$this->addMessage("Un traitement est déjà en attente...");
-
 
308
					}
-
 
309
				}
287
			} else {
310
			} else {
288
				$resultat_traitement_en_cours = $traitementDao->getTraitementsEnCours($referentiel_code, $script_nom);
311
				$resultat_traitement_en_cours = $traitementDao->getTraitementsEnCours($referentiel_code, $script_nom);
289
				if ($resultat_traitement_en_cours) {
312
				if ($resultat_traitement_en_cours) {
-
 
313
					foreach ($resultat_traitement_en_cours as $traitement) {
-
 
314
						$difference = $this->differenceEnSecondeEntreDeuxDates($traitement['date_debut'], date ("Y-m-d H:i:s"));
-
 
315
						Debug::printr("Différence en cours : $difference > ".Config::get('ddv_traitement_en_cours'));
-
 
316
						if ($difference > Config::get('ddv_traitement_en_cours')) {
-
 
317
							$traitements_a_supprimer[] = $traitement['id_traitement'];
-
 
318
							$this->addMessage("Le traitement #{$traitement['id_traitement']} était en cours depuis plus de 5mn, il a été supprimé.");
-
 
319
						} else {
290
					$this->addMessage("Un traitement est déjà en cours...");
320
							$this->addMessage("Un traitement est déjà en cours...");
-
 
321
						}
-
 
322
					}
291
				} else {
323
				} else {
292
					$resultat = $traitementDao->ajouterTraitement($referentiel_code, $script_nom);
324
					$resultat = $traitementDao->ajouterTraitement($referentiel_code, $script_nom);
293
					if ($resultat != false) {
325
					if ($resultat != false) {
294
						$this->addMessage("Le traitement #'$resultat' a été ajouté.");
326
						$this->addMessage("Le traitement #'$resultat' a été ajouté.");
295
						$this->lancerScript($referentiel_code, $script_nom);
327
						$this->lancerScript($referentiel_code, $script_nom);
296
					} else {
328
					} else {
297
						$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
329
						$this->addMessage("Un problème est survenu lors de la tentative d'ajout du traitement.");
298
					}
330
					}
299
				}
331
				}
300
			}
332
			}
-
 
333
			// Suppression des traitements posant problème
-
 
334
			if (count($traitements_a_supprimer) > 0) {
-
 
335
				$traitementDao->supprimer($traitements_a_supprimer);
-
 
336
			}
-
 
337
		}
-
 
338
	}
-
 
339
	
-
 
340
	private function differenceEnSecondeEntreDeuxDates($date_01, $date_02) {
-
 
341
		if (floatval(phpversion()) >= 5.3 ) {
-
 
342
			$d1 = new DateTime($date_01);
-
 
343
			$d2 = new DateTime($date_02);
-
 
344
			$difference_absolue = true;
-
 
345
			$diff = $d1->diff($d2, $difference_absolue);
-
 
346
			$nbre_secondes = $diff->format('s');
-
 
347
		} else {
-
 
348
			$nbre_secondes = abs(round((strtotime($date_01) - strtotime($date_02)))); 
301
		}
349
		}
-
 
350
		return $nbre_secondes;
302
	}
351
	}
Line 303... Line 352...
303
	
352
	
304
	/**
353
	/**
305
	 * Lance le script d'execution des traitements
354
	 * Lance le script d'execution des traitements
306
	 */
355
	 */
307
	protected function lancerScript($referentiel_code, $script_nom) {
356
	protected function lancerScript($referentiel_code, $script_nom) {
308
		$php = Config::get('chemin_bin_php');
357
		$php = Config::get('chemin_bin_php');
309
		$exe = Config::get('chemin_script');
358
		$exe = Config::get('chemin_script');
310
		$action = 'tout';
359
		$action = 'tout';
-
 
360
		$log = Config::get('chemin_script_log');
311
		$log = Config::get('chemin_script_log');
361
		$limite_memoire = Config::get('script_limite_memoire');
Line 312... Line 362...
312
		$commande = "$php -d memory_limit=1073741824 -f $exe $script_nom -p $referentiel_code -a $action > $log &";
362
		$commande = "$php -d memory_limit=$limite_memoire -f $exe $script_nom -p $referentiel_code -a $action > $log &";
313
		
363
		
314
		if ($this->verifierSafeModeOff() === false) {
364
		if ($this->verifierSafeModeOff() === false) {
315
			$e = "Le safe_mode est actif sur ce serveur.";
365
			$e = "Le safe_mode est actif sur ce serveur.";