Subversion Repositories eFlore/Applications.cel

Rev

Rev 2446 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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