551d9c81a04c638005ba935f7ddfaa77157ae3ad
[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"] : (isset($page["enabled"]) ? $page["enabled"] : 1);
47           $_page["position"] = isset($_POST["position"]) ? $_POST["position"] : (isset($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       $_SESSION["upload_dir"] = $env->path("web").($env->path("web") ? "" : "/").$env->path("content")."uploads";
57       if(($arbo = $data->pages_arbo()) !== false){
58         $env->set_out("arbo", $arbo);
59         $page = array(
60           "title" => "",
61           "content" => ""
62         );
63         if($_POST){
64           $page = $this->validate_POST_page($env);
65           if(!$env->messages()){
66             if(($id_page = $data->add_page($page)) !== false){
67               $env->redirect(
68                 $env->url("pages/admin/edit", array("id" => $id_page)),
69                 "la page a &eacute;t&eacute; ajout&eacute;e"
70               );
71             }
72             else $env->erreur("impossible d'ajouter la page");
73           }
74         }
75         $env->set_out("page", $page);
76       }
77       else $env->erreur("impossible de lire l'arborescence des pages");
78     }
79
80     function edit(&$env){
81       $data = $env->data();
82       $_SESSION["upload_dir"] = $env->path("web").($env->path("web") ? "" : "/").$env->path("content")."uploads";
83       if($page = $data->page($_GET[$env->param("id")])){
84         if(($arbo = $data->pages_arbo()) !== false){
85           $env->set_out("arbo", $arbo);
86           if($_POST){
87             $page = $this->validate_POST_page($env, $page);
88             if(!$env->messages()){
89               if($data->set_page($_GET[$env->param("id")], $page)){
90                 $env->redirect(
91                   $env->url("pages/admin/edit", array("id" => $_GET[$env->param("id")])),
92                   "la page a &eacute;t&eacute; modifi&eacute;e"
93                 );
94               }
95               else $env->erreur("impossible de modifier la page");
96             }
97           }
98           $env->set_out("page", $page);
99         }
100         else $env->erreur("impossible de lire l'arborescence des pages");
101       }
102       else $env->erreur("impossible de lire les informations de la page");
103     }
104
105     function edit_pages(&$env){
106       if(($user = $env->user()) && $user["id"]){
107         if($_POST){
108           $data = $env->data();
109           $OK = true;
110           foreach($_POST as $key => $value){
111             $OK = true;
112             if(substr($key, 0, 9) == "position_"){
113               $id_page = substr($key, 9);
114               $enabled = isset($_POST["enabled_".$id_page]) && $_POST["enabled_".$id_page] ? 1 : 0;
115               if(!$data->set_page($id_page, array("position" => $value, "enabled" => $enabled))){
116                 $env->erreur("impossible d'enregistrer la position");
117                 $OK = false;
118                 $break;
119               }
120             }
121           }
122           if($OK){
123             $env->redirect(
124               $env->url("pages/admin"),
125               "Les informations des pages ont &eacute;t&eacute; enregistr&eacute;es"
126             );
127           }
128         }
129         else $env->erreur("donnees manquantes");
130       }
131       else $env->erreur("impossible de lire les informations de l'utilisateur");
132     }
133
134     function set_accueil(&$env){
135       if(($user = $env->user()) && $user["id"]){
136         $data = $env->data();
137         $start_action = "";
138         $start_action_params = "";
139         $id_page = $_POST["id"] ? $_POST["id"] : "";
140         if($id_page){
141           if($page = $data->page($id_page)){
142             $start_action = "pages/view/page";
143             $start_action_params = @serialize(array("id" => $id_page));
144           }
145           else{
146             $start_action = false;
147             $env->erreur("impossible de lire les informations de la page");
148           }
149         }
150         if($start_action !== false && $start_action_params !== false){
151           if(
152                $data->set_config("start_action", $start_action)
153             && $data->set_config("start_action_params", $start_action_params)
154           ){
155             $data->set_config("plugins_pages_start_id", $id_page);
156             $env->redirect(
157               $env->url("pages/admin"),
158               "La page d'accueil a &eacute;t&eacute; enregistr&eacute;e"
159             );
160           }
161           else $env->erreur("impossible d'enregistrer la page d'accueil dans la configuration");
162         }
163       }
164       else $env->erreur("impossible de lire les informations de l'utilisateur");
165     }
166
167     function del(&$env){
168       $data = $env->data();
169       if($page = $data->page($_GET[$env->param("id")])){
170         if($data->del_page($page["id"])){
171           $env->redirect(
172             $env->url("pages/admin"),
173             "la page a &eacute;t&eacute; supprim&eacute;e"
174           );
175         }
176         else $env->erreur("Impossible de supprimer la page");
177       }
178       else $env->erreur("impossible de lire les informations de la page");
179     }
180
181   }
182
183 ?>