Changeset 42343 for trunk/src/wp-admin/includes/menu.php
- Timestamp:
- 11/30/2017 11:09:33 PM (9 years ago)
- File:
-
- 1 edited
-
trunk/src/wp-admin/includes/menu.php (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-admin/includes/menu.php
r37914 r42343 43 43 44 44 // Create list of page plugin hook names. 45 foreach ( $menu as $menu_page) {46 if ( false !== $pos = strpos( $menu_page[2], '?') ) {45 foreach ( $menu as $menu_page ) { 46 if ( false !== $pos = strpos( $menu_page[2], '?' ) ) { 47 47 // Handle post_type=post|page|foo pages. 48 $hook_name = substr( $menu_page[2], 0, $pos);49 $hook_args = substr( $menu_page[2], $pos + 1);50 wp_parse_str( $hook_args, $hook_args);48 $hook_name = substr( $menu_page[2], 0, $pos ); 49 $hook_args = substr( $menu_page[2], $pos + 1 ); 50 wp_parse_str( $hook_args, $hook_args ); 51 51 // Set the hook name to be the post type. 52 if ( isset( $hook_args['post_type']) )52 if ( isset( $hook_args['post_type'] ) ) { 53 53 $hook_name = $hook_args['post_type']; 54 else 55 $hook_name = basename($hook_name, '.php'); 56 unset($hook_args); 54 } else { 55 $hook_name = basename( $hook_name, '.php' ); 56 } 57 unset( $hook_args ); 57 58 } else { 58 $hook_name = basename( $menu_page[2], '.php');59 } 60 $hook_name = sanitize_title( $hook_name);61 62 if ( isset( $compat[$hook_name]) )63 $hook_name = $compat[ $hook_name];64 elseif ( !$hook_name )59 $hook_name = basename( $menu_page[2], '.php' ); 60 } 61 $hook_name = sanitize_title( $hook_name ); 62 63 if ( isset( $compat[ $hook_name ] ) ) { 64 $hook_name = $compat[ $hook_name ]; 65 } elseif ( ! $hook_name ) { 65 66 continue; 66 67 $admin_page_hooks[$menu_page[2]] = $hook_name; 68 } 69 unset($menu_page, $compat); 67 } 68 69 $admin_page_hooks[ $menu_page[2] ] = $hook_name; 70 } 71 unset( $menu_page, $compat ); 70 72 71 73 $_wp_submenu_nopriv = array(); 72 $_wp_menu_nopriv = array();74 $_wp_menu_nopriv = array(); 73 75 // Loop over submenus and remove pages for which the user does not have privs. 74 foreach ($submenu as $parent => $sub) { 75 foreach ($sub as $index => $data) { 76 if ( ! current_user_can($data[1]) ) { 77 unset($submenu[$parent][$index]); 78 $_wp_submenu_nopriv[$parent][$data[2]] = true; 79 } 80 } 81 unset($index, $data); 82 83 if ( empty($submenu[$parent]) ) 84 unset($submenu[$parent]); 85 } 86 unset($sub, $parent); 76 foreach ( $submenu as $parent => $sub ) { 77 foreach ( $sub as $index => $data ) { 78 if ( ! current_user_can( $data[1] ) ) { 79 unset( $submenu[ $parent ][ $index ] ); 80 $_wp_submenu_nopriv[ $parent ][ $data[2] ] = true; 81 } 82 } 83 unset( $index, $data ); 84 85 if ( empty( $submenu[ $parent ] ) ) { 86 unset( $submenu[ $parent ] ); 87 } 88 } 89 unset( $sub, $parent ); 87 90 88 91 /* … … 92 95 */ 93 96 foreach ( $menu as $id => $data ) { 94 if ( empty( $submenu[$data[2]]) )97 if ( empty( $submenu[ $data[2] ] ) ) { 95 98 continue; 96 $subs = $submenu[$data[2]]; 97 $first_sub = reset( $subs ); 99 } 100 $subs = $submenu[ $data[2] ]; 101 $first_sub = reset( $subs ); 98 102 $old_parent = $data[2]; 99 103 $new_parent = $first_sub[2]; … … 103 107 */ 104 108 if ( $new_parent != $old_parent ) { 105 $_wp_real_parent_file[$old_parent] = $new_parent; 106 $menu[$id][2] = $new_parent; 107 108 foreach ($submenu[$old_parent] as $index => $data) { 109 $submenu[$new_parent][$index] = $submenu[$old_parent][$index]; 110 unset($submenu[$old_parent][$index]); 111 } 112 unset($submenu[$old_parent], $index); 113 114 if ( isset($_wp_submenu_nopriv[$old_parent]) ) 115 $_wp_submenu_nopriv[$new_parent] = $_wp_submenu_nopriv[$old_parent]; 116 } 117 } 118 unset($id, $data, $subs, $first_sub, $old_parent, $new_parent); 109 $_wp_real_parent_file[ $old_parent ] = $new_parent; 110 $menu[ $id ][2] = $new_parent; 111 112 foreach ( $submenu[ $old_parent ] as $index => $data ) { 113 $submenu[ $new_parent ][ $index ] = $submenu[ $old_parent ][ $index ]; 114 unset( $submenu[ $old_parent ][ $index ] ); 115 } 116 unset( $submenu[ $old_parent ], $index ); 117 118 if ( isset( $_wp_submenu_nopriv[ $old_parent ] ) ) { 119 $_wp_submenu_nopriv[ $new_parent ] = $_wp_submenu_nopriv[ $old_parent ]; 120 } 121 } 122 } 123 unset( $id, $data, $subs, $first_sub, $old_parent, $new_parent ); 119 124 120 125 if ( is_network_admin() ) { … … 155 160 */ 156 161 foreach ( $menu as $id => $data ) { 157 if ( ! current_user_can($data[1]) ) 158 $_wp_menu_nopriv[$data[2]] = true; 162 if ( ! current_user_can( $data[1] ) ) { 163 $_wp_menu_nopriv[ $data[2] ] = true; 164 } 159 165 160 166 /* … … 162 168 * remove the submenu. 163 169 */ 164 if ( ! empty( $submenu[ $data[2]] ) && 1 == count ( $submenu[$data[2]] ) ) {165 $subs = $submenu[$data[2]];170 if ( ! empty( $submenu[ $data[2] ] ) && 1 == count( $submenu[ $data[2] ] ) ) { 171 $subs = $submenu[ $data[2] ]; 166 172 $first_sub = reset( $subs ); 167 if ( $data[2] == $first_sub[2] ) 168 unset( $submenu[$data[2]] ); 173 if ( $data[2] == $first_sub[2] ) { 174 unset( $submenu[ $data[2] ] ); 175 } 169 176 } 170 177 171 178 // If submenu is empty... 172 if ( empty( $submenu[$data[2]]) ) {179 if ( empty( $submenu[ $data[2] ] ) ) { 173 180 // And user doesn't have privs, remove menu. 174 if ( isset( $_wp_menu_nopriv[ $data[2]] ) ) {175 unset( $menu[$id]);176 } 177 } 178 } 179 unset( $id, $data, $subs, $first_sub);181 if ( isset( $_wp_menu_nopriv[ $data[2] ] ) ) { 182 unset( $menu[ $id ] ); 183 } 184 } 185 } 186 unset( $id, $data, $subs, $first_sub ); 180 187 181 188 /** 182 *183 189 * @param string $add 184 190 * @param string $class 185 191 * @return string 186 192 */ 187 function add_cssclass( $add, $class) {188 $class = empty( $class) ? $add : $class .= ' ' . $add;193 function add_cssclass( $add, $class ) { 194 $class = empty( $class ) ? $add : $class .= ' ' . $add; 189 195 return $class; 190 196 } 191 197 192 198 /** 193 *194 199 * @param array $menu 195 200 * @return array 196 201 */ 197 function add_menu_classes( $menu) {202 function add_menu_classes( $menu ) { 198 203 $first = $lastorder = false; 199 $i = 0;200 $mc = count($menu);204 $i = 0; 205 $mc = count( $menu ); 201 206 foreach ( $menu as $order => $top ) { 202 207 $i++; 203 208 204 209 if ( 0 == $order ) { // dashboard is always shown/single 205 $menu[0][4] = add_cssclass( 'menu-top-first', $top[4]);206 $lastorder = 0;210 $menu[0][4] = add_cssclass( 'menu-top-first', $top[4] ); 211 $lastorder = 0; 207 212 continue; 208 213 } 209 214 210 if ( 0 === strpos( $top[2], 'separator') && false !== $lastorder ) { // if separator211 $first = true;212 $c = $menu[$lastorder][4];213 $menu[ $lastorder][4] = add_cssclass('menu-top-last', $c);215 if ( 0 === strpos( $top[2], 'separator' ) && false !== $lastorder ) { // if separator 216 $first = true; 217 $c = $menu[ $lastorder ][4]; 218 $menu[ $lastorder ][4] = add_cssclass( 'menu-top-last', $c ); 214 219 continue; 215 220 } 216 221 217 222 if ( $first ) { 218 $c = $menu[$order][4];219 $menu[ $order][4] = add_cssclass('menu-top-first', $c);220 $first = false;223 $c = $menu[ $order ][4]; 224 $menu[ $order ][4] = add_cssclass( 'menu-top-first', $c ); 225 $first = false; 221 226 } 222 227 223 228 if ( $mc == $i ) { // last item 224 $c = $menu[$order][4];225 $menu[ $order][4] = add_cssclass('menu-top-last', $c);229 $c = $menu[ $order ][4]; 230 $menu[ $order ][4] = add_cssclass( 'menu-top-last', $c ); 226 231 } 227 232 … … 239 244 } 240 245 241 uksort( $menu, "strnatcasecmp"); // make it all pretty246 uksort( $menu, 'strnatcasecmp' ); // make it all pretty 242 247 243 248 /** … … 255 260 $menu_order[] = $menu_item[2]; 256 261 } 257 unset( $menu_item);262 unset( $menu_item ); 258 263 $default_menu_order = $menu_order; 259 264 … … 270 275 * @param array $menu_order An ordered array of menu items. 271 276 */ 272 $menu_order = apply_filters( 'menu_order', $menu_order ); 273 $menu_order = array_flip($menu_order); 274 $default_menu_order = array_flip($default_menu_order); 275 276 /** 277 * 277 $menu_order = apply_filters( 'menu_order', $menu_order ); 278 $menu_order = array_flip( $menu_order ); 279 $default_menu_order = array_flip( $default_menu_order ); 280 281 /** 278 282 * @global array $menu_order 279 283 * @global array $default_menu_order … … 283 287 * @return int 284 288 */ 285 function sort_menu( $a, $b) {289 function sort_menu( $a, $b ) { 286 290 global $menu_order, $default_menu_order; 287 291 $a = $a[2]; 288 292 $b = $b[2]; 289 if ( isset( $menu_order[$a]) && !isset($menu_order[$b]) ) {293 if ( isset( $menu_order[ $a ] ) && ! isset( $menu_order[ $b ] ) ) { 290 294 return -1; 291 } elseif ( ! isset($menu_order[$a]) && isset($menu_order[$b]) ) {295 } elseif ( ! isset( $menu_order[ $a ] ) && isset( $menu_order[ $b ] ) ) { 292 296 return 1; 293 } elseif ( isset( $menu_order[$a]) && isset($menu_order[$b]) ) {294 if ( $menu_order[ $a] == $menu_order[$b] )297 } elseif ( isset( $menu_order[ $a ] ) && isset( $menu_order[ $b ] ) ) { 298 if ( $menu_order[ $a ] == $menu_order[ $b ] ) { 295 299 return 0; 296 return ($menu_order[$a] < $menu_order[$b]) ? -1 : 1; 300 } 301 return ( $menu_order[ $a ] < $menu_order[ $b ] ) ? -1 : 1; 297 302 } else { 298 return ( $default_menu_order[$a] <= $default_menu_order[$b]) ? -1 : 1;299 } 300 } 301 302 usort( $menu, 'sort_menu');303 unset( $menu_order, $default_menu_order);303 return ( $default_menu_order[ $a ] <= $default_menu_order[ $b ] ) ? -1 : 1; 304 } 305 } 306 307 usort( $menu, 'sort_menu' ); 308 unset( $menu_order, $default_menu_order ); 304 309 } 305 310 … … 327 332 $last_menu_key = array_keys( $menu ); 328 333 $last_menu_key = array_pop( $last_menu_key ); 329 if ( ! empty( $menu ) && 'wp-menu-separator' == $menu[ $last_menu_key ][ 4 ] )334 if ( ! empty( $menu ) && 'wp-menu-separator' == $menu[ $last_menu_key ][4] ) { 330 335 unset( $menu[ $last_menu_key ] ); 336 } 331 337 unset( $last_menu_key ); 332 338 333 if ( ! user_can_access_admin_page() ) {339 if ( ! user_can_access_admin_page() ) { 334 340 335 341 /** … … 343 349 } 344 350 345 $menu = add_menu_classes( $menu);351 $menu = add_menu_classes( $menu );
Note: See TracChangeset
for help on using the changeset viewer.