Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 8 Rev 236
Line 29... Line 29...
29
	protected $format_reponse = 'metaDonnees';
29
	protected $format_reponse = 'metaDonnees';
30
	protected $table_ressources;
30
	protected $table_ressources;
Line 31... Line 31...
31
 
31
 
-
 
32
 
-
 
33
	public function consulter($ressources, $parametres) {
32
 
34
		$this->ressources = $ressources;
-
 
35
		$this->parametres = $parametres;
33
	public function consulter($ressources, $parametres) {
36
		$this->serviceNom = 'meta-donnees';
34
		$this->service = 'meta-donnees';
37
		
35
		$resultat_formate = '';
38
		$resultats = '';
36
		// on traite en premier la version dans le cas ou un langage est demandé pr une version
39
		// on traite en premier la version dans le cas ou un langage est demandé pr une version
37
		$this->traiterRessourceVersion($ressources);
40
		$this->traiterVersionProjet();
38
		$this->traiterParametres($parametres);
41
		$this->traiterParametres($parametres);
39
		$this->traiterRessources($ressources);
42
		$this->traiterRessources($ressources);
40
		if ($this->corps_http == '' && $this->entete_http == '') {
43
		if ($this->corps_http == '' && $this->entete_http == '') {
41
			$requete_meta  = $this->assemblerLaRequete();
44
			$requete_meta  = $this->assemblerLaRequete();
42
			$resultat_meta = $this->getBdd()->recupererTous($requete_meta);
45
			$resultat_meta = $this->getBdd()->recupererTous($requete_meta);
43
			$resultat_formate = $this->testerResultat($resultat_meta, $requete_meta);
46
			$resultats = $this->formerResultat($resultat_meta, $requete_meta);
44
		}
47
		}
Line 45... Line -...
45
		return $this->formerReponseHTTP($resultat_formate);
-
 
46
	}
48
		return $resultats;
47
 
49
	}
48
 
50
 
49
	public function testerResultat($resultat_meta, $requete_meta) {
51
	public function formerResultat($resultat_meta, $requete_meta) {
50
		if ($resultat_meta == '') {
52
		if ($resultat_meta == '') {
51
			$e = 'La requête formée comporte une erreur!';
53
			$e = 'La requête formée comporte une erreur!';
52
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE,$e);
54
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE,$e);
53
			Debug::printr($requete);
55
			Debug::printr($requete);
54
		} elseif ($resultat_meta) {
56
		} elseif ($resultat_meta) {
55
			$resultat_formate = $this->formaterResultat($resultat_meta);
57
			$resultat_formate = $this->retournerResultatFormate($resultat_meta);
56
		} else {
58
		} else {
57
			$m = "Données introuvables dans la base $this->table";
59
			$m = "Données introuvables dans la base $this->table";
Line 95... Line 97...
95
	 *  - "*" : (/#projet/* /meta-donnees) Renvoi les meta-données de toutes les versions du projet
97
	 *  - "*" : (/#projet/* /meta-donnees) Renvoi les meta-données de toutes les versions du projet
96
	 *  - "numero de la version" : (/#projet/2.00/meta-donnees) Renvoi les meta-données de la version 2.00 du projet
98
	 *  - "numero de la version" : (/#projet/2.00/meta-donnees) Renvoi les meta-données de la version 2.00 du projet
97
	 *  - non renseignée : (/#projet/meta-donnees) Renvoi les meta-données de la dernière version du projet
99
	 *  - non renseignée : (/#projet/meta-donnees) Renvoi les meta-données de la dernière version du projet
98
	 *  Cette info est stockée dans par la classe RestServeur dans la variable $ressources ($ressources[0])
100
	 *  Cette info est stockée dans par la classe RestServeur dans la variable $ressources ($ressources[0])
99
	 */
101
	 */
100
	public function traiterRessourceVersion(&$ressources) {
102
	public function traiterVersionProjet() {
101
		if (isset($ressources[0]) && !empty($ressources[0])) {
103
		if (isset($this->ressources[0]) && !empty($this->ressources[0])) {
102
			if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $ressources[0])) {
104
			if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $this->ressources[0])) {
103
				$this->version_projet = array_shift($ressources);
105
				$this->version_projet = array_shift($this->ressources);
104
				if ($this->version_projet == ' ') $this->version_projet = '+';
106
				if ($this->version_projet == ' ') $this->version_projet = '+';
105
			}
107
			}
106
			switch ($this->version_projet) {
108
			switch ($this->version_projet) {
107
				case '+' :
109
				case '+' :
108
					$this->requete_condition[] = 'version = (SELECT MAX(version) FROM '.Config::get('bdd_table_meta').')';
110
					$this->requete_condition[] = 'version = (SELECT MAX(version) FROM '.Config::get('bdd_table_meta').')';
109
					break;
111
					break;
110
				case '*' :
112
				case '*' :
111
					break;
113
					break;
112
				default :
114
				default :
113
					if (is_numeric($this->version_projet)) {
115
					if (is_numeric($this->version_projet)) {
114
						$res_version = $this->rechercherVersionsDispo($this->version_projet);
116
						$this->ajouterFiltreVersion();
115
					}
117
					}
116
					break;
118
					break;
117
			}
119
			}
118
		}
120
		}
Line 122... Line 124...
122
 
124
 
123
	/**
125
	/**
124
	 * Vérifie que le numéro de la version passée en paramètre correspond à une version existante.
126
	 * Vérifie que le numéro de la version passée en paramètre correspond à une version existante.
125
	 * Si oui remplit la condition de la requete SQL
127
	 * Si oui remplit la condition de la requete SQL
126
	 */
128
	 */
127
	public function rechercherVersionsDispo($val) {
129
	public function ajouterFiltreVersion() {
128
		$val = str_replace('_', '.', $val);
130
		$val = str_replace('_', '.', $this->version_projet);
129
		$req_version = 'SELECT version FROM '.Config::get('bdd_table_meta');
131
		$req_version = 'SELECT version FROM '.Config::get('bdd_table_meta');
130
		$res_version = $this->getBdd()->recupererTous($req_version);
132
		$res_version = $this->getBdd()->recupererTous($req_version);
131
		foreach ($res_version as $version) {
133
		foreach ($res_version as $version) {
132
			$versions_dispo[] = $version['version'];
134
			$versions_dispo[] = $version['version'];
Line 136... Line 138...
136
		} else {
138
		} else {
137
			$e = 'La version demandée n\'existe pas actuellement. </br>Les versions disponibles sont : '
139
			$e = 'La version demandée n\'existe pas actuellement. </br>Les versions disponibles sont : '
138
				.implode($versions_dispo);
140
				.implode($versions_dispo);
139
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
141
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
140
		}
142
		}
141
		return $res_version;
-
 
142
	}
143
	}
Line 143... Line 144...
143
 
144
 
144
 
145
 
Line 172... Line 173...
172
		return $req;
173
		return $req;
173
	}
174
	}
Line 174... Line 175...
174
 
175
 
Line 175... Line 176...
175
//--------------------------------------Fonction de formatage des resultats ---------------------------------------------
176
//--------------------------------------Fonction de formatage des resultats ---------------------------------------------
176
 
177
 
177
	public function formaterResultat($resultat) {
178
	public function retournerResultatFormate($resultat) {
178
		switch ($this->format_reponse) {
179
		switch ($this->format_reponse) {
179
			case 'metaDonnees/champ' : $reponse = $this->formaterMetaDonneesChamp($resultat);  	break;
180
			case 'metaDonnees/champ' : $reponse = $this->formaterMetaDonneesChamp($resultat);  	break;
180
			case 'metaDonnees'		 : $reponse = $this->formaterMetaDonnees($resultat); 		break;
181
			case 'metaDonnees'		 : $reponse = $this->formaterMetaDonnees($resultat); 		break;
181
			default					 : 															break;
182
			default					 : 															break;
182
		}
183
		}
Line 183... Line 184...
183
		return json_encode($reponse);
184
		return $reponse;
Line 184... Line 185...
184
	}
185
	}
Line 192... Line 193...
192
					$this->afficherDonnees($key, $val);
193
					$this->afficherDonnees($key, $val);
193
				}
194
				}
194
			}
195
			}
195
			if ($this->retour_format == 'max' && $this->version_projet == '*') {
196
			if ($this->retour_format == 'max' && $this->version_projet == '*') {
196
				$this->table_retour['href'] = Config::get('url_service_base').Config::get('nom_projet')
197
				$this->table_retour['href'] = Config::get('url_service_base').Config::get('nom_projet')
197
											 .'/'.$version['version'].'/'.$this->service;
198
											 .'/'.$version['version'].'/'.$this->serviceNom;
198
			}
199
			}
199
			$table[] = $this->table_retour;
200
			$table[] = $this->table_retour;
200
			$this->table_retour = array();
201
			$this->table_retour = array();
201
		}
202
		}
202
		return $table;
203
		return $table;