Changeset 65245 in spip-zone for _dev_


Ignore:
Timestamp:
Aug 25, 2012, 12:24:02 PM (7 years ago)
Author:
kent1@…
Message:

On n'accepte que les fichiers de langue qui font partie d'une langue de inc/lang_liste

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _dev_/salvatore2/lecteur.php

    r64370 r65245  
    3737include_spip('inc/filtres');
    3838include_spip('inc/xml');
     39include_spip('inc/lang_liste');
    3940
    4041$url_site = sql_getfetsel('valeur','spip_meta','nom="adresse_site"');
     
    198199        $mod = $source[1];
    199200        list(,$lang)=explode("_",$fich,2);
    200 
    201         if (1==$orig)
    202                 $res = spip_query("SELECT id, str, md5 FROM spip_tradlangs WHERE module='".$source[1]."' and lang='".$lang."' ");
    203         else
    204                 $res = spip_query("SELECT id, str, md5 FROM spip_tradlangs WHERE module='".$source[1]."' and lang='".$lang."' and statut!='MODIF' ");
    205         $nb = sql_count($res);
    206         if ($nb > 0)
    207                 trad_log("!-- Fichier de langue $lang du module $mod deja inclus dans la base\n");
    208 
    209         $ajoutees = $inchangees = $supprimees = $modifiees = $ignorees = 0;
    210        
    211         /**
    212          * Si la langue est deja dans la base, on ne l'ecrase que s'il s'agit
    213          * de la langue source
    214          */
    215         if ($nb == 0 OR $orig == 1) {
    216                 // La liste de ce qui existe deja
    217                 $existant = array();
    218                 while ($t = spip_fetch_array($res))
    219                         $existant[$t['id']] = $t['md5'];
    220 
    221                 $bigwhere = "module='".$source[1]."' and lang='".$lang."'";
    222 
    223                 // Dans ce qui arrive, il y a 4 cas :
    224                 foreach (array_unique(array_merge(
    225                         array_keys($existant), array_keys($str_lang)
    226                 )) as $id) {
    227                         $comm=(isset($comm_fic_lang[$id])) ? $comm_fic_lang[$id] : "";
    228                         // * chaine neuve
    229                         if (isset($str_lang[$id])
    230                         AND !isset($existant[$id]))
    231                         {
    232                                 if ($orig) {
     201       
     202        if(!array_key_exists($lang,$GLOBALS['codes_langues'])){
     203                trad_log("!-- Attention : La langue $lang n'existe pas dans les langues possibles - $mod \n"); 
     204        }
     205        else{
     206                if (1==$orig)
     207                        $res = spip_query("SELECT id, str, md5 FROM spip_tradlangs WHERE module='".$source[1]."' and lang='".$lang."' ");
     208                else
     209                        $res = spip_query("SELECT id, str, md5 FROM spip_tradlangs WHERE module='".$source[1]."' and lang='".$lang."' and statut!='MODIF' ");
     210                $nb = sql_count($res);
     211                if ($nb > 0)
     212                        trad_log("!-- Fichier de langue $lang du module $mod deja inclus dans la base\n");
     213       
     214                $ajoutees = $inchangees = $supprimees = $modifiees = $ignorees = 0;
     215               
     216                /**
     217                 * Si la langue est deja dans la base, on ne l'ecrase que s'il s'agit
     218                 * de la langue source
     219                 */
     220                if ($nb == 0 OR $orig == 1) {
     221                        // La liste de ce qui existe deja
     222                        $existant = array();
     223                        while ($t = spip_fetch_array($res))
     224                                $existant[$t['id']] = $t['md5'];
     225       
     226                        $bigwhere = "module='".$source[1]."' and lang='".$lang."'";
     227       
     228                        // Dans ce qui arrive, il y a 4 cas :
     229                        foreach (array_unique(array_merge(
     230                                array_keys($existant), array_keys($str_lang)
     231                        )) as $id) {
     232                                $comm=(isset($comm_fic_lang[$id])) ? $comm_fic_lang[$id] : "";
     233                                // * chaine neuve
     234                                if (isset($str_lang[$id])
     235                                AND !isset($existant[$id]))
     236                                {
     237                                        if ($orig) {
     238                                                $md5 = md5($str_lang[$id]);
     239                                        } else if (!isset($liste_id_orig[$id])) {
     240                                                trad_log("!-- Chaine $id inconnue dans la langue principale\n");
     241                                                $ignorees++;
     242                                        } else {
     243                                                $md5 = $liste_id_orig[$id];
     244                                        }
     245       
     246                                        if (isset($md5)){
     247                                                /*
     248                                                 * Forcer le passage en UTF-8
     249                                                 */
     250                                                $str_lang[$id] = str_replace("\r\n", "\n", unicode_to_utf_8(
     251                                                        html_entity_decode(
     252                                                                preg_replace('/&([lg]t;)/S', '&\1', $str_lang[$id]),
     253                                                                ENT_NOQUOTES, 'utf-8')
     254                                                ));
     255                                                if(in_array($comm,array('NEW','OK','MODIF','MODI')) && $orig != 1){
     256                                                        if($comm == 'MODI')
     257                                                                $comm = 'MODIF';
     258                                                        $status[$id] = $comm;
     259                                                        $comm = '';
     260                                                }
     261                                                else if ((strlen($comm) > 1) && preg_match("/(.*?)(NEW|OK|MODIF)(.*?)/",$comm,$matches)) {
     262                                                        if($orig != 1)
     263                                                                $status[$id] = $matches[2];
     264                                                        $comm = preg_replace("/(NEW|OK|MODIF)/",'',$comm);
     265                                                }
     266                                                $titre = $id.' : '.$source[1].' - '.$lang;
     267                                                spip_query("INSERT spip_tradlangs (id_tradlang_module,titre,module,lang,id,str,comm,md5,statut)
     268                                                VALUES ("
     269                                                        ._q($id_module).', '
     270                                                        ._q($titre).', '
     271                                                        ._q($source[1]).', '
     272                                                        ._q($lang).', '
     273                                                        ._q($id).', '
     274                                                        ._q($str_lang[$id]).', '
     275                                                        ._q($comm).', '
     276                                                        ._q($md5).', '
     277                                                        ._q($status[$id])
     278                                                        .")"
     279                                                );
     280                                                $ajoutees++;
     281                                        }
     282                                }
     283                                else
     284                                // * chaine existante
     285                                if (isset($str_lang[$id]) AND isset($existant[$id]))
     286                                {
     287                                        // * identique ? => NOOP
    233288                                        $md5 = md5($str_lang[$id]);
    234                                 } else if (!isset($liste_id_orig[$id])) {
    235                                         trad_log("!-- Chaine $id inconnue dans la langue principale\n");
    236                                         $ignorees++;
    237                                 } else {
    238                                         $md5 = $liste_id_orig[$id];
    239                                 }
    240 
    241                                 if (isset($md5)){
    242                                         /*
    243                                          * Forcer le passage en UTF-8
    244                                          */
    245                                         $str_lang[$id] = str_replace("\r\n", "\n", unicode_to_utf_8(
    246                                                 html_entity_decode(
    247                                                         preg_replace('/&([lg]t;)/S', '&\1', $str_lang[$id]),
    248                                                         ENT_NOQUOTES, 'utf-8')
    249                                         ));
    250                                         if(in_array($comm,array('NEW','OK','MODIF','MODI')) && $orig != 1){
    251                                                 if($comm == 'MODI')
    252                                                         $comm = 'MODIF';
    253                                                 $status[$id] = $comm;
    254                                                 $comm = '';
    255                                         }
    256                                         else if ((strlen($comm) > 1) && preg_match("/(.*?)(NEW|OK|MODIF)(.*?)/",$comm,$matches)) {
    257                                                 if($orig != 1)
    258                                                         $status[$id] = $matches[2];
    259                                                 $comm = preg_replace("/(NEW|OK|MODIF)/",'',$comm);
    260                                         }
    261                                         $titre = $id.' : '.$source[1].' - '.$lang;
    262                                         spip_query("INSERT spip_tradlangs (id_tradlang_module,titre,module,lang,id,str,comm,md5,statut)
    263                                         VALUES ("
    264                                                 ._q($id_module).', '
    265                                                 ._q($titre).', '
    266                                                 ._q($source[1]).', '
    267                                                 ._q($lang).', '
    268                                                 ._q($id).', '
    269                                                 ._q($str_lang[$id]).', '
    270                                                 ._q($comm).', '
    271                                                 ._q($md5).', '
    272                                                 ._q($status[$id])
    273                                                 .")"
    274                                         );
    275                                         $ajoutees++;
    276                                 }
    277                         }
    278                         else
    279                         // * chaine existante
    280                         if (isset($str_lang[$id]) AND isset($existant[$id]))
    281                         {
    282                                 // * identique ? => NOOP
    283                                 $md5 = md5($str_lang[$id]);
    284                                 if ($md5 == $existant[$id]) {
    285                                         $inchangees++;
    286                                 }
    287                                 // * modifiee ? => UPDATE
    288                                 else {
    289                                         // modifier la chaine
    290                                         spip_query("UPDATE spip_tradlangs SET
    291                                                 str="._q($str_lang[$id])
    292                                                 . ($orig
    293                                                         ? ", md5="._q($md5).", statut='OK'"
    294                                                         : ", md5="._q($existant[$id]).", statut=''"
    295                                                 )
    296                                                 . ($comm
    297                                                         ? ", comm="._q($comm)." "
    298                                                         : ""
    299                                                 )
    300                                                 ." WHERE $bigwhere AND id="._q($id)
    301                                         );
    302 
    303                                         // signaler le status MODIF de ses traductions
    304                                         if ($orig && ($orig != 0))
    305                                                 spip_query("UPDATE spip_tradlangs SET statut='MODIF'
    306                                                         WHERE module='".$source[1]
    307                                                         ."' AND id="._q($id)
    308                                                         ." AND md5!="._q($md5)
    309                                                         ." AND lang!="._q($lang)
    310                                                         ." AND statut!='NEW'"
     289                                        if ($md5 == $existant[$id]) {
     290                                                $inchangees++;
     291                                        }
     292                                        // * modifiee ? => UPDATE
     293                                        else {
     294                                                // modifier la chaine
     295                                                spip_query("UPDATE spip_tradlangs SET
     296                                                        str="._q($str_lang[$id])
     297                                                        . ($orig
     298                                                                ? ", md5="._q($md5).", statut='OK'"
     299                                                                : ", md5="._q($existant[$id]).", statut=''"
     300                                                        )
     301                                                        . ($comm
     302                                                                ? ", comm="._q($comm)." "
     303                                                                : ""
     304                                                        )
     305                                                        ." WHERE $bigwhere AND id="._q($id)
    311306                                                );
    312                                         $modifiees++;
    313                                 }
    314                         }
    315                         else
    316                         // * chaine supprimee
    317                         if (!isset($str_lang[$id]) AND isset($existant[$id])){
    318                                 // mettre au grenier
    319                                 spip_query("UPDATE spip_tradlangs SET id="._q($source[1].'_'.$id)
    320                                 .", module='attic' WHERE id="._q($id)." AND module="._q($source[1]));
    321                                 $supprimees++;
    322                         }
    323                        
    324                         if ($orig AND isset($str_lang[$id]))
    325                                 $liste_id_orig[$id] = md5($str_lang[$id]);
    326                 }
    327 
    328                 trad_log("!-- module ".$source[1].", $lang : $modifiees modifiees, $ajoutees ajoutees, $supprimees supprimees, $ignorees ignorees, $inchangees inchangees\n");
     307       
     308                                                // signaler le status MODIF de ses traductions
     309                                                if ($orig && ($orig != 0))
     310                                                        spip_query("UPDATE spip_tradlangs SET statut='MODIF'
     311                                                                WHERE module='".$source[1]
     312                                                                ."' AND id="._q($id)
     313                                                                ." AND md5!="._q($md5)
     314                                                                ." AND lang!="._q($lang)
     315                                                                ." AND statut!='NEW'"
     316                                                        );
     317                                                $modifiees++;
     318                                        }
     319                                }
     320                                else
     321                                // * chaine supprimee
     322                                if (!isset($str_lang[$id]) AND isset($existant[$id])){
     323                                        // mettre au grenier
     324                                        spip_query("UPDATE spip_tradlangs SET id="._q($source[1].'_'.$id)
     325                                        .", module='attic' WHERE id="._q($id)." AND module="._q($source[1]));
     326                                        $supprimees++;
     327                                }
     328                               
     329                                if ($orig AND isset($str_lang[$id]))
     330                                        $liste_id_orig[$id] = md5($str_lang[$id]);
     331                        }
     332       
     333                        trad_log("!-- module ".$source[1].", $lang : $modifiees modifiees, $ajoutees ajoutees, $supprimees supprimees, $ignorees ignorees, $inchangees inchangees\n");
     334                }
    329335        }
    330336        unset($liste_id_orig);
Note: See TracChangeset for help on using the changeset viewer.