Changeset 122227 in spip-zone


Ignore:
Timestamp:
Feb 6, 2020, 3:41:54 PM (13 days ago)
Author:
Cerdic
Message:

tentative fix insertion en base nouveaux modules

Location:
_plugins_/trad-lang/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk

    • Property subgit:lock:6dcf7b84c213f82c3dc69b6b85d764ff2c03fefd deleted
    • Property subgit:lock:73fb3ea292e6de45e1202746adc879ea78ebaf83 set to 2020-02-06T16:43:16.153
  • _plugins_/trad-lang/trunk/salvatore/lecteur.php

    r120875 r122227  
    117117                }
    118118
     119                $new_module = false;
    119120                $langues_a_jour = array();
    120121
     
    150151                                        salvatore_log("Insertion en base #$id_tradlang_module");
    151152                                }
     153                                $new_module = true;
    152154                        }
    153155                        $force_reload = true;
     
    189191                        // on commence par la langue mere
    190192                        $liste_md5_master = array();
    191                         $modifs_master = salvatore_importer_module_langue($id_tradlang_module, $source, $fichier_lang_principal, true, $liste_md5_master);
     193                        $modifs_master = salvatore_importer_module_langue($id_tradlang_module, $source, $fichier_lang_principal, true, $new_module, $liste_md5_master);
    192194
    193195                        // et on fait les autres langues
    194196                        foreach ($liste_fichiers_lang as $fichier_lang){
    195                                 salvatore_importer_module_langue($id_tradlang_module, $source, $fichier_lang, false, $liste_md5_master);
     197                                salvatore_importer_module_langue($id_tradlang_module, $source, $fichier_lang, false, $new_module, $liste_md5_master);
    196198
    197199                                $lang = salvatore_get_lang_from($module, $fichier_lang);
     
    253255 * @param bool $is_master
    254256 *   true signifie que c'est la langue originale
     257 * @param bool $new_module
     258 *   true signifie qu'on est en train d'importer un nouveau module
    255259 * @param array $liste_md5_master
    256260 * @return string
    257261 */
    258 function salvatore_importer_module_langue($id_tradlang_module, $source, $fichier_lang, $is_master, &$liste_md5_master){
     262function salvatore_importer_module_langue($id_tradlang_module, $source, $fichier_lang, $is_master, $new_module, &$liste_md5_master){
    259263        salvatore_log("!\n+ Import de $fichier_lang\n");
    260264        $idx = $GLOBALS['idx_lang'] = 'i18n_' . crc32($fichier_lang) . '_tmp';
     
    310314                 * de la langue source
    311315                 */
    312                 if (!$nb or $is_master){
     316                if (!$nb or $is_master or $new_module){
    313317                        // La liste de ce qui existe deja
    314318                        $existant = $str_existant = array();
     
    446450                                                        $deja_lang = sql_allfetsel('lang', 'spip_tradlangs', 'id=' . sql_quote($id) . ' AND id_tradlang_module=' . intval($id_tradlang_module));
    447451                                                        $deja_lang = array_column($deja_lang, 'lang');
    448                                                         $chaines_a_dupliquer = sql_allfetsel('*', 'spip_tradlangs', 'id=' . sql_quote($identique['id']) . ' AND id_tradlang_module=' . intval($identique['id_tradlang_module']) . ' AND ' . sql_in('lang', $deja_lang, 'NOT'));
     452                                                        // on ne prend pas les fausse trads dont str est identique $chaines[$id]
     453                                                        $chaines_a_dupliquer = sql_allfetsel('*', 'spip_tradlangs', 'id=' . sql_quote($identique['id']) . ' AND id_tradlang_module=' . intval($identique['id_tradlang_module']) . ' AND str!=' . sql_quote($chaines[$id]) . ' AND ' . sql_in('lang', $deja_lang, 'NOT'));
    449454                                                        foreach ($chaines_a_dupliquer as $chaine){
    450455                                                                unset($chaine['id_tradlang']);
     
    545550        }
    546551
    547         // TODO : BUG ?
    548         // unset $liste_md5_master alors qu'elle est repassee d'un appel a l'autre ?
    549         unset($liste_md5_master, $chaines, $GLOBALS[$GLOBALS['idx_lang']]);
     552        unset($chaines, $GLOBALS[$GLOBALS['idx_lang']]);
    550553
    551554        return $ajoutees + $supprimees + $modifiees;
Note: See TracChangeset for help on using the changeset viewer.