From 86f6cfe3d023df68752b65d0944a8b82a2f3122d Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Wed, 15 Sep 2010 07:56:51 +0000
Subject: [PATCH] report de [16112] et mise a niveau de inc/modifier

---
 ecrire/inc/modifier.php | 57 ++++++++++++++++++++++++++++-------------
 1 file changed, 39 insertions(+), 18 deletions(-)

diff --git a/ecrire/inc/modifier.php b/ecrire/inc/modifier.php
index 1e49a008cf..5414ae9518 100644
--- a/ecrire/inc/modifier.php
+++ b/ecrire/inc/modifier.php
@@ -113,6 +113,20 @@ function modifier_contenu($type, $id, $options, $c=false, $serveur='') {
 		// allez on commit la modif
 		sql_updateq($spip_table_objet, $champs, "$id_table_objet=$id", $serveur);
 
+		// on verifie si elle est bien passee
+		$moof = sql_fetsel(array_keys($champs), $spip_table_objet, "$id_table_objet=$id", array(), array(), '', array(), $serveur);
+		if ($moof != $champs) {
+			foreach($moof as $k=>$v)
+				if ($v !== $champs[$k]
+					// ne pas alerter si le champ est numerique est que les valeurs sont equivalentes
+					AND (!is_numeric($v) OR intval($v)!=intval($champs[$k]))
+					) {
+					$conflits[$k]['post'] = $champs[$k];
+					$conflits[$k]['save'] = $v;
+				}
+		}
+
+
 		// Cas particulier des groupes de mots dont le titre est repris
 		// dans la table spip_mots
 		if ($spip_table_objet == 'spip_groupes_mots'
@@ -204,7 +218,19 @@ function marquer_doublons_documents($champs,$id,$type,$id_table_objet,$table_obj
 			// Mettre le lien a jour ou le creer s'il n'existe pas deja
 			if (!sql_updateq("spip_documents_liens", array("vu" => 'oui'), "id_objet=$id AND objet=".sql_quote($type)." AND id_document=".$row['id_document']) OR
 			!sql_getfetsel("id_document", "spip_documents_liens", "id_document=".$row['id_document']." AND id_objet=$id AND objet=".sql_quote($type))) {
-				sql_insertq("spip_documents_liens", array('id_objet'=>$id, 'objet'=>$type, 'id_document' => $row['id_document'], 'vu' => 'oui'));
+				sql_insertq("spip_documents_liens", array('id_objet' => $id, 'objet' => $type, 'id_document' => $row['id_document'], 'vu' => 'oui'));
+				pipeline('post_edition',
+					array(
+						'args' => array(
+							'operation' => 'lier_document',
+							'table' => 'spip_documents',
+							'id_objet' => $row['id_document'],
+							'objet' => $type,
+							'id' => $id
+						),
+						'data' => null
+					)
+				);
 			}
 		}
 	}
@@ -263,24 +289,19 @@ function revision_auteur($id_auteur, $c=false) {
 		),
 		$c);
 
-	// synchroniser l'eventuel annuaire d'authentification distant
-	$auth_methode = sql_getfetsel('source','spip_auteurs','id_auteur='.intval($id_auteur));
-	include_spip('inc/auth');
-	auth_synchroniser_distant($auth_methode, $id_auteur, $c);
-	
-	// Si on change login ou mot de passe, deconnecter cet auteur,
-	// sauf si c'est nous-meme !
-	if ((isset($c['login']) OR isset($c['pass']))
-	  AND $id_auteur != $GLOBALS['visiteur_session']['id_auteur']){
-		$session = charger_fonction('session', 'inc');
-		$session($auteur['id_auteur']);
-	}
-	else {
-		// .. mettre a jour les sessions de cet auteur
-		include_spip('inc/session');
-		$c['id_auteur'] = $id_auteur;
-		actualiser_sessions($c);
+	// .. mettre a jour les fichiers .htpasswd et .htpasswd-admin
+	if (isset($c['login'])
+	OR isset($c['pass'])
+	OR isset($c['statut'])
+	) {
+		include_spip('inc/acces');
+		ecrire_acces();
 	}
+
+	// .. mettre a jour les sessions de cet auteur
+	include_spip('inc/session');
+	$c['id_auteur'] = $id_auteur;
+	actualiser_sessions($c);
 }
 
 
-- 
GitLab