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