Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 2042 Rev 2043
Line 100... Line 100...
100
		            "WHERE chemin LIKE CONCAT(".
100
		            "WHERE chemin LIKE CONCAT(".
101
		            	"(SELECT chemin FROM ".$this->table_mots_cles." ".
101
		            	"(SELECT chemin FROM ".$this->table_mots_cles." ".
102
		            	"WHERE id_mot_cle = ".Cel::db()->proteger($id_mot_cle)."), ".
102
		            	"WHERE id_mot_cle = ".Cel::db()->proteger($id_mot_cle)."), ".
103
		            "'%')";  
103
		            "'%')";  
Line 104... Line 104...
104
		    
104
		    
Line 105... Line 105...
105
		$ids_enfants = Cel::db()->requeter($requete.' -- '.__FILE__.':'.__LINE__);
105
		$ids_enfants = Cel::db()->executerRequete($requete.' -- '.__FILE__.':'.__LINE__);
106
 
106
 
Line 107... Line 107...
107
		return $ids_enfants;
107
		return $ids_enfants;
Line 231... Line 231...
231
		}
231
		}
232
		$requete = 'DELETE FROM '.$this->table_liaison.' '.
232
		$requete = 'DELETE FROM '.$this->table_liaison.' '.
233
		           'WHERE id_element_lie IN ('.implode(',', $ids_elements_lies).')';
233
		           'WHERE id_element_lie IN ('.implode(',', $ids_elements_lies).')';
Line 234... Line 234...
234
		
234
		
-
 
235
		$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
235
		$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
236
		$suppression = ($suppression !== false);
236
		return $suppression;
237
		return $suppression;
Line 237... Line 238...
237
	}
238
	}
Line -... Line 239...
-
 
239
	
-
 
240
	public function supprimerToutesLiaisonsIdsMotsCles($ids_mots_cles, $id_utilisateur) {
238
	
241
		
239
	public function supprimerToutesLiaisonsIdsMotsCles($ids_mots_cles, $id_utilisateur) {
242
		if(!empty($ids_mots_cles)) {
-
 
243
			$ids_mots_cles_p = array();
-
 
244
			foreach($ids_mots_cles as $id_mot_cle) {
-
 
245
				$id_mot_cle = Cel::db()->proteger($id_mot_cle);
-
 
246
			}
-
 
247
			$requete = 'DELETE FROM '.$this->table_liaison.' '.
-
 
248
					           'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).') ';
-
 
249
			
-
 
250
			$suppression = Cel::db()->executerRequeteSimple($requete.' -- '.__FILE__.':'.__LINE__);
240
		
251
			$suppression = ($suppression !== false);
241
		foreach($ids_mots_cles as &$id_mot_cle) {
-
 
242
			$id_mot_cle = Cel::db()->proteger($id_mot_cle);
-
 
243
		}
-
 
244
		$requete = 'DELETE FROM '.$this->table_liaison.' '.
-
 
245
				           'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).') ';
252
		} else {
246
		
253
			$suppression = true;
Line 247... Line 254...
247
		$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
254
		}
Line 319... Line 326...
319
                   	"id_utilisateur = ".Cel::db()->proteger($id_utilisateur)." ";   
326
                   	"id_utilisateur = ".Cel::db()->proteger($id_utilisateur)." ";   
Line 320... Line 327...
320
 
327
 
321
		return Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);			
328
		return Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);			
Line -... Line 329...
-
 
329
	}
-
 
330
	
-
 
331
	public function supprimerMotCleParId($id_mot_cle, $id_utilisateur) {
-
 
332
		//TODO: simplifier cette fonction
-
 
333
		
-
 
334
		// suppression des associations du mots clé aux images ou obs, mais aussi des associations de ses enfants
-
 
335
		// (car ceux-ci seront supprimés aussi dans le processus)
-
 
336
		// même s'il n'a pas d'enfants, le tableau contient au moins l'id du mot clé lui même
-
 
337
		$ids_mot_cle_et_enfants = $this->obtenirIdsMotsClesParIdParent($id_utilisateur, $id_mot_cle);
-
 
338
		
-
 
339
		$print = array();
-
 
340
		
-
 
341
		// obtention des ids des éléments liés au mot clé ainsi qu'à ces enfants (afin de pouvoir
-
 
342
		// régénérer les index texte de mots clés sur les éléments liés
-
 
343
		$ids_a_delier = array();
-
 
344
		foreach($ids_mot_cle_et_enfants as $id) {
-
 
345
			$ids_a_delier[] = $id['id_mot_cle'];
-
 
346
		}
-
 
347
		
-
 
348
		$ids_elements_lies = $this->obtenirIdElementsLiesPourIds($ids_a_delier);
-
 
349
		$suppression_liaison = $this->supprimerToutesLiaisonsIdsMotsCles($ids_a_delier, $id_utilisateur);
-
 
350
 
-
 
351
		foreach($ids_elements_lies as $id_element_lie) {
-
 
352
			self::regenererIndexTexteMotCle($id_element_lie['id_element_lie'], $this->mode);
-
 
353
		}
-
 
354
		
-
 
355
		// suppression du mot clé proprement dit ainsi que de ses enfants
-
 
356
		$suppression = $this->supprimerMotCleEtEnfantsParId($id_mot_cle, $id_utilisateur);
-
 
357
		
-
 
358
		return $suppression && $suppression_liaison;
322
	}
359
	}
Line 323... Line 360...
323
	
360
	
324
	public function supprimerMotCleEtEnfantsParId($id_mot_cle, $id_utilisateur) {
361
	public function supprimerMotCleEtEnfantsParId($id_mot_cle, $id_utilisateur) {
325
		
362
		
326
		$selection_chemin = 'SELECT chemin FROM '.$this->table_mots_cles.' '.
-
 
Line -... Line 363...
-
 
363
		$selection_chemin = 'SELECT chemin FROM '.$this->table_mots_cles.' '.
-
 
364
										 'WHERE id_mot_cle = '.Cel::db()->proteger($id_mot_cle);
-
 
365
		$chemin = Cel::db()->requeter($selection_chemin.' -- '.__FILE__.':'.__LINE__);
327
										 'WHERE id_mot_cle = '.Cel::db()->proteger($id_mot_cle);
366
		
328
		$chemin = Cel::db()->requeter($selection_chemin.' -- '.__FILE__.':'.__LINE__);
367
		$suppression = true;
329
		$chemin = $chemin[0]['chemin'];
368
		if(!empty($chemin)) {	
-
 
369
			$chemin = $chemin[0]['chemin'];		
-
 
370
			$requete = "DELETE FROM ".$this->table_mots_cles." WHERE chemin LIKE ".
Line 330... Line 371...
330
		
371
						Cel::db()->proteger($chemin.'%')." ".
Line 331... Line 372...
331
		$requete = "DELETE FROM ".$this->table_mots_cles." WHERE chemin LIKE ".
372
			           	"AND id_utilisateur =".Cel::db()->proteger($id_utilisateur);
Line 332... Line 373...
332
					Cel::db()->proteger($chemin.'%')." ".
373
			$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
333
		           	"AND id_utilisateur =".Cel::db()->proteger($id_utilisateur);
374
		}
Line 349... Line 390...
349
		
390
		
350
		return $ids_pour_chemin;
391
		return $ids_pour_chemin;
Line 351... Line 392...
351
	}
392
	}
-
 
393
	
-
 
394
	public function obtenirIdElementsLiesPourIds($ids_mots_cles) {
-
 
395
		$ids_elements_lies = array();
-
 
396
		if(!empty($ids_mots_cles)) {
-
 
397
			foreach($ids_mots_cles as $id_mot_cle) {
352
	
398
				$id_mot_cle = Cel::db()->proteger($id_mot_cle);
-
 
399
			}
353
	public function obtenirIdElementsLiesPourIds($ids_mots_cles) {
400
		
-
 
401
			$requete = 'SELECT id_element_lie FROM '.$this->table_liaison.' '.
354
 
402
				            'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).')';
355
		foreach($ids_mots_cles as $id_mot_cle) {
403
		
356
			$id_mot_cle = Cel::db()->proteger($id_mot_cle);
-
 
357
		}
-
 
358
	
-
 
359
		$requete = 'SELECT id_element_lie FROM '.$this->table_liaison.' '.
-
 
360
			            'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).')';
-
 
Line 361... Line 404...
361
	
404
			$ids_elements_lies = Cel::db()->executerRequete($requete.' -- '.__FILE__.':'.__LINE__);
362
		$ids_elements_lies = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
405
		}
Line -... Line 406...
-
 
406
 
-
 
407
		return $ids_elements_lies;
-
 
408
	}
-
 
409
	
-
 
410
	public static function regenererIndexTexteMotCle($id_element_lie, $mode) {
-
 
411
		$sous_requete_concat = '('.sprintf(GestionMotsClesChemin::obtenirTemplateRequeteMotsClesTexte($mode),
-
 
412
		Cel::db()->proteger($id_element_lie)).')';
-
 
413
		
-
 
414
		list($table, $champ_id) = self::getNomTablesEtChampsElementsLies($mode);
-
 
415
		$requete = 'UPDATE '.$table.' SET mots_cles_texte = '.$sous_requete_concat.' '.
-
 
416
				           'WHERE '.$champ_id.' = '.Cel::db()->proteger($id_element_lie).' ';
-
 
417
		
-
 
418
		return Cel::db()->executer($requete, __FILE__ , __LINE__);
-
 
419
	}
-
 
420
	
-
 
421
	private static function getNomTablesEtChampsElementsLies($mode) {
-
 
422
		$tables = array();
-
 
423
		if($mode == 'obs') {
-
 
424
			$tables = array('cel_obs','id_observation');
-
 
425
		} else {
-
 
426
			$tables = array('cel_images','id_image');
363
 
427
		}
Line 364... Line 428...
364
		return $ids_elements_lies;
428
		return $tables;
365
	}
429
	}
366
	
430