[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / ecrire / inc / modifier.php
index cca62ae..872a477 100644 (file)
@@ -3,7 +3,7 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2014                                                *
+ *  Copyright (c) 2001-2016                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
@@ -78,7 +78,13 @@ function collecter_requests($white_list, $black_list, $set=null, $tous=false){
  * @param int $id_objet
  *     Identifiant de l'objet
  * @param array $options
- *     Toutes les options
+ *     array data : tableau des donnees sources utilisees pour la detection de conflit ($_POST sinon fourni ou si nul)
+ *     array nonvide : valeur par defaut des champs que l'on ne veut pas vide
+ *     string date_modif : champ a mettre a date('Y-m-d H:i:s') s'il y a modif
+ *     string invalideur : id de l'invalideur eventuel
+ *     array champs : non documente (utilise seulement par inc/rechercher ?)
+ *     string action : action realisee, passee aux pipelines pre/post edition (par defaut 'modifier')
+ *     bool indexation : deprecie
  * @param array|null $c
  *     Couples champ/valeur à modifier
  * @param string $serveur
@@ -150,7 +156,7 @@ function objet_modifier_champs($objet, $id_objet, $options, $c=null, $serveur=''
                                'id_objet' => $id_objet,
                                'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] c'est quoi ?
                                'serveur' => $serveur,
-                               'action' => 'modifier'
+                               'action' => isset($options['action']) ? $options['action'] : 'modifier'
                        ),
                        'data' => $champs
                )
@@ -167,7 +173,10 @@ function objet_modifier_champs($objet, $id_objet, $options, $c=null, $serveur=''
 
        // Verifier si les mises a jour sont pertinentes, datees, en conflit etc
        include_spip('inc/editer');
-       $conflits = controler_md5($champs, $_POST, $objet, $id_objet, $serveur);
+       if (!isset($options['data']) OR is_null($options['data'])){
+               $options['data'] = &$_POST;
+       }
+       $conflits = controler_md5($champs, $options['data'], $objet, $id_objet, $serveur);
        // cas hypothetique : normalement inc/editer verifie en amont le conflit edition
        // et gere l'interface
        // ici on ne renvoie donc qu'un messsage d'erreur, au cas ou on y arrive quand meme
@@ -183,8 +192,8 @@ function objet_modifier_champs($objet, $id_objet, $options, $c=null, $serveur=''
                                        $parent = ($objet=='rubrique')?'id_parent':'id_rubrique';
                                        $id_rubrique = sql_getfetsel($parent, $spip_table_objet, "$id_table_objet=".intval($id_objet));
                                }
-                               $instituer_langue_objet = charger_fonction('instituer_langue_objet','action');
-                               $champs['lang'] = $instituer_langue_objet($objet,$id_objet, $id_rubrique, $changer_lang);
+                               $instituer_langue_objet = charger_fonction('instituer_langue_objet', 'action');
+                               $champs['lang'] = $instituer_langue_objet($objet, $id_objet, $id_rubrique, $changer_lang, $serveur);
                        }
                        // on laisse 'lang' dans $champs,
                        // ca permet de passer dans le pipeline post_edition et de journaliser
@@ -245,7 +254,7 @@ function objet_modifier_champs($objet, $id_objet, $options, $c=null, $serveur=''
                                        'id_objet' => $id_objet,
                                        'champs' => isset($options['champs']) ? $options['champs'] : array(), // [doc] kesako ?
                                        'serveur' => $serveur,
-                                       'action' => 'modifier'
+                                       'action' => isset($options['action']) ? $options['action'] : 'modifier'
                                ),
                                'data' => $champs
                        )