Subversion Repositories Applications.referentiel

Rev

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

Rev 30 Rev 33
Line 20... Line 20...
20
	public function getElement($params_url = array()) {
20
	public function getElement($params_url = array()) {
21
		// Initialisation des variables
21
		// Initialisation des variables
22
		$info = array();
22
		$info = array();
Line 23... Line 23...
23
				
23
				
24
		// Nour recherchons le type de requête demandé
24
		// Nour recherchons le type de requête demandé
25
		$p = $this->traiterParametresUrl(array('type', 'projet'), $params_url, false);
-
 
26
		
25
		$p = $this->traiterParametresUrl(array('type'), $params_url, false);
27
		$type = $p['type'];
-
 
Line 28... Line 26...
28
		$projet = $p['projet'];
26
		extract($p);
29
		
-
 
30
		if (!is_null($type)) {
27
		
31
			if (!is_null($projet)) {
28
		if (!is_null($type)) {
32
				$methode = 'getElement'.$type;
29
			$methode = 'getElement'.$type;
33
				if (method_exists($this, $methode)) {
30
			if (method_exists($this, $methode)) {
34
					//array_shift($param);
-
 
35
					$info = $this->$methode($projet);
-
 
36
				} else {
-
 
37
					$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
-
 
38
				}
31
				array_shift($params_url);
39
				
32
				$info = $this->$methode($params_url);
40
			} else {
33
			} else {
41
				$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
34
				$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
42
			}
35
			}
43
		} else {
36
		} else {
Line 44... Line 37...
44
			$this->messages[] = "Veuillez préciser le type de requête.";
37
			$this->messages[] = "Veuillez préciser le type de requête.";
45
		}
38
		}
46
		
39
		
Line -... Line 40...
-
 
40
		// Envoie sur la sortie standard
-
 
41
		$this->envoyer($info);
-
 
42
	}
-
 
43
	
-
 
44
	/** Méthode pour récupérer les infos d'un traitement.
-
 
45
	* Appelée avec les paramêtres d'url suivant :
-
 
46
	* /Traitement/Info/id_traitement
-
 
47
	* 
-
 
48
	* @return mixed les infos du traitement ou false en cas d'échec. 
-
 
49
	*/
-
 
50
	public function getElementInfo($params_url) {
-
 
51
		$p = $this->traiterParametresUrl(array('id'), $params_url);
-
 
52
		extract($p);
-
 
53
		
-
 
54
		$infos = false;
-
 
55
		if (!is_null($id)) {
-
 
56
			$requete =	'SELECT * '.
-
 
57
						"FROM ref_traitement ".
-
 
58
						"WHERE id_traitement = $id ";
-
 
59
			// Récupération des résultats
-
 
60
			try {
-
 
61
				$infos = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
-
 
62
				if ($infos === false) {
-
 
63
					$this->messages[] = "La requête a retourné aucun résultat.";
-
 
64
				}
-
 
65
			} catch (PDOException $e) {
-
 
66
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
67
			}
-
 
68
		} else {
-
 
69
			$this->messages[] = "Veuillez préciser l'identifinat du traitement comme premier paramêtre (ex. : 38).";
-
 
70
		}
47
		// Envoie sur la sortie standard
71
		
48
		$this->envoyer($info);
72
		return $infos;
49
	}
73
	}
50
	
74
	
51
	/**
75
	/**
52
	 * Retourne les infos sur la dernière demande de traitement pour un projet donné.
-
 
53
	 */
-
 
54
	public function getElementDerniereDemande($projet) {
-
 
55
		$projet = $this->bdd->quote($projet);
-
 
56
		$requete =	($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
-
 
57
					'FROM ref_traitement '.
76
	 * Retourne les infos sur la dernière demande de traitement pour un projet donné.
58
					"WHERE referentiel_code = $projet ".
-
 
59
					'	AND date_fin IS NULL '.
-
 
Line -... Line 77...
-
 
77
	 */
-
 
78
	public function getElementDerniereDemande($params_url) {
-
 
79
		$p = $this->traiterParametresUrl(array('projet'), $params_url);
-
 
80
		extract($p);
-
 
81
		
-
 
82
		$donnees = false;
-
 
83
		if (!is_null($projet)) {
-
 
84
			$requete =	($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
-
 
85
						'FROM ref_traitement '.
-
 
86
						"WHERE referentiel_code = $projet ".
-
 
87
						'	AND date_fin IS NULL '.
60
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'meta_date_creation  DESC').' '.
88
						'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'meta_date_creation  DESC').' '.
61
					'LIMIT 0,1 ';
89
						'LIMIT 0,1 ';
62
		
90
			
63
		$this->debug[] = $requete;
91
			$this->debug[] = $requete;
64
		
92
			
-
 
93
			// Récupération des résultats
-
 
94
			try {
-
 
95
				$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
65
		// Récupération des résultats
96
				if ($donnees === false) {
66
		try {
97
					$this->messages[] = "La requête a retourné aucun résultat.";
67
			$donnees = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
98
				}
68
			if ($donnees === false) {
99
			} catch (PDOException $e) {
-
 
100
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
69
				$this->messages[] = "La requête a retourné aucun résultat.";
101
			}
70
			}
102
		} else {
Line 71... Line 103...
71
		} catch (PDOException $e) {
103
			$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
72
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
104
		}
73
		}
105
		
74
		return $donnees;
106
		return $donnees;
75
	}
107
	}
76
	
-
 
77
	/**
108
	
78
	 * Retourne les infos sur les traitements en cours ou en attentes.
-
 
79
	 */
-
 
80
	public function getElementEnCours($projet) {
-
 
81
		$projet = $this->bdd->quote($projet);
-
 
82
		$requete =	($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
-
 
Line -... Line 109...
-
 
109
	/**
-
 
110
	 * Retourne les infos sur les traitements en cours.
-
 
111
	 */
-
 
112
	public function getElementEnCours($params_url) {
-
 
113
		$p = $this->traiterParametresUrl(array('projet'), $params_url);
-
 
114
		extract($p);
-
 
115
		
-
 
116
		$donnees = false;
-
 
117
		if (!is_null($projet)) {
83
					'FROM ref_traitement '.
118
			$requete =	($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
84
					"WHERE referentiel_code = $projet ".
119
						'FROM ref_traitement '.
85
					'	AND date_debut IS NOT NULL '.
120
						"WHERE referentiel_code = $projet ".
86
					'	AND date_fin IS NULL '.
121
						'	AND date_debut IS NOT NULL '.
87
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'meta_date_creation  DESC').' ';
122
						'	AND date_fin IS NULL '.
-
 
123
						'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'meta_date_creation  DESC').' ';
-
 
124
			
-
 
125
			// Récupération des résultats
88
		$this->debug[] = $requete;
126
			try {
89
		
127
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
90
		// Récupération des résultats
128
				if ($donnees === false) {
91
		try {
129
					$this->messages[] = "La requête a retourné aucun résultat.";
-
 
130
				}
92
			$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
131
			} catch (PDOException $e) {
93
			if ($donnees === false) {
132
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
Line 94... Line 133...
94
				$this->messages[] = "La requête a retourné aucun résultat.";
133
			}
95
			}
134
		} else {
96
		} catch (PDOException $e) {
135
			$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
97
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
136
		}
-
 
137
		
-
 
138
		return $donnees;
-
 
139
	}
-
 
140
	
98
		}
141
	/**
99
		return $donnees;
142
	 * Retourne les id des demandes de traitements obsolètes.
100
	}
143
	 */
-
 
144
	public function getElementObsolete($params_url) {
-
 
145
		$p = $this->traiterParametresUrl(array('projet'), $params_url);
-
 
146
		extract($p);
-
 
147
		
-
 
148
		$sortie = false;
-
 
149
		if (!is_null($projet)) {
-
 
150
			try {
-
 
151
				$requete =	'SELECT MAX(date_debut) '.
-
 
152
							'FROM ref_traitement '.
-
 
153
							"WHERE referentiel_code = $projet ".
-
 
154
							'	AND date_debut IS NOT NULL '.
-
 
155
							'GROUP BY referentiel_code ';
-
 
156
				
-
 
157
				$date_max = $this->bdd->query($requete)->fetchColumn();
-
 
158
				if ($date_max === false) {
-
 
159
					$this->messages[] = "La requête de récupération de la date de début max a échouée.";
-
 
160
				} else {
-
 
161
					$date_max = $this->bdd->quote($date_max);
-
 
162
					$requete = 	'SELECT id_traitement '.
-
 
163
								'FROM ref_traitement '.
-
 
164
								"WHERE referentiel_code = $projet ".
-
 
165
								'	AND date_debut IS NULL '.
-
 
166
								'	AND date_fin IS NULL '.
-
 
167
								"	AND meta_date_creation < $date_max ";
-
 
168
					$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
169
					if ($donnees === false) {
-
 
170
						$this->messages[] = "La requête a retourné aucun résultat.";
-
 
171
					}
-
 
172
				}
-
 
173
			} catch (PDOException $e) {
-
 
174
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
175
			}
-
 
176
			// Pos-traitement
-
 
177
			$sortie = array();
-
 
178
			if ($donnees != false) {
-
 
179
				foreach ($donnees as $donnee) {
-
 
180
					$sortie[] = $donnee['id_traitement'];
-
 
181
				}
-
 
182
			}
-
 
183
		} else {
-
 
184
			$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
-
 
185
		}
-
 
186
		
-
 
187
		return $sortie;
-
 
188
	}
-
 
189
	
-
 
190
	/**
-
 
191
	 * Retourne les infos sur les traitements terminés.
101
	
192
	 */
102
	/**
193
	public function getElementTermines($params_url) {
103
	 * Retourne les id des demandes de traitements obsolètes.
194
		$p = $this->traiterParametresUrl(array('projet'), $params_url);
104
	 */
195
		extract($p);
-
 
196
		
Line 105... Line -...
105
	public function getElementObsolete($projet) {
-
 
106
		$projet = $this->bdd->quote($projet);
197
		$donnees = false;
107
		try {
-
 
108
			$requete =	'SELECT MAX(date_debut) '.
198
		if (!is_null($projet)) {
109
						'FROM ref_traitement '.
-
 
110
						"WHERE referentiel_code = $projet ".
-
 
111
						'	AND date_debut IS NOT NULL '.
-
 
112
						'GROUP BY referentiel_code ';
-
 
113
			
-
 
114
			$date_max = $this->bdd->query($requete)->fetchColumn();
-
 
115
			if ($date_max === false) {
-
 
116
				$this->messages[] = "La requête de récupération de la date de début max a échouée.";
199
			$requete =	($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
117
			} else {
200
						'FROM ref_traitement '.
118
				$date_max = $this->bdd->quote($date_max);
201
						"WHERE referentiel_code = $projet ".
119
				$requete = 	'SELECT id_traitement '.
202
						'	AND date_debut IS NOT NULL '.
-
 
203
						'	AND date_fin IS NOT NULL '.
-
 
204
						'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'meta_date_creation  DESC').' ';
120
							'FROM ref_traitement '.
205
			
121
							"WHERE referentiel_code = $projet ".
206
			// Récupération des résultats
122
							'	AND date_debut IS NULL '.
207
			try {
123
							'	AND date_fin IS NULL '.
-
 
124
							"	AND meta_date_creation < $date_max ";
-
 
125
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
126
				if ($donnees === false) {
-
 
127
					$this->messages[] = "La requête a retourné aucun résultat.";
-
 
128
				}
-
 
129
			}
-
 
130
		} catch (PDOException $e) {
208
				$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
209
				if ($donnees === false) {
131
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
210
					$this->messages[] = "La requête a retourné aucun résultat.";
132
		}
211
				}
Line 133... Line 212...
133
		// Pos-traitement
212
			} catch (PDOException $e) {
134
		$sortie = array();
213
				$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
135
		if ($donnees != false) {
214
			}
Line 227... Line 306...
227
	 */
306
	 */
228
	public function updateElementTerminer($id, $params_post) {
307
	public function updateElementTerminer($id, $params_post) {
229
		$ok = true;
308
		$ok = true;
230
		try {
309
		try {
231
			$requete = 	'UPDATE ref_traitement '.
310
			$requete = 	'UPDATE ref_traitement '.
232
						'SET date_fin = NOW() '.
311
						'SET date_fin = NOW(), duree = TIMEDIFF(NOW(), date_debut) '.
233
						"WHERE id_traitement = $id ";
312
						"WHERE id_traitement = $id ";
234
			$this->debug[] = "$requete";
313
			$this->debug[] = "$requete";
235
			$resultat = $this->bdd->exec($requete);
314
			$resultat = $this->bdd->exec($requete);
236
			if ($resultat === false) {
315
			if ($resultat === false) {
237
				$ok = false;
316
				$ok = false;