source: spip-zone/_plugins_/fusion_mots/trunk/inc/fusionner_mots.php @ 54389

Last change on this file since 54389 was 54389, checked in by maieul@…, 9 years ago

il faut faire un test sur les liens déjà existants pour chaque mot clef qu'on essaie de fusionner, vu que la fusion change les relations

File size: 1.4 KB
Line 
1<?php
2if (!defined("_ECRIRE_INC_VERSION")) return;
3
4function fusionner_mots($source,$cible){
5        // $source      =>      array des id_mot
6        // $cible       =>      id_mot 
7       
8        $objets = array('article','breve','document','forum','rubrique','syndic');
9       
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               
17                foreach ($source as $id_mot){
18                        if ($id_mot !=$cible){
19                               
20                                // 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));
22               
23                                $liens_existants_formates = array();
24                                foreach ($liens_existants as $lien){
25                                        $liens_existants_formates[] = $lien['id_'.$objet];
26                                }
27                                $liens_existants_formates = implode($liens_existants_formates,',');
28                               
29                                // On met à jour, sauf quand le liens est déjà existant
30                                $where = 'id_mot='.intval($id_mot);
31                                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); 
36                                // 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);
41                        }
42                }
43        }
44       
45
46       
47}
48?>
Note: See TracBrowser for help on using the repository browser.