Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2045 Rev 2046
Line 30... Line 30...
30
		} else {
30
		} else {
31
			$this->table_liaison = 'cel_mots_cles_images_liaison';
31
			$this->table_liaison = 'cel_mots_cles_images_liaison';
32
			$this->table_mots_cles = 'cel_arbre_mots_cles_images';
32
			$this->table_mots_cles = 'cel_arbre_mots_cles_images';
33
		}
33
		}
34
	}
34
	}
35
		
-
 
36
	public function construireRequeteOr($mots_cles) {
-
 
37
		return $this->construireRequete($mots_cles, 'OR');
-
 
38
	}
-
 
39
	
-
 
40
	public function construireRequeteCheminOr($mots_cles) {
-
 
41
		return $this->construireRequeteChemin($mots_cles, 'OR');
-
 
42
	}
-
 
43
	
-
 
44
	public function construireRequeteAnd($mots_cles) {
-
 
45
		return $this->construireRequete($mots_cles, 'AND');
-
 
46
	}
-
 
47
	
-
 
48
	public function construireRequeteCheminAnd($mots_cles) {
-
 
49
		return $this->construireRequeteChemin($mots_cles, 'AND');
-
 
50
	}
-
 
51
	
-
 
52
	public function construireRequete($mots_cles, $operateur = 'AND') {
-
 
53
		$criteres = array();
-
 
54
		$premier = array_pop($mots_cles);
-
 
55
		$requete = "SELECT * FROM ".$this->table_liaison." lmc ".
-
 
56
		           "INNER JOIN ".$this->table_mots_cles." mc ".
-
 
57
		           "ON mc.tag = ".Cel::db()->proteger($premier)." AND lmc.id_mot_cle = mc.id_mot_cle ";
-
 
58
		foreach ($mots_cles as $mot_cle) {
-
 
59
			$requete .= " ".$operateur." id_element_lie IN (SELECT id_element_lie FROM ".$this->table_liaison." lmc ".
-
 
60
							"INNER JOIN ".$this->table_mots_cles." mc ".
-
 
61
		           			"ON mc.tag = ".Cel::db()->proteger($mot_cle)." AND lmc.id_mot_cle = mc.id_mot_cle ".
-
 
62
						") ";
-
 
63
		}
-
 
64
 
-
 
65
		$images = Cel::db()->requeter($requete);
-
 
66
		return $images;
-
 
67
	}
-
 
68
	
-
 
69
	private function construireRequeteChemin($mots_cles, $operateur = 'AND') {	
-
 
70
		$criteres = array();
-
 
71
		$premier = array_pop($mots_cles);
-
 
72
		$requete = "SELECT * FROM ".$this->table_liaison." lmc ".
-
 
73
		           "INNER JOIN ".$this->table_mots_cles." mc ".
-
 
74
		           "ON mc.chemin LIKE ".Cel::db()->proteger('%'.$premier.'%')." AND lmc.id_mot_cle = mc.id_mot_cle ";
-
 
75
		foreach ($mots_cles as $mot_cle) {
-
 
76
			$requete .= " ".$operateur." id_element_lie IN (SELECT id_element_lie FROM ".$this->table_liaison." lmc ".
-
 
77
							"INNER JOIN ".$this->table_mots_cles." mc ".
-
 
78
		           			"ON mc.chemin LIKE ".Cel::db()->proteger('%'.$mot_cle.'%')." AND lmc.id_mot_cle = mc.id_mot_cle ".
-
 
79
						") ";
-
 
80
		}
-
 
81
		
-
 
82
		$images = Cel::db()->requeter($requete);
-
 
83
		return $images;
-
 
84
	}
-
 
Line 85... Line 35...
85
	
35
	
86
	public function obtenirArbre($id_utilisateur, $chemin = "/") {
36
	public function obtenirArbre($id_utilisateur, $chemin = "/") {
87
		$requete = "SELECT * FROM ".$this->table_mots_cles." ".
37
		$requete = "SELECT * FROM ".$this->table_mots_cles." ".
88
		"WHERE id_utilisateur = ".Cel::db()->proteger($id_utilisateur)." AND ".
38
		"WHERE id_utilisateur = ".Cel::db()->proteger($id_utilisateur)." AND ".
Line 251... Line 201...
251
			$suppression = true;
201
			$suppression = true;
252
		}
202
		}
253
		return $suppression;
203
		return $suppression;
254
	}
204
	}
Line -... Line 205...
-
 
205
	
-
 
206
	public function supprimerLiaisonPourMotCleEtIdElementLie($mot_cle, $id_element_lie, $id_utilisateur) {
-
 
207
		// supprime toutes les laisons pour un utilisateur et un mot clé (au sens textuel) donnés
-
 
208
		$requete = "DELETE FROM ".$this->table_liaison." ".
-
 
209
					"WHERE id_element_lie = ".Cel::db()->proteger($id_element_lie)." ".
-
 
210
					"AND id_mot_cle IN (".
-
 
211
						"SELECT id_mot_cle FROM ".$this->table_mots_cles." ".
-
 
212
						"WHERE mot_cle = ".Cel::db()->proteger($mot_cle)." ".
-
 
213
						"AND id_utilisateur = ".Cel::db()->proteger($id_utilisateur)." ".
-
 
214
					")"; 
-
 
215
 
-
 
216
		$suppression_liaison = Cel::db()->executerRequeteSimple($requete.' -- '.__FILE__.':'.__LINE__);
-
 
217
		$suppression_liaison = ($suppression_liaison !== false);
-
 
218
 
-
 
219
		return $suppression_liaison;
-
 
220
	}
255
	
221
	
Line 256... Line 222...
256
	public function renommerMotCle($id_mot_cle, $nouveau_nom) {
222
	public function renommerMotCle($id_mot_cle, $nouveau_nom) {
257
		
223
		
258
		$requete_ancien_chemin = 'SELECT chemin, id_utilisateur FROM '.$this->table_mots_cles.' '.
224
		$requete_ancien_chemin = 'SELECT chemin, id_utilisateur FROM '.$this->table_mots_cles.' '.
Line 380... Line 346...
380
 
346
 
Line 381... Line 347...
381
		return ($suppression !== false);
347
		return ($suppression !== false);
Line 382... Line 348...
382
		
348
		
383
	}
349
	}
384
	
350
	
385
	public function obtenirIdElementsLiesPourChemins($chemins) {
351
	public function obtenirIdElementsLiesPourChemins($chemins, $id_utilisateur) {
Line 386... Line 352...
386
		foreach($chemins as &$chemin) {
352
		foreach($chemins as &$chemin) {
387
			$chemin = Cel::db()->proteger(self::harmoniserChemin($chemin));
353
			$chemin = Cel::db()->proteger(self::harmoniserChemin($chemin));
388
		}
354
		}
-
 
355
		
Line 389... Line 356...
389
		
356
		$requete = 'SELECT id_element_lie FROM '.$this->table_liaison.' cl '.
Line 390... Line 357...
390
		$requete = 'SELECT id_element_lie FROM '.$this->table_liaison.' cl '.
357
		            'INNER JOIN '.$this->table_mots_cles.' cm '.
391
		            'INNER JOIN '.$this->table_mots_cles.' cm '.
358
		            'ON cm.id_mot_cle = cl.id_mot_cle AND chemin IN ('.implode(',', $chemin).') '.