Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 236 Rev 239
Line 67... Line 67...
67
 
67
 
68
	public function traiterParametres($parametres) {
68
	public function traiterParametres($parametres) {
69
		if (isset($parametres) && !empty($parametres)) {
69
		if (isset($parametres) && !empty($parametres)) {
70
			foreach ($parametres as $param => $val) {
70
			foreach ($parametres as $param => $val) {
-
 
71
				switch ($param) {
71
				switch ($param) {
72
					case 'version.projet' : $this->ajouterFiltreVersion($val);	break;
72
					case 'retour.langue' : $this->rechercherLangueDispo($val);	break;
73
					case 'retour.langue' : $this->rechercherLangueDispo($val);	break;
73
					case 'retour.format' : $this->retour_format = $val;			break;
74
					case 'retour.format' : $this->retour_format = $val;			break;
74
					default				 :
75
					default				 :
75
						$e = 'Erreur dans les paramètres de recherche de votre requête : </br> Le paramètre " '
76
						$e = 'Erreur dans les paramètres de recherche de votre requête : </br> Le paramètre " '
Line 79... Line 80...
79
				}
80
				}
80
			}
81
			}
81
		}
82
		}
82
	}
83
	}
Line 83... Line -...
83
 
-
 
84
//----------------------FONCTIONS TRAITEMENT DES RESSOURCES-------------------------------------------------------------
-
 
85
 
-
 
86
	public function traiterRessources($ressources) {
-
 
87
		// /meta-donnees (liste des meta-données. Toutes les info de la table sont affichées) ou /meta-donnees/#champ
-
 
88
		if (isset($ressources) && !empty($ressources)) {
-
 
89
			$this->table_ressources = $ressources;
-
 
90
			if (isset($ressources) && !empty($ressources)) {
-
 
91
				$this->format_reponse = 'metaDonnees/champ';
-
 
92
			}
-
 
93
		}
-
 
94
	}
-
 
95
 
84
 
96
	/** Détermine quelles métadonnées doivent etre retournées :
85
	/** Détermine quelles métadonnées doivent etre retournées :
97
	 *  - "*" : (/#projet/* /meta-donnees) Renvoi les meta-données de toutes les versions du projet
86
	*  - "*" : (/#projet/* /meta-donnees) Renvoi les meta-données de toutes les versions du projet
98
	 *  - "numero de la version" : (/#projet/2.00/meta-donnees) Renvoi les meta-données de la version 2.00 du projet
87
	*  - "numero de la version" : (/#projet/2.00/meta-donnees) Renvoi les meta-données de la version 2.00 du projet
99
	 *  - non renseignée : (/#projet/meta-donnees) Renvoi les meta-données de la dernière version du projet
88
	*  - non renseignée : (/#projet/meta-donnees) Renvoi les meta-données de la dernière version du projet
100
	 *  Cette info est stockée dans par la classe RestServeur dans la variable $ressources ($ressources[0])
89
	*  Cette info est stockée dans par la classe RestServeur dans la variable $ressources ($ressources[0])
101
	 */
90
	*/
102
	public function traiterVersionProjet() {
-
 
103
		if (isset($this->ressources[0]) && !empty($this->ressources[0])) {
91
	public function ajouterFiltreVersion($val) {
104
			if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $this->ressources[0])) {
92
		if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $val)) {
105
				$this->version_projet = array_shift($this->ressources);
-
 
106
				if ($this->version_projet == ' ') $this->version_projet = '+';
93
			$this->version_projet = ($val == ' ') ? '+' : $val;
107
			}
94
		}
108
			switch ($this->version_projet) {
95
		switch ($this->version_projet) {
109
				case '+' :
96
			case '+' :
110
					$this->requete_condition[] = 'version = (SELECT MAX(version) FROM '.Config::get('bdd_table_meta').')';
97
				$this->requete_condition[] = 'version = (SELECT MAX(version) FROM '.Config::get('bdd_table_meta').')';
111
					break;
98
				break;
112
				case '*' :
99
			case '*' :
113
					break;
100
				break;
114
				default :
101
			default :
-
 
102
				if (is_numeric($this->version_projet)) {
-
 
103
					$versions_dispo = $this->rechercherVersionsDispos();
-
 
104
					if (in_array($val, $versions_dispo)) {
-
 
105
						$this->requete_condition[] = 'version = '.$this->getBdd()->proteger($val);
-
 
106
					} else {
115
					if (is_numeric($this->version_projet)) {
107
						$e = 'La version demandée n\'existe pas actuellement. </br>Les versions disponibles sont : '
-
 
108
						.implode(', ', $versions_dispo);
116
						$this->ajouterFiltreVersion();
109
						$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
117
					}
110
					}
118
					break;
111
				}
119
			}
112
				break;
120
		}
-
 
121
 
113
		}
122
	}
-
 
123
 
114
	}
124
 
115
	
125
	/**
116
	/**
126
	 * Vérifie que le numéro de la version passée en paramètre correspond à une version existante.
117
	* Vérifie que le numéro de la version passée en paramètre correspond à une version existante.
127
	 * Si oui remplit la condition de la requete SQL
118
	* Si oui remplit la condition de la requete SQL
128
	 */
119
	*/
129
	public function ajouterFiltreVersion() {
120
	public function rechercherVersionsDispos() {
130
		$val = str_replace('_', '.', $this->version_projet);
121
		$val = str_replace('_', '.', $this->version_projet);
131
		$req_version = 'SELECT version FROM '.Config::get('bdd_table_meta');
122
		$req_version = 'SELECT version FROM '.Config::get('bdd_table_meta');
132
		$res_version = $this->getBdd()->recupererTous($req_version);
123
		$res_version = $this->getBdd()->recupererTous($req_version);
133
		foreach ($res_version as $version) {
124
		foreach ($res_version as $version) {
134
			$versions_dispo[] = $version['version'];
125
			$versions_dispo[] = $version['version'];
135
		}
-
 
136
		if (in_array($val, $versions_dispo)) {
-
 
137
			$this->requete_condition[] = 'version = '.$this->getBdd()->proteger($val);
-
 
138
		} else {
-
 
139
			$e = 'La version demandée n\'existe pas actuellement. </br>Les versions disponibles sont : '
126
		}
140
				.implode($versions_dispo);
-
 
141
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
-
 
142
		}
127
		return $versions_dispo;
143
	}
-
 
144
 
128
	}
145
 
129
	
146
	/** Vérifie que les meta-donnees existe dans la langue passée en paramètre, Si oui remplit la condition de la requete SQL */
130
	/** Vérifie que les meta-donnees existe dans la langue passée en paramètre, Si oui remplit la condition de la requete SQL */
147
	public function rechercherLangueDispo($val) {
131
	public function rechercherLangueDispo($val) {
148
		//on recherche les langues_meta disponibles pour la version demandée : (d'ou ajout de la condition)
132
		//on recherche les langues_meta disponibles pour la version demandée : (d'ou ajout de la condition)
149
		$req_langue = 'SELECT langue_meta FROM '
133
		$req_langue = 'SELECT langue_meta FROM '
150
						.Config::get('bdd_table_meta')
134
		.Config::get('bdd_table_meta')
151
						.' WHERE '.implode(' AND ', $this->requete_condition);
135
		.$this->formerRequeteCondition();
152
		$res_langue = $this->getBdd()->recupererTous($req_langue);
136
		$res_langue = $this->getBdd()->recupererTous($req_langue);
153
		foreach ($res_langue as $langue) {
137
		foreach ($res_langue as $langue) {
154
			$langue_dispo[] = $langue['langue_meta'];
138
			$langue_dispo[] = $langue['langue_meta'];
155
		}
139
		}
156
		if (in_array($val, $langue_dispo)) {
140
		if (in_array($val, $langue_dispo)) {
157
			$this->requete_condition[] = 'langue_meta = '.$this->getBdd()->proteger($val);
141
			$this->requete_condition[] = 'langue_meta = '.$this->getBdd()->proteger($val);
158
		} else {
142
		} else {
159
			$e = 'La langue demandée n\'existe pas actuellement. </br>Les langues disponibles sont : '
143
			$e = 'La langue demandée n\'existe pas actuellement. </br>Les langues disponibles sont : '
160
				.implode($langue_dispo);
144
			.implode($langue_dispo);
161
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
145
			$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
162
		}
146
		}
-
 
147
	}
-
 
148
//----------------------FONCTIONS TRAITEMENT DES RESSOURCES-------------------------------------------------------------
-
 
149
 
-
 
150
	public function traiterRessources($ressources) {
-
 
151
		// /meta-donnees (liste des meta-données. Toutes les info de la table sont affichées) ou /meta-donnees/#champ
-
 
152
		if (isset($ressources) && !empty($ressources)) {
-
 
153
			$this->table_ressources = $ressources;
-
 
154
			if (isset($ressources) && !empty($ressources)) {
-
 
155
				$this->format_reponse = 'metaDonnees/champ';
-
 
156
			}
-
 
157
		}
Line 163... Line 158...
163
	}
158
	}
Line 164... Line 159...
164
 
159
 
-
 
160
//------------------------------Fonction d'assemblage de la requete------------------------------------------------------
-
 
161
 
-
 
162
	public function assemblerLaRequete() {
-
 
163
		$req = 'SELECT '.$this->requete_champ.' FROM '.Config::get('bdd_table_meta').$this->formerRequeteCondition();
-
 
164
		return $req;
165
//------------------------------Fonction d'assemblage de la requete------------------------------------------------------
165
	}
166
 
166
	
167
	public function assemblerLaRequete() {
167
	public  function formerRequeteCondition() {
168
		$condition = '';
168
		$condition = '';
169
		if (isset($this->requete_condition)) {
-
 
170
			$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
169
		if ($this->requete_condition != null) {
171
		}
170
			$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
Line 172... Line 171...
172
		$req = 'SELECT '.$this->requete_champ.' FROM '.Config::get('bdd_table_meta').$condition;
171
		}
Line 173... Line 172...
173
		return $req;
172
		return $condition;