Subversion Repositories eFlore/Applications.cel

Rev

Rev 1391 | Rev 2447 | Go to most recent revision | Details | Compare with Previous | 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
/**
17
 * Classe renvoyant une liste très succinte des observations liées à une image de l'utilisateur
18
 *
19
 */
20
class ImageContribution extends Cel {
416 aurelien 21
 
869 aurelien 22
	/**
23
	 * Renvoi un petit bout de html contenant les dernières obs liées à
24
	 * une image d'un utilisateur
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){
30
 
869 aurelien 31
        $requete_obs_liee_images = 'SELECT * FROM cel_obs'.
1765 raphael 32
        		' WHERE ce_utilisateur = '.Cel::db()->proteger($uid[1]).
869 aurelien 33
        		' AND id_observation IN (SELECT id_observation
416 aurelien 34
								FROM cel_obs_images
1765 raphael 35
								WHERE id_utilisateur = '.Cel::db()->proteger($uid[1]).' )'.
869 aurelien 36
				' AND transmission =  0'.
416 aurelien 37
				' ORDER BY date_modification DESC LIMIT 0,5';
38
 
869 aurelien 39
        $html = '<div id="resume_cel">';
40
 
41
        $obs_liees_images = array();
42
 
1765 raphael 43
        $resultat_obs_liees_images = Cel::db()->requeter($requete_obs_liee_images);
869 aurelien 44
 
45
        if(is_array($resultat_obs_liees_images)) {
46
        	$obs_liees_images = $resultat_obs_liees_images;
416 aurelien 47
        }
48
 
869 aurelien 49
        foreach ($obs_liees_images as $obs) {
416 aurelien 50
 
1391 aurelien 51
			$chemin_sur_serveur = $this->config['cel']['url_images'];
416 aurelien 52
 
869 aurelien 53
            $requete_img_liees = 'SELECT * FROM cel_images WHERE id_image '.
54
						   'IN (SELECT id_image FROM cel_obs_images '.
55
						   'WHERE id_observation = "'.$obs['id_observation'].'") '.
56
						   'AND ce_utilisateur = "'.$obs['ce_utilisateur'].'"' ;
416 aurelien 57
 
1765 raphael 58
			$resultat_requete_img_liees = Cel::db()->requeter($requete_img_liees);
416 aurelien 59
 
869 aurelien 60
			if (is_array($resultat_requete_img_liees) && count($resultat_requete_img_liees) > 0) {
61
 
62
				$premiere_image_liee = $resultat_requete_img_liees[0];
416 aurelien 63
 
869 aurelien 64
	           	$premiere_image_liee['nom_original'] = htmlspecialchars($premiere_image_liee['nom_original']);
65
	           	$premiere_image_liee['id_image'] = htmlspecialchars($premiere_image_liee['id_image']);
66
	           	$id = $premiere_image_liee['id_image'];
67
 
68
	           	$tailleXY = $this->calculerDimensions(array($premiere_image_liee['largeur'], $premiere_image_liee['hauteur']));
69
 
70
	            $id = sprintf('%09s', $id) ;
71
	            $id = wordwrap($id, 3 , '_', true) ;
72
 
73
	            $id_fichier = $id.".jpg" ;
74
 
996 aurelien 75
	            $niveauDossier = explode("_", $id) ;
869 aurelien 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" ;
83
	            $chemin_fichier_s = $chemin_sur_serveur_final.'/M/'.$id."_M.jpg" ;
84
 
85
	            $html .= '<div class="item_resume_cel">';
86
 
87
	           	$html .= '<h4><a href="'.$chemin_fichier.'">'.$obs['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/>';
89
	            $html .= '<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>';
92
 
93
	         	$html .= '</div>';
94
			}
416 aurelien 95
        }
96
 
97
        $html.= '</div>';
98
 
99
        header("Content-Type: text/html; charset=UTF-8");
100
        print $html;
101
        exit;
102
    }
103
 
869 aurelien 104
    private function calculerDimensions($tailleXY) {
416 aurelien 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
 
130
        return $tailleXY ;
131
    }
132
 
133
}
869 aurelien 134
?>