Subversion Repositories eFlore/Applications.cel

Rev

Rev 1765 | Rev 2447 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1765 Rev 2446
Line 12... Line 12...
12
* @version   SVN: <svn_id>
12
* @version   SVN: <svn_id>
13
* @link      /doc/jrest/
13
* @link      /doc/jrest/
14
*/
14
*/
Line 15... Line 15...
15
 
15
 
16
/**
16
/**
17
 * Classe renvoyant une liste très succinte des observations liées à une image de l'utilisateur 
17
 * Classe renvoyant une liste très succinte des observations liées à une image de l'utilisateur
18
 * 
18
 *
19
 */
19
 */
Line 20... Line 20...
20
class ImageContribution extends Cel {
20
class ImageContribution extends Cel {
21
 
21
 
22
	/**
22
	/**
23
	 * Renvoi un petit bout de html contenant les dernières obs liées à 
23
	 * Renvoi un petit bout de html contenant les dernières obs liées à
24
	 * une image d'un utilisateur
24
	 * une image d'un utilisateur
25
	 * 
25
	 *
26
	 * @param string $uid[0] mail de l'utilisateur
26
	 * @param string $uid[0] mail de l'utilisateur
27
	 * @param string $uid[1] identifiant numérique de l'utilisateur
27
	 * @param string $uid[1] identifiant numérique de l'utilisateur
28
	 */
-
 
29
	function getElement($uid){
-
 
30
 
28
	 */
31
        $requete_obs_liee_images = 'SELECT * FROM cel_obs'.
29
	function getElement($uid){
32
        		' WHERE ce_utilisateur = '.Cel::db()->proteger($uid[1]).
-
 
33
        		' AND id_observation IN (SELECT id_observation
30
		$idUtilisateurP = Cel::db()->proteger($uid[1]);
34
								FROM cel_obs_images
31
		$requete = 'SELECT co.*, ci.id_image, ci.nom_original, ci.largeur, ci.hauteur '.
35
								WHERE id_utilisateur = '.Cel::db()->proteger($uid[1]).' )'.
32
			'FROM cel_obs AS co INNER JOIN cel_images AS ci ON (id_observation = ce_observation) '.
36
				' AND transmission =  0'.
-
 
37
				' ORDER BY date_modification DESC LIMIT 0,5';
33
			"WHERE co.ce_utilisateur = $idUtilisateurP ".
38
 
-
 
39
        $html = '<div id="resume_cel">';
34
			'ORDER BY co.date_modification DESC '.
40
        
-
 
41
        $obs_liees_images = array();
35
			'LIMIT 0,5 '.
42
        
36
			' -- '.__FILE__.':'.__LINE__;
43
        $resultat_obs_liees_images = Cel::db()->requeter($requete_obs_liee_images);
37
		$resultats = Cel::db()->requeter($requete);
44
        
-
 
45
        if(is_array($resultat_obs_liees_images)) {
-
 
46
        	$obs_liees_images = $resultat_obs_liees_images;
-
 
47
        }
38
 
48
 
-
 
49
        foreach ($obs_liees_images as $obs) {
39
		$html = '<div id="resume_cel">';
50
 
-
 
51
			$chemin_sur_serveur = $this->config['cel']['url_images'];
-
 
52
 
40
		if ($resultats !== false && is_array($resultats)) {
53
            $requete_img_liees = 'SELECT * FROM cel_images WHERE id_image '.
41
			$urlImgTpl = $this->config['settings']['celImgUrlTpl'];
54
						   'IN (SELECT id_image FROM cel_obs_images '.
42
			foreach ($resultats as $obs) {
55
						   'WHERE id_observation = "'.$obs['id_observation'].'") '.
-
 
56
						   'AND ce_utilisateur = "'.$obs['ce_utilisateur'].'"' ;
43
				$nom_ret = (!empty($obs['nom_ret'])) ? $obs['nom_ret'] : 'Indéterminée';
57
 
-
 
58
			$resultat_requete_img_liees = Cel::db()->requeter($requete_img_liees);
44
				$obs['nom_original'] = htmlspecialchars($obs['nom_original']);
59
 
-
 
60
			if (is_array($resultat_requete_img_liees) && count($resultat_requete_img_liees) > 0) {
45
				$obs['id_image'] = htmlspecialchars($obs['id_image']);
61
				
-
 
62
				$premiere_image_liee = $resultat_requete_img_liees[0];
46
				$obs['zone_geo'] = trim($obs['zone_geo'],'000null');
63
 
47
				$obs['ce_zone_geo'] = trim($obs['ce_zone_geo'],'000null');
64
	           	$premiere_image_liee['nom_original'] = htmlspecialchars($premiere_image_liee['nom_original']);
48
				$obs['station'] = trim($obs['station'],'000null');
65
	           	$premiere_image_liee['id_image'] = htmlspecialchars($premiere_image_liee['id_image']);
49
				$obs['lieudit'] = trim($obs['lieudit'],'000null');
66
	           	$id = $premiere_image_liee['id_image'];
50
				$id = $obs['id_image'];
67
	
-
 
68
	           	$tailleXY = $this->calculerDimensions(array($premiere_image_liee['largeur'], $premiere_image_liee['hauteur']));
51
 
69
	
52
				list($largeur, $hauteur) = $this->calculerDimensions($obs['largeur'], $obs['hauteur']);
70
	            $id = sprintf('%09s', $id) ;
-
 
71
	            $id = wordwrap($id, 3 , '_', true) ;
-
 
72
	
-
 
73
	            $id_fichier = $id.".jpg" ;
53
				$id = sprintf('%09s', $id);
74
	
-
 
75
	            $niveauDossier = explode("_", $id) ;
-
 
76
	
-
 
77
	            $dossierNiveau1 = $niveauDossier[0] ;
-
 
78
	            $dossierNiveau2 = $niveauDossier[1] ;
-
 
79
	
-
 
80
	            $chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
-
 
81
	
-
 
82
	            $chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id."_L.jpg" ;
54
				$urlImgL = sprintf($urlImgTpl, "{$id}L");
83
	            $chemin_fichier_s = $chemin_sur_serveur_final.'/M/'.$id."_M.jpg" ;
55
				$urlImgS = sprintf($urlImgTpl, "{$id}S");
84
	
-
 
85
	            $html .= '<div class="item_resume_cel">';
56
 
86
	
57
				$html .= '<div class="item_resume_cel">'.
87
	           	$html .= '<h4><a href="'.$chemin_fichier.'">'.$obs['nom_ret'].'</a></h4>'.
58
					'<h4><a href="'.$urlImgL.'">'.$nom_ret.'</a></h4>'.
88
	          	'<img src="'.$chemin_fichier_s.'" alt="'.$premiere_image_liee['nom_original'].'" height="'.$tailleXY[1].'px" width="'.$tailleXY[0].'px"></img><br/>';
59
					'<img src="'.$urlImgS.'" alt="'.$obs['nom_original'].'" height="'.$hauteur.'px" width="'.$largeur.'px" /><br/>'.
89
	            $html .= '<span>Datée du '.$obs['date_modification'].'<br/>'  ;
60
					'<span>Datée du '.$obs['date_modification'].'<br/>'.
90
	            $html .= 'Lieu : '.trim($obs['zone_geo'],'000null').' ('.trim($obs['ce_zone_geo'],'000null').') '.trim($obs['station'],'000null').' '.trim($obs['lieudit'],'000null').'<br/></p>'  ;
-
 
91
				$html .= '</span>';
61
					'Lieu : '.$obs['zone_geo'].' ('.$obs['ce_zone_geo'].') '.$obs['station'].' '.$obs['lieudit'].'<br/></p>'.
92
	
62
					'</span>'.
93
	         	$html .= '</div>';
-
 
94
			}
63
					'</div>';
95
        }
64
			}
96
 
-
 
97
        $html.= '</div>';
-
 
98
 
-
 
99
        header("Content-Type: text/html; charset=UTF-8");
-
 
100
        print $html;
-
 
101
        exit;
-
 
102
    }
-
 
103
 
-
 
104
    private function calculerDimensions($tailleXY) {
-
 
105
 
-
 
106
        $tailleOr = 75 ;
-
 
107
 
-
 
108
        if($tailleXY[1] == 0) {
-
 
109
            $tailleXY[1] = $tailleOr;
-
 
110
        }
-
 
111
 
-
 
112
        if($tailleXY[0] == 0) {
-
 
113
            $tailleXY[0] = $tailleOr;
-
 
114
        }
-
 
115
 
-
 
116
        $maxTaille = max($tailleXY[1],$tailleXY[0]) ;
-
 
117
 
-
 
118
        if($maxTaille == $tailleXY[1]) {
-
 
119
 
-
 
120
            $rapport = $tailleXY[1]/$tailleXY[0] ;
-
 
121
            $tailleXY[1] = 75 ;
-
 
122
            $tailleXY[0] = round($tailleXY[1]/$rapport,0) ;
-
 
123
 
-
 
124
        }else {
-
 
125
            $rapport = $tailleXY[0]/$tailleXY[1] ;
-
 
126
            $tailleXY[0] = 75 ;
-
 
127
            $tailleXY[1] = round($tailleXY[0]/$rapport,0) ;
-
 
128
        }
-
 
129
 
-
 
Line 130... Line -...
130
        return $tailleXY ;
-
 
131
    }
-
 
132
 
65
		}
-
 
66
		$html .= '</div>';
-
 
67
 
-
 
68
		header("Content-Type: text/html; charset=UTF-8");
-
 
69
		print $html;
-
 
70
		exit;
-
 
71
	}
-
 
72
 
-
 
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);
-
 
82
 
-
 
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);
133
}
93
	}