.*?<', $str ) ) );
}
/*
* Convert hex color values to RGB values
*/
function admin_search_RGB( $hex ) {
if ( $hex[ 0 ] == '#' )
$hex = substr( $hex, 1 );
if ( strlen( $hex ) == 3 ) {
$hex = $hex[ 0 ] . $hex[ 0 ] . $hex[ 1 ] . $hex[ 1 ] . $hex[ 2 ] . $hex[ 2 ];
}
return hexdec( $hex[ 0 ] . $hex[ 1 ] ) . ' ' . hexdec( $hex[ 2 ] . $hex[ 3 ] ) . ' ' . hexdec( $hex[ 4 ] . $hex[ 5 ] );
}
/*
* Add plugin assets
*/
function admin_search_load_plugin_assets() {
if ( isset( $_GET[ 'admin_search_preview' ] ) && $_GET[ 'admin_search_preview' ] ) {
add_filter( 'show_admin_bar', '__return_false' );
wp_register_script( 'admin-search-preview-script', '', array(), ADMIN_SEARCH_VERSION, true );
wp_enqueue_script( 'admin-search-preview-script' );
wp_add_inline_script( 'admin-search-preview-script', "window.parent.postMessage({display:true},'" . get_site_url() . "');" );
}
if ( ! is_user_logged_in() ) {
return;
}
if ( ! current_user_can( 'edit_others_pages' ) ) {
return;
}
if ( ! is_admin() && ! admin_search_setting( 'show_when_viewing_site' ) ) {
return;
}
if ( ! is_admin_bar_showing() ) {
return;
}
wp_enqueue_style( 'admin-search-stylesheet', plugin_dir_url( __FILE__ ) . 'assets/style.css', array(), ADMIN_SEARCH_VERSION );
wp_enqueue_script( 'jquery-ui-draggable' );
wp_enqueue_script( 'admin-search-script', plugin_dir_url( __FILE__ ) . 'assets/script.js', array( 'jquery', 'jquery-ui-draggable', 'wp-util', 'underscore' ), ADMIN_SEARCH_VERSION, array(
'in_footer' => true
) );
$formatted_menu = array();
if ( is_admin() ) {
global $menu, $submenu;
if ( current_user_can( 'manage_options' ) ) {
foreach ( $menu as $menu_item ) {
if ( ! $menu_item[ 0 ] ) {
continue;
}
$menu_item_name = admin_search_sanitize_menu_name( $menu_item[ 0 ] );
$menu_item_title = $menu_item_name;
$menu_item_url = $menu_item[ 2 ];
if ( isset( $submenu[ $menu_item[ 2 ] ] ) ) {
foreach ( $submenu[ $menu_item[ 2 ] ] as $submenu_item ) {
if ( ! $submenu_item[ 0 ] ) {
continue;
}
if ( ! current_user_can( $submenu_item[ 1 ] ) ) {
continue;
}
$submenu_item_name = admin_search_sanitize_menu_name( $submenu_item[ 0 ] );
$submenu_item_title = $submenu_item_name;
$submenu_item_url = $submenu_item[ 2 ];
if ( strpos( $submenu_item_url, '.php' ) === false ) {
$submenu_item_url = 'admin.php?page=' . $submenu_item_url;
}
$formatted_menu[ $submenu_item[ 2 ] ] = array(
'edit_post_link' => admin_url( $submenu_item_url ),
'name' => strtolower( $submenu_item_name . ' ' . $menu_item_name ),
'title' => $submenu_item_title,
'status' => null
);
if ( strpos( $submenu_item_name, $menu_item_name ) === false ) {
$formatted_menu[ $submenu_item[ 2 ] ][ 'status' ] = $menu_item_name;
}
}
continue;
}
if ( ! current_user_can( $menu_item[ 1 ] ) ) {
continue;
}
if ( strpos( $menu_item_url, '.php' ) === false ) {
$menu_item_url = 'admin.php?page=' . $menu_item_url;
}
$formatted_menu[ $menu_item[ 2 ] ] = array(
'edit_post_link' => admin_url( $menu_item_url ),
'name' => strtolower( $menu_item_name ),
'title' => $menu_item_title,
'status' => null
);
}
}
}
$script_data = array(
'site_url' => get_site_url(),
'ajax_url' => admin_url( 'admin-ajax.php' ),
'nonce' => wp_create_nonce( 'admin-search' ),
'display_on_keypress' => (bool) admin_search_setting( 'display_on_keypress' ),
'autosearch' => (bool) admin_search_setting( 'autosearch' ),
'include_admin_pages' => (bool) admin_search_setting( 'include_admin_pages' ),
'show_suggestions' => (bool) admin_search_setting( 'show_suggestions' ),
'strings' => array(
'confirm_clear_searches' => __( 'This will clear all search history and suggestions will be reset. Are you sure you want to continue?', 'admin-search' )
),
'menu' => $formatted_menu,
'admin_pages_label' => __( 'Admin Pages', 'admin-search' ),
);
if ( admin_search_setting( 'show_suggestions' ) ) {
global $wpdb;
$table_name = $wpdb -> prefix . 'admin_search__searches';
$top_searches = $wpdb -> get_results( $wpdb -> prepare( "SELECT * FROM {$table_name} ORDER BY LENGTH(query) DESC, occurrences DESC, results DESC LIMIT 100" ) );
$script_data[ 'top_searches' ] = ! empty( $top_searches ) ? array_column( $top_searches, 'query' ) : array();
}
$inline_script = 'var admin_search=' . wp_json_encode( $script_data ) . ';';
wp_add_inline_script( 'admin-search-script', $inline_script );
global $_wp_admin_css_colors;
$inline_style = "";
if ( is_admin() && ! in_array( get_user_option( 'admin_color' ), array( 'light', 'modern' ) ) ) {
$scheme = $_wp_admin_css_colors[ get_user_option( 'admin_color' ) ];
$inline_style .= ":root{--as-color-background:" . $scheme -> colors[ 1 ];
$inline_style .= ";--as-color-background-rgb:" . admin_search_RGB( $scheme -> colors[ 1 ] );
$inline_style .= ";--as-color-focus:" . $scheme -> colors[ 2 ];
$inline_style .= ";--as-color-focus-text:" . $scheme -> colors[ 3 ];
$inline_style .= ";--as-color-primary:" . $scheme -> icon_colors[ 'current' ];
$inline_style .= ";--as-color-primary-rgb:" . admin_search_RGB( $scheme -> icon_colors[ 'current' ] );
$inline_style .= "}@media (min-width:783px){:root{--as-color-background:" . $scheme -> colors[ 0 ];
$inline_style .= ";--as-color-background-rgb:" . admin_search_RGB( $scheme -> colors[ 0 ] );
$inline_style .= "}}";
}
wp_add_inline_style( 'admin-search-stylesheet', $inline_style );
}
add_action( 'admin_enqueue_scripts', 'admin_search_load_plugin_assets' );
add_action( 'wp_enqueue_scripts', 'admin_search_load_plugin_assets' );
/*
* Add search button to admin bar
*/
function admin_search_add_wb_item( $admin_bar ) {
if ( ! is_user_logged_in() ) {
return;
}
if ( ! current_user_can( 'edit_others_pages' ) ) {
return;
}
if ( ! is_admin() && ! admin_search_setting( 'show_when_viewing_site' ) ) {
return;
}
if ( ! is_admin_bar_showing() ) {
return;
}
$admin_bar -> add_menu( array(
'id' => 'admin-search-toggle',
'title' => '' . __( 'Search WordPress', 'admin-search' ) . '',
'href' => '#',
'meta' => array(
'title' => __( 'Search', 'admin-search' ),
'onclick' => 'admin_search_modal( { toggle : true } ); return false'
),
) );
}
add_action( 'admin_bar_menu', 'admin_search_add_wb_item', 100 );
/*
* Add search UI template compontents
*/
function admin_search_ui() {
if ( ! is_user_logged_in() ) {
return;
}
if ( ! current_user_can( 'edit_others_pages' ) ) {
return;
}
if ( ! is_admin() && ! admin_search_setting( 'show_when_viewing_site' ) ) {
return;
}
if ( ! is_admin_bar_showing() ) {
return;
}
$loading_indicator = '';
?>