Changeset 92439 in spip-zone


Ignore:
Timestamp:
Oct 22, 2015, 7:14:36 PM (4 years ago)
Author:
kent1@…
Message:

Le post_edition fonctionnait mal

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/linkcheck/trunk/linkcheck_pipelines.php

    r92103 r92439  
    3030        //on verifie que l'on est bien dans un contexte de verification d'objet
    3131        if($flux['args']['id_objet'] && $flux['args']['type']){
     32                $champs_a_traiter = false;
    3233                $type_objet = $flux['args']['type'];
    3334                $id_objet = intval($flux['args']['id_objet']);
    3435                $table_sql = table_objet_sql($type_objet);
    35                 $champs_a_traiter = linkcheck_champs_a_traiter($table);
    36                 $tab_value=array();
    37                 foreach(array_keys($champs_a_traiter) as $ct)
    38                         if (isset($flux['data'][$ct]))
    39                                 $tab_value[$ct]=$flux['data'][$ct];
    40 
    41                 //on parcours les liens et
    42                 $tab_liens = linkcheck_lister_liens($tab_value);
    43 
    44                 //on les insère en base si besoin
    45                 linkcheck_ajouter_liens($tab_liens,$type_objet,$id_objet);
    46                        
    47                 //maintenant on vérifie que tous les liens de la base correspondant à cet objet soit encore présent ds l'objet
    48                 //on recup tout les liens de l'article presents en base
    49                 $sel = sql_select('l.url, l.id_linkcheck','spip_linkchecks_liens AS ll, spip_linkchecks AS l','l.id_linkcheck=ll.id_linkcheck AND id_objet='.$id_objet.' AND ll.objet='.sql_quote($type_objet));
    50                        
    51                 //pour chaque liens
    52                 while($lks = sql_fetch($sel)){
    53                                
    54                         //si il n'est plus ds l'article
    55                         if(!in_array($lks['url'], $tab_liens)){
    56 
    57                                 //on supprime son entrée ds la table de liaison
    58                                 sql_delete('spip_linkchecks_liens', 'id_linkcheck='.$lks['id_linkcheck'].' AND id_objet='.$id_objet.' AND objet="'.$type_objet.'"');
    59                                        
    60                                 //on regarde s'il est utilisé ailleurs ds le site
    61                                 $tpl = sql_getfetsel('count(*)','spip_linkchecks_liens', 'id_linkcheck='.$lks['id_linkcheck']);
    62                                        
    63                                 //s'il ne l'est pas
    64                                 if($tpl>0){
    65                                         //on le supprime de la table liens
    66                                         sql_delete('spip_linkchecks', 'id_linkcheck='.$lks['id_linkcheck']);
     36               
     37                $tables_a_traiter = linkcheck_tables_a_traiter();
     38                foreach($tables_a_traiter as $key_table => $table){
     39                        foreach($table as $table_sql_def => $info_table){
     40                                if($table_sql_def == $table_sql){
     41                                        $champs_a_traiter = linkcheck_champs_a_traiter($info_table);
     42                                        break;
    6743                                }
    6844                        }
     45                       
     46                        if(is_array($champs_a_traiter))
     47                                break;
    6948                }
    70                
    71                 queue_add_job('genie_linkcheck_test_postedition', 'Tests post_edition des liens d\'un objet', array($id_objet, $type_objet), 'genie/linkcheck_test_postedition');
     49                if(is_array($champs_a_traiter)){
     50                        $tab_value=array();
     51                        foreach(array_keys($champs_a_traiter) as $ct)
     52                                if (isset($flux['data'][$ct]))
     53                                        $tab_value[$ct]=$flux['data'][$ct];
     54
     55                        //on parcours les liens et
     56                        $tab_liens = linkcheck_lister_liens($tab_value);
     57
     58                        //on les insère en base si besoin
     59                        linkcheck_ajouter_liens($tab_liens,$type_objet,$id_objet);
     60
     61                        //maintenant on vérifie que tous les liens de la base correspondant à cet objet soit encore présent ds l'objet
     62                        //on recup tout les liens de l'article presents en base
     63                        $sel = sql_select('l.url, l.id_linkcheck','spip_linkchecks_liens AS ll, spip_linkchecks AS l','l.id_linkcheck=ll.id_linkcheck AND id_objet='.$id_objet.' AND ll.objet='.sql_quote($type_objet));
     64                               
     65                        //pour chaque liens
     66                        while($lks = sql_fetch($sel)){
     67                                       
     68                                //si il n'est plus ds l'article
     69                                if(!in_array($lks['url'], $tab_liens)){
     70       
     71                                        //on supprime son entrée ds la table de liaison
     72                                        sql_delete('spip_linkchecks_liens', 'id_linkcheck='.$lks['id_linkcheck'].' AND id_objet='.$id_objet.' AND objet="'.$type_objet.'"');
     73                                               
     74                                        //on regarde s'il est utilisé ailleurs ds le site
     75                                        $tpl = sql_getfetsel('count(*)','spip_linkchecks_liens', 'id_linkcheck='.$lks['id_linkcheck']);
     76                                               
     77                                        //s'il ne l'est pas
     78                                        if($tpl>0){
     79                                                //on le supprime de la table liens
     80                                                sql_delete('spip_linkchecks', 'id_linkcheck='.$lks['id_linkcheck']);
     81                                        }
     82                                }
     83                        }
     84                       
     85                        queue_add_job('genie_linkcheck_test_postedition', 'Tests post_edition des liens d\'un objet', array($id_objet, $type_objet), 'genie/linkcheck_test_postedition');
     86                }
    7287        }
    7388
Note: See TracChangeset for help on using the changeset viewer.