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' ); ?>
$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']; } } ?>
'; } else { echo '
'; echo "$title"; 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 '
"; echo "$title"; echo '
'; } // phpcs:enable } } } ?>
'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; ?> >