Subversion Repositories eFlore/Applications.del

Rev

Rev 1793 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1793 Rev 1794
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Ajoute un mot clé en l'associant à un identifiant d'image
4
 * Ajoute un mot clé en l'associant à un identifiant d'image
5
 *
5
 *
6
 * @category	php 5.2
6
 * @category	php 5.2
7
 * @package	del
7
 * @package	del
8
 * @subpackage images
8
 * @subpackage images
9
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
9
 * @author		Aurélien PERONNET <aurelien@tela-botanica.org>
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version	$Id$
13
 * @version	$Id$
14
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
14
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
15
 */
15
 */
16
 
16
 
17
require_once('MotClePictoflora.php');
17
require_once('MotClePictoflora.php');
18
 
18
 
19
class AjouterMotCle {
19
class AjouterMotCle {
20
 
20
 
21
	private $conteneur;
21
	private $conteneur;
22
	private $navigation;
22
	private $navigation;
23
	private $masque;
-
 
24
	private $bdd;
23
	private $bdd;
25
	private $parametres = array();
24
	private $parametres = array();
26
	private $ressources = array();
25
	private $ressources = array();
27
 
26
 
28
	private $commentaire;
27
	private $commentaire;
29
 
28
 
30
	public function __construct(Conteneur $conteneur = null) {
29
	public function __construct(Conteneur $conteneur = null) {
31
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
30
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
32
		$this->navigation = $conteneur->getNavigation();
31
		$this->navigation = $conteneur->getNavigation();
33
		$this->masque = $conteneur->getMasque();
-
 
34
		$this->bdd = $this->conteneur->getBdd();
32
		$this->bdd = $this->conteneur->getBdd();
35
	}
33
	}
36
 
34
 
37
	/**
35
	/**
38
	 * Ajoute un mot-clé si les objets fournis en paramètres sont valides
36
	 * Ajoute un mot-clé si les objets fournis en paramètres sont valides
39
	 * pour l'afficher.
37
	 * pour l'afficher.
40
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
38
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
41
	 * @param array $parametres les paramètres situés après le ? dans l'url
39
	 * @param array $parametres les paramètres situés après le ? dans l'url
42
	 * */
40
	 * */
43
	public function ajouter($ressources, $parametres) {
41
	public function ajouter($ressources, $parametres) {
44
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
42
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
45
 
43
 
46
		// Gestion des configuration du script
44
		// Gestion des configuration du script
47
		$this->verifierConfiguration();
45
		$this->verifierConfiguration();
48
		$insertion = $this->insererMotCle($this->parametres);
46
		$insertion = $this->insererMotCle($this->parametres);
49
 
47
 
50
		// Mettre en forme le résultat et l'envoyer pour affichage
48
		// Mettre en forme le résultat et l'envoyer pour affichage
51
		$resultat = new ResultatService();
49
		$resultat = new ResultatService();
52
		$resultat->corps = array('id_mot_cle' => $insertion);
50
		$resultat->corps = array('id_mot_cle' => $insertion);
53
 
51
 
54
		return $resultat;
52
		return $resultat;
55
	}
53
	}
56
 
54
 
57
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
55
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
58
		$this->ressources = $ressources;
56
		$this->ressources = $ressources;
59
		$this->parametres = $parametres;
57
		$this->parametres = $parametres;
60
	}
58
	}
61
 
59
 
62
	/*-------------------------------------------------------------------------------
60
	/*-------------------------------------------------------------------------------
63
	 							CONFIGURATION DU SERVICE
61
	 							CONFIGURATION DU SERVICE
64
	 --------------------------------------------------------------------------------*/
62
	 --------------------------------------------------------------------------------*/
65
	/**
63
	/**
66
	 * Vérifier que le service est bien configuré
64
	 * Vérifier que le service est bien configuré
67
	 * */
65
	 * */
68
	public function verifierConfiguration() {
66
	public function verifierConfiguration() {
69
		$erreurs = array();
67
		$erreurs = array();
70
 
68
 
71
		if (!isset($this->parametres['image'])) {
69
		if (!isset($this->parametres['image'])) {
72
			$erreurs[] = ' - impossible d\'ajouter un mot clé sans image associée ;';
70
			$erreurs[] = ' - impossible d\'ajouter un mot clé sans image associée ;';
73
		} else if(!is_numeric($this->parametres['image'])) {
71
		} else if(!is_numeric($this->parametres['image'])) {
74
			$erreurs[] = ' - l\'identifiant d\'image doit être un entier ;';
72
			$erreurs[] = ' - l\'identifiant d\'image doit être un entier ;';
75
		}
73
		}
76
 
74
 
77
		if (!isset($this->parametres['mot_cle'])) {
75
		if (!isset($this->parametres['mot_cle'])) {
78
			$erreurs[] = ' - impossible d\'ajouter un mot clé sans le mot clé ;';
76
			$erreurs[] = ' - impossible d\'ajouter un mot clé sans le mot clé ;';
79
		}
77
		}
80
 
78
 
81
		if (!isset($this->parametres['auteur.id'])) {
79
		if (!isset($this->parametres['auteur.id'])) {
82
			$erreurs[] = ' - impossible d\'ajouter un mot clé sans auteur associé ;';
80
			$erreurs[] = ' - impossible d\'ajouter un mot clé sans auteur associé ;';
83
		}
81
		}
84
 
82
 
85
		if (!empty($erreurs)) {
83
		if (!empty($erreurs)) {
86
			$e = 'Erreur de configuration :';
84
			$e = 'Erreur de configuration :';
87
			$e = implode("\n", $erreurs);
85
			$e = implode("\n", $erreurs);
88
			echo var_dump($e);
86
			echo var_dump($e);
89
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
87
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
90
		}
88
		}
91
	}
89
	}
92
 
90
 
93
	/*-------------------------------------------------------------------------------
91
	/*-------------------------------------------------------------------------------
94
							   INSERTION DES MOTS CLES
92
							   INSERTION DES MOTS CLES
95
	--------------------------------------------------------------------------------*/
93
	--------------------------------------------------------------------------------*/
96
	/**
94
	/**
97
	 * Insère un mot clé dans la table
95
	 * Insère un mot clé dans la table
98
	 * @param $mot_cle array la liste des paramètres
96
	 * @param $mot_cle array la liste des paramètres
99
	 * */
97
	 * */
100
	private function insererMotCle($mot_cle) {
98
	private function insererMotCle($mot_cle) {
101
		$id_image = intval($mot_cle['image']);
99
		$id_image = intval($mot_cle['image']);
102
		$id_auteur = $mot_cle['auteur.id'];
100
		$id_auteur = $mot_cle['auteur.id'];
103
		$mots_cles = explode(",", $mot_cle['mot_cle']);
101
		$mots_cles = explode(",", $mot_cle['mot_cle']);
104
		array_walk($mots_cles, create_function('&$val', '$val = trim($val);'));
102
		array_walk($mots_cles, create_function('&$val', '$val = trim($val);'));
105
 
103
 
106
		$valeurs_a_inserer = array();
104
		$valeurs_a_inserer = array();
107
		foreach ($mots_cles as $mot_cle_a_inserer) {
105
		foreach ($mots_cles as $mot_cle_a_inserer) {
108
			$mot_cle_normalise = MotClePictoflora::normaliserMotCle($mot_cle_a_inserer);
106
			$mot_cle_normalise = MotClePictoflora::normaliserMotCle($mot_cle_a_inserer);
109
			$valeurs_a_inserer[] = sprintf('(%d, %s, %s, %s, NOW(), 1, NOW())',
107
			$valeurs_a_inserer[] = sprintf('(%d, %s, %s, %s, NOW(), 1, NOW())',
110
										   $id_image,
108
										   $id_image,
111
										   $this->bdd->proteger($id_auteur),
109
										   $this->bdd->proteger($id_auteur),
112
										   $this->bdd->proteger(trim($mot_cle_a_inserer)),
110
										   $this->bdd->proteger(trim($mot_cle_a_inserer)),
113
										   $this->bdd->proteger($mot_cle_normalise));
111
										   $this->bdd->proteger($mot_cle_normalise));
114
		}
112
		}
115
 
113
 
116
		$retour = $this->bdd->requeter(sprintf(
114
		$retour = $this->bdd->requeter(sprintf(
117
			'INSERT INTO del_image_tag (ce_image, ce_utilisateur, tag, tag_normalise, date, actif, date_modification) VALUES %s ',
115
			'INSERT INTO del_image_tag (ce_image, ce_utilisateur, tag, tag_normalise, date, actif, date_modification) VALUES %s ',
118
			implode(",", $valeurs_a_inserer)));
116
			implode(",", $valeurs_a_inserer)));
119
 
117
 
120
		if ($retour == null) {
118
		if ($retour == null) {
121
			$e = 'Erreur inopinée lors de l\insertion';
119
			$e = 'Erreur inopinée lors de l\insertion';
122
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
120
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
123
		}
121
		}
124
 
122
 
125
		MotClePictoflora::updateStats($this->bdd, $mot_cle['image']);
123
		MotClePictoflora::updateStats($this->bdd, $mot_cle['image']);
126
		//TODO: voir si cela a vraiment du sens lors de l'ajout de plusieurs mots clés
124
		//TODO: voir si cela a vraiment du sens lors de l'ajout de plusieurs mots clés
127
		return null;
125
		return null;
128
	}
126
	}
129
 
127
 
130
}
128
}
131
?>
129
?>