X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw_pages.php;h=bb6d9b6f2e752bc700f5345064edd58b9336bce7;hb=refs%2Ftags%2Fmw_pages.0.4;hp=056efbc155b059a06c141cbcedb490b869eb21f8;hpb=90a1f9524e4bffa5d9d518d6dfb760f85a6c6d28;p=mw_pages diff --git a/mw_pages.php b/mw_pages.php index 056efbc..bb6d9b6 100644 --- a/mw_pages.php +++ b/mw_pages.php @@ -1,33 +1,34 @@ set_link("plugins/admin/mw_pages", $env->url("pages/admin"), "éditer les pages"); + function init($env){ + $env->set_link("plugins/admin/mw_pages", $env->url("pages/admin"), "éditer les pages"); + $env->set_link("admin/pages", $env->url("pages/admin"), "Pages", 40); $data = $env->data(); - if - ( ( $pages = $data->pages - ( array - ( "id_parent" => "", + if( + ( + $pages = $data->pages( + array( + "id_parent" => "", "enabled" => 1, "order_by" => "position", "order" => "ASC" ) ) ) !== false - ) - { foreach($pages["list"] as $id_page => $page) - { $env->set_link - ( "menu_top/mw_page_".$id_page, + ){ + foreach($pages["list"] as $id_page => $page){ + $env->set_link( + "menu_top/mw_page_".$id_page, $env->url("pages/view/page", array("id" => $id_page)), $page["title"], $page["position"] @@ -37,30 +38,30 @@ return true; } - function enable($env) - { $plugins_pages_start_id = $env->config("plugins_pages_start_id"); - if($plugins_pages_start_id) - { $data = $env->data(); - if - ( $data->set_config("start_action", "pages/view/page") + function enable($env){ + $plugins_pages_start_id = $env->config("plugins_pages_start_id"); + if($plugins_pages_start_id){ + $data = $env->data(); + if( + $data->set_config("start_action", "pages/view/page") && $data->set_config("start_action_params", @serialize(array("id" => $plugins_pages_start_id))) - ) - { return true; + ){ + return true; } return false; } return true; } - function disable($env) - { $start_action = $env->config("start_action"); - if($start_action == "pages/view/page") - { $data = $env->data(); - if - ( $data->set_config("start_action", "") + function disable($env){ + $start_action = $env->config("start_action"); + if($start_action == "pages/view/page"){ + $data = $env->data(); + if( + $data->set_config("start_action", "") && $data->set_config("start_action_params", "") - ) - { return true; + ){ + return true; } return false; } @@ -71,93 +72,116 @@ // install // - function install($env) - { if($env->bdd("sgbd") == "xml") return $this->install_xml($env); + function install($env){ + if($env->bdd("sgbd") == "xml") return $this->install_xml($env); if($env->bdd("sgbd") == "sqlite") return $this->install_sqlite($env); if($env->bdd("sgbd") == "mysql") return $this->install_mysql($env); } - function install_xml($env) - { $data = $env->data(); + function install_xml($env){ + $data = $env->data(); $sgbd = $data->sgbd(); $EXISTS = $sgbd->data_exists("pages"); - if(!isset($EXISTS)) - { return "impossible de savoir si la table #--pages existe"; + if(!isset($EXISTS)){ + return "impossible de savoir si la table #--pages existe"; } - if($EXISTS) - { return "la table #--pages existe deja"; + if($EXISTS){ + return "la table #--pages existe deja"; } - if(!$sgbd->create_data("pages")) - { return "imposible de creer la table #--pages"; + if(!$sgbd->create_data("pages")){ + return "imposible de creer la table #--pages"; } - if(!$sgbd->add_data("action_status", array("action" => "pages/admin", "id_status" => "1"))) - { $sgbd->remove_data("pages"); + if(!$sgbd->add_data("action_status", array("action" => "pages/admin", "id_status" => "1"))){ + $sgbd->remove_data("pages"); return "impossible d'ajouter un statut pour l'action pages/admin"; } return true; } - function install_sqlite($env) - { $data = $env->data(); + function install_sqlite($env){ + $data = $env->data(); $sgbd = $data->sgbd(); - $EXISTS = $sgbd->table_exists("#--pages"); - if(!isset($EXISTS)) - { return "impossible de savoir si la table #--pages existe"; - } - if($EXISTS) - { return "la table #--pages existe deja"; - } - $sql = - "CREATE TABLE #--pages" - ."( id INTEGER NOT NULL PRIMARY KEY" - .", id_parent INTEGER NULL" - .", title VARCHAR NULL" - .", content TEXT NULL" - .", date_creation TEXT NOT NULL" - .", user_creation INTEGER NOT NULL" - .", date_last_update TEXT NOT NULL" - .", user_last_update INTEGER NOT NULL" - .", enabled INTEGER NOT NULL DEFAULT 1" - .", position INTEGER NOT NULL DEFAULT 0" - .")"; - if(!$sgbd->query($sql)) - { return "imposible de creer la table #--pages"; - } - if(!$sgbd->query("INSERT INTO #--action_status(action, id_status) VALUES('pages/admin', 1)")) - { $sgbd->query("DROP TABLE \"main\".\"#--pages\""); + try{ + $EXISTS = $sgbd->table_exists("#--pages"); + } + catch(Exception $e){ + return "impossible de savoir si la table #--pages existe"; + } + if($EXISTS){ + return "la table #--pages existe deja"; + } + try{ + $sql = + "CREATE TABLE #--pages" + ."( id INTEGER NOT NULL PRIMARY KEY" + .", id_parent INTEGER NULL" + .", title VARCHAR NULL" + .", content TEXT NULL" + .", date_creation TEXT NOT NULL" + .", user_creation INTEGER NOT NULL" + .", date_last_update TEXT NOT NULL" + .", user_last_update INTEGER NOT NULL" + .", enabled INTEGER NOT NULL DEFAULT 1" + .", position INTEGER NOT NULL DEFAULT 0" + .")"; + $sgbd->query($sql); + } + catch(Exception $e){ + return "imposible de creer la table #--pages"; + } + $DELETE_TABLE = false; + try{ + $sgbd->query("INSERT INTO #--action_status(action, id_status) VALUES('pages/admin', 1)"); + } + catch(Exception $e){ + try{ + $sgbd->query("DROP TABLE \"main\".\"#--pages\""); + } + catch(Exception $e){} return "impossible d'ajouter un statut pour l'action pages/admin"; } return true; } - function install_mysql($env) - { $data = $env->data(); + function install_mysql($env){ + $data = $env->data(); $sgbd = $data->sgbd(); - $EXISTS = $sgbd->table_exists("#--pages"); - if(!isset($EXISTS)) - { return "impossible de savoir si la table #--pages existe"; - } - if($EXISTS) - { return "la table #--pages existe deja"; - } - $sql = - "CREATE TABLE #--pages" - ."( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY" - .", id_parent INT(11) NULL" - .", title VARCHAR(255) NULL" - .", content TEXT NULL" - .", date_creation DATETIME NOT NULL" - .", user_creation INT(11) NOT NULL" - .", date_last_update DATETIME NOT NULL" - .", user_last_update INT(11) NOT NULL" - .", enabled TINYINT NOT NULL DEFAULT '1'" - .", position INT(11) NOT NULL DEFAULT '0'" - .") DEFAULT CHARSET=utf8"; - if(!$sgbd->query($sql)) - { return "imposible de creer la table #--pages"; - } - if(!$sgbd->query("INSERT INTO #--action_status(action, id_status) VALUES('pages/admin', 1)")) - { $sgbd->query("DROP TABLE #--pages"); + try{ + $EXISTS = $sgbd->table_exists("#--pages"); + } + catch(Exception $e){ + return "impossible de savoir si la table #--pages existe"; + } + if($EXISTS){ + return "la table #--pages existe deja"; + } + try{ + $sql = + "CREATE TABLE #--pages" + ."( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY" + .", id_parent INT(11) NULL" + .", title VARCHAR(255) NULL" + .", content TEXT NULL" + .", date_creation DATETIME NOT NULL" + .", user_creation INT(11) NOT NULL" + .", date_last_update DATETIME NOT NULL" + .", user_last_update INT(11) NOT NULL" + .", enabled TINYINT NOT NULL DEFAULT '1'" + .", position INT(11) NOT NULL DEFAULT '0'" + .") DEFAULT CHARSET=utf8"; + $sgbd->query($sql); + } + catch(Exception $e){ + return "imposible de creer la table #--pages"; + } + try{ + $sgbd->query("INSERT INTO #--action_status(action, id_status) VALUES('pages/admin', 1)"); + } + catch(Exception $e){ + try{ + $sgbd->query("DROP TABLE #--pages"); + } + catch(Exception $e){} return "impossible d'ajouter un statut pour l'action pages/admin"; } return true; @@ -167,86 +191,113 @@ // uninstall // - function uninstall($env) - { if($env->bdd("sgbd") == "xml") return $this->uninstall_xml($env); + function uninstall($env){ + if($env->bdd("sgbd") == "xml") return $this->uninstall_xml($env); if($env->bdd("sgbd") == "sqlite") return $this->uninstall_sqlite($env); if($env->bdd("sgbd") == "mysql") return $this->uninstall_mysql($env); } - function uninstall_xml($env) - { $data = $env->data(); + function uninstall_xml($env){ + $data = $env->data(); $sgbd = $data->sgbd(); if(!$this->disable($env)) return "impossible de desactiver le plugin"; $data->del_config("plugins_pages_start_id"); $EXISTS = $sgbd->data_exists("pages"); - if(!isset($EXISTS)) - { return "impossible de savoir si la table #--pages existe"; + if(!isset($EXISTS)){ + return "impossible de savoir si la table #--pages existe"; } - if(!$EXISTS) - { // return "la table #--pages n'existe pas"; + if(!$EXISTS){ + // return "la table #--pages n'existe pas"; } - elseif(!$sgbd->remove_data("pages")) - { return "imposible de supprimer la table #--pages"; + elseif(!$sgbd->remove_data("pages")){ + return "imposible de supprimer la table #--pages"; } $ids = array(); - if($rst = $sgbd->open_data("action_status")) - { while($v_rst = $sgbd->fetch_data($rst)) - { if(isset($v_rst)) - { if(isset($v_rst["action"]) && isset($v_rst["id"]) && $v_rst["action"] == "pages/admin") - { $ids[] = $v_rst["id"]; + if($rst = $sgbd->open_data("action_status")){ + while($v_rst = $sgbd->fetch_data($rst)){ + if(isset($v_rst)){ + if(isset($v_rst["action"]) && isset($v_rst["id"]) && $v_rst["action"] == "pages/admin"){ + $ids[] = $v_rst["id"]; } } else $ids = false; } $sgbd->close_data($rst); } - if($ids !== false) - { foreach($ids as $id) - { $sgbd->del_data("action_status", $id); + if($ids !== false){ + foreach($ids as $id){ + $sgbd->del_data("action_status", $id); } } return true; } - function uninstall_sqlite($env) - { $data = $env->data(); + function uninstall_sqlite($env){ + $data = $env->data(); $sgbd = $data->sgbd(); if(!$this->disable($env)) return "impossible de desactiver le plugin"; $data->del_config("plugins_pages_start_id"); - $EXISTS = $sgbd->table_exists("#--pages"); - if(!isset($EXISTS)) - { return "impossible de savoir si la table #--pages existe"; + try{ + $EXISTS = $sgbd->table_exists("#--pages"); + } + catch(Exception $e){ + return "impossible de savoir si la table #--pages existe"; + } + if(!$EXISTS){ + // return "la table #--pages n'existe pas"; + } + else{ + try{ + $sgbd->query("DROP TABLE \"main\".\"#--pages\""); + } + catch(Exception $e){ + return "imposible de supprimer la table #--pages"; + } } - if(!$EXISTS) - { // return "la table #--pages n'existe pas"; + try{ + $sgbd->query("DELETE FROM #--action_status WHERE action='pages/admin'"); } - elseif(!$sgbd->query("DROP TABLE \"main\".\"#--pages\"")) - { return "imposible de supprimer la table #--pages"; + catch(Exception $e){ + return + "Le plugin a bien été désinstallé" + ." mais impossible d'enlever les droits pages/admin/* de la table action_status"; } - $sgbd->query("DELETE FROM #--action_status WHERE action='pages/admin'"); return true; } - function uninstall_mysql($env) - { $data = $env->data(); + function uninstall_mysql($env){ + $data = $env->data(); $sgbd = $data->sgbd(); if(!$this->disable($env)) return "impossible de desactiver le plugin"; $data->del_config("plugins_pages_start_id"); - $EXISTS = $sgbd->table_exists("#--pages"); - if(!isset($EXISTS)) - { return "impossible de savoir si la table #--pages existe"; + try{ + $EXISTS = $sgbd->table_exists("#--pages"); + } + catch(Exception $e){ + return "impossible de savoir si la table #--pages existe"; } - if(!$EXISTS) - { // return "la table #--pages n'existe pas"; + if(!$EXISTS){ + // return "la table #--pages n'existe pas"; } - elseif(!$sgbd->query("DROP TABLE #--pages")) - { return "imposible de supprimer la table #--pages"; + else{ + try{ + $sgbd->query("DROP TABLE #--pages"); + } + catch(Exception $e){ + return "imposible de supprimer la table #--pages"; + } + } + try{ + $sgbd->query("DELETE FROM #--action_status WHERE action='pages/admin'"); + } + catch(Exception $e){ + return + "Le plugin a bien été désinstallé" + ." mais impossible d'enlever les droits pages/admin/* de la table action_status"; } - $sgbd->query("DELETE FROM #--action_status WHERE action='pages/admin'"); return true; } } - ?> \ No newline at end of file