Changeset 75953 in spip-zone


Ignore:
Timestamp:
Sep 18, 2013, 9:15:10 AM (6 years ago)
Author:
kent1@…
Message:

On crée une table spip_tradlangs_bilans qui gère les bilans par langue par module

Les modules attic n'existent plus c'est un statut spécifique de chaine de langue dorénavant

Du coup on évite des exceptions dans les boucles et requètes sql

Version 2.3.2

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

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk/action/editer_tradlang.php

    r75894 r75953  
    6868        }
    6969       
    70         if(($statut = (in_array(_request('statut'),array('NEW','MODIF','OK','RELIRE'))) ? _request('statut') : $c['statut']) && ($statut != $infos_tradlang['statut']))
     70        if(($statut = (in_array(_request('statut'),array('NEW','MODIF','OK','RELIRE'))) ? _request('statut') : $c['statut']) && ($statut != $infos_tradlang['statut'])){
    7171                sql_updateq('spip_tradlangs',array('statut' => $statut),'id_tradlang='.intval($id_tradlang));
     72                $infos_maj = array();
     73                $bilan = sql_fetsel('chaines_ok,chaines_relire,chaines_modif,chaines_new','spip_tradlangs_bilans','module='.sql_quote($infos_tradlang['module']).' AND lang='.sql_quote($infos_tradlang['lang']));
     74                if($statut == 'OK')
     75                        $infos_maj['chaines_ok'] = ($bilan['chaines_ok']+1);
     76                else if($statut == 'RELIRE')
     77                        $infos_maj['chaines_relire'] = ($bilan['chaines_relire']+1);
     78                else if($statut == 'MODIF')
     79                        $infos_maj['chaines_modif'] = $bilan['chaines_modif']+1);
     80                else if($statut == 'NEW')
     81                        $infos_maj['chaines_new'] = ($bilan['chaines_new']+1);
     82               
     83                if($infos_tradlang['statut'] == 'OK')
     84                        $infos_maj['chaines_ok'] = ($bilan['chaines_ok']-1);
     85                else if($infos_tradlang['statut'] == 'RELIRE')
     86                        $infos_maj['chaines_relire'] = ($bilan['chaines_relire']-1);
     87                else if($infos_tradlang['statut'] == 'MODIF')
     88                        $infos_maj['chaines_modif'] = ($bilan['chaines_modif']-1);
     89                else if($infos_tradlang['statut'] == 'NEW')
     90                        $infos_maj['chaines_new'] = ($bilan['chaines_new']-1);
     91               
     92                sql_updateq('spip_tradlangs_bilan',$infos_maj,'module='.sql_quote($infos_tradlang['module']).' AND lang='.sql_quote($infos_tradlang['lang']));
     93        }
    7294       
    7395        //$c = collecter_requests(array('statut'),array(),$set);
  • _plugins_/trad-lang/trunk/action/tradlang_supprimer_langue_cible.php

    r70914 r75953  
    2424        if($lang_cible && intval($id_tradlang_module) && autoriser('modifier','tradlang') && !sql_countsel('spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module).' AND lang='.sql_quote($lang_cible).' AND statut="0K"')){
    2525                sql_delete('spip_tradlangs','id_tradlang_module='.intval($id_tradlang_module).' AND lang='.sql_quote($lang_cible));
     26                sql_delete('spip_tradlangs_bilans','id_tradlang_module='.intval($id_tradlang_module).' AND lang='.sql_quote($lang_cible));
    2627                include_spip('inc/invalideur');
    2728                suivre_invalideur('1');
  • _plugins_/trad-lang/trunk/base/tradlang.php

    r75884 r75953  
    1111        $interface['table_des_tables']['tradlangs'] = 'tradlangs';
    1212        $interface['table_des_tables']['tradlang_modules'] = 'tradlang_modules';
     13        $interface['table_des_tables']['tradlangs_bilans'] = 'tradlangs_bilans';
    1314        $interface['table_des_traitements']['PRIORITE'][]= 'typo(supprimer_numero(%s), "TYPO", $connect)';
    1415        return $interface;
     
    7475                        "id" => "varchar(128) NOT NULL default ''",
    7576                        "module" => "varchar(32) NOT NULL default 0",
    76                         "lang" => "varchar(16) NOT NULL default ''",
     77                        "lang" => "varchar(10) DEFAULT '' NOT NULL",
    7778                        "langue_choisie"        => "VARCHAR(3) DEFAULT 'non'",
    7879                        "str" => "text NOT NULL",
     
    126127}
    127128
     129/**
     130 * Table des bilans spip_tradlangs_bilans
     131 * @param array $tables_auxiliaires
     132 * @return array
     133 */
     134function tradlang_declarer_tables_auxiliaires($tables_auxiliaires) {
     135
     136        $spip_tradlangs_bilans = array(
     137                        "id_tradlang_module" => "bigint(21) NOT NULL",
     138                        "module" => "varchar(128) NOT NULL",
     139                        "lang" => "varchar(10) DEFAULT '' NOT NULL",
     140                        "chaines_total" => "smallint(5) DEFAULT '0' NOT NULL",
     141                        "chaines_ok"    => "smallint(5) DEFAULT '0' NOT NULL",
     142                        "chaines_relire" => "smallint(5) DEFAULT '0' NOT NULL",
     143                        "chaines_modif" => "smallint(5) DEFAULT '0' NOT NULL",
     144                        "chaines_new" => "smallint(5) DEFAULT '0' NOT NULL",
     145                        "maj" => "timestamp(14) NOT NULL");
     146
     147        $spip_tradlangs_bilans_keys = array(
     148                        "UNIQUE id_module_lang" => "id_tradlang_module,lang"
     149                        "KEY module" => "module",
     150                        "KEY lang" => "lang"
     151        );
     152
     153        $tables_auxiliaires['spip_tradlangs_bilans'] = array(
     154                'field' => &$spip_tradlangs_bilans,
     155                'key' => &$spip_tradlangs_bilans_keys);
     156
     157        return $tables_auxiliaires;
     158}
    128159?>
  • _plugins_/trad-lang/trunk/formulaires/tradlang_choisir_module.php

    r72157 r75953  
    3535                        $id_tradlang_module = sql_getfetsel('id_tradlang_module','spip_tradlang_modules','','','priorite,nom_mod');
    3636                if(!$infos_module = sql_fetsel('*','spip_tradlang_modules','id_tradlang_module='.intval($id_tradlang_module))){
    37                         $valeurs['id_tradlang_module'] = $id_tradlang_module = $module_defaut = sql_getfetsel('id_tradlang_module','spip_tradlang_modules','module NOT LIKE "attic%" AND module != "contrib"',array('priorite','nom_mod'),'','0,1');
     37                        $valeurs['id_tradlang_module'] = $id_tradlang_module = $module_defaut = sql_getfetsel('id_tradlang_module','spip_tradlang_modules','',array('priorite','nom_mod'),'','0,1');
    3838                        /**
    3939                         * Si aucun module dans la base
  • _plugins_/trad-lang/trunk/formulaires/tradlang_selecteur_langue_module_dispo.html

    r71070 r75953  
    44       
    55        Retourne un select de langues qui sont totalement ou partiellement traduites (existantes et disponibles)
    6          
    7         A noter que l'on utilise dans les boucles "BOUCLE_module_langue_dispo_pref" et "BOUCLE_module_langue_dispo"
    8         le critère {module} et non {id_tradlang_module} pour éviter tous les "attic" qui gardent l'id_tradlang_module
    96       
    107        Ce squelette accepte comme paramètres :
     
    1916        ]<B_module_langue_dispo_pref>
    2017        <optgroup label="<:tradlang:info_langues_preferees|attribut_html:>">
    21         <BOUCLE_module_langue_dispo_pref(TRADLANGS){module}{lang != #ENV{lang_exclue}}{langues_preferees}{fusion lang}{par lang}>
     18        <BOUCLE_module_langue_dispo_pref(TRADLANGS){id_tradlang_module}{lang != #ENV{lang_exclue}}{langues_preferees}{fusion lang}{par lang}>
    2219                <option value="#LANG"[(#LANG|=={#ENV{#ENV{name,langues}}}|oui)selected="selected"] dir="#LANG_DIR">&#91;#LANG&#93; [(#LANG|traduire_nom_langue)][(#LANG|=={#LANG_MERE}|oui)<:tradlang:info_langue_mere:>]</option></BOUCLE_module_langue_dispo_pref>
    2320        [(#SET{optgroup,'oui'})]
     
    2522        </B_module_langue_dispo_pref><B_module_langue_dispo>
    2623        [(#GET{optgroup}|=={oui}|oui)<optgroup label="<:tradlang:info_langues_non_preferees|attribut_html:>">]
    27         <BOUCLE_module_langue_dispo(TRADLANGS){module}{lang != #ENV{lang_exclue}}{!langues_preferees}{fusion lang}{par lang}>
     24        <BOUCLE_module_langue_dispo(TRADLANGS){id_tradlang_module}{lang != #ENV{lang_exclue}}{!langues_preferees}{fusion lang}{par lang}>
    2825                <option value="#LANG"[(#LANG|=={#ENV{#ENV{name,langues}}}|oui)selected="selected"] dir="#LANG_DIR">&#91;#LANG&#93; [(#LANG|traduire_nom_langue)][(#LANG|=={#LANG_MERE}|oui)<:tradlang:info_langue_mere:>]</option></BOUCLE_module_langue_dispo>
    2926        [(#GET{optgroup}|=={oui}|oui)</optgroup>]
  • _plugins_/trad-lang/trunk/formulaires/tradlang_selecteur_langue_module_dispo_complete.html

    r71070 r75953  
    44       
    55        Ressort un select de langues qui sont supposées traduites à 100%
    6          
    7         A noter que l'on utilise dans les boucles "BOUCLE_module_langue_dispo_pref" et "BOUCLE_module_langue_dispo"
    8         le critère {module} et non {id_tradlang_module} pour éviter tous les "attic" qui gardent l'id_tradlang_module
    96       
    107        Ce squelette accepte comme paramètres :
     
    1815                <option value="">--</option>]<B_module_langue_dispo_pref>
    1916                <optgroup label="<:tradlang:info_langues_preferees|attribut_html:>">
    20                 <BOUCLE_module_langue_dispo_pref(TRADLANGS){module}{langues_preferees}{langue_complete}{lang != #ENV{lang_exclue}}{par lang}>
     17                <BOUCLE_module_langue_dispo_pref(TRADLANGS){id_tradlang_module}{langues_preferees}{langue_complete}{lang != #ENV{lang_exclue}}{par lang}>
    2118                        <option value="#LANG"[(#LANG|=={#ENV{#ENV{name,langues}}}|oui)selected="selected"] dir="#LANG_DIR">&#91;#LANG&#93; [(#LANG|traduire_nom_langue)][(#LANG|=={#LANG_MERE}|oui)<:tradlang:info_langue_mere:>]</option></BOUCLE_module_langue_dispo_pref>
    2219                </optgroup>[(#SET{optgroup,'oui'})]</B_module_langue_dispo_pref><B_module_langue_dispo>
    2320                [(#GET{optgroup}|=={oui}|oui)<optgroup label="<:tradlang:info_langues_non_preferees|attribut_html:>">]
    24                 <BOUCLE_module_langue_dispo(TRADLANGS){module}{lang != #ENV{lang_exclue}}{!langues_preferees}{langue_complete}{par lang}>
     21                <BOUCLE_module_langue_dispo(TRADLANGS){id_tradlang_module}{lang != #ENV{lang_exclue}}{!langues_preferees}{langue_complete}{par lang}>
    2522                        <option value="#LANG"[(#LANG|=={#ENV{#ENV{name,langues}}}|oui)selected="selected"] dir="#LANG_DIR">&#91;#LANG&#93; [(#LANG|traduire_nom_langue)][(#LANG|=={#LANG_MERE}|oui)<:tradlang:info_langue_mere:>]</option></BOUCLE_module_langue_dispo>
    2623                [(#GET{optgroup}|=={oui}|oui)</optgroup>]
  • _plugins_/trad-lang/trunk/inc/tradlang_ajouter_code_langue.php

    r70915 r75953  
    2020         */
    2121        $chaines_mere = sql_select('*','spip_tradlangs',"module=".sql_quote($module['module'])." AND lang=".sql_quote($module['lang_mere']));
     22        $total = 0;
    2223        while($chaine = sql_fetch($chaines_mere)){
    2324                /**
     
    4243                unset($chaine['id_tradlang']);
    4344                $res = sql_insertq('spip_tradlangs',$chaine);
     45                $total++;
    4446        }
    4547       
     
    6567       
    6668        /**
     69         * On ajoute la ligne du bilan
     70         */
     71        $bilan = array(
     72                                'id_tradlang_module' => $module['id_tradlang_module'],
     73                                'module' => $module['module'],
     74                                'lang'=> $lang,
     75                                'chaines_total' => $total,
     76                                'chaines_ok' => 0,
     77                                'chaines_relire' => 0,
     78                                'chaines_modif' => 0,
     79                                'chaines_new' => $total
     80                        );
     81        sql_insertq('spip_tradlangs_bilans',$bilan);
     82
     83        /**
    6784         * On invalide
    6885         */
  • _plugins_/trad-lang/trunk/inc/tradlang_creer_premieres_revisions.php

    r70915 r75953  
    1313function inc_tradlang_creer_premieres_revisions_dist($module=false,$lang=false,$nb=false){
    1414        include_spip('inc/revisions');
    15         spip_timer('genie_tradlang');
    1615        $count = 0;
    17         spip_log($module,'revisions_cron');
    1816        if ($versionnes = liste_champs_versionnes('spip_tradlangs')) {
    1917                $where = 'b.id_objet IS NULL';
     
    3129                }
    3230        }
    33         $blam = spip_timer('genie_tradlang');
    34         spip_log($blam,'revisions_cron');
    3531        return $count;
    3632}
  • _plugins_/trad-lang/trunk/inc/tradlang_importer_module.php

    r58384 r75953  
    3838                $res = sql_insertq("spip_tradlang_modules",$module);
    3939                $mode = 'new'; 
    40         }else{
     40        }else
    4141                $mode = 'update';
    42         }
    4342       
    4443        if ($new_only && ($mode=='update')){
     
    5756                $fichier = $module_choisi[$langue]['fichier'];
    5857                $orig = 0;
    59                 if ($langue == $module['lang_mere']){
     58                if ($langue == $module['lang_mere'])
    6059                        $orig = 1;
    61                 }
    62                        
     60
    6361                $ret .= _T('tradlang:insertionlangue')." : ".$langue."<br />";
    6462                $nom_fichier = _DIR_RACINE.$module['dir_lang']."/".$fichier;
     
    6664                include($nom_fichier);
    6765                $chs = $GLOBALS[$GLOBALS['idx_lang']];
    68                 if (is_null($chs)) {
     66                if (is_null($chs))
    6967                        return false;
    70                 }
    7168               
    7269                reset($chs);
     
    8582                $res = sql_select("id, str, md5","spip_tradlangs","module=".sql_quote($nom_mod)." AND lang=".sql_quote($langue));
    8683                if($mode == 'update'){
    87                         if(sql_count($res)>0){
     84                        if(sql_count($res)>0)
    8885                                spip_log("Fichier de langue $langue du module $nom_mod deja inclus dans la base\n","tradlang");
    89                         }
    9086                }
    9187                $existant = array();
     
    10197                        if (isset($chs[$id]) AND !isset($existant[$id])){
    10298                                unset($md5);
    103                                 if ($orig) {
     99                                if ($orig)
    104100                                        $md5 = md5($chs[$id]);
    105                                 } else if (!isset($liste_id_orig[$id])) {
     101                                else if (!isset($liste_id_orig[$id])) {
    106102                                        spip_log("!-- Chaine $id inconnue dans la langue principale\n","tradlang");
    107103                                        $ignorees++;
    108                                 } else {
     104                                }else
    109105                                        $md5 = $liste_id_orig[$id];
    110                                 }
    111106
    112107                                /**
     
    134129                                // * identique ? => NOOP
    135130                                $md5 = md5($chs[$id]);
    136                                 if ($md5 == $existant[$id]) {
     131                                if ($md5 == $existant[$id])
    137132                                        $inchangees++;
    138                                 }
    139133                                // * modifiee ? => UPDATE
    140134                                else {
     
    148142                                       
    149143                                        // signaler le statut MODIF de ses traductions
    150                                         if ($orig){
     144                                        if ($orig)
    151145                                                sql_updateq("spip_tradlangs",array('statut'=>'MODIF'),"module=".sql_quote($nom_mod)." AND id=".sql_quote($id)." AND md5 !=".sql_quote($md5));
    152                                         }
    153                                        
    154146                                        $modifiees++;
    155147                                }
     
    161153                                // mettre au grenier
    162154                                sql_updateq("spip_tradlangs",array(
    163                                         'id' => $nom_mod.'_'.$id,
    164                                         'module' => 'attic'),"id=".sql_quote($id)." AND module=".sql_quote($nom_mod));
     155                                        'id' => $id,
     156                                        'statut' => 'attic'),"id=".sql_quote($id)." AND module=".sql_quote($nom_mod));
    165157                                $supprimees++;
    166158                        }
     
    175167                 * Si ce n'est pas la langue mère que l'on importe :
    176168                 * - On ajoute dans la base les chaines manquantes dans le fichier de la langue
    177                  * - On place dans le module attic les chaines en trop dans les fichiers
     169                 * - On met le statut attic pour les chaines en trop dans les fichiers
    178170                 */
    179171                if($langue != $module['lang_mere']){
     
    233225                                                }
    234226                                                if(!array_key_exists($module[1],$tous_modules)){
    235                                                         if($module[1] == $selected){
     227                                                        if($module[1] == $selected)
    236228                                                                $sel = "selected=\"selected\"";
    237                                                         }
    238229                                                        $ret .= "<option value=\"".$module[1]."\"$sel>".$module[1]."</option>\n";
    239230                                                        $tous_modules[$module[1]]['repertoire'] = dirname($chemin);
    240231                                                        $tous_modules[$module[1]]['langues'] = $module[2];
    241                                                 }else{
     232                                                }else
    242233                                                        $tous_modules[$module[1]]['langues'] .= ",".$module[2];
    243                                                 }
    244234                                                $tous_modules[$module[1]][$module[2]] = array('fichier' => basename($chemin));
    245235                                        }
     
    251241                                                                $search = _DIR_RACINE;
    252242                                                                $chemin = str_replace($search,'',$chemin);
    253                                                         }else{
     243                                                        }else
    254244                                                                $chemin = _DIR_RESTREINT_ABS.$chemin;
    255                                                         }
    256245                                                }
    257246                                                if(!in_array($module[1],$tous_modules_en_base)){
    258247                                                        if(!array_key_exists($module[1],$tous_modules)){
    259                                                                 if($module[1] == $selected){
     248                                                                if($module[1] == $selected)
    260249                                                                        $sel = "selected=\"selected\"";
    261                                                                 }
    262250                                                                $ret .= "<option value=\"".$module[1]."\"$sel>".$module[1]."</option>\n";
    263251                                                                $tous_modules[$module[1]]['repertoire'] = dirname($chemin);
    264252                                                                $tous_modules[$module[1]]['langues'] = $module[2];
    265                                                         }else{
     253                                                        }else
    266254                                                                $tous_modules[$module[1]]['langues'] .= ",".$module[2];
    267                                                         }
    268255                                                       
    269256                                                        $tous_modules[$module[1]][$module[2]] = array('fichier' => basename($chemin));
  • _plugins_/trad-lang/trunk/inc/tradlang_supprimer_module.php

    r58384 r75953  
    99                        $traductions = sql_delete('spip_tradlangs','module='.sql_quote($module));
    1010                        sql_delete('spip_tradlang_modules','module='.sql_quote($module));
     11                        sql_delete('spip_tradlangs_bilans','module='.sql_quote($module));
    1112                        return $traductions;
    1213                }else{
  • _plugins_/trad-lang/trunk/inc/tradlang_verifier_langue_base.php

    r70916 r75953  
    6767
    6868                foreach($diff2 as $key => $id){
    69                         $array['id'] = $module.'_'.$id;
    70                         $array['module'] = 'attic%'.$module;
     69                        $array['id'] = $id;
     70                        $array['statut'] = 'attic';
    7171                        $id_tradlang = sql_getfetsel('id_tradlang','spip_tradlangs','id='.sql_quote($id)." AND module=".sql_quote($module)." AND lang=".sql_quote($langue));
    7272                        sql_updateq('spip_tradlangs',$array,'id_tradlang='.intval($id_tradlang));
    7373                        $supprimees++;
    7474                }
    75         }else{
     75        }else
    7676                return array('0','0');
    77         }
    7877        include_spip('inc/invalideur');
    7978        suivre_invalideur('1');
  • _plugins_/trad-lang/trunk/paquet.xml

    r75912 r75953  
    22        prefix="tradlang"
    33        categorie="outil"
    4         version="2.3.0"
     4        version="2.3.2"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
    77        logo="images/spip_lang.png"
    8         schema="0.4.6"
     8        schema="0.5.1"
    99>
    1010
     
    1515        <pipeline nom="declarer_tables_interfaces" inclure="base/tradlang.php" />
    1616        <pipeline nom="declarer_tables_objets_sql" inclure="base/tradlang.php" />
     17        <pipeline nom="declarer_tables_auxiliaires" inclure="base/tradlang.php" />
    1718        <pipeline nom="pre_edition" inclure="tradlang_pipelines.php" />
    1819        <pipeline nom="post_edition" inclure="tradlang_pipelines.php" />
  • _plugins_/trad-lang/trunk/prive/infos/tradlang_infos_module.html

    r75884 r75953  
    66        #SET{total_mere,#TOTAL_BOUCLE}<p><:tradlang:items_total_nb:> : #TOTAL_BOUCLE</p>
    77        </B_langue_mere>
    8         <BOUCLE_total_item_langue_mere_new(TRADLANGS){module}{statut=NEW}{lang=#LANG}> </BOUCLE_total_item_langue_mere_new>
     8        <BOUCLE_total_item_langue_mere_new(TRADLANGS){id_tradlang_module}{statut=NEW}{lang=#LANG}> </BOUCLE_total_item_langue_mere_new>
    99        <p><:tradlang:items_new:> : #GRAND_TOTAL / #GET{total_mere}</p></B_total_item_langue_mere_new>
    10         <BOUCLE_total_item_langue_mere_relire(TRADLANGS){module}{statut=RELIRE}{lang=#LANG}> </BOUCLE_total_item_langue_mere_relire>
     10        <BOUCLE_total_item_langue_mere_relire(TRADLANGS){id_tradlang_module}{statut=RELIRE}{lang=#LANG}> </BOUCLE_total_item_langue_mere_relire>
    1111        <p><:tradlang:items_relire:> : #GRAND_TOTAL / #GET{total_mere}</p></B_total_item_langue_mere_relire>
    12         <BOUCLE_total_item_langue_mere_modif(TRADLANGS){module}{statut=MODIF}{lang=#LANG}> </BOUCLE_total_item_langue_mere_modif>
     12        <BOUCLE_total_item_langue_mere_modif(TRADLANGS){id_tradlang_module}{statut=MODIF}{lang=#LANG}> </BOUCLE_total_item_langue_mere_modif>
    1313        <p><:tradlang:items_modif:> : #GRAND_TOTAL / #GET{total_mere}</p></B_total_item_langue_mere_modif>
    1414        [(#IDMODULE|tradlang_testesynchro{#LANG_MERE}|oui)<p><img src="#CHEMIN{images/vert.gif}" alt="" />&nbsp;<:tradlang:message_synchro_base_fichier_ok:></p>]
  • _plugins_/trad-lang/trunk/prive/objets/contenu/tradlang.html

    r58384 r75953  
    2424<div dir='#LANG_DIR' class='str'>[(#STR**|entites_html)]</div>
    2525</div>
    26 <BOUCLE_chaine_orig(TRADLANGS){id}{module}{lang=#LANG_MERE}>
     26<BOUCLE_chaine_orig(TRADLANGS){id}{id_tradlang_module}{lang=#LANG_MERE}>
    2727<div class="champ contenu_str_orig[ (#STR*|strlen|?{'',vide})]">
    2828<div class='label'><:tradlang:label_version_originale{lang=#LANG}:></div>
  • _plugins_/trad-lang/trunk/tradlang_administrations.php

    r67498 r75953  
    7777        $maj['0.4.6'] = array(
    7878                array('sql_alter',"TABLE spip_tradlangs ADD INDEX statut (statut)"),
     79        );
     80        $maj['0.5.0'] = array(
     81                array('creer_base'),
     82                array('tradlang_maj_bilans')
     83        );
     84        $maj['0.5.1'] = array(
     85                array('tradlang_maj_attic')
    7986        );
    8087        include_spip('base/upgrade');
     
    178185        }
    179186}
     187
     188/**
     189 * On crée les bilans de chaque langue de chaque module
     190 */
     191function tradlang_maj_bilans($affiche=false){
     192        $modules = sql_select('id_tradlang_module,module,lang_mere','spip_tradlang_modules');
     193       
     194        /**
     195         * On passe d'abord les modules un par un
     196         * On récupère $total qui est le total des chaines de la langue mère
     197         */
     198        while($module = sql_fetch($modules)){
     199                /**
     200                 * Si on n'est pas dans un module type attic
     201                 */
     202                if(substr($module['module'],0,5) != 'attic'){
     203                        $total = sql_countsel('spip_tradlangs','module='.sql_quote($module['module']).' AND lang='.sql_quote($module['lang_mere']));
     204                        $langues_base = sql_select('lang','spip_tradlangs','module='.sql_quote($module['module']),'lang');
     205                        /**
     206                         * On passe ensuite chaque langue de ce module en revue
     207                         * On insère une entrée pour chaque langue de chaque module
     208                         */
     209                        while($langue = sql_fetch($langues_base)){
     210                                $lang = $langue['lang'];
     211                                $chaines_ok = sql_countsel('spip_tradlangs','module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="OK"');
     212                                $chaines_relire = sql_countsel('spip_tradlangs','module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="RELIRE"');
     213                                $chaines_modif = sql_countsel('spip_tradlangs','module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="MODIF"');
     214                                $chaines_new = sql_countsel('spip_tradlangs','module='.sql_quote($module['module']).' AND lang='.sql_quote($lang).' AND statut="NEW"');
     215                                $infos_bilan = array(
     216                                                                        'id_tradlang_module' => $module['id_tradlang_module'],
     217                                                                        'module' => $module['module'],
     218                                                                        'lang' => $lang,
     219                                                                        'chaines_total' => $total,
     220                                                                        'chaines_ok' => $chaines_ok,
     221                                                                        'chaines_relire' => $chaines_relire,
     222                                                                        'chaines_modif' => $chaines_modif,
     223                                                                        'chaines_new' => $chaines_new
     224                                                                );
     225                                sql_insertq('spip_tradlangs_bilans',$infos_bilan);
     226                        }
     227                }
     228        }
     229}
     230
     231function tradlang_maj_attic($affiche=false){
     232        /**
     233         * Dans un premier temps, on supprimer les attics qui ont un statut NEW,
     234         * il ne serviront jamaiscar même récupérés, ils ne sont pas traduit
     235         */
     236        sql_delete('spip_tradlangs','module LIKE "attic%" AND statut="NEW"');
     237        $select_attic_id_module = sql_select('*','spip_tradlangs','module LIKE "attic%"','id_tradlang_module');
     238        while($id_module = sql_fetch($select_attic_id_module)){
     239                $module = sql_getfetsel('module','spip_tradlang_modules','id_tradlang_module='.intval($id_module['id_tradlang_module']));
     240                if($module){
     241                        $attics_module = sql_select('id_tradlang,id,module,lang','spip_tradlangs','id_tradlang_module='.intval($id_module['id_tradlang_module']).' AND module LIKE "attic%"');
     242                        while($id_tradlang = sql_fetch($attics_module)){
     243                                if(!sql_getfetsel('id_tradlang','spip_tradlangs','id='.sql_quote($id_tradlang['id']).' AND module='.sql_quote($id_tradlang['module']).' AND lang='.sql_quote($id_tradlang['lang'])))
     244                                        sql_updateq('spip_tradlangs',array('statut'=>'attic','module'=>$module),'id_tradlang='.intval($id_tradlang['id_tradlang']));
     245                                else
     246                                        sql_delete('spip_tradlangs','id_tradlang='.intval($id_tradlang['id_tradlang']));
     247                        }
     248                }
     249        }
     250        sql_delete('spip_tradlang_modules','module LIKE "attic%"');
     251}
    180252/**
    181253 * Fonction de desinstallation
     
    183255 * -* la table spip_tradlangs
    184256 * -* la table spip_tradlang_modules
     257 * -* la table spip_tradlangs_bilans
    185258 * -* les éléments de spip_versions concernant l'obet tradlang
    186259 * -* les éléments de spip_versions_fragments concernant l'obet tradlang
     
    190263        sql_drop_table("spip_tradlangs");
    191264        sql_drop_table("spip_tradlang_modules");
     265        sql_drop_table("spip_tradlangs_bilans");
    192266        sql_delete('spip_versions','objet='.sql_quote('tradlang'));
    193267        sql_delete('spip_versions_fragments','objet='.sql_quote('tradlang'));
  • _plugins_/trad-lang/trunk/tradlang_fonctions.php

    r75909 r75953  
    131131/**
    132132 * <BOUCLE(TRADLANG_MODULES)>
    133  * On enlève les modules attic*
    134133 */
    135134function boucle_TRADLANG_MODULES_dist($id_boucle, &$boucles) {
    136135        $boucle = &$boucles[$id_boucle];
    137136        $id_table = $boucle->id_table;
    138 
    139         /**
    140          * Par defaut, selectionner uniquement les modules qui ne sont pas attic*
    141          */
    142         if (!isset($boucle->modificateur['tout'])
    143         && !isset($boucle->modificateur['criteres']['module'])
    144         && !isset($boucle->modificateur['criteres']['id_tradlang_module'])) {
    145                 array_unshift($boucle->where,array("'NOT LIKE'", "'$id_table." ."module'", "'\"attic%\"'"));
    146                 array_unshift($boucle->where,array("'NOT LIKE'", "'$id_table." ."module'", "'\"contrib\"'"));
    147         }
    148137       
    149138        /**
     
    160149/**
    161150 * <BOUCLE(TRADLANGS)>
    162  * On enlève les modules attic*
    163151 */
    164152function boucle_TRADLANGS_dist($id_boucle, &$boucles) {
    165153        $boucle = &$boucles[$id_boucle];
    166154        $id_table = $boucle->id_table;
    167         // Par defaut, selectionner uniquement les modules qui ne sont pas attic*
    168         if (!isset($boucle->modificateur['tout'])
    169                 && !isset($boucle->modificateur['criteres']['module'])
    170                 && !isset($boucle->modificateur['criteres']['id_tradlang'])
    171                 && !isset($boucle->modificateur['criteres']['id_tradlang_module'])
    172         ) {
    173                 array_unshift($boucle->where,array("'NOT LIKE'", "'$id_table." ."module'", "'\"attic%\"'"));
    174                 array_unshift($boucle->where,array("'NOT LIKE'", "'$id_table." ."module'", "'\"%attic\"'"));
    175                 array_unshift($boucle->where,array("'NOT LIKE'", "'$id_table." ."module'", "'\"contrib\"'"));
    176         }
    177         if(isset($boucle->nom) && ($boucle->nom == 'calculer_langues_utilisees') && $boucle->id_boucle == 'tradlang'){
     155        if(isset($boucle->nom) && ($boucle->nom == 'calculer_langues_utilisees') && $boucle->id_boucle == 'tradlang')
    178156                array_unshift($boucle->where,array("'='", "'$id_table." ."id_tradlang'", "'0'"));
    179         }
    180157        return calculer_boucle($id_boucle, $boucles);
    181158}
     
    240217function critere_langue_complete_dist($id_boucle, &$boucles, $crit){
    241218        $boucle = &$boucles[$id_boucle];
    242     $id_table = $boucle->id_table;
     219        $id_table = $boucle->id_table;
    243220        if($id_table == 'tradlangs'){
    244221                if(isset($crit->param[0][0]))
     
    252229                ';
    253230
    254         array_unshift($boucle->where,array("'='", "'$id_table." ."statut'", "'\"OK\"'"));
     231                array_unshift($boucle->where,array("'='", "'$id_table." ."statut'", "'\"OK\"'"));
    255232        $boucles[$id_boucle]->group[] = "$id_table.lang";
    256233        $boucles[$id_boucle]->having[] = "\n\t\t".'$module_having';
Note: See TracChangeset for help on using the changeset viewer.