From 5425f7331afbf6cc793363092c54cb546e16201d Mon Sep 17 00:00:00 2001 From: "Committo,Ergo:sum" <esj@rezo.net> Date: Mon, 17 Oct 2005 13:24:43 +0000 Subject: [PATCH] maintenir 1 seul mot dans les groupes qui l'exigent (Pierre) --- ecrire/inc_mots.php3 | 16 ++++++++++++++++ ecrire/mots_edit.php3 | 10 ++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/ecrire/inc_mots.php3 b/ecrire/inc_mots.php3 index 6318a4ea09..8751835342 100644 --- a/ecrire/inc_mots.php3 +++ b/ecrire/inc_mots.php3 @@ -101,6 +101,22 @@ function mots_ressemblants($mot, $table_mots, $table_ids='') { } +function un_seul_mot_dans_groupe($id_groupe) +{ + list($u) = spip_fetch_array(spip_query("SELECT unseul FROM spip_groupes_mots WHERE id_groupe = $id_groupe")); + return ($u == 'oui'); +} + +function supprime_mot_de_groupe($id_groupe, $table) +{ + if (un_seul_mot_dans_groupe($id_groupe)) { + $mots = spip_query("SELECT id_mot FROM spip_mots WHERE id_groupe = $id_groupe"); + while ($r = spip_fetch_array($mots)) + spip_query("DELETE FROM spip_mots_$table WHERE id_mot=" . + $r['id_mot']); + } +} + /* * Affiche la liste des mots-cles associes a l'objet * specifie, plus le formulaire d'ajout de mot-cle diff --git a/ecrire/mots_edit.php3 b/ecrire/mots_edit.php3 index 42ee8a2c75..5a5ea4d83e 100644 --- a/ecrire/mots_edit.php3 +++ b/ecrire/mots_edit.php3 @@ -12,6 +12,7 @@ include ("inc.php3"); +include_ecrire ("inc_mots.php3"); include_ecrire ("inc_logos.php3"); include_ecrire ("inc_sites.php3"); include_ecrire ("inc_abstract_sql.php3"); @@ -30,11 +31,12 @@ if ($connect_statut == '0minirezo' AND $connect_toutes_rubriques) { if (strval($titre_mot)!='') { if ($new == 'oui' && $id_groupe) { - $id_mot = spip_abstract_insert("spip_mots", '(id_groupe)', "($id_groupe)"); + $id_mot = spip_abstract_insert("spip_mots", '(id_groupe)', "($id_groupe)"); - // ajouter le mot a l'article - if (settype($ajouter_id_article, 'integer') AND ($ajouter_id_article>0)) - spip_query("INSERT INTO spip_mots_$table (id_mot, $id_table) VALUES ($id_mot, $ajouter_id_article)"); + $ajouter_id_article = intval($ajouter_id_article); + if ($ajouter_id_article) + supprime_mot_de_groupe($id_groupe, $table); + spip_query("INSERT INTO spip_mots_$table (id_mot, $id_table) VALUES ($id_mot, $ajouter_id_article)"); } $titre_mot = addslashes($titre_mot); -- GitLab