* @author Delphine CAUQUIL * @copyright 2011 Tela-Botanica * @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3 * @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 * @version $Id$ */ class Illustrations extends aControleur { private $conteneur = null; private $nomCourant = null; private $images = null; private $appUrls = null; private $meta = null; private $referentiel = 'bdtfx'; private $donnees = array(); public function __construct(Conteneur $conteneur) { $this->conteneur = $conteneur; $this->nomCourant = $this->conteneur->getNomCourant(); $this->referentiel = $this->conteneur->getParametre('referentiel'); $this->images = $this->conteneur->getApiImages(); $this->appUrls = $this->conteneur->getAppUrls(); $this->meta = $this->conteneur->getApiMetaDonnees(); } public function obtenirDonnees() { $this->donnees['nt'] = $this->nomCourant->getNt(); $this->donnees['nomSciRetenu'] = $this->nomCourant->getNomRetenu()->get('nom_sci_html'); $this->getPhotos(); $this->getDessin(); return $this->donnees; } public function obtenirDonneesExport() { $this->donnees['nt'] = $this->nomCourant->getNt(); $this->donnees['nomSciRetenu'] = $this->nomCourant->getNomRetenu()->get('nom_sci_html'); $this->donnees['cel'] = $this->getCelExport(); $this->donnees['coste'] = $this->getCoste(); return $this->donnees; } public function getBloc() { $this->donnees = $this->getPhoto('cel'); if (empty($this->donnees)) { $infos_image = $this->getDessin(); if (empty($infos_image) == false ){ $this->donnees['imageUrl'] = array_shift($infos_image['images']); } } if (empty($this->donnees)) { $this->donnees = $this->getPhoto('photoflora'); } return $this->donnees; } public function getPhoto($source) { $donnees = array(); $this->images->setProjet($source); $nnr = $this->nomCourant->getNnr(); $infos_image = $this->images->getUrlPremiereImageParIdsNoms(array($nnr)); if ($infos_image != array()) { $image = array_shift($infos_image); $donnees['imageUrl'] = $image['binaire.href']; } return $donnees; } public function getCoste() { $coste = array(); $tax = $this->nomCourant->getNomRetenu()->get('num_taxonomique'); $this->images->setProjet('coste'); $this->images->setNnTaxon($tax); $costeImg = $this->images->getInfosImagesTaxons(); foreach ($costeImg as $infos) { $coste['images'][] = $infos['binaire.href']; } $this->meta->setProjet('coste'); $meta = $this->meta->getMetaDonnees(); $coste['meta']['titre']= $meta[0]['titre']; $coste['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('coste'); return $coste; } public function getDessin() { $projet = Config::get($this->referentiel.'.baseDessins'); if ($projet != "") { $dessin = array(); $tax = $this->nomCourant->getNomRetenu()->get('num_taxonomique'); $this->images->setProjet($projet); $this->images->setNnTaxon($tax); $costeImg = $this->images->getInfosImagesTaxons(); foreach ($costeImg as $infos) { $dessin['images'][] = $infos['binaire.href']; } $this->meta->setProjet('coste'); $meta = $this->meta->getMetaDonnees(); $dessin['meta']['titre']= $meta[0]['titre']; $dessin['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet); $this->donnees['coste'] = $dessin; } } public function getPhotos() { $projets[] = Config::get($this->referentiel.'.baseImages'); $projets[] = Config::get($this->referentiel.'.baseImagesSupp'); foreach ($projets as $projet) { if ($projet != "") { $images = $this->initialiserPhotos($projet); $this->formaterListePhotos($projet, $images); $this->formaterMetaPhotos($projet); } } } // XXX: webservice: // /service:eflore:0.1/cel/images?masque.nn=XXX&referentiel=bdtfx&retour.format=CS&navigation.limite=801 private function initialiserPhotos($projet) { $this->images->setProjet($projet); $nnr = $this->nomCourant->getNnr(); return $this->images->getInfosImagesParIdsNoms(array($nnr)); } private function formaterListePhotos($projet, $images) { foreach ($images as $idImg => $img) { $infosImg = array(); $infosImg['src'] = $img['binaire.href']; $infosImg['nomSci'] = $img['determination.nom_sci']; $infosImg['station'] = $img['station.libelle']; $infosImg['date'] = $this->formaterDateImg($img['date']); $infosImg['auteur'] = $img['auteur.libelle']; if ($projet == "cel") { $infosImg['urlDetailImg'] = $this->appUrls->obtenirUrlPopUpIllustrations($idImg); $infosImg['urlContact'] = $this->appUrls->obtenirUrlPopUpContact($img['auteur.id'], $idImg); } $this->donnees[$projet]['images'][$idImg] = $infosImg; } } private function formaterMetaPhotos($projet) { $this->meta->setProjet($projet); $meta = $this->meta->getMetaDonnees(); $titreMeta = $meta[0]['titre']; $this->donnees[$projet]['meta']['titre'] = $titreMeta; $this->donnees[$projet]['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projet); } public function getCelExport() { $cel = array(); $this->images->setProjet('cel'); $nnr = $this->nomCourant->getNnr(); $img = $this->images->getUrlPremiereImageParIdsNoms(array($nnr)); if($img) { $img = array_values($img); $cel['images']['src'] = $img[0]['binaire.href']; $cel['images']['nomSci'] = $img[0]['determination.nom_sci']; $cel['images']['station'] = $img[0]['station.libelle']; $cel['images']['date'] = $this->formaterDateImg($img[0]['date']); $cel['images']['auteur'] = $img[0]['auteur.libelle']; $this->meta->setProjet('cel'); $meta = $this->meta->getMetaDonnees(); $titreMeta = $meta[0]['titre']; $cel['meta']['titre'] = $titreMeta; $cel['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees('cel'); } return $cel; } private function formaterDateImg($date) { $dateFmt = $date; if ($date == '' || $date == null || $date == '0000-00-00' || $date == '1970-01-01 01:01:01') { return 'inconnue'; } $time = strtotime($date); if(!$time) { /* TODO: php -r "echo strtotime('1891-00-00 00:00:00');" TODO: fixer le template pour affiche "en l'année X", plutôt que "le X" si FALSE pour avant 1901: problème php On retourne alors simplement l'année. si correction, ne pas oublier modules/popup_illustrations/PopupIllustrations.php */ $dateFmt = explode('-', $date); return $dateFmt[0]; } return strftime('%e %B %Y', strtotime($date)); } private function formaterNomSci($nom) { $nomFmt = $nom; if (is_null($nom) || $nom == '') { $nomFmt = 'inconnu'; } return $nomFmt; } } ?>