Changeset 58667 in spip-zone


Ignore:
Timestamp:
Feb 18, 2012, 12:42:09 PM (8 years ago)
Author:
marcimat@…
Message:

Hop, fin de la migration, on se rend dépendant de bonux 3 pour #SET_PUSH et {compteur}
+ merci l'API de liens, ça simplifie ! :)

Location:
_plugins_/tradsync/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/tradsync/trunk/action/synchroniser_mots_traductions.php

    r35486 r58667  
    4040        $_id_objet = id_table_objet($objet);
    4141        $table = table_objet_sql($objet);
    42         $in = sql_in($_id_objet, $ids);
    4342
    44         // on ne prend que les elements qui ne sont des traductions, pas les originaux
    45         if ($res = sql_select(array($_id_objet, 'id_trad'),     $table, array($in, 'id_trad>'.sql_quote(0), "$_id_objet <> id_trad"))) {
    46                 while ($trad = sql_fetch($res)) {
    47                         $id_ori = $trad['id_trad'];
    48                         $id_trad = $trad[$_id_objet];
    49                         $m_ori = $m_trad = array();
    50                         if ($mots = sql_select('id_mot', 'spip_mots_'.$objet, "$_id_objet = ".sql_quote($id_trad))) {
    51                                 while ($mot = sql_fetch($mots)) {
    52                                         $m_trad[] = $mot['id_mot'];
    53                                 }
     43        include_spip('action/editer_liens');
     44        // les ids sont les traductions
     45        // dont on veut synchroniser les mots avec leur source d'origine
     46        foreach ($ids as $id) {
     47                // on ne prend que les elements qui ne sont des traductions, pas les originaux
     48                // et on recupere l'id de l'objet source
     49                if ($id_source = sql_getfetsel('id_trad', $table, array("$_id_objet=".sql_quote($id), 'id_trad>'.sql_quote(0), "$_id_objet <> id_trad"))) {
     50                        // tous les mots sur l'objet d'origine de la traduction
     51                        $mots = objet_trouver_liens(array('mot'=>'*'), array($type=>$id_source));
     52                        foreach ($mots as $m) {
     53                                objet_associer(array('mot'=>$m['mot']), array($type=>$id), $m);
    5454                        }
    55                         if ($mots = sql_select('id_mot', 'spip_mots_'.$objet, "$_id_objet = ".sql_quote($id_ori))) {
    56                                 while ($mot = sql_fetch($mots)) {
    57                                         $m_ori[] = $mot['id_mot'];
    58                                 }
    59                         }                       
    60                         $absents = array_diff($m_ori, $m_trad);
    61                         $surplus = array_diff($m_trad, $m_ori);
    62                         $vals = array();
    63                         if ($absents) {
    64                                 foreach ($absents as $absent) {
    65                                         $vals[] = array($_id_objet => $id_trad, 'id_mot' => $absent);
    66                                 }
    67                                 sql_insertq_multi('spip_mots_'.$objet, $vals);
    68                         }
    69                         /*
    70                         if ($surplus) {
    71                                 foreach ($surplus as $trop) {
    72                                         sql_delete('spip_mots_'.$objet, array($_id_objet => $id_trad, 'id_mot' => $trop));
    73                                 }
    74                         }
    75                         */             
    7655                }
    7756        }
    78 
    7957}
    8058
  • _plugins_/tradsync/trunk/paquet.xml

    r58663 r58667  
    22        prefix="tradsync"
    33        categorie="edition"
    4         version="2.0.0-dev"
    5         etat="dev"
     4        version="2.0.0"
     5        etat="test"
    66        compatibilite="[3.0.0-beta2;3.0.*]"
    77        logo="prive/themes/spip/images/tradsync-32.png"
    8 >       
     8>
    99
    1010        <nom>Traductions synchrones</nom>
     
    2020        <necessite nom="tradrub" compatibilite="[2.0.0;[" />
    2121
    22         <!-- pour #SET_PUSH (defini aussi dans ce plugin) -->
    23         <utilise nom="spip_bonux" compatibilite="[3.0.0-dev;[" />
     22        <!-- pour #SET_PUSH , {compteur} et #COMPTEUR -->
     23        <necessite nom="spip_bonux" compatibilite="[3.0.0-dev;[" />
    2424
    2525        <menu nom="traductions" titre="tradsync:espace_traducteurs" parent="menu_publication" icone="images/tradsync-16.png" />
  • _plugins_/tradsync/trunk/prive/objets/liste/articles_mots_differents.html

    r58664 r58667  
    11#SET{id_differents,#ARRAY}
    22<BOUCLE_art_trad(ARTICLES){traductions #ENV{langue,#LANG}}>
    3         <BOUCLE_compte(mots_articles){id_article}> </BOUCLE_compte>#SET{cpt,#TOTAL_BOUCLE}</B_compte>#SET{cpt,0}<//B_compte>
     3        <BOUCLE_compte(mots_liens){objet=article}{id_objet=#ID_ARTICLE}> </BOUCLE_compte>#SET{cpt,#TOTAL_BOUCLE}</B_compte>#SET{cpt,0}<//B_compte>
    44        <BOUCLE_art_origine(ARTICLES){id_article=#ID_TRAD}{compteur mots}>
    55                <BOUCLE_meme_nombre(CONDITION){si #GET{cpt}|=={#COMPTEUR{mots}}}>
    66                [(#REM) si meme nombre, on les verifie un par un ... ]
    7                         <BOUCLE_mots_art_trad(mots_articles){id_article=#_art_trad:ID_ARTICLE}>
     7                        <BOUCLE_mots_art_trad(mots_liens){objet=article}{id_objet=#_art_trad:ID_ARTICLE}>
    88                                <BOUCLE_verifier_mot(ARTICLES){id_article=#_art_trad:ID_TRAD}{id_mot}> </BOUCLE_verifier_mot>
    99                                        [(#SET_PUSH{id_differents,#_art_trad:ID_ARTICLE})]
  • _plugins_/tradsync/trunk/prive/objets/liste/rubriques_mots_differents.html

    r58664 r58667  
    11#SET{id_differents,#ARRAY}
    22<BOUCLE_rub_trad(RUBRIQUES){traductions #ENV{langue,#LANG}}{compteur mots}>
    3         <BOUCLE_compte(mots_rubriques){id_rubrique}> </BOUCLE_compte>#SET{cpt,#TOTAL_BOUCLE}</B_compte>#SET{cpt,0}<//B_compte>
     3        <BOUCLE_compte(mots_liens){objet=rubrique}{id_objet=#ID_RUBRIQUE}> </BOUCLE_compte>#SET{cpt,#TOTAL_BOUCLE}</B_compte>#SET{cpt,0}<//B_compte>
    44        <BOUCLE_rub_origine(RUBRIQUES){id_rubrique=#ID_TRAD}{compteur mots}>
    55                <BOUCLE_meme_nombre(CONDITION){si #GET{cpt}|=={#COMPTEUR{mots}}}>
    66                [(#REM) si meme nombre, on les verifie un par un ... ]
    7                         <BOUCLE_mots_rub_trad(mots_rubriques){id_rubrique=#_rub_trad:ID_RUBRIQUE}>
     7                        <BOUCLE_mots_rub_trad(mots_liens){objet=rubrique}{id_objet=#_rub_trad:ID_RUBRIQUE}>
    88                                <BOUCLE_verifier_mot(RUBRIQUES){id_rubrique=#_rub_trad:ID_TRAD}{id_mot}> </BOUCLE_verifier_mot>
    99                                        [(#SET_PUSH{id_differents,#_rub_trad:ID_RUBRIQUE})]
  • _plugins_/tradsync/trunk/tradsync_fonctions.php

    r58663 r58667  
    66 */
    77
    8 /**
    9  * Définir #SET_PUSH
    10  * pour éviter de dépendre de spip_bonux_3 juste pour ça.
    11  *
    12  * -------- provient de SPIP BONUX 3 -----------
    13  * Empile un element dans un tableau declare par #SET{tableau,#ARRAY}
    14  * #SET_PUSH{tableau,valeur}
    15  *
    16  * @param object $p : objet balise
    17  * @return ""
    18 **/
    19 if (!function_exists("balise_SET_PUSH_dist")) {
    20 function balise_SET_PUSH_dist($p){
    21         $_nom = interprete_argument_balise(1,$p);
    22         $_valeur = interprete_argument_balise(2,$p);
    23 
    24         if ($_nom AND $_valeur)
    25                 // si le tableau n'existe pas encore, on le cree
    26                 // on ajoute la valeur ensuite (sans passer par array_push)
    27                 $p->code = "vide((\$cle=$_nom)
    28                         . (is_array(\$Pile['vars'][\$cle])?'':\$Pile['vars'][\$cle]=array())
    29                         . (\$Pile['vars'][\$cle][]=$_valeur))";
    30         else
    31                 $p->code = "''";
    32 
    33         $p->interdire_scripts = false; // la balise ne renvoie rien
    34         return $p;
    35 }
    36 }
    37  
    388
    399/**
Note: See TracChangeset for help on using the changeset viewer.