Subversion Repositories Applications.referentiel

Rev

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

Rev Author Line No. Line
23 jpm 1
<?php
2
/**
30 jpm 3
 * Service fournissant des données sur les résultats d'un traitement.
23 jpm 4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
6
 *
7
 * @category	Php 5.2
8
 * @package		Referentiel
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
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>
12
 * @copyright	2010 Tela-Botanica
13
 * @version		$Id$
14
 */
30 jpm 15
class Resultat extends Ref {
23 jpm 16
	/**
17
	 * Méthode principale appelée avec une requête de type GET.
18
	 */
30 jpm 19
	public function getElement($params_url = array()) {
23 jpm 20
		// Initialisation des variables
21
		$info = array();
22
 
23
		// Nour recherchons le type de requête demandé
30 jpm 24
		$p = $this->traiterParametresUrl(array('type'), $params_url, false);
25
		extract($p);
23 jpm 26
 
27
		if (!is_null($type)) {
30 jpm 28
			$methode = 'getElement'.$type;
29
			if (method_exists($this, $methode)) {
33 jpm 30
				array_shift($params_url);
30 jpm 31
				$info = $this->$methode($params_url);
23 jpm 32
			} else {
30 jpm 33
				$this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
23 jpm 34
			}
35
		} else {
36
			$this->messages[] = "Veuillez préciser le type de requête.";
37
		}
38
 
39
		// Envoie sur la sortie standard
40
		$this->envoyer($info);
41
	}
42
 
30 jpm 43
	/** Méthode pour récupérer le nombre de résultat d'un traitement donné.
23 jpm 44
	* Appelée avec les paramêtres d'url suivant :
30 jpm 45
	* /Resultat/Nombre/id_traitement
46
	*
47
	* @return mixed le nombre de résultat ou false en cas d'échec.
23 jpm 48
	*/
30 jpm 49
	public function getElementNombre($params_url) {
50
		$p = $this->traiterParametresUrl(array('id'), $params_url);
51
		extract($p);
52
		$requete =	'SELECT COUNT(*) AS nbre '.
53
					"FROM ref_resultat ".
33 jpm 54
					"WHERE ce_traitement = $id ";
23 jpm 55
		// Récupération des résultats
56
		try {
30 jpm 57
			$nbre = $this->bdd->query($requete)->fetchColumn();
58
			if ($nbre === false) {
23 jpm 59
				$this->messages[] = "La requête a retourné aucun résultat.";
60
			}
61
		} catch (PDOException $e) {
62
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
63
		}
30 jpm 64
		return $nbre;
23 jpm 65
	}
66
 
30 jpm 67
	/** Méthode pour récupérer les infos d'un résultat.
23 jpm 68
	* Appelée avec les paramêtres d'url suivant :
30 jpm 69
	* /Resultat/Info/id_resultat
70
	*
71
	* @return mixed les infos du résultat ou false en cas d'échec.
23 jpm 72
	*/
30 jpm 73
	public function getElementInfo($params_url) {
74
		$p = $this->traiterParametresUrl(array('id'), $params_url);
75
		extract($p);
76
		$requete =	'SELECT * '.
77
					"FROM ref_resultat ".
33 jpm 78
					"WHERE id_resultat = $id ";
23 jpm 79
		// Récupération des résultats
80
		try {
30 jpm 81
			$infos = $this->bdd->query($requete)->fetch(PDO::FETCH_ASSOC);
82
			if ($infos === false) {
23 jpm 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
		}
30 jpm 88
		return $infos;
23 jpm 89
	}
30 jpm 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 ".
388 mathias 102
					"WHERE ce_traitement = $id order by id_resultat ";
30 jpm 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
			}
136
		} catch (PDOException $e) {
137
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
138
		}
139
 
140
	   	$this->envoyer($id);
141
	}
23 jpm 142
}
388 mathias 143
?>