Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 517 Rev 518
Line 31... Line 31...
31
	private $retour_format = 'max';
31
	private $retour_format = 'max';
Line 32... Line 32...
32
	
32
	
33
	public function consulter($ressources, $parametres) {
33
	public function consulter($ressources, $parametres) {
34
		$this->ressources = $ressources;
34
		$this->ressources = $ressources;
35
		$this->parametres = $parametres;
-
 
36
		
35
		$this->parametres = $parametres;
37
		$this->traiterParametres();
36
		$this->traiterParametres();
38
		$this->definirVersion();
-
 
39
		$this->table = Config::get('bdd_table_rang_sup')."_v".$this->version;
-
 
40
		$resultats = '';
-
 
41
		$this->recupererNomChamp($this->table); 
37
		$this->definirTables();
-
 
38
		$this->traiterRessources();
-
 
39
		$resultats = '';
-
 
40
	foreach ($this->table_version as $version) {
42
		$this->traiterRessources();
41
			$this->table = $version;
43
		$requete = $this->assemblerLaRequete();
42
			$requete = $this->assemblerLaRequete();
44
		$resultat = $this->getBdd()->recupererTous($requete);
43
			$resultat = $this->getBdd()->recupererTous($requete);
-
 
44
			$versionResultat = $this->traiterResultat($resultat, $version);
-
 
45
			if (count($this->table_version) > 1) {
-
 
46
				$resultats[$version] = $versionResultat;
-
 
47
			} else {
-
 
48
				$resultats = $versionResultat;
-
 
49
			}
45
		$versionResultat = $this->traiterResultat($resultat, $this->table, $requete);
50
		}
46
		return $versionResultat;
51
		return $versionResultat;
Line 47... Line 52...
47
	}
52
	}
Line 93... Line 98...
93
							break;
98
							break;
94
						} else {
99
						} else {
95
							$e = "Valeur de paramètre inconnue pour 'retour.format'.";
100
							$e = "Valeur de paramètre inconnue pour 'retour.format'.";
96
							$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
101
							$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
97
						}
102
						}
-
 
103
					case 'version.projet' :
-
 
104
						$this->traiterVersion($valeur);
-
 
105
						break;
98
					default :
106
					default :
99
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
107
						$e = 'Erreur dans les parametres de votre requête : </br> Le paramètre " '
100
					.$param.' " n\'existe pas.';
108
					.$param.' " n\'existe pas.';
101
					$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);	break;
109
					$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);	break;
102
				}
110
				}
103
			}
111
			}
104
		}
112
		}
105
	}	
113
	}	
-
 
114
 
-
 
115
	//+++------------------------------traitement des versions----------------------------------------++
-
 
116
	
106
	private function definirVersion() {
117
	public function traiterVersion($valeur) {
-
 
118
		if (preg_match('/^[0-9]+(?:[._][0-9]+)*$/', $valeur) || $valeur == '*' || $valeur == '+') {
107
		$this->chargerVersions();
119
				$this->version_projet = $valeur;
-
 
120
			} else  {
-
 
121
				$e = "Erreur : La version est inconnue.";
108
		if( (!isset($this->parametres['version.projet']) ) || ((isset($this->parametres['version.projet']) )&&
122
				$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
-
 
123
			}
109
		(($this->parametres['version.projet'] == '+') || ($this->parametres['version.projet'] == '')))){
124
		if ($this->version_projet == '*' && $this->ressources == array()) {
110
			$this->version = $this->metadonnees[0]['version'];
125
			$message = "L'affichage de plusieurs versions ne fonctionne que pour les ressources de type /ressources/#id";
111
		} else {
126
			$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;
112
			$this->version = $this->parametres['version.projet'];
127
			throw new Exception($message, $code);
113
		}
128
		}
114
	}
129
	}
Line 115... Line 130...
115
 
130
 
-
 
131
	public function DefinirTables() {
116
	private function chargerVersions() {
132
		$table_num_version = $this->recupererVersionDisponible();
117
		$requete = "SELECT version FROM ".Config::get('bdd_table_meta')." ".
133
		$prefixe_table = config::get('bdd_table_rang_sup');
-
 
134
		if ( in_array($this->version_projet,$table_num_version) ) {
118
								"ORDER BY date_creation DESC ";
135
			$this->table_version[] = $prefixe_table.'_v'.$this->version_projet;
119
		$resultats = $this->getBdd()->recupererTous($requete);
136
		} elseif ($this->version_projet == '+') {
120
		if (!is_array($resultats) || count($resultats) <= 0) {
137
					$derniere_version = $table_num_version[count($table_num_version) - 1];
-
 
138
					$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $derniere_version);
121
			$message = "Les méta-données n'ont pu être chargée pour la ressource demandée";
139
		} elseif ($this->version_projet == '*') {
-
 
140
			foreach ($table_num_version as $num_version) {
-
 
141
				$this->table_version[] = $prefixe_table.'_v'.str_replace('.', '_', $num_version);
-
 
142
			}
122
			$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;
143
		} else {
-
 
144
			$e = "Erreur : La version est inconnue.";
123
			throw new Exception($message, $code);
145
			$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
124
		}
-
 
125
	
-
 
126
		$this->metadonnees = $resultats;
146
		}
Line -... Line 147...
-
 
147
	}
127
	}
148
	
Line 128... Line 149...
128
	
149
	
129
	//+--------------------------formatages de resultats  -------------------------------------------+
150
	//+--------------------------formatages de resultats  -------------------------------------------+
Line 160... Line 181...
160
	
181
	
Line 161... Line 182...
161
	//+--------------------------traitement ontologies -------------------------------------------+
182
	//+--------------------------traitement ontologies -------------------------------------------+
162
	
183
	
-
 
184
	public function recupererOntologies($valeur, $champs){
163
	public function recupererOntologies($valeur, $champs){
185
		$chps_sans = preg_replace("/_min|_max/", '', $champs);
164
		$chps_sans = preg_replace("/_min|_max/", '', $champs);
186
		$url = Config::get('url_service_base').Config::get('nom_projet').
165
		$url = $this->ajouterHref('ontologies',$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur)));
187
			'/ontologies/'.$this->champs_ontologiques[$chps_sans].':'.urlencode(urlencode($valeur));
166
		$val = $this->consulterHref($url);
188
		$val = $this->consulterHref($url);
167
		$resultat_json[$champs.'.libelle'] = $val->nom;
189
		$resultat_json[$champs.'.libelle'] = $val->nom;
168
		$resultat_json[$champs.'.code'] = $valeur;
190
		$resultat_json[$champs.'.code'] = $valeur;