Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2042 → Rev 2043

/trunk/jrest/lib/GestionMotsClesChemin.php
102,7 → 102,7
"WHERE id_mot_cle = ".Cel::db()->proteger($id_mot_cle)."), ".
"'%')";
$ids_enfants = Cel::db()->requeter($requete.' -- '.__FILE__.':'.__LINE__);
$ids_enfants = Cel::db()->executerRequete($requete.' -- '.__FILE__.':'.__LINE__);
 
return $ids_enfants;
}
233,18 → 233,25
'WHERE id_element_lie IN ('.implode(',', $ids_elements_lies).')';
$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
$suppression = ($suppression !== false);
return $suppression;
}
public function supprimerToutesLiaisonsIdsMotsCles($ids_mots_cles, $id_utilisateur) {
foreach($ids_mots_cles as &$id_mot_cle) {
$id_mot_cle = Cel::db()->proteger($id_mot_cle);
if(!empty($ids_mots_cles)) {
$ids_mots_cles_p = array();
foreach($ids_mots_cles as $id_mot_cle) {
$id_mot_cle = Cel::db()->proteger($id_mot_cle);
}
$requete = 'DELETE FROM '.$this->table_liaison.' '.
'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).') ';
$suppression = Cel::db()->executerRequeteSimple($requete.' -- '.__FILE__.':'.__LINE__);
$suppression = ($suppression !== false);
} else {
$suppression = true;
}
$requete = 'DELETE FROM '.$this->table_liaison.' '.
'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).') ';
$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
return $suppression;
}
321,18 → 328,52
return Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
}
public function supprimerMotCleParId($id_mot_cle, $id_utilisateur) {
//TODO: simplifier cette fonction
// suppression des associations du mots clé aux images ou obs, mais aussi des associations de ses enfants
// (car ceux-ci seront supprimés aussi dans le processus)
// même s'il n'a pas d'enfants, le tableau contient au moins l'id du mot clé lui même
$ids_mot_cle_et_enfants = $this->obtenirIdsMotsClesParIdParent($id_utilisateur, $id_mot_cle);
$print = array();
// obtention des ids des éléments liés au mot clé ainsi qu'à ces enfants (afin de pouvoir
// régénérer les index texte de mots clés sur les éléments liés
$ids_a_delier = array();
foreach($ids_mot_cle_et_enfants as $id) {
$ids_a_delier[] = $id['id_mot_cle'];
}
$ids_elements_lies = $this->obtenirIdElementsLiesPourIds($ids_a_delier);
$suppression_liaison = $this->supprimerToutesLiaisonsIdsMotsCles($ids_a_delier, $id_utilisateur);
 
foreach($ids_elements_lies as $id_element_lie) {
self::regenererIndexTexteMotCle($id_element_lie['id_element_lie'], $this->mode);
}
// suppression du mot clé proprement dit ainsi que de ses enfants
$suppression = $this->supprimerMotCleEtEnfantsParId($id_mot_cle, $id_utilisateur);
return $suppression && $suppression_liaison;
}
public function supprimerMotCleEtEnfantsParId($id_mot_cle, $id_utilisateur) {
$selection_chemin = 'SELECT chemin FROM '.$this->table_mots_cles.' '.
'WHERE id_mot_cle = '.Cel::db()->proteger($id_mot_cle);
$chemin = Cel::db()->requeter($selection_chemin.' -- '.__FILE__.':'.__LINE__);
$chemin = $chemin[0]['chemin'];
$requete = "DELETE FROM ".$this->table_mots_cles." WHERE chemin LIKE ".
Cel::db()->proteger($chemin.'%')." ".
"AND id_utilisateur =".Cel::db()->proteger($id_utilisateur);
$suppression = true;
if(!empty($chemin)) {
$chemin = $chemin[0]['chemin'];
$requete = "DELETE FROM ".$this->table_mots_cles." WHERE chemin LIKE ".
Cel::db()->proteger($chemin.'%')." ".
"AND id_utilisateur =".Cel::db()->proteger($id_utilisateur);
$suppression = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
}
 
return Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
return ($suppression !== false);
}
351,19 → 392,42
}
public function obtenirIdElementsLiesPourIds($ids_mots_cles) {
 
foreach($ids_mots_cles as $id_mot_cle) {
$id_mot_cle = Cel::db()->proteger($id_mot_cle);
$ids_elements_lies = array();
if(!empty($ids_mots_cles)) {
foreach($ids_mots_cles as $id_mot_cle) {
$id_mot_cle = Cel::db()->proteger($id_mot_cle);
}
$requete = 'SELECT id_element_lie FROM '.$this->table_liaison.' '.
'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).')';
$ids_elements_lies = Cel::db()->executerRequete($requete.' -- '.__FILE__.':'.__LINE__);
}
$requete = 'SELECT id_element_lie FROM '.$this->table_liaison.' '.
'WHERE id_mot_cle IN ('.implode(',', $ids_mots_cles).')';
$ids_elements_lies = Cel::db()->executer($requete.' -- '.__FILE__.':'.__LINE__);
 
return $ids_elements_lies;
}
public static function regenererIndexTexteMotCle($id_element_lie, $mode) {
$sous_requete_concat = '('.sprintf(GestionMotsClesChemin::obtenirTemplateRequeteMotsClesTexte($mode),
Cel::db()->proteger($id_element_lie)).')';
list($table, $champ_id) = self::getNomTablesEtChampsElementsLies($mode);
$requete = 'UPDATE '.$table.' SET mots_cles_texte = '.$sous_requete_concat.' '.
'WHERE '.$champ_id.' = '.Cel::db()->proteger($id_element_lie).' ';
return Cel::db()->executer($requete, __FILE__ , __LINE__);
}
private static function getNomTablesEtChampsElementsLies($mode) {
$tables = array();
if($mode == 'obs') {
$tables = array('cel_obs','id_observation');
} else {
$tables = array('cel_images','id_image');
}
return $tables;
}
public static function obtenirTemplateRequeteMotsClesTexte($mode) {
if($mode == 'obs') {