Make WordPress Core

Ticket #43848: 43848.2.diff

File 43848.2.diff, 3.3 KB (added by rnaby, 6 years ago)

Another improved patch. Merged some if statement and refactored.

  • src/wp-admin/includes/plugin.php

     
    17951795}
    17961796
    17971797/**
     1798 * Returns boolean on user access to admin page.
     1799 * In short, determines if the user can access the admin page or not.
     1800 *
    17981801 * @global string $pagenow
    17991802 * @global array $menu
    18001803 * @global array $submenu
     
    18021805 * @global array $_wp_submenu_nopriv
    18031806 * @global string $plugin_page
    18041807 * @global array $_registered_pages
     1808 *
     1809 * @return bool
    18051810 */
    18061811function user_can_access_admin_page() {
    18071812        global $pagenow, $menu, $submenu, $_wp_menu_nopriv, $_wp_submenu_nopriv,
    1808                 $plugin_page, $_registered_pages;
     1813                        $plugin_page, $_registered_pages;
    18091814
    18101815        $parent = get_admin_page_parent();
    18111816
    1812         if ( ! isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $parent ][ $pagenow ] ) ) {
     1817        if (
     1818                ! isset( $plugin_page )
     1819                && isset( $_wp_submenu_nopriv[ $parent ][ $pagenow ] )
     1820        ) {
    18131821                return false;
    18141822        }
    18151823
     
    18261834        }
    18271835
    18281836        if ( empty( $parent ) ) {
    1829                 if ( isset( $_wp_menu_nopriv[ $pagenow ] ) ) {
     1837                if (
     1838                        isset( $_wp_menu_nopriv[ $pagenow ] )
     1839                        || isset( $_wp_submenu_nopriv[ $pagenow ][ $pagenow ] )
     1840                        || ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $pagenow ][ $plugin_page ] ) )
     1841                        || ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[ $plugin_page ] ) )
     1842                ) {
    18301843                        return false;
    18311844                }
    1832                 if ( isset( $_wp_submenu_nopriv[ $pagenow ][ $pagenow ] ) ) {
    1833                         return false;
    1834                 }
    1835                 if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $pagenow ][ $plugin_page ] ) ) {
    1836                         return false;
    1837                 }
    1838                 if ( isset( $plugin_page ) && isset( $_wp_menu_nopriv[ $plugin_page ] ) ) {
    1839                         return false;
    1840                 }
     1845
    18411846                foreach ( array_keys( $_wp_submenu_nopriv ) as $key ) {
    1842                         if ( isset( $_wp_submenu_nopriv[ $key ][ $pagenow ] ) ) {
     1847                        if (
     1848                                isset( $_wp_submenu_nopriv[ $key ][ $pagenow ] )
     1849                                || ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $key ][ $plugin_page ] ) )
     1850                        ) {
    18431851                                return false;
    18441852                        }
    1845                         if ( isset( $plugin_page ) && isset( $_wp_submenu_nopriv[ $key ][ $plugin_page ] ) ) {
    1846                                 return false;
    1847                         }
    18481853                }
    18491854                return true;
    18501855        }
    18511856
    1852         if ( isset( $plugin_page ) && ( $plugin_page == $parent ) && isset( $_wp_menu_nopriv[ $plugin_page ] ) ) {
     1857        if (
     1858                isset( $plugin_page )
     1859                && ( $plugin_page === $parent )
     1860                && isset( $_wp_menu_nopriv[ $plugin_page ] )
     1861        ) {
    18531862                return false;
    18541863        }
    18551864
    18561865        if ( isset( $submenu[ $parent ] ) ) {
    18571866                foreach ( $submenu[ $parent ] as $submenu_array ) {
    1858                         if ( isset( $plugin_page ) && ( $submenu_array[2] == $plugin_page ) ) {
     1867                        if (
     1868                                ( isset( $plugin_page ) && ( $submenu_array[2] === $plugin_page ) )
     1869                                || $submenu_array[2] === $pagenow
     1870                        ) {
    18591871                                if ( current_user_can( $submenu_array[1] ) ) {
    18601872                                        return true;
    1861                                 } else {
    1862                                         return false;
    18631873                                }
    1864                         } elseif ( $submenu_array[2] == $pagenow ) {
    1865                                 if ( current_user_can( $submenu_array[1] ) ) {
    1866                                         return true;
    1867                                 } else {
    1868                                         return false;
    1869                                 }
     1874
     1875                                return false;
    18701876                        }
    18711877                }
    18721878        }
    18731879
    18741880        foreach ( $menu as $menu_array ) {
    1875                 if ( $menu_array[2] == $parent ) {
    1876                         if ( current_user_can( $menu_array[1] ) ) {
    1877                                 return true;
    1878                         } else {
    1879                                 return false;
    1880                         }
     1881                if (
     1882                        $menu_array[2] === $parent
     1883                        && current_user_can( $menu_array[1] )
     1884                ) {
     1885                        return true;
    18811886                }
     1887
     1888                return false;
    18821889        }
    18831890
    18841891        return true;