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') { |