Changeset 119878 in spip-zone


Ignore:
Timestamp:
Jan 20, 2020, 5:23:17 PM (8 months ago)
Author:
Cerdic
Message:

Gestion des renommages/decoupe de module : retrouver une chaine qui est une copie du meme id+contenu d'un autre module

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

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk

    • Property subgit:lock:26a33f2add5fc05908a05949439ecb9c0a513f64 deleted
    • Property subgit:lock:164d85a2725b6b397325c9b6b6327f9a3d091887 set to 2020-01-20T18:23:25.020
  • _plugins_/trad-lang/trunk/salvatore/lecteur.php

    r119869 r119878  
    401401
    402402                                                /**
    403                                                  * Vérifier si une autre chaîne de langue était identique (str == str)
     403                                                 * Rechercher si on serait pas en train de copier une chaine existante
     404                                                 * (C'est un renommage)
    404405                                                 *
    405406                                                 * Si oui, on sélectionne toutes les occurences existantes dans les autres langues et on les duplique
    406407                                                 */
     408
     409                                                // si on a un contenu identique a une autre chaine du meme module
     410                                                // (renommage de l'id dans un meme fichier de langue)
    407411                                                $where_identique = [
    408412                                                        'id_tradlang_module=' . intval($id_tradlang_module),
     
    411415                                                        'str=' . sql_quote($chaines[$id]),
    412416                                                ];
    413                                                 $identique_meme_module = sql_getfetsel('id', 'spip_tradlangs', $where_identique);
    414                                                 if ($identique_meme_module){
    415                                                         salvatore_log("La nouvelle chaine $id est une chaine dupliquée de " . $identique_meme_module);
     417                                                $identique = sql_fetsel('id_tradlang_module, module, id', 'spip_tradlangs', $where_identique);
     418
     419                                                // si on est sur la langue master on cherche si ce n'est pas un renommage/decoupe de module :
     420                                                // chercher une chaine avec meme id et meme contenu dans un autre module
     421                                                if (!$identique and $is_master) {
     422                                                        $where_identique = [
     423                                                                'id_tradlang_module!=' . intval($id_tradlang_module),
     424                                                                'lang=' . sql_quote($lang),
     425                                                                'id=' . sql_quote($id),
     426                                                                'str=' . sql_quote($chaines[$id]),
     427                                                        ];
     428                                                        $identique = sql_fetsel('id_tradlang_module, module, id', 'spip_tradlangs', $where_identique);
     429                                                }
     430
     431
     432                                                if ($identique){
     433                                                        salvatore_log("La nouvelle chaine $id est une chaine dupliquée de " . $identique['module'].':'.$identique['id']);
    416434
    417435                                                        $deja_lang = sql_allfetsel('lang', 'spip_tradlangs', 'id=' . sql_quote($id) . ' AND id_tradlang_module=' . intval($id_tradlang_module));
    418436                                                        $deja_lang = array_column($deja_lang, 'lang');
    419                                                         $chaines_a_dupliquer = sql_allfetsel('*', 'spip_tradlangs', 'id=' . sql_quote($identique_meme_module) . ' AND id_tradlang_module=' . intval($id_tradlang_module) . ' AND ' . sql_in('lang', $deja_lang, 'NOT'));
     437                                                        $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'));
    420438                                                        foreach ($chaines_a_dupliquer as $chaine){
    421439                                                                unset($chaine['id_tradlang']);
    422440                                                                unset($chaine['maj']);
    423441                                                                $chaine['id'] = $id;
     442                                                                $chaine['id_tradlang_module'] = $id_tradlang_module;
     443                                                                $chaine['module'] = $source['module'];
    424444                                                                $chaine['titre'] = $id . ' : ' . $source['module'] . ' - ' . $chaine['lang'];
    425445                                                                $chaine['md5'] = md5($chaine['str']);
Note: See TracChangeset for help on using the changeset viewer.