Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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