[SPIP] v3.2.1-->v3.2.2
[lhc/web/www.git] / www / ecrire / action / instituer_langue_objet.php
index 4ffac96..7d6269b 100644 (file)
@@ -3,41 +3,71 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2014                                                *
+ *  Copyright (c) 2001-2019                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Action des changements de langue des objets éditoriaux
+ *
+ * @package SPIP\Core\Edition
+ **/
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 /**
  * Modifier la langue d'un objet
+ *
  * @param string $objet
  * @param int $id
  * @param int $id_rubrique
  * @param string $changer_lang
+ * @param string $serveur
  * @return string
  */
-function action_instituer_langue_objet_dist($objet,$id, $id_rubrique, $changer_lang) {
+function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_lang, $serveur='') {
        if ($changer_lang) {
                $table_objet_sql = table_objet_sql($objet);
                $id_table_objet = id_table_objet($objet);
-
+               $trouver_table = charger_fonction('trouver_table', 'base');
+               $desc = $trouver_table($table_objet_sql, $serveur);
+               
+               $set = array();
+               if (isset($desc['field']['langue_choisie'])){
+                       $set['langue_choisie'] = 'oui';
+               }
+               
                if ($changer_lang != "herit") {
-                       sql_updateq($table_objet_sql, array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "$id_table_objet=".intval($id));
-                       include_spip('inc/rubriques');
-                       $langues = calculer_langues_utilisees();
+                       $set['lang'] = $changer_lang;
+                       sql_updateq($table_objet_sql, $set, "$id_table_objet=" . intval($id),'',$serveur);
+                       include_spip('inc/rubriques'); // pour calculer_langues_rubriques et calculer_langues_utilisees
+                       if ($table_objet_sql == 'spip_rubriques') {
+                               calculer_langues_rubriques();
+                       }
+                       $langues = calculer_langues_utilisees($serveur);
                        ecrire_meta('langues_utilisees', $langues);
-               }
-               else {
+               } else {
                        $langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=" . intval($id_rubrique));
-                       if (!$langue_parent)
+                       if (!$langue_parent) {
                                $langue_parent = $GLOBALS['meta']['langue_site'];
-                       sql_updateq($table_objet_sql, array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "$id_table_objet=".intval($id));
+                       }
                        $changer_lang = $langue_parent;
+                       $set['lang'] = $changer_lang;
+                       if (isset($set['langue_choisie'])){
+                               $set['langue_choisie'] = 'non';
+                       }
+                       sql_updateq($table_objet_sql, $set, "$id_table_objet=" . intval($id),'',$serveur);
+                       if ($table_objet_sql == 'spip_rubriques') {
+                               include_spip('inc/rubriques');
+                               calculer_langues_rubriques();
+                       }
                }
        }
+
        return $changer_lang;
 }