Subversion Repositories Applications.referentiel

Rev

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

Rev 23 Rev 30
Line 1... Line 1...
1
<?php
1
<?php
2
/**
2
/**
3
 * Service fournissant des données de la table contenant le référentiel de travail.
3
 * Service fournissant des données sur les résultats d'un traitement.
4
 * Encodage en entrée : utf8
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
5
 * Encodage en sortie : utf8
6
 *
6
 *
7
 * @category	Php 5.2
7
 * @category	Php 5.2
8
 * @package		Referentiel
8
 * @package		Referentiel
Line 10... Line 10...
10
 * @license		GPL v3 <http://www.gnu.org/licenses/gpl.txt>
10
 * @license		GPL v3 <http://www.gnu.org/licenses/gpl.txt>
11
 * @license		CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
11
 * @license		CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
12
 * @copyright	2010 Tela-Botanica
12
 * @copyright	2010 Tela-Botanica
13
 * @version		$Id$
13
 * @version		$Id$
14
 */
14
 */
15
class Referentiel extends Ref {
15
class Resultat extends Ref {
16
	/**
16
	/**
17
	 * Méthode principale appelée avec une requête de type GET.
17
	 * Méthode principale appelée avec une requête de type GET.
18
	 */
18
	 */
19
	public function getElement($param = array()) {
19
	public function getElement($params_url = array()) {
20
		// Initialisation des variables
20
		// Initialisation des variables
21
		$info = array();
21
		$info = array();
Line 22... Line 22...
22
				
22
				
23
		// Nour recherchons le type de requête demandé
23
		// Nour recherchons le type de requête demandé
24
		$p = $this->traiterParametresUrl(array('type', 'projet'), $param, false);
-
 
25
		
24
		$p = $this->traiterParametresUrl(array('type'), $params_url, false);
26
		$type = $p['type'];
-
 
Line 27... Line 25...
27
		$projet = $p['projet'];
25
		extract($p);
28
		
-
 
29
		if (!is_null($type)) {
26
		
30
			if (!is_null($projet)) {
27
		if (!is_null($type)) {
31
				$methode = 'getElement'.$type;
28
			$methode = 'getElement'.$type;
32
				if (method_exists($this, $methode)) {
29
			if (method_exists($this, $methode)) {
33
					//array_shift($param);
-
 
34
					$info = $this->$methode($projet);
-
 
35
				} else {
-
 
36
					$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
-
 
37
				}
30
				//array_shift($param);
38
				
31
				$info = $this->$methode($params_url);
39
			} else {
32
			} else {
40
				$this->messages[] = "Veuillez préciser le nom de code du projet comme premier paramêtre (ex. : bdnff).";
33
				$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
41
			}
34
			}
42
		} else {
35
		} else {
Line 43... Line 36...
43
			$this->messages[] = "Veuillez préciser le type de requête.";
36
			$this->messages[] = "Veuillez préciser le type de requête.";
44
		}
37
		}
45
		
38
		
Line 46... Line 39...
46
		// Envoie sur la sortie standard
39
		// Envoie sur la sortie standard
47
		$this->envoyer($info);
40
		$this->envoyer($info);
48
	}
41
	}
-
 
42
	
-
 
43
	/** Méthode pour récupérer le nombre de résultat d'un traitement donné.
49
	
44
	* Appelée avec les paramêtres d'url suivant :
50
	/* Méthode pour récupérer les noms d'un référentiel.
45
	* /Resultat/Nombre/id_traitement
-
 
46
	* 
-
 
47
	* @return mixed le nombre de résultat ou false en cas d'échec. 
51
	* Appelée avec les paramêtres d'url suivant :
48
	*/
52
	* /RefReferentiel/tout/code_du_referentiel
49
	public function getElementNombre($params_url) {
53
	*/
-
 
54
	public function getElementTout($projet) {
50
		$p = $this->traiterParametresUrl(array('id'), $params_url);
55
		$requete =	($this->distinct ? 'SELECT DISTINCT' : 'SELECT').' * '.
51
		extract($p);
56
					"FROM `$projet` ".
52
		$requete =	'SELECT COUNT(*) AS nbre '.
57
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'num_nom ASC').' ';
53
					"FROM ref_resultat ".
58
					//"LIMIT $this->start, $this->limit ";
54
					"ce_traitement = $id ";
59
		// Récupération des résultats
55
		// Récupération des résultats
60
		try {
56
		try {
61
			$donnees = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
57
			$nbre = $this->bdd->query($requete)->fetchColumn();
62
			if ($donnees === false) {
58
			if ($nbre === false) {
63
				$this->messages[] = "La requête a retourné aucun résultat.";
59
				$this->messages[] = "La requête a retourné aucun résultat.";
64
			}
60
			}
65
		} catch (PDOException $e) {
61
		} catch (PDOException $e) {
Line 66... Line 62...
66
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
62
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
67
		}
63
		}
68
		return $donnees;
64
		return $nbre;
-
 
65
	}
-
 
66
	
69
	}
67
	/** Méthode pour récupérer les infos d'un résultat.
70
	
68
	* Appelée avec les paramêtres d'url suivant :
-
 
69
	* /Resultat/Info/id_resultat
-
 
70
	* 
71
	/* Méthode pour récupérer le nombre de noms présents dans un référentiel.
71
	* @return mixed les infos du résultat ou false en cas d'échec. 
72
	* Appelée avec les paramêtres d'url suivant :
72
	*/
-
 
73
	public function getElementInfo($params_url) {
73
	* /RefReferentiel/nombre/code_du_referentiel
74
		$p = $this->traiterParametresUrl(array('id'), $params_url);
74
	*/
75
		extract($p);
75
	public function getElementNombre($projet) {
76
		$requete =	'SELECT * '.
76
		$requete =	'SELECT COUNT(*) AS nbre '.
77
					"FROM ref_resultat ".
77
					"FROM `$projet` ";
78
					"id_resultat = $id ";
78
		// Récupération des résultats
79
		// Récupération des résultats
79
		try {
80
		try {
80
			$nbre = $this->bdd->query($requete)->fetchColumn();
81
			$infos = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
81
			if ($nbre === false) {
82
			if ($infos === false) {
82
				$this->messages[] = "La requête a retourné aucun résultat.";
83
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
84
			}
-
 
85
		} catch (PDOException $e) {
-
 
86
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
87
		}
-
 
88
		return $infos;
-
 
89
	}
-
 
90
	
-
 
91
	/** Méthode pour récupérer des infos partielles (id, nom, resultat) des résultats d'un traitement.
-
 
92
	* Appelée avec les paramêtres d'url suivant :
-
 
93
	* /Resultat/Traitement/id_traitement
-
 
94
	* 
-
 
95
	* @return mixed le tableau de tableau d'infos ou false en cas d'échec. 
-
 
96
	*/
-
 
97
	public function getElementTraitement($params_url) {
-
 
98
		$p = $this->traiterParametresUrl(array('id'), $params_url);
-
 
99
		extract($p);
-
 
100
		$requete =	'SELECT * '.
-
 
101
					"FROM ref_resultat ".
-
 
102
					"ce_traitement = $id ";
-
 
103
		// Récupération des résultats
-
 
104
		try {
-
 
105
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
-
 
106
			if ($infos === false) {
-
 
107
				$this->messages[] = "La requête a retourné aucun résultat.";
-
 
108
			}
-
 
109
		} catch (PDOException $e) {
-
 
110
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
-
 
111
		}
-
 
112
		return $infos;
-
 
113
	}
-
 
114
	
-
 
115
	/**
-
 
116
	 * Méthode appelée pour ajouter un traitement.
-
 
117
	 * 
-
 
118
	 * @return mixed l'id du nouvel enregistrement ou false!
-
 
119
	 */
-
 
120
	public function createElement($params_post) {
-
 
121
		$params_proteges = $this->traiterParametresPost(array('id_traitement', 'nom', 'description', 'resultat', 'message'), $params_post);
-
 
122
		extract($params_proteges);
-
 
123
		$meta_date_creation = $this->bdd->quote(date ("Y-m-d H:i:s"));
-
 
124
		
-
 
125
		try {
-
 
126
			$requete = 	"INSERT INTO ref_resultat ".
-
 
127
   						' (ce_traitement, nom, description, resultat, message, meta_date_creation) '.
-
 
128
						" VALUES ($id_traitement, $nom, $description, $resultat, $message, $meta_date_creation) ";
-
 
129
			$resultat = $this->bdd->exec($requete);
-
 
130
			if ($resultat === false) {
-
 
131
				$id = false;
-
 
132
				$this->debug[] = "Résultat NON ajouté.";
-
 
133
			} else {
-
 
134
				$id = $this->bdd->lastInsertId();
-
 
135
			}
83
			}
136
		} catch (PDOException $e) {
84
		} catch (PDOException $e) {
137
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
85
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
138
		}
86
		}
139