Changeset 75725 in spip-zone for _dev_


Ignore:
Timestamp:
Sep 10, 2013, 10:13:46 PM (6 years ago)
Author:
kent1@…
Message:

Même salvatore crée des révisions lorsqu'il modifie une chaîne de langue d'origine dans la base.

Il fout bien entendu lui donner un id_auteur (dans mes_options) pour que cette révision lui soit liée.

On améliore aussi la rapidité du script

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _dev_/salvatore2/lecteur.php

    r70645 r75725  
    1818    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
    1919
    20     Copyright 2003-2012
     20    Copyright 2003-2013
    2121        Florent Jugla <florent.jugla@eledo.com>,
    2222        Philippe Riviere <fil@rezo.net>,
     
    2828require_once(dirname(__FILE__).'/inc_tradlang.php');
    2929$tmp=_SALVATORE_TMP;
     30$invalider = $die_message = false;
    3031
    3132/* modules de SPIP requis - il y a surement plus propre... */
    3233include_spip('base/abstract_sql');
    33 include_spip('inc/invalideur');
    3434include_spip('inc/tradlang_verifier_langue_base');
    3535include_spip('inc/charsets');
     
    3737include_spip('inc/xml');
    3838include_spip('inc/lang_liste');
     39include_spip('inc/session');
     40
     41if(defined('_ID_AUTEUR_SALVATORE') && is_numeric(_ID_AUTEUR_SALVATORE))
     42        $GLOBALS['visiteur_session']['id_auteur'] = _ID_AUTEUR_SALVATORE;
    3943
    4044$url_site = sql_getfetsel('valeur','spip_meta','nom="adresse_site"');
     
    5256        /**
    5357         * On test ici si le fichier est géré par un autre salvatore
    54          * Si oui on empeche son export en le signifiant
     58         * Si oui on empeche son import en le signifiant
    5559         */
    5660        if(file_exists($xml = $tmp.$source[1].'/'.$source[1].'.xml')){
     
    7478                 */
    7579                $fic_lang_principal=$tmp.$source[1].'/'.$source[1].'_'.$source[2].".php";
    76                 $priorite = '';
    77                 $modifs = 0;
    78                 if(defined('_TRAD_PRIORITE_DEFAUT'))
    79                         $priorite = _TRAD_PRIORITE_DEFAUT;
    80                 if (in_array($fic_lang_principal,$liste_fic_lang)) {
    81                         $module = sql_fetsel('*','spip_tradlang_modules','module='.sql_quote($source[1]));
    82                         $id_module = $module['id_tradlang_module'];
    83                         /**
    84                          * Si le module n'existe pas... on le crée
    85                          */
    86                         if(!intval($id_module)){
    87                                 $id_module = sql_insertq('spip_tradlang_modules',
    88                                         array('module'=>$source[1],'nom_mod'=>$source[1],'lang_prefix'=>$source[1],'lang_mere'=>$source[2],'priorite' => $priorite)
    89                                 );
    90                         }
    91                         /**
    92                          * Si la langue mere a changée, on la modifie
    93                          */
    94                         else if($module['lang_mere'] != $source[2]){
     80               
     81                /**
     82                 * On regarde quelle est la date de dernière modification du fichier de langue principale
     83                 */
     84                $last_update = filemtime($fic_lang_principal);
     85                if ($last_update > strtotime('-1 hour')){
     86                        $priorite = '';
     87                        $modifs = 0;
     88                        if(defined('_TRAD_PRIORITE_DEFAUT'))
     89                                $priorite = _TRAD_PRIORITE_DEFAUT;
     90                        if (in_array($fic_lang_principal,$liste_fic_lang)) {
     91                                $module = sql_fetsel('*','spip_tradlang_modules','module='.sql_quote($source[1]));
    9592                                $id_module = $module['id_tradlang_module'];
    96                                 sql_updateq('spip_tradlang_modules',array('lang_mere'=>$source[2]),'id_tradlang_module='.intval($id_module));
    97                         }
    98                         /**
    99                          * Si $id_module n'est pas un entier => on tue le script
    100                          */
    101                         if(!intval($id_module)){
     93                                /**
     94                                 * Si le module n'existe pas... on le crée
     95                                 */
     96                                if(!intval($id_module))
     97                                        $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));
     98                                /**
     99                                 * Si la langue mere a changée, on la modifie
     100                                 */
     101                                else if($module['lang_mere'] != $source[2])
     102                                        sql_updateq('spip_tradlang_modules',array('lang_mere'=>$source[2]),'id_tradlang_module='.intval($id_module));
     103                                /**
     104                                 * Si $id_module n'est pas un entier => on tue le script
     105                                 */
     106                                if(!intval($id_module)){
     107                                        $sujet = 'Lecteur : Erreur sur '.$source[1];
     108                                        $corps = "Le module n'est pas un entier";
     109                                        trad_sendmail($sujet,$corps);
     110                                        $die_message = "Le module n'est pas un entier";
     111                                        break;
     112                                }
     113                                $liste_id_orig = array();
     114                                $modifs = import_module_spip($source,$fic_lang_principal,$liste_id_orig,1,$id_module);
     115                                $langues_a_jour = array();
     116                                foreach ($liste_fic_lang as $f){
     117                                        if ($f != $fic_lang_principal){
     118                                                import_module_spip($source,$f,$liste_id_orig,0,$id_module);
     119                                                $fich = str_replace($source[1],'',basename($f,".php"));
     120                                                list(,$lang) = explode("_",$fich,2);
     121                                                if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')){
     122                                                        inc_tradlang_verifier_langue_base_dist($source[1],$lang);
     123                                                        trad_log("|-- Synchro de la langue ".$lang." pour le module ".$source[1]."\n");
     124                                                }else if (!function_exists('inc_tradlang_verifier_langue_base_dist'))
     125                                                        trad_log("|-- Fonction de synchro inexistante\n");
     126                                                $langues_a_jour[] = $lang;
     127                                        }
     128                                }
     129                                /**
     130                                 * On s'occupe des langues en base sans fichier
     131                                 * s'il y a eu au moins une modif et que l'on peut faire la synchro
     132                                 */
     133                                if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')){
     134                                        $langues_pas_a_jour = sql_select('lang','spip_tradlangs','id_tradlang_module='.intval($id_module).' AND '.sql_in('lang',$langues_a_jour,'NOT'),'lang');
     135                                        while($langue_a_jour = sql_fetch($langues_pas_a_jour)){
     136                                                inc_tradlang_verifier_langue_base_dist($source[1],$langue_a_jour['lang']);
     137                                                trad_log("|-- Synchro de la langue non exportée en fichier ".$langue_a_jour['lang']." pour le module ".$source[1]."\n");
     138                                        }
     139                                }
     140                                $invalider = true;
     141                                trad_log("|\n");
     142                                unset($langues_a_jour,$langues_pas_a_jour);
     143                        }
     144                        else {
    102145                                $sujet = 'Lecteur : Erreur sur '.$source[1];
    103                                 $corps = "Le module n'est pas un entier";
     146                                $corps = "|-- Pas de fichier lang ".$source[2]." pour le module ".$source[1]." : import impossible pour ce module\n";
    104147                                trad_sendmail($sujet,$corps);
    105                                 die("Le module n'est pas un entier");
    106                         }
    107                         $liste_id_orig = array();
    108                         $modifs = import_module_spip($source,$fic_lang_principal,$liste_id_orig,1,$id_module);
    109                         $langues_a_jour = array();
    110                         foreach ($liste_fic_lang as $f){
    111                                 if ($f != $fic_lang_principal){
    112                                         import_module_spip($source,$f,$liste_id_orig,0,$id_module);
    113                                         $fich = basename($f,".php");
    114                                         $fich = str_replace($source[1],'',$fich);
    115                                         list(,$lang)=explode("_",$fich,2);
    116                                         if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')){
    117                                                 inc_tradlang_verifier_langue_base_dist($source[1],$lang);
    118                                                 trad_log("|-- Synchro de la langue ".$lang." pour le module ".$source[1]."\n");
    119                                         }else if (!function_exists('inc_tradlang_verifier_langue_base_dist')){
    120                                                 trad_log("|-- Fonction de synchro inexistante\n");
    121                                         }
    122                                         $langues_a_jour[] = $lang;
    123                                 }
    124                         }
    125                         /**
    126                          * On s'occupe des langues en base sans fichier
    127                          * s'il y a eu au moins une modif et que l'on peut faire la synchro
    128                          */
    129                         if(($modifs > 0) && function_exists('inc_tradlang_verifier_langue_base_dist')){
    130                                 $langues_pas_a_jour = sql_select('lang','spip_tradlangs','id_tradlang_module='.intval($id_module).' AND '.sql_in('lang',$langues_a_jour,'NOT'),'lang');
    131                                 while($langue_a_jour = sql_fetch($langues_pas_a_jour)){
    132                                         inc_tradlang_verifier_langue_base_dist($source[1],$langue_a_jour['lang']);
    133                                         trad_log("|-- Synchro de la langue non exportée en fichier ".$langue_a_jour['lang']." pour le module ".$source[1]."\n");
    134                                 }
    135                         }
    136                         suivre_invalideur('1');
    137                         trad_log("|\n");
    138                         unset($langues_a_jour);
    139                         unset($langues_pas_a_jour);
    140                 }
    141                 else {
    142                         $sujet = 'Lecteur : Erreur sur '.$source[1];
    143                         $corps = "|-- Pas de fichier lang ".$source[2]." pour le module ".$source[1]." : import impossible pour ce module\n";
    144                         trad_sendmail($sujet,$corps);
    145                         die("|-- Pas de fichier lang ".$source[2]." pour le module ".$source[1]." : import impossible pour ce module\n");
    146                 }
    147         }
    148 }
    149 
     148                                $die_message = "|-- Pas de fichier lang ".$source[2]." pour le module ".$source[1]." : import impossible pour ce module\n";
     149                                break;
     150                        }
     151                }else{
     152                        trad_log("On ne l importe pas car modifié il y a longtemps\n\n");
     153                }
     154        }
     155}
     156
     157if($invalider){
     158        include_spip('inc/invalideur');
     159        suivre_invalideur('1');
     160}
     161
     162if($die_message){
     163        die("$die_message");
     164}
    150165return 0;
    151166
     
    194209        }
    195210
    196         $fich = basename($module,".php");
    197         $fich = str_replace($source[1],'',$fich);
     211        $fich = str_replace($source[1],'',basename($module,".php"));
    198212        $mod = $source[1];
    199213        list(,$lang)=explode("_",$fich,2);
     
    225239                        $bigwhere = "module='".$source[1]."' and lang='".$lang."'";
    226240       
     241                        include_spip('action/editer_tradlang');
    227242                        // Dans ce qui arrive, il y a 4 cas :
    228243                        foreach (array_unique(array_merge(
     
    252267                                                                ENT_NOQUOTES, 'utf-8')
    253268                                                ));
     269                                               
     270                                                /**
     271                                                 * Si le commentaire est un statut et que l'on ne traite pas le fichier de langue mère
     272                                                 * On vire le commentaire et met son contenu comme statut
     273                                                 */
    254274                                                if(in_array($comm,array('NEW','OK','MODIF','MODI')) && $orig != 1){
    255275                                                        if($comm == 'MODI')
     
    263283                                                        $comm = preg_replace("/(NEW|OK|MODIF)/",'',$comm);
    264284                                                }
     285                                               
     286                                                /**
     287                                                 * On génère un titre
     288                                                 */
    265289                                                $titre = $id.' : '.$source[1].' - '.$lang;
     290                                               
    266291                                                spip_query("INSERT spip_tradlangs (id_tradlang_module,titre,module,lang,id,str,comm,md5,statut)
    267292                                                VALUES ("
     
    292317                                        else {
    293318                                                // modifier la chaine
    294                                                 spip_query("UPDATE spip_tradlangs SET
    295                                                         str="._q($str_lang[$id])
    296                                                         . ($orig
    297                                                                 ? ", md5="._q($md5).", statut='OK'"
    298                                                                 : ", md5="._q($existant[$id]).", statut=''"
    299                                                         )
    300                                                         . ($comm
    301                                                                 ? ", comm="._q($comm)." "
    302                                                                 : ""
    303                                                         )
    304                                                         ." WHERE $bigwhere AND id="._q($id)
     319                                                $modifs = array(
     320                                                        'str' => $str_lang[$id],
     321                                                        'md5' => ($orig ? $md5 : $existant[$id]),
     322                                                        'statut' => ($orig ? 'OK' : ''),
     323                                                        'comm' => $comm,
    305324                                                );
     325                                               
     326                                                $id_tradlang = sql_getfetsel('id_tradlang','spip_tradlangs',"$bigwhere AND id=".sql_quote($id));
     327                                                $test = tradlang_set($id_tradlang,$modifs);
    306328       
    307329                                                // signaler le status MODIF de ses traductions
     
    333355                }
    334356        }
    335         unset($liste_id_orig);
    336         unset($str_lang);
    337         unset($GLOBALS[$GLOBALS['idx_lang']]);
     357        unset($liste_id_orig,$str_lang,$GLOBALS[$GLOBALS['idx_lang']]);
    338358        return $ajoutees + $supprimees + $modifiees;
    339359}
     
    355375        reset($tab);
    356376       
    357         while (list(,$ligne) = each($tab))
    358         {
     377        while (list(,$ligne) = each($tab)){
    359378                $ligne = str_replace("\'",'',$ligne);
    360379                if (strlen($ligne)>0) {
Note: See TracChangeset for help on using the changeset viewer.