Changeset 97013 in spip-zone


Ignore:
Timestamp:
May 6, 2016, 4:12:09 PM (4 years ago)
Author:
kent1@…
Message:

PSR SPIP

Location:
_dev_/salvatore2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _dev_/salvatore2/ecriveur.php

    r93907 r97013  
    3232$liste_sources=charger_fichier_traductions(); // chargement du fichier traductions.txt
    3333
    34 if (!is_dir($tmp)) die ("Manque le repertoire ".$tmp);
     34if (!is_dir($tmp)) {
     35        die('Manque le repertoire '.$tmp);
     36}
    3537
    3638include_spip('base/abstract_sql');
     
    4850$url_site = $GLOBALS['meta']['adresse_site'];
    4951
    50 if(isset($argv[1]) && strlen($argv[1]) > 1)
     52if (isset($argv[1]) and strlen($argv[1]) > 1) {
    5153        $message_commit = $argv[1]."\n\n";
     54}
    5255
    5356foreach ($liste_sources as $source) {
    54         trad_log("==== Module ".$source[1]." =======================================\n");
     57        trad_log('==== Module ' . $source[1] . " =======================================\n");
    5558        $export = true;
    5659        /**
     
    5861         * Si oui on empeche son export en le signifiant
    5962         */
    60         if(file_exists($xml = $tmp.$source[1].'/'.$source[1].'.xml')){
     63        if (file_exists($xml = $tmp.$source[1].'/'.$source[1].'.xml')) {
    6164                $xml_content = spip_xml_load($xml);
    62                 if(is_array($xml_content)){
    63                         spip_xml_match_nodes('/^traduction/',$xml_content,$matches);
     65                if (is_array($xml_content)) {
     66                        spip_xml_match_nodes('/^traduction/', $xml_content, $matches);
    6467                        $test = '<'.key($matches).'>';
    65                         $url = extraire_attribut($test,'url');
    66                         if($url && ($url != $url_site)){
     68                        $url = extraire_attribut($test, 'url');
     69                        if ($url and ($url != $url_site)) {
    6770                                $export = false;
    6871                                $sujet = 'Ecriveur : Erreur sur '.$source[1];
    6972                                $corps = "\nErreur : export impossible, le fichier est traduit autre part : $url != $url_site\n\n";
    70                                 trad_sendmail($sujet,$corps);
    71                                 trad_log("\nErreur : export impossible, le fichier est traduit autre part : $url != $url_site\n\n");           
     73                                trad_sendmail($sujet, $corps);
     74                                trad_log("\nErreur : export impossible, le fichier est traduit autre part : $url != $url_site\n\n");
    7275                        }
    7376                }
     
    7679         * Si on l'exporte
    7780         */
    78         if($export){
    79                 $id_tradlang_module = sql_getfetsel('id_tradlang_module','spip_tradlang_modules','module='.sql_quote($source[1]));
    80                 $url_trad = url_absolue(generer_url_entite($id_tradlang_module,'tradlang_module'),$url_site);
    81                 export_trad_module($source,$url_site,$url_trad,$message_commit);
     81        if ($export) {
     82                $id_tradlang_module = sql_getfetsel('id_tradlang_module', 'spip_tradlang_modules', 'module = ' . sql_quote($source[1]));
     83                $url_trad = url_absolue(generer_url_entite($id_tradlang_module, 'tradlang_module'), $url_site);
     84                export_trad_module($source, $url_site, $url_trad, $message_commit);
    8285        }
    8386}
     
    8891// Genere les fichiers de traduction d'un module
    8992//
    90 function export_trad_module($source,$url_site,$url_trad,$message_commit='') {
     93function export_trad_module($source, $url_site, $url_trad, $message_commit = '') {
    9194        global $tmp;
    9295
    9396        // sanity check
    94         if (!is_dir($tmp.$source[1]."/"))
     97        if (!is_dir($tmp.$source[1].'/')) {
    9598                return false;
    96 
    97         $module = sql_fetsel('id_tradlang_module,limite_trad,lang_mere','spip_tradlang_modules','module='.sql_quote($source[1]));
     99        }
     100
     101        $module = sql_fetsel('id_tradlang_module,limite_trad,lang_mere', 'spip_tradlang_modules', 'module = ' . sql_quote($source[1]));
    98102
    99103        $seuil_export = 50;
    100         if(is_numeric($module['limite_trad']) && $module['limite_trad'] > 0){
     104        if (is_numeric($module['limite_trad']) and $module['limite_trad'] > 0) {
    101105                $seuil_export = $module['limite_trad'];
    102         }elseif(function_exists('lire_config')){
    103                 $seuil_export = lire_config('tradlang/seuil_export_tradlang',50);
     106        } elseif (function_exists('lire_config')) {
     107                $seuil_export = lire_config('tradlang/seuil_export_tradlang', 50);
    104108        }
    105         if(intval($module['id_tradlang_module']) >= 1){
     109        if (intval($module['id_tradlang_module']) >= 1) {
    106110                // charger la langue originale, pour la copier si necessaire
    107111                $count_original = 0;
    108                 $res=sql_allfetsel("id,id_tradlang_module,str,comm,statut","spip_tradlangs","id_tradlang_module=".intval($module['id_tradlang_module'])." and lang=".sql_quote($module['lang_mere'])." AND statut='OK'","id");
     112                $res=sql_allfetsel('id, id_tradlang_module,str,comm,statut', 'spip_tradlangs', 'id_tradlang_module = '.intval($module['id_tradlang_module']) . ' AND lang = '.sql_quote($module['lang_mere']) . ' AND statut="OK"', 'id');
    109113                foreach ($res as $row) {
    110114                        $row['statut'] = 'NEW';
     
    118122                trad_log("\nMinimal = $minimal ($seuil_export %)\n");
    119123
    120                 $res=sql_allfetsel("lang,COUNT(*) as N","spip_tradlangs","module=".sql_quote($source[1])." AND statut != 'NEW' AND statut != 'attic'","lang","lang");
     124                $res=sql_allfetsel('lang,COUNT(*) as N', 'spip_tradlangs', 'module = ' . sql_quote($source[1]) . ' AND statut != "NEW" AND statut != "attic"', 'lang', 'lang');
    121125                foreach ($res as $row) {
    122126                        /**
    123127                         * Le fichier est il suffisamment traduit
    124128                         */
    125                         if($row['N'] >= $minimal)
     129                        if ($row['N'] >= $minimal) {
    126130                                $liste_lang[]=$row['lang'];
    127                         else{
     131                        } else {
    128132                                /**
    129133                                 * Le fichier n'est pas suffisamment traduit et n'existe pas, on ne fera donc rien
    130134                                 */
    131                                 if(!file_exists($tmp.$source[1]."/".$source[1].'_'.$row['lang'].'.php'))
    132                                         $liste_lang_non_exportees[]=$row['lang'];
    133 
    134                                 /**
    135                                  * Il n'est pas suffisamment traduit, cependant, il existe déjà
    136                                  * On ne va donc pas le supprimer à la barbare, mais on le met à jour quand même
    137                                  */
    138                                 else{
     135                                if (!file_exists($tmp.$source[1].'/'.$source[1].'_'.$row['lang'].'.php')) {
     136                                        $liste_lang_non_exportees[] = $row['lang'];
     137                                } else {
     138                                        /**
     139                                         * Il n'est pas suffisamment traduit, cependant, il existe déjà
     140                                         * On ne va donc pas le supprimer à la barbare, mais on le met à jour quand même
     141                                         */
    139142                                        $liste_lang[]=$row['lang'];
    140143                                        $liste_lang_supprimer[]=$row['lang'];
    141144                                        $percent = (($row['N']/$count_original)*100);
    142                                         if($percent < ($seuil_export-15))
    143                                                 $message_commit .= "La langue '".$row['lang']."' devrait être supprimée car trop peu traduite (".number_format($percent,2)." %)\n";
    144                                 }
    145                         }
    146                 }
    147        
     145                                        if ($percent < ($seuil_export-15)) {
     146                                                $message_commit .= "La langue '".$row['lang']."' devrait être supprimée car trop peu traduite (".number_format($percent, 2)." %)\n";
     147                                        }
     148                                }
     149                        }
     150                }
     151
    148152                // traiter chaque langue
    149153                $infos = $commiteurs = array();
    150                 foreach($liste_lang as $lang) {
     154                foreach ($liste_lang as $lang) {
    151155                        trad_log("Generation de la langue $lang ");
    152156                        // Proteger les caracteres typographiques a l'interieur des tags html
    153                         $typo = (in_array($lang,array('eo','fr','cpf')) || strncmp($lang, 'fr_', 3)==0) ? 'fr' : 'en';
     157                        $typo = (in_array($lang, array('eo','fr','cpf')) || strncmp($lang, 'fr_', 3) == 0) ? 'fr' : 'en';
    154158                        $typographie = charger_fonction($typo, 'typographie');
    155159                        $tab = "\t";
    156                        
     160
    157161                        $x = $tous = $tradlangs = array();
    158                         $prev="";
     162                        $prev = '';
    159163                        $traduits = $modifs = $relire = 0;
    160164
    161165                        // On ne prend que les MODIF, les RELIRE et les OK pour ne pas rendre les sites multilingues en français
    162                         $res=sql_allfetsel("id_tradlang,id,str,comm,statut,md5","spip_tradlangs", "module='".$source[1]."' AND lang='".$lang."' AND statut != 'NEW' AND statut != 'attic'","id");
     166                        $res=sql_allfetsel('id_tradlang,id,str,comm,statut,md5', 'spip_tradlangs', 'module = "' . $source[1] . '" AND lang = "' . $lang . '" AND statut != "NEW" AND statut != "attic"', 'id');
    163167                        foreach ($res as $row) {
    164168                                $tradlangs[] = $row['id_tradlang'];
     
    166170                        }
    167171                        ksort($tous);
    168                        
     172
    169173                        foreach ($tous as $row) {
    170                                 if ($row['statut'] == 'OK')
     174                                if ($row['statut'] == 'OK') {
    171175                                        $traduits ++;
    172                                 else if($row['statut'] == 'MODIF')
     176                                } elseif ($row['statut'] == 'MODIF') {
    173177                                        $modifs ++;
    174                                 else if($row['statut'] == 'RELIRE')
     178                                } elseif ($row['statut'] == 'RELIRE') {
    175179                                        $relire ++;
    176        
    177                                 if(strlen($row['comm']) > 1){
     180                                }
     181
     182                                if (strlen($row['comm']) > 1) {
    178183                                        // On remplace les sauts de lignes des commentaires sinon ça crée des erreurs php
    179                                         $row['comm'] = str_replace(array("\r\n", "\n", "\r"),' ', $row['comm']);
    180                                         // Conversion des commentaires en utf-8
    181                                         $row['comm'] = unicode_to_utf_8(
    182                                                 html_entity_decode(
    183                                                         preg_replace('/&([lg]t;)/S', '&amp;\1', $row['comm']),
    184                                                         ENT_NOQUOTES, 'utf-8')
    185                                         );
    186                                 }
    187                                
    188                                 if ($prev!=strtoupper($row['id'][0])) $x[] = "\n$tab// ".strtoupper($row['id'][0]);
     184                                        $row['comm'] = str_replace(array("\r\n", "\n", "\r"), ' ', $row['comm']);
     185                                        // Conversion des commentaires en utf-8
     186                                        $row['comm'] = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $row['comm']), ENT_NOQUOTES, 'utf-8'));
     187                                }
     188
     189                                if ($prev != strtoupper($row['id'][0])) {
     190                                        $x[] = "\n$tab// ".strtoupper($row['id'][0]);
     191                                }
    189192                                $prev=strtoupper($row['id'][0]);
    190                                
    191                                 if (strlen($row['statut']) && ($row['statut'] != 'OK'))
     193
     194                                if (strlen($row['statut']) and ($row['statut'] != 'OK')) {
    192195                                        $row['comm'] .= ' '.$row['statut'];
    193                                 if (trim($row['comm'])) $row['comm']=" # ".trim($row['comm']); // on rajoute les commentaires ?
    194        
     196                                }
     197                                if (trim($row['comm'])) {
     198                                        $row['comm'] = ' # ' . trim($row['comm']); // on rajoute les commentaires ?
     199                                }
     200
    195201                                $str = $row['str'];
    196                                
     202
    197203                                /**
    198204                                 * On enlève les sauts de lignes windows pour des sauts de ligne linux
    199205                                 */
    200206                                $str = str_replace("\r\n", "\n", $str);
    201                                
     207
    202208                                /**
    203209                                 * protection dans les balises genre <a href="..." ou <img src="..."
     
    213219                                        }
    214220                                }
    215                                
     221
    216222                                /**
    217223                                 * Protéger le contenu des balises <html> <code> <cadre> <frame> <tt> <pre>
    218224                                 */
    219225                                define('_PROTEGE_BLOCS_HTML', ',<(html|code|cadre|pre|tt)(\s[^>]*)?>(.*)</\1>,UimsS');
    220                                 if ((strpos($str,"<")!==false) && preg_match_all(_PROTEGE_BLOCS_HTML, $str, $matches, PREG_SET_ORDER)) {
     226                                if ((strpos($str, '<') !== false) and preg_match_all(_PROTEGE_BLOCS_HTML, $str, $matches, PREG_SET_ORDER)) {
    221227                                        foreach ($matches as $reg) {
    222228                                                $insert = $reg[0];
     
    227233                                        }
    228234                                }
    229                                
     235
    230236                                /**
    231237                                 * On applique la typographie de la langue
     
    236242                                 */
    237243                                $str = strtr($str, _TYPO_PROTECTEUR, _TYPO_PROTEGER);
    238                                
    239                                 $str = unicode_to_utf_8(
    240                                         html_entity_decode(
    241                                                 preg_replace('/&([lg]t;)/S', '&amp;\1',$str),
    242                                                 ENT_NOQUOTES, 'utf-8')
    243                                 );
    244                                
     244
     245                                $str = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str), ENT_NOQUOTES, 'utf-8'));
     246
    245247                                /**
    246248                                 * Calcul du nouveau md5
    247249                                 */
    248250                                $newmd5 = md5($str);
    249                                
     251
    250252                                /**
    251253                                 * Si le md5 ou la chaine à changé, on la met à jour dans la base
    252254                                 */
    253                                 if (($row['md5'] != $newmd5) || ($str != $row['str']))
    254                                         $r = sql_updateq("spip_tradlangs",array('md5'=>$newmd5,'str' =>$str),"id_tradlang=".intval($row['id_tradlang']));
    255        
    256                                 $x[]="$tab".var_export($row['id'],1).' => ' .var_export($str,1).','.$row['comm'];
     255                                if (($row['md5'] != $newmd5) || ($str != $row['str'])) {
     256                                        $r = sql_updateq('spip_tradlangs', array('md5' => $newmd5, 'str' => $str), 'id_tradlang = '.intval($row['id_tradlang']));
     257                                }
     258
     259                                $x[] = $tab.var_export($row['id'], 1).' => ' .var_export($str, 1).','.$row['comm'];
    257260                        }
    258261                        $orig = ($lang == $source[2]) ? $source[0] : false;
    259        
     262
    260263                        trad_log(" - traduction ($traduits/$count_original OK | $relire/$count_original RELIRE | $modifs/$count_original MODIFS), export\n");
    261264                        // historiquement les fichiers de lang de spip_loader ne peuvent pas etre securises
     
    265268        return;
    266269}\n\n";
    267        
    268                         $fd = fopen($tmp.$source[1]."/".$source[1].'_'.$lang.'.php', 'w');
    269        
     270
     271                        $fd = fopen($tmp.$source[1] . '/' . $source[1].'_'.$lang.'.php', 'w');
     272
    270273                        # supprimer la virgule du dernier item
    271274                        $x[count($x)-1] = preg_replace('/,([^,]*)$/', '\1', $x[count($x)-1]);
    272        
    273                         $contenu = join("\n",$x);
    274        
     275
     276                        $contenu = join("\n", $x);
     277
    275278                        // L'URL du site de traduction
    276                         $url_trad = parametre_url($url_trad,'lang_cible',$lang);
     279                        $url_trad = parametre_url($url_trad, 'lang_cible', $lang);
    277280                        /**
    278281                         * Ecrire le fichier de langue complet
    279282                         */
    280                         fwrite($fd,
    281                         '<'.'?php
     283                        fwrite(
     284                                $fd,
     285                                '<'.'?php
    282286// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
    283287'
    284288
    285 . ($orig
    286         ? '// Fichier source, a modifier dans '.$orig
    287 : '// extrait automatiquement de '.$url_trad.'
     289                                . ($orig
     290                                ? '// Fichier source, a modifier dans '.$orig
     291                                : '// extrait automatiquement de '.$url_trad.'
    288292// ** ne pas modifier le fichier **
    289293'
    290 )
    291 ."\n".$secure.'$GLOBALS[$GLOBALS[\'idx_lang\']] = array(
     294                                )
     295                                ."\n".$secure.'$GLOBALS[$GLOBALS[\'idx_lang\']] = array(
    292296'
    293 . $contenu
    294 .'
     297                                . $contenu
     298                                .'
    295299);
    296300
     
    299303                        );
    300304                        fclose($fd);
    301                        
     305
    302306                        // noter la langue et les traducteurs pour lang/module.xml
    303307                        $infos[$lang] = $people_unique = array();
     
    306310                        $infos[$lang]['modifs'] = $modifs;
    307311                        $infos[$lang]['relire'] = $relire;
    308                         if(defined('_ID_AUTEUR_SALVATORE') && intval(_ID_AUTEUR_SALVATORE) > 0)
     312                        if (defined('_ID_AUTEUR_SALVATORE') and intval(_ID_AUTEUR_SALVATORE) > 0) {
    309313                                $people_unique[] = _ID_AUTEUR_SALVATORE;
    310                         $s = sql_allfetsel('DISTINCT(traducteur)','spip_tradlangs','id_tradlang_module='.intval($module['id_tradlang_module']).' AND lang='.sql_quote($lang));
    311                         foreach ($s as $t){
    312                                 $traducteurs_lang = explode(',',$t['traducteur']);
    313                                 foreach($traducteurs_lang as $traducteur){
    314                                         if(!in_array($traducteur,$people_unique)){
    315                                                 if(is_numeric($traducteur) AND $id_auteur=intval($traducteur)){
    316                                                         $traducteur_supp['nom'] = extraire_multi(sql_getfetsel('nom','spip_auteurs','id_auteur='.$id_auteur));
    317                                                         $traducteur_supp['lien'] = url_absolue(generer_url_entite($id_auteur,'auteur'),$url_site);
    318                                                 }else if(trim(strlen($traducteur)) > 0){
     314                        }
     315                        $s = sql_allfetsel('DISTINCT(traducteur)', 'spip_tradlangs', 'id_tradlang_module = ' . intval($module['id_tradlang_module']) . ' AND lang = ' . sql_quote($lang));
     316                        foreach ($s as $t) {
     317                                $traducteurs_lang = explode(',', $t['traducteur']);
     318                                foreach ($traducteurs_lang as $traducteur) {
     319                                        if (!in_array($traducteur, $people_unique)) {
     320                                                if (is_numeric($traducteur) and $id_auteur = intval($traducteur)) {
     321                                                        $traducteur_supp['nom'] = extraire_multi(sql_getfetsel('nom', 'spip_auteurs', 'id_auteur = ' . $id_auteur));
     322                                                        $traducteur_supp['lien'] = url_absolue(generer_url_entite($id_auteur, 'auteur'), $url_site);
     323                                                } elseif (trim(strlen($traducteur)) > 0) {
    319324                                                        $traducteur_supp['nom'] = trim($traducteur);
    320325                                                        $traducteur_supp['lien'] = '';
    321326                                                }
    322                                                 if(isset($traducteur_supp['nom']))
     327                                                if (isset($traducteur_supp['nom'])) {
    323328                                                        $infos[$lang]['traducteurs'][strtolower($traducteur_supp['nom'])] = $traducteur_supp;
     329                                                }
    324330                                                unset($traducteur_supp);
    325331                                                $people_unique[] = $traducteur;
     
    329335                        unset($people_unique);
    330336
    331                         if(substr(exec("svn status "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php"),0,1) == '?'){
    332                                 if($module['limite_trad'] == 0)
    333                                         passthru("svn add "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php 2> /dev/null") ? trad_log("$log\n") : '';
    334                                 else if(!in_array($source[1],array('ecrire','spip','public'))){
    335                                         if((intval(($infos[$lang]['traduits']/$count_original)*100) > $seuil_export))
    336                                                 passthru("svn add "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php* 2> /dev/null") ? trad_log("$log\n") : '';
     337                        if (substr(exec('svn status '._SALVATORE_TMP.$source[1] . '/' . $source[1].'_' . $lang. '.php'), 0, 1) == '?') {
     338                                if ($module['limite_trad'] == 0) {
     339                                        passthru('svn add '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php 2> /dev/null") ? trad_log("$log\n") : '';
     340                                } elseif (!in_array($source[1], array('ecrire', 'spip', 'public'))) {
     341                                        if ((intval(($infos[$lang]['traduits']/$count_original)*100) > $seuil_export)) {
     342                                                passthru('svn add '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php* 2> /dev/null") ? trad_log("$log\n") : '';
     343                                        }
    337344                                }
    338345                        }
    339346                        /**
    340347                         * Le fichier a été modifié ou ajouté (svn status A ou M)
    341                          * 
     348                         *
    342349                         * On récupère la date de dernier changement avec svn info
    343350                         * On cherche toutes les dernières modifications dans la base de donnée
     
    345352                         * Si plusieurs auteurs le commiteur sera Salvatore
    346353                         */
    347                         if(in_array(substr(exec("svn status "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php"),0,1),array('A','M'))){
    348                                 $last_change = exec("env LC_MESSAGES=en_US.UTF-8 svn info "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php | awk '/^Last Changed Date/ { print $4 \" \" $5 }'");
    349                                 $auteur_versions = sql_allfetsel('id_auteur','spip_versions','objet="tradlang" AND date > '.sql_quote($last_change).' AND '.sql_in('id_objet',$tradlangs).' AND id_auteur != "-1" AND id_auteur !='.intval(_ID_AUTEUR_SALVATORE),"id_auteur");
    350                                 if(count($auteur_versions) == 1){
    351                                         $email = sql_getfetsel('email','spip_auteurs','id_auteur='.intval($auteur_versions[0]['id_auteur']));
    352                                         if($email)
     354                        if (in_array(substr(exec('svn status '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php"), 0, 1), array('A', 'M'))) {
     355                                $last_change = exec('env LC_MESSAGES=en_US.UTF-8 svn info '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php | awk '/^Last Changed Date/ { print $4 \" \" $5 }'");
     356                                $auteur_versions = sql_allfetsel('id_auteur', 'spip_versions', 'objet="tradlang" AND date > ' . sql_quote($last_change).' AND '.sql_in('id_objet', $tradlangs).' AND id_auteur != "-1" AND id_auteur !='.intval(_ID_AUTEUR_SALVATORE), 'id_auteur');
     357                                if (count($auteur_versions) == 1) {
     358                                        $email = sql_getfetsel('email', 'spip_auteurs', 'id_auteur = ' . intval($auteur_versions[0]['id_auteur']));
     359                                        if ($email) {
    353360                                                $commiteurs[$lang] = $email;
     361                                        }
    354362                                        trad_log("\nLe commiteur sera pour la langue $lang : ".$commiteurs[$lang]." \n");
    355363                                }
    356364                        }
    357365                }
    358        
     366
    359367                // ecrire lang/module.xml
    360368                $xml = "<traduction module=\"$source[1]\" gestionnaire=\"salvatore\" url=\"$url_site\" source=\"$source[0]\" reference=\"$source[2]\">\n";
    361                 foreach($infos as $lang => $info) {
     369                foreach ($infos as $lang => $info) {
    362370                        if (count($info['traducteurs'] > 0)) {
    363                                 $xml .= "       <langue code=\"$lang\" url=\"".parametre_url($url_trad,'lang_cible',$lang)."\" total=\"$count_original\" traduits=\"".$info['traduits']."\" relire=\"".$info['relire']."\" modifs=\"".$info['modifs']."\" nouveaux=\"".($count_original-($info['modifs']+$info['traduits']+$info['relire']))."\" pourcent=\"".number_format((($info['traduits']/$count_original)*100),2)."\">\n";
     371                                $xml .= "       <langue code=\"$lang\" url=\"".parametre_url($url_trad, 'lang_cible', $lang)."\" total=\"$count_original\" traduits=\"".$info['traduits'].'" relire="'.$info['relire'].'" modifs="' . $info['modifs'] . '" nouveaux="'.($count_original-($info['modifs']+$info['traduits']+$info['relire'])).'" pourcent="'.number_format((($info['traduits']/$count_original)*100), 2)."\">\n";
    364372                                ksort($info['traducteurs']);
    365373                                foreach ($info['traducteurs'] as $nom => $people) {
    366                                         $xml .= "               <traducteur nom=\"".entites_html($people['nom'])."\" lien=\"".entites_html($people['lien'])."\" />\n";
     374                                        $xml .= '               <traducteur nom="' . entites_html($people['nom']) . '" lien="' . entites_html($people['lien'])."\" />\n";
    367375                                }
    368376                                $xml .= "       </langue>\n";
    369                         } else
    370                                 $xml .= "       <langue code=\"$lang\" url=\"".parametre_url($url_trad,'lang_cible',$lang)."\" />\n";
     377                        } else {
     378                                $xml .= "       <langue code=\"$lang\" url=\"".parametre_url($url_trad, 'lang_cible', $lang)."\" />\n";
     379                        }
    371380                }
    372381                unset($traducteurs[$source[2]]);
    373382                $xml .= "</traduction>\n";
    374        
    375                 ecrire_fichier($tmp.$source[1]."/".$source[1].'.xml', $xml);
    376                
    377                 if(isset($liste_lang_non_exportees) && (count($liste_lang_non_exportees) > 0)){
    378                         $liste_lang_non_exportees_string = implode(', ',$liste_lang_non_exportees);
     383
     384                ecrire_fichier($tmp.$source[1].'/'.$source[1].'.xml', $xml);
     385
     386                if (isset($liste_lang_non_exportees) and (count($liste_lang_non_exportees) > 0)) {
     387                        $liste_lang_non_exportees_string = implode(', ', $liste_lang_non_exportees);
    379388                        trad_log("\nLes langues suivantes ne sont pas exportées car trop peu traduites:\n");
    380389                        trad_log("$liste_lang_non_exportees_string\n");
    381390                }
    382                 if(isset($liste_lang_supprimer) && (count($liste_lang_supprimer) > 0)){
    383                         $liste_lang_supprimer_string = implode(', ',$liste_lang_supprimer);
     391                if (isset($liste_lang_supprimer) and (count($liste_lang_supprimer) > 0)) {
     392                        $liste_lang_supprimer_string = implode(', ', $liste_lang_supprimer);
    384393                        trad_log("\nLes langues suivantes devraient être supprimées car trop peu traduites:\n");
    385394                        trad_log("$liste_lang_supprimer_string\n");
    386395                }
    387                 if($module['limite_trad'] == 0){
    388                         foreach($liste_lang as $lang){
    389                                 passthru("svn add "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php* 2> /dev/null") ? trad_log("$log\n") : '';
    390                         }
    391                 }
    392                 else if(!in_array($source[1],array('ecrire','spip','public'))){
     396                if ($module['limite_trad'] == 0) {
     397                        foreach ($liste_lang as $lang) {
     398                                passthru('svn add '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php* 2> /dev/null") ? trad_log("$log\n") : '';
     399                        }
     400                } elseif (!in_array($source[1], array('ecrire', 'spip', 'public'))) {
    393401                        trad_log('Limite trad = '.$seuil_export);
    394                         foreach($liste_lang as $lang){
    395                                 if( (intval(($infos[$lang]['traduits']/$count_original)*100) > $seuil_export)
    396                                         && (substr(exec("svn status "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php"),0,1) == '?')){
    397                                         passthru("svn add "._SALVATORE_TMP.$source[1]."/".$source[1]."_$lang.php* 2> /dev/null") ? trad_log("$log\n") : '';
    398                                 }
    399                         }
    400                 }
    401                 trad_log("\n".passthru("svn status "._SALVATORE_TMP.$source[1]."/")."\n");
    402                 if(strlen($message_commit) > 1 || count($commiteurs) > 0){
    403                         $fd = fopen($tmp.$source[1]."/message_commit.inc", 'w');
     402                        foreach ($liste_lang as $lang) {
     403                                if ((intval(($infos[$lang]['traduits']/$count_original)*100) > $seuil_export)
     404                                        and (substr(exec('svn status '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php"), 0, 1) == '?')) {
     405                                        passthru('svn add '._SALVATORE_TMP.$source[1].'/'.$source[1]."_$lang.php* 2> /dev/null") ? trad_log("$log\n") : '';
     406                                }
     407                        }
     408                }
     409                trad_log("\n".passthru('svn status '._SALVATORE_TMP.$source[1].'/')."\n");
     410                if (strlen($message_commit) > 1 || count($commiteurs) > 0) {
     411                        $fd = fopen($tmp.$source[1].'/message_commit.inc', 'w');
    404412                        # ecrire le fichier
    405                         fwrite($fd,
    406                         '<'.'?php
     413                        fwrite(
     414                                $fd,
     415                                '<'.'?php
    407416$message_commit = "'.$message_commit.'";
    408417
    409 $commiteurs = '.var_export($commiteurs,1).';
     418$commiteurs = '.var_export($commiteurs, 1).';
    410419
    411420?'.'>
     
    414423                        fclose($fd);
    415424                }
    416         }else
     425        } else {
    417426                trad_log("\n Ce module n'existe pas\n");
    418 
     427        }
    419428}
    420 
    421 ?>
  • _dev_/salvatore2/inc_tradlang.php

    r77237 r97013  
    2626
    2727// securite : en ligne de commande c tout
    28 if (isset($_SERVER['SERVER_NAME'])) die('en ligne de commande svp');;
     28if (isset($_SERVER['SERVER_NAME'])) {
     29        die('en ligne de commande svp');
     30}
    2931
    3032// modules demandes en ligne de commande
     
    3436ini_set('memory_limit', '50M');
    3537
    36 define('_DEBUG_TRAD_LANG',1); // undef si on ne veut pas de messages
     38define('_DEBUG_TRAD_LANG', 1); // undef si on ne veut pas de messages
    3739define('_SALVATORE', './');
    3840define('_SALVATORE_TRADUCTION', './traductions/');
    39 if (!defined('_DIR_RESTREINT_ABS')) define('_DIR_RESTREINT_ABS', '../ecrire/');
     41if (!defined('_DIR_RESTREINT_ABS')) {
     42        define('_DIR_RESTREINT_ABS', '../ecrire/');
     43}
    4044define('_DIR_RACINE', '../');
    4145
     
    5963
    6064define('_SALVATORE_TMP', _SALVATORE.'tmp/');
    61 if (!is_dir(_SALVATORE_TMP)) die ("\nErreur : le répertoire "._SALVATORE_TMP." n'existe pas\n\n");
     65if (!is_dir(_SALVATORE_TMP)) {
     66        die("\nErreur : le répertoire "._SALVATORE_TMP." n'existe pas\n\n");
     67}
    6268
    6369//
     
    6571// Construit une liste de modules avec pour chacun un tableau compose de : 0 chemin, 1 nom, 2 langue principale
    6672//
    67 function charger_fichier_traductions($chemin=_SALVATORE_TRADUCTION, $trad_list='traductions.txt') {
    68        
    69         if(!is_dir(_SALVATORE_TRADUCTION))
    70                 die("Le répertoire "._SALVATORE_TRADUCTION." n'existe pas !!!\n\n");
    71        
    72         if(!file_exists(_SALVATORE_TRADUCTION.$trad_list))
    73                 die("Le fichier "._SALVATORE_TRADUCTION."$trad_list n'existe pas !!!\n\n");
    74        
     73function charger_fichier_traductions($chemin = _SALVATORE_TRADUCTION, $trad_list = 'traductions.txt') {
     74
     75        if (!is_dir(_SALVATORE_TRADUCTION)) {
     76                die('Le répertoire ' . _SALVATORE_TRADUCTION . " n'existe pas !!!\n\n");
     77        }
     78
     79        if (!file_exists(_SALVATORE_TRADUCTION. $trad_list)) {
     80                die('Le fichier ' . _SALVATORE_TRADUCTION . "$trad_list n'existe pas !!!\n\n");
     81        }
     82
    7583        $contenu=file_get_contents($chemin.$trad_list);
    7684
    77         $contenu=preg_replace('/#.*/','',$contenu); // supprimer les commentaires
     85        $contenu=preg_replace('/#.*/', '', $contenu); // supprimer les commentaires
    7886
    7987        $tab=preg_split("/\r\n|\n\r|\n|\r/", $contenu);
     
    8290
    8391        foreach ($tab as $ligne) {
    84                 $liste = explode(";",trim($ligne));
     92                $liste = explode(';', trim($ligne));
    8593                if (!empty($liste[0])) {
    86                         if (!isset($liste[1]) OR empty($liste[1]))
    87                                 $liste[1] = preg_replace('#.*/(.*)$#','$1',$liste[0]);
    88                         if (!isset($liste[2]) OR empty($liste[2]))
     94                        if (!isset($liste[1]) or empty($liste[1])) {
     95                                $liste[1] = preg_replace('#.*/(.*)$#', '$1', $liste[0]);
     96                        }
     97                        if (!isset($liste[2]) or empty($liste[2])) {
    8998                                $liste[2] = 'fr';
    90                         if (!count($GLOBALS['modules']) OR in_array($liste[1], $GLOBALS['modules']))
     99                        }
     100                        if (!count($GLOBALS['modules']) or in_array($liste[1], $GLOBALS['modules'])) {
    91101                                $liste_trad[]=$liste;
     102                        }
    92103                }
    93104        }
     
    99110// Gere les logs
    100111//
    101 function trad_log($msg='') {
     112function trad_log($msg = '') {
    102113        static $cnt;
    103114        if (defined('_DEBUG_TRAD_LANG')) {
     
    111122} // trad_log
    112123
    113 function trad_sendmail($sujet = 'Erreur',$corps=''){
    114         if(defined('_EMAIL_ERREURS') && defined('_EMAIL_SALVATORE')){
    115                 $envoyer_mail = charger_fonction('envoyer_mail','inc');
     124function trad_sendmail($sujet = 'Erreur', $corps = '') {
     125        if (defined('_EMAIL_ERREURS') and defined('_EMAIL_SALVATORE')) {
     126                $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
    116127                $destinataire = _EMAIL_ERREURS;
    117128                $from = _EMAIL_SALVATORE;
     
    120131        }
    121132}
    122 ?>
  • _dev_/salvatore2/lecteur.php

    r91163 r97013  
    4141include_spip('inc/session');
    4242
    43 if(defined('_ID_AUTEUR_SALVATORE') && is_numeric(_ID_AUTEUR_SALVATORE))
     43if (defined('_ID_AUTEUR_SALVATORE') and is_numeric(_ID_AUTEUR_SALVATORE)) {
    4444        $GLOBALS['visiteur_session']['id_auteur'] = _ID_AUTEUR_SALVATORE;
     45}
    4546
    4647$url_site = $GLOBALS['meta']['adresse_site'];
     
    5354
    5455foreach ($liste_sources as $source) {
    55         trad_log("==== Module ".$source[1]." =======================================\n");
    56         $liste_fic_lang= glob($tmp.$source[1].'/'.$source[1]."_*.php");
     56        trad_log('==== Module '.$source[1]." =======================================\n");
     57        $liste_fic_lang= glob($tmp.$source[1] . '/' . $source[1] . '_*.php');
    5758        $import = true;
    5859        /**
     
    6061         * Si oui on empeche son import en le signifiant
    6162         */
    62         if(file_exists($xml = $tmp.$source[1].'/'.$source[1].'.xml')){
     63        if (file_exists($xml = $tmp.$source[1] . '/'.$source[1] . '.xml')) {
    6364                $xml_content = spip_xml_load($xml);
    64                 if(is_array($xml_content)){
    65                         spip_xml_match_nodes('/^traduction/',$xml_content,$matches);
     65                if (is_array($xml_content)) {
     66                        spip_xml_match_nodes('/^traduction/', $xml_content, $matches);
    6667                        $test = '<'.key($matches).'>';
    67                         $url = extraire_attribut($test,'url');
    68                         if($url && ($url != $url_site)){
     68                        $url = extraire_attribut($test, 'url');
     69                        if ($url && ($url != $url_site)) {
    6970                                $import = false;
    7071                                $sujet = 'Lecteur : Erreur sur '.$source[1];
    7172                                $corps = "\nErreur : import impossible, le fichier est traduit autre part : $url\n\n";
    72                                 trad_sendmail($sujet,$corps);
     73                                trad_sendmail($sujet, $corps);
    7374                                trad_log("\nErreur : import impossible, le fichier est traduit autre part : $url\n\n");
    7475                        }
    7576                }
    7677        }
    77         if($import){
     78        if ($import) {
    7879                /**
    7980                 * on doit absolument charger la langue principale en premier (a cause des MD5)
    80                  */ 
    81                 $fic_lang_principal=$tmp.$source[1].'/'.$source[1].'_'.$source[2].".php";
    82                
     81                 */
     82                $fic_lang_principal=$tmp.$source[1].'/'.$source[1].'_'.$source[2].'.php';
     83
    8384                /**
    8485                 * On regarde quelle est la date de dernière modification du fichier de langue principale
    8586                 */
    8687                $last_update = filemtime($fic_lang_principal);
    87                 if ($last_update > strtotime('-1 day')){
     88                if ($last_update > strtotime('-1 day')) {
    8889                        $priorite = '';
    8990                        $modifs = 0;
    90                         if(defined('_TRAD_PRIORITE_DEFAUT'))
     91                        if (defined('_TRAD_PRIORITE_DEFAUT')) {
    9192                                $priorite = _TRAD_PRIORITE_DEFAUT;
    92                         if (in_array($fic_lang_principal,$liste_fic_lang)) {
    93                                 $module = sql_fetsel('id_tradlang_module,lang_mere','spip_tradlang_modules','module='.sql_quote($source[1]));
     93                        }
     94                        if (in_array($fic_lang_principal, $liste_fic_lang)) {
     95                                $module = sql_fetsel('id_tradlang_module,lang_mere', 'spip_tradlang_modules', 'module = '.sql_quote($source[1]));
    9496                                $id_module = $module['id_tradlang_module'];
    9597                                /**
    9698                                 * Si le module n'existe pas... on le crée
    9799                                 */
    98                                 if(!intval($id_module))
    99                                         $id_module = sql_insertq('spip_tradlang_modules',array('module'=>$source[1],'nom_mod'=>$source[1],'lang_prefix'=>$source[1],'lang_mere'=>$source[2],'priorite' => $priorite));
    100                                 /**
    101                                  * Si la langue mere a changée, on la modifie
    102                                  */
    103                                 else if($module['lang_mere'] != $source[2])
    104                                         sql_updateq('spip_tradlang_modules',array('lang_mere'=>$source[2]),'id_tradlang_module='.intval($id_module));
     100                                if (!intval($id_module)) {
     101                                        $id_module = sql_insertq('spip_tradlang_modules', array('module' => $source[1], 'nom_mod' => $source[1], 'lang_prefix' => $source[1], 'lang_mere' => $source[2], 'priorite' => $priorite));
     102                                } elseif ($module['lang_mere'] != $source[2]) {
     103                                        /**
     104                                         * Si la langue mere a changée, on la modifie
     105                                         */
     106                                        sql_updateq('spip_tradlang_modules', array('lang_mere' => $source[2]), 'id_tradlang_module = ' . intval($id_module));
     107                                }
     108
    105109                                /**
    106110                                 * Si $id_module n'est pas un entier => on tue le script
    107111                                 */
    108                                 if(!intval($id_module)){
    109                                         $sujet = 'Lecteur : Erreur sur '.$source[1];
     112                                if (!intval($id_module)) {
     113                                        $sujet = 'Lecteur : Erreur sur ' . $source[1];
    110114                                        $corps = "Le module n'est pas un entier";
    111                                         trad_sendmail($sujet,$corps);
     115                                        trad_sendmail($sujet, $corps);
    112116                                        $die_message = "Le module n'est pas un entier";
    113117                                        break;
    114118                                }
    115119                                $liste_id_orig = array();
    116                                 $modifs = import_module_spip($source,$fic_lang_principal,$liste_id_orig,1,$id_module);
     120                                $modifs = import_module_spip($source, $fic_lang_principal, $liste_id_orig, 1, $id_module);
    117121                                $langues_a_jour = array();
    118                                 foreach ($liste_fic_lang as $f){
    119                                         if ($f != $fic_lang_principal){
    120                                                 import_module_spip($source,$f,$liste_id_orig,0,$id_module);
    121                                                 $fich = str_replace($source[1],'',basename($f,".php"));
    122                                                 list(,$lang) = explode("_",$fich,2);
    123                                                 if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')){
    124                                                         inc_tradlang_verifier_langue_base_dist($source[1],$lang);
    125                                                         trad_log("|-- Synchro de la langue ".$lang." pour le module ".$source[1]."\n");
    126                                                 }else if (!function_exists('inc_tradlang_verifier_langue_base_dist'))
     122                                foreach ($liste_fic_lang as $f) {
     123                                        if ($f != $fic_lang_principal) {
     124                                                import_module_spip($source, $f, $liste_id_orig, 0, $id_module);
     125                                                $fich = str_replace($source[1], '', basename($f, '.php'));
     126                                                list(,$lang) = explode('_', $fich, 2);
     127                                                if (($modifs > 0) and function_exists('inc_tradlang_verifier_langue_base_dist')) {
     128                                                        inc_tradlang_verifier_langue_base_dist($source[1], $lang);
     129                                                        trad_log('|-- Synchro de la langue ' . $lang . ' pour le module ' . $source[1]."\n");
     130                                                } elseif (!function_exists('inc_tradlang_verifier_langue_base_dist')) {
    127131                                                        trad_log("|-- Fonction de synchro inexistante\n");
     132                                                }
    128133                                                $langues_a_jour[] = $lang;
    129134                                        }
     
    133138                                 * s'il y a eu au moins une modif et que l'on peut faire la synchro
    134139                                 */
    135                                 if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')){
    136                                         $langues_pas_a_jour = sql_allfetsel('lang','spip_tradlangs','id_tradlang_module='.intval($id_module).' AND '.sql_in('lang',$langues_a_jour,'NOT'),'lang');
    137                                         foreach($langues_pas_a_jour as $langue_a_jour){
    138                                                 inc_tradlang_verifier_langue_base_dist($source[1],$langue_a_jour['lang']);
    139                                                 trad_log("|-- Synchro de la langue non exportée en fichier ".$langue_a_jour['lang']." pour le module ".$source[1]."\n");
     140                                if (($modifs > 0) and function_exists('inc_tradlang_verifier_langue_base_dist')) {
     141                                        $langues_pas_a_jour = sql_allfetsel('lang', 'spip_tradlangs', 'id_tradlang_module = ' . intval($id_module) . ' AND ' . sql_in('lang', $langues_a_jour, 'NOT'), 'lang');
     142                                        foreach ($langues_pas_a_jour as $langue_a_jour) {
     143                                                inc_tradlang_verifier_langue_base_dist($source[1], $langue_a_jour['lang']);
     144                                                trad_log('|-- Synchro de la langue non exportée en fichier '. $langue_a_jour['lang'] . ' pour le module ' . $source[1]."\n");
    140145                                        }
    141146                                }
     
    143148                                trad_log("|\n");
    144149                                unset($langues_a_jour,$langues_pas_a_jour);
    145                         }
    146                         else {
     150                        } else {
    147151                                $sujet = 'Lecteur : Erreur sur '.$source[1];
    148                                 $corps = "|-- Pas de fichier lang ".$source[2]." pour le module ".$source[1]." : import impossible pour ce module\n";
    149                                 trad_sendmail($sujet,$corps);
    150                                 $die_message = "|-- Pas de fichier lang ".$source[2]." pour le module ".$source[1]." : import impossible pour ce module\n";
     152                                $corps = '|-- Pas de fichier lang ' . $source[2] . ' pour le module ' . $source[1] . " : import impossible pour ce module\n";
     153                                trad_sendmail($sujet, $corps);
     154                                $die_message = '|-- Pas de fichier lang '.$source[2] . ' pour le module ' . $source[1] . " : import impossible pour ce module\n";
    151155                                break;
    152156                        }
    153                 }else{
     157                } else {
    154158                        trad_log("On ne modifie rien car l'original a été modifié il y a longtemps\n");
    155159                        /**
     
    158162                         */
    159163                        $langues = $langues_a_ajouter = array();
    160                         $langues_en_base = sql_allfetsel('lang','spip_tradlangs','module='.sql_quote($source[1]),'lang');
    161                         foreach($langues_en_base as $langue){
     164                        $langues_en_base = sql_allfetsel('lang', 'spip_tradlangs', 'module = ' . sql_quote($source[1]), 'lang');
     165                        foreach ($langues_en_base as $langue) {
    162166                                $langues[] = $langue['lang'];
    163167                        }
    164                         foreach ($liste_fic_lang as $f){
    165                                 $fich = str_replace($source[1],'',basename($f,".php"));
    166                                 list(,$lang) = explode("_",$fich,2);
    167                                
    168                                 if (!in_array($lang,$langues)){
    169                                         $langues_a_ajouter[] = array('lang'=>$lang,'fichier'=>$f);
    170                                 }
    171                         }
    172                         if(count($langues_a_ajouter) > 0){
    173                                 trad_log("On a ".count($langues_a_ajouter)." nouvelle(s) langue(s) à insérer \n");
    174                                 $module = sql_fetsel('*','spip_tradlang_modules','module='.sql_quote($source[1]));
     168                        foreach ($liste_fic_lang as $f) {
     169                                $fich = str_replace($source[1], '', basename($f, '.php'));
     170                                list(,$lang) = explode('_', $fich, 2);
     171
     172                                if (!in_array($lang, $langues)) {
     173                                        $langues_a_ajouter[] = array('lang' => $lang, 'fichier' => $f);
     174                                }
     175                        }
     176                        if (count($langues_a_ajouter) > 0) {
     177                                trad_log('On a ' . count($langues_a_ajouter) . " nouvelle(s) langue(s) à insérer \n");
     178                                $module = sql_fetsel('*', 'spip_tradlang_modules', 'module = ' . sql_quote($source[1]));
    175179                                $id_module = $module['id_tradlang_module'];
    176180                                $liste_id_orig = array();
    177                                 $modifs = import_module_spip($source,$fic_lang_principal,$liste_id_orig,1,$id_module);
    178                                 foreach($langues_a_ajouter as $fichier){
    179                                         import_module_spip($source,$fichier['fichier'],$liste_id_orig,0,$id_module);
    180                                         if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist'))
    181                                                 inc_tradlang_verifier_langue_base_dist($source[1],$lang);
     181                                $modifs = import_module_spip($source, $fic_lang_principal, $liste_id_orig, 1, $id_module);
     182                                foreach ($langues_a_ajouter as $fichier) {
     183                                        import_module_spip($source, $fichier['fichier'], $liste_id_orig, 0, $id_module);
     184                                        if (($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')) {
     185                                                inc_tradlang_verifier_langue_base_dist($source[1], $lang);
     186                                        }
    182187                                }
    183188                        }
     
    185190                }
    186191                // Mise à jour des bilans
    187                 if(function_exists('inc_tradlang_verifier_bilans_dist')){
    188                         trad_log("Création ou MAJ des bilans de ".$source[1]."\n\n");
    189                         inc_tradlang_verifier_bilans_dist($source[1],$source[2],false);
     192                if (function_exists('inc_tradlang_verifier_bilans_dist')) {
     193                        trad_log('Création ou MAJ des bilans de ' . $source[1] . "\n\n");
     194                        inc_tradlang_verifier_bilans_dist($source[1], $source[2], false);
    190195                }
    191196        }
    192197}
    193198
    194 if($invalider){
     199if ($invalider) {
    195200        include_spip('inc/invalideur');
    196201        suivre_invalideur('1');
    197202}
    198203
    199 if($die_message){
     204if ($die_message) {
    200205        die("$die_message");
    201206}
     
    204209/**
    205210 * Import d'un fichier de langue dans la base
    206  * 
     211 *
    207212 * @param array $source
    208213 * @param string $module
     
    210215 * @param int $orig 1 signifie que c'est la langue originale
    211216 * @param int $id_module
    212  * @return string 
     217 * @return string
    213218 */
    214 function import_module_spip($source=array(),$module='',&$liste_id_orig,$orig=null,$id_module) {
    215         trad_log( "!\n+ Import de $module\n");
     219function import_module_spip($source = array(), $module = '', &$liste_id_orig, $orig = null, $id_module) {
     220        trad_log("!\n+ Import de $module\n");
    216221        $memtrad = $GLOBALS['idx_lang'] = 'i18n_'.crc32($module).'_tmp';
    217222        $GLOBALS[$GLOBALS['idx_lang']] = null;
     
    225230                $sujet = 'Lecteur : Erreur sur '.$module;
    226231                $corps = "Erreur, fichier $module mal forme\n";
    227                 trad_sendmail($sujet,$corps);
     232                trad_sendmail($sujet, $corps);
    228233                return false;
    229234        }
     
    232237         * Nettoyer le contenu de ses <MODIF>,<NEW> et <PLUS_UTILISE>
    233238         * Ces chaines sont utilisées comme statut
    234          */ 
     239         */
    235240        $status = array();
    236241
    237         foreach($str_lang as $id=>$v) {
    238                 if(1==$orig)
     242        foreach ($str_lang as $id => $v) {
     243                if (1 == $orig) {
    239244                        $status[$id] = 'OK';
    240                 else if (preg_match(',^<(MODIF|NEW|PLUS_UTILISE)>,US', $v, $r)) {
     245                } else if (preg_match(',^<(MODIF|NEW|PLUS_UTILISE)>,US', $v, $r)) {
    241246                        $str_lang[$id] = preg_replace(',^(<(MODIF|NEW|PLUS_UTILISE)>)+,US', '', $v);
    242247                        $status[$id] = $r[1];
    243                 }
    244                 else   
     248                } else {
    245249                        $status[$id] = 'OK';
     250                }
    246251        }
    247252
    248         $fich = str_replace($source[1],'',basename($module,".php"));
     253        $fich = str_replace($source[1], '', basename($module, '.php'));
    249254        $mod = $source[1];
    250         list(,$lang)=explode("_",$fich,2);
    251        
    252         if(!array_key_exists($lang,$GLOBALS['codes_langues']))
    253                 trad_log("!-- Attention : La langue $lang n'existe pas dans les langues possibles - $mod \n"); 
    254         else{
    255                 if (1==$orig)
     255        list(,$lang) = explode('_', $fich, 2);
     256
     257        if (!array_key_exists($lang, $GLOBALS['codes_langues'])) {
     258                trad_log("!-- Attention : La langue $lang n'existe pas dans les langues possibles - $mod \n");
     259        } else {
     260                if (1==$orig) {
    256261                        $res = spip_query("SELECT id, str, md5 FROM spip_tradlangs WHERE module='".$source[1]."' and lang='".$lang."' AND statut != 'attic' ");
    257                 else
     262                } else {
    258263                        $res = spip_query("SELECT id, str, md5 FROM spip_tradlangs WHERE module='".$source[1]."' and lang='".$lang."' and statut!='MODIF' ");
     264                }
    259265                $nb = sql_count($res);
    260                 if ($nb > 0)
     266                if ($nb > 0) {
    261267                        trad_log("!-- Fichier de langue $lang du module $mod deja inclus dans la base\n");
    262        
     268                }
     269
    263270                $ajoutees = $inchangees = $supprimees = $modifiees = $ignorees = $recuperees = 0;
    264                
     271
    265272                /**
    266273                 * Si la langue est deja dans la base, on ne l'ecrase que s'il s'agit
    267274                 * de la langue source
    268275                 */
    269                 if ($nb == 0 OR $orig == 1) {
    270                         $typo = (in_array($lang,array('eo','fr','cpf')) || strncmp($lang, 'fr_', 3)==0) ? 'fr' : 'en';
     276                if ($nb == 0 or $orig == 1) {
     277                        $typo = (in_array($lang, array('eo','fr','cpf')) || strncmp($lang, 'fr_', 3) == 0) ? 'fr' : 'en';
    271278                        $typographie = charger_fonction($typo, 'typographie');
    272279                        // La liste de ce qui existe deja
    273280                        $existant = $str_existant = array();
    274                         while ($t = spip_fetch_array($res)){
     281                        while ($t = spip_fetch_array($res)) {
    275282                                $existant[$t['id']] = $t['md5'];
    276283                                $str_existant[$t['id']] = $t['str'];
    277284                        }
    278        
    279                         $bigwhere = "module=".sql_quote($source[1])." and lang=".sql_quote($lang);
    280        
     285
     286                        $bigwhere = 'module = ' . sql_quote($source[1]) . ' AND lang = '.sql_quote($lang);
     287
    281288                        include_spip('action/editer_tradlang');
    282289                        // Dans ce qui arrive, il y a 4 cas :
    283                         foreach (array_unique(array_merge(
    284                                 array_keys($existant), array_keys($str_lang)
    285                         )) as $id) {
    286                                 $comm=(isset($comm_fic_lang[$id])) ? $comm_fic_lang[$id] : "";
     290                        foreach (array_unique(array_merge(array_keys($existant), array_keys($str_lang))) as $id) {
     291                                $comm=(isset($comm_fic_lang[$id])) ? $comm_fic_lang[$id] : '';
    287292                                // * chaine neuve
    288                                 if (isset($str_lang[$id])
    289                                         AND !isset($existant[$id])) {
    290                                         if ($orig)
     293                                if (isset($str_lang[$id]) and !isset($existant[$id])) {
     294                                        if ($orig) {
    291295                                                $md5 = md5($str_lang[$id]);
    292                                         else if (!isset($liste_id_orig[$id])) {
     296                                        } else if (!isset($liste_id_orig[$id])) {
    293297                                                trad_log("!-- Chaine $id inconnue dans la langue principale\n");
    294298                                                $ignorees++;
    295                                         }else
     299                                        } else {
    296300                                                $md5 = $liste_id_orig[$id];
    297        
    298                                         if (isset($md5)){
     301                                        }
     302
     303                                        if (isset($md5)) {
    299304                                                /**
    300305                                                 * On enlève les sauts de lignes windows pour des sauts de ligne linux
    301306                                                 */
    302                                                  
     307
    303308                                                $str_lang[$id] = str_replace("\r\n", "\n", $str_lang[$id]);
    304                                                
     309
    305310                                                /**
    306311                                                 * protection dans les balises genre <a href="..." ou <img src="..."
     
    316321                                                        }
    317322                                                }
    318                                                
     323
    319324                                                /**
    320325                                                 * Protéger le contenu des balises <html> <code> <cadre> <frame> <tt> <pre>
    321326                                                 */
    322327                                                define('_PROTEGE_BLOCS_HTML', ',<(html|code|cadre|pre|tt)(\s[^>]*)?>(.*)</\1>,UimsS');
    323                                                 if ((strpos($str_lang[$id],"<")!==false) && preg_match_all(_PROTEGE_BLOCS_HTML, $str_lang[$id], $matches, PREG_SET_ORDER)) {
     328                                                if ((strpos($str_lang[$id], '<') !== false) and preg_match_all(_PROTEGE_BLOCS_HTML, $str_lang[$id], $matches, PREG_SET_ORDER)) {
    324329                                                        foreach ($matches as $reg) {
    325330                                                                $insert = $reg[0];
     
    330335                                                        }
    331336                                                }
    332                                                
     337
    333338                                                /**
    334339                                                 * On applique la typographie de la langue
    335340                                                 */
    336341                                                $str_lang[$id] = $typographie($str_lang[$id]);
    337                                                
     342
    338343                                                /**
    339344                                                 * On remet les caractères normaux sur les caractères illégaux
    340345                                                 */
    341346                                                $str_lang[$id] = strtr($str_lang[$id], _TYPO_PROTECTEUR, _TYPO_PROTEGER);
    342                                                
    343                                                 $str_lang[$id] = unicode_to_utf_8(
    344                                                         html_entity_decode(
    345                                                                 preg_replace('/&([lg]t;)/S', '&amp;\1',$str_lang[$id]),
    346                                                                 ENT_NOQUOTES, 'utf-8')
    347                                                 );
    348                                                
     347
     348                                                $str_lang[$id] = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str_lang[$id]), ENT_NOQUOTES, 'utf-8'));
     349
    349350                                                /**
    350351                                                 * Calcul du nouveau md5
    351352                                                 */
    352353                                                $md5 = md5($str_lang[$id]);
    353                                                
     354
    354355                                                /**
    355356                                                 * Si le commentaire est un statut et que l'on ne traite pas le fichier de langue mère
    356357                                                 * On vire le commentaire et met son contenu comme statut
    357358                                                 */
    358                                                 if(in_array($comm,array('NEW','OK','MODIF','MODI')) && $orig != 1){
    359                                                         if($comm == 'MODI')
     359                                                if (in_array($comm, array('NEW','OK','MODIF','MODI')) && $orig != 1) {
     360                                                        if ($comm == 'MODI') {
    360361                                                                $comm = 'MODIF';
     362                                                        }
    361363                                                        $status[$id] = $comm;
    362364                                                        $comm = '';
    363                                                 }
    364                                                 else if ((strlen($comm) > 1) && preg_match("/(.*?)(NEW|OK|MODIF)(.*?)/",$comm,$matches)) {
    365                                                         if($orig != 1)
     365                                                } else if ((strlen($comm) > 1) && preg_match('/(.*?)(NEW|OK|MODIF)(.*?)/', $comm, $matches)) {
     366                                                        if ($orig != 1) {
    366367                                                                $status[$id] = $matches[2];
    367                                                         $comm = preg_replace("/(NEW|OK|MODIF)/",'',$comm);
    368                                                 }
    369                                                
     368                                                        }
     369                                                        $comm = preg_replace('/(NEW|OK|MODIF)/', '', $comm);
     370                                                }
     371
    370372                                                /**
    371373                                                 * On génère un titre
    372374                                                 */
    373375                                                $titre = $id.' : '.$source[1].' - '.$lang;
    374                                                
     376
    375377                                                $data = array('id_tradlang_module' => $id_module,'titre' => $titre,'module' =>$source[1],'lang' =>$lang,'id'=>$id,'str'=>$str_lang[$id],'comm' => $comm,'md5'=>$md5,'statut'=>$status[$id]);
    376                                                 $id_tradlang = sql_insertq('spip_tradlangs',$data);
    377                                                
     378                                                $id_tradlang = sql_insertq('spip_tradlangs', $data);
     379
    378380                                                /**
    379381                                                 * L'identifiant de la chaîne de langue a peut être déjà été utilisé puis mis au grenier
    380382                                                 * On le récupère donc
    381383                                                 */
    382                                                 if(!$id_tradlang){
    383                                                         $tradlang = sql_fetsel('*','spip_tradlangs','id='.sql_quote($id).' AND module='.sql_quote($source[1]). 'AND lang='.sql_quote($lang).' AND statut='.sql_quote('attic'));
    384                                                         if(is_array($tradlang)){
     384                                                if (!$id_tradlang) {
     385                                                        $tradlang = sql_fetsel('*', 'spip_tradlangs', 'id = ' . sql_quote($id) . ' AND module = ' . sql_quote($source[1]) . 'AND lang = ' . sql_quote($lang) . ' AND statut = ' . sql_quote('attic'));
     386                                                        if (is_array($tradlang)) {
    385387                                                                $id_tradlang = intval($tradlang['id_tradlang']);
    386388                                                                trad_log("\n Recuperation d'une chaine de statut ATTIC \n");
    387                                                                 sql_updateq('spip_tradlangs',$data,'id_tradlang='.$id_tradlang);
    388                                                                 $trads = sql_allfetsel('id_tradlang','spip_tradlangs','id='.sql_quote($id).' AND module='.sql_quote($source[1]). 'AND lang !='.sql_quote($lang).' AND statut='.sql_quote('attic'));
     389                                                                sql_updateq('spip_tradlangs', $data, 'id_tradlang='.$id_tradlang);
     390                                                                $trads = sql_allfetsel('id_tradlang', 'spip_tradlangs', 'id = ' . sql_quote($id) . ' AND module = ' . sql_quote($source[1]) . 'AND lang != ' . sql_quote($lang).' AND statut = ' . sql_quote('attic'));
    389391                                                                $maj = array('statut' => 'MODIF');
    390                                                                 foreach($trads as $trad){
     392                                                                foreach ($trads as $trad) {
    391393                                                                        trad_log("\n Changement d'une trad dans ATTIC \n");
    392                                                                         sql_updateq('spip_tradlangs',$maj,'id_tradlang='.intval($trad['id_tradlang']));
     394                                                                        sql_updateq('spip_tradlangs', $maj, 'id_tradlang = ' . intval($trad['id_tradlang']));
    393395                                                                }
    394396                                                                $recuperees++;
    395397                                                        }
    396398                                                }
    397                                                
     399
    398400                                                /**
    399401                                                 * Vérifier si une autre chaîne de langue était identique (str == str)
    400                                                  * 
     402                                                 *
    401403                                                 * Si oui, on sélectionne toutes les occurences existantes dans les autres langues et on les duplique
    402404                                                 */
    403                                                 $identique_module = sql_getfetsel('id','spip_tradlangs',"module =".sql_quote($source[1]). 'AND lang='.sql_quote($lang).' AND str='.sql_quote($str_lang[$id]));
    404                                                 if($identique_module){
    405                                                         trad_log("La nouvelle chaine est une chaine dupliquée : ".$identique_module."\n");
    406                                                         $chaines_a_dupliquer = sql_allfetsel('*','spip_tradlangs','id='.sql_quote($identique_module).' AND id_tradlang_module ='.intval($id_module).' AND lang != '.sql_quote($lang));
    407                                                         foreach($chaines_a_dupliquer as $chaine){
     405                                                $identique_module = sql_getfetsel('id', 'spip_tradlangs', 'module = ' . sql_quote($source[1]) . ' AND lang = ' . sql_quote($lang) . ' AND str = '.sql_quote($str_lang[$id]));
     406                                                if ($identique_module) {
     407                                                        trad_log('La nouvelle chaine est une chaine dupliquée : '.$identique_module."\n");
     408                                                        $chaines_a_dupliquer = sql_allfetsel('*', 'spip_tradlangs', 'id = '.sql_quote($identique_module) . ' AND id_tradlang_module = ' . intval($id_module) . ' AND lang != '.sql_quote($lang));
     409                                                        foreach ($chaines_a_dupliquer as $chaine) {
    408410                                                                unset($chaine['id_tradlang']);
    409411                                                                unset($chaine['maj']);
     
    412414                                                                $chaine['md5'] = md5($chaine['str']);
    413415                                                                $chaine['date_modif'] = date('Y-m-d H:i:s');
    414                                                                 if($chaine['statut'] == 'attic')
     416                                                                if ($chaine['statut'] == 'attic') {
    415417                                                                        $chaine['statut'] = 'NEW';
    416                                                                 $nouvelle_chaine = sql_insertq('spip_tradlangs',$chaine);
    417                                                                 trad_log("Ajout de la version ".$chaine['lang']." - ".$nouvelle_chaine."\n");
     418                                                                }
     419                                                                $nouvelle_chaine = sql_insertq('spip_tradlangs', $chaine);
     420                                                                trad_log('Ajout de la version ' . $chaine['lang'] . ' - ' . $nouvelle_chaine . "\n");
    418421                                                        }
    419422                                                }
    420423                                                $ajoutees++;
    421424                                        }
    422                                 }
    423                                 // * chaine existante
    424                                 else if (isset($str_lang[$id]) AND isset($existant[$id])){
     425                                } elseif (isset($str_lang[$id]) and isset($existant[$id])) {
     426                                        // * chaine existante
    425427                                        // * identique ? => NOOP
    426428                                        /**
     
    428430                                         */
    429431                                        $str_lang[$id] = str_replace("\r\n", "\n", $str_lang[$id]);
    430                                        
     432
    431433                                        /**
    432434                                         * protection dans les balises genre <a href="..." ou <img src="..."
     
    442444                                                }
    443445                                        }
    444                                        
     446
    445447                                        /**
    446448                                         * Protéger le contenu des balises <html> <code> <cadre> <frame> <tt> <pre>
    447449                                         */
    448450                                        define('_PROTEGE_BLOCS_HTML', ',<(html|code|cadre|pre|tt)(\s[^>]*)?>(.*)</\1>,UimsS');
    449                                         if ((strpos($str_lang[$id],"<")!==false) && preg_match_all(_PROTEGE_BLOCS_HTML, $str_lang[$id], $matches, PREG_SET_ORDER)) {
     451                                        if ((strpos($str_lang[$id], '<') !== false) and preg_match_all(_PROTEGE_BLOCS_HTML, $str_lang[$id], $matches, PREG_SET_ORDER)) {
    450452                                                foreach ($matches as $reg) {
    451453                                                        $insert = $reg[0];
     
    456458                                                }
    457459                                        }
    458                                        
     460
    459461                                        /**
    460462                                         * On applique la typographie de la langue
    461463                                         */
    462464                                        $str_lang[$id] = $typographie($str_lang[$id]);
    463                                        
     465
    464466                                        /**
    465467                                         * On remet les caractères normaux sur les caractères illégaux
    466468                                         */
    467469                                        $str_lang[$id] = strtr($str_lang[$id], _TYPO_PROTECTEUR, _TYPO_PROTEGER);
    468                                        
    469                                         $str_lang[$id] = unicode_to_utf_8(
    470                                                 html_entity_decode(
    471                                                         preg_replace('/&([lg]t;)/S', '&amp;\1',$str_lang[$id]),
    472                                                         ENT_NOQUOTES, 'utf-8')
    473                                         );
    474                                        
     470
     471                                        $str_lang[$id] = unicode_to_utf_8(html_entity_decode(preg_replace('/&([lg]t;)/S', '&amp;\1', $str_lang[$id]), ENT_NOQUOTES, 'utf-8'));
     472
    475473                                        /**
    476474                                         * Calcul du nouveau md5
    477475                                         */
    478476                                        $md5 = md5($str_lang[$id]);
    479                                         if ($md5 == $existant[$id])
     477                                        if ($md5 == $existant[$id]) {
    480478                                                $inchangees++;
    481                                         // * modifiee ? => UPDATE
    482                                         else {
    483                                                 trad_log(md5($str_lang[$id])." !- ".md5($str_existant[$id])."\n");
     479                                        } else {
     480                                                // * modifiee ? => UPDATE
     481                                                trad_log(md5($str_lang[$id]) . ' !- ' . md5($str_existant[$id])."\n");
    484482                                                // modifier la chaine
    485483                                                $modifs = array(
     
    489487                                                        'comm' => $comm,
    490488                                                );
    491                                                 $id_tradlang = sql_getfetsel('id_tradlang','spip_tradlangs',"$bigwhere AND id=".sql_quote($id));
    492                                                 $test = tradlang_set($id_tradlang,$modifs);
     489                                                $id_tradlang = sql_getfetsel('id_tradlang', 'spip_tradlangs', "$bigwhere AND id = " . sql_quote($id));
     490                                                $test = tradlang_set($id_tradlang, $modifs);
    493491
    494492                                                /**
    495493                                                 * signaler le statut MODIF de ses traductions OK
    496494                                                 * update des str de ses traductions NEW
    497                                                  */ 
    498                                                 if ($orig && ($orig != 0))
    499                                                         spip_query("UPDATE spip_tradlangs SET statut='MODIF'
    500                                                                 WHERE module='".$source[1]
     495                                                 */
     496                                                if ($orig and ($orig != 0)) {
     497                                                        spip_query(
     498                                                                "UPDATE spip_tradlangs SET statut='MODIF' WHERE module='".$source[1]
    501499                                                                ."' AND id="._q($id)
    502                                                                 ." AND md5!="._q($md5)
    503                                                                 ." AND lang!="._q($lang)
     500                                                                .' AND md5 != ' . _q($md5)
     501                                                                .' AND lang != ' . _q($lang)
    504502                                                                ." AND statut!='NEW'"
    505503                                                        );
    506                                                         spip_query("UPDATE spip_tradlangs SET str=".sql_quote($str_lang[$id])."
    507                                                                 WHERE module='".$source[1]
    508                                                                 ."' AND id="._q($id)
    509                                                                 ." AND md5!="._q($md5)
    510                                                                 ." AND lang!="._q($lang)
    511                                                                 ." AND statut = 'NEW'"
    512                                                         );
     504                                                }
     505                                                spip_query(
     506                                                        'UPDATE spip_tradlangs SET str = ' .sql_quote($str_lang[$id])."
     507                                                        WHERE module='".$source[1]
     508                                                        ."' AND id="._q($id)
     509                                                        .' AND md5 != '._q($md5)
     510                                                        .' AND lang != '._q($lang)
     511                                                        ." AND statut = 'NEW'"
     512                                                );
    513513                                                $modifiees++;
    514514                                        }
    515                                 }
    516                                 // * chaine supprimee
    517                                 else if (!isset($str_lang[$id]) AND isset($existant[$id])){
     515                                } elseif (!isset($str_lang[$id]) and isset($existant[$id])) {
     516                                        // * chaine supprimee
    518517                                        // mettre au grenier
    519                                         spip_query("UPDATE spip_tradlangs SET statut='attic' WHERE id="._q($id)." AND module="._q($source[1]));
     518                                        spip_query("UPDATE spip_tradlangs SET statut='attic' WHERE id="._q($id).' AND module = ' . _q($source[1]));
    520519                                        $supprimees++;
    521520                                }
    522                                
    523                                 if ($orig AND isset($str_lang[$id]))
     521
     522                                if ($orig and isset($str_lang[$id])) {
    524523                                        $liste_id_orig[$id] = md5($str_lang[$id]);
    525                         }
    526                         trad_log("!-- module ".$source[1].", $lang : $modifiees modifiees, $ajoutees ajoutees, $supprimees supprimees, $recuperees recuperees, $ignorees ignorees, $inchangees inchangees\n");
     524                                }
     525                        }
     526                        trad_log('!-- module ' . $source[1] . ", $lang : $modifiees modifiees, $ajoutees ajoutees, $supprimees supprimees, $recuperees recuperees, $ignorees ignorees, $inchangees inchangees\n");
    527527                }
    528528        }
     
    534534 * Chargement des commentaires de fichier de langue
    535535 * Le fichier est chargé en mode texte pour récupérer les commentaires dans lesquels sont situés les statuts
    536  * 
     536 *
    537537 * @param string $f Le chemin du fichier de langue
    538538 * @return array $liste_trad Un tableau id/chaine
     
    542542        $contenu=file_get_contents($f);
    543543
    544         $tab=preg_split("/\r\n|\n\r|;\n|\n\/\/|\(\n|\n\);\n|\'\,\n|\n[\s\t]*(\')|\/\/[\s\t][0-9A-Z]\n[\s\t](\')/", $contenu,'-1',PREG_SPLIT_NO_EMPTY);
     544        $tab=preg_split("/\r\n|\n\r|;\n|\n\/\/|\(\n|\n\);\n|\'\,\n|\n[\s\t]*(\')|\/\/[\s\t][0-9A-Z]\n[\s\t](\')/", $contenu, '-1', PREG_SPLIT_NO_EMPTY);
    545545
    546546        $liste_trad=array();
    547547        reset($tab);
    548        
    549         while (list(,$ligne) = each($tab)){
    550                 $ligne = str_replace("\'",'',$ligne);
     548
     549        while (list(,$ligne) = each($tab)) {
     550                $ligne = str_replace("\'", '', $ligne);
    551551                if (strlen($ligne)>0) {
    552                         if (preg_match("/(.*?)\'[\s\t]*=>[\s\t]*\'(.*?)\'[\s\t]*,{0,1}[\s\t]*(#.*)?/ms",$ligne,$matches)) {
    553                                 if (isset($matches[1]) and isset($matches[3]) and strlen(trim($matches[3]))>0 ) {
    554                                         list(,$comm)=explode("#",$matches[3]);
    555                                         $liste_trad[$matches[1]]=trim($comm);
     552                        if (preg_match("/(.*?)\'[\s\t]*=>[\s\t]*\'(.*?)\'[\s\t]*,{0,1}[\s\t]*(#.*)?/ms", $ligne, $matches)) {
     553                                if (isset($matches[1]) and isset($matches[3]) and strlen(trim($matches[3])) > 0) {
     554                                        list(,$comm) = explode('#', $matches[3]);
     555                                        $liste_trad[$matches[1]] = trim($comm);
    556556                                }
    557557                        }
     
    561561        return $liste_trad;
    562562}
    563 
    564 ?>
  • _dev_/salvatore2/pousseur.php

    r91260 r97013  
    3131require_once(_DIR_ETC.'salvatore_passwd.inc');
    3232
    33 if (!isset($SVNUSER)
    34 OR !isset($SVNPASSWD))
    35         die ('Veuillez indiquer $SVNUSER et $SVNPASSWD dans le fichier '._DIR_ETC.'salvatore_passwd.inc');
     33if (!isset($SVNUSER) or !isset($SVNPASSWD)) {
     34        die('Veuillez indiquer $SVNUSER et $SVNPASSWD dans le fichier '._DIR_ETC.'salvatore_passwd.inc');
     35}
    3636
    3737$propset = true;
    38 if(isset($NO_PROPSET))
     38if (isset($NO_PROPSET)) {
    3939        $propset = false;
     40}
    4041
    4142$tmp=_SALVATORE_TMP;
     
    5152        $module = $source[1];
    5253        trad_log("===== Module $module ======================================\n");
    53        
     54
    5455        $domaine_svn = parse_url($source[0]);
    5556        $domaine_svn = $domaine_svn['host'];
    56         if(isset($domaines_exceptions) && is_array($domaines_exceptions) && in_array($domaine_svn,$domaines_exceptions)){
     57        if (isset($domaines_exceptions) and is_array($domaines_exceptions) && in_array($domaine_svn, $domaines_exceptions)) {
    5758                /**
    5859                 * On est dans une exception (Github?)
    5960                 */
    60                 if(is_array($domaines_exceptions_credentials) && isset($domaines_exceptions_credentials[$domaine_svn])){
     61                if (is_array($domaines_exceptions_credentials) and isset($domaines_exceptions_credentials[$domaine_svn])) {
    6162                        $user = $domaines_exceptions_credentials[$domaine_svn]['user'];
    6263                        $pass = $domaines_exceptions_credentials[$domaine_svn]['pass'];
     
    6465                }
    6566        }
    66         if(isset(${$module.'_user'})){
     67        if (isset(${$module.'_user'})) {
    6768                $user = ${$module.'_user'};
    6869                $pass = ${$module.'_passwd'};
    69         }else if(!$credentials){
     70        } elseif (!$credentials) {
    7071                $user = $SVNUSER;
    7172                $pass = $SVNPASSWD;
     
    7374
    7475        $f = _SALVATORE_TMP.$module.'/';
    75        
     76
    7677        /**
    7778         * On ajoute les .xml
     
    8384        );
    8485
    85         if (in_array($module , $ignore))
     86        if (in_array($module, $ignore)) {
    8687                trad_log("$module ignore'\n");
    87         else{
     88        } else {
    8889                $depot = exec("env LC_MESSAGES=en_US.UTF-8 svn info $f |awk '/^Repository Root/ { print $3 }'").'/';
    8990                $svn_url = exec("env LC_MESSAGES=en_US.UTF-8 svn info $f |awk '/^URL/ { print $2 }'").'/';
    90                 $path_svn = str_replace($depot,'',$svn_url);
     91                $path_svn = str_replace($depot, '', $svn_url);
    9192                $message = $message_commit = $commiteurs = false;
    92                 if(file_exists($f.'message_commit.inc')){
     93                if (file_exists($f.'message_commit.inc')) {
    9394                        $message = true;
    94                         require_once(dirname(__FILE__).'/'.str_replace('./','',$f).'message_commit.inc');
     95                        require_once(dirname(__FILE__).'/'.str_replace('./', '', $f).'message_commit.inc');
    9596                }
    96                
    97                 if(is_array($commiteurs) && count($commiteurs) > 0){
    98                         foreach($commiteurs as $lang => $email){
    99                                 if(strlen($email) > 1){
     97
     98                if (is_array($commiteurs) && count($commiteurs) > 0) {
     99                        foreach ($commiteurs as $lang => $email) {
     100                                if (strlen($email) > 1) {
    100101                                        $message_commit_unique = "[Salvatore] [source:$path_svn $module] Export depuis http://trad.spip.net de la langue $lang";
    101102                                        /**
    102                                          * Si plusieurs commiteurs (veut dire que plusieurs fichiers sont à commiter) 
     103                                         * Si plusieurs commiteurs (veut dire que plusieurs fichiers sont à commiter)
    103104                                         * ou si le fichier original est modifié, on ne commit que fichier par fichier
    104105                                         */
    105                                         if(count($commiteurs) > 1 || in_array(substr(exec("svn status "._SALVATORE_TMP.$source[1]."/".$source[1]."_".$source[2].".php"),0,1),array('A','M')))
     106                                        if (count($commiteurs) > 1 || in_array(substr(exec('svn status '._SALVATORE_TMP.$source[1].'/' . $source[1] . '_' . $source[2] . '.php'), 0, 1), array('A', 'M'))) {
    106107                                                $path = $f.$module.'_'.$lang.'.php';
    107                                         /**
    108                                          * Sinon on ne s'embarasse pas, on balance tout avec cet utilisateur
    109                                          */
    110                                         else
     108                                        } else {
     109                                                /**
     110                                                 * Sinon on ne s'embarasse pas, on balance tout avec cet utilisateur
     111                                                 */
    111112                                                $path = $f;
     113                                        }
    112114                                        trad_log("On devrait commiter $path avec comme message '$message_commit_unique' avec l'email $email\n");
    113115                                        trad_log(exec("svn commit $path --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert -m ".escapeshellarg($message_commit_unique))."\n");
    114116                                        $revision = exec("svn up $path && env LC_MESSAGES=en_US.UTF-8 svn info $path |awk '/^Last Changed Rev/ { print $4 }'");
    115                                         if($propset){
     117                                        if ($propset) {
    116118                                                trad_log(exec("svn propset --revprop -r $revision svn:author '$email' $path --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert")."\n");
    117119                                                trad_log("svn propset --revprop -r $revision svn:author '$email' $path --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert\n");
     
    120122                        }
    121123                }
    122                
     124
    123125                /**
    124126                 * Si on a encore un fichier ajouté ou modifié
    125127                 * On commite le tout avec salvatore
    126128                 */
    127                 if(strlen(trim(exec("svn status $f |awk /^[MA]/"))) > 1){
     129                if (strlen(trim(exec("svn status $f |awk /^[MA]/"))) > 1) {
    128130                        $commit_message = "[Salvatore] [source:$path_svn $module] Export depuis http://trad.spip.net\n\n";
    129131                        $commit_message .= $message_commit."\n";
     
    131133                        trad_log(exec("svn commit $f --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert -m ".escapeshellarg($commit_message))."\n");
    132134                        $revision_fin = exec("svn up $f && env LC_MESSAGES=en_US.UTF-8 svn info $f |awk '/^Last Changed Rev/ { print $4 }'");
    133                         if(!$credentials && $propset){
     135                        if (!$credentials && $propset) {
    134136                                trad_log(exec("svn propset --revprop -r $revision_fin svn:author 'salvatore@rezo.net' $f --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert")."\n");
    135137                                trad_log("svn propset --revprop -r $revision_fin svn:author 'salvatore@rezo.net' $f --username $user --password $pass --no-auth-cache --non-interactive --trust-server-cert\n");
    136138                        }
    137139                }
    138                
    139                 if(file_exists($f.'message_commit.inc'))
     140
     141                if (file_exists($f.'message_commit.inc')) {
    140142                        unlink($f.'message_commit.inc');
     143                }
    141144        }
    142145}
     
    144147return 0;
    145148/* MAIN ***********************************************************************/
    146 
    147 ?>
  • _dev_/salvatore2/tireur.php

    r91332 r97013  
    2828/**
    2929 * Ce script va chercher les fichiers définis dans le fichier traductions/traductions.txt
    30  * 
     30 *
    3131 */
    3232require_once(dirname(__FILE__).'/inc_tradlang.php');
     
    4141$cmd = false;
    4242
    43 foreach($liste_sources as $source) {
    44         if(isset($domaines_exceptions) && is_array($domaines_exceptions) && in_array($domaine_svn,$domaines_exceptions)){
     43foreach ($liste_sources as $source) {
     44        if (isset($domaines_exceptions) && is_array($domaines_exceptions) && in_array($domaine_svn, $domaines_exceptions)) {
    4545                /**
    4646                 * On est dans une exception (Github?)
    4747                 */
    48                 if(is_array($domaines_exceptions_credentials) && isset($domaines_exceptions_credentials[$domaine_svn])){
     48                if (is_array($domaines_exceptions_credentials) and isset($domaines_exceptions_credentials[$domaine_svn])) {
    4949                        $user = $domaines_exceptions_credentials[$domaine_svn]['user'];
    5050                        $pass = $domaines_exceptions_credentials[$domaine_svn]['pass'];
     
    5252                }
    5353        }
    54         if(isset(${$module.'_user'})){
     54        if (isset(${$module.'_user'})) {
    5555                $user = ${$module.'_user'};
    5656                $pass = ${$module.'_passwd'};
    57         }else if(!$credentials){
     57        } elseif (!$credentials) {
    5858                $user = $SVNUSER;
    5959                $pass = $SVNPASSWD;
    6060        }
    6161        trad_log("\n===== Module ".$source[1]." =====\n");
    62         if (is_dir($tmp.$source[1].'/.svn')){
     62        if (is_dir($tmp.$source[1].'/.svn')) {
    6363                $depot = "env LANG=en_US svn info --non-interactive --trust-server-cert --username $user --password $pass ".$tmp.$source[1]." | awk '/^URL:/ { print $2 }'";
    64                 $depot = exec($depot,$depot);
     64                $depot = exec($depot, $depot);
    6565                $depot = $depot.'/';
    66                 if($depot != $source[0]){
     66                if ($depot != $source[0]) {
    6767                        $domaine_depot = parse_url($depot);
    6868                        $domaine_depot = $domaine_depot['host'];
     
    7272                         * Simple switch si même serveur sinon on supprime le répertoire et on refait un checkout
    7373                         */
    74                         if($domaine_depot == $domaine_source)
    75                                 $cmd = "svn switch --non-interactive --trust-server-cert --username $user --password $pass ".$source[0]." ".$tmp.$source[1]."/";
    76                         else
    77                                 $cmd = "rm -Rvf ".$tmp.$source[1]."/ && svn checkout  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive ". $source[0]."/ ".$tmp.$source[1].'/';
    78                 }else{
     74                        if ($domaine_depot == $domaine_source) {
     75                                $cmd = "svn switch --non-interactive --trust-server-cert --username $user --password $pass " . $source[0] . ' ' . $tmp.$source[1].'/';
     76                        } else {
     77                                $cmd = 'rm -Rvf '.$tmp.$source[1]."/ && svn checkout  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive ". $source[0].'/ '.$tmp.$source[1].'/';
     78                        }
     79                } else {
    7980                        $revision_actuelle = "env LANG=en_US svn info  --non-interactive --trust-server-cert --username $user --password $pass ".$tmp.$source[1]." | awk '/^Revision:/ { print $2 }'";
    80                         $revision_actuelle = exec($revision_actuelle,$revision_actuelle);
     81                        $revision_actuelle = exec($revision_actuelle, $revision_actuelle);
    8182                        $last_revision = "env LANG=en_US svn info  --non-interactive --trust-server-cert --username $user --password $pass ".$source[0]." | awk '/^Last\ Changed\ Rev:/ { print $4 }'";
    82                         $last_revision = exec($last_revision,$last_revision);
    83                         if($revision_actuelle >= $last_revision)
     83                        $last_revision = exec($last_revision, $last_revision);
     84                        if ($revision_actuelle >= $last_revision) {
    8485                                trad_log("Pas besoin de mettre à jour\n");
    85                         else
    86                                 $cmd = "svn update  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive --accept theirs-full ".$tmp.$source[1]."/";
     86                        } else {
     87                                $cmd = "svn update  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive --accept theirs-full ".$tmp.$source[1].'/';
     88                        }
    8789                }
    88         }else
    89                 $cmd = "svn checkout  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive ". $source[0]."/ ".$tmp.$source[1].'/';
     90        } else {
     91                $cmd = "svn checkout  --non-interactive --trust-server-cert --username $user --password $pass --non-recursive ". $source[0].'/ '.$tmp.$source[1].'/';
     92        }
    9093
    91         if($cmd){
    92                 exec("$cmd 2> /dev/null",$out,$int);
    93                 if($int == 0){
     94        if ($cmd) {
     95                exec("$cmd 2> /dev/null", $out, $int);
     96                if ($int == 0) {
    9497                        trad_log(end($out)."\n");
    95                 }else{
     98                } else {
    9699                        $sujet = 'Tireur : Erreur';
    97                         $corps = $source[0]."/ ".$source[1]."\n\n";
     100                        $corps = $source[0] . '/ ' . $source[1]."\n\n";
    98101                        $corps .= "L'adresse distante de ce module n'est certainement plus valide\n\n";
    99                         trad_sendmail($sujet,$corps);
     102                        trad_sendmail($sujet, $corps);
    100103                        die("L'adresse distante de ce module n'est certainement plus valide\n\n");
    101104                }
    102105        }
    103        
     106
    104107        // controle des erreurs : requiert au moins 1 fichier par module !
    105         if (!file_exists($tmp.$source[1].'/'.$source[1].'_'.$source[2].".php")) {
     108        if (!file_exists($tmp.$source[1].'/'.$source[1].'_'.$source[2].'.php')) {
    106109                $ret=1;
    107110                $sujet = 'Tireur : Erreur';
    108111                $corps = "! Erreur pas de fichier de langue conforme dans le module : $tmp".$source[1]."\n";
    109                 trad_sendmail($sujet,$corps);
     112                trad_sendmail($sujet, $corps);
    110113                die("! Erreur pas de fichier de langue conforme dans le module : $tmp".$source[1]."\n");
    111114        }
     
    114117
    115118return $ret;
    116 
    117 ?>
Note: See TracChangeset for help on using the changeset viewer.