Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1066 Rev 1234
Line 24... Line 24...
24
	const IMG_RACINE_ID = 'racine';
24
	const IMG_RACINE_ID = 'racine';
25
	const IMG_RACINE_NOM = 'Mots clés';
25
	const IMG_RACINE_NOM = 'Mots clés';
26
	const IMG_TABLE_SUFFIXE = '_images';
26
	const IMG_TABLE_SUFFIXE = '_images';
Line 27... Line 27...
27
 
27
 
28
	const SEPARATEUR_MOT_CLE_TEXTE = '##';
28
	const SEPARATEUR_MOT_CLE_TEXTE = '##';
-
 
29
	const SEPARATEUR_MOT_CLE_ID_OBS = ';';
Line 29... Line 30...
29
	const SEPARATEUR_MOT_CLE_ID = ';';
30
	const SEPARATEUR_MOT_CLE_ID_IMG = ',';
30
 
31
 
31
	/**
32
	/**
32
	 * @var String permet de savoir si nous avons à faire à un mot clé d'observation ou d'image.
33
	 * @var String permet de savoir si nous avons à faire à un mot clé d'observation ou d'image.
Line 46... Line 47...
46
	 * @param Array $ordres_obs un tableau d'odre d'observation (int) pour lesquels nous devons ajouter le mot-clé.
47
	 * @param Array $ordres_obs un tableau d'odre d'observation (int) pour lesquels nous devons ajouter le mot-clé.
47
	 */
48
	 */
48
	public function lierMotCleObs($utilisateur_id, Array $mots_cles_ids, Array $ordres) {
49
	public function lierMotCleObs($utilisateur_id, Array $mots_cles_ids, Array $ordres) {
49
		$retour = false;
50
		$retour = false;
Line 50... Line 51...
50
 
51
 
51
		if ($this->verifierOrdres($ordres)) {
52
		if ($this->contenirNbresEntiers($ordres)) {
52
			$mots_cles_ids_concatenes = $this->concatenerMotsClesIds($mots_cles_ids);
53
			$mots_cles_ids_concatenes = $this->concatenerMotsClesIdsObs($mots_cles_ids);
53
			$mots_cles_ids_concatenes = $this->proteger($mots_cles_ids_concatenes);
54
			$mots_cles_ids_concatenes = $this->proteger($mots_cles_ids_concatenes);
Line 54... Line 55...
54
			$utilisateur_id = $this->proteger($utilisateur_id);
55
			$utilisateur_id = $this->proteger($utilisateur_id);
55
 
56
 
Line 77... Line 78...
77
			$this->messages[] = "Le tableau des ordres des obs ne contenait pas que des nombres entiers.";
78
			$this->messages[] = "Le tableau des ordres des obs ne contenait pas que des nombres entiers.";
78
		}
79
		}
79
		return $retour;
80
		return $retour;
80
	}
81
	}
Line -... Line 82...
-
 
82
 
-
 
83
	/**
-
 
84
	 * Lie un mot-clé à une ou plusieurs images.
-
 
85
	 *
-
 
86
	 * @param String $utilisateur_id identifiant de l'utilisateur.
-
 
87
	 * @param String $mot_cle texte du mot-clé.
-
 
88
	 * @param Array $ordres_obs un tableau d'odre d'observation (int) pour lesquels nous devons ajouter le mot-clé.
-
 
89
	 */
-
 
90
	public function lierMotCleImg($utilisateur_id, Array $mots_cles_ids, Array $images_ids) {
-
 
91
		$retour = false;
-
 
92
 
-
 
93
		if ($this->contenirNbresEntiers($images_ids)) {
-
 
94
			$mots_cles_ids_concatenes = $this->concatenerMotsClesIdsImg($mots_cles_ids);
-
 
95
			$mots_cles_ids_concatenes = $this->proteger($mots_cles_ids_concatenes);
-
 
96
			$utilisateur_id = $this->proteger($utilisateur_id);
-
 
97
 
-
 
98
			$images_ids_sql_in = implode(', ', $images_ids);
-
 
99
			$requete =	'UPDATE cel_images '.
-
 
100
					"SET ci_meta_mots_cles = REPLACE(CONCAT(IFNULL(ci_meta_mots_cles, ''), $mots_cles_ids_concatenes), 'null', '') ".
-
 
101
					"WHERE ci_id_image IN ($images_ids_sql_in) ".
-
 
102
					"	AND ci_ce_utilisateur = $utilisateur_id ";
-
 
103
			$resultat = $this->executer($requete);
-
 
104
			if ($resultat) {
-
 
105
				$retour = true;
-
 
106
			} else {
-
 
107
				$e = "Erreur de mise à jour des mots clés d'une image : $requete";
-
 
108
				$this->logger('CEL_bugs', $e);
-
 
109
				$this->messages[] = $e;
-
 
110
			}
-
 
111
		} else {
-
 
112
			$this->messages[] = "Le tableau des identifiants des images ne contenait pas que des nombres entiers.";
-
 
113
		}
-
 
114
		return $retour;
-
 
115
	}
-
 
116
 
-
 
117
	private function contenirNbresEntiers($ordres) {
-
 
118
		$ok = true;
-
 
119
		foreach ($ordres as $ordre) {
-
 
120
			if (! preg_match('/^[0-9]+$/', $ordre)) {
-
 
121
				$this->debug[] = "Ordre pb : $ordre";
-
 
122
				$ok = false;
-
 
123
			}
-
 
124
		}
-
 
125
		return $ok;
-
 
126
	}
81
 
127
 
82
	private function regenererIndexTexteMotCle($ordre) {
128
	private function regenererIndexTexteMotCle($ordre) {
83
		$ok = false;
129
		$ok = false;
84
		$mots_cles_ids = $this->obtenirIdsMotsClesConcatenes($ordre);
130
		$mots_cles_ids = $this->obtenirIdsMotsClesConcatenes($ordre);
85
		if ($mots_cles_ids) {
131
		if ($mots_cles_ids) {
Line 124... Line 170...
124
		return $mots_cles;
170
		return $mots_cles;
125
	}
171
	}
Line 126... Line 172...
126
 
172
 
127
	private function formaterIdsMotClePourClauseInSql($mot_cle_ids) {
173
	private function formaterIdsMotClePourClauseInSql($mot_cle_ids) {
128
		$mot_cle_ids = $this->nettoyerMotsCles($mot_cle_ids);
174
		$mot_cle_ids = $this->nettoyerMotsCles($mot_cle_ids);
129
		$mot_cle_ids = str_replace(self::SEPARATEUR_MOT_CLE_ID, ',', $mot_cle_ids);
175
		$mot_cle_ids = str_replace(self::SEPARATEUR_MOT_CLE_ID_OBS, ',', $mot_cle_ids);
130
		$mot_cle_ids = trim($mot_cle_ids, ',');
176
		$mot_cle_ids = trim($mot_cle_ids, ',');
131
		$mot_cle_ids_proteges = implode(',', $this->protegerTableau(explode(',', $mot_cle_ids)));
177
		$mot_cle_ids_proteges = implode(',', $this->protegerTableau(explode(',', $mot_cle_ids)));
132
		return $mot_cle_ids_proteges;
178
		return $mot_cle_ids_proteges;
Line 133... Line 179...
133
	}
179
	}
-
 
180
 
-
 
181
	private function concatenerMotsClesIdsObs(Array $mots_cles_ids) {
-
 
182
		return $this->concatenerMotsClesIds($mots_cles_ids, self::SEPARATEUR_MOT_CLE_ID_OBS);
-
 
183
	}
-
 
184
 
-
 
185
	private function concatenerMotsClesIdsImg(Array $mots_cles_ids) {
-
 
186
		return $this->concatenerMotsClesIds($mots_cles_ids, self::SEPARATEUR_MOT_CLE_ID_IMG);
-
 
187
	}
134
 
188
 
135
	private function concatenerMotsClesIds(Array $mots_cles_ids) {
189
	private function concatenerMotsClesIds(Array $mots_cles_ids, $separateur) {
136
		$mots_cles_ids_concatenes = '';
190
		$mots_cles_ids_concatenes = '';
137
		if (count($mots_cles_ids) > 0) {
191
		if (count($mots_cles_ids) > 0) {
138
			foreach ($mots_cles_ids as $mot_cle_id) {
192
			foreach ($mots_cles_ids as $mot_cle_id) {
139
				$mots_cles_ids_concatenes .= $this->nettoyerMotsCles($mot_cle_id).self::SEPARATEUR_MOT_CLE_ID;
193
				$mots_cles_ids_concatenes .= $this->nettoyerMotsCles($mot_cle_id).$separateur;
140
			}
194
			}
141
		}
195
		}
Line 164... Line 218...
164
					"	AND identifiant = $utilisateur_id ";
218
					"	AND identifiant = $utilisateur_id ";
165
		$ok = $this->executer($requete) ? true : false;
219
		$ok = $this->executer($requete) ? true : false;
166
		return $ok;
220
		return $ok;
167
	}
221
	}
Line 168... Line -...
168
 
-
 
169
	private function verifierOrdres($ordres) {
-
 
170
		$ok = true;
-
 
171
		foreach ($ordres as $ordre) {
-
 
172
			if (! preg_match('/^[0-9]+$/', $ordre)) {
-
 
173
				$this->debug[] = "Ordre pb : $ordre";
-
 
174
				$ok = false;
-
 
175
			}
-
 
176
		}
-
 
177
		return $ok;
-
 
Line 178... Line 222...
178
	}
222
 
179
 
223
 
180
	private function nettoyerMotsCles($chaine) {
224
	private function nettoyerMotsCles($chaine) {
Line 234... Line 278...
234
				$retour = $this->completerTransaction();
278
				$retour = $this->completerTransaction();
235
			} else {
279
			} else {
236
				$retour = $this->annulerTransaction();
280
				$retour = $this->annulerTransaction();
237
			}
281
			}
238
		} else {
282
		} else {
239
			$e = "Le mot-clé '$mot_cle' ayant l'id '$mot_cle_id' existe déjà.";
283
			$e = "Le mot-clé '$mot_cle' ayant l'id '$mot_cle_id' existe déjà dans la table cel_mots_cles{$this->suffix}.";
240
			$this->debug[] = $e;
284
			$this->debug[] = $e;
241
		}
285
		}
Line 242... Line 286...
242
 
286
 
243
		return $retour;
287
		return $retour;