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 --------------------------------------------- |