Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 425 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
425 jpm 1
<?php
2
class Messages {
3
	/** Niveau de message de type LOG */
4
	const MSG_LOG = 0;
5
	/** Niveau de message de type ERREUR */
6
	const MSG_ERREUR = 1;
7
	/** Niveau de message de type AVERTISSEMENT */
8
	const MSG_AVERTISSEMENT = 2;
9
	/** Niveau de message de type INFORMATION */
10
	const MSG_INFO = 3;
11
 
1069 jpm 12
	/** Inititulé des différents types de message. */
425 jpm 13
	private static $msg_niveaux_txt = array('LOG', 'ERREUR','AVERTISSEMENT', 'INFO');
14
	private $verbosite = '';
15
 
16
	public function __construct($verbosite = 0) {
17
		$this->verbosite = $verbosite;
18
	}
19
 
1069 jpm 20
	/**
21
	 * Affiche un message d'erreur formaté.
22
	 * Si le paramétre de verbosité (-v) vaut 1 ou plus, le message est écrit dans le fichier de log et afficher dans la console.
23
	 *
24
	 * @param string le message d'erreur avec des %s.
25
	 * @param array le tableau des paramêtres à insérer dans le message d'erreur.
26
	 * @return void.
27
	 */
28
	public function traiterErreur($message, $tab_arguments = array()) {
29
		$this->traiterMessage($message, $tab_arguments, self::MSG_ERREUR);
425 jpm 30
	}
31
 
1069 jpm 32
	/**
33
	 * Affiche un message d'avertissement formaté.
34
	 * Si le paramétre de verbosité (-v) vaut 1, le message est écrit dans le fichier de log.
35
	 * Si le paramétre de verbosité (-v) vaut 2 ou plus, le message est écrit dans le fichier de log et afficher dans la console.
36
	 *
37
	 * @param string le message d'erreur avec des %s.
38
	 * @param array le tableau des paramêtres à insérer dans le message d'erreur.
39
	 * @return void.
40
	 */
41
	public function traiterAvertissement($message, $tab_arguments = array()) {
42
		$this->traiterMessage($message, $tab_arguments, self::MSG_AVERTISSEMENT);
425 jpm 43
	}
44
 
1069 jpm 45
	/**
46
	 * Retourne un message d'information formaté.
47
	 * Si le paramétre de verbosité (-v) vaut 1 ou 2 , le message est écrit dans le fichier de log.
48
	 * Si le paramétre de verbosité (-v) vaut 3 ou plus, le message est écrit dans le fichier de log et afficher dans la console.
49
	 *
50
	 * @param string le message d'information avec des %s.
51
	 * @param array le tableau des paramêtres à insérer dans le message d'erreur.
52
	 * @return void.
53
	 */
54
	public function traiterInfo($message, $tab_arguments = array()) {
55
		$this->traiterMessage($message, $tab_arguments, self::MSG_INFO);
425 jpm 56
	}
1069 jpm 57
 
58
	/**
59
	 * Retourne un message formaté en le stockant dans un fichier de log si nécessaire.
60
	 *
61
	 * @param string le message d'erreur avec des %s.
62
	 * @param array le tableau des paramêtres à insérer dans le message d'erreur.
63
	 * @param int le niveau de verbosité à dépasser pour afficher les messages.
64
	 * @return void.
65
	 */
66
	private function traiterMessage($message, $tab_arguments, $niveau = self::MSG_LOG) {
67
		$log = $this->formaterMsg($message, $tab_arguments, $niveau);
68
		if ($this->verbosite > ($niveau - 1)) {
69
			echo $log;
70
			if (Config::get('log_script')) {
71
				// TODO : lancer le log
72
			}
73
		}
74
	}
75
 
76
	/**
77
	 * Retourne un message d'information formaté.
78
	 *
79
	 * @param string le message d'information avec des %s.
80
	 * @param array le tableau des paramêtres à insérer dans le message d'erreur.
81
	 * @return string le message d'erreur formaté.
82
	 */
83
	public function formaterMsg($message, $tab_arguments = array(), $niveau = null) {
84
		$texte = vsprintf($message, $tab_arguments);
85
		$prefixe = date('Y-m-j_H:i:s', time());
86
		$prefixe .= is_null($niveau) ? ' : ' : ' - '.self::getMsgNiveauTxt($niveau).' : ';
87
		$log = $prefixe.$texte."\n";
88
		return $log;
89
	}
90
 
91
	private static function getMsgNiveauTxt($niveau) {
92
		return self::$msg_niveaux_txt[$niveau];
93
	}
94
 
95
	/**
96
	 * Utiliser cette méthode dans une boucle pour afficher un message suivi du nombre de tour de boucle effectué.
97
	 * Vous devrez vous même gérer le retour à la ligne à la sortie de la boucle.
98
	 *
99
	 * @param string le message d'information.
100
	 * @param int le nombre de départ à afficher.
101
	 * @return void le message est affiché dans la console.
102
	 */
103
	public static function afficherAvancement($message, $depart = 0) {
104
		static $avancement = array();
105
		if (! array_key_exists($message, $avancement)) {
106
			$avancement[$message] = $depart;
107
			echo "$message : ";
108
 
109
			$actuel =& $avancement[$message];
110
			echo $actuel++;
111
		} else {
112
			$actuel =& $avancement[$message];
113
 
114
			// Cas du passage de 99 (= 2 caractères) à 100 (= 3 caractères)
115
			$passage = 0;
116
			if (strlen((string) ($actuel - 1)) < strlen((string) ($actuel))) {
117
				$passage = 1;
118
			}
119
 
120
			echo str_repeat(chr(8), (strlen((string) $actuel) - $passage));
121
			echo $actuel++;
122
		}
123
	}
124
}