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

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

pas d'espace blanc après le ?> final

File size: 1.3 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                // pour éviter les entrées double, vérifier les liens déjà existant
16                $liens_existants        = sql_allfetsel('id_'.$objet,$table,'id_mot='.intval($cible));
17               
18                $liens_existants_formates = array();
19                foreach ($liens_existants as $lien){
20                        $liens_existants_formates[] = $lien['id_'.$objet];
21                }
22                $liens_existants_formates = implode($liens_existants_formates,',');
23               
24               
25                foreach ($source as $id_mot){
26                        if ($id_mot !=$cible){
27                                // On met à jour, sauf quand le liens est déjà existant
28                                $where = 'id_mot='.intval($id_mot);
29                                if ($liens_existants_formates != ''){
30                                        $where.=  ' and '. sql_in('id_'.$objet,$liens_existants_formates,'NOT') ;       
31                                       
32                                }
33                                sql_update($table, array("id_mot"=>sql_quote($cible)),$where); 
34                                // on supprime les anciens liens qui existent encore, ceux qu'on n'a pas modifié pour cause de duplicata
35                                sql_delete($table,'id_mot='.$id_mot);
36                               
37                                // On supprime le mot
38                                sql_delete ('spip_mots','id_mot='.$id_mot);
39                        }
40                }
41        }
42       
43
44       
45}
46?>
Note: See TracBrowser for help on using the repository browser.