Subversion Repositories eFlore/Applications.cel

Rev

Blame | Last modification | View Log | RSS feed

<?php
/**
* @category  PHP
* @package   jrest
* @author    Jean-Pascal MILCENT <jpm@tela-botania.org>
* @copyright 2014 Tela-Botanica
* @license   Licence CECILL <http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt>
* @license       GPL v3 <http://www.gnu.org/licenses/gpl.txt>
*
*/
class CelSuppressionImage extends Cel {

        /**
         * Méthode appelée avec une requête de type DELETE.
         * Supprime les infos sur l'image et le fichier correspondant à l'ordre passé en parametre
         * Supporte la suppression multiple en passant plusieurs numéros séparés par des virgules
         *
         * @param int uid[0] id utilisateur
         * @param string uid[1] : ordre(s) image(s) obligatoire(s) séparés par des virgules
         *
         */
        public function deleteElement($uid){
                if ($this->controlerAccessibiliteWs()) {
                        if ($this->controleAppelIpAutorisee()) {
                                // Initialisation des paramètres
                                $idImage = isset($uid[0]) ? $uid[0] : '';

                                // Vérifier les paramêtres
                                $this->verifierIdentifiantImage($idImage);
                                $idsImages = explode(',', $idImage);

                                $gestionnaireImage = new GestionImage($this->config);
                                $suppressionImage = $gestionnaireImage->supprimerImage($idsImages);

                                if ($suppressionImage) {
                                        $this->envoyer('OK');
                                } else {
                                        $this->envoyer("L'image « $idImage » n'a pas pu être supprimé.");
                                }
                        } else {
                                header('Status: 401 Unauthorized');
                                $message = "Accès interdit. \n"."Vous n'êtes pas autorisé à accéder à ce service depuis '{$_SERVER['REMOTE_ADDR']}' !\n";
                                die($message);
                        }
                }
        }

        public function controlerAccessibiliteWs() {
                if (self::ARRET_SERVICE) {
                        header('Status: 503 Service Temporarily Unavailable');
                        die("La suppression d'images du CEL est temporairement désactivée.");
                }
                return true;
        }

        private function verifierIdentifiantImage($chaine) {
                $ok = preg_match('/^(?:[0-9]+,)*[0-9]+$/', $chaine);
                if ($ok == false) {
                        header("HTTP/1.0 412 Precondition Failed"); // TODO: PHP: 5.4 http_response_code(412);
                        header("Content-Type: text/plain; charset=utf-8");
                        die("Indiquer un ou plusieurs identifiants d'image séparés par des virgules.");
                }
                return $ok;
        }
}
?>