Rev 1795 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Ajoute un ou plusieurs mots-clés en les associant à un identifiant d'image** @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 AjouterMotCle {private $conteneur;private $bdd;private $parametres = array();private $idDernierAjout = null;private $nbreMotsClesAjoutes = null;public function __construct(Conteneur $conteneur = null) {$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;$this->bdd = $this->conteneur->getBdd();}/*** Ajoute un mot-clé si les objets fournis en paramètres sont valides* pour l'afficher.* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)* @param array $parametres les paramètres situés après le ? dans l'url* */public function ajouter($ressources, $parametres) {$this->parametres = $parametres;// Gestion des configuration du script$this->verifierParametres();$this->insererMotCle();TelaBotanica\Del\Commun\MotsClesImage::updateStats($this->bdd, $this->parametres['image']);// Mettre en forme le résultat et l'envoyer pour affichage$resultat = new ResultatService();$resultat->corps = array('nbre' => $this->nbreMotsClesAjoutes, 'id' => $this->idDernierAjout);return $resultat;}public function verifierParametres() {$erreurs = array();if (!isset($this->parametres['image'])) {$erreurs[] = " - impossible d'ajouter un mot clé sans l'indication de l'identifiant de l'image associée";} else if(!is_numeric($this->parametres['image'])) {$erreurs[] = " - l'identifiant d'image doit être un entier";}if (!isset($this->parametres['mot_cle'])) {$erreurs[] = " - impossible d'ajouter un mot clé sans le mot clé";}if (!isset($this->parametres['auteur.id'])) {$erreurs[] = " - impossible d'ajouter un mot clé sans l'identifiant de l'auteur associé";}if (!empty($erreurs)) {$msg = "Erreur de configuration :\n".implode("\n", $erreurs);throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);}}/*** Insère un mot clé dans la table* */private function insererMotCle() {$clauseValues = $this->creerClauseValues();$requete = 'INSERT INTO del_image_tag '.'(ce_image, ce_utilisateur, tag, tag_normalise, date, actif, date_modification) '."VALUES $clauseValues ".' -- '.__FILE__.' : '.__LINE__;$nbreInsertion = $this->bdd->executer($requete);$idDernierAjout = $this->bdd->recupererIdDernierAjout();if ($nbreInsertion == null) {$msgTpl = "Erreur lors de l'insertion d'un des tags «%s» pour l'image «%s» de l'auteur «%s»";$msg = sprintf($msgTpl, $this->parametres['mot_cle'], $this->parametres['image'], $this->parametres['auteur.id']);throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}$this->nbreMotsClesAjoutes = $nbreInsertion;$this->listerIdAjoutes($idDernierAjout, $nbreInsertion);}private function listerIdAjoutes($dernierId, $nbreInsertion) {$this->idDernierAjout[] = $dernierId;for ($i = 1 ; $i <= ($nbreInsertion - 1); $i++ ) {$this->idDernierAjout[] = ++$dernierId;}}private function creerClauseValues() {$id_image = intval($this->parametres['image']);$idImageP = $this->bdd->proteger($id_image);$id_auteur = $this->parametres['auteur.id'];$idAuteurP = $this->bdd->proteger($id_auteur);$mots_cles = explode(',', $this->parametres['mot_cle']);$values = array();foreach ($mots_cles as $mot_cle) {$motCleP = $this->bdd->proteger(trim($mot_cle));$mot_cle_normalise = TelaBotanica\Del\Commun\MotsClesImage::normaliserMotCle($mot_cle);$motCleNormaliseP = $this->bdd->proteger($mot_cle_normalise);$values[] = "($idImageP, $idAuteurP, $motCleP, $motCleNormaliseP, NOW(), 1, NOW())";}$clauseValues = implode(',', $values);return $clauseValues;}}