Subversion Repositories eFlore/Applications.eflore-consultation

Compare Revisions

Ignore whitespace Rev 1114 → Rev 1115

/trunk/metier/api_0.1/Images.php
59,20 → 59,21
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
}
return $images;
return $this->formaterResultatImages($images);
}
 
public function getInfosImageParIdImage($id_image) {
$tpl = Config::get('imagesPopupTpl');
$tpl = $this->obtenirSqueletteSelonApi('imagesPopup');
$url = $this->formaterUrl($tpl, array('id' => $id_image, 'referentiel' => Registre::get('parametres.referentiel')));
return $this->chargerDonnees($url);
$image = $this->chargerDonnees($url);
return $this->formaterResultatImages($image, true);
}
public function getInfosImages() {
$url = $this->getUrlImages();
$donnees = $this->chargerDonnees($url);
$donnees = $this->chargerDonnees($url);
$images = (empty($donnees['resultats']) == false) ? $donnees['resultats'] : array();
return $images;
return $this->formaterResultatImages($images);
}
 
public function getInfosImagesTaxons() {
92,37 → 93,130
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
}
return $this->formaterResultatImages($images);
}
 
public function getInfosPremiereImageParIdsNoms($idsNoms) {
$url = $this->getUrlPremiereImageParIdsNoms($idsNoms);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
return $this->formaterResultatImages($images);
}
 
public function getInfosImagesGalerieMobile($nn) {
$url = $this->getUrlImagesGalerieMobile($nn);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
$this->formaterResultatImagesDel($images);
return $images;
}
 
private function getUrlImagesParIdsNoms($idsNoms) {
$tpl = Config::get('imagesResultatsDeterminationTpl');
$tpl = $this->obtenirSqueletteSelonApi('imagesResultatsDetermination');
$params = array('idsNoms' => implode(',', $idsNoms), 'referentiel' => Registre::get('parametres.referentiel'));
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
public function getUrlPremiereImageParIdsNoms($idsNoms) {
$tpl = Config::get('imagesPremiereTpl');
private function getUrlPremiereImageParIdsNoms($idsNoms) {
$tpl = $this->obtenirSqueletteSelonApi('imagesPremiere');
$params = array('idsNoms' => implode(',', $idsNoms), 'referentiel' => Registre::get('parametres.referentiel'));
$url = $this->formaterUrl($tpl, $params);
$donnees = $this->chargerDonnees($url);
$images = (isset($donnees['resultats'])) ? $donnees['resultats'] : array();
return $images;
return $this->formaterUrl($tpl, $params);
}
private function getUrlImages() {
$tpl = Config::get('imagesTpl');
$params = array('projet' => $this->getProjet(), 'limite' => $this->limite, 'depart' => $this->depart, 'referentiel' => Registre::get('parametres.referentiel'));
 
private function getUrlImages($nn = false) {
$tpl = $this->obtenirSqueletteSelonApi('images');
if ($this->getApi() == Eflore::API_EFLORE) {
$params = array('projet' => $this->getProjet(), 'limite' => $this->limite, 'depart' => $this->depart, 'referentiel' => Registre::get('parametres.referentiel'));
}
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlImagesTaxons($idsTaxons) {
$tpl = Config::get('imagesTaxonsTpl');
$tpl = $this->obtenirSqueletteSelonApi('imagesTaxons');
$params = array('projet' => $this->getProjet(),'nntaxon'=> $idsTaxons, 'referentiel' => Registre::get('parametres.referentiel'));
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
private function getUrlImagesGalerieMobile($nn) {
$tpl = Config::get('delGalerieMobileTpl');
$params = array('nn' => $nn);
$url = $this->formaterUrl($tpl, $params);
return $url;
}
 
/**
* Transforme les résultats issus des Webservices autres que eflore/cel afin de conserver un format homogène
* @param mixed $images
*/
private function formaterResultatImages($images, $seulementUne = false) {
switch ($this->getApi()) {
case Eflore::API_DEL:
return $this->formaterResultatImagesDel($images, $seulementUne);
break;
default:
return $images;
}
}
 
private function formaterResultatImagesDel($images, $seulementUne = false) {
if ($seulementUne) {
return $this->formaterUnResultatImagesDel($images);
} else {
$retour = array();
foreach ($images as $idObsImage => $image) {
$retour[$image['id_image']] = array_merge($images[$idObsImage], $this->formaterUnResultatImagesDel($image));
}
return $retour;
}
}
 
/**
* Convertit un array venant d'un Webservice del vers le format retourné par eflore/cel
* @param array $image
* @return array
*/
private function formaterUnResultatImagesDel(array $image) {
//echo "FORMAT DEL: <pre>"; print_r($image); echo "</pre>";
$libelleAuteur = $image['observation']['auteur.prenom'].' '.$image['observation']['auteur.nom'];
$codeReferentiel = substr($image['observation']['determination.referentiel'], 0, strpos($image['observation']['determination.referentiel'], ':'));
$localiteLibelle = array($image['observation']['zone_geo'],
$image['observation']['lieudit'],
$image['observation']['station'],
$image['observation']['milieu']);
$retourImage = array(
'date' => $image['observation']['date_observation'],
'mime' => 'image/jpeg',
'auteur.libelle' => $libelleAuteur,
'auteur.id' => $image['observation']['auteur.id'],
'binaire.href' => $image['binaire.href'],
'observation.id' => $image['observation']['id_observation'],
'determination.libelle' => $image['observation']['determination.ns'].'[Dét. : '.$libelleAuteur.']',
'determination.nom_sci' => $image['observation']['determination.ns'],
'determination.nom_sci.code' => $codeReferentiel.'.'.$image['observation']['determination.nn'],
'station.commune' => $image['observation']['zone_geo'],
'station.lieudit' => $image['observation']['lieudit'],
'station.station' => $image['observation']['station'],
'station.milieu' => $image['observation']['milieu'],
'station.libelle' => $this->formaterLocalite($localiteLibelle)
);
//echo "FORMAT CEL: <pre>"; print_r($retourImage); echo "</pre>";
return $retourImage;
}
private function formaterLocalite($infosLocalite) {
$localiteFmt = array();
foreach ($infosLocalite as $localite) {
if($localite != '') {
$localiteFmt[] = $localite;
}
}
if (empty($localiteFmt)) {
$localiteFmt[0] = 'localité inconnue';
}
return implode(" > ", $localiteFmt);
}
}
?>
/trunk/metier/api_0.1/Eflore.php
17,9 → 17,12
const RANG_FAMILLE = 180;
const RANG_GENRE = 220;
const RANG_ESPECE = 290;
const API_EFLORE = '';
const API_DEL = 'del';
 
private $entete = null;
private $projet = null;
private $api = null;
 
public function __construct($projet = null) {
$this->projet = Registre::get('parametres.referentiel');
26,8 → 29,18
if (!is_null($projet)) {
$this->projet = $projet;
}
$this->api = self::API_EFLORE;
}
 
public function setApi($api) {
$this->api = $api;
return $this;
}
 
public function getApi() {
return $this->api;
}
 
public function setProjet($projet) {
$this->projet = $projet;
}
41,6 → 54,26
}
 
/**
* Récupère un squelette d'URL dans le fichier de configuration, en fonction de l'API spécifiée dans $this->api
*
* @param string $squelette squelette d'URL à chercher dans le fichier de config, sans le préfixe d'API
* @param string $api forcer l'API, false par défaut pour utiliser l'API spécifié dans $this->api (utiliser les constantes)
* @throws Exception si la clef générée n'est pas présente dans le fichier de configuration
*/
protected function obtenirSqueletteSelonApi($squelette) {
$api = $this->api;
if ($api != '') {
$squelette = ucfirst($squelette);
}
$clef = $api . $squelette . 'Tpl';
if (Config::existe($clef)) {
return Config::get($clef);
} else {
throw new Exception("Squelette indisponible pour l'API spécifiée");
}
}
 
/**
* Formate une url à partir d'un template contenant des paramètres à remplacer sous la forme {monParametre}.
* Le tableau associatif de paramètres doit contenir en clé le paramêtre (monParametre) sans les accolades,
* la valeur correspondante sera la valeur de remplacement.
49,7 → 82,7
*
* @param String $tpl le squelette d'url à formater.
* @param Array $parametres le tableau de parametres (sans accolades pour les clés).*/
protected function formaterUrl($tpl, Array $parametres) {
public function formaterUrl($tpl, Array $parametres) {
$parametres = $this->ajouterParametreParDefaut($parametres);
foreach($parametres as $key=> $value) {
if(is_array($value)) {