Rev 1765 | Rev 2458 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Classe renvoyant un petit bout de json contenant les dernières obs publiques d'un utilisateur* Utilisée par l'annuaire appelant les web services résumé de chaque application** @category PHP* @package papyrus_bp* @author aurelien <aurelien@tela-botanica.org>* @copyright 2010 Tela-Botanica* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL* @version SVN: <svn_id>* @link /doc/papyrus_bp/*/class Resume extends Cel {public function getElement($uid){$idUtilisateurP = Cel::db()->proteger($uid[1]);$requete = 'SELECT co.*, ci.id_image, ci.nom_original, ci.largeur, ci.hauteur '.'FROM cel_obs AS co INNER JOIN cel_images AS ci ON (id_observation = ce_observation) '."WHERE co.ce_utilisateur = $idUtilisateurP ".'ORDER BY co.date_modification DESC '.'LIMIT 0,5 '.' -- '.__FILE__.':'.__LINE__;$resultats = Cel::db()->requeter($requete);$urlImgTpl = $this->config['settings']['celImgUrlTpl'];$urlAppliCel = $this->config['settings']['celAppliUrl'];$resume = array('titre' => 'Vos dernières observations avec photos publiées','lien_appli' => '<a href="'.$urlAppliCel.'"> Accéder au carnet en ligne </a>');if ($resultats !== false && is_array($resultats) && count($resultats) == 0) {$resume['message'] = 'Aucune observation saisie pour le moment';} else if ($resultats !== false && is_array($resultats) && count($resultats) > 0) {foreach ($resultats as $obs) {$obs = array_filter($obs, array($this, 'nettoyerObs'));$nomRetenu = isset($obs['nom_ret']) ? $obs['nom_ret'] : 'Indéterminé';$date = 'Datée du '.$obs['date_modification'];$idZoneGeo = $this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo']);$lieuMorceaux = array();$lieuMorceaux[] = $obs['zone_geo'].(!empty($idZoneGeo) ? " ($idZoneGeo)" : '');$lieuMorceaux[] = $obs['station'];$lieuMorceaux[] = $obs['lieudit'];$lieu = 'Lieu : '.implode(', ', $lieuMorceaux);$nomOriginal = htmlspecialchars($obs['nom_original']);list($largeur, $hauteur) = $this->calculerDimensions($obs['largeur'], $obs['hauteur']);$idImg = sprintf('%09s', $obs['id_image']);$urlImgL = sprintf($urlImgTpl, "{$idImg}L");$urlImgM = sprintf($urlImgTpl, "{$idImg}M");$baliseImg = '<img src="'.$urlImgM.'" alt="'.$nomOriginal.'" height="'.$hauteur.'" width="'.$largeur.'" />';$resume['elements'][] = array('element' => "$nomRetenu<br />$date<br />$lieu<br />",'lien' => $urlImgL,'image' => $baliseImg);}}$this->envoyerJson($resume);return true;}protected function nettoyerObs($valeur) {return ($valeur == '000null') ? '' : trim($valeur);}private function calculerDimensions($largeur, $hauteur) {$tailleOr = 75 ;if ($hauteur == 0) {$hauteur = $tailleOr;}if ($largeur == 0) {$largeur = $tailleOr;}$maxTaille = max($hauteur, $largeur);if ($maxTaille == $hauteur) {$rapport = $hauteur / $largeur;$hauteur = 75;$largeur = round($hauteur / $rapport, 0);} else {$rapport = $largeur / $hauteur;$largeur = 75;$hauteur = round($largeur / $rapport, 0);}return array($largeur, $hauteur);}}