PageRenderTime 309ms CodeModel.GetById 121ms app.highlight 70ms RepoModel.GetById 111ms app.codeStats 0ms

/wp-includes/admin-bar.php

https://bitbucket.org/aqge/deptandashboard
PHP | 745 lines | 481 code | 111 blank | 153 comment | 80 complexity | 8cc11f44e49fa9072c28e4c56c8de5f7 MD5 | raw file
  1<?php
  2/**
  3 * Admin Bar
  4 *
  5 * This code handles the building and rendering of the press bar.
  6 */
  7
  8/**
  9 * Instantiate the admin bar object and set it up as a global for access elsewhere.
 10 *
 11 * To hide the admin bar, you're looking in the wrong place. Unhooking this function will not
 12 * properly remove the admin bar. For that, use show_admin_bar(false) or the show_admin_bar filter.
 13 *
 14 * @since 3.1.0
 15 * @access private
 16 * @return bool Whether the admin bar was successfully initialized.
 17 */
 18function _wp_admin_bar_init() {
 19	global $wp_admin_bar;
 20
 21	if ( ! is_admin_bar_showing() )
 22		return false;
 23
 24	/* Load the admin bar class code ready for instantiation */
 25	require( ABSPATH . WPINC . '/class-wp-admin-bar.php' );
 26
 27	/* Instantiate the admin bar */
 28	$admin_bar_class = apply_filters( 'wp_admin_bar_class', 'WP_Admin_Bar' );
 29	if ( class_exists( $admin_bar_class ) )
 30		$wp_admin_bar = new $admin_bar_class;
 31	else
 32		return false;
 33
 34	$wp_admin_bar->initialize();
 35	$wp_admin_bar->add_menus();
 36
 37	return true;
 38}
 39add_action( 'init', '_wp_admin_bar_init' ); // Don't remove. Wrong way to disable.
 40
 41/**
 42 * Render the admin bar to the page based on the $wp_admin_bar->menu member var.
 43 * This is called very late on the footer actions so that it will render after anything else being
 44 * added to the footer.
 45 *
 46 * It includes the action "admin_bar_menu" which should be used to hook in and
 47 * add new menus to the admin bar. That way you can be sure that you are adding at most optimal point,
 48 * right before the admin bar is rendered. This also gives you access to the $post global, among others.
 49 *
 50 * @since 3.1.0
 51 */
 52function wp_admin_bar_render() {
 53	global $wp_admin_bar;
 54
 55	if ( ! is_admin_bar_showing() || ! is_object( $wp_admin_bar ) )
 56		return false;
 57
 58	do_action_ref_array( 'admin_bar_menu', array( &$wp_admin_bar ) );
 59
 60	do_action( 'wp_before_admin_bar_render' );
 61
 62	$wp_admin_bar->render();
 63
 64	do_action( 'wp_after_admin_bar_render' );
 65}
 66add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
 67add_action( 'admin_footer', 'wp_admin_bar_render', 1000 );
 68
 69/**
 70 * Add the WordPress logo menu.
 71 *
 72 * @since 3.3.0
 73 */
 74function wp_admin_bar_wp_menu( $wp_admin_bar ) {
 75	$wp_admin_bar->add_menu( array(
 76		'id'    => 'wp-logo',
 77		'title' => '<span class="ab-icon"></span>',
 78		'href'  => admin_url( 'about.php' ),
 79		'meta'  => array(
 80			'title' => __('About WordPress'),
 81		),
 82	) );
 83
 84	if ( is_user_logged_in() ) {
 85		// Add "About WordPress" link
 86		$wp_admin_bar->add_menu( array(
 87			'parent' => 'wp-logo',
 88			'id'     => 'about',
 89			'title'  => __('About WordPress'),
 90			'href'   => admin_url('about.php'),
 91		) );
 92	}
 93
 94	// Add WordPress.org link
 95	$wp_admin_bar->add_menu( array(
 96		'parent'    => 'wp-logo-external',
 97		'id'        => 'wporg',
 98		'title'     => __('WordPress.org'),
 99		'href'      => __('http://wordpress.org'),
100	) );
101
102	// Add codex link
103	$wp_admin_bar->add_menu( array(
104		'parent'    => 'wp-logo-external',
105		'id'        => 'documentation',
106		'title'     => __('Documentation'),
107		'href'      => __('http://codex.wordpress.org'),
108	) );
109
110	// Add forums link
111	$wp_admin_bar->add_menu( array(
112		'parent'    => 'wp-logo-external',
113		'id'        => 'support-forums',
114		'title'     => __('Support Forums'),
115		'href'      => __('http://wordpress.org/support/'),
116	) );
117
118	// Add feedback link
119	$wp_admin_bar->add_menu( array(
120		'parent'    => 'wp-logo-external',
121		'id'        => 'feedback',
122		'title'     => __('Feedback'),
123		'href'      => __('http://wordpress.org/support/forum/requests-and-feedback'),
124	) );
125}
126
127/**
128 * Add the "My Account" item.
129 *
130 * @since 3.3.0
131 */
132function wp_admin_bar_my_account_item( $wp_admin_bar ) {
133	$user_id      = get_current_user_id();
134	$current_user = wp_get_current_user();
135	$profile_url  = get_edit_profile_url( $user_id );
136
137	if ( ! $user_id )
138		return;
139
140	$avatar = get_avatar( $user_id, 16 );
141	$howdy  = sprintf( __('Howdy, %1$s'), $current_user->display_name );
142	$class  = empty( $avatar ) ? '' : 'with-avatar';
143
144	$wp_admin_bar->add_menu( array(
145		'id'        => 'my-account',
146		'parent'    => 'top-secondary',
147		'title'     => $howdy . $avatar,
148		'href'      => $profile_url,
149		'meta'      => array(
150			'class'     => $class,
151			'title'     => __('My Account'),
152		),
153	) );
154}
155
156/**
157 * Add the "My Account" submenu items.
158 *
159 * @since 3.1.0
160 */
161function wp_admin_bar_my_account_menu( $wp_admin_bar ) {
162	$user_id      = get_current_user_id();
163	$current_user = wp_get_current_user();
164	$profile_url  = get_edit_profile_url( $user_id );
165
166	if ( ! $user_id )
167		return;
168
169	$wp_admin_bar->add_group( array(
170		'parent' => 'my-account',
171		'id'     => 'user-actions',
172	) );
173
174	$user_info  = get_avatar( $user_id, 64 );
175	$user_info .= "<span class='display-name'>{$current_user->display_name}</span>";
176
177	if ( $current_user->display_name !== $current_user->user_nicename )
178		$user_info .= "<span class='username'>{$current_user->user_nicename}</span>";
179
180	$wp_admin_bar->add_menu( array(
181		'parent' => 'user-actions',
182		'id'     => 'user-info',
183		'title'  => $user_info,
184		'href'   => $profile_url,
185		'meta'   => array(
186			'tabindex' => -1,
187		),
188	) );
189	$wp_admin_bar->add_menu( array(
190		'parent' => 'user-actions',
191		'id'     => 'edit-profile',
192		'title'  => __( 'Edit My Profile' ),
193		'href' => $profile_url,
194	) );
195	$wp_admin_bar->add_menu( array(
196		'parent' => 'user-actions',
197		'id'     => 'logout',
198		'title'  => __( 'Log Out' ),
199		'href'   => wp_logout_url(),
200	) );
201}
202
203/**
204 * Add the "Site Name" menu.
205 *
206 * @since 3.3.0
207 */
208function wp_admin_bar_site_menu( $wp_admin_bar ) {
209	global $current_site;
210
211	// Don't show for logged out users.
212	if ( ! is_user_logged_in() )
213		return;
214
215	// Show only when the user is a member of this site, or they're a super admin.
216	if ( ! is_user_member_of_blog() && ! is_super_admin() )
217		return;
218
219	$blogname = get_bloginfo('name');
220
221	if ( empty( $blogname ) )
222		$blogname = preg_replace( '#^(https?://)?(www.)?#', '', get_home_url() );
223
224	if ( is_network_admin() ) {
225		$blogname = sprintf( __('Network Admin: %s'), esc_html( $current_site->site_name ) );
226	} elseif ( is_user_admin() ) {
227		$blogname = sprintf( __('Global Dashboard: %s'), esc_html( $current_site->site_name ) );
228	}
229
230	$title = wp_html_excerpt( $blogname, 40 );
231	if ( $title != $blogname )
232		$title = trim( $title ) . '&hellip;';
233
234	$wp_admin_bar->add_menu( array(
235		'id'    => 'site-name',
236		'title' => $title,
237		'href'  => is_admin() ? home_url( '/' ) : admin_url(),
238	) );
239
240	// Create submenu items.
241
242	if ( is_admin() ) {
243		// Add an option to visit the site.
244		$wp_admin_bar->add_menu( array(
245			'parent' => 'site-name',
246			'id'     => 'view-site',
247			'title'  => __( 'Visit Site' ),
248			'href'   => home_url( '/' ),
249		) );
250
251	// We're on the front end, print a copy of the admin menu.
252	} else {
253		// Add the dashboard item.
254		$wp_admin_bar->add_menu( array(
255			'parent' => 'site-name',
256			'id'     => 'dashboard',
257			'title'  => __( 'Dashboard' ),
258			'href'   => admin_url(),
259		) );
260
261		// Add the appearance submenu items.
262		wp_admin_bar_appearance_menu( $wp_admin_bar );
263	}
264}
265
266/**
267 * Add the "My Sites/[Site Name]" menu and all submenus.
268 *
269 * @since 3.1.0
270 */
271function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
272	global $wpdb;
273
274	// Don't show for logged out users or single site mode.
275	if ( ! is_user_logged_in() || ! is_multisite() )
276		return;
277
278	// Show only when the user has at least one site, or they're a super admin.
279	if ( count( $wp_admin_bar->user->blogs ) < 1 && ! is_super_admin() )
280		return;
281
282	$wp_admin_bar->add_menu( array(
283		'id'    => 'my-sites',
284		'title' => __( 'My Sites' ),
285		'href'  => admin_url( 'my-sites.php' ),
286	) );
287
288	if ( is_super_admin() ) {
289		$wp_admin_bar->add_group( array(
290			'parent' => 'my-sites',
291			'id'     => 'my-sites-super-admin',
292		) );
293
294		$wp_admin_bar->add_menu( array(
295			'parent' => 'my-sites-super-admin',
296			'id'     => 'network-admin',
297			'title'  => __('Network Admin'),
298			'href'   => network_admin_url(),
299		) );
300
301		$wp_admin_bar->add_menu( array(
302			'parent' => 'network-admin',
303			'id'     => 'network-admin-d',
304			'title'  => __( 'Dashboard' ),
305			'href'   => network_admin_url(),
306		) );
307		$wp_admin_bar->add_menu( array(
308			'parent' => 'network-admin',
309			'id'     => 'network-admin-s',
310			'title'  => __( 'Sites' ),
311			'href'   => network_admin_url( 'sites.php' ),
312		) );
313		$wp_admin_bar->add_menu( array(
314			'parent' => 'network-admin',
315			'id'     => 'network-admin-u',
316			'title'  => __( 'Users' ),
317			'href'   => network_admin_url( 'users.php' ),
318		) );
319		$wp_admin_bar->add_menu( array(
320			'parent' => 'network-admin',
321			'id'     => 'network-admin-v',
322			'title'  => __( 'Visit Network' ),
323			'href'   => network_home_url(),
324		) );
325	}
326
327	// Add site links
328	$wp_admin_bar->add_group( array(
329		'parent' => 'my-sites',
330		'id'     => 'my-sites-list',
331		'meta'   => array(
332			'class' => is_super_admin() ? 'ab-sub-secondary' : '',
333		),
334	) );
335
336	$blue_wp_logo_url = includes_url('images/wpmini-blue.png');
337
338	foreach ( (array) $wp_admin_bar->user->blogs as $blog ) {
339		// @todo Replace with some favicon lookup.
340		//$blavatar = '<img src="' . esc_url( blavatar_url( blavatar_domain( $blog->siteurl ), 'img', 16, $blue_wp_logo_url ) ) . '" alt="Blavatar" width="16" height="16" />';
341		$blavatar = '<img src="' . esc_url($blue_wp_logo_url) . '" alt="' . esc_attr__( 'Blavatar' ) . '" width="16" height="16" class="blavatar"/>';
342
343		$blogname = empty( $blog->blogname ) ? $blog->domain : $blog->blogname;
344		$menu_id  = 'blog-' . $blog->userblog_id;
345
346		$wp_admin_bar->add_menu( array(
347			'parent'    => 'my-sites-list',
348			'id'        => $menu_id,
349			'title'     => $blavatar . $blogname,
350			'href'      => get_admin_url( $blog->userblog_id ),
351		) );
352
353		$wp_admin_bar->add_menu( array(
354			'parent' => $menu_id,
355			'id'     => $menu_id . '-d',
356			'title'  => __( 'Dashboard' ),
357			'href'   => get_admin_url( $blog->userblog_id ),
358		) );
359
360		if ( current_user_can_for_blog( $blog->userblog_id, 'edit_posts' ) ) {
361			$wp_admin_bar->add_menu( array(
362				'parent' => $menu_id,
363				'id'     => $menu_id . '-n',
364				'title'  => __( 'New Post' ),
365				'href'   => get_admin_url( $blog->userblog_id, 'post-new.php' ),
366			) );
367			$wp_admin_bar->add_menu( array(
368				'parent' => $menu_id,
369				'id'     => $menu_id . '-c',
370				'title'  => __( 'Manage Comments' ),
371				'href'   => get_admin_url( $blog->userblog_id, 'edit-comments.php' ),
372			) );
373		}
374
375		$wp_admin_bar->add_menu( array(
376			'parent' => $menu_id,
377			'id'     => $menu_id . '-v',
378			'title'  => __( 'Visit Site' ),
379			'href'   => get_home_url( $blog->userblog_id, '/' ),
380		) );
381	}
382}
383
384/**
385 * Provide a shortlink.
386 *
387 * @since 3.1.0
388 */
389function wp_admin_bar_shortlink_menu( $wp_admin_bar ) {
390	$short = wp_get_shortlink( 0, 'query' );
391	$id = 'get-shortlink';
392
393	if ( empty( $short ) )
394		return;
395
396	$html = '<input class="shortlink-input" type="text" readonly="readonly" value="' . esc_attr( $short ) . '" />';
397
398	$wp_admin_bar->add_menu( array(
399		'id' => $id,
400		'title' => __( 'Shortlink' ),
401		'href' => $short,
402		'meta' => array( 'html' => $html ),
403	) );
404}
405
406/**
407 * Provide an edit link for posts and terms.
408 *
409 * @since 3.1.0
410 */
411function wp_admin_bar_edit_menu( $wp_admin_bar ) {
412	global $post, $tag, $wp_the_query;
413
414	if ( is_admin() ) {
415		$current_screen = get_current_screen();
416
417		if ( 'post' == $current_screen->base
418			&& 'add' != $current_screen->action
419			&& ( $post_type_object = get_post_type_object( $post->post_type ) )
420			&& current_user_can( $post_type_object->cap->read_post, $post->ID )
421			&& ( $post_type_object->public ) )
422		{
423			$wp_admin_bar->add_menu( array(
424				'id' => 'view',
425				'title' => $post_type_object->labels->view_item,
426				'href' => get_permalink( $post->ID )
427			) );
428		} elseif ( 'edit-tags' == $current_screen->base
429			&& isset( $tag ) && is_object( $tag )
430			&& ( $tax = get_taxonomy( $tag->taxonomy ) )
431			&& $tax->public )
432		{
433			$wp_admin_bar->add_menu( array(
434				'id' => 'view',
435				'title' => $tax->labels->view_item,
436				'href' => get_term_link( $tag )
437			) );
438		}
439	} else {
440		$current_object = $wp_the_query->get_queried_object();
441
442		if ( empty( $current_object ) )
443			return;
444
445		if ( ! empty( $current_object->post_type )
446			&& ( $post_type_object = get_post_type_object( $current_object->post_type ) )
447			&& current_user_can( $post_type_object->cap->edit_post, $current_object->ID )
448			&& ( $post_type_object->show_ui || 'attachment' == $current_object->post_type ) )
449		{
450			$wp_admin_bar->add_menu( array(
451				'id' => 'edit',
452				'title' => $post_type_object->labels->edit_item,
453				'href' => get_edit_post_link( $current_object->ID )
454			) );
455		} elseif ( ! empty( $current_object->taxonomy )
456			&& ( $tax = get_taxonomy( $current_object->taxonomy ) )
457			&& current_user_can( $tax->cap->edit_terms )
458			&& $tax->show_ui )
459		{
460			$wp_admin_bar->add_menu( array(
461				'id' => 'edit',
462				'title' => $tax->labels->edit_item,
463				'href' => get_edit_term_link( $current_object->term_id, $current_object->taxonomy )
464			) );
465		}
466	}
467}
468
469/**
470 * Add "Add New" menu.
471 *
472 * @since 3.1.0
473 */
474function wp_admin_bar_new_content_menu( $wp_admin_bar ) {
475	$actions = array();
476
477	$cpts = (array) get_post_types( array( 'show_in_admin_bar' => true ), 'objects' );
478
479	if ( isset( $cpts['post'] ) && current_user_can( $cpts['post']->cap->edit_posts ) ) {
480		$actions[ 'post-new.php' ] = array( $cpts['post']->labels->name_admin_bar, 'new-post' );
481		unset( $cpts['post'] );
482	}
483
484	if ( current_user_can( 'upload_files' ) )
485		$actions[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' );
486
487	if ( current_user_can( 'manage_links' ) )
488		$actions[ 'link-add.php' ] = array( _x( 'Link', 'add new from admin bar' ), 'new-link' );
489
490	if ( isset( $cpts['page'] ) && current_user_can( $cpts['page']->cap->edit_posts ) ) {
491		$actions[ 'post-new.php?post_type=page' ] = array( $cpts['page']->labels->name_admin_bar, 'new-page' );
492		unset( $cpts['page'] );
493	}
494
495	// Add any additional custom post types.
496	foreach ( $cpts as $cpt ) {
497		if ( ! current_user_can( $cpt->cap->edit_posts ) )
498			continue;
499
500		$key = 'post-new.php?post_type=' . $cpt->name;
501		$actions[ $key ] = array( $cpt->labels->name_admin_bar, 'new-' . $cpt->name );
502	}
503
504	if ( current_user_can( 'create_users' ) || current_user_can( 'promote_users' ) )
505		$actions[ 'user-new.php' ] = array( _x( 'User', 'add new from admin bar' ), 'new-user' );
506
507	if ( ! $actions )
508		return;
509
510	$title = '<span class="ab-icon"></span><span class="ab-label">' . _x( 'New', 'admin bar menu group label' ) . '</span>';
511
512	$wp_admin_bar->add_menu( array(
513		'id'    => 'new-content',
514		'title' => $title,
515		'href'  => admin_url( current( array_keys( $actions ) ) ),
516		'meta'  => array(
517			'title' => _x( 'Add New', 'admin bar menu group label' ),
518		),
519	) );
520
521	foreach ( $actions as $link => $action ) {
522		list( $title, $id ) = $action;
523
524		$wp_admin_bar->add_menu( array(
525			'parent'    => 'new-content',
526			'id'        => $id,
527			'title'     => $title,
528			'href'      => admin_url( $link )
529		) );
530	}
531}
532
533/**
534 * Add edit comments link with awaiting moderation count bubble.
535 *
536 * @since 3.1.0
537 */
538function wp_admin_bar_comments_menu( $wp_admin_bar ) {
539	if ( !current_user_can('edit_posts') )
540		return;
541
542	$awaiting_mod = wp_count_comments();
543	$awaiting_mod = $awaiting_mod->moderated;
544	$awaiting_title = esc_attr( sprintf( _n( '%s comment awaiting moderation', '%s comments awaiting moderation', $awaiting_mod ), number_format_i18n( $awaiting_mod ) ) );
545
546	$icon  = '<span class="ab-icon"></span>';
547	$title = '<span id="ab-awaiting-mod" class="ab-label awaiting-mod pending-count count-' . $awaiting_mod . '">' . number_format_i18n( $awaiting_mod ) . '</span>';
548
549	$wp_admin_bar->add_menu( array(
550		'id'    => 'comments',
551		'title' => $icon . $title,
552		'href'  => admin_url('edit-comments.php'),
553		'meta'  => array( 'title' => $awaiting_title ),
554	) );
555}
556
557/**
558 * Add appearance submenu items to the "Site Name" menu.
559 *
560 * @since 3.1.0
561 */
562function wp_admin_bar_appearance_menu( $wp_admin_bar ) {
563	$wp_admin_bar->add_group( array( 'parent' => 'site-name', 'id' => 'appearance' ) );
564
565	if ( current_user_can( 'switch_themes' ) || current_user_can( 'edit_theme_options' ) )
566		$wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'themes', 'title' => __('Themes'), 'href' => admin_url('themes.php') ) );
567
568	if ( ! current_user_can( 'edit_theme_options' ) )
569		return;
570
571	if ( current_theme_supports( 'widgets' )  )
572		$wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'widgets', 'title' => __('Widgets'), 'href' => admin_url('widgets.php') ) );
573
574	 if ( current_theme_supports( 'menus' ) || current_theme_supports( 'widgets' ) )
575		$wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'menus', 'title' => __('Menus'), 'href' => admin_url('nav-menus.php') ) );
576
577	if ( current_theme_supports( 'custom-background' ) )
578		$wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'background', 'title' => __('Background'), 'href' => admin_url('themes.php?page=custom-background') ) );
579
580	if ( current_theme_supports( 'custom-header' ) )
581		$wp_admin_bar->add_menu( array( 'parent' => 'appearance', 'id' => 'header', 'title' => __('Header'), 'href' => admin_url('themes.php?page=custom-header') ) );
582}
583
584/**
585 * Provide an update link if theme/plugin/core updates are available.
586 *
587 * @since 3.1.0
588 */
589function wp_admin_bar_updates_menu( $wp_admin_bar ) {
590
591	$update_data = wp_get_update_data();
592
593	if ( !$update_data['counts']['total'] )
594		return;
595
596	$title = '<span class="ab-icon"></span><span class="ab-label">' . number_format_i18n( $update_data['counts']['total'] ) . '</span>';
597
598	$wp_admin_bar->add_menu( array(
599		'id'    => 'updates',
600		'title' => $title,
601		'href'  => network_admin_url( 'update-core.php' ),
602		'meta'  => array(
603			'title' => $update_data['title'],
604		),
605	) );
606}
607
608/**
609 * Add search form.
610 *
611 * @since 3.3.0
612 */
613function wp_admin_bar_search_menu( $wp_admin_bar ) {
614	if ( is_admin() )
615		return;
616
617	$form  = '<form action="' . esc_url( home_url( '/' ) ) . '" method="get" id="adminbarsearch">';
618	$form .= '<input class="adminbar-input" name="s" id="adminbar-search" tabindex="10" type="text" value="" maxlength="150" />';
619	$form .= '<input type="submit" class="adminbar-button" value="' . __('Search') . '"/>';
620	$form .= '</form>';
621
622	$wp_admin_bar->add_menu( array(
623		'parent' => 'top-secondary',
624		'id'     => 'search',
625		'title'  => $form,
626		'meta'   => array(
627			'class'    => 'admin-bar-search',
628			'tabindex' => -1,
629		)
630	) );
631}
632
633/**
634 * Add secondary menus.
635 *
636 * @since 3.3.0
637 */
638function wp_admin_bar_add_secondary_groups( $wp_admin_bar ) {
639	$wp_admin_bar->add_group( array(
640		'id'     => 'top-secondary',
641		'meta'   => array(
642			'class' => 'ab-top-secondary',
643		),
644	) );
645
646	$wp_admin_bar->add_group( array(
647		'parent' => 'wp-logo',
648		'id'     => 'wp-logo-external',
649		'meta'   => array(
650			'class' => 'ab-sub-secondary',
651		),
652	) );
653}
654
655/**
656 * Style and scripts for the admin bar.
657 *
658 * @since 3.1.0
659 *
660 */
661function wp_admin_bar_header() { ?>
662<style type="text/css" media="print">#wpadminbar { display:none; }</style>
663<?php
664}
665
666/**
667 * Default admin bar callback.
668 *
669 * @since 3.1.0
670 *
671 */
672function _admin_bar_bump_cb() { ?>
673<style type="text/css" media="screen">
674	html { margin-top: 28px !important; }
675	* html body { margin-top: 28px !important; }
676</style>
677<?php
678}
679
680/**
681 * Set the display status of the admin bar.
682 *
683 * This can be called immediately upon plugin load.  It does not need to be called from a function hooked to the init action.
684 *
685 * @since 3.1.0
686 *
687 * @param bool $show Whether to allow the admin bar to show.
688 * @return void
689 */
690function show_admin_bar( $show ) {
691	global $show_admin_bar;
692	$show_admin_bar = (bool) $show;
693}
694
695/**
696 * Determine whether the admin bar should be showing.
697 *
698 * @since 3.1.0
699 *
700 * @return bool Whether the admin bar should be showing.
701 */
702function is_admin_bar_showing() {
703	global $show_admin_bar, $pagenow;
704
705	// For all these types of requests, we never want an admin bar.
706	if ( defined('XMLRPC_REQUEST') || defined('APP_REQUEST') || defined('DOING_AJAX') || defined('IFRAME_REQUEST') )
707		return false;
708
709	// Integrated into the admin.
710	if ( is_admin() )
711		return true;
712
713	if ( ! isset( $show_admin_bar ) ) {
714		if ( ! is_user_logged_in() || 'wp-login.php' == $pagenow ) {
715			$show_admin_bar = false;
716		} else {
717			$show_admin_bar = _get_admin_bar_pref();
718		}
719	}
720
721	$show_admin_bar = apply_filters( 'show_admin_bar', $show_admin_bar );
722
723	return $show_admin_bar;
724}
725
726/**
727 * Retrieve the admin bar display preference of a user.
728 *
729 * @since 3.1.0
730 * @access private
731 *
732 * @param string $context Context of this preference check. Defaults to 'front'. The 'admin'
733 * 	preference is no longer used.
734 * @param int $user Optional. ID of the user to check, defaults to 0 for current user.
735 * @return bool Whether the admin bar should be showing for this user.
736 */
737function _get_admin_bar_pref( $context = 'front', $user = 0 ) {
738	$pref = get_user_option( "show_admin_bar_{$context}", $user );
739	if ( false === $pref )
740		return true;
741
742	return 'true' === $pref;
743}
744
745?>