Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 238 → Rev 239

/trunk/services/modules/0.1/commun/MetaDonnees.php
69,6 → 69,7
if (isset($parametres) && !empty($parametres)) {
foreach ($parametres as $param => $val) {
switch ($param) {
case 'version.projet' : $this->ajouterFiltreVersion($val); break;
case 'retour.langue' : $this->rechercherLangueDispo($val); break;
case 'retour.format' : $this->retour_format = $val; break;
default :
81,52 → 82,42
}
}
 
//----------------------FONCTIONS TRAITEMENT DES RESSOURCES-------------------------------------------------------------
 
public function traiterRessources($ressources) {
// /meta-donnees (liste des meta-données. Toutes les info de la table sont affichées) ou /meta-donnees/#champ
if (isset($ressources) && !empty($ressources)) {
$this->table_ressources = $ressources;
if (isset($ressources) && !empty($ressources)) {
$this->format_reponse = 'metaDonnees/champ';
}
/** Détermine quelles métadonnées doivent etre retournées :
* - "*" : (/#projet/* /meta-donnees) Renvoi les meta-données de toutes les versions du projet
* - "numero de la version" : (/#projet/2.00/meta-donnees) Renvoi les meta-données de la version 2.00 du projet
* - non renseignée : (/#projet/meta-donnees) Renvoi les meta-données de la dernière version du projet
* Cette info est stockée dans par la classe RestServeur dans la variable $ressources ($ressources[0])
*/
public function ajouterFiltreVersion($val) {
if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $val)) {
$this->version_projet = ($val == ' ') ? '+' : $val;
}
}
 
/** Détermine quelles métadonnées doivent etre retournées :
* - "*" : (/#projet/* /meta-donnees) Renvoi les meta-données de toutes les versions du projet
* - "numero de la version" : (/#projet/2.00/meta-donnees) Renvoi les meta-données de la version 2.00 du projet
* - non renseignée : (/#projet/meta-donnees) Renvoi les meta-données de la dernière version du projet
* Cette info est stockée dans par la classe RestServeur dans la variable $ressources ($ressources[0])
*/
public function traiterVersionProjet() {
if (isset($this->ressources[0]) && !empty($this->ressources[0])) {
if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $this->ressources[0])) {
$this->version_projet = array_shift($this->ressources);
if ($this->version_projet == ' ') $this->version_projet = '+';
}
switch ($this->version_projet) {
case '+' :
$this->requete_condition[] = 'version = (SELECT MAX(version) FROM '.Config::get('bdd_table_meta').')';
break;
case '*' :
break;
default :
if (is_numeric($this->version_projet)) {
$this->ajouterFiltreVersion();
switch ($this->version_projet) {
case '+' :
$this->requete_condition[] = 'version = (SELECT MAX(version) FROM '.Config::get('bdd_table_meta').')';
break;
case '*' :
break;
default :
if (is_numeric($this->version_projet)) {
$versions_dispo = $this->rechercherVersionsDispos();
if (in_array($val, $versions_dispo)) {
$this->requete_condition[] = 'version = '.$this->getBdd()->proteger($val);
} else {
$e = 'La version demandée n\'existe pas actuellement. </br>Les versions disponibles sont : '
.implode(', ', $versions_dispo);
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
}
break;
}
}
break;
}
 
}
 
 
/**
* Vérifie que le numéro de la version passée en paramètre correspond à une version existante.
* Si oui remplit la condition de la requete SQL
*/
public function ajouterFiltreVersion() {
* Vérifie que le numéro de la version passée en paramètre correspond à une version existante.
* Si oui remplit la condition de la requete SQL
*/
public function rechercherVersionsDispos() {
$val = str_replace('_', '.', $this->version_projet);
$req_version = 'SELECT version FROM '.Config::get('bdd_table_meta');
$res_version = $this->getBdd()->recupererTous($req_version);
133,22 → 124,15
foreach ($res_version as $version) {
$versions_dispo[] = $version['version'];
}
if (in_array($val, $versions_dispo)) {
$this->requete_condition[] = 'version = '.$this->getBdd()->proteger($val);
} else {
$e = 'La version demandée n\'existe pas actuellement. </br>Les versions disponibles sont : '
.implode($versions_dispo);
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
}
return $versions_dispo;
}
 
 
/** Vérifie que les meta-donnees existe dans la langue passée en paramètre, Si oui remplit la condition de la requete SQL */
public function rechercherLangueDispo($val) {
//on recherche les langues_meta disponibles pour la version demandée : (d'ou ajout de la condition)
$req_langue = 'SELECT langue_meta FROM '
.Config::get('bdd_table_meta')
.' WHERE '.implode(' AND ', $this->requete_condition);
.Config::get('bdd_table_meta')
.$this->formerRequeteCondition();
$res_langue = $this->getBdd()->recupererTous($req_langue);
foreach ($res_langue as $langue) {
$langue_dispo[] = $langue['langue_meta'];
157,20 → 141,35
$this->requete_condition[] = 'langue_meta = '.$this->getBdd()->proteger($val);
} else {
$e = 'La langue demandée n\'existe pas actuellement. </br>Les langues disponibles sont : '
.implode($langue_dispo);
.implode($langue_dispo);
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
}
}
//----------------------FONCTIONS TRAITEMENT DES RESSOURCES-------------------------------------------------------------
 
public function traiterRessources($ressources) {
// /meta-donnees (liste des meta-données. Toutes les info de la table sont affichées) ou /meta-donnees/#champ
if (isset($ressources) && !empty($ressources)) {
$this->table_ressources = $ressources;
if (isset($ressources) && !empty($ressources)) {
$this->format_reponse = 'metaDonnees/champ';
}
}
}
 
//------------------------------Fonction d'assemblage de la requete------------------------------------------------------
 
public function assemblerLaRequete() {
$req = 'SELECT '.$this->requete_champ.' FROM '.Config::get('bdd_table_meta').$this->formerRequeteCondition();
return $req;
}
public function formerRequeteCondition() {
$condition = '';
if (isset($this->requete_condition)) {
if ($this->requete_condition != null) {
$condition = ' WHERE '.implode(' AND ', $this->requete_condition);
}
$req = 'SELECT '.$this->requete_champ.' FROM '.Config::get('bdd_table_meta').$condition;
return $req;
return $condition;
}
 
//--------------------------------------Fonction de formatage des resultats ---------------------------------------------