Subversion Repositories eFlore/Applications.del

Rev

Rev 1180 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1180 Rev 1436
Line 12... Line 12...
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
 */
Line -... Line 16...
-
 
16
 
-
 
17
require_once('MotClePictoflora.php');
16
 
18
 
Line 17... Line 19...
17
class AjouterMotCle {
19
class AjouterMotCle {
18
	
20
	
19
	private $conteneur;
21
	private $conteneur;
Line 97... Line 99...
97
	/**
99
	/**
98
	 * Insère un mot clé dans la table
100
	 * Insère un mot clé dans la table
99
	 * @param $mot_cle array la liste des paramètres
101
	 * @param $mot_cle array la liste des paramètres
100
	 * */
102
	 * */
101
	private function insererMotCle($mot_cle) {
103
	private function insererMotCle($mot_cle) {
102
		
-
 
-
 
104
		$id_image = intval($mot_cle['image']);
103
		$valeurs_a_inserer = '';
105
		$id_auteur = $mot_cle['auteur.id'];
104
		$mots_cles = $this->traiterMotsClesMultiples($mot_cle['mot_cle']);
106
		$mots_cles = explode(",", $mot_cle['mot_cle']);
-
 
107
		array_walk($mots_cles, create_function('&$val', '$val = trim($val);')); 
105
		
108
 
-
 
109
		$valeurs_a_inserer = array();		
106
		foreach ($mots_cles as $mot_cle_a_inserer) {
110
		foreach ($mots_cles as $mot_cle_a_inserer) {
107
			$mot_cle_normalise = $this->normaliserMotCle($mot_cle_a_inserer);
111
			$mot_cle_normalise = MotClePictoflora::normaliserMotCle($mot_cle_a_inserer);
108
			$valeurs_a_inserer .= '('.$this->bdd->proteger($mot_cle['image']).','.
112
			$valeurs_a_inserer[] = sprintf('(%d, %s, %s, %s, NOW(), 1, NOW())',
-
 
113
										   $id_image,
109
							$this->bdd->proteger($mot_cle['auteur.id']).', '.
114
										   $this->bdd->proteger($id_auteur),
110
							$this->bdd->proteger(trim($mot_cle_a_inserer)).', '.
115
										   $this->bdd->proteger(trim($mot_cle_a_inserer)),
111
							$this->bdd->proteger($mot_cle_normalise).', '.
116
										   $this->bdd->proteger($mot_cle_normalise));
112
							'NOW(), '.
-
 
113
							'1, '.
-
 
114
							'NOW() '.
-
 
115
					'), ';
-
 
116
		}
117
		}
117
		$valeurs_a_inserer = rtrim($valeurs_a_inserer,', ');
-
 
118
		
118
 
119
		$requete = 'INSERT INTO del_image_tag '.
119
		$retour = $this->bdd->requeter(sprintf(
120
					'(ce_image, ce_utilisateur, tag, tag_normalise, date, actif, date_modification) '.
120
			'INSERT INTO del_image_tag (ce_image, ce_utilisateur, tag, tag_normalise, date, actif, date_modification) VALUES %s ',
121
					'VALUES '.$valeurs_a_inserer;
121
			implode(",", $valeurs_a_inserer)));
Line 122... Line -...
122
 
-
 
123
		$retour = $this->bdd->requeter($requete);
122
 
124
		if ($retour == null) {
123
		if ($retour == null) {
125
			$e = 'Erreur inopinée lors de l\insertion';
124
			$e = 'Erreur inopinée lors de l\insertion';
126
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
125
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
127
		}
126
		}
-
 
127
 
128
		
128
		MotClePictoflora::updateStats($this->bdd, $mot_cle['image']);
129
		//TODO: voir si cela a vraiment du sens lors de l'ajout de plusieurs mots clés
129
		//TODO: voir si cela a vraiment du sens lors de l'ajout de plusieurs mots clés
130
		return null;
130
		return null;
131
	}
131
	}
132
	
-
 
133
	function traiterMotsClesMultiples($valeur_mot_cles) {
-
 
134
		$tab_mots_cles = explode(",", $valeur_mot_cles);
-
 
135
		return $tab_mots_cles;
-
 
136
	}
-
 
137
	
-
 
138
	private function normaliserMotCle($mot_cle) {
-
 
139
		return mb_strtolower($this->supprimerAccents(trim($mot_cle)));
-
 
140
	}
-
 
141
	
-
 
142
	//TODO: déplacer les fonctions ci dessus et dessous dans une classe
-
 
143
	// utilitaire
-
 
144
	private function supprimerAccents($str, $charset='utf-8')
-
 
145
	{
-
 
146
		$str = htmlentities($str, ENT_NOQUOTES, $charset);
-
 
147
	
-
 
148
		$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str);
-
 
149
		$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ'
-
 
150
		$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères
-
 
151
		$str = str_replace(' ', '_', $str); // supprime les espaces en les remplaçant des underscores
-
 
152
		$str = str_replace('-', '_', $str); // supprime les tirets en les remplaçant des underscores
-
 
153
		$str = str_replace("'", '_', $str); // supprime les quotes en les remplaçant des underscores
-
 
154
	
-
 
155
		return $str;
-
 
156
	}
132
 
157
}
133
}
158
?>
134
?>