Changeset 54571 in spip-zone


Ignore:
Timestamp:
Nov 17, 2011, 9:06:53 PM (8 years ago)
Author:
maieul@…
Message:

nouvelles requetes sql pour spip 3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fusion_mots/branches/v1/inc/fusionner_mots.php

    r54389 r54571  
    55        // $source      =>      array des id_mot
    66        // $cible       =>      id_mot 
     7
     8        $objets = sql_allfetsel('DISTINCT objet', 'spip_mots_liens');
     9
    710       
    8         $objets = array('article','breve','document','forum','rubrique','syndic');
     11        foreach($objets as $objet){
     12                $objet = sql_quote($objet['objet']);
     13               
    914       
    10         foreach ($objets as $objet){
    11                 $table = 'spip_mots_'.table_objet($objet);
    12                 if ($objet == 'forum') {// une petite exception
    13                         $table = 'spip_mots_forum';
    14                 }       
    15                
    16                
    1715                foreach ($source as $id_mot){
    1816                        if ($id_mot !=$cible){
    1917                               
    2018                                // pour éviter les entrées double, vérifier les liens déjà existant
    21                                 $liens_existants        = sql_allfetsel('id_'.$objet,$table,'id_mot='.intval($cible));
     19                                $liens_existants        = sql_allfetsel('id_objet','spip_mots_liens','id_mot='.intval($cible).' and objet='.$objet);
     20
    2221               
    2322                                $liens_existants_formates = array();
    2423                                foreach ($liens_existants as $lien){
    25                                         $liens_existants_formates[] = $lien['id_'.$objet];
     24                                        $liens_existants_formates[] = $lien['id_objet'];
    2625                                }
    2726                                $liens_existants_formates = implode($liens_existants_formates,',');
    2827                               
    29                                 // On met à jour, sauf quand le liens est déjà existant
    30                                 $where = 'id_mot='.intval($id_mot);
     28                                // On met à jour, sauf quand le lien est déjà existant
     29                                $where = 'id_mot='.intval($id_mot).' and objet='.$objet;
    3130                                if ($liens_existants_formates != ''){
    32                                         $where.=  ' and '. sql_in('id_'.$objet,$liens_existants_formates,'NOT') ;       
    33                                        
    34                                 }
    35                                 sql_update($table, array("id_mot"=>sql_quote($cible)),$where); 
     31                                        $where.=  ' and '. sql_in('id_objet',$liens_existants_formates,'NOT')   ;
     32                                }       
     33                                sql_update('spip_mots_liens', array("id_mot"=>sql_quote($cible)),$where);       
    3634                                // on supprime les anciens liens qui existent encore, ceux qu'on n'a pas modifié pour cause de duplicata
    37                                 sql_delete($table,'id_mot='.$id_mot);
    38                                
    39                                 // On supprime le mot
    40                                 sql_delete ('spip_mots','id_mot='.$id_mot);
     35                                sql_delete('spip_mots_liens','id_mot='.$id_mot.' and objet='.$objet);
     36                       
    4137                        }
    4238                }
    4339        }
    44        
    45 
    46        
     40        // suppression des mots
     41        sql_delete('spip_mots','id_mot!='.$cible.' and '.sql_in('id_mot',$source));
    4742}
    4843?>
Note: See TracChangeset for help on using the changeset viewer.