Subversion Repositories eFlore/Applications.cel

Rev

Rev 1765 | Rev 2458 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2
/**
2446 jpm 3
* Classe renvoyant un petit bout de json contenant les dernières obs publiques d'un utilisateur
4
* Utilisée par l'annuaire appelant les web services résumé de chaque application
416 aurelien 5
*
6
* @category  PHP
7
* @package   papyrus_bp
8
* @author    aurelien <aurelien@tela-botanica.org>
9
* @copyright 2010 Tela-Botanica
10
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
* @version   SVN: <svn_id>
12
* @link      /doc/papyrus_bp/
13
*/
861 aurelien 14
class Resume extends Cel {
416 aurelien 15
 
2446 jpm 16
	public function getElement($uid){
17
		$idUtilisateurP = Cel::db()->proteger($uid[1]);
18
		$requete = 'SELECT co.*, ci.id_image, ci.nom_original, ci.largeur, ci.hauteur '.
19
			'FROM cel_obs AS co INNER JOIN cel_images AS ci ON (id_observation = ce_observation) '.
20
			"WHERE co.ce_utilisateur = $idUtilisateurP ".
21
			'ORDER BY co.date_modification DESC '.
22
			'LIMIT 0,5 '.
23
			' -- '.__FILE__.':'.__LINE__;
24
		$resultats = Cel::db()->requeter($requete);
416 aurelien 25
 
2446 jpm 26
		$urlImgTpl = $this->config['settings']['celImgUrlTpl'];
27
		$urlAppliCel = $this->config['settings']['celAppliUrl'];
28
		$resume = array(
29
			'titre' => 'Vos dernières observations avec photos publiées',
30
			'lien_appli' => '<a href="'.$urlAppliCel.'"> Accéder au carnet en ligne </a>');
416 aurelien 31
 
2446 jpm 32
		if ($resultats !== false && is_array($resultats) && count($resultats) == 0) {
33
			$resume['message'] = 'Aucune observation saisie pour le moment';
34
		} else if ($resultats !== false && is_array($resultats) && count($resultats) > 0) {
416 aurelien 35
 
2446 jpm 36
			foreach ($resultats as $obs) {
37
				$obs = array_filter($obs, array($this, 'nettoyerObs'));
416 aurelien 38
 
2446 jpm 39
				$nomRetenu = isset($obs['nom_ret']) ? $obs['nom_ret'] : 'Indéterminé';
40
				$date = 'Datée du '.$obs['date_modification'];
41
				$idZoneGeo = $this->convertirCodeZoneGeoVersDepartement($obs['ce_zone_geo']);
42
				$lieuMorceaux = array();
43
				$lieuMorceaux[] = $obs['zone_geo'].(!empty($idZoneGeo) ? " ($idZoneGeo)" : '');
44
				$lieuMorceaux[] = $obs['station'];
45
				$lieuMorceaux[] = $obs['lieudit'];
46
				$lieu = 'Lieu : '.implode(', ', $lieuMorceaux);
47
				$nomOriginal = htmlspecialchars($obs['nom_original']);
48
				list($largeur, $hauteur) = $this->calculerDimensions($obs['largeur'], $obs['hauteur']);
49
				$idImg = sprintf('%09s', $obs['id_image']);
50
				$urlImgL = sprintf($urlImgTpl, "{$idImg}L");
51
				$urlImgM = sprintf($urlImgTpl, "{$idImg}M");
52
				$baliseImg = '<img src="'.$urlImgM.'" alt="'.$nomOriginal.'" height="'.$hauteur.'" width="'.$largeur.'" />';
416 aurelien 53
 
2446 jpm 54
				$resume['elements'][] = array(
55
					'element' => "$nomRetenu<br />$date<br />$lieu<br />",
56
					'lien' => $urlImgL,
57
					'image' => $baliseImg);
416 aurelien 58
			}
2446 jpm 59
		}
60
		$this->envoyerJson($resume);
61
		return true;
62
	}
416 aurelien 63
 
2446 jpm 64
	protected function nettoyerObs($valeur) {
65
		return ($valeur == '000null') ? '' : trim($valeur);
66
	}
416 aurelien 67
 
2446 jpm 68
	private function calculerDimensions($largeur, $hauteur) {
69
		$tailleOr = 75 ;
70
		if ($hauteur == 0) {
71
			$hauteur = $tailleOr;
72
		}
73
		if ($largeur == 0) {
74
			$largeur = $tailleOr;
75
		}
76
		$maxTaille = max($hauteur, $largeur);
416 aurelien 77
 
2446 jpm 78
		if ($maxTaille == $hauteur) {
79
			$rapport = $hauteur / $largeur;
80
			$hauteur = 75;
81
			$largeur = round($hauteur / $rapport, 0);
82
		} else {
83
			$rapport = $largeur / $hauteur;
84
			$largeur = 75;
85
			$hauteur = round($largeur / $rapport, 0);
86
		}
87
		return array($largeur, $hauteur);
88
	}
89
}