source: spip-zone/_plugins_/_dev_/squeezecrire/squeeze_zone/balise/formulaire_ajouter_zone.php @ 19192

Last change on this file since 19192 was 19192, checked in by kent1@…, 11 years ago

hop...

File size: 5.0 KB
Line 
1<?php
2
3if (!defined("_ECRIRE_INC_VERSION")) return;    #securite
4
5include_spip ("inc/meta");
6include_spip ("inc/session");
7include_spip ("inc/autoriser");
8include_spip('base/abstract_sql');
9
10function balise_FORMULAIRE_AJOUTER_ZONE ($p) {
11        $p = calculer_balise_dynamique($p,'FORMULAIRE_AJOUTER_ZONE', array('id_article'));
12        return $p;
13}
14
15function balise_FORMULAIRE_AJOUTER_ZONE_dyn($id_article) {
16
17        //verifier si la personne en question a le droit de creer un acces prive (s'il est l'auteur de l'article)
18        if (!autoriser('modifier','article', $id_article)) {
19                return;
20        }
21
22        //on recupere les infos de l'article necessaires
23        $art = sql_select("*","spip_articles","id_article = "._q($id_article));
24        $artinfos = sql_fetch($art);
25       
26        $id_rub_orig = $artinfos["id_rubrique"];
27        $id_secteur = $artinfos["id_secteur"];
28        $titre = $artinfos["titre"];
29        $lang = $artinfos["lang"];
30       
31        // Si on est deja dans une zone on recup l'id_zone pour le supprimer plus tard
32        $zone = sql_select("id_zone","spip_zones_rubriques","id_rubrique ="._q($id_rub_orig));
33        $z = sql_fetch($zone);
34        $id_zone = $z['id_zone'];
35       
36        // Si on est deja dans une zone on aura besoin de la rubrique parente de la rubrique
37        $rub_parente = sql_select("*","spip_rubriques","id_rubrique = "._q($id_rub_orig));
38        $a = sql_fetch($rub_parente);
39        $id_rub_parente = $a['id_parent'];     
40       
41        //recuperer les donnees qui nous interessent
42        $creer_zone = _request('creer_zone'); // true ou false = checkbox
43        $supprimer_zone = _request('supprimer_zone'); // true ou false = checkbox
44       
45        $add_as_auteur = _request('add_as_auteur');
46        $add_id_auteur = _request('add_id_auteur');
47
48        $valider= _request('valider');
49       
50        if ($valider){
51                if ($creer_zone){
52               
53                        //creer la bonne rubrique avec le meme nom que l'article
54                        sql_insertq("spip_rubriques",  array("id_parent" => $id_rub_orig, "titre" => $titre, "id_secteur" => $id_secteur, "lang" => $lang));
55                        spip_log("Creation rubrique $titre", "ajouter_zone");
56                       
57                        //on recupere l'id de la rubrique
58                        $id_rub = mysql_insert_id();
59                       
60                        //on deplace l'article
61                        sql_updateq("spip_articles", array("id_rubrique" => $id_rub),"id_article=".$id_article);
62                        spip_log("Deplacement article $id_article $titre", "ajouter_zone");
63                       
64                        // on cree une zone "publique" qui a le meme nom que l'article (pas privee sinon les admin y auraient pas acces)
65                        sql_insertq("spip_zones", array("titre" => $titre, "publique" => "oui"));
66                        spip_log("Creation zone $titre", "ajouter_zone");
67                       
68                        // on recupere l'id de la zone en question
69                        $id_zone_creee = mysql_insert_id();
70                       
71                        // on applique cette zone a la rubrique
72                        sql_insertq("spip_zones_rubriques", array("id_zone" => $id_zone_creee, "id_rubrique" =>$id_rub));
73                        spip_log("Insertion article $id_article in zone $titre", "ajouter_zone");
74                       
75                        // on ajoute le ou les auteur(s) egalement
76                        $s = sql_select("id_auteur","spip_auteurs_articles","id_article ="._q($id_article));
77                        while($r = sql_fetch($s)){
78                                $id_auteur = $r["id_auteur"];
79                                sql_insertq("spip_zones_auteurs", array("id_zone" => $id_zone_creee, "id_auteur" =>$id_auteur));
80                                spip_log("Insertion auteur $id_auteur in zone $id_zone_creee - $titre", "ajouter_zone");
81                        }
82                        $invalider = true;     
83                }
84       
85                else if ($supprimer_zone){
86                        // suppression des references a la zone dans les 3 tables zones
87                        sql_delete("spip_zones_auteurs", "id_zone = ".$id_zone);
88                        sql_delete("spip_zones_rubriques", "id_zone = ".$id_zone);
89                        sql_delete("spip_zones", "id_zone = ".$id_zone);
90                        spip_log("Suppression zone $id_zone ($titre)", "ajouter_zone");
91       
92                        //on deplace l'article vers la rubrique parente
93                        sql_updateq("spip_articles", array("id_rubrique" => $id_rub_parente), "id_article=".$id_article);
94                        spip_log("Deplacement article $id_article $titre vers $id_rub_parente", "ajouter_zone");
95                       
96                        // on supprime definitivement l'ancienne rubrique
97                        sql_delete("spip_rubriques","id_rubrique = '$id_rub_orig'");
98                        spip_log("Suppression definitive de la rubrique $id_rubrique", "ajouter_zone");
99       
100                        $invalider = true;
101                }
102               
103                else {
104                        if ($add_id_auteur){
105                                if ($add_id_auteur = intval($add_id_auteur)) {
106                                        $res =sql_select("id_auteur","spip_zones_auteurs","id_zone = $id_zone AND id_auteur=$add_id_auteur");
107                                        if(!sql_fetch($res)){
108                                                sql_insertq("spip_zones_auteurs",  array("id_zone" => $id_zone, "id_auteur" => $add_id_auteur));
109                                                if($add_as_auteur){
110                                                        //on ajoute l'auteur a l'article
111                                                        sql_insertq("spip_auteurs_articles",  array("id_auteur" => $add_id_auteur, "id_article" => $id_article));
112                                                }
113                                                $invalider = true;
114                                                spip_log("ajouter utilisateur $add_id_auteur a la zone $id_zone");
115                                        }
116                                }
117                        }
118                }
119                if ($invalider){
120                        //invalider le cache afin de prendre en consideration les changements
121                        include_spip('inc/invalideur');
122                        suivre_invalideur("0",true);
123                        spip_log('invalider', 'ajouter_zone');
124                }
125                return header("Location: ".generer_url_article($id_article)."");
126        }
127       
128        return array('formulaires/ajouter_zone', 0,
129                array(
130                                'article' => $id_article,
131                                'rubrique' => $id_rub_orig,
132                                'titre' => $titre,
133                                'erreur' => $erreur
134                )
135        );
136}
137?>
Note: See TracBrowser for help on using the repository browser.