source: spip-zone/_plugins_/selection_d_objets/branches/1.2/action/ranger.php @ 69176

Last change on this file since 69176 was 69176, checked in by abelass@…, 7 years ago

Ajout de drag and drop pour le rangement de liste

File size: 7.2 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5function action_ranger_dist($arg=null){
6    if (is_null($arg)){
7        $securiser_action = charger_fonction('securiser_action', 'inc');
8        $arg = $securiser_action();
9    }   
10     $verifier_ordre=charger_fonction('verifier_ordre','inc');
11        include_spip("inc/autoriser");
12        include_spip("inc/config");
13
14        list($action,$lang,$id_objet,$objet,$objet_dest,$id_objet_dest,$load,$nouvel_ordre)=explode('-',$arg);
15
16    switch($action){
17        case 'supprimer_ordre' :
18
19            include_spip('formulaires/bouton_article');
20   
21            if($objet=='rubrique'){
22           
23                $langues=explode(",",lire_config("langues_utilisees"));
24           
25                foreach ($langues as $key => $langue){
26               
27                    $where=array(
28                        'id_objet='.$id_objet,
29                        'objet="'.$objet.'"',
30                        'lang="'.$langue.'"',   
31                        'id_objet_dest="'.$id_objet_dest.'"',
32                        'objet_dest="'.$objet_dest.'"',                                               
33                        );
34                               
35                    sql_delete("spip_selection_objets",$where);
36                       
37                    // on vérifie l'ordre des objets déjà enregistrés et on corrige si beselection_objetin
38                   
39                    $where = array(
40                    'id_objet_dest='.$id_objet_dest,
41                    'objet_dest='.sql_quote($objet_dest),
42                    'lang='.sql_quote($lang)
43                    );
44                   
45                    $ordre=$verifier_ordre($where); 
46                    }
47                }
48            else{
49           
50            spip_log('eliminer 1','selection');
51                $where=array(
52                    'id_objet='.$id_objet,
53                    'objet='.sql_quote($objet),
54                    'id_objet_dest='.$id_objet_dest,
55                    'objet_dest='.sql_quote($objet_dest),
56                    );
57                                           
58                sql_delete("spip_selection_objets",$where);
59                       
60                // on vérifie l'ordre des objets déjà enregistrés et on corrige si beselection_objetin
61                   
62                $where = array(
63                    'id_objet_dest='.$id_objet_dest,
64                    'objet_dest='.sql_quote($objet_dest),
65                    'lang='.sql_quote($lang)   
66                    );
67                   
68                $ordre=$verifier_ordre($where); 
69                }
70            break;
71        case 'remonter_ordre':
72            $where = array(             
73            'lang="'.$lang.'"',
74            'objet_dest="'.$objet_dest.'"',
75            'id_objet_dest="'.$id_objet_dest.'"',                   
76                );
77       
78            $result = sql_select("*", "spip_selection_objets", $where, "ordre");
79           
80            while ($row = sql_fetch($result)) {
81                $id_objet_row = $row["id_objet"];
82                $objet_row = $row["objet"];         
83                $ordre_row = $row["ordre"];
84                $lang_row = $row["lang"];       
85                if ($id_objet  == $id_objet_row AND $objet_row == $objet) break;
86                $ordre_new = $ordre_row;
87                $id_objet_prec = $id_objet_row;
88                $objet_prec = $objet_row;           
89           
90            }
91
92            $where = array(             
93                    "lang='$lang'",
94                    "objet_dest='$objet_dest'",
95                    "id_objet_dest='$id_objet_dest'",
96                    "id_objet='$id_objet'", 
97                    "objet='$objet'",       
98                    );
99                   
100   
101            spip_log('action '.$action.serialize($where).$ordre_new,'selecion_objet');
102               
103            sql_updateq("spip_selection_objets", array("ordre" => $ordre_new), $where);
104           
105            $where = array(             
106                    "lang='$lang'",
107                    "objet_dest='$objet_dest'",
108                    "id_objet_dest='$id_objet_dest'",
109                    "id_objet='$id_objet_prec'",   
110                    "objet='$objet_prec'",     
111                    );     
112                   
113            spip_log('action '.$action.serialize($where).$ordre_row,'selecion_objet'); 
114           
115            sql_updateq("spip_selection_objets", array("ordre" => $ordre_row), $where);
116            break;
117                case 'descendre_ordre': 
118                $where = array(             
119                'lang="'.$lang.'"',
120                'objet_dest="'.$objet_dest.'"',
121                'id_objet_dest="'.$id_objet_dest.'"',
122                "id_objet='$id_objet'", 
123                "objet='$objet'",                       
124                );
125       
126   
127            $result = sql_select("*", "spip_selection_objets",$where, "ordre");
128           
129            if ($row = sql_fetch($result)) {
130   
131                $ordre = $row["ordre"];
132               
133                $where = array(             
134                    'lang="'.$lang.'"',
135                    'objet_dest="'.$objet_dest.'"',
136                    'id_objet_dest="'.$id_objet_dest.'"',
137                    'ordre>"'.$ordre.'"',                   
138                    );
139               
140                $result2 = sql_select("*", "spip_selection_objets",$where, "ordre LIMIT 0,1");
141               
142                    if ($row2 = sql_fetch($result2)) {
143                        $ordre_suiv = $row2["ordre"];
144                        $id_objet_suiv = $row2["id_objet"];
145                        $objet_suiv = $row2["objet"];                   
146                       
147                        $where = array(             
148                            "lang='$lang'",
149                            "objet_dest='$objet_dest'",
150                            "id_objet_dest='$id_objet_dest'",
151                            "id_objet='$id_objet'", 
152                            "objet='$objet'",       
153                            );
154                       
155   
156                        sql_updateq("spip_selection_objets", array("ordre" => $ordre_suiv),$where);
157   
158                       
159                        $where = array(             
160                            "lang='$lang'",
161                            "objet_dest='$objet_dest'",
162                            "id_objet_dest='$id_objet_dest'",
163                            "id_objet='$id_objet_suiv'",   
164                            "objet='$objet_suiv'",     
165                            );
166                       
167                        sql_updateq("spip_selection_objets", array("ordre" => $ordre),$where);
168                        }
169                }
170            break;
171        case 'nouvel_ordre':
172            $nouvel_ordre=explode(',',_request('nouvel_ordre'));
173            $ordre=0;
174            foreach($nouvel_ordre AS $id_objet){
175                $ordre++;
176                sql_updateq("spip_selection_objets", array("ordre" => $ordre),'id_objet='.$id_objet);
177            }
178            break;
179        }
180
181    if($load){
182        $contexte = array('id_objet_dest'=>$id_objet_dest,'objet_dest'=>$objet_dest);
183       echo recuperer_fond('prive/objets/liste/selection_interface',$contexte);
184    } 
185return $return;
186}
187
188?>
Note: See TracBrowser for help on using the repository browser.