3498dca235029b86de2503b31789afeea76901c2
[mw_pages] / app / mods / pages / admin.php
1 <?php
2
3   class mw_pages_admin extends mw_mod{
4
5     function index(&$env){
6       $data = $env->data();
7       if(($arbo = $data->pages_arbo()) !== false){
8         $env->set_out("arbo", $arbo);
9         $id_parent = isset($_GET[$env->param("parent")]) ? $_GET[$env->param("parent")] : null;
10         if(
11           (
12             $pages = $data->pages(
13               array(
14                 "id_parent" => $id_parent,
15                 "order_by"  => "position",
16                 "order"     => "ASC",
17                 "start"     => isset($_GET[$env->param("start")]) && $_GET[$env->param("start")] ? $_GET[$env->param("start")] : 0,
18                 "max"       => $env->config("max_list")
19               )
20             )
21           ) !== false
22         ){
23           $env->set_out("pages", $pages);
24           $ariane = array();
25           if($id_parent){
26             if(($ariane = $data->page_ariane($id_parent)) === false){
27               $env->erreur("impossible de lire le fil d'ariane");
28             }
29           }
30           $env->set_out("ariane", $ariane);
31         }
32         else $env->erreur("impossible de lire la liste des pages");
33       }
34       else $env->erreur("impossible de lire l'arborescence des pages");
35     }
36
37     function validate_POST_page(&$env, $page = null){
38       $page = isset($page) ? $page : array();
39       $_page = array();
40       if(($user = $env->user()) && $user["id"]){
41         if($_POST){
42           $_page["id_parent"] = isset($_POST["id_parent"]) ? ($_POST["id_parent"] ? $_POST["id_parent"] : null) : ($page["id_parent"] ? $page["id_parent"] : null);
43           $_page["title"] = isset($_POST["title"]) ? $_POST["title"] : ($page["title"] ? $page["title"] : null);
44           $_page["content"] = isset($_POST["content"]) ? $_POST["content"] : ($page["content"] ? $page["content"] : null);
45           $_page["user"] = $user["id"];
46           $_page["enabled"] = isset($_POST["enabled"]) ? $_POST["enabled"] : ($page["enabled"] ? $page["enabled"] : 1);
47           $_page["position"] = isset($_POST["position"]) ? $_POST["position"] : ($page["position"] ? $page["position"] : 0);
48         }
49       }
50       else $env->message("impossible de lire les informations de l'utilisateur");
51       return $_page;
52     }
53
54     function add(&$env){
55       $data = $env->data();
56       if(($arbo = $data->pages_arbo()) !== false){
57         $env->set_out("arbo", $arbo);
58         $page = array();
59         if($_POST){
60           $page = $this->validate_POST_page($env);
61           if(!$env->messages()){
62             if(($id_page = $data->add_page($page)) !== false){
63               $env->redirect(
64                 $env->url("pages/admin/edit", array("id" => $id_page)),
65                 "la page a &eacute;t&eacute; ajout&eacute;e"
66               );
67             }
68             else $env->erreur("impossible d'ajouter la page");
69           }
70         }
71         $env->set_out("page", $page);
72       }
73       else $env->erreur("impossible de lire l'arborescence des pages");
74     }
75
76     function edit(&$env){
77       $data = $env->data();
78       if($page = $data->page($_GET[$env->param("id")])){
79         if(($arbo = $data->pages_arbo()) !== false){
80           $env->set_out("arbo", $arbo);
81           if($_POST){
82             $page = $this->validate_POST_page($env, $page);
83             if(!$env->messages()){
84               if($data->set_page($_GET[$env->param("id")], $page)){
85                 $env->redirect(
86                   $env->url("pages/admin/edit", array("id" => $_GET[$env->param("id")])),
87                   "la page a &eacute;t&eacute; modifi&eacute;e"
88                 );
89               }
90               else $env->erreur("impossible de modifier la page");
91             }
92           }
93           $env->set_out("page", $page);
94         }
95         else $env->erreur("impossible de lire l'arborescence des pages");
96       }
97       else $env->erreur("impossible de lire les informations de la page");
98     }
99
100     function edit_pages(&$env){
101       if(($user = $env->user()) && $user["id"]){
102         if($_POST){
103           $data = $env->data();
104           $OK = true;
105           foreach($_POST as $key => $value){
106             $OK = true;
107             if(substr($key, 0, 9) == "position_"){
108               $id_page = substr($key, 9);
109               $enabled = isset($_POST["enabled_".$id_page]) && $_POST["enabled_".$id_page] ? 1 : 0;
110               if(!$data->set_page($id_page, array("position" => $value, "enabled" => $enabled))){
111                 $env->erreur("impossible d'enregistrer la position");
112                 $OK = false;
113                 $break;
114               }
115             }
116           }
117           if($OK){
118             $env->redirect(
119               $env->url("pages/admin"),
120               "Les informations des pages ont &eacute;t&eacute; enregistr&eacute;es"
121             );
122           }
123         }
124         else $env->erreur("donnees manquantes");
125       }
126       else $env->erreur("impossible de lire les informations de l'utilisateur");
127     }
128
129     function set_accueil(&$env){
130       if(($user = $env->user()) && $user["id"]){
131         $data = $env->data();
132         $start_action = "";
133         $start_action_params = "";
134         $id_page = $_POST["id"] ? $_POST["id"] : "";
135         if($id_page){
136           if($page = $data->page($id_page)){
137             $start_action = "pages/view/page";
138             $start_action_params = @serialize(array("id" => $id_page));
139           }
140           else{
141             $start_action = false;
142             $env->erreur("impossible de lire les informations de la page");
143           }
144         }
145         if($start_action !== false && $start_action_params !== false){
146           if(
147                $data->set_config("start_action", $start_action)
148             && $data->set_config("start_action_params", $start_action_params)
149           ){
150             $data->set_config("plugins_pages_start_id", $id_page);
151             $env->redirect(
152               $env->url("pages/admin"),
153               "La page d'accueil a &eacute;t&eacute; enregistr&eacute;e"
154             );
155           }
156           else $env->erreur("impossible d'enregistrer la page d'accueil dans la configuration");
157         }
158       }
159       else $env->erreur("impossible de lire les informations de l'utilisateur");
160     }
161
162     function del(&$env){
163       $data = $env->data();
164       if($page = $data->page($_GET[$env->param("id")])){
165         if($data->del_page($page["id"])){
166           $env->redirect(
167             $env->url("pages/admin"),
168             "la page a &eacute;t&eacute; supprim&eacute;e"
169           );
170         }
171         else $env->erreur("Impossible de supprimer la page");
172       }
173       else $env->erreur("impossible de lire les informations de la page");
174     }
175
176   }
177
178 ?>