From 7ebed797262c7f3371ae1b16ed455f7e9879caf0 Mon Sep 17 00:00:00 2001 From: grum Date: Sun, 3 Aug 2008 07:48:39 +0000 Subject: Asked by rvelices on this topic http://forum.phpwebgallery.net/viewtopic.php?pid=92097#p92097 A plugin to integrate the menu class see test_menu directory A plugin to show how to use the menu class see AMenuManager directory And common classes needed for the AMenuManager plugin see grum_plugins_classes-2 directory See topic http://forum.phpwebgallery.net/viewtopic.php?pid=92637#p92637 for more informations git-svn-id: http://piwigo.org/svn/trunk@2466 68402e56-0260-453c-a942-63ccdbb3a9ee --- .../common_plugin.class.inc.php | 209 +++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100755 plugins/grum_plugins_classes-2/common_plugin.class.inc.php (limited to 'plugins/grum_plugins_classes-2/common_plugin.class.inc.php') diff --git a/plugins/grum_plugins_classes-2/common_plugin.class.inc.php b/plugins/grum_plugins_classes-2/common_plugin.class.inc.php new file mode 100755 index 000000000..c87581c12 --- /dev/null +++ b/plugins/grum_plugins_classes-2/common_plugin.class.inc.php @@ -0,0 +1,209 @@ +> + ------------------------------------------------------------------------------ + + this class provides base functions to manage a plugin + public + ADMINISTRATION RELATED + - manage() + - plugin_admin_menu($menu) + INITIALIZATION RELATED + - init_events() + CONFIG RELATED + - get_filelocation() + - get_admin_link() + - init_config() + - load_config() + - save_config() + - delete_config() + + protected + INITIALIZATION RELATED + - set_tables_list($list) + ------------------------------------------------------------------------------ + :: HISTORY + + 2.0.0 - 2008-07-13 + migrate to piwigo 2.0 ; use of PHP5 classes possibilities + + --------------------------------------------------------------------------- */ + +class common_plugin +{ + protected $prefixeTable; // prefixe for tables names + protected $page_link; //link to admin page + protected $filelocation; //files plugin location on server + protected $display_result_ok; + protected $display_result_ko; + protected $plugin_name; // used for interface display + protected $plugin_name_files; // used for files + protected $plugin_admin_file = "plugin_admin"; + protected $tables; // list of all tables names used by plugin + public $my_config; // array of config parameters + + /* constructor allows to initialize $prefixeTable value */ + public function common_plugin($prefixeTable, $filelocation) + { + $this->filelocation=$filelocation; + $this->prefixeTable=$prefixeTable; + $this->page_link="admin.php?page=plugin§ion=". basename(dirname($this->filelocation))."/admin/".$this->plugin_admin_file.".php"; + //$this->page_link=get_admin_plugin_menu_link($filelocation); + $this->init_config(); + $this->display_result_ok="OK"; + $this->display_result_ko="KO"; + } + + public function get_filelocation() + { + return($this->filelocation); + } + + public function get_admin_link() + { + return($this->page_link); + } + + + /* --------------------------------------------------------------------------- + CONFIGURATION RELATED FUNCTIONS + --------------------------------------------------------------------------- */ + + /* this function initialize var $my_config with default values */ + public function init_config() + { + $this->my_config=array(); + } + + /* load config from CONFIG_TABLE into var $my_config */ + public function load_config() + { + $this->init_config(); + $sql="SELECT value FROM ".CONFIG_TABLE." + WHERE param = '".$this->plugin_name_files."_config'"; + $result=pwg_query($sql); + if($result) + { + $row=mysql_fetch_row($result); + if(is_string($row[0])) + { + $config = unserialize($row[0]); + reset($config); + while (list($key, $val) = each($config)) + { $this->my_config[$key] =$val; } + } + } + } + + /* save var $my_config into CONFIG_TABLE */ + public function save_config() + { + $sql="REPLACE INTO ".CONFIG_TABLE." + VALUES('".$this->plugin_name_files."_config', '" + .serialize($this->my_config)."', '')"; + $result=pwg_query($sql); + if($result) + { return true; } + else + { return false; } + } + + /* delete config from CONFIG_TABLE */ + public function delete_config() + { + $sql="DELETE FROM ".CONFIG_TABLE." + WHERE param='".$this->plugin_name_files."_config'"; + $result=pwg_query($sql); + if($result) + { return true; } + else + { return false; } + } + + /* --------------------------------------------------------------------------- + PLUGIN INITIALIZATION RELATED FUNCTIONS + --------------------------------------------------------------------------- */ + + /* + initialize tables list used by the plugin + $list = array('table1', 'table2') + $this->tables_list['table1'] = $prefixeTable.$plugin_name.'_table1' + */ + protected function set_tables_list($list) + { + for($i=0;$itables[$list[$i]]=$this->prefixeTable.$this->plugin_name_files.'_'.$list[$i]; + } + } + + /* --------------------------------------------------------------------------- + ADMINISTRATOR CONSOLE RELATED FUNCTIONS + --------------------------------------------------------------------------- */ + + /* add plugin into administration menu */ + public function plugin_admin_menu($menu) + { + array_push($menu, + array( + 'NAME' => $this->plugin_name, + 'URL' => get_admin_plugin_menu_link(dirname($this->filelocation). + '/admin/'.$this->plugin_admin_file.'.php') + )); + return $menu; + } + + /* + manage plugin integration into piwigo's admin interface + + to be surcharged by child's classes + */ + public function manage() + { + } + + /* + intialize plugin's events + to be surcharged by child's classes + */ + public function init_events() + { + } + + protected function debug($text) + { + global $page; + array_push($page['infos'], "DEBUG MODE: ".$text); + } + + /* + manage infos & errors display + */ + protected function display_result($action_msg, $result) + { + global $page; + + if($result) + { + array_push($page['infos'], $action_msg); + array_push($page['infos'], $this->display_result_ok); + } + else + { + array_push($page['errors'], $action_msg); + array_push($page['errors'], $this->display_result_ko); + } + } +} //class common_plugin + +?> -- cgit v1.2.3