Make WordPress Core


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.8/wp-admin/includes/plugin.php

    r11450 r11629  
    586586
    587587function add_menu_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '' ) {
    588         global $menu, $admin_page_hooks;
     588        global $menu, $admin_page_hooks, $_registered_pages;
    589589
    590590        $file = plugin_basename( $file );
     
    603603        $menu[] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
    604604
     605        $_registered_pages[$hookname] = true;
     606
    605607        return $hookname;
    606608}
    607609
    608610function add_object_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '') {
    609         global $menu, $admin_page_hooks, $_wp_last_object_menu;
     611        global $menu, $admin_page_hooks, $_wp_last_object_menu, $_registered_pages;
    610612
    611613        $file = plugin_basename( $file );
     
    624626        $menu[$_wp_last_object_menu] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
    625627
     628        $_registered_pages[$hookname] = true;
     629
    626630        return $hookname;
    627631}
    628632
    629633function add_utility_page( $page_title, $menu_title, $access_level, $file, $function = '', $icon_url = '') {
    630         global $menu, $admin_page_hooks, $_wp_last_utility_menu;
     634        global $menu, $admin_page_hooks, $_wp_last_utility_menu, $_registered_pages;
    631635
    632636        $file = plugin_basename( $file );
     
    646650
    647651        $menu[$_wp_last_utility_menu] = array ( $menu_title, $access_level, $file, $page_title, 'menu-top ' . $hookname, $hookname, $icon_url );
     652
     653        $_registered_pages[$hookname] = true;
    648654
    649655        return $hookname;
     
    655661        global $_wp_real_parent_file;
    656662        global $_wp_submenu_nopriv;
     663        global $_registered_pages;
    657664
    658665        $file = plugin_basename( $file );
     
    683690        if (!empty ( $function ) && !empty ( $hookname ))
    684691                add_action( $hookname, $function );
     692
     693        $_registered_pages[$hookname] = true;
     694        // backwards-compatibility for plugins using add_management page.  See wp-admin/admin.php for redirect from edit.php to tools.php
     695        if ( 'tools.php' == $parent )
     696                $_registered_pages[get_plugin_page_hookname( $file, 'edit.php')] = true;
    685697
    686698        return $hookname;
     
    920932        global $_wp_submenu_nopriv;
    921933        global $plugin_page;
     934        global $_registered_pages;
    922935
    923936        $parent = get_admin_page_parent();
     
    926939                return false;
    927940
    928         if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
    929                 return false;
     941        if ( isset( $plugin_page ) ) {
     942                if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
     943                        return false;
     944
     945                $hookname = get_plugin_page_hookname($plugin_page, $parent);
     946                if ( !isset($_registered_pages[$hookname]) )
     947                        return false;
     948        }
    930949
    931950        if ( empty( $parent) ) {
     
    936955                if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) )
    937956                        return false;
     957                if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) )
     958                        return false;
    938959                foreach (array_keys( $_wp_submenu_nopriv ) as $key ) {
    939960                        if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) )
     
    944965                return true;
    945966        }
     967
     968        if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) )
     969                return false;
    946970
    947971        if ( isset( $submenu[$parent] ) ) {
Note: See TracChangeset for help on using the changeset viewer.