Subversion Repositories eFlore/Applications.cel

Rev

Rev 1391 | Rev 2447 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //

/**
* PHP Version 5
*
* @category  PHP
* @package   jrest
* @author    aurelien <aurelien@tela-botanica.org>
* @copyright 2010 Tela-Botanica
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
* @version   SVN: <svn_id>
* @link      /doc/jrest/
*/

/**
 * Classe renvoyant une liste très succinte des observations liées à une image de l'utilisateur 
 * 
 */
class ImageContribution extends Cel {

        /**
         * Renvoi un petit bout de html contenant les dernières obs liées à 
         * une image d'un utilisateur
         * 
         * @param string $uid[0] mail de l'utilisateur
         * @param string $uid[1] identifiant numérique de l'utilisateur
         */
        function getElement($uid){

        $requete_obs_liee_images = 'SELECT * FROM cel_obs'.
                        ' WHERE ce_utilisateur = '.Cel::db()->proteger($uid[1]).
                        ' AND id_observation IN (SELECT id_observation
                                                                FROM cel_obs_images
                                                                WHERE id_utilisateur = '.Cel::db()->proteger($uid[1]).' )'.
                                ' AND transmission =  0'.
                                ' ORDER BY date_modification DESC LIMIT 0,5';

        $html = '<div id="resume_cel">';
        
        $obs_liees_images = array();
        
        $resultat_obs_liees_images = Cel::db()->requeter($requete_obs_liee_images);
        
        if(is_array($resultat_obs_liees_images)) {
                $obs_liees_images = $resultat_obs_liees_images;
        }

        foreach ($obs_liees_images as $obs) {

                        $chemin_sur_serveur = $this->config['cel']['url_images'];

            $requete_img_liees = 'SELECT * FROM cel_images WHERE id_image '.
                                                   'IN (SELECT id_image FROM cel_obs_images '.
                                                   'WHERE id_observation = "'.$obs['id_observation'].'") '.
                                                   'AND ce_utilisateur = "'.$obs['ce_utilisateur'].'"' ;

                        $resultat_requete_img_liees = Cel::db()->requeter($requete_img_liees);

                        if (is_array($resultat_requete_img_liees) && count($resultat_requete_img_liees) > 0) {
                                
                                $premiere_image_liee = $resultat_requete_img_liees[0];

                        $premiere_image_liee['nom_original'] = htmlspecialchars($premiere_image_liee['nom_original']);
                        $premiere_image_liee['id_image'] = htmlspecialchars($premiere_image_liee['id_image']);
                        $id = $premiere_image_liee['id_image'];
        
                        $tailleXY = $this->calculerDimensions(array($premiere_image_liee['largeur'], $premiere_image_liee['hauteur']));
        
                    $id = sprintf('%09s', $id) ;
                    $id = wordwrap($id, 3 , '_', true) ;
        
                    $id_fichier = $id.".jpg" ;
        
                    $niveauDossier = explode("_", $id) ;
        
                    $dossierNiveau1 = $niveauDossier[0] ;
                    $dossierNiveau2 = $niveauDossier[1] ;
        
                    $chemin_sur_serveur_final = $chemin_sur_serveur.'/'.$dossierNiveau1.'/'.$dossierNiveau2 ;
        
                    $chemin_fichier = $chemin_sur_serveur_final.'/L/'.$id."_L.jpg" ;
                    $chemin_fichier_s = $chemin_sur_serveur_final.'/M/'.$id."_M.jpg" ;
        
                    $html .= '<div class="item_resume_cel">';
        
                        $html .= '<h4><a href="'.$chemin_fichier.'">'.$obs['nom_ret'].'</a></h4>'.
                        '<img src="'.$chemin_fichier_s.'" alt="'.$premiere_image_liee['nom_original'].'" height="'.$tailleXY[1].'px" width="'.$tailleXY[0].'px"></img><br/>';
                    $html .= '<span>Datée du '.$obs['date_modification'].'<br/>'  ;
                    $html .= 'Lieu : '.trim($obs['zone_geo'],'000null').' ('.trim($obs['ce_zone_geo'],'000null').') '.trim($obs['station'],'000null').' '.trim($obs['lieudit'],'000null').'<br/></p>'  ;
                                $html .= '</span>';
        
                        $html .= '</div>';
                        }
        }

        $html.= '</div>';

        header("Content-Type: text/html; charset=UTF-8");
        print $html;
        exit;
    }

    private function calculerDimensions($tailleXY) {

        $tailleOr = 75 ;

        if($tailleXY[1] == 0) {
            $tailleXY[1] = $tailleOr;
        }

        if($tailleXY[0] == 0) {
            $tailleXY[0] = $tailleOr;
        }

        $maxTaille = max($tailleXY[1],$tailleXY[0]) ;

        if($maxTaille == $tailleXY[1]) {

            $rapport = $tailleXY[1]/$tailleXY[0] ;
            $tailleXY[1] = 75 ;
            $tailleXY[0] = round($tailleXY[1]/$rapport,0) ;

        }else {
            $rapport = $tailleXY[0]/$tailleXY[1] ;
            $tailleXY[0] = 75 ;
            $tailleXY[1] = round($tailleXY[0]/$rapport,0) ;
        }

        return $tailleXY ;
    }

}
?>