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