3 class mw_pages extends mw_plugin{
9 function description(){
10 return "Pour ajouter des pages, avec un éditeur dans l'administration du site";
14 $env->set_link("plugins/admin/mw_pages", $env->url("pages/admin"), "éditer les pages");
15 $env->set_link("admin/pages", $env->url("pages/admin"), "Pages", 40);
19 $pages = $data->pages(
23 "order_by" => "position",
29 foreach($pages["list"] as $id_page => $page){
31 "menu_top/mw_page_".$id_page,
32 $env->url("pages/view/page", array("id" => $id_page)),
41 function enable($env){
42 $plugins_pages_start_id = $env->config("plugins_pages_start_id");
43 if($plugins_pages_start_id){
46 $data->set_config("start_action", "pages/view/page")
47 && $data->set_config("start_action_params", @serialize(array("id" => $plugins_pages_start_id)))
56 function disable($env){
57 $start_action = $env->config("start_action");
58 if($start_action == "pages/view/page"){
61 $data->set_config("start_action", "")
62 && $data->set_config("start_action_params", "")
71 // ---------------------------------------------------------------------------------
75 function install($env){
76 if($env->bdd("sgbd") == "xml") return $this->install_xml($env);
77 if($env->bdd("sgbd") == "sqlite") return $this->install_sqlite($env);
78 if($env->bdd("sgbd") == "mysql") return $this->install_mysql($env);
81 function install_xml($env){
83 $sgbd = $data->sgbd();
84 $EXISTS = $sgbd->data_exists("pages");
86 return "impossible de savoir si la table #--pages existe";
89 return "la table #--pages existe deja";
91 if(!$sgbd->create_data("pages")){
92 return "imposible de creer la table #--pages";
94 if(!$sgbd->add_data("action_status", array("action" => "pages/admin", "id_status" => "1"))){
95 $sgbd->remove_data("pages");
96 return "impossible d'ajouter un statut pour l'action pages/admin";
101 function install_sqlite($env){
102 $data = $env->data();
103 $sgbd = $data->sgbd();
105 $EXISTS = $sgbd->table_exists("#--pages");
108 return "impossible de savoir si la table #--pages existe";
111 return "la table #--pages existe deja";
115 "CREATE TABLE #--pages"
116 ."( id INTEGER NOT NULL PRIMARY KEY"
117 .", id_parent INTEGER NULL"
118 .", title VARCHAR NULL"
119 .", content TEXT NULL"
120 .", date_creation TEXT NOT NULL"
121 .", user_creation INTEGER NOT NULL"
122 .", date_last_update TEXT NOT NULL"
123 .", user_last_update INTEGER NOT NULL"
124 .", enabled INTEGER NOT NULL DEFAULT 1"
125 .", position INTEGER NOT NULL DEFAULT 0"
130 return "imposible de creer la table #--pages";
132 $DELETE_TABLE = false;
134 $sgbd->query("INSERT INTO #--action_status(action, id_status) VALUES('pages/admin', 1)");
138 $sgbd->query("DROP TABLE \"main\".\"#--pages\"");
140 catch(Exception $e){}
141 return "impossible d'ajouter un statut pour l'action pages/admin";
146 function install_mysql($env){
147 $data = $env->data();
148 $sgbd = $data->sgbd();
150 $EXISTS = $sgbd->table_exists("#--pages");
153 return "impossible de savoir si la table #--pages existe";
156 return "la table #--pages existe deja";
160 "CREATE TABLE #--pages"
161 ."( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY"
162 .", id_parent INT(11) NULL"
163 .", title VARCHAR(255) NULL"
164 .", content TEXT NULL"
165 .", date_creation DATETIME NOT NULL"
166 .", user_creation INT(11) NOT NULL"
167 .", date_last_update DATETIME NOT NULL"
168 .", user_last_update INT(11) NOT NULL"
169 .", enabled TINYINT NOT NULL DEFAULT '1'"
170 .", position INT(11) NOT NULL DEFAULT '0'"
171 .") DEFAULT CHARSET=utf8";
175 return "imposible de creer la table #--pages";
178 $sgbd->query("INSERT INTO #--action_status(action, id_status) VALUES('pages/admin', 1)");
182 $sgbd->query("DROP TABLE #--pages");
184 catch(Exception $e){}
185 return "impossible d'ajouter un statut pour l'action pages/admin";
190 // ---------------------------------------------------------------------------------
194 function uninstall($env){
195 if($env->bdd("sgbd") == "xml") return $this->uninstall_xml($env);
196 if($env->bdd("sgbd") == "sqlite") return $this->uninstall_sqlite($env);
197 if($env->bdd("sgbd") == "mysql") return $this->uninstall_mysql($env);
200 function uninstall_xml($env){
201 $data = $env->data();
202 $sgbd = $data->sgbd();
203 if(!$this->disable($env)) return "impossible de desactiver le plugin";
204 $data->del_config("plugins_pages_start_id");
205 $EXISTS = $sgbd->data_exists("pages");
207 return "impossible de savoir si la table #--pages existe";
210 // return "la table #--pages n'existe pas";
212 elseif(!$sgbd->remove_data("pages")){
213 return "imposible de supprimer la table #--pages";
216 if($rst = $sgbd->open_data("action_status")){
217 while($v_rst = $sgbd->fetch_data($rst)){
219 if(isset($v_rst["action"]) && isset($v_rst["id"]) && $v_rst["action"] == "pages/admin"){
220 $ids[] = $v_rst["id"];
225 $sgbd->close_data($rst);
228 foreach($ids as $id){
229 $sgbd->del_data("action_status", $id);
235 function uninstall_sqlite($env){
236 $data = $env->data();
237 $sgbd = $data->sgbd();
238 if(!$this->disable($env)) return "impossible de desactiver le plugin";
239 $data->del_config("plugins_pages_start_id");
241 $EXISTS = $sgbd->table_exists("#--pages");
244 return "impossible de savoir si la table #--pages existe";
247 // return "la table #--pages n'existe pas";
251 $sgbd->query("DROP TABLE \"main\".\"#--pages\"");
254 return "imposible de supprimer la table #--pages";
258 $sgbd->query("DELETE FROM #--action_status WHERE action='pages/admin'");
262 "Le plugin a bien été désinstallé"
263 ." mais impossible d'enlever les droits pages/admin/* de la table action_status";
268 function uninstall_mysql($env){
269 $data = $env->data();
270 $sgbd = $data->sgbd();
271 if(!$this->disable($env)) return "impossible de desactiver le plugin";
272 $data->del_config("plugins_pages_start_id");
274 $EXISTS = $sgbd->table_exists("#--pages");
277 return "impossible de savoir si la table #--pages existe";
280 // return "la table #--pages n'existe pas";
284 $sgbd->query("DROP TABLE #--pages");
287 return "imposible de supprimer la table #--pages";
291 $sgbd->query("DELETE FROM #--action_status WHERE action='pages/admin'");
295 "Le plugin a bien été désinstallé"
296 ." mais impossible d'enlever les droits pages/admin/* de la table action_status";