array(
'not_set_this_level' => true,
),
'level_2' => array(
// 'mainwp_tab' - Do not hide this menu.
'UpdatesManage' => false,
'managesites' => false,
'ManageClients' => false,
'ManageGroups' => false,
'PostBulkManage' => false,
'PageBulkManage' => false,
'ThemesManage' => false,
'PluginsManage' => false,
'UserBulkManage' => false,
'ManageBackups' => false,
'Settings' => false,
'Extensions' => false,
'ServerInformation' => false,
),
// Compatible with old hooks.
'level_3' => array(),
);
}
}
/**
* Method init_mainwp_menus()
*
* Init MainWP menus.
*
* @uses \MainWP\Dashboard\MainWP_System_Utility::is_admin()
* @uses \MainWP\Dashboard\MainWP_Updates::init_menu()
* @uses \MainWP\Dashboard\MainWP_Manage_Sites::init_menu()
* @uses \MainWP\Dashboard\MainWP_Post::init_menu()
* @uses \MainWP\Dashboard\MainWP_Page::init_menu()
* @uses \MainWP\Dashboard\MainWP_Themes::init_menu()
* @uses \MainWP\Dashboard\MainWP_Plugins::init_menu()
* @uses \MainWP\Dashboard\MainWP_User::init_menu()
* @uses \MainWP\Dashboard\MainWP_Manage_Backups::init_menu()
* @uses \MainWP\Dashboard\MainWP_Manage_Groups::init_menu()
* @uses \MainWP\Dashboard\MainWP_Monitoring::init_menu()
* @uses \MainWP\Dashboard\MainWP_Settings::init_menu()
* @uses \MainWP\Dashboard\MainWP_Extensions::init_menu()
* @uses \MainWP\Dashboard\MainWP_Bulk_Update_Admin_Passwords::init_menu()
*/
public static function init_mainwp_menus() { // phpcs:ignore -- NOSONAR - complex method. Current complexity is the only way to achieve desired results, pull request solutions appreciated.
if ( MainWP_System_Utility::is_admin() ) {
$menus_items = array();
// Manage Sites.
$menus_items[] = array(
'slug' => 'managesites',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'add_sites',
'edit_sites',
'delete_sites',
'access_individual_dashboard',
'access_wpadmin_on_child_sites',
'manage_security_issues',
'test_connection',
'manage_groups',
'manage_uptime_monitoring',
),
),
'init_menu_callback' => array( MainWP_Manage_Sites::class, 'init_menu' ),
'leftbar_order' => 1,
);
// Manage Clients.
$menus_items[] = array(
'slug' => 'ManageClients',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_clients',
),
),
'init_menu_callback' => array( MainWP_Client::class, 'init_menu' ),
'leftbar_order' => 2,
);
// Manage Tags.
$menus_items[] = array(
'slug' => 'ManageGroups',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_groups',
),
),
'init_menu_callback' => array( MainWP_Manage_Groups::class, 'init_menu' ),
);
// Manage Updates.
$menus_items[] = array(
'slug' => 'UpdatesManage',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'update_wordpress',
'update_plugins',
'update_themes',
'update_translations',
'ignore_unignore_updates',
'trust_untrust_updates',
),
),
'init_menu_callback' => array( MainWP_Updates::class, 'init_menu' ),
);
// Manage Plugins.
$menus_items[] = array(
'slug' => 'PluginsManage',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'install_plugins',
'delete_plugins',
'activate_deactivate_plugins',
),
),
'init_menu_callback' => array( MainWP_Plugins::class, 'init_menu' ),
);
// Manage Themes.
$menus_items[] = array(
'slug' => 'ThemesManage',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'install_themes',
'delete_themes',
'activate_deactivate_themes',
),
),
'init_menu_callback' => array( MainWP_Themes::class, 'init_menu' ),
);
// Manage Users.
$menus_items[] = array(
'slug' => 'UserBulkManage',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_users',
),
),
'init_menu_callback' => array( MainWP_User::class, 'init_menu' ),
);
// Manage Posts.
$menus_items[] = array(
'slug' => 'PostBulkManage',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_posts',
),
),
'init_menu_callback' => array( MainWP_Post::class, 'init_menu' ),
);
// Manage Pages.
$menus_items[] = array(
'slug' => 'PageBulkManage',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_pages',
),
),
'init_menu_callback' => array( MainWP_Page::class, 'init_menu' ),
);
// Manage Backups.
$menus_items[] = array(
'slug' => 'ManageBackups',
'menu_level' => 2,
'menu_rights' => true,
'init_menu_callback' => array( MainWP_Manage_Backups::class, 'init_menu' ),
);
// Manage Settings.
$menus_items[] = array(
'slug' => 'Settings',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_dashboard_settings',
),
),
'init_menu_callback' => array( MainWP_Settings::class, 'init_menu' ),
'leftbar_order' => 5,
);
// Manage RESTAPI.
$menus_items[] = array(
'slug' => 'RESTAPI',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_dashboard_restapi',
),
),
'init_menu_callback' => array( MainWP_Rest_Api_Page::class, 'init_menu' ),
'leftbar_order' => 4,
);
// Manage Extensions.
$menus_items[] = array(
'slug' => 'Extensions',
'menu_level' => 2,
'menu_rights' => true,
'init_menu_callback' => array( MainWP_Extensions::class, 'init_menu' ),
'leftbar_order' => 3,
);
// Manage Admin Passwords.
$menus_items[] = array(
'slug' => 'UpdateAdminPasswords',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'manage_users',
),
),
'init_menu_callback' => array( MainWP_Bulk_Update_Admin_Passwords::class, 'init_menu' ),
);
// Monitoring Sites.
$menus_items[] = array(
'slug' => 'MonitoringSites',
'menu_level' => 3,
'menu_rights' => true,
'init_menu_callback' => array( MainWP_Monitoring::class, 'init_menu' ),
);
static::init_mainwp_menu_items( $menus_items, 'first' ); // do NOT change 'first', it related other hooks.
/**
* Action: mainwp_admin_menu
*
* Hooks main navigation menu items.
*
* @since 4.0
*/
do_action( 'mainwp_admin_menu' ); // to compatible.
$menus_items_low = array();
// Manage Admin Passwords.
$menus_items_low[] = array(
'slug' => 'ServerInformation',
'menu_level' => 2,
'menu_rights' => array(
'dashboard' => array(
'see_server_information',
),
),
'init_menu_callback' => array( MainWP_Server_Information::class, 'init_menu' ),
'leftbar_order' => 6,
);
static::init_mainwp_menu_items( $menus_items_low, 'second' );
}
}
/**
* Method init_mainwp_menu_items()
*
* Init MainWP menus.
*
* @param array $menus_items menus items.
* @param string $part menus part.
*/
public static function init_mainwp_menu_items( $menus_items, $part ) { //phpcs:ignore -- NOSONAR - complex method.
if ( ! is_array( $menus_items ) ) {
return;
}
$menus_items = apply_filters( 'mainwp_init_primary_menu_items', $menus_items, $part );
MainWP_Utility::array_sort_existed_keys( $menus_items, 'leftbar_order' );
foreach ( $menus_items as $item ) {
if ( ! is_array( $item ) ) {
continue;
}
$empty_level = true;
if ( ! empty( $item['slug'] ) && ! empty( $item['menu_level'] ) && ! empty( $item['init_menu_callback'] ) ) {
$empty_level = false;
}
if ( ! $empty_level && ! static::is_disable_menu_item( intval( $item['menu_level'] ), $item['slug'] ) && is_callable( $item['init_menu_callback'] ) ) {
$accessable = false;
if ( isset( $item['menu_rights'] ) ) {
$item_rights = $item['menu_rights'];
if ( is_array( $item_rights ) && ! empty( $item_rights ) ) {
foreach ( $item_rights as $group_right => $rights ) {
if ( is_array( $rights ) ) {
foreach ( $rights as $func_right ) {
if ( \mainwp_current_user_can( $group_right, $func_right ) ) {
$accessable = true;
break;
}
}
}
if ( $accessable ) {
break;
}
}
} elseif ( true === $item['menu_rights'] ) {
$accessable = true;
}
}
if ( $accessable ) {
call_user_func( $item['init_menu_callback'] );
}
}
}
}
/**
* Method init_sub_pages()
*
* Init subpages MainWP menus.
*
* @uses \MainWP\Dashboard\MainWP_Extensions::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Manage_Backups::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Manage_Sites::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Page::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Post::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Settings::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Themes::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Themes::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Plugins::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_User::init_subpages_menu()
* @uses \MainWP\Dashboard\MainWP_Settings::init_subpages_menu()
*/
public static function init_sub_pages() {
if ( ! static::is_disable_menu_item( 2, 'PostBulkManage' ) ) {
MainWP_Post::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'managesites' ) ) {
MainWP_Manage_Sites::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'RESTAPI' ) ) {
MainWP_Rest_Api_Page::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'Settings' ) ) {
MainWP_Settings::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'Extensions' ) ) {
MainWP_Extensions::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'PageBulkManage' ) ) {
MainWP_Page::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'ThemesManage' ) ) {
MainWP_Themes::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'PluginsManage' ) ) {
MainWP_Plugins::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'UserBulkManage' ) ) {
MainWP_User::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'ManageClients' ) ) {
MainWP_Client::init_subpages_menu();
}
if ( get_option( 'mainwp_enableLegacyBackupFeature' ) && ! static::is_disable_menu_item( 2, 'ManageBackups' ) ) {
MainWP_Manage_Backups::init_subpages_menu();
}
if ( ! static::is_disable_menu_item( 2, 'Settings' ) ) {
MainWP_Settings::init_subpages_menu();
}
/**
* Action: mainwp_admin_menu_sub
*
* Hooks main navigation sub-menu items.
*
* @since 4.0
*/
do_action( 'mainwp_admin_menu_sub' );
if ( ! static::is_disable_menu_item( 2, 'ServerInformation' ) ) {
MainWP_Server_Information::init_subpages_menu();
}
}
/**
* Method set_menu_active_slugs
*
* @param string $item Menu item.
* @param string $active Menu active slug.
*/
public static function set_menu_active_slugs( $item, $active ) {
global $_mainwp_menu_active_slugs;
if ( ! is_array( $_mainwp_menu_active_slugs ) ) {
$_mainwp_menu_active_slugs = array();
}
$_mainwp_menu_active_slugs[ $item ] = $active;
}
/**
* Method init_subpages_left_menu
*
* Build left menu subpages array.
*
* @param array $subPages Array of SubPages.
* @param array $initSubpage Initial SubPage Array.
* @param string $parentKey Parent Menu Slug.
* @param mixed $slug SubPage Slug.
*/
public static function init_subpages_left_menu( $subPages, &$initSubpage, $parentKey, $slug ) { // phpcs:ignore Generic.Classes.OpeningBraceSameLine.ContentAfterBrace -- NOSONAR - complexity.
if ( ! is_array( $subPages ) ) {
$subPages = array();
}
global $_mainwp_menu_active_slugs;
$subPages = apply_filters( 'mainwp_subpages_left_menu', $subPages, $initSubpage, $parentKey, $slug );
foreach ( $subPages as $subPage ) {
if ( ! isset( $subPage['menu_hidden'] ) || ( isset( $subPage['menu_hidden'] ) && empty( $subPage['menu_hidden'] ) ) ) {
$sub_slug = isset( $subPage['slug'] ) ? $subPage['slug'] : '';
$_item = array(
'title' => isset( $subPage['title'] ) ? $subPage['title'] : '',
'parent_key' => $parentKey,
'href' => 'admin.php?page=' . $slug . $sub_slug,
'slug' => $slug . $sub_slug,
'right' => '',
);
if ( ! empty( $subPage['before_title'] ) ) {
$item['before_title'] = $subPage['before_title'];
}
// To support check right to open menu for sometime.
if ( isset( $subPage['item_slug'] ) ) {
$_item['item_slug'] = $subPage['item_slug'];
}
if ( isset( $subPage['href'] ) && ! empty( $subPage['href'] ) ) { // override href.
$_item['href'] = $subPage['href'];
}
$initSubpage[] = $_item;
} elseif ( isset( $subPage['slug'] ) ) {
$_mainwp_menu_active_slugs[ $slug . $subPage['slug'] ] = $parentKey; // to fix.
}
}
}
/**
* Method is_disable_menu_item
*
* Check if $_mainwp_disable_menus_items contains any menu items to hide.
*
* @param string $level The level the menu item is on.
* @param array|string $item The menu items meta data.
*
* @return bool True|False, default is False.
*/
public static function is_disable_menu_item( $level, $item ) {
/**
* MainWP Disable Menus items array.
*
* @global object
*/
global $_mainwp_disable_menus_items;
$disabled = false;
$_level = 'level_' . $level;
if ( is_array( $_mainwp_disable_menus_items ) && isset( $_mainwp_disable_menus_items[ $_level ] ) && isset( $_mainwp_disable_menus_items[ $_level ][ $item ] ) ) {
$disabled = $_mainwp_disable_menus_items[ $_level ][ $item ];
}
$disabled = apply_filters( 'mainwp_is_disable_menu_item', $disabled, $level, $item );
$_mainwp_disable_menus_items[ $_level ][ $item ] = $disabled;
return $disabled;
}
/**
* Method add_left_menu
*
* Build Top Level Menu
*
* @param array $params Menu Item parameters.
* @param integer $level Menu Item Level 1 or 2.
*
* @return array $mainwp_leftmenu[] | $mainwp_sub_leftmenu[].
*/
public static function add_left_menu( $params = array(), $level = 1 ) { //phpcs:ignore -- NOSONAR - complex method.
if ( empty( $params ) ) {
return;
}
if ( ! empty( $params['menu_hidden'] ) ) {
return;
}
$level = (int) $level;
if ( 1 !== $level && 2 !== $level && 0 !== $level ) {
$level = 1;
}
$title = $params['title'];
$before_title = ! empty( $params['before_title'] ) ? $params['before_title'] : '';
$slug = isset( $params['slug'] ) ? $params['slug'] : '';
$href = isset( $params['href'] ) ? $params['href'] : '';
$right = isset( $params['right'] ) ? $params['right'] : '';
$id = isset( $params['id'] ) ? $params['id'] : '';
$level_cls = 'left-menu-item-level-' . $level;
$icon = isset( $params['icon'] ) ? $params['icon'] : '';
$leftsub_order = isset( $params['leftsub_order'] ) ? $params['leftsub_order'] : '';
$leftsub_order_level2 = isset( $params['leftsub_order_level2'] ) ? $params['leftsub_order_level2'] : '';
$ext_state = isset( $params['ext_status'] ) && ( 'activated' === $params['ext_status'] || 'inactive' === $params['ext_status'] ) ? $params['ext_status'] : '';
$parent_key = isset( $params['parent_key'] ) ? $params['parent_key'] : '';
$others = array( 'level_class' => $level_cls );
if ( isset( $params['active_params'] ) ) {
$others['active_params'] = $params['active_params'];
}
/**
* MainWP Left Menu, Sub Menu & Active menu slugs.
*
* @global object $mainwp_leftmenu
* @global object $mainwp_sub_leftmenu
* @global object $_mainwp_menu_active_slugs
*/
global $mainwp_leftmenu, $mainwp_sub_leftmenu, $_mainwp_menu_active_slugs;
if ( ! is_array( $mainwp_leftmenu ) ) {
$mainwp_leftmenu = array();
}
if ( ! isset( $mainwp_leftmenu['mainwp_tab'] ) ) {
$mainwp_leftmenu['mainwp_tab'] = array(); // to compatible with old hooks.
}
if ( ! is_array( $_mainwp_menu_active_slugs ) ) {
$_mainwp_menu_active_slugs = array();
}
$active_path = false;
if ( isset( $params['active_path'] ) && is_array( $params['active_path'] ) && ! empty( $params['active_path'] ) ) {
$active_path = $params['active_path'];
reset( $active_path );
$item = key( $active_path );
$active = current( $active_path );
$_mainwp_menu_active_slugs['leftbar'][ $item ] = $active;
$_mainwp_menu_active_slugs['parent_slug'][ $item ] = $parent_key;
}
if ( 0 === $level ) {
$parent_key = 'mainwp_tab'; // forced value.
$mainwp_leftmenu['leftbar'][] = array( $title, $slug, $href, $id, $icon, $level_cls );
} elseif ( 1 === $level ) {
if ( empty( $parent_key ) ) {
$parent_key = 'mainwp_tab'; // forced value.
}
if ( 'mainwp_tab' === $parent_key ) {
$mainwp_leftmenu[ $parent_key ][] = array( $title, $slug, $href, $id, $level_cls );
} else {
$mainwp_sub_leftmenu['leftbar'][ $parent_key ][] = array( $title, $slug, $href, $id, $leftsub_order, $ext_state, $active_path, $level_cls );
if ( ! empty( $slug ) ) {
$_mainwp_menu_active_slugs['leftbar'][ $slug ] = $parent_key; // to get active menu.
}
}
} else {
if ( empty( $parent_key ) ) {
$parent_key = 'mainwp_tab'; // forced value.
}
$mainwp_sub_leftmenu[ $parent_key ][] = array( $title, $href, $right, $id, $slug, $leftsub_order_level2, $ext_state, $active_path, $before_title, $others );
}
if ( ! empty( $slug ) ) {
$no_submenu = ! empty( $params['nosubmenu'] ) ? true : false;
if ( $no_submenu ) {
$_mainwp_menu_active_slugs[ $slug ] = $slug; // to get active menu.
} else {
$_mainwp_menu_active_slugs[ $slug ] = $parent_key; // to get active menu.
}
}
}
/**
* Method render_left_menu
*
* Build Top Level Main Menu HTML & Render.
*/
public static function render_left_menu() { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated.
/**
* MainWP Left Menu, Sub Menu & Active menu slugs.
*
* @global object $mainwp_leftmenu
* @global object $mainwp_sub_leftmenu
* @global object $_mainwp_menu_active_slugs
*/
global $mainwp_leftmenu, $mainwp_sub_leftmenu, $_mainwp_menu_active_slugs, $plugin_page;
/**
* Filter: mainwp_main_menu
*
* Filters main navigation menu items
*
* @since 4.0
*/
$mainwp_leftmenu = apply_filters( 'mainwp_main_menu', $mainwp_leftmenu );
$bar_leftmenu = isset( $mainwp_leftmenu['leftbar'] ) ? $mainwp_leftmenu['leftbar'] : array();
/**
* Filter: mainwp_main_menu_submenu
*
* Filters main navigation subt-menu items
*
* @since 4.0
*/
$mainwp_sub_leftmenu = apply_filters( 'mainwp_main_menu_submenu', $mainwp_sub_leftmenu );
$sub_bar_leftmenu = isset( $mainwp_sub_leftmenu['leftbar'] ) ? $mainwp_sub_leftmenu['leftbar'] : array();
$version = get_option( 'mainwp_plugin_version' );
?>
get_websites_count();
if ( empty( $sites_count ) ) {
?>
";
echo ! empty( $item_icon ) ? $item_icon : '
';
echo '
' . esc_html( $title ) . '';
echo '';
// phpcs:enable
}
}
?>
$go_back_wpadmin_url,
'text' => esc_html__( 'WP Admin', 'mainwp' ),
'tip' => esc_html__( 'Click to go back to the site WP Admin area.', 'mainwp' ),
);
/**
* Filter: mainwp_go_back_wpadmin_link
*
* Filters URL for the Go to WP Admin button in Main navigation.
*
* @since 4.0
*/
$go_back_link = apply_filters( 'mainwp_go_back_wpadmin_link', $link );
if ( false !== $go_back_link && is_array( $go_back_link ) ) {
if ( isset( $go_back_link['url'] ) ) {
$link['url'] = $go_back_link['url'];
}
if ( isset( $go_back_link['text'] ) ) {
$link['text'] = $go_back_link['text'];
}
if ( isset( $go_back_link['tip'] ) ) {
$link['tip'] = $go_back_link['tip'];
}
}
?>
';
echo "
$title ";
echo "
";
static::render_sub_item( $item_key );
echo '
';
echo '
';
} else {
echo '
';
}
// phpcs:enable
if ( is_array( $sub_bar_leftmenu ) && ! empty( $bar_active_item_key ) && isset( $sub_bar_leftmenu[ $bar_active_item_key ] ) && is_array( $sub_bar_leftmenu[ $bar_active_item_key ] ) ) {
$sub_bar_leftmenu_active_items = $sub_bar_leftmenu[ $bar_active_item_key ];
MainWP_Utility::array_sort_existed_keys( $sub_bar_leftmenu_active_items, 4 ); //phpcs:ignore Squiz.PHP.CommentedOutCode.Found -- 4 => 'leftsub_order'.
$set_actived = false;
foreach ( $sub_bar_leftmenu_active_items as $item ) {
if ( empty( $item ) || ! is_array( $item ) ) {
continue;
}
$title = wptexturize( $item[0] );
$item_key = $item[1];
$has_sub = true;
if ( ! isset( $mainwp_sub_leftmenu[ $item_key ] ) || empty( $mainwp_sub_leftmenu[ $item_key ] ) ) {
$has_sub = false;
}
$href = $item[2];
$item_id = isset( $item[3] ) ? $item[3] : '';
$ext_state = isset( $item[5] ) ? $item[5] : '';
$level_cls = isset( $item[7] ) ? $item[7] : '';
$item_classes = 'inactive' === $ext_state ? 'extension-inactive' : '';
$active_item = '';
if ( ! $set_actived && isset( $_mainwp_menu_active_slugs['parent_slug'][ $plugin_page ] ) && $item_key === $_mainwp_menu_active_slugs['parent_slug'][ $plugin_page ] ) {
$active_item = 'active';
$set_actived = true;
}
// to fix active menu.
if ( ! $set_actived && isset( $_mainwp_menu_active_slugs[ $plugin_page ] ) && $item_key === $_mainwp_menu_active_slugs[ $plugin_page ] ) {
$active_item = 'active';
$set_actived = true;
}
$id_attr = ! empty( $item_id ) ? 'id="' . esc_html( $item_id ) . '"' : '';
$hide_item = '';
if ( 'admin.php?page=ManageApiBackups' === $href ) {
$hide_item = ' style="display:none"';
}
if ( ! empty( $level_cls ) ) {
$item_classes = $item_classes . ' ' . $level_cls;
}
// phpcs:disable WordPress.Security.EscapeOutput
if ( $has_sub ) {
echo '
";
echo "
$title ";
echo "
";
static::render_sub_item( $item_key );
echo '
';
echo '
';
} else {
echo '
';
}
// phpcs:enable
}
}
}
?>
$go_back_wpadmin_url,
'text' => esc_html__( 'WP Admin', 'mainwp' ),
'tip' => esc_html__( 'Click to go back to the site WP Admin area.', 'mainwp' ),
);
/**
* Filter: mainwp_go_back_wpadmin_link
*
* Filters URL for the Go to WP Admin button in Main navigation.
*
* @since 4.0
*/
$go_back_link = apply_filters( 'mainwp_go_back_wpadmin_link', $link );
if ( false !== $go_back_link ) {
if ( is_array( $go_back_link ) ) {
if ( isset( $go_back_link['url'] ) ) {
$link['url'] = $go_back_link['url'];
}
if ( isset( $go_back_link['text'] ) ) {
$link['text'] = $go_back_link['text'];
}
if ( isset( $go_back_link['tip'] ) ) {
$link['tip'] = $go_back_link['tip'];
}
}
?>
'leftsub_order_level2'.
foreach ( $submenu_items as $sub_item ) {
$title = $sub_item[0];
$href = $sub_item[1];
$right = $sub_item[2];
$id = isset( $sub_item[3] ) ? $sub_item[3] : '';
$slug = isset( $sub_item[4] ) ? $sub_item[4] : '';
$ext_state = isset( $sub_item[6] ) ? $sub_item[6] : '';
$active_path = isset( $sub_item[7] ) ? $sub_item[7] : '';
$before_title = isset( $sub_item[8] ) ? $sub_item[8] : '';
$others = isset( $sub_item[9] ) ? $sub_item[9] : array();
if ( ! is_array( $others ) ) {
$others = array();
}
$item_classes = 'inactive' === $ext_state ? 'extension-inactive' : '';
$_blank = false;
if ( '_blank' === $id ) {
$_blank = true;
}
$level2_active = false;
if ( ! $set_actived ) {
$level2_active = static::is_level2_menu_item_active( $href ) ? true : false;
if ( is_array( $active_path ) && ! empty( $active_path ) ) {
reset( $active_path );
$item = key( $active_path );
if ( $item === $plugin_page ) {
$level2_active = true;
}
}
// hard fix managesite menu items active status.
//phpcs:disable WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
if ( false !== strpos( $href, 'admin.php?page=managesites' ) ) {
$page_name = isset( $_GET['page'] ) ? wp_unslash( $_GET['page'] ) : '';
$level2_active = false;
if ( isset( $_GET['do'] ) && 'new' === $_GET['do'] && false !== strpos( $href, 'admin.php?page=managesites&do=new' ) ) {
$level2_active = true;
}
if ( ! $level2_active && isset( $_GET['do'] ) && 'bulknew' === $_GET['do'] && false !== strpos( $href, 'admin.php?page=managesites&do=bulknew' ) ) {
$level2_active = true;
}
if ( ! $level2_active && ! isset( $_GET['do'] ) && 'InsightsManage' !== $page_name && 'Extensions-Mainwp-Clone-Extension' !== $page_name && 'admin.php?page=managesites' === $href ) {
$level2_active = true;
}
}
if ( ! $level2_active && ! empty( $others['active_params'] ) && is_array( $others['active_params'] ) ) {
foreach ( $others['active_params'] as $name => $value ) {
if ( isset( $_GET[ $name ] ) && wp_unslash( $_GET[ $name ] ) === $value ) {
$level2_active = true;
break;
}
}
}
//phpcs:enable WordPress.Security.NonceVerification.Recommended,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
if ( $level2_active ) {
$set_actived = true;
}
}
$right_group = 'dashboard';
if ( ! empty( $right ) && strpos( $right, 'extension_' ) === 0 ) {
$right_group = 'extension';
$right = str_replace( 'extension_', '', $right );
}
if ( ! empty( $others['level_class'] ) ) {
$item_classes = $item_classes . ' ' . $others['level_class'];
}
if ( empty( $right ) || ( ! empty( $right ) && \mainwp_current_user_can( $right_group, $right ) ) ) {
$menu_itemid = $slug; // compatible.
$menu_itemid = 'managesites' === $slug && ! empty( $id ) ? $id : $menu_itemid;
?>