Subversion Repositories eFlore/Applications.del

Rev

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

<?php
// declare(encoding='UTF-8');
/**
 * Supprime un mot clé par son identifiant
 *
 * @category   DEL
 * @package    Services
 * @subpackage MotsCles
 * @version    0.1
 * @author     Mathias CHOUET <mathias@tela-botanica.org>
 * @author     Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @author     Aurelien PERONNET <aurelien@tela-botanica.org>
 * @license    GPL v3 <http://www.gnu.org/licenses/gpl.txt>
 * @license    CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
 * @copyright  1999-2014 Tela Botanica <accueil@tela-botanica.org>
 */

class SupprimerMotCle {

        private $conteneur;
        private $bdd;
        private $ressources = array();
        private $motCleId;

        public function __construct(Conteneur $conteneur = null) {
                $this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
                $this->bdd = $this->conteneur->getBdd();
        }

        /**
         * Supprime un mot-clé si les données fournis en paramètres sont valides.
         *
         * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
         */
        public function supprimer($ressources) {
                $this->ressources = $ressources;
                $this->verifierRessources();

                $this->motCleId = $this->ressources[0];
                $this->supprimerMotCle();
                TelaBotanica\Del\Commun\MotsClesImage::updateStats($this->bdd, $this->motCleId);

                // Mettre en forme le résultat et l'envoyer pour affichage
                $resultat = new ResultatService();
                return $resultat;
        }

        private function verifierRessources() {
                $erreurs = array();

                if (!isset($this->ressources[0])) {
                        $erreurs[] = " - impossible de supprimer un mot clé sans l'identifiant associé ;";
                } else if(!is_numeric($this->ressources[0])) {
                        $erreurs[] = " - l'identifiant de mot clé doit être un entier ;";
                }

                if (!empty($erreurs)) {
                        $msg = "Erreur de configuration :\n".implode("\n", $erreurs);
                        throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
                }
        }

        private function supprimerMotCle() {
                $idMotCleP = $this->bdd->proteger($this->motCleId);
                $requete = 'UPDATE del_image_tag '.
                        'SET actif = 0, date_modification = NOW() '.
                        "WHERE id_tag = $idMotCleP ".
                        ' -- '.__FILE__.' : '.__LINE__;
                $retour = $this->bdd->executer($requete);
                if ($retour == null) {
                        $msg = "Erreur lors de la suppression du mot-clé d'id $idMotCleP";
                        throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);
                }
                return $retour;
        }
}