Subversion Repositories eFlore/Applications.cel

Rev

Rev 2133 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php
class CelImageFormat {
        
        private $config;
        private $formats = array('CRX2S','CRXS','CXS','CS','CRS','XS','S','M','L','XL','X2L','X3L','O');
        
        // Pas besoin d'étendre Cel ici, surtout que le constructeur 
        // de la classe Cel instancie toujours une connexion à la bdd
        // dont on a pas besoin ici. Ceci évite de planter le service
        // quand la bdd est surchargée.
        public function __construct($config) {
                $this->config = $config;
        }
        
        /**
        * Méthode appelée avec une requête de type GET.
        */
        public function getElement($params) {
                // suppression des 0 non significatifs à gauche
                $id = ltrim($params[0],'0');
                $format = isset($_GET['format']) ? $_GET['format'] : 'M';       
                
                if($this->verifierParametres($id, $format)) {
                        $gestion_formats_images = new ImageRecreation($this->config);
                        $image_binaire = $gestion_formats_images->creerOuRenvoyerImage($params[0], $format);
                        
                        if($image_binaire) {
                                header('Content-Type: image/jpeg');
                                echo $image_binaire;
                                exit;
                        } else {
                                header("HTTP/1.0 404 Not Found");
                                echo 'Aucune image ne correspond à cet identifiant';
                        }
                }
        }
        
        private function verifierParametres($id, $format) {
                $ok = true;
                $message = '';
                if(!is_numeric($id)) {
                        $message .= "L'identifiant de format doit être un entier. ";
                        $ok = false;
                }
                
                if(!in_array($format, $this->formats)) {
                        $message .= "Le format d'image est inconnu, les formats acceptés sont ".implode(',', $this->formats).". ";
                        $ok = false;
                }
                
                if(!empty($message)) {
                        header("HTTP/1.0 400 Bad Request");
                        echo $message;
                }
                
                return $ok;
        }
}