* @author Jean-Pascal MILCENT * @author Aurelien PERONNET * @license GPL v3 * @license CECILL v2 * @copyright 1999-2014 Tela Botanica */ 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' => ' Accéder au carnet en ligne '); 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 = ''.$nomOriginal.''; $resume['elements'][] = array( 'element' => "$nomRetenu
$date
$lieu
", '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); } }