Subversion Repositories eFlore/Applications.cel

Rev

Rev 1391 | Rev 2446 | 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   papyrus_bp
* @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/papyrus_bp/
*/

/**
 * Classe renvoyant un petit bout de json contenant les dernières obs publiques d'un utilisateur
 * Utilisée par l'annuaire appelant les web services résumé de chaque application
 * 
 */
class Resume extends Cel {

        function getElement($uid){

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

        $resultat_dernieres_obs = Cel::db()->requeter($requete_dernieres_obs);
        
        $dernieres_obs = array();
        $resume = array();

        if (is_array($resultat_dernieres_obs)) {
            $dernieres_obs = $resultat_dernieres_obs;
        }

        $resume['titre'] = 'Vos dernières observations publiées';
        $resume['lien_appli'] = '<a href="www.tela-botanica.org/appli:cel2"> Accéder au carnet en ligne </a>';

        if (count($dernieres_obs) == 0) {
                $resume['message'] = 'Aucune observation saisie pour le moment';
        }

                foreach ($dernieres_obs as $obs) {

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

                        $date = 'Datée du '.$obs['date_modification'].'<br/>'  ;
                        $lieu = 'Lieu : '.trim($obs['zone_geo'],'000null').' ('.$this->convertirCodeZoneGeoVersDepartement(trim($obs['ce_zone_geo']),'000null').') '.trim($obs['station'],'000null').' '.trim($obs['lieudit'],'000null').'<br/>'  ;

                        $image ='';
                        $cible_lien = '';
                                
                        $req_liaison = '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'].'"' ;
                $res_liaison = Cel::db()->requeter($req_liaison);

                        $ligne_image = null;
                        
                        foreach ($res_liaison as $img) {
                                $row = $img;
                        }

                        if($row != null) {
                        
                                $row['nom_original'] = htmlspecialchars($row['nom_original']);
                                $row['id_image'] = htmlspecialchars($row['id_image']);
                                $id = $row['id_image'];
        
                                $tailleXY = $this->calculerDimensions(array($row['largeur'], $row['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" ;
                        
                                $image = '<img src="'.$chemin_fichier_s.'" alt="'.$row['nom_original'].'" height="'.$tailleXY[1].'px" width="'.$tailleXY[0].'px"></img>';
                                $cible_lien = $chemin_fichier;
                        }
        
                        $resume_item = array('element' => $obs['nom_ret'].$date.$lieu, 'lien' => $cible_lien,'image' => $image);
                        $resume['elements'][] = $resume_item;
        }

                $this->envoyerJson($resume);                    
                return true;    
    }

    public 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 ;
    }
}
?>