import version 0.1
[mw_pages] / app / mods / pages / admin.php
1 <?php
2
3   class mw_pages_admin extends mw_mod
4   {
5
6     function index(&$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         ( ( $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"),
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"),
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 ?>