summaryrefslogtreecommitdiffstats
path: root/wp-admin/admin-functions.php
diff options
context:
space:
mode:
authordonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2006-08-17 12:36:23 +0000
committerdonncha <donncha@7be80a69-a1ef-0310-a953-fb0f7c49ff36>2006-08-17 12:36:23 +0000
commite9261c6491959b5b0efe1036ec37ff9e850bd62e (patch)
treeb0ca05cf207206ab1ec85216c0d7abc4c16eca5b /wp-admin/admin-functions.php
parent62a85df302a839177400100c6a09813161440ce0 (diff)
downloadwordpress-mu-e9261c6491959b5b0efe1036ec37ff9e850bd62e.tar.gz
wordpress-mu-e9261c6491959b5b0efe1036ec37ff9e850bd62e.tar.xz
wordpress-mu-e9261c6491959b5b0efe1036ec37ff9e850bd62e.zip
WP Merge to rev 4104
git-svn-id: http://svn.automattic.com/wordpress-mu/trunk@723 7be80a69-a1ef-0310-a953-fb0f7c49ff36
Diffstat (limited to 'wp-admin/admin-functions.php')
-rw-r--r--wp-admin/admin-functions.php80
1 files changed, 56 insertions, 24 deletions
diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php
index 84a1ab4..63e9107 100644
--- a/wp-admin/admin-functions.php
+++ b/wp-admin/admin-functions.php
@@ -1353,19 +1353,37 @@ function user_can_access_admin_page() {
global $pagenow;
global $menu;
global $submenu;
- global $menu_nopriv;
+ global $_wp_menu_nopriv;
+ global $_wp_submenu_nopriv;
global $plugin_page;
$parent = get_admin_page_parent();
-
- if ( isset($menu_nopriv[$pagenow]) )
+ /*echo "pa: $parent pn: $pagenow pp: $plugin_page<br/>";
+ echo "<pre>";
+ print_r($_wp_menu_nopriv);
+ print_r($_wp_submenu_nopriv);
+ echo "</pre>";*/
+ if ( isset($_wp_submenu_nopriv[$parent][$pagenow]) )
return false;
- if ( isset($plugin_page) && isset($menu_nopriv[$plugin_page]) )
+ if ( isset($plugin_page) && isset($_wp_submenu_nopriv[$parent][$plugin_page]) )
return false;
- if ( empty($parent) )
+ if ( empty($parent) ) {
+ if ( isset($_wp_menu_nopriv[$pagenow]) )
+ return false;
+ if ( isset($_wp_submenu_nopriv[$pagenow][$pagenow]) )
+ return false;
+ if ( isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page]) )
+ return false;
+ foreach (array_keys($_wp_submenu_nopriv) as $key) {
+ if ( isset($_wp_submenu_nopriv[$key][$pagenow]) )
+ return false;
+ if ( isset($plugin_page) && isset($_wp_submenu_nopriv[$key][$plugin_page]) )
+ return false;
+ }
return true;
+ }
if (isset ($submenu[$parent])) {
foreach ($submenu[$parent] as $submenu_array) {
@@ -1379,7 +1397,6 @@ function user_can_access_admin_page() {
}
foreach ($menu as $menu_array) {
- //echo "parent array: " . $menu_array[2];
if ($menu_array[2] == $parent) {
if (current_user_can($menu_array[1]))
return true;
@@ -1444,11 +1461,13 @@ function get_admin_page_parent() {
global $submenu;
global $pagenow;
global $plugin_page;
- global $real_parent_file;
+ global $_wp_real_parent_file;
+ global $_wp_menu_nopriv;
+ global $_wp_submenu_nopriv;
if ( !empty ($parent_file) ) {
- if ( isset($real_parent_file[$parent_file]) )
- $parent_file = $real_parent_file[$parent_file];
+ if ( isset($_wp_real_parent_file[$parent_file]) )
+ $parent_file = $_wp_real_parent_file[$parent_file];
return $parent_file;
}
@@ -1457,18 +1476,30 @@ function get_admin_page_parent() {
foreach ($menu as $parent_menu) {
if ($parent_menu[2] == $plugin_page) {
$parent_file = $plugin_page;
- if ( isset($real_parent_file[$parent_file]) )
- $parent_file = $real_parent_file[$parent_file];
-
+ if ( isset($_wp_real_parent_file[$parent_file]) )
+ $parent_file = $_wp_real_parent_file[$parent_file];
return $parent_file;
}
}
+ if ( isset($_wp_menu_nopriv[$plugin_page]) ) {
+ $parent_file = $plugin_page;
+ if ( isset($_wp_real_parent_file[$parent_file]) )
+ $parent_file = $_wp_real_parent_file[$parent_file];
+ return $parent_file;
+ }
+ }
+
+ if ( isset($plugin_page) && isset($_wp_submenu_nopriv[$pagenow][$plugin_page]) ) {
+ $parent_file = $pagenow;
+ if ( isset($_wp_real_parent_file[$parent_file]) )
+ $parent_file = $_wp_real_parent_file[$parent_file];
+ return $parent_file;
}
foreach (array_keys($submenu) as $parent) {
foreach ($submenu[$parent] as $submenu_array) {
- if ( isset($real_parent_file[$parent]) )
- $parent = $real_parent_file[$parent];
+ if ( isset($_wp_real_parent_file[$parent]) )
+ $parent = $_wp_real_parent_file[$parent];
if ($submenu_array[2] == $pagenow) {
$parent_file = $parent;
return $parent;
@@ -1503,27 +1534,28 @@ function add_menu_page($page_title, $menu_title, $access_level, $file, $function
function add_submenu_page($parent, $page_title, $menu_title, $access_level, $file, $function = '') {
global $submenu;
global $menu;
- global $real_parent_file;
- global $menu_nopriv;
+ global $_wp_real_parent_file;
+ global $_wp_submenu_nopriv;
+ global $_wp_menu_nopriv;
$file = plugin_basename($file);
- //echo "Adding $parent $file $access_level<br />";
+
+ $parent = plugin_basename($parent);
+ if ( isset($_wp_real_parent_file[$parent]) )
+ $parent = $_wp_real_parent_file[$parent];
+
if ( !current_user_can($access_level) ) {
- $menu_nopriv[$file] = true;
+ $_wp_submenu_nopriv[$parent][$file] = true;
return false;
}
- $parent = plugin_basename($parent);
- if ( isset($real_parent_file[$parent]) )
- $parent = $real_parent_file[$parent];
-
// If the parent doesn't already have a submenu, add a link to the parent
// as the first item in the submenu. If the submenu file is the same as the
// parent file someone is trying to link back to the parent manually. In
// this case, don't automatically add a link back to avoid duplication.
- if (!isset ($submenu[$parent]) && $file != $parent) {
+ if (!isset ($submenu[$parent]) && $file != $parent ) {
foreach ($menu as $parent_menu) {
- if ($parent_menu[2] == $parent) {
+ if ( $parent_menu[2] == $parent && current_user_can($parent_menu[1]) ) {
$submenu[$parent][] = $parent_menu;
}
}