Extensions Submenu * * @return $page * * @uses \MainWP\Dashboard\MainWP_Extensions::get_class_name() */ public static function init_menu() { return add_submenu_page( 'mainwp_tab', __( 'Add-ons', 'mainwp' ), ' ' . esc_html__( 'Add-ons', 'mainwp' ) . '', 'read', 'Extensions', array( MainWP_Extensions::get_class_name(), 'render', ) ); } /** * Method render_header() * * Render page header. * * @param string $shownPage The page slug shown at this moment. * * @uses \MainWP\Dashboard\MainWP_UI::render_top_header() * @uses \MainWP\Dashboard\MainWP_UI::render_page_navigation() * @uses \MainWP\Dashboard\MainWP_Extensions_Handler::get_extensions() */ public static function render_header( $shownPage = '' ) { $page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized if ( ! empty( $page ) && 'Extensions' === $_GET['page'] ) { // phpcs:ignore WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $params = array( 'title' => esc_html__( 'Extensions', 'mainwp' ), ); } else { $extension_name_raw = $page; $extension_name = str_replace( array( '-' ), ' ', $extension_name_raw ); $extension_name = MainWP_Extensions_Handler::polish_string_name( $extension_name ); $extension_name = apply_filters( 'mainwp_extensions_page_top_header', $extension_name, $extension_name_raw ); $params = array( 'title' => $extension_name, ); } MainWP_UI::render_top_header( $params ); $renderItems = array(); $renderItems[] = array( 'title' => esc_html__( 'Manage Add-ons', 'mainwp' ), 'href' => 'admin.php?page=Extensions', 'active' => ( '' === $shownPage ) ? true : false, ); // get extensions to generate manage site page header. $extensions = MainWP_Extensions_Handler::get_extensions(); foreach ( $extensions as $extension ) { if ( $extension['plugin'] === $shownPage ) { $renderItems[] = array( 'title' => $extension['name'], 'href' => 'admin.php?page=' . $extension['page'], 'active' => true, ); break; } } MainWP_UI::render_page_navigation( $renderItems ); do_action( 'mainwp_extensions_top_header_after_tab', $shownPage ); } /** * Method render_footer() * * Render page footer. */ public static function render_footer() { echo ''; } /** * Method render() * * Render the extensions page. * * @uses \MainWP\Dashboard\MainWP_Extensions_Handler::get_extensions() * @uses \MainWP\Dashboard\MainWP_Extensions_Handler::added_on_menu() * @uses \MainWP\Dashboard\MainWP_Utility::remove_http_prefix() */ public static function render() { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated. $mainwp_api_key = false; if ( get_option( 'mainwp_extensions_api_save_login' ) ) { $mainwp_api_key = MainWP_Api_Manager_Key::instance()->get_decrypt_master_api_key(); } if ( 1 === (int) get_option( 'mainwp_api_sslVerifyCertificate' ) ) { update_option( 'mainwp_api_sslVerifyCertificate', 0 ); } $all_available_extensions = static::get_available_extensions( 'all' ); $extensions_disabled = MainWP_Extensions_Handler::get_extensions_disabled(); $extensions = MainWP_Extensions_Handler::get_extensions(); $extension_update = get_site_transient( 'update_plugins' ); $extensions_count = 0; $extensions_disabled_count = 0; ?>