Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 235 → Rev 236

/trunk/services/modules/0.1/commun/Commun.php
45,27 → 45,27
private static $tri_type = '';
 
public function consulter($ressources, $parametres) {
$this->ressources = $ressources;
$this->parametres = $parametres;
$this->chargerNomDuService();
$this->ressources = $ressources;
$this->parametres = $parametres;
$this->chargerNomDuService();
 
$this->traiterParametres();
$this->traiterVersionProjet();
$this->traiterParametres();
$this->traiterVersionProjet();
 
$resultats = '';
foreach ($this->table_version as $version) {
$this->table = $version; //on stocke le nom de la table correspondant à la version du projet en cours
$this->recupererNomChamp($this->table); //on récupère les noms des champs disponibles (Ds Commun.php)
$this->traiterRessources(); //dans CommunNomsTaxons.php
$requete = $this->assemblerLaRequete();
$resultat = $this->getBdd()->recupererTous($requete);
$versionResultat = $this->traiterResultat($resultat, $version, $requete);
if (count($this->table_version) > 1) {
$resultats[$version] = $versionResultat;
} else {
$resultats = $versionResultat;
}
$resultats = '';
foreach ($this->table_version as $version) {
$this->table = $version; //on stocke le nom de la table correspondant à la version du projet en cours
$this->recupererNomChamp($this->table); //on récupère les noms des champs disponibles (Ds Commun.php)
$this->traiterRessources(); //dans CommunNomsTaxons.php
$requete = $this->assemblerLaRequete();
$resultat = $this->getBdd()->recupererTous($requete);
$versionResultat = $this->traiterResultat($resultat, $version, $requete);
if (count($this->table_version) > 1) {
$resultats[$version] = $versionResultat;
} else {
$resultats = $versionResultat;
}
}
 
return $resultats;
}
/trunk/services/modules/0.1/commun/Aide.php
31,7 → 31,7
$this->url_liste_projet = Config::get('url_service_base').'commun/aide/projets';
$this->projet = Config::get('nom_projet');
$this->traiterRessources($ressources);
return $this->formerReponseHTTP(json_encode($this->table_retour));
return $this->formerReponseHTTP($this->table_retour);
}
//-----------------------------------------traiter reponse http-------------------------------------------------------------
54,7 → 54,7
// Envoie de l'entête
RestServeur::envoyerEnteteStatutHttp($this->entete_http);
// Envoie du corps
echo $this->corps_http;
return $this->corps_http;
}
public function renvoyerErreur($e, $c) {
109,19 → 109,9
$url = Config::get('url_service_base').$projet.'/aide';
$intitule = 'PROJET '.strtoupper($projet);
$res = $this->consulterHref($url);
//$res = $this->rest_client->consulter($url);
//$entete = $this->rest_client->getReponseEntetes();
if ($res) {
$res_return = $res->$intitule;
}
/* if (isset($entete['wrapper_data']) && $res != '') {
$res = json_decode($res);
if (!is_object($res)) print_r($res);
else $res_return = $res->$intitule;
} else {
$e = 'Le service aide du projet '.$projet.' ne fonctionne pas et renvoie comme entête : '.$entete.' et comme résultat : '.$res;
$this->renvoyerErreur(RestServeur::HTTP_CODE_MAUVAISE_REQUETE, $e);
}*/
return $res_return;
}
/trunk/services/modules/0.1/commun/MetaDonnees.php
31,28 → 31,30
 
 
public function consulter($ressources, $parametres) {
$this->service = 'meta-donnees';
$resultat_formate = '';
$this->ressources = $ressources;
$this->parametres = $parametres;
$this->serviceNom = 'meta-donnees';
$resultats = '';
// on traite en premier la version dans le cas ou un langage est demandé pr une version
$this->traiterRessourceVersion($ressources);
$this->traiterVersionProjet();
$this->traiterParametres($parametres);
$this->traiterRessources($ressources);
if ($this->corps_http == '' && $this->entete_http == '') {
$requete_meta = $this->assemblerLaRequete();
$resultat_meta = $this->getBdd()->recupererTous($requete_meta);
$resultat_formate = $this->testerResultat($resultat_meta, $requete_meta);
$resultats = $this->formerResultat($resultat_meta, $requete_meta);
}
return $this->formerReponseHTTP($resultat_formate);
return $resultats;
}
 
 
public function testerResultat($resultat_meta, $requete_meta) {
public function formerResultat($resultat_meta, $requete_meta) {
if ($resultat_meta == '') {
$e = 'La requête formée comporte une erreur!';
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE,$e);
Debug::printr($requete);
} elseif ($resultat_meta) {
$resultat_formate = $this->formaterResultat($resultat_meta);
$resultat_formate = $this->retournerResultatFormate($resultat_meta);
} else {
$m = "Données introuvables dans la base $this->table";
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $m);
97,10 → 99,10
* - 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 traiterRessourceVersion(&$ressources) {
if (isset($ressources[0]) && !empty($ressources[0])) {
if (preg_match('/(?:[0-9]+(?:_|[.])[0-9]+|[*]| )/', $ressources[0])) {
$this->version_projet = array_shift($ressources);
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) {
111,7 → 113,7
break;
default :
if (is_numeric($this->version_projet)) {
$res_version = $this->rechercherVersionsDispo($this->version_projet);
$this->ajouterFiltreVersion();
}
break;
}
124,8 → 126,8
* 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 rechercherVersionsDispo($val) {
$val = str_replace('_', '.', $val);
public function ajouterFiltreVersion() {
$val = str_replace('_', '.', $this->version_projet);
$req_version = 'SELECT version FROM '.Config::get('bdd_table_meta');
$res_version = $this->getBdd()->recupererTous($req_version);
foreach ($res_version as $version) {
138,7 → 140,6
.implode($versions_dispo);
$this->renvoyerErreur(RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE, $e);
}
return $res_version;
}
 
 
174,13 → 175,13
 
//--------------------------------------Fonction de formatage des resultats ---------------------------------------------
 
public function formaterResultat($resultat) {
public function retournerResultatFormate($resultat) {
switch ($this->format_reponse) {
case 'metaDonnees/champ' : $reponse = $this->formaterMetaDonneesChamp($resultat); break;
case 'metaDonnees' : $reponse = $this->formaterMetaDonnees($resultat); break;
default : break;
}
return json_encode($reponse);
return $reponse;
}
 
//--------------------------------------Fonction de formatage des resultats de /metaDonnees/----------------------------
194,7 → 195,7
}
if ($this->retour_format == 'max' && $this->version_projet == '*') {
$this->table_retour['href'] = Config::get('url_service_base').Config::get('nom_projet')
.'/'.$version['version'].'/'.$this->service;
.'/'.$version['version'].'/'.$this->serviceNom;
}
$table[] = $this->table_retour;
$this->table_retour = array();
/trunk/services/modules/0.1/chorodep/Observations.php
24,7 → 24,7
 
class Observations extends Commun {
protected $service = 'observations';
protected $serviceNom = 'observations';
/** Stockage des paramétres */
protected $table_param = array();
76,11 → 76,11
}
if ($this->corps_http == '' && $this->entete_http == '') {
if (isset($res_version)) {
$resultat_formate = json_encode($res_version);
$resultat_formate = $res_version;
}
}
}
$this->formerReponseHTTP($resultat_formate);
return $resultat_formate;
}
public function testerResultat($resultat) {
378,7 → 378,7
}
//on remplit la table $table_retour_json['entete']
//formuler les urls precedentes et suivantes affichées dans l'entete du resultat
$url = $this->formulerUrl($id, $num, '/observations');
$url = $this->formulerUrlObs($id, $num, '/observations');
if ($url['precedent'] != '') { $this->table_entete['href.precedent'] = $url['precedent']; }
if ($url['suivant'] != '') { $this->table_entete['href.suivant'] = $url['suivant']; }
$this->table_entete['total'] = $num;
607,7 → 607,7
* @param int : Permet de connaitre le nombre de noms obtenus par la requete
* @return string Retourne l'url complete des resultats precedents ou suivant sous la forme d'un tableau
*/
public function formulerUrl($suivant, $total, $id = null) {
public function formulerUrlObs($suivant, $total, $id = null) {
$debut_url = Config::get('url_service').$id.'?';
//on recrée l'url sans les parametres de navigation qui seront rajouter ci-apres. On les enlève dc de la table des parametres
$table_bis = $this->table_param;
619,8 → 619,8
}
$parametre_url = http_build_query($table_bis);
//on recupere les limites
$url['suivant'] = $this->recupererLesLimitesSuivantes($suivant, $total);
$url['precedent'] = $this->recupererLesLimitesPrecedentes($suivant);
$url['suivant'] = $this->recupererLesLimitesSuivantesObs($suivant, $total);
$url['precedent'] = $this->recupererLesLimitesPrecedentesObs($suivant);
//on reconstitue les deux urls avec leurs limites
foreach ($url as $key => $limite) {
if ($limite != '') {
646,7 → 646,7
* @return string : la fin de l'url decrivant les limites des resultats suivants. Si aucun résultats ne suient,
* une chaine de caractère vide est retournée
*/
public function recupererLesLimitesSuivantes($suivant, $total) {
public function recupererLesLimitesSuivantesObs($suivant, $total) {
if ($this->limite_requete['limite'] <= $total) {
$url_suivante = '&navigation.depart='.$suivant.'&navigation.limite='.$this->limite_requete['limite'];
} else {
662,7 → 662,7
* @return string : la fin de l'url decrivant les limites des resultats precedents.
* Si aucun résultats ne precedent, une chaine de caractère vide est retournée
*/
public function recupererLesLimitesPrecedentes($suivant) {
public function recupererLesLimitesPrecedentesObs($suivant) {
$url_precedente = '';
if (isset($this->table_param['navigation_depart'])) { // si on utilise un parametre de départ
// si l'adresse d'appel de la page est inférieur au départ