diff options
Diffstat (limited to '')
-rw-r--r-- | admin.php | 110 | ||||
-rw-r--r-- | admin/include/functions_plugins.inc.php | 40 | ||||
-rw-r--r-- | admin/plugin.php | 40 |
3 files changed, 47 insertions, 143 deletions
@@ -2,10 +2,10 @@ // +-----------------------------------------------------------------------+ // | PhpWebGallery - a PHP based picture gallery | // | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net | -// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net | +// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net | // +-----------------------------------------------------------------------+ // | branch : BSF (Best So Far) -// | file : $RCSfile$ +// | file : $Id$ // | last update : $Date$ // | last modifier : $Author$ // | revision : $Revision$ @@ -54,66 +54,15 @@ check_conf(); // | variables init | // +-----------------------------------------------------------------------+ -unset($page['page']); - -if - ( - isset($_GET['page']) +if (isset($_GET['page']) and preg_match('/^[a-z_]*$/', $_GET['page']) - ) + and is_file(PHPWG_ROOT_PATH.'admin/'.$_GET['page'].'.php')) { - if - ( - (!isset($_GET['page_type']) or $_GET['page_type'] == 'standard') - and is_file(PHPWG_ROOT_PATH.'admin/'.$_GET['page'].'.php') - ) - { - $page['page']['type'] = 'standard'; - $page['page']['name'] = $_GET['page']; - } - else if - ( - (isset($_GET['page_type']) and $_GET['page_type'] == 'plugin') - and isset($_GET['plugin_id']) - and preg_match('/^[a-z_]*$/', $_GET['plugin_id']) - and is_file(PHPWG_PLUGINS_PATH.$_GET['plugin_id'].'/admin/'.$_GET['page'].'.php') - ) - { - if (function_exists('mysql_real_escape_string')) - { - $page['page']['plugin_id'] = mysql_real_escape_string($_GET['plugin_id']); - } - else - { - $page['page']['plugin_id'] = mysql_escape_string($_GET['plugin_id']); - } - - $check_db_plugin = get_db_plugins('active', $page['page']['plugin_id']); - if (!empty($check_db_plugin)) - { - $page['page']['type'] = $_GET['page_type']; - $page['page']['name'] = $_GET['page']; - } - else - { - unset($page['page']); - } - unset($check_db_plugin); - } + $page['page'] = $_GET['page']; } - -if (!isset($page['page'])) +else { - if (isset($_GET['page_type']) and $_GET['page_type'] == 'plugin') - { - $page['page']['type'] = 'standard'; - $page['page']['name'] = 'plugins'; - } - else - { - $page['page']['type'] = 'standard'; - $page['page']['name'] = 'intro'; - } + $page['page'] = 'intro'; } $page['errors'] = array(); @@ -184,47 +133,22 @@ if ($conf['allow_random_representative']) } // required before plugin page inclusion -trigger_action('plugin_admin_menu'); - -switch($page['page']['type']) -{ - case 'standard': - { - include(PHPWG_ROOT_PATH.'admin/'.$page['page']['name'].'.php'); - break; - } - case 'plugin': - { - include(PHPWG_PLUGINS_PATH.$page['page']['plugin_id'].'/admin/'.$page['page']['name'].'.php'); - break; - } - default: - { - die ("Hacking attempt!"); - break; - } -} - - -//------------------------------------------------------------- content display -$template->assign_block_vars('plugin_menu.menu_item', +$plugin_menu_links = array( array( 'NAME' => l10n('admin'), 'URL' => $link_start.'plugins' ) ); -if ( isset($page['plugin_admin_menu']) ) +$plugin_menu_links = trigger_event('get_admin_plugin_menu_links', + $plugin_menu_links ); + + +include(PHPWG_ROOT_PATH.'admin/'.$page['page'].'.php'); + +//------------------------------------------------------------- content display +foreach ($plugin_menu_links as $menu_item) { - $plug_base_url = $link_start.'plugin&section='; - foreach ($page['plugin_admin_menu'] as $menu) - { - $template->assign_block_vars('plugin_menu.menu_item', - array( - 'NAME' => $menu['title'], - 'URL' => $plug_base_url.$menu['uid'] - ) - ); - } + $template->assign_block_vars('plugin_menu.menu_item', $menu_item); } // +-----------------------------------------------------------------------+ diff --git a/admin/include/functions_plugins.inc.php b/admin/include/functions_plugins.inc.php index 45f3c734c..f5b43a6af 100644 --- a/admin/include/functions_plugins.inc.php +++ b/admin/include/functions_plugins.inc.php @@ -1,7 +1,7 @@ <?php // +-----------------------------------------------------------------------+ // | PhpWebGallery - a PHP based picture gallery | -// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net | +// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net | // +-----------------------------------------------------------------------+ // | branch : BSF (Best So Far) // | file : $Id$ @@ -68,36 +68,16 @@ function get_fs_plugins() return $plugins; } -/*allows plugins to add their content to the administration page*/ -function add_plugin_admin_menu($title, $func) +/** + * Retrieves an url for a plugin page. + * @param string plugin_id + * @param string page - the php script file name (without .php extension) + */ +function get_admin_plugin_menu_link($plugin_id, $page) { - global $page; - if ( is_array( $func) ) - { - $s = ''; - foreach( $func as $e) - { - if (is_object($e)) - { - $s.=get_class($e)."\n"; - } - else - { - $s.=$e; - } - } - $uid = md5( $s ); - } - else - { - $uid = md5( $func ); - } - $page['plugin_admin_menu'][] = - array( - 'title' => $title, - 'function' => $func, - 'uid' => $uid - ); + $url = get_root_url().'admin.php?page=plugin&section=' + .urlencode($plugin_id .'~'. $page); + return $url; } ?>
\ No newline at end of file diff --git a/admin/plugin.php b/admin/plugin.php index c880cdca7..a057e87c8 100644 --- a/admin/plugin.php +++ b/admin/plugin.php @@ -2,10 +2,10 @@ // +-----------------------------------------------------------------------+ // | PhpWebGallery - a PHP based picture gallery | // | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net | -// | Copyright (C) 2003-2006 PhpWebGallery Team - http://phpwebgallery.net | +// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net | // +-----------------------------------------------------------------------+ // | branch : BSF (Best So Far) -// | file : $RCSfile$ +// | file : $Id$ // | last update : $Date$ // | last modifier : $Author$ // | revision : $Revision$ @@ -33,27 +33,27 @@ if( !defined("PHPWG_ROOT_PATH") ) include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); check_status(ACCESS_ADMINISTRATOR); -$template->set_filenames(array('plugin' => 'admin/plugin.tpl')); - -if ( isset($page['plugin_admin_menu']) ) +$section = explode('~', $_GET['section'] ); +if (count($section)!=2) { - foreach ($page['plugin_admin_menu'] as $menu) - { - if (isset($_GET['section']) and $menu['uid']==$_GET['section']) - { - $found_menu=$menu; - break; - } - } + die('Invalid plugin URL'); } -if ( isset($found_menu) ) +$plugin_id = $section[0]; +$check_db_plugin = get_db_plugins('active', $plugin_id ); +if (empty($check_db_plugin)) { - $template->assign_var('PLUGIN_TITLE', $found_menu['title'] ); - call_user_func( - $found_menu['function'], - PHPWG_ROOT_PATH.'admin.php?page=plugin&section='.$found_menu['uid'] ); + die('Invalid URL - plugin '.$plugin_id.' not active'); } +$section[1]=str_replace('./', '', $section[1]); // no up in dir structure -$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin'); -?> +$filename = PHPWG_PLUGINS_PATH.$plugin_id.'/'.$section[1].'.php'; +if (is_file($filename)) +{ + include_once($filename); +} +else +{ + die('Missing '.$filename); +} +?>
\ No newline at end of file |