source: spip-zone/_plugins_/selection_articles/trunk/action/selection_interface.php @ 103945

Last change on this file since 103945 was 103945, checked in by marcimat@…, 3 years ago

Lorsqu'on modifie un article d'une sélection d'article, on demande à invalider les caches pour que le site se mette à jour sans attendre.

File size: 4.2 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;
4
5function action_selection_interface() {
6        $id_rubrique = _request("id_rubrique");
7        if (!autoriser('modifier','rubrique', $id_rubrique)) die ("Interdit");
8
9
10        // Bouton REMONTER
11        if ($_GET["remonter_ordre"] > 0) {
12       
13                $remonter = _request("remonter_ordre");
14                $result = sql_select("*", "spip_pb_selection", "id_rubrique=$id_rubrique", "", "ordre");
15               
16                while ($row = sql_fetch($result)) {
17                        $article = $row["id_article"];
18                        $ordre = $row["ordre"];
19                       
20                       
21                        if ($article == $remonter) break;
22                        else {
23                                $ordre_prec = $ordre;
24                                $art_prec = $article;
25                        }
26                }
27                sql_updateq("spip_pb_selection", array("ordre" => $ordre_prec), "id_rubrique = '$id_rubrique' AND id_article='$remonter'");
28                sql_updateq("spip_pb_selection", array("ordre" => $ordre), "id_rubrique = '$id_rubrique' AND id_article='$art_prec'");
29                // invalider les caches
30                include_spip('inc/invalideur');
31                suivre_invalideur("id='id_rubrique/$id_rubrique'");
32        }
33
34
35        if ($_GET["descendre_ordre"] > 0) {
36                $descendre = _request("descendre_ordre");
37
38                if (!autoriser('modifier','rubrique', $id_rubrique)) die ("Interdit");
39
40                $result = sql_select("ordre", "spip_pb_selection", "id_rubrique=$id_rubrique AND id_article=$descendre", "", "ordre");
41
42                if ($row = sql_fetch($result)) {
43                        $ordre = $row["ordre"];
44                       
45                        $result2 = sql_select("*", "spip_pb_selection", "id_rubrique=$id_rubrique AND ordre>$ordre", "ordre LIMIT 0,1");
46                        if ($row2 = sql_fetch($result2)) {
47                                $ordre_suiv = $row2["ordre"];
48                                $art_suiv = $row2["id_article"];
49       
50                                sql_updateq("spip_pb_selection", array("ordre" => $ordre_suiv), "id_rubrique = '$id_rubrique' AND id_article='$descendre'");
51                                sql_updateq("spip_pb_selection", array("ordre" => $ordre), "id_rubrique = '$id_rubrique' AND id_article='$art_suiv'");
52                                // invalider les caches
53                                include_spip('inc/invalideur');
54                                suivre_invalideur("id='id_rubrique/$id_rubrique'");
55                        }
56               
57                }
58       
59        }
60
61        if ($_GET["ajouter_selection"] > 0) {
62                $ajouter = _request("ajouter_selection");
63
64                if (!autoriser('modifier','rubrique', $id_rubrique)) die ("Interdit");
65       
66                $result = sql_select("id_article", "spip_articles", "id_article=$ajouter");
67                if ($row = sql_fetch($result)) {
68                        $result_test = sql_select("id_article", "spip_pb_selection", "id_rubrique=$id_rubrique AND id_article=$ajouter");
69                        if ($row_test = sql_fetch($result_test)) {
70                                echo "Cet article est déjà sélectionné.";
71                        } else {
72                                // Pas moyen de faire fonctionner le LIMIT 0,1 et l'ordre inverse avec sqlite
73                                $result_num = sql_select("ordre", "spip_pb_selection", "id_rubrique=$id_rubrique", "ordre");
74                                $ordre = 0;
75                                while ($row_num = sql_fetch($result_num)) {
76                                        $ordre = $row_num["ordre"];
77                                }
78                                $ordre ++;
79                                sql_insertq("spip_pb_selection", array('id_rubrique' => $id_rubrique, 'id_article'=>$ajouter, 'ordre'=>$ordre));
80                                // invalider les caches
81                                include_spip('inc/invalideur');
82                                suivre_invalideur("id='id_rubrique/$id_rubrique'");
83                        }
84       
85                } else {
86                        echo "Cet article n'existe pas.";
87                }
88       
89       
90        }
91
92        if ($_GET["supprimer_ordre"] > 0) {
93                $supprimer = _request("supprimer_ordre");
94               
95                if (!autoriser('modifier','rubrique', $id_rubrique)) die ("Interdit");
96                sql_delete("spip_pb_selection", "id_rubrique=$id_rubrique AND id_article=$supprimer");
97                // invalider les caches
98                include_spip('inc/invalideur');
99                suivre_invalideur("id='id_rubrique/$id_rubrique'");
100        }
101
102        if ($_GET["nouvel_ordre"]) {
103                $nouvel_ordre = explode(",", $_GET["nouvel_ordre"]);
104                if (count($nouvel_ordre) > 0) {
105                        sql_delete("spip_pb_selection", "id_rubrique=$id_rubrique");
106                        $ordre = 0;
107                        foreach($nouvel_ordre AS $id_article) {
108                                $ordre++;
109                                $id_article = substr($id_article, 9, 1000);
110                                        sql_insertq(
111                                                "spip_pb_selection", 
112                                                array(
113                                                        'id_rubrique' => $id_rubrique, 
114                                                        'id_article'=>$id_article, 
115                                                        'ordre'=>$ordre)
116                                                );
117                        }
118                        // invalider les caches
119                        include_spip('inc/invalideur');
120                        suivre_invalideur("id='id_rubrique/$id_rubrique'");
121                }
122        }
123
124        include_spip("inc/utils");
125        include_spip("public/assembler");
126        $contexte = array('id_rubrique'=>$_GET["id_rubrique"]);
127
128        $p = evaluer_fond("selection_interface", $contexte);
129        echo $p["texte"];
130}
Note: See TracBrowser for help on using the repository browser.