Changeset 77048 in spip-zone


Ignore:
Timestamp:
Oct 7, 2013, 7:49:10 PM (8 years ago)
Author:
kent1@…
Message:

Faire fonctionner correctement cette fonction en ne prenant pas en compte les statuts "attic"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/trad-lang/trunk/inc/tradlang_verifier_langue_base.php

    r75953 r77048  
    55 * © Florent Jugla, Fil, kent1
    66 *
    7  * @package SPIP\Tradlang\
    87 */
    98 
     
    2423        $langue_mere = sql_getfetsel('lang_mere','spip_tradlang_modules','module='.sql_quote($module));
    2524       
     25        $trad_langue_mere_id = $trad_langue_cible_id = array();
     26       
    2627        /**
    27          * On teste et on ajoute ce qu'il y a en trop
     28         * On crée deux tableaux:
     29         * -* l'ensemble des id de la langue mère non supprimés
     30         * -* l'ensemble des id de la langue cible non supprimés
    2831         */
    29         $trad_langue_mere_id = array();
    30         $trad_langue_mere = sql_select('*','spip_tradlangs','module='.sql_quote($module).' AND lang='.sql_quote($langue_mere));
    31         while($row_langue_mere = sql_fetch($trad_langue_mere)){
    32                 $trad_langue_mere_id[] = $row_langue_mere['id'];
     32        $trad_langue_meres = sql_allfetsel('id','spip_tradlangs','module='.sql_quote($module).' AND lang='.sql_quote($langue_mere).' AND statut !="attic"');
     33        foreach($trad_langue_meres as $trad_langue_mere){
     34                $trad_langue_mere_id[] = $trad_langue_mere['id'];
    3335        }
    34         $trad_langue_cible_id = array();
    35         $trad_langue_cible  = sql_select('*','spip_tradlangs','module='.sql_quote($module).' AND lang='.sql_quote($langue));
    36         while($row_langue_cible = sql_fetch($trad_langue_cible)){
    37                 $trad_langue_cible_id[] = $row_langue_cible['id'];
     36        $trad_langue_cibles  = sql_allfetsel('id','spip_tradlangs','module='.sql_quote($module).' AND lang='.sql_quote($langue).' AND statut !="attic"');
     37        foreach($trad_langue_cibles as $trad_langue_cible){
     38                $trad_langue_cible_id[] = $trad_langue_cible['id'];
    3839        }
    3940
     41        $inserees = $supprimees = 0;
    4042        /**
    41          * $diff1 est l'ensemble des chaines manquantes dans la langue fille
     43         * $diff1 est l'ensemble des chaines manquantes dans la langue cible
    4244         * et donc à insérer
     45         *
     46         * On met dans un tableau les chaines en question si on a au moins un résultat
    4347         */
    4448        $diff1 = array_diff($trad_langue_mere_id, $trad_langue_cible_id);
    45         $diff1_array = sql_allfetsel('*','spip_tradlangs','module='.sql_quote($module).' AND lang='.sql_quote($langue_mere).' AND '.sql_in('id',$diff1));
    46         $inserees = 0;
     49        if(count($diff1) > 0)
     50                $diff1_array = sql_allfetsel('*','spip_tradlangs','module='.sql_quote($module).' AND lang='.sql_quote($langue_mere).' AND '.sql_in('id',$diff1));
     51       
    4752        /**
    4853         * $diff2 est l'ensemble des chaines en trop dans la langue fille
     
    5055         */
    5156        $diff2 = array_diff($trad_langue_cible_id,$trad_langue_mere_id);
    52         $supprimees = 0;
     57       
     58        /**
     59         * Si on a des éléments dans les diffs, on applique les modifications
     60         */
    5361        if((count($diff1)>0) OR (count($diff2)>0)){
    54                 if(is_array($diff1_array)){
     62                if(isset($diff1_array) && is_array($diff1_array)){
    5563                        foreach($diff1_array as $key => $array){
    5664                                $array['orig'] = 0;
     
    6573                        }
    6674                }
    67 
    68                 foreach($diff2 as $key => $id){
    69                         $array['id'] = $id;
    70                         $array['statut'] = 'attic';
    71                         $id_tradlang = sql_getfetsel('id_tradlang','spip_tradlangs','id='.sql_quote($id)." AND module=".sql_quote($module)." AND lang=".sql_quote($langue));
    72                         sql_updateq('spip_tradlangs',$array,'id_tradlang='.intval($id_tradlang));
    73                         $supprimees++;
     75                /**
     76                 * On donne le statut attic aux chaînes en trop
     77                 * On incrémente le nombre de chaînes supprimées
     78                 */
     79                if(count($diff2) > 0){
     80                        foreach($diff2 as $key => $id){
     81                                sql_updateq('spip_tradlangs',array('statut' => 'attic'),'id='.sql_quote($id).' AND lang='.sql_quote($langue).' AND module='.sql_quote($module));
     82                                $supprimees++;
     83                        }
    7484                }
    7585        }else
Note: See TracChangeset for help on using the changeset viewer.