aboutsummaryrefslogtreecommitdiffstats
path: root/admin
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--admin.php110
-rw-r--r--admin/include/functions_plugins.inc.php40
-rw-r--r--admin/plugin.php40
3 files changed, 47 insertions, 143 deletions
diff --git a/admin.php b/admin.php
index f32cbcaee..b284be0a8 100644
--- a/admin.php
+++ b/admin.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$
@@ -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&amp;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&amp;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