' . esc_html__( 'Plugins', 'mainwp' ) . '', 'read', 'PluginsManage', array( static::get_class_name(), 'render', ) ); if ( \mainwp_current_user_can( 'dashboard', 'install_plugins' ) ) { $page = add_submenu_page( 'mainwp_tab', __( 'Plugins', 'mainwp' ), '
' . esc_html__( 'Install ', 'mainwp' ) . '
', 'read', 'PluginsInstall', array( static::get_class_name(), 'render_install', ) ); add_action( 'load-' . $page, array( static::get_class_name(), 'load_page' ) ); } add_submenu_page( 'mainwp_tab', __( 'Plugins', 'mainwp' ), '
' . esc_html__( 'Advanced Auto Updates', 'mainwp' ) . '
', 'read', 'PluginsAutoUpdate', array( static::get_class_name(), 'render_auto_update', ) ); add_submenu_page( 'mainwp_tab', __( 'Plugins', 'mainwp' ), '
' . esc_html__( 'Ignored Updates', 'mainwp' ) . '
', 'read', 'PluginsIgnore', array( static::get_class_name(), 'render_ignore', ) ); add_submenu_page( 'mainwp_tab', __( 'Plugins', 'mainwp' ), '
' . esc_html__( 'Abandoned Plugins', 'mainwp' ) . '
', 'read', 'PluginsAbandoned', array( static::get_class_name(), 'render_abandoned_plugins', ) ); add_submenu_page( 'mainwp_tab', __( 'Plugins', 'mainwp' ), '
' . esc_html__( 'Ignored Abandoned', 'mainwp' ) . '
', 'read', 'PluginsIgnoredAbandoned', array( static::get_class_name(), 'render_ignored_abandoned', ) ); /** * Plugins Subpages * * Filters subpages for the Plugins page. * * @since Unknown */ $sub_pages = apply_filters_deprecated( 'mainwp-getsubpages-plugins', array( array() ), '4.0.7.2', 'mainwp_getsubpages_plugins' ); // @deprecated Use 'mainwp_getsubpages_plugins' instead. NOSONAR - not IP. static::$subPages = apply_filters( 'mainwp_getsubpages_plugins', $sub_pages ); if ( isset( static::$subPages ) && is_array( static::$subPages ) ) { foreach ( static::$subPages as $subPage ) { if ( MainWP_Menu::is_disable_menu_item( 3, 'Plugins' . $subPage['slug'] ) ) { continue; } add_submenu_page( 'mainwp_tab', $subPage['title'], '
' . $subPage['title'] . '
', 'read', 'Plugins' . $subPage['slug'], $subPage['callback'] ); } } static::init_left_menu( static::$subPages ); } /** * Load the Plugins Page. * * @uses \MainWP\Dashboard\MainWP_Plugins_Install_List_Table */ public static function load_page() { static::$pluginsTable = new MainWP_Plugins_Install_List_Table(); $pagenum = static::$pluginsTable->get_pagenum(); static::$pluginsTable->prepare_items(); $total_pages = static::$pluginsTable->get_pagination_arg( 'total_pages' ); if ( $pagenum > $total_pages && 0 < $total_pages ) { wp_safe_redirect( esc_url_raw( add_query_arg( 'paged', $total_pages ) ) ); exit; } } /** * Instantiate Subpage "tabs". * * @uses \MainWP\Dashboard\MainWP_Menu::is_disable_menu_item() */ public static function init_subpages_menu() { ?> esc_html__( 'Plugins', 'mainwp' ), 'parent_key' => 'managesites', 'slug' => 'PluginsManage', 'href' => 'admin.php?page=PluginsManage', 'icon' => '', 'leftsub_order' => 5, ), 1 ); $init_sub_subleftmenu = array( array( 'title' => esc_html__( 'Manage Plugins', 'mainwp' ), 'parent_key' => 'PluginsManage', 'href' => 'admin.php?page=PluginsManage', 'slug' => 'PluginsManage', 'right' => '', 'leftsub_order_level2' => 1, ), array( 'title' => esc_html__( 'Install Plugins', 'mainwp' ), 'parent_key' => 'PluginsManage', 'href' => 'admin.php?page=PluginsInstall', 'slug' => 'PluginsInstall', 'right' => 'install_plugins', 'leftsub_order_level2' => 2, ), array( 'title' => esc_html__( 'Advanced Auto Updates', 'mainwp' ), 'parent_key' => 'PluginsManage', 'href' => 'admin.php?page=PluginsAutoUpdate', 'slug' => 'PluginsAutoUpdate', 'right' => '', 'leftsub_order_level2' => 3, ), array( 'title' => esc_html__( 'Ignored Updates', 'mainwp' ), 'parent_key' => 'PluginsManage', 'href' => 'admin.php?page=PluginsIgnore', 'slug' => 'PluginsIgnore', 'right' => '', 'leftsub_order_level2' => 4, ), array( 'title' => esc_html__( 'Abandoned Plugins', 'mainwp' ), 'parent_key' => 'PluginsManage', 'href' => 'admin.php?page=PluginsAbandoned', 'slug' => 'PluginsAbandoned', 'right' => '', 'leftsub_order_level2' => 4.1, ), array( 'title' => esc_html__( 'Ignored Abandoned', 'mainwp' ), 'parent_key' => 'PluginsManage', 'href' => 'admin.php?page=PluginsIgnoredAbandoned', 'slug' => 'PluginsIgnoredAbandoned', 'right' => '', 'leftsub_order_level2' => 5, ), ); MainWP_Menu::init_subpages_left_menu( $subPages, $init_sub_subleftmenu, 'PluginsManage', 'Plugins' ); foreach ( $init_sub_subleftmenu as $item ) { if ( MainWP_Menu::is_disable_menu_item( 3, $item['slug'] ) ) { continue; } MainWP_Menu::add_left_menu( $item, 2 ); } } /** * Render MainWP Plugins Page Header. * * @param string $shownPage The page slug shown at this moment. * * @uses \MainWP\Dashboard\MainWP_Menu::is_disable_menu_item() * @uses \MainWP\Dashboard\MainWP_UI::render_top_header() * @uses \MainWP\Dashboard\MainWP_UI::render_page_navigation() */ public static function render_header( $shownPage = '' ) { // phpcs:ignore -- NOSONAR - complex. $params = array( 'title' => esc_html__( 'Plugins', 'mainwp' ), ); MainWP_UI::render_top_header( $params ); $renderItems = array(); $renderItems[] = array( 'title' => esc_html__( 'Manage Plugins', 'mainwp' ), 'href' => 'admin.php?page=PluginsManage', 'active' => ( 'Manage' === $shownPage ) ? true : false, ); if ( \mainwp_current_user_can( 'dashboard', 'install_plugins' ) && ! MainWP_Menu::is_disable_menu_item( 3, 'PluginsInstall' ) ) { $renderItems[] = array( 'title' => esc_html__( 'Install', 'mainwp' ), 'href' => 'admin.php?page=PluginsInstall', 'active' => ( 'Install' === $shownPage ) ? true : false, ); } if ( ! MainWP_Menu::is_disable_menu_item( 3, 'PluginsAutoUpdate' ) ) { $renderItems[] = array( 'title' => esc_html__( 'Advanced Auto Updates', 'mainwp' ), 'href' => 'admin.php?page=PluginsAutoUpdate', 'active' => ( 'AutoUpdate' === $shownPage ) ? true : false, ); } if ( ! MainWP_Menu::is_disable_menu_item( 3, 'PluginsIgnore' ) ) { $renderItems[] = array( 'title' => esc_html__( 'Ignored Updates', 'mainwp' ), 'href' => 'admin.php?page=PluginsIgnore', 'active' => ( 'Ignore' === $shownPage ) ? true : false, ); } if ( ! MainWP_Menu::is_disable_menu_item( 3, 'PluginsIgnoredAbandoned' ) ) { $renderItems[] = array( 'title' => esc_html__( 'Ignored Abandoned', 'mainwp' ), 'href' => 'admin.php?page=PluginsIgnoredAbandoned', 'active' => ( 'IgnoreAbandoned' === $shownPage ) ? true : false, ); } if ( isset( static::$subPages ) && is_array( static::$subPages ) ) { foreach ( static::$subPages as $subPage ) { if ( MainWP_Menu::is_disable_menu_item( 3, 'Plugins' . $subPage['slug'] ) ) { continue; } $item = array(); $item['title'] = $subPage['title']; $item['href'] = 'admin.php?page=Plugins' . $subPage['slug']; $item['active'] = ( $subPage['slug'] === $shownPage ) ? true : false; $renderItems[] = $item; } } MainWP_UI::render_page_navigation( $renderItems ); } /** * Method render_footer() * * Render MainWP Plugins Page Footer. */ public static function render_footer() { echo ''; } /** * Render MainWP Plugins Page. * * @uses \MainWP\Dashboard\MainWP_Cache::get_cached_context() * @uses \MainWP\Dashboard\MainWP_Cache::get_cached_result() * @uses \MainWP\Dashboard\MainWP_UI::render_empty_bulk_actions() */ public static function render() { // phpcs:ignore -- NOSONAR - complex. $cachedSearch = MainWP_Cache::get_cached_context( 'Plugins' ); $selected_sites = array(); $selected_groups = array(); $selected_clients = array(); if ( null !== $cachedSearch ) { if ( is_array( $cachedSearch['sites'] ) ) { $selected_sites = $cachedSearch['sites']; } elseif ( is_array( $cachedSearch['groups'] ) ) { $selected_groups = $cachedSearch['groups']; } elseif ( is_array( $cachedSearch['clients'] ) ) { $selected_clients = $cachedSearch['clients']; } } $cachedResult = MainWP_Cache::get_cached_result( 'Plugins' ); if ( isset( $_POST['select_mainwp_options_plugintheme_view'] ) && check_admin_referer( 'mainwp-admin-nonce' ) && is_array( $cachedResult ) && isset( $cachedResult['result'] ) ) { unset( $cachedResult['result'] ); // clear cached results. } static::render_header( 'Manage' ); ?>

', ' ' ); ?>

>
'mainwp_select_sites_box_left', 'selected_sites' => $selected_sites, 'selected_groups' => $selected_groups, 'selected_clients' => $selected_clients, 'show_client' => true, ); MainWP_UI_Select_Sites::select_sites_box( $sel_params ); ?>
value="1" id="display_sites_not_meeting_criteria" />
errors = array(); $output->plugins = array(); $output->plugins_installed = array(); $output->status = $status; $output->roll_items = array(); $error_results = ''; $data_fields = MainWP_System_Utility::get_default_map_site_fields(); $data_fields[] = 'plugins'; $data_fields[] = 'rollback_updates_data'; if ( 1 === (int) get_option( 'mainwp_optimize', 1 ) || MainWP_Demo_Handle::is_demo_mode() ) { $multi_kws = explode( ',', $keyword ); $multi_kws = array_filter( array_map( 'trim', $multi_kws ) ); if ( ! empty( $sites ) ) { foreach ( $sites as $v ) { if ( MainWP_Utility::ctype_digit( $v ) ) { $website = MainWP_DB::instance()->get_website_by_id( $v, false, array( 'rollback_updates_data' ) ); $allPlugins = json_decode( $website->plugins, true ); $_count = count( $allPlugins ); $_count_installed = 0; for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $is_active = 'active' === $status ? 1 : 0; if ( ( 'active' === $status || 'inactive' === $status ) && $is_active !== (int) $plugin['active'] ) { continue; } if ( ! empty( $keyword ) ) { if ( $not_criteria ) { if ( MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } elseif ( ! MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $plugin['websitename'] = $website->name; $output->plugins[] = $plugin; ++$_count_installed; } if ( 0 === $_count_installed && 'not_installed' === $status ) { for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $plugin['websitename'] = $website->name; $output->plugins_installed[] = $plugin; } } $output->roll_items[ $website->id ] = MainWP_Updates_Helper::get_roll_update_plugintheme_items( 'plugin', $website->rollback_updates_data ); } } } if ( '' !== $groups ) { foreach ( $groups as $v ) { if ( MainWP_Utility::ctype_digit( $v ) ) { $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_by_group_id( $v, false, 'wp.url', false, false, null, null, array( 'extra_view' => array( 'site_info', 'rollback_updates_data' ) ) ) ); while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) { if ( '' !== $website->sync_errors || MainWP_System_Utility::is_suspended_site( $website ) ) { continue; } $allPlugins = json_decode( $website->plugins, true ); $_count = count( $allPlugins ); $_count_installed = 0; for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $is_active = 'active' === $status ? 1 : 0; if ( ( 'active' === $status || 'inactive' === $status ) && $is_active !== (int) $plugin['active'] ) { continue; } if ( ! empty( $keyword ) ) { if ( $not_criteria ) { if ( MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } elseif ( ! MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $plugin['websitename'] = $website->name; $output->plugins[] = $plugin; ++$_count_installed; } if ( 0 === $_count_installed && 'not_installed' === $status ) { for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $plugin['websitename'] = $website->name; $output->plugins_installed[] = $plugin; } } $output->roll_items[ $website->id ] = MainWP_Updates_Helper::get_roll_update_plugintheme_items( 'plugin', $website->rollback_updates_data ); } MainWP_DB::free_result( $websites ); } } } if ( '' !== $clients && is_array( $clients ) ) { $websites = MainWP_DB_Client::instance()->get_websites_by_client_ids( $clients, array( 'select_data' => $data_fields, 'extra_view' => array( 'rollback_updates_data' ), ) ); if ( $websites ) { foreach ( $websites as $website ) { if ( '' !== $website->sync_errors || MainWP_System_Utility::is_suspended_site( $website ) ) { continue; } $allPlugins = json_decode( $website->plugins, true ); $_count = count( $allPlugins ); $_count_installed = 0; for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $is_active = ( 'active' === $status ) ? 1 : 0; if ( ( ( 'active' === $status ) || ( 'inactive' === $status ) ) && ( $is_active !== (int) $plugin['active'] ) ) { continue; } if ( ! empty( $keyword ) ) { if ( $not_criteria ) { if ( MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } elseif ( ! MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $plugin['websitename'] = $website->name; $output->plugins[] = $plugin; ++$_count_installed; } if ( 0 === $_count_installed && 'not_installed' === $status ) { for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $plugin['websitename'] = $website->name; $output->plugins_installed[] = $plugin; } } $output->roll_items[ $website->id ] = MainWP_Updates_Helper::get_roll_update_plugintheme_items( 'plugin', $website->rollback_updates_data ); } } } } else { $dbwebsites = array(); if ( '' !== $sites ) { foreach ( $sites as $v ) { if ( MainWP_Utility::ctype_digit( $v ) ) { $website = MainWP_DB::instance()->get_website_by_id( $v, false, array( 'rollback_updates_data' ) ); if ( '' !== $website->sync_errors || MainWP_System_Utility::is_suspended_site( $website ) ) { continue; } $dbwebsites[ $website->id ] = MainWP_Utility::map_site( $website, $data_fields ); } } } if ( '' !== $groups ) { foreach ( $groups as $v ) { if ( MainWP_Utility::ctype_digit( $v ) ) { $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_by_group_id( $v, false, 'wp.url', false, false, null, null, array( 'extra_view' => array( 'site_info', 'rollback_updates_data' ) ) ) ); while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) { if ( '' !== $website->sync_errors || MainWP_System_Utility::is_suspended_site( $website ) ) { continue; } $dbwebsites[ $website->id ] = MainWP_Utility::map_site( $website, $data_fields ); } MainWP_DB::free_result( $websites ); } } } if ( '' !== $clients && is_array( $clients ) ) { $websites = MainWP_DB_Client::instance()->get_websites_by_client_ids( $clients, array( 'select_data' => $data_fields, 'extra_view' => array( 'rollback_updates_data' ), ) ); if ( $websites ) { foreach ( $websites as $website ) { if ( '' !== $website->sync_errors || MainWP_System_Utility::is_suspended_site( $website ) ) { continue; } $dbwebsites[ $website->id ] = MainWP_Utility::map_site( $website, $data_fields ); } } } $post_data = array( 'keyword' => $keyword, ); if ( 'active' === $status || 'inactive' === $status ) { $post_data['status'] = $status; $post_data['filter'] = true; } else { $post_data['status'] = ''; $post_data['filter'] = false; } if ( 'not_installed' === $status ) { $post_data['not_installed'] = true; } $post_data['not_criteria'] = $not_criteria ? true : false; MainWP_Connect::fetch_urls_authed( $dbwebsites, 'get_all_plugins', $post_data, array( MainWP_Plugins_Handler::get_class_name(), 'plugins_search_handler' ), $output ); // phpcs:disable WordPress.Security.EscapeOutput if ( ! empty( $output->errors ) ) { foreach ( $output->errors as $siteid => $error ) { $error_results .= MainWP_Utility::get_nice_url( $dbwebsites[ $siteid ]->url ) . ': ' . $error . '
'; } } // phpcs:enable } MainWP_Cache::add_context( 'Plugins', array( 'keyword' => $keyword, 'status' => $status, 'sites' => ( '' !== $sites ) ? $sites : '', 'groups' => ( '' !== $groups ) ? $groups : '', 'clients' => ( '' !== $clients ) ? $clients : '', 'not_criteria' => $not_criteria ? true : false, ) ); $view_mode = static::get_manage_view(); $bulkActions = static::render_bulk_actions( $status ); $roll_items_list = array(); $plugins_list = array(); ob_start(); if ( ! empty( $error_results ) ) { // phpcs:disable WordPress.Security.EscapeOutput ?>
plugins_installed ) ) { ?>
plugins_installed; $roll_items_list = ! empty( $output->roll_items ) ? $output->roll_items : array(); $view_mode = MAINWP_VIEW_PER_SITE; } } elseif ( empty( $output->plugins ) ) { ?>
plugins; $roll_items_list = ! empty( $output->roll_items ) ? $output->roll_items : array(); } if ( ! is_array( $roll_items_list ) ) { $roll_items_list = array(); } $sites = array(); $sitePlugins = array(); $pluginsNameSites = array(); $muPlugins = array(); $pluginsName = array(); $pluginsMainWP = array(); $pluginsRealVersion = array(); $pluginsSlug = array(); if ( ! empty( $plugins_list ) ) { foreach ( $plugins_list as $plugin ) { $slug_ver = esc_html( $plugin['slug'] . '_' . $plugin['version'] ); $sites[ $plugin['websiteid'] ] = array( 'websiteurl' => esc_html( $plugin['websiteurl'] ), 'websitename' => $plugin['websitename'], ); $pluginsSlug[ $slug_ver ] = isset( $plugin['slug'] ) ? $plugin['slug'] : ''; $muPlugins[ $slug_ver ] = isset( $plugin['mu'] ) ? esc_html( $plugin['mu'] ) : 0; $pluginsName[ $slug_ver ] = esc_html( $plugin['name'] ); $pluginsNameSites[ $plugin['name'] ][ $plugin['websiteid'] ][] = $slug_ver; $pluginsMainWP[ $slug_ver ] = isset( $plugin['mainwp'] ) ? esc_html( $plugin['mainwp'] ) : 'F'; $pluginsRealVersion[ $slug_ver ] = rawurlencode( $plugin['version'] ); if ( ! isset( $sitePlugins[ $plugin['websiteid'] ] ) || ! is_array( $sitePlugins[ $plugin['websiteid'] ] ) ) { $sitePlugins[ $plugin['websiteid'] ] = array(); } $sitePlugins[ $plugin['websiteid'] ][ $slug_ver ] = $plugin; } ksort( $pluginsNameSites, SORT_STRING ); if ( MAINWP_VIEW_PER_PLUGIN_THEME === (int) $view_mode ) { static::render_manage_table( $sites, $pluginsSlug, $sitePlugins, $pluginsMainWP, $muPlugins, $pluginsName, $pluginsNameSites, $pluginsRealVersion, $roll_items_list ); } else { static::render_manage_per_site_table( $sites, $pluginsSlug, $sitePlugins, $pluginsMainWP, $muPlugins, $pluginsName, $pluginsNameSites, $pluginsRealVersion, $roll_items_list ); } MainWP_Updates::render_plugin_details_modal(); MainWP_UI::render_modal_upload_icon(); } $newOutput = ob_get_clean(); $result = array( 'result' => $newOutput, 'bulk_actions' => $bulkActions, ); MainWP_Cache::add_result( 'Plugins', $result ); return $result; } /** * Render Bulk Actions. * * @param mixed $status active|inactive|all. * * @return string Plugin Bulk Actions Menu. */ public static function render_bulk_actions( $status ) { ob_start(); ?>
get_user_extension(); $decodedIgnoredPlugins = json_decode( $userExtension->ignored_plugins, true ); $trustedPlugins = json_decode( $userExtension->trusted_plugins, true ); $is_demo = MainWP_Demo_Handle::is_demo_mode(); if ( ! is_array( $trustedPlugins ) ) { $trustedPlugins = array(); } $updateWebsites = array(); foreach ( $sites as $site_id => $info ) { $plugin_upgrades = array(); $website = MainWP_DB::instance()->get_website_by_id( $site_id, false, array( 'rollback_updates_data' ) ); if ( $website && ! $website->is_ignorePluginUpdates ) { $plugin_upgrades = json_decode( $website->plugin_upgrades, true ); $decodedPremiumUpgrades = MainWP_DB::instance()->get_website_option( $website, 'premium_upgrades' ); $decodedPremiumUpgrades = ! empty( $decodedPremiumUpgrades ) ? json_decode( $decodedPremiumUpgrades, true ) : array(); if ( is_array( $decodedPremiumUpgrades ) ) { foreach ( $decodedPremiumUpgrades as $crrSlug => $premiumUpgrade ) { $premiumUpgrade['premium'] = true; if ( 'plugin' === $premiumUpgrade['type'] ) { if ( ! is_array( $plugin_upgrades ) ) { $plugin_upgrades = array(); } $premiumUpgrade = array_filter( $premiumUpgrade ); if ( ! isset( $plugin_upgrades[ $crrSlug ] ) ) { continue; } $plugin_upgrades[ $crrSlug ] = array_merge( $plugin_upgrades[ $crrSlug ], $premiumUpgrade ); } } } $ignored_plugins = json_decode( $website->ignored_plugins, true ); if ( is_array( $ignored_plugins ) ) { $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins ); } if ( is_array( $decodedIgnoredPlugins ) ) { $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $decodedIgnoredPlugins ); } } $updateWebsites[ $site_id ] = $plugin_upgrades; } /** * Action: mainwp_before_plugins_table * * Fires before the Plugins table. * * @since 4.1 */ do_action( 'mainwp_before_plugins_table' ); ?>
$website ) : ?>
$plugin ) : $plugin_title = wp_strip_all_tags( $pluginsName[ $slug_ver ] ); $plugin_slug = $pluginsSlug[ $slug_ver ]; $trusted = in_array( $plugin_slug, $trustedPlugins ) ? true : false; $child_plugin = ( isset( $pluginsMainWP[ $slug_ver ] ) && 'T' === $pluginsMainWP[ $slug_ver ] ) ? true : false; $plugin_mu = false; $plugin_version = $sitePlugins[ $site_id ][ $slug_ver ]['version']; $plugin_upgrades = isset( $updateWebsites[ $site_id ] ) ? $updateWebsites[ $site_id ] : array(); if ( ! is_array( $plugin_upgrades ) ) { $plugin_upgrades = array(); } $upgradeInfo = isset( $plugin_upgrades[ $plugin_slug ] ) ? $plugin_upgrades[ $plugin_slug ] : false; $new_version = ''; if ( ! empty( $upgradeInfo ) && isset( $upgradeInfo['update']['new_version'] ) ) { $new_version = $upgradeInfo['update']['new_version']; } if ( isset( $sitePlugins[ $site_id ][ $slug_ver ] ) && ( empty( $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) || 1 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) ) { $actived = true; if ( isset( $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) && 1 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) { $plugin_status = '' . esc_html__( 'Active', 'mainwp' ) . ''; } elseif ( isset( $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) && 0 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) { $plugin_status = '' . esc_html__( 'Inactive', 'mainwp' ) . ''; $actived = false; } else { $plugin_status = ''; } if ( isset( $sitePlugins[ $site_id ][ $slug_ver ] ) && ( 1 === (int) $muPlugins[ $slug_ver ] ) ) { $plugin_mu = true; } if ( $plugin_mu ) { $actived = true; // always. } $item_id = $slug_ver . '_' . $site_id; $item_id = strtolower( $item_id ); $item_id = preg_replace( '/[[:space:]]+/', '_', $item_id ); $plugin_directory = MainWP_Utility::get_dir_slug( $plugin_slug ); $details_link = self_admin_url( 'plugin-install.php?tab=plugin-information&wpplugin=' . intval( $site_id ) . '&plugin=' . rawurlencode( $plugin_directory ) . '§ion=changelog' ); $el_id_ite_1 = $item_id; ?>
>
' . esc_html__( 'Trusted', 'mainwp' ) . '' : '' . esc_html__( 'Not Trusted', 'mainwp' ) . ''; ?>
MU' : ''; ?>
get_user_extension(); $decodedIgnoredPlugins = json_decode( $userExtension->ignored_plugins, true ); $trustedPlugins = json_decode( $userExtension->trusted_plugins, true ); $is_demo = MainWP_Demo_Handle::is_demo_mode(); if ( ! is_array( $trustedPlugins ) ) { $trustedPlugins = array(); } $updateWebsites = array(); foreach ( $sites as $site_id => $info ) { $plugin_upgrades = array(); $website = MainWP_DB::instance()->get_website_by_id( $site_id ); if ( $website && ! $website->is_ignorePluginUpdates ) { $plugin_upgrades = json_decode( $website->plugin_upgrades, true ); if ( ! is_array( $plugin_upgrades ) ) { $plugin_upgrades = array(); } $decodedPremiumUpgrades = MainWP_DB::instance()->get_website_option( $website, 'premium_upgrades' ); $decodedPremiumUpgrades = ! empty( $decodedPremiumUpgrades ) ? json_decode( $decodedPremiumUpgrades, true ) : array(); if ( is_array( $decodedPremiumUpgrades ) ) { foreach ( $decodedPremiumUpgrades as $crrSlug => $premiumUpgrade ) { $premiumUpgrade['premium'] = true; if ( 'plugin' === $premiumUpgrade['type'] ) { $premiumUpgrade = array_filter( $premiumUpgrade ); if ( ! isset( $plugin_upgrades[ $crrSlug ] ) ) { continue; } $plugin_upgrades[ $crrSlug ] = array_merge( $plugin_upgrades[ $crrSlug ], $premiumUpgrade ); } } } $ignored_plugins = json_decode( $website->ignored_plugins, true ); if ( is_array( $ignored_plugins ) ) { $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins ); } if ( is_array( $decodedIgnoredPlugins ) ) { $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $decodedIgnoredPlugins ); } } $updateWebsites[ $site_id ] = $plugin_upgrades; } /** * Action: mainwp_before_plugins_table * * Fires before the Plugins table. * * @since 4.1 */ do_action( 'mainwp_before_plugins_table' ); ?>
$pluginSites ) : ?>
>
$slugVersions ) : $site_name = $sites[ $site_id ]['websitename']; foreach ( $slugVersions as $slug_ver ) : $plugin_slug = $pluginsSlug[ $slug_ver ]; $trusted = in_array( $plugin_slug, $trustedPlugins ) ? true : false; $child_plugin = ( isset( $pluginsMainWP[ $slug_ver ] ) && 'T' === $pluginsMainWP[ $slug_ver ] ) ? true : false; $plugin_mu = false; $plugin_version = $sitePlugins[ $site_id ][ $slug_ver ]['version']; $plugin_upgrades = isset( $updateWebsites[ $site_id ] ) ? $updateWebsites[ $site_id ] : array(); if ( ! is_array( $plugin_upgrades ) ) { $plugin_upgrades = array(); } $upgradeInfo = isset( $plugin_upgrades[ $plugin_slug ] ) ? $plugin_upgrades[ $plugin_slug ] : false; $new_version = ''; if ( ! empty( $upgradeInfo ) && isset( $upgradeInfo['update']['new_version'] ) ) { $new_version = $upgradeInfo['update']['new_version']; } if ( '' === $lastest_version || version_compare( $plugin_version, $lastest_version, '>' ) ) { $lastest_version = $plugin_version; } if ( '' !== $new_version && version_compare( $new_version, $lastest_version, '>' ) ) { $lastest_version = $new_version; } if ( isset( $sitePlugins[ $site_id ][ $slug_ver ] ) && ( 0 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] || 1 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) ) { $actived = true; if ( isset( $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) && 1 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) { $plugin_status = '' . esc_html__( 'Active', 'mainwp' ) . ''; } elseif ( isset( $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) && 0 === (int) $sitePlugins[ $site_id ][ $slug_ver ]['active'] ) { $plugin_status = '' . esc_html__( 'Inactive', 'mainwp' ) . ''; $actived = false; } else { $plugin_status = ''; } if ( isset( $sitePlugins[ $site_id ][ $slug_ver ] ) && ( 1 === (int) $muPlugins[ $slug_ver ] ) ) { $plugin_mu = true; } if ( $plugin_mu ) { $actived = true; // always. } $item_id = $slug_ver . '_' . $site_id; $item_id = strtolower( $item_id ); $item_id = preg_replace( '/[[:space:]]+/', '_', $item_id ); $el_id_ite_2 = $item_id; ?>
' . esc_html__( 'Trusted', 'mainwp' ) . '' : '' . esc_html__( 'Not Trusted', 'mainwp' ) . ''; ?>
MU' : ''; ?>
', ' ' ); ?>
display(); ?>
'mainwp_select_sites_box_left', 'selected_sites' => $selected_sites, 'show_client' => true, ); MainWP_UI_Select_Sites::select_sites_box( $sel_params ); ?>
render_demo_disable_button( '' ); } else { ?>
', '' ); // NOSONAR - noopener - open safe. ?>
errors = array(); $output->plugins = array(); $output->plugins_installed = array(); // to fix. if ( 1 === (int) get_option( 'mainwp_optimize', 1 ) || MainWP_Demo_Handle::is_demo_mode() ) { $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user() ); while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) { $allPlugins = json_decode( $website->plugins, true ); $_count = count( $allPlugins ); for ( $i = 0; $i < $_count; $i++ ) { $plugin = $allPlugins[ $i ]; $all = true; if ( 'all' !== $search_plugin_status ) { $all = false; } if ( ! $all && ( ( 1 === (int) $plugin['active'] && 'active' !== $search_plugin_status ) || ( 1 !== (int) $plugin['active'] && 'inactive' !== $search_plugin_status ) ) ) { continue; } if ( ! empty( $keyword ) ) { $keyword = trim( $keyword ); $multi_kws = explode( ',', $keyword ); $multi_kws = array_filter( array_map( 'trim', $multi_kws ) ); if ( ! MainWP_Utility::multi_find_keywords( $plugin['name'], $multi_kws ) ) { continue; } } $plugin['websiteid'] = $website->id; $plugin['websiteurl'] = $website->url; $output->plugins[] = $plugin; } } MainWP_DB::free_result( $websites ); } else { $dbwebsites = array(); $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_websites_for_current_user() ); while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) { if ( '' !== $website->sync_errors || MainWP_System_Utility::is_suspended_site( $website ) ) { continue; } $dbwebsites[ $website->id ] = MainWP_Utility::map_site( $website, $data_fields ); } MainWP_DB::free_result( $websites ); $post_data = array( 'keyword' => $keyword ); if ( 'active' === $search_plugin_status || 'inactive' === $search_plugin_status ) { $post_data['status'] = $search_plugin_status; $post_data['filter'] = true; } else { $post_data['status'] = ''; $post_data['filter'] = false; } $output->status = $search_plugin_status; MainWP_Connect::fetch_urls_authed( $dbwebsites, 'get_all_plugins', $post_data, array( MainWP_Plugins_Handler::get_class_name(), 'plugins_search_handler' ), $output ); // phpcs:disable WordPress.Security.EscapeOutput if ( ! empty( $output->errors ) ) { foreach ( $output->errors as $siteid => $error ) { echo MainWP_Utility::get_nice_url( $dbwebsites[ $siteid ]->url ) . ' - ' . $error . '
'; } echo ''; if ( count( $output->errors ) === count( $dbwebsites ) ) { $_SESSION['MainWP_PluginsActive'] = $output; $_SESSION['MainWP_PluginsActiveStatus'] = array( 'keyword' => $keyword, 'status' => $search_status, 'plugin_status' => $search_plugin_status, ); return; } } // phpcs:enable } $_SESSION['MainWP_PluginsActive'] = $output; $_SESSION['MainWP_PluginsActiveStatus'] = array( 'keyword' => $keyword, 'status' => $search_status, 'plugin_status' => $search_plugin_status, ); } elseif ( isset( $_SESSION['MainWP_PluginsActiveStatus'] ) ) { //phpcs:disable WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $keyword = isset( $_SESSION['MainWP_PluginsActiveStatus']['keyword'] ) ? $_SESSION['MainWP_PluginsActiveStatus']['keyword'] : null; $search_status = isset( $_SESSION['MainWP_PluginsActiveStatus']['status'] ) ? $_SESSION['MainWP_PluginsActiveStatus']['status'] : null; $search_plugin_status = isset( $_SESSION['MainWP_PluginsActiveStatus']['plugin_status'] ) ? $_SESSION['MainWP_PluginsActiveStatus']['plugin_status'] : null; //phpcs:enable } if ( 'inactive' !== $search_plugin_status && ( empty( $keyword ) || ( ! empty( $keyword ) && false !== stristr( 'MainWP Child', $keyword ) ) ) ) { $output->plugins[] = array( 'slug' => 'mainwp-child/mainwp-child.php', 'name' => 'MainWP Child', 'active' => 1, ); } if ( empty( $output->plugins ) ) { ?>
plugins as $plugin ) { $plugins[ $plugin['slug'] ] = $plugin; } asort( $plugins ); $userExtension = MainWP_DB_Common::instance()->get_user_extension(); $decodedIgnoredPlugins = json_decode( $userExtension->ignored_plugins, true ); $trustedPlugins = json_decode( $userExtension->trusted_plugins, true ); if ( ! is_array( $trustedPlugins ) ) { $trustedPlugins = array(); } $trustedPluginsNotes = json_decode( $userExtension->trusted_plugins_notes, true ); if ( ! is_array( $trustedPluginsNotes ) ) { $trustedPluginsNotes = array(); } static::render_all_active_html( $plugins, $trustedPlugins, $search_status, $decodedIgnoredPlugins, $trustedPluginsNotes ); MainWP_UI::render_modal_upload_icon(); } /** * Method render_all_active_html() * * Render all active plugins html. * * @param array $plugins Plugins array. * @param array $trustedPlugins Trusted plugins array. * @param mixed $search_status trust|untrust|ignored. * @param array $decodedIgnoredPlugins Decoded ignored plugins array. * @param array $trustedPluginsNotes Trusted plugins notes. * * @uses \MainWP\Dashboard\MainWP_Utility::esc_content() */ public static function render_all_active_html( $plugins, $trustedPlugins, $search_status, $decodedIgnoredPlugins, $trustedPluginsNotes ) { // phpcs:ignore -- NOSONAR - complex. /** * Action: mainwp_plugins_before_auto_updates_table * * Fires before the Auto Update Plugins table. * * @since 4.1 */ do_action( 'mainwp_plugins_before_auto_updates_table' ); ?> $plugin ) : ?> is_ignored_updates( $plugin, $decodedIgnoredPlugins, 'plugin' ) ) { continue; } } $esc_note = ''; $strip_note = ''; if ( isset( $trustedPluginsNotes[ $slug ] ) ) { $esc_note = MainWP_Utility::esc_content( $trustedPluginsNotes[ $slug ] ); $strip_note = wp_strip_all_tags( $esc_note ); } $plugin_directory = dirname( $slug ); ?>
' . esc_html__( 'Trusted', 'mainwp' ) . '' : '' . esc_html__( 'Not Trusted', 'mainwp' ) . ''; ?> is_ignored_updates( $plugin, $decodedIgnoredPlugins, 'plugin' ) ? '' . esc_html__( 'Ignored', 'mainwp' ) . '' : ''; ?> is_ignored_updates( $plugin, $decodedIgnoredPlugins, 'plugin' ) ? '' : ''; ?>
'true', 'stateSave' => 'true', 'colReorder' => 'true', 'info' => 'true', 'paging' => 'false', 'ordering' => 'true', 'order' => '[ [ 2, "asc" ] ]', 'responsive' => 'true', ); /** * Filter: mainwp_plugin_auto_updates_table_fatures * * Filters the Plugin Auto Updates table features. * * @since 4.1 */ $table_features = apply_filters( 'mainwp_plugin_auto_updates_table_fatures', $table_features ); ?> query( MainWP_DB::instance()->get_sql_websites_for_current_user() ); $userExtension = MainWP_DB_Common::instance()->get_user_extension(); $decodedIgnoredPlugins = json_decode( $userExtension->ignored_plugins, true ); $ignoredPlugins = is_array( $decodedIgnoredPlugins ) && ( ! empty( $decodedIgnoredPlugins ) ); $cnt = 0; while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) { if ( $website->is_ignorePluginUpdates ) { continue; } $tmpDecodedIgnoredPlugins = json_decode( $website->ignored_plugins, true ); if ( ! is_array( $tmpDecodedIgnoredPlugins ) || empty( $tmpDecodedIgnoredPlugins ) ) { continue; } ++$cnt; } static::render_header( 'Ignore' ); ?>
', ' ' ); ?>

$ignoredPluginName ) : $ignore_name = 'N/A'; $ignored_vers = array( 'all_versions' ); if ( is_string( $ignoredPluginName ) ) { $ignore_name = $ignoredPluginName; } elseif ( is_array( $ignoredPluginName ) ) { $ignore_name = ! empty( $ignoredPluginName['Name'] ) ? $ignoredPluginName['Name'] : $ignore_name; $ig_vers = ! empty( $ignoredPluginName['ignored_versions'] ) ? $ignoredPluginName['ignored_versions'] : ''; if ( ! empty( $ig_vers ) && is_array( $ig_vers ) && ! in_array( 'all_versions', $ig_vers ) ) { $ignored_vers = $ig_vers; } } ?>
is_ignorePluginUpdates ) { continue; } $decodedIgnoredPlugins = json_decode( $website->ignored_plugins, true ); if ( ! is_array( $decodedIgnoredPlugins ) || empty( $decodedIgnoredPlugins ) ) { continue; } $first = true; // phpcs:disable WordPress.Security.EscapeOutput foreach ( $decodedIgnoredPlugins as $ignoredPlugin => $ignoredPluginName ) { $ignore_name = 'N/A'; $ignored_vers = array( 'all_versions' ); if ( is_string( $ignoredPluginName ) ) { $ignore_name = $ignoredPluginName; } elseif ( is_array( $ignoredPluginName ) ) { $ignore_name = ! empty( $ignoredPluginName['Name'] ) ? $ignoredPluginName['Name'] : $ignore_name; $ig_vers = ! empty( $ignoredPluginName['ignored_versions'] ) ? $ignoredPluginName['ignored_versions'] : ''; if ( ! empty( $ig_vers ) && is_array( $ig_vers ) && ! in_array( 'all_versions', $ig_vers ) ) { $ignored_vers = $ig_vers; } } $plugin_directory = MainWP_Utility::get_dir_slug( rawurldecode( $ignoredPlugin ) ); foreach ( $ignored_vers as $ignored_ver ) { ?>
name ) ); ?>
name ) ); ?>
query( MainWP_DB::instance()->get_sql_websites_for_current_user() ); $userExtension = MainWP_DB_Common::instance()->get_user_extension(); $decodedIgnoredPlugins = json_decode( $userExtension->dismissed_plugins, true ); $ignoredPlugins = is_array( $decodedIgnoredPlugins ) && ( ! empty( $decodedIgnoredPlugins ) ); $cnt = 0; while ( $websites && ( $website = MainWP_DB::fetch_object( $websites ) ) ) { $tmpDecodedDismissedPlugins = MainWP_DB::instance()->get_website_option( $website, 'plugins_outdate_dismissed' ); $tmpDecodedDismissedPlugins = ! empty( $tmpDecodedDismissedPlugins ) ? json_decode( $tmpDecodedDismissedPlugins, true ) : array(); if ( ! is_array( $tmpDecodedDismissedPlugins ) || empty( $tmpDecodedDismissedPlugins ) ) { continue; } ++$cnt; } static::render_header( 'IgnoreAbandoned' ); ?>
', ' ' ); ?>

$ignoredPluginName ) : $ignore_name = 'N/A'; if ( is_string( $ignoredPluginName ) ) { $ignore_name = $ignoredPluginName; } elseif ( is_array( $ignoredPluginName ) && ! empty( $ignoredPluginName['Name'] ) ) { $ignore_name = $ignoredPluginName['Name']; } $plugin_directory = MainWP_Utility::get_dir_slug( rawurldecode( $ignoredPlugin ) ); ?>
get_website_option( $website, 'plugins_outdate_dismissed' ); $decodedIgnoredPlugins = ! empty( $decodedIgnoredPlugins ) ? json_decode( $decodedIgnoredPlugins, true ) : array(); if ( ! is_array( $decodedIgnoredPlugins ) || empty( $decodedIgnoredPlugins ) ) { continue; } $first = true; // phpcs:disable WordPress.Security.EscapeOutput foreach ( $decodedIgnoredPlugins as $ignoredPlugin => $ignoredPluginName ) { $ignore_name = 'N/A'; if ( is_string( $ignoredPluginName ) ) { $ignore_name = $ignoredPluginName; } elseif ( is_array( $ignoredPluginName ) && ! empty( $ignoredPluginName['Name'] ) ) { $ignore_name = $ignoredPluginName['Name']; } $plugin_directory = MainWP_Utility::get_dir_slug( rawurldecode( $ignoredPlugin ) ); ?>
name ) ); ?>
name ) ); ?>

Managing Plugins with MainWP
Install Plugins
Activate Plugins
Delete Plugins
Update Plugins
Plugins Auto Updates
Your custom text
* * @since 4.1 */ do_action( 'mainwp_plugins_help_item' ); ?>