Subversion Repositories eFlore/Applications.cel

Rev

Rev 2199 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2199 Rev 2241
Line 60... Line 60...
60
		$ids_enfants = Cel::db()->requeter($requete);
60
		$ids_enfants = Cel::db()->requeter($requete);
Line 61... Line 61...
61
 
61
 
62
		return $ids_enfants;
62
		return $ids_enfants;
Line -... Line 63...
-
 
63
	}
-
 
64
 
-
 
65
	/**
-
 
66
	 * Retourne la liste des mots clés pour l'élément lié fourni. Ne tient pas compte de l'utilisateur
-
 
67
	 * car seul le propriétaire d'un élément lié peut y lier des mots clés
-
 
68
	 */
-
 
69
	public function obtenirIdsMotsClesParIdElementLie($id_element_lie) {
-
 
70
		$idElementLieP = Cel::db()->proteger($id_element_lie);
-
 
71
 
-
 
72
		$requete = "SELECT id_mot_cle FROM {$this->table_liaison} WHERE id_element_lie = $idElementLieP" .
-
 
73
			' -- '.__FILE__.':'.__LINE__;
-
 
74
 
-
 
75
		$ids_mots_cles = Cel::db()->requeter($requete);
-
 
76
 
-
 
77
		return $ids_mots_cles;
63
	}
78
	}
64
 
79
 
65
	public function insererParCheminSiInexistant($mot_cle, $chemin_parent, $id_utilisateur) {
80
	public function insererParCheminSiInexistant($mot_cle, $chemin_parent, $id_utilisateur) {
66
		$mot_cle = self::simplifier($mot_cle);
81
		$mot_cle = self::simplifier($mot_cle);
67
		$cheminMotCle = self::getCheminHarmonise($chemin_parent, $mot_cle);
82
		$cheminMotCle = self::getCheminHarmonise($chemin_parent, $mot_cle);
Line 160... Line 175...
160
 
175
 
161
		$liaison = Cel::db()->executer($requete);
176
		$liaison = Cel::db()->executer($requete);
162
		return $liaison;
177
		return $liaison;
Line 163... Line 178...
163
	}
178
	}
164
 
179
 
165
	public function lierParTableaux($ids_mots_cles, $ids_elements_lies, $id_utilisateur) {
180
	public function lierParTableaux($ids_mots_cles, $ids_elements_lies) {
166
		$combinaisons = array();
181
		$combinaisons = array();
167
		foreach ($ids_mots_cles as $id_mot_cle) {
182
		foreach ($ids_mots_cles as $id_mot_cle) {
168
			$idMotCleP = Cel::db()->proteger($id_mot_cle);
183
			$idMotCleP = Cel::db()->proteger($id_mot_cle);
Line 180... Line 195...
180
		$liaison = Cel::db()->executer($requete);
195
		$liaison = Cel::db()->executer($requete);
Line 181... Line 196...
181
 
196
 
182
		return $liaison;
197
		return $liaison;
Line -... Line 198...
-
 
198
	}
-
 
199
 
-
 
200
	/**
-
 
201
	 * Modifie les liaisons aux mots clés pour chaque element lié, en supprimant et ajoutant seulement les
-
 
202
	 * mots clés qui ont changé, sans toucher à ceux qui sont conservés. Ça évite de tout supprimer avant,
-
 
203
	 * et ainsi de perdre la date de liaison des mots clés conservés. 
-
 
204
	 */ 
-
 
205
	public function modifierLiaisonParTableaux($ids_mots_cles, $ids_elements_lies) {
-
 
206
		$reussi = true;
-
 
207
 
-
 
208
		foreach ($ids_elements_lies as $id_element_lie) {
-
 
209
			$idElementLieP = Cel::db()->proteger($id_element_lie);
-
 
210
			// trouver les mots clés actuels
-
 
211
			$ids_mots_cles_actuels = $this->obtenirIdsMotsClesParIdElementLie($id_element_lie);
-
 
212
			if (! is_array($ids_mots_cles_actuels)) {
-
 
213
				$ids_mots_cles_actuels = array();
-
 
214
			}
-
 
215
			// remise en forme
-
 
216
			foreach ($ids_mots_cles_actuels as $k => $v) {
-
 
217
				if (isset($v['id_mot_cle'])) { // je vois mal comment ça pourrait ne pas être set
-
 
218
					$ids_mots_cles_actuels[$k] = $v['id_mot_cle'];
-
 
219
				}
-
 
220
			}
-
 
221
 
-
 
222
			// changements
-
 
223
			$ids_mots_cles_ajoutes = array_diff($ids_mots_cles, $ids_mots_cles_actuels);
-
 
224
			$ids_mots_cles_supprimes = array_diff($ids_mots_cles_actuels, $ids_mots_cles);
-
 
225
 
-
 
226
			// insérer
-
 
227
			if (count($ids_mots_cles_ajoutes) > 0) {
-
 
228
				$combinaisons = array();
-
 
229
				foreach ($ids_mots_cles_ajoutes as $id_mot_cle) {
-
 
230
					$idMotCleP = Cel::db()->proteger($id_mot_cle);
-
 
231
					$combinaisons[] = "($idElementLieP, $idMotCleP)";
-
 
232
				}
-
 
233
				$valeursGroupees = implode(', ', $combinaisons);
-
 
234
				$requete = "INSERT INTO {$this->table_liaison} (id_element_lie, id_mot_cle) ".
-
 
235
						"VALUES $valeursGroupees ".
-
 
236
						"ON DUPLICATE KEY UPDATE id_element_lie = id_element_lie ". // normalement pas nécessaire
-
 
237
						' -- '.__FILE__.':'.__LINE__;
-
 
238
				$resultat = Cel::db()->executer($requete);
-
 
239
				$reussi = ($reussi && $resultat);
-
 
240
			}
-
 
241
 
-
 
242
			// supprimer
-
 
243
			if (count($ids_mots_cles_supprimes) > 0) {
-
 
244
				$clauses = array();
-
 
245
				foreach ($ids_mots_cles_supprimes as $id_mot_cle) {
-
 
246
					$idMotCleP = Cel::db()->proteger($id_mot_cle);
-
 
247
					$clauses[] = "(id_element_lie = $idElementLieP AND id_mot_cle = $idMotCleP)";
-
 
248
				}
-
 
249
				$clause = implode(' OR ', $clauses);
-
 
250
				$requete = "DELETE FROM {$this->table_liaison} WHERE $clause" .
-
 
251
					' -- '.__FILE__.':'.__LINE__;
-
 
252
				$resultat = Cel::db()->executer($requete);
-
 
253
				$reussi = ($reussi && $resultat);
-
 
254
			}
-
 
255
		}
-
 
256
 
-
 
257
		return $reussi;
183
	}
258
	}
184
 
259
 
185
	public function supprimerLiaisonsMotsCles($ids_mots_cles, $ids_elements_lies, $id_utilisateur) {
260
	public function supprimerLiaisonsMotsCles($ids_mots_cles, $ids_elements_lies, $id_utilisateur) {
186
		$combinaisons = array();
261
		$combinaisons = array();
187
		foreach ($ids_mots_cles as $id_mot_cle) {
262
		foreach ($ids_mots_cles as $id_mot_cle) {