Subversion Repositories eFlore/Applications.cel

Rev

Rev 2447 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
416 aurelien 1
<?php
2447 jpm 2
// declare(encoding='UTF-8');
416 aurelien 3
/**
2458 jpm 4
 * Service renvoyant une liste HTML très succinte des images (et infos sur l'obs liée) d'un utilisateur.
2446 jpm 5
 *
2458 jpm 6
 * @internal   Mininum PHP version : 5.2
7
 * @category   CEL
2447 jpm 8
 * @package    Services
2458 jpm 9
 * @subpackage Images
2447 jpm 10
 * @version    0.1
11
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
12
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
13
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
14
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
869 aurelien 17
 */
18
class ImageContribution extends Cel {
416 aurelien 19
 
869 aurelien 20
	/**
2446 jpm 21
	 * Renvoi un petit bout de html contenant les dernières obs liées à
869 aurelien 22
	 * une image d'un utilisateur
2446 jpm 23
	 *
870 aurelien 24
	 * @param string $uid[0] mail de l'utilisateur
869 aurelien 25
	 * @param string $uid[1] identifiant numérique de l'utilisateur
26
	 */
416 aurelien 27
	function getElement($uid){
2446 jpm 28
		$idUtilisateurP = Cel::db()->proteger($uid[1]);
29
		$requete = 'SELECT co.*, ci.id_image, ci.nom_original, ci.largeur, ci.hauteur '.
30
			'FROM cel_obs AS co INNER JOIN cel_images AS ci ON (id_observation = ce_observation) '.
31
			"WHERE co.ce_utilisateur = $idUtilisateurP ".
32
			'ORDER BY co.date_modification DESC '.
33
			'LIMIT 0,5 '.
34
			' -- '.__FILE__.':'.__LINE__;
35
		$resultats = Cel::db()->requeter($requete);
416 aurelien 36
 
2446 jpm 37
		$html = '<div id="resume_cel">';
38
		if ($resultats !== false && is_array($resultats)) {
39
			$urlImgTpl = $this->config['settings']['celImgUrlTpl'];
40
			foreach ($resultats as $obs) {
41
				$nom_ret = (!empty($obs['nom_ret'])) ? $obs['nom_ret'] : 'Indéterminée';
42
				$obs['nom_original'] = htmlspecialchars($obs['nom_original']);
43
				$obs['id_image'] = htmlspecialchars($obs['id_image']);
44
				$obs['zone_geo'] = trim($obs['zone_geo'],'000null');
45
				$obs['ce_zone_geo'] = trim($obs['ce_zone_geo'],'000null');
46
				$obs['station'] = trim($obs['station'],'000null');
47
				$obs['lieudit'] = trim($obs['lieudit'],'000null');
48
				$id = $obs['id_image'];
416 aurelien 49
 
2446 jpm 50
				list($largeur, $hauteur) = $this->calculerDimensions($obs['largeur'], $obs['hauteur']);
51
				$id = sprintf('%09s', $id);
52
				$urlImgL = sprintf($urlImgTpl, "{$id}L");
53
				$urlImgS = sprintf($urlImgTpl, "{$id}S");
416 aurelien 54
 
2446 jpm 55
				$html .= '<div class="item_resume_cel">'.
56
					'<h4><a href="'.$urlImgL.'">'.$nom_ret.'</a></h4>'.
57
					'<img src="'.$urlImgS.'" alt="'.$obs['nom_original'].'" height="'.$hauteur.'px" width="'.$largeur.'px" /><br/>'.
58
					'<span>Datée du '.$obs['date_modification'].'<br/>'.
59
					'Lieu : '.$obs['zone_geo'].' ('.$obs['ce_zone_geo'].') '.$obs['station'].' '.$obs['lieudit'].'<br/></p>'.
60
					'</span>'.
61
					'</div>';
869 aurelien 62
			}
2446 jpm 63
		}
64
		$html .= '</div>';
416 aurelien 65
 
2446 jpm 66
		header("Content-Type: text/html; charset=UTF-8");
67
		print $html;
68
		exit;
69
	}
416 aurelien 70
 
2446 jpm 71
	private function calculerDimensions($largeur, $hauteur) {
72
		$tailleOr = 75 ;
73
		if ($hauteur == 0) {
74
			$hauteur = $tailleOr;
75
		}
76
		if ($largeur == 0) {
77
			$largeur = $tailleOr;
78
		}
79
		$maxTaille = max($hauteur, $largeur);
416 aurelien 80
 
2446 jpm 81
		if ($maxTaille == $hauteur) {
82
			$rapport = $hauteur / $largeur;
83
			$hauteur = 75;
84
			$largeur = round($hauteur / $rapport, 0);
85
		} else {
86
			$rapport = $largeur / $hauteur;
87
			$largeur = 75;
88
			$hauteur = round($largeur / $rapport, 0);
89
		}
90
		return array($largeur, $hauteur);
91
	}
92
}