true, 'connection_status' => true, 'uptime_monitoring_status' => true, 'recent_posts' => true, 'recent_pages' => true, 'security_issues' => true, 'backup_tasks' => true, 'non_mainwp_changes' => true, 'clients' => true, 'get-started' => true, ); /** * Check if there is a session, * if there isn't one create it. * * @return static::singlton Overview Page Session. * * @uses \MainWP\Dashboard\MainWP_Overview */ public static function get() { if ( null === static::$instance ) { static::$instance = new MainWP_Overview(); } return static::$instance; } /** * MainWP_Overview constructor. * * Run each time the class is called. */ public function __construct() { add_filter( 'screen_layout_columns', array( &$this, 'on_screen_layout_columns' ), 10, 2 ); add_action( 'admin_menu', array( &$this, 'on_admin_menu' ) ); add_action( 'mainwp_help_sidebar_content', array( &$this, 'mainwp_help_content' ) ); } /** * Set the number of page coumns. * * @param mixed $columns Number of Columns. * @param mixed $screen Screen size. * * @return int $columns Number of desired page columns. */ public function on_screen_layout_columns( $columns, $screen ) { if ( $screen === $this->dashBoard ) { $columns[ $this->dashBoard ] = 3; } return $columns; } /** * Add MainWP Overview top level menu. * * @uses \MainWP\Dashboard\MainWP_System_Utility::is_admin() * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit() */ public function on_admin_menu() { if ( MainWP_System_Utility::is_admin() ) { /** * Current user global. * * @global string */ global $current_user; // The icon in Base64 format. $icon_base64 = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4zLjEsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MCA1MCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAgNTA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoJLnN0MHtmaWxsOiM5Q0EyQTc7fQ0KPC9zdHlsZT4NCjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNSwwLjVDMTEuNDcsMC41LDAuNSwxMS40NywwLjUsMjVjMCwxMy41MywxMC45NywyNC41LDI0LjUsMjQuNVM0OS41LDM4LjUzLDQ5LjUsMjUNCglDNDkuNSwxMS40NywzOC41MywwLjUsMjUsMC41eiBNMjUsNDQuNmwtOC4zMy00LjlsNi4wOS0yNS4wN2MtMS41Ny0wLjgyLTIuNjYtMi40NC0yLjY2LTQuMzNjMC0yLjcxLDIuMTktNC45LDQuOS00LjkNCglzNC45LDIuMTksNC45LDQuOWMwLDEuODktMS4wOSwzLjUyLTIuNjYsNC4zM2w2LjA5LDI1LjA3TDI1LDQ0LjZ6Ii8+DQo8L3N2Zz4NCg=='; // The icon in the data URI scheme. $icon_data_uri = 'data:image/svg+xml;base64,' . $icon_base64; delete_user_option( $current_user->ID, 'screen_layout_toplevel_page_mainwp_tab' ); $this->dashBoard = add_menu_page( 'MainWP', 'MainWP', 'read', 'mainwp_tab', array( $this, 'on_show_page', ), $icon_data_uri, '2.00001' ); add_submenu_page( 'mainwp_tab', 'MainWP', __( 'Overview', 'mainwp' ), 'read', 'mainwp_tab', array( $this, 'on_show_page', ) ); $val = get_user_option( 'screen_layout_' . $this->dashBoard ); if ( ! MainWP_Utility::ctype_digit( $val ) ) { update_user_option( $current_user->ID, 'screen_layout_' . $this->dashBoard, 2, true ); } add_action( 'load-' . $this->dashBoard, array( &$this, 'on_load_page' ) ); static::init_left_menu(); } } /** * Instantiate the MainWP Overview Menu item. * * @uses \MainWP\Dashboard\MainWP_Menu::add_left_menu() */ public static function init_left_menu() { MainWP_Menu::add_left_menu( array( 'title' => esc_html__( 'Overview', 'mainwp' ), 'parent_key' => 'mainwp_tab', 'slug' => 'mainwp_tab', 'href' => 'admin.php?page=mainwp_tab', 'icon' => '', ), 0 ); } /** * Method on_load_page() * * Run on page load. */ public function on_load_page() { wp_enqueue_script( 'common' ); wp_enqueue_script( 'wp-lists' ); wp_enqueue_script( 'postbox' ); wp_enqueue_script( 'dashboard' ); wp_enqueue_script( 'widgets' ); static::add_meta_boxes( $this->dashBoard ); } /** * Method add_meta_boxes() * * Add MainWP Overview Page Widgets. * * @param array $page Current page. * * @uses \MainWP\Dashboard\MainWP_System_Handler::apply_filters() * @uses \MainWP\Dashboard\MainWP_System_Utility::get_current_wpid() * @uses \MainWP\Dashboard\MainWP_UI::add_widget_box() * @uses \MainWP\Dashboard\MainWP_Connection_Status::get_class_name() * @uses \MainWP\Dashboard\MainWP_Recent_Pages::get_class_name() * @uses \MainWP\Dashboard\MainWP_Recent_Posts::get_class_name() * @uses \MainWP\Dashboard\MainWP_Security_Issues_Widget::get_class_name() * @uses \MainWP\Dashboard\MainWP_Updates_Overview::get_class_name() */ public static function add_meta_boxes( $page ) { // phpcs:ignore -- NOSONAR - complex method. Current complexity is the only way to achieve desired results, pull request solutions appreciated. /** * Get getmetaboxes * * Adds metaboxes (widgets) to the Overview page. * * @since Unknown */ $extMetaBoxs = MainWP_System_Handler::instance()->apply_filters( 'mainwp-getmetaboxes', array() ); $extMetaBoxs = MainWP_System_Handler::instance()->apply_filters( 'mainwp_getmetaboxes', $extMetaBoxs ); // hooks to load widgets for general overview dashboard page. foreach ( $extMetaBoxs as $box ) { if ( isset( $box['plugin'] ) ) { $name = basename( $box['plugin'], '.php' ); static::$enable_widgets[ $name ] = true; } } $values = static::$enable_widgets; /** * Unset unwanted Widgets * * Contains the list of enabled widgets and allows user to unset unwanted widgets. * * @param array $values Array containing enabled widgets. * @param int $dashboard_siteid Child site (Overview) ID. * * @since 4.0 */ $values = apply_filters( 'mainwp_overview_enabled_widgets', $values, null ); static::$enable_widgets = array_merge( static::$enable_widgets, $values ); // Load the Updates Overview widget. if ( static::$enable_widgets['overview'] ) { MainWP_UI::add_widget_box( 'overview', array( MainWP_Updates_Overview::get_class_name(), 'render' ), $page, array( 0, 0, 12, 19 ) ); } // Load the Clients widget. if ( static::$enable_widgets['clients'] && \mainwp_current_user_can( 'dashboard', 'manage_clients' ) ) { MainWP_UI::add_widget_box( 'clients', array( MainWP_Clients::get_class_name(), 'render' ), $page, array( -1, -1, 4, 30 ) ); } // Load the Non-MainWP Changes widget. if ( static::$enable_widgets['non_mainwp_changes'] ) { MainWP_UI::add_widget_box( 'non_mainwp_changes', array( MainWP_Site_Actions::get_class_name(), 'render' ), $page, array( -1, -1, 4, 30 ) ); } // Load the Connection Status widget. if ( ! MainWP_System_Utility::get_current_wpid() && static::$enable_widgets['connection_status'] ) { MainWP_UI::add_widget_box( 'connection_status', array( MainWP_Connection_Status::get_class_name(), 'render' ), $page, array( -1, -1, 4, 30 ) ); } // Load the Connection Status widget. if ( MainWP_Uptime_Monitoring_Edit::is_enable_global_monitoring() && ! MainWP_System_Utility::get_current_wpid() && static::$enable_widgets['uptime_monitoring_status'] ) { MainWP_UI::add_widget_box( 'uptime_monitoring_status', array( MainWP_Uptime_Monitoring_Status::get_class_name(), 'render_status' ), $page, array( -1, -1, 4, 30 ) ); } // Load the Security Issues widget. if ( \mainwp_current_user_can( 'dashboard', 'manage_security_issues' ) && static::$enable_widgets['security_issues'] ) { MainWP_UI::add_widget_box( 'security_issues', array( MainWP_Security_Issues_Widget::get_class_name(), 'render_widget' ), $page, array( -1, -1, 4, 30 ) ); } // Load the Recent Pages widget. if ( \mainwp_current_user_can( 'dashboard', 'manage_pages' ) && static::$enable_widgets['recent_pages'] ) { MainWP_UI::add_widget_box( 'recent_pages', array( MainWP_Recent_Pages::get_class_name(), 'render' ), $page, array( -1, -1, 4, 30 ) ); } // Load the Recent Posts widget. if ( \mainwp_current_user_can( 'dashboard', 'manage_posts' ) && static::$enable_widgets['recent_posts'] ) { MainWP_UI::add_widget_box( 'recent_posts', array( MainWP_Recent_Posts::get_class_name(), 'render' ), $page, array( -1, -1, 4, 30 ) ); } $i = 1; foreach ( $extMetaBoxs as $metaBox ) { $enabled = true; if ( isset( $metaBox['plugin'] ) ) { $name = basename( $metaBox['plugin'], '.php' ); if ( isset( static::$enable_widgets[ $name ] ) && ! static::$enable_widgets[ $name ] ) { $enabled = false; } } $id = isset( $metaBox['id'] ) ? $metaBox['id'] : $i++; $id = 'advanced-' . $id; if ( $enabled ) { MainWP_UI::add_widget_box( $id, $metaBox['callback'], $page, array( -1, -1, 6, 30 ) ); } } } /** * Method on_show_page() * * When the page loads render the body content. * * @uses \MainWP\Dashboard\MainWP_UI::render_top_header() * @uses \MainWP\Dashboard\MainWP_UI::render_second_top_header() */ public function on_show_page() { if ( ! \mainwp_current_user_can( 'dashboard', 'access_global_dashboard' ) ) { \mainwp_do_not_have_permissions( esc_html__( 'global dashboard', 'mainwp' ) ); return; } /** * Screen layout columns array. * * @global object */ global $screen_layout_columns; $params = array( 'title' => esc_html__( 'Overview', 'mainwp' ), ); MainWP_UI::render_top_header( $params ); MainWP_UI::render_second_top_header(); static::render_dashboard_body(); ?> init_data_demo(); static::render_layout_selection(); ?>