WordPress.org

Make WordPress Core

Ticket #42323: 42323.patch

File 42323.patch, 3.6 KB (added by bor0, 4 years ago)
  • wp-admin/includes/plugin.php

     
    17211721        global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv,
    17221722                $plugin_page, $_registered_pages;
    17231723
    1724         $parent = get_admin_page_parent();
     1724        $parent       = get_admin_page_parent();
     1725        $pagenow_this = $pagenow;
    17251726
    1726         if ( !isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$parent][$pagenow] ) )
     1727        if ( isset( $_GET['post_type'] ) ) {
     1728                $pagenow_this .= '?post_type=' . $_GET['post_type'];
     1729        }
     1730
     1731        if ( ! isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $parent ][ $pagenow_this ] ) ) {
    17271732                return false;
     1733        }
    17281734
    17291735        if ( isset( $plugin_page ) ) {
    1730                 if ( isset( $_wp_submenu_nopriv[$parent][$plugin_page] ) )
     1736                if ( isset( $_wp_submenu_nopriv[ $parent ][ $plugin_page ] ) ) {
    17311737                        return false;
     1738                }
    17321739
    1733                 $hookname = get_plugin_page_hookname($plugin_page, $parent);
     1740                $hookname = get_plugin_page_hookname( $plugin_page, $parent );
    17341741
    1735                 if ( !isset($_registered_pages[$hookname]) )
     1742                if ( ! isset( $_registered_pages[ $hookname ] ) ) {
    17361743                        return false;
     1744                }
    17371745        }
    17381746
    1739         if ( empty( $parent) ) {
    1740                 if ( isset( $_wp_menu_nopriv[$pagenow] ) )
     1747        if ( empty( $parent ) ) {
     1748                if ( isset( $_wp_menu_nopriv[ $pagenow_this ] ) ) {
    17411749                        return false;
    1742                 if ( isset( $_wp_submenu_nopriv[$pagenow][$pagenow] ) )
     1750                }
     1751
     1752                if ( isset( $_wp_submenu_nopriv[ $pagenow_this ][ $pagenow_this ] ) ) {
    17431753                        return false;
    1744                 if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$pagenow][$plugin_page] ) )
     1754                }
     1755
     1756                if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $pagenow_this ][ $plugin_page ] ) ) {
    17451757                        return false;
    1746                 if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[$plugin_page] ) )
     1758                }
     1759
     1760                if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[ $plugin_page ] ) ) {
    17471761                        return false;
    1748                 foreach (array_keys( $_wp_submenu_nopriv ) as $key ) {
    1749                         if ( isset( $_wp_submenu_nopriv[$key][$pagenow] ) )
     1762                }
     1763
     1764                foreach ( array_keys( $_wp_submenu_nopriv ) as $key ) {
     1765                        if ( isset( $_wp_submenu_nopriv[ $key ][ $pagenow_this ] ) ) {
    17501766                                return false;
    1751                         if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[$key][$plugin_page] ) )
    1752                         return false;
     1767                        }
     1768
     1769                        if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $key ][ $plugin_page ] ) ) {
     1770                                return false;
     1771                        }
    17531772                }
     1773
    17541774                return true;
    17551775        }
    17561776
    1757         if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[$plugin_page] ) )
     1777        if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[ $plugin_page ] ) ) {
    17581778                return false;
     1779        }
    17591780
    1760         if ( isset( $submenu[$parent] ) ) {
    1761                 foreach ( $submenu[$parent] as $submenu_array ) {
     1781        if ( isset( $submenu[ $parent ] ) ) {
     1782                foreach ( $submenu[ $parent ] as $submenu_array ) {
    17621783                        if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) {
    1763                                 if ( current_user_can( $submenu_array[1] ))
     1784                                if ( current_user_can( $submenu_array[1] ) ) {
    17641785                                        return true;
    1765                                 else
     1786                                } else {
    17661787                                        return false;
    1767                         } elseif ( $submenu_array[2] == $pagenow ) {
    1768                                 if ( current_user_can( $submenu_array[1] ))
     1788                                }
     1789                        } elseif ( $submenu_array[2] == $pagenow_this ) {
     1790                                if ( current_user_can( $submenu_array[1] ) ) {
    17691791                                        return true;
    1770                                 else
     1792                                } else {
    17711793                                        return false;
     1794                                }
    17721795                        }
    17731796                }
    17741797        }
    17751798
    17761799        foreach ( $menu as $menu_array ) {
    1777                 if ( $menu_array[2] == $parent) {
    1778                         if ( current_user_can( $menu_array[1] ))
     1800                if ( $menu_array[2] == $parent ) {
     1801                        if ( current_user_can( $menu_array[1] ) ) {
    17791802                                return true;
    1780                         else
     1803                        } else {
    17811804                                return false;
     1805                        }
    17821806                }
    17831807        }
    17841808