get_total_sites(); } /** * Get instance. * * @return static::singlton */ public static function get_total_sites() { if ( null === static::$total_sites ) { static::$total_sites = MainWP_DB::instance()->get_websites_count(); } return static::$total_sites; } /** * Get Class Name * * @return string __CLASS__ */ public static function get_class_name() { return __CLASS__; } /** * Sub pages * * @static * @var array $subPages Sub pages. */ public static $subPages; /** * Current page. * * @static * @var string $page Current page. */ public static $page; /** * Widgets to enable. * * @static * @var array $enable_widgets Widgets to enable. */ private static $enable_widgets = array( 'overview' => true, 'recent_posts' => true, 'recent_pages' => true, 'security_issues' => true, 'manage_backups' => true, 'plugins' => true, 'themes' => true, 'notes' => true, 'site_note' => true, 'client_info' => true, 'non_mainwp_changes' => true, 'uptime_monitoring_info' => true, 'uptime_monitoring_response_time' => true, ); /** * Magage Sites table * * @var $sitesTable Magage Sites table. */ public static $sitesTable; /** * Method init() * * Initiate Manage Sites. * * @uses \MainWP\Dashboard\MainWP_Security_Issues::get_class_name() */ public static function init() { /** * This hook allows you to render the Sites page header via the 'mainwp-pageheader-sites' action. * * @link http://codex.mainwp.com/#mainwp-pageheader-sites * * This hook is normally used in the same context of 'mainwp-getsubpages-sites' * @link http://codex.mainwp.com/#mainwp-getsubpages-sites * * @see \MainWP_Manage_Sites::render_header */ add_action( 'mainwp-pageheader-sites', array( static::get_class_name(), 'render_header' ) ); // @deprecated Use 'mainwp_pageheader_sites' instead. add_action( 'mainwp_pageheader_sites', array( static::get_class_name(), 'render_header' ) ); /** * This hook allows you to render the Sites page footer via the 'mainwp-pagefooter-sites' action. * * @link http://codex.mainwp.com/#mainwp-pagefooter-sites * * This hook is normally used in the same context of 'mainwp-getsubpages-sites' * @link http://codex.mainwp.com/#mainwp-getsubpages-sites * * @see \MainWP_Manage_Sites::render_footer */ add_action( 'mainwp-pagefooter-sites', array( static::get_class_name(), 'render_footer' ) ); // @deprecated Use 'mainwp_pagefooter_sites' instead. add_action( 'mainwp_pagefooter_sites', array( static::get_class_name(), 'render_footer' ) ); add_action( 'mainwp_securityissues_sites', array( MainWP_Security_Issues::get_class_name(), 'render' ) ); add_action( 'mainwp_manage_sites_edit', array( static::get_class_name(), 'on_edit_site' ) ); // Hook the Help Sidebar content. add_action( 'mainwp_help_sidebar_content', array( static::get_class_name(), 'mainwp_help_content' ) ); MainWP_Post_Handler::instance()->add_action( 'mainwp_managesites_add_edit_site_upload_site_icon', array( static::class, 'ajax_upload_icon' ) ); } /** * Method on_screen_layout_columns() * * Columns to display. * * @param mixed $columns Columns to display. * @param mixed $screen Current page. * * @return array $columns */ public static function on_screen_layout_columns( $columns, $screen ) { if ( $screen === static::$page ) { $columns[ static::$page ] = 3; } return $columns; } /** * Initiate menu. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::init_menu() * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::init_left_menu() * @uses \MainWP\Dashboard\MainWP_Menu::is_disable_menu_item() * @uses \MainWP\Dashboard\MainWP_Site_Open::get_class_name() * @uses \MainWP\Dashboard\MainWP_Utility::ctype_digit() */ public static function init_menu() { // phpcs:ignore -- NOSONAR - complex. static::$page = MainWP_Manage_Sites_View::init_menu(); add_action( 'load-' . static::$page, array( static::get_class_name(), 'on_load_page' ) ); // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized if ( isset( $_REQUEST['dashboard'] ) ) { // phpcs:enable /** * Current user global. * * @global string */ global $current_user; delete_user_option( $current_user->ID, 'screen_layout_toplevel_page_managesites' ); add_filter( 'screen_layout_columns', array( static::get_class_name(), 'on_screen_layout_columns' ), 10, 2 ); $val = get_user_option( 'screen_layout_' . static::$page ); if ( ! MainWP_Utility::ctype_digit( $val ) ) { global $current_user; update_user_option( $current_user->ID, 'screen_layout_' . static::$page, 2, true ); } } add_submenu_page( 'mainwp_tab', __( 'Sites', 'mainwp' ), '
' . esc_html__( 'Sites', 'mainwp' ) . '
', 'read', 'SiteOpen', array( MainWP_Site_Open::get_class_name(), 'render', ) ); add_submenu_page( 'mainwp_tab', __( 'Sites', 'mainwp' ), '
' . esc_html__( 'Sites', 'mainwp' ) . '
', 'read', 'SiteRestore', array( MainWP_Site_Open::get_class_name(), 'render_restore', ) ); /** * Sites Subpages * * Filters subpages for the Sites page. * * @since Unknown */ $sub_pages = array(); $sub_pages = apply_filters_deprecated( 'mainwp-getsubpages-sites', array( $sub_pages ), '4.0.7.2', 'mainwp_getsubpages_sites' ); // @deprecated Use 'mainwp_getsubpages_sites' instead. NOSONAR - not IP. static::$subPages = apply_filters( 'mainwp_getsubpages_sites', $sub_pages ); if ( isset( static::$subPages ) && is_array( static::$subPages ) ) { foreach ( static::$subPages as $subPage ) { if ( ! empty( $subPage['no_submenu_page'] ) ) { continue; } if ( ! isset( $subPage['slug'] ) && ! isset( $subPage['title'] ) ) { continue; } if ( MainWP_Menu::is_disable_menu_item( 2, 'ManageSites' . $subPage['slug'] ) ) { continue; } $_page = add_submenu_page( 'mainwp_tab', $subPage['title'], '
' . $subPage['title'] . '
', 'read', 'ManageSites' . $subPage['slug'], $subPage['callback'] ); add_action( 'load-' . $_page, array( static::get_class_name(), 'on_load_subpages' ), 9 ); if ( isset( $subPage['on_load_callback'] ) && ! empty( $subPage['on_load_callback'] ) ) { add_action( 'load-' . $_page, $subPage['on_load_callback'] ); } } } MainWP_Manage_Sites_View::init_left_menu( static::$subPages ); } /** * Initiate sub page menu. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::init_subpages_menu() */ public static function init_subpages_menu() { MainWP_Manage_Sites_View::init_subpages_menu( static::$subPages ); } /** * Method on_load_page() * * Run on page load. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_List_Table * @uses \MainWP\Dashboard\MainWP_System::enqueue_postbox_scripts() */ public static function on_load_page() { // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized if ( isset( $_REQUEST['dashboard'] ) ) { static::on_load_page_dashboard(); return; } MainWP_System::enqueue_postbox_scripts(); if ( isset( $_REQUEST['do'] ) ) { if ( 'new' === $_REQUEST['do'] || 'bulknew' === $_REQUEST['do'] ) { return; } } elseif ( isset( $_GET['id'] ) || isset( $_GET['scanid'] ) || isset( $_GET['backupid'] ) || isset( $_GET['updateid'] ) || isset( $_GET['monitor_wpid'] ) || isset( $_GET['emailsettingsid'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification,ized return; } // phpcs:enable $sitesViewMode = MainWP_Utility::get_siteview_mode(); add_filter( 'mainwp_header_actions_right', array( static::get_class_name(), 'screen_options' ), 10, 2 ); if ( 'grid' !== $sitesViewMode ) { static::load_sites_table(); } else { MainWP_Manage_Screenshots::get_instance(); // to init hooks. } } /** * Method load_sites_table() * * Load sites table. */ public static function load_sites_table() { if ( empty( static::$sitesTable ) ) { static::$sitesTable = new MainWP_Manage_Sites_List_Table(); } } /** * Method on_load_sunpages() * * Run on subpage load. * * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function on_load_subpages() { if ( ! empty( $_GET['id'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification,ized MainWP_System_Utility::set_current_wpid( intval( $_GET['id'] ) ); // phpcs:ignore WordPress.Security.NonceVerification,ized } } /** * Method render_header() * * Render page header. * * @param string $shownPage Current page slug. * * @uses \MainWP\Dashboard\MainWP_Deprecated_Hooks::maybe_handle_deprecated_hook() * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_header() */ public static function render_header( $shownPage = '' ) { MainWP_Deprecated_Hooks::maybe_handle_deprecated_hook(); MainWP_Manage_Sites_View::render_header( $shownPage, static::$subPages ); } /** * Method render_footer() * * Render page footer. */ public static function render_footer() { MainWP_Manage_Sites_View::render_footer(); } /** * Method screen_options() * * Create Page Settings button. * * @param mixed $input Page Settings button HTML. * * @return mixed Page Settings button. */ public static function screen_options( $input ) { return $input . ' '; } /** * Method render_screen_options() * * Render Page Settings Modal. */ public static function render_screen_options() { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated. $columns = static::$sitesTable->get_columns(); if ( isset( $columns['cb'] ) ) { unset( $columns['cb'] ); } if ( isset( $columns['status'] ) ) { $columns['status'] = esc_html__( 'Status', 'mainwp' ); } if ( isset( $columns['favicon'] ) ) { $columns['favicon'] = esc_html__( 'Favicon', 'mainwp' ); } $list_items = array( 'login' => esc_html__( 'Jump to WP Admin', 'mainwp' ), 'update' => esc_html__( 'Updates', 'mainwp' ), 'wpcore_update' => esc_html__( 'WP updates', 'mainwp' ), 'plugin_update' => esc_html__( 'Plugin updates', 'mainwp' ), 'theme_update' => esc_html__( 'Theme updates', 'mainwp' ), 'site-cost-tracker' => esc_html__( 'Cost Tracker', 'mainwp' ), 'note' => esc_html__( 'Notes', 'mainwp' ), 'site_preview' => esc_html__( 'Site preview', 'mainwp' ), 'time-tracker-tasks' => esc_html__( 'Time Tracker tasks', 'mainwp' ), 'lighthouse_desktop_score' => esc_html__( 'Lighthouse desktop score', 'mainwp' ), 'lighthouse_mobile_score' => esc_html__( 'Lighthouse mobile score', 'mainwp' ), ); foreach ( $list_items as $idx => $title ) { if ( isset( $columns[ $idx ] ) ) { $columns[ $idx ] = $title; } } $sites_per_page = get_option( 'mainwp_default_sites_per_page', 25 ); if ( isset( $columns['site_actions'] ) && empty( $columns['site_actions'] ) ) { $columns['site_actions'] = esc_html__( 'Actions', 'mainwp' ); } $show_cols = get_user_option( 'mainwp_settings_show_manage_sites_columns' ); if ( false === $show_cols ) { // to backwards. $show_cols = array(); foreach ( $columns as $name => $title ) { if ( in_array( $name, array( 'status', 'favicon', 'site_combo', 'update', 'client_name', 'security', 'index', 'backup', 'site_actions' ) ) ) { $show_cols[ $name ] = 1; } else { $show_cols[ $name ] = 0; } } $user = wp_get_current_user(); if ( $user ) { update_user_option( $user->ID, 'mainwp_settings_show_manage_sites_columns', $show_cols, true ); } } if ( ! is_array( $show_cols ) ) { $show_cols = array(); } $siteViewMode = MainWP_Utility::get_siteview_mode(); ?> prepare_items( true ); $output = static::$sitesTable->ajax_get_datatable_rows(); static::$sitesTable->clear_items(); MainWP_Logger::instance()->log_execution_time( 'ajax_optimize_display_rows()' ); wp_send_json( $output ); } /** * Method render_new_site() * * Render add new site page. * * @return string Add new site html. * * @uses \MainWP\Dashboard\MainWP_DB_Common::get_groups_for_current_user() * @uses \MainWP\Dashboard\MainWP_DB::query() * @uses \MainWP\Dashboard\MainWP_DB::get_sql_websites_for_current_user() * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_sync_exts_settings() */ public static function render_new_site() { $showpage = 'AddNew'; $title_page = esc_html__( 'Add a New Site', 'mainwp' ); static::render_header( $showpage ); $has_import_data = ! empty( $_POST['mainwp_managesites_import'] ); if ( ! \mainwp_current_user_can( 'dashboard', 'add_sites' ) ) { \mainwp_do_not_have_permissions( esc_html__( 'add sites', 'mainwp' ) ); return; } elseif ( $has_import_data && check_admin_referer( 'mainwp-admin-nonce' ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Missing static::render_import_sites_modal( 'admin.php?page=managesites&do=new', $title_page ); } else { $groups = MainWP_DB_Common::instance()->get_groups_for_current_user(); if ( ! is_array( $groups ) ) { $groups = array(); } ?>
', ' ' ); // NOSONAR - noopener - open safe. ?>
', ' ' ); // NOSONAR - noopener - open safe. ?>
', '' ); // NOSONAR - noopener - open safe. ?>

get_wp_client_by() * @uses MainWP_Manage_Sites_View::render_sync_exts_settings() * * @param array $groups manage sites add groups. */ public static function render_new_site_add_new_site( $groups ) { ?>

secure_request( 'mainwp_managesites_add_edit_site_upload_site_icon' ); // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $iconfile_slug = isset( $_POST['iconFileSlug'] ) ? sanitize_text_field( wp_unslash( $_POST['iconFileSlug'] ) ) : ''; $delete = isset( $_POST['delete'] ) ? intval( $_POST['delete'] ) : 0; $site_id = isset( $_POST['iconItemId'] ) ? intval( $_POST['iconItemId'] ) : 0; $delnonce = isset( $_POST['delnonce'] ) ? sanitize_key( $_POST['delnonce'] ) : ''; if ( $delete ) { if ( ! MainWP_System_Utility::is_valid_custom_nonce( 'site', $iconfile_slug, $delnonce ) ) { die( 'Invalid nonce!' ); } if ( $site_id ) { $website = MainWP_DB::instance()->get_website_by_id( $site_id ); if ( $website && ! empty( $website->cust_site_icon_info ) ) { $uploaded_site_icon = static::get_instance()->get_cust_site_icon( $website->cust_site_icon_info, 'uploaded' ); if ( ! empty( $uploaded_site_icon ) ) { $tmp = explode( ';', $website->cust_site_icon_info ); $new_info = 'uploaded:;' . $tmp[1] . ';' . $tmp[2]; MainWP_DB::instance()->update_website_option( $website, 'cust_site_icon_info', $new_info ); // to delete uploaded icon. MainWP_Utility::instance()->delete_uploaded_icon_file( 'site-icons', $uploaded_site_icon ); } } } elseif ( ! empty( $iconfile_slug ) ) { MainWP_Utility::instance()->delete_uploaded_icon_file( 'site-icons', $iconfile_slug ); } wp_die( wp_json_encode( array( 'result' => 'success' ) ) ); } $output = isset( $_FILES['mainwp_upload_icon_uploader'] ) ? MainWP_System_Utility::handle_upload_image( 'site-icons', $_FILES['mainwp_upload_icon_uploader'] ) : null; // phpcs:enable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $uploaded_icon = 'NOTCHANGE'; if ( is_array( $output ) && isset( $output['filename'] ) && ! empty( $output['filename'] ) ) { $uploaded_icon = $output['filename']; } if ( 'NOTCHANGE' !== $uploaded_icon ) { $dirs = MainWP_System_Utility::get_mainwp_dir( 'site-icons', true ); $icon_url = $dirs[1] . $uploaded_icon; wp_die( wp_json_encode( array( 'result' => 'success', 'iconfile' => esc_html( $uploaded_icon ), 'iconsrc' => esc_html( $icon_url ), 'iconimg' => 'Custom icon', 'iconnonce' => MainWP_System_Utility::get_custom_nonce( 'site', esc_html( $uploaded_icon ) ), ) ) ); } else { $result = array( 'result' => 'failed', ); $error = MainWP_Post_Handler::get_upload_icon_error( $output ); if ( ! empty( $error ) ) { $result['error'] = esc_html( $error ); } wp_die( wp_json_encode( $result ) ); } } /** * Method get_site_icon_display() * * Get site icon. * * @param string $icon_data icon data. * @param string $favi_url favico url. */ public function get_site_icon_display( $icon_data, $favi_url ) { $output = ''; // 1 priority. if ( ! empty( $icon_data ) ) { $uploaded = $this->get_cust_site_icon( $icon_data, 'uploaded' ); if ( ! empty( $uploaded ) ) { $output = $this->get_cust_site_icon( $icon_data, 'display' ); } } // 2 priority. if ( empty( $output ) && ! empty( $favi_url ) ) { $output = 'Site icon'; } // 3 priority. $selected = $this->get_cust_site_icon( $icon_data, 'selected' ); if ( empty( $output ) && ! empty( $selected ) ) { $output = $this->get_cust_site_icon( $icon_data, 'display_selected' ); } if ( empty( $output ) ) { $output = ' '; // phpcs:ignore -- WP icon. } // last default. return $output; } /** * Method get_cust_site_icon() * * Get site icon. * * @param string $icon_data icon data. * @param string $type Type: uploaded|selected|color|display. */ public function get_cust_site_icon( $icon_data, $type = 'display' ) { //phpcs:ignore -- NOSONAR - complex. if ( empty( $icon_data ) ) { return ''; } $data = explode( ';', $icon_data ); $uploaded = str_replace( 'uploaded:', '', $data[0] ); $selected = str_replace( 'selected:', '', $data[1] ); $color = str_replace( 'color:', '', $data[2] ); if ( empty( $color ) ) { $color = '#34424D'; } if ( 'display_selected' === $type ) { if ( empty( $selected ) ) { $selected = 'wordpress'; // phpcs:ignore -- WP icon. } return ''; } $output = ''; if ( 'uploaded' === $type ) { $output = $uploaded; } elseif ( 'selected' === $type ) { $output = $selected; } elseif ( 'color' === $type ) { $output = $color; } elseif ( 'display' === $type || 'display_edit' === $type ) { $style = 'width:28px;height:auto;display:inline-block;'; $default_cls = 'mainw_site_custom_icon_display'; $icon = ''; if ( ! empty( $uploaded ) ) { $dirs = MainWP_System_Utility::get_mainwp_dir( 'site-icons', true ); $icon_base = $dirs[1]; $scr = $icon_base . $uploaded; $icon_wrapper_attr = ' class="' . esc_attr( $default_cls ) . ' ui circular image " '; if ( 'display_edit' === $type ) { $icon_wrapper_attr = ' id="mainw_managesites_add_edit_site_upload_custom_icon" class="' . esc_attr( $default_cls ) . ' ui circular image" '; } $icon = '
Site icon
'; } $output = $icon; } return $output; } /** * Method render_bulk_new_site() * * Render Import Sites - bulk new site modal. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_import_sites() * @uses \MainWP_Utility::show_mainwp_message() */ public static function render_bulk_new_site() { $title_page = esc_html__( 'Import Sites', 'mainwp' ); $showpage = 'BulkAddNew'; static::render_header( $showpage ); $has_file_upload = isset( $_FILES['mainwp_managesites_file_bulkupload'] ) && isset( $_FILES['mainwp_managesites_file_bulkupload']['error'] ) && UPLOAD_ERR_OK === $_FILES['mainwp_managesites_file_bulkupload']['error']; $has_import_data = ! empty( $_POST['mainwp_managesites_import'] ); if ( ! \mainwp_current_user_can( 'dashboard', 'add_sites' ) ) { \mainwp_do_not_have_permissions( esc_html__( 'add sites', 'mainwp' ) ); return; } elseif ( ( $has_file_upload || $has_import_data ) && check_admin_referer( 'mainwp-admin-nonce' ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Missing static::render_import_sites_modal( 'admin.php?page=managesites&do=bulknew', $title_page ); } else { ?>
', ' ' ); // NOSONAR - noopener - open safe. ?>

apply_filters( 'mainwp-getmetaboxes', array() ); // @deprecated Use 'mainwp_getmetaboxes' instead. $extMetaBoxs = apply_filters( 'mainwp_getmetaboxes', $extMetaBoxs, $dashboard_siteid ); // hooks load widgets for individual overview page and for manage sites's subpage. foreach ( $extMetaBoxs as $box ) { // to compatible. if ( isset( $box['custom'] ) && $box['custom'] && isset( $box['plugin'] ) ) { continue; } if ( isset( $box['plugin'] ) ) { $name = basename( $box['plugin'], '.php' ); static::$enable_widgets[ $name ] = true; } elseif ( isset( $box['widget_id'] ) ) { static::$enable_widgets[ $box['widget_id'] ] = 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, $dashboard_siteid ); 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' ), static::$page, array( 1, 1, 12, 19 ) ); } // Load the Uptime monitoring widget. if ( MainWP_Uptime_Monitoring_Edit::is_enable_global_monitoring() && \mainwp_current_user_can( 'dashboard', 'manage_uptime_monitoring' ) && static::$enable_widgets['uptime_monitoring_response_time'] ) { MainWP_UI::add_widget_box( 'uptime_monitoring_response_time', array( MainWP_Uptime_Monitoring_Site_Widget::instance(), 'render_response_times_widget' ), static::$page, array( -1, -1, 12, 43 ) ); } // Load the Themes widget. if ( static::$enable_widgets['themes'] ) { MainWP_UI::add_widget_box( 'themes', array( MainWP_Widget_Themes::get_class_name(), 'render' ), static::$page, array( -1, -1, 6, 30 ) ); } // Load the Pluins widget. if ( static::$enable_widgets['plugins'] ) { MainWP_UI::add_widget_box( 'plugins', array( MainWP_Widget_Plugins::get_class_name(), 'render' ), static::$page, array( -1, -1, 6, 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' ), static::$page, array( -1, -1, 6, 30 ) ); } // Load the Client widget. if ( static::$enable_widgets['client_info'] && \mainwp_current_user_can( 'dashboard', 'manage_clients' ) ) { MainWP_UI::add_widget_box( 'client_info', array( MainWP_Client_Info::get_class_name(), 'render' ), static::$page, array( -1, -1, 3, 30 ) ); } // Load the Notes widget. if ( static::$enable_widgets['notes'] ) { MainWP_UI::add_widget_box( 'notes', array( MainWP_Notes::get_class_name(), 'render' ), static::$page, array( -1, -1, 3, 30 ) ); } // Load the Site Info widget. MainWP_UI::add_widget_box( 'child_site_info', array( MainWP_Site_Info::get_class_name(), 'render' ), static::$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' ), static::$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' ), static::$page, array( -1, -1, 4, 30 ) ); } $i = 0; 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 ) { $layout = array( -1, -1, 6, 30 ); if ( isset( $metaBox['id'] ) && ( 'google-widget' === $metaBox['id'] || 'matomo' === $metaBox['id'] ) ) { $layout = array( -1, -1, 6, 30 ); } $layout = ! empty( $metaBox['layout'] ) && is_array( $metaBox['layout'] ) ? $metaBox['layout'] : $layout; MainWP_UI::add_widget_box( $id, $metaBox['callback'], static::$page, $layout ); } } } /** * Method render_updates() * * Render updates. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Update_View::render_updates() * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function render_updates( $website ) { MainWP_System_Utility::set_current_wpid( $website->id ); static::render_header( 'ManageSitesUpdates' ); MainWP_Manage_Sites_Update_View::render_updates( $website ); static::render_footer( 'ManageSitesUpdates' ); } /** * Method render_email_settings() * * Render email settings. * * @param mixed $website Child Site. * @param bool $updated updated settings. * @param bool $updated_templ updated template file. * @param bool $editing_temp editing template file. * * @uses \MainWP\Dashboard\MainWP_DB::get_website_by_id() * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_site_edit_email_settings() * @uses \MainWP\Dashboard\MainWP_Notification_Settings::get_notification_types() * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function render_email_settings( $website, $updated = false, $updated_templ = false, $editing_temp = false ) { $website = MainWP_DB::instance()->get_website_by_id( $website->id, false, array( 'settings_notification_emails' ) ); // reload. MainWP_System_Utility::set_current_wpid( $website->id ); // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $edit = false; $email_type = isset( $_GET['edit-email'] ) ? sanitize_text_field( wp_unslash( $_GET['edit-email'] ) ) : false; if ( ! empty( $email_type ) ) { $notification_emails = MainWP_Notification_Settings::get_notification_types(); if ( isset( $notification_emails[ $email_type ] ) ) { $edit = true; } } // phpcs:enable if ( $editing_temp ) { static::render_header( 'ManageSitesEdit' ); } if ( $edit ) { MainWP_Manage_Sites_View::render_site_edit_email_settings( $website, $email_type, $updated_templ ); } else { MainWP_Manage_Sites_View::render_edit_site_email_settings( $website, $updated ); } if ( $editing_temp ) { static::render_footer( 'ManageSitesEdit' ); } } /** * Method render_dashboard() * * Render Manage Sites Dashboard. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_dashboard() * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function render_dashboard( $website ) { MainWP_System_Utility::set_current_wpid( $website->id ); static::render_header( 'ManageSitesDashboard' ); MainWP_Manage_Sites_View::render_dashboard( $website ); static::render_footer( 'ManageSitesDashboard' ); } /** * Method render_backup_site() * * Render Manage Sites Backups. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Backup_View::render_backup_site() * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function render_backup_site( $website ) { MainWP_System_Utility::set_current_wpid( $website->id ); static::render_header( 'ManageSitesBackups' ); MainWP_Manage_Sites_Backup_View::render_backup_site( $website ); static::render_footer( 'ManageSitesBackups' ); } /** * Method render_scan_site() * * Render Site Hardening. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_scan_site() * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function render_scan_site( $website ) { MainWP_System_Utility::set_current_wpid( $website->id ); static::render_header( 'SecurityScan' ); MainWP_Manage_Sites_View::render_scan_site( $website ); static::render_footer( 'SecurityScan' ); } /** * Method render_monitor_site() * * @param mixed $website Child Site. */ public static function render_monitor_site( $website ) { MainWP_System_Utility::set_current_wpid( $website->id ); static::render_header( 'ManageSitesMonitor' ); MainWP_Uptime_Monitoring_Edit::instance()->render_monitor_settings( $website->id, true ); static::render_footer( 'ManageSitesMonitor' ); } /** * Method show_backups() * * Render Backups. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Backup_Handler::is_sql_file() * @uses \MainWP\Dashboard\MainWP_Backup_Handler::is_archive() * @uses \MainWP\Dashboard\MainWP_Manage_Sites_Backup_View::show_backups() * @uses \MainWP\Dashboard\MainWP_System_Utility::get_mainwp_specific_dir() */ public static function show_backups( &$website ) { //phpcs:ignore -- NOSONAR - complex. $dir = MainWP_System_Utility::get_mainwp_specific_dir( $website->id ); MainWP_System_Utility::touch( $dir . 'index.php' ); $dbBackups = array(); $fullBackups = array(); if ( file_exists( $dir ) ) { $dh = opendir( $dir ); if ( $dh ) { while ( false !== ( $file = readdir( $dh ) ) ) { if ( '.' !== $file && '..' !== $file ) { $theFile = $dir . $file; if ( MainWP_Backup_Handler::is_sql_file( $file ) ) { $dbBackups[ filemtime( $theFile ) . $file ] = $theFile; } elseif ( MainWP_Backup_Handler::is_archive( $file ) ) { $fullBackups[ filemtime( $theFile ) . $file ] = $theFile; } } } closedir( $dh ); } } krsort( $dbBackups ); krsort( $fullBackups ); MainWP_Manage_Sites_Backup_View::show_backups( $website, $fullBackups, $dbBackups ); } /** * Method render_all_sites() * * Render manage sites content. * * @uses \MainWP\Dashboard\MainWP_UI::render_modal_edit_notes() */ public static function render_all_sites() { static::load_sites_table();// to fix loading. $optimize_for_sites_table = apply_filters( 'mainwp_manage_sites_optimize_loading', 1, 'manage-sites' ); // use ajax to load sites table . if ( ! $optimize_for_sites_table ) { static::$sitesTable->prepare_items( false ); } static::render_header( '' ); ?>
display( $optimize_for_sites_table ); static::$sitesTable->clear_items(); ?>
get_website_by_id( $websiteid ); if ( MainWP_System_Utility::can_edit_website( $backupwebsite ) ) { static::render_backup_site( $backupwebsite ); return; } } if ( isset( $_GET['scanid'] ) ) { $websiteid = intval( $_GET['scanid'] ); $scanwebsite = MainWP_DB::instance()->get_website_by_id( $websiteid ); if ( MainWP_System_Utility::can_edit_website( $scanwebsite ) ) { static::render_scan_site( $scanwebsite ); return; } } if ( isset( $_GET['dashboard'] ) ) { $websiteid = intval( $_GET['dashboard'] ); $dashboardWebsite = MainWP_DB::instance()->get_website_by_id( $websiteid ); if ( MainWP_System_Utility::can_edit_website( $dashboardWebsite ) ) { static::render_dashboard( $dashboardWebsite ); return; } } if ( isset( $_GET['updateid'] ) ) { $websiteid = intval( $_GET['updateid'] ); $updatesWebsite = MainWP_DB::instance()->get_website_by_id( $websiteid ); if ( MainWP_System_Utility::can_edit_website( $updatesWebsite ) ) { static::render_updates( $updatesWebsite ); return; } } if ( ( isset( $_GET['action'] ) && 'add_submonitor' === $_GET['action'] ) || ! empty( $_GET['sub_monitor_id'] ) ) { $websiteid = intval( $_GET['monitor_wpid'] ); $website = MainWP_DB::instance()->get_website_by_id( $websiteid ); // Show modal. static::render_monitor_site( $website ); return; } if ( ! empty( $_GET['emailsettingsid'] ) ) { $websiteid = intval( $_GET['emailsettingsid'] ); $website = MainWP_DB::instance()->get_website_by_id( $websiteid, false, array( 'settings_notification_emails' ) ); $updated = false; $updated_templ = false; if ( MainWP_System_Utility::can_edit_website( $website ) ) { $updated = static::update_site_emails_settings_handle( $website ); $updated_templ = MainWP_Notification_Template::instance()->handle_template_file_action(); } if ( ! empty( $_GET['edit-email'] ) ) { // Edit email settings show in separated page in site settings. static::render_email_settings( $website, $updated, $updated_templ, true ); return; } } if ( isset( $_GET['id'] ) ) { $websiteid = intval( $_GET['id'] ); $website = MainWP_DB::instance()->get_website_by_id( $websiteid ); if ( MainWP_System_Utility::can_edit_website( $website ) ) { // Edit website. $updated = static::update_site_handle( $website ); static::render_edit_site( $websiteid, $updated ); return; } } // phpcs:enable $sitesViewMode = MainWP_Utility::get_siteview_mode(); if ( 'grid' === $sitesViewMode ) { MainWP_Manage_Screenshots::render_all_sites(); } else { static::render_all_sites(); } MainWP_Logger::instance()->log_execution_time( 'render_manage_sites()' ); } /** * Method update_site_emails_settings_handle() * * Handle site email settings update. * * @param mixed $website Child Site object. * * @return bool $updated Updated. * * @uses \MainWP\Dashboard\MainWP_DB::get_website_option() * @uses \MainWP\Dashboard\MainWP_Notification_Settings::get_notification_types() * @uses \MainWP\Dashboard\MainWP_Utility::valid_input_emails() */ private static function update_site_emails_settings_handle( $website ) { // phpcs:ignore -- NOSONAR - complex. // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $updated = false; if ( isset( $_POST['submit'] ) && isset( $_GET['emailsettingsid'] ) && isset( $_POST['wp_nonce'] ) && wp_verify_nonce( sanitize_key( $_POST['wp_nonce'] ), 'UpdateWebsiteEmailSettings' . sanitize_text_field( wp_unslash( $_GET['emailsettingsid'] ) ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification,ized $settings_emails = MainWP_DB::instance()->get_website_option( $website, 'settings_notification_emails', '' ); $settings_emails = ! empty( $settings_emails ) ? json_decode( $settings_emails, true ) : $settings_emails; if ( ! is_array( $settings_emails ) ) { $settings_emails = array(); } $notification_emails = MainWP_Notification_Settings::get_notification_types(); $type = isset( $_POST['mainwp_managesites_setting_emails_type'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_setting_emails_type'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification,ized $edit_settingEmails = isset( $_POST['mainwp_managesites_edit_settingEmails'][ $type ] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['mainwp_managesites_edit_settingEmails'][ $type ] ) ) : array(); // phpcs:ignore WordPress.Security.NonceVerification,ized if ( isset( $notification_emails[ $type ] ) && ! empty( $edit_settingEmails ) ) { $update_settings = $edit_settingEmails; $update_settings['recipients'] = MainWP_Utility::valid_input_emails( $edit_settingEmails['recipients'] ); $update_settings['disable'] = isset( $edit_settingEmails['disable'] ) ? 0 : 1; // isset 'on' means enable (0), not isset mean disabled (1). /** * Action: mainwp_before_save_email_settings * * Fires before save email settings. * * @since 4.1 */ do_action( 'mainwp_before_save_email_settings', $type, $update_settings, $website ); $settings_emails[ $type ] = $update_settings; MainWP_DB::instance()->update_website_option( $website, 'settings_notification_emails', wp_json_encode( $settings_emails ) ); $updated = true; /** * Action: mainwp_after_save_email_settings * * Fires after save email settings. * * @since 4.1 */ do_action( 'mainwp_after_save_email_settings', $settings_emails ); } } // phpcs:enable return $updated; } /** * Method update_site_handle() * * Handle site update. * * @param mixed $website Child Site object. * * @return bool $updated Updated. * * @uses \MainWP\Dashboard\MainWP_DB::update_website() * @uses \MainWP\Dashboard\MainWP_DB::update_website_values() * @uses \MainWP\Dashboard\MainWP_DB::update_website_option() * @uses \MainWP\Dashboard\MainWP_Utility::remove_http_prefix() * @uses \MainWP\Dashboard\MainWP_Utility::valid_input_emails() */ private static function update_site_handle( $website ) { // phpcs:ignore -- NOSONAR -Current complexity is the only way to achieve desired results, pull request solutions appreciated. /** * Current user global. * * @global string */ global $current_user; // phpcs:disable WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $updated = false; if ( isset( $_POST['submit'] ) && isset( $_POST['wp_nonce'] ) && isset( $_REQUEST['id'] ) && isset( $_POST['mainwp_managesites_edit_siteadmin'] ) && ( '' !== $_POST['mainwp_managesites_edit_siteadmin'] ) && wp_verify_nonce( sanitize_key( $_POST['wp_nonce'] ), 'UpdateWebsite' . sanitize_key( $_REQUEST['id'] ) ) && \mainwp_current_user_can( 'dashboard', 'edit_sites' ) ) { // update site. $groupids = array(); $groupnames = array(); if ( isset( $_POST['mainwp_managesites_edit_addgroups'] ) && ! empty( $_POST['mainwp_managesites_edit_addgroups'] ) ) { $groupids = explode( ',', sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_addgroups'] ) ) ); } // to fix update staging site. if ( $website->is_staging ) { $stag_gid = get_option( 'mainwp_stagingsites_group_id' ); if ( $stag_gid && ! in_array( $stag_gid, $groupids, true ) ) { $groupids[] = $stag_gid; } } $newPluginDir = ''; $maximumFileDescriptorsOverride = isset( $_POST['mainwp_options_maximumFileDescriptorsOverride'] ); $maximumFileDescriptorsAuto = isset( $_POST['mainwp_maximumFileDescriptorsAuto'] ); $maximumFileDescriptors = isset( $_POST['mainwp_options_maximumFileDescriptors'] ) ? intval( $_POST['mainwp_options_maximumFileDescriptors'] ) : 150; $archiveFormat = isset( $_POST['mainwp_archiveFormat'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_archiveFormat'] ) ) : 'global'; $http_user = isset( $_POST['mainwp_managesites_edit_http_user'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_http_user'] ) ) : ''; $http_pass = isset( $_POST['mainwp_managesites_edit_http_pass'] ) ? wp_unslash( $_POST['mainwp_managesites_edit_http_pass'] ) : ''; $url = ( isset( $_POST['mainwp_managesites_edit_wpurl_with_www'] ) && ( 'www' === sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_wpurl_with_www'] ) ) ) ? 'www.' : '' ) . MainWP_Utility::remove_http_www_prefix( $website->url, true ); $url = ( isset( $_POST['mainwp_managesites_edit_siteurl_protocol'] ) && ( 'https' === sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_siteurl_protocol'] ) ) ) ? 'https' : 'http' ) . '://' . MainWP_Utility::remove_http_prefix( $url, true ); $backup_method = isset( $_POST['mainwp_primaryBackup'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_primaryBackup'] ) ) : 'global'; $disableHealthChecking = isset( $_POST['mainwp_managesites_edit_disableSiteHealthMonitoring'] ) ? 0 : 1; $healthThreshold = isset( $_POST['mainwp_managesites_edit_healthThreshold'] ) ? intval( $_POST['mainwp_managesites_edit_healthThreshold'] ) : 0; // 0 use global settings. $site_name = isset( $_POST['mainwp_managesites_edit_sitename'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_sitename'] ) ) : ''; $site_admin = isset( $_POST['mainwp_managesites_edit_siteadmin'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_siteadmin'] ) ) : ''; $verifycertificate = isset( $_POST['mainwp_managesites_edit_verifycertificate'] ) ? intval( $_POST['mainwp_managesites_edit_verifycertificate'] ) : 2; $uniqueId = isset( $_POST['mainwp_managesites_edit_uniqueId'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_uniqueId'] ) ) : ''; $ssl_version = isset( $_POST['mainwp_managesites_edit_ssl_version'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_ssl_version'] ) ) : ''; MainWP_DB::instance()->update_website( $website->id, $url, $current_user->ID, $site_name, $site_admin, $groupids, $groupnames, $newPluginDir, $maximumFileDescriptorsOverride, $maximumFileDescriptorsAuto, $maximumFileDescriptors, $verifycertificate, $archiveFormat, $uniqueId, $http_user, $http_pass, $ssl_version, $disableHealthChecking, $healthThreshold, $backup_method ); if ( \mainwp_current_user_can( 'dashboard', 'manage_clients' ) ) { $new_client_id = isset( $_POST['mainwp_managesites_edit_client_id'] ) ? intval( $_POST['mainwp_managesites_edit_client_id'] ) : 0; if ( $website->client_id !== $new_client_id ) { $update = array( 'client_id' => $new_client_id, ); MainWP_DB::instance()->update_website_values( $website->id, $update ); } } /** * Update site * * Fires after updating a website settings. * * @param int $website->id Child site ID. * * @since 3.4 */ do_action( 'mainwp_update_site', $website->id ); $backup_before_upgrade = isset( $_POST['mainwp_backup_before_upgrade'] ) ? intval( $_POST['mainwp_backup_before_upgrade'] ) : 2; if ( 2 < $backup_before_upgrade ) { $backup_before_upgrade = 2; } $forceuseipv4 = isset( $_POST['mainwp_managesites_edit_forceuseipv4'] ) ? intval( $_POST['mainwp_managesites_edit_forceuseipv4'] ) : 0; if ( 2 < $forceuseipv4 ) { $forceuseipv4 = 0; } $old_suspended = (int) $website->suspended; $suspended = isset( $_POST['mainwp_suspended_site'] ) ? 1 : 0; $newValues = array( 'automatic_update' => ( ! isset( $_POST['mainwp_automaticDailyUpdate'] ) ? 0 : 1 ), 'backup_before_upgrade' => $backup_before_upgrade, 'force_use_ipv4' => $forceuseipv4, 'loadFilesBeforeZip' => isset( $_POST['mainwp_options_loadFilesBeforeZip'] ) ? 1 : 0, 'suspended' => $suspended, ); if ( \mainwp_current_user_can( 'dashboard', 'ignore_unignore_updates' ) ) { $newValues['is_ignoreCoreUpdates'] = ! empty( $_POST['mainwp_is_ignoreCoreUpdates'] ) ? 1 : 0; $newValues['is_ignorePluginUpdates'] = ! empty( $_POST['mainwp_is_ignorePluginUpdates'] ) ? 1 : 0; $newValues['is_ignoreThemeUpdates'] = ! empty( $_POST['mainwp_is_ignoreThemeUpdates'] ) ? 1 : 0; } MainWP_DB::instance()->update_website_values( $website->id, $newValues ); $monitoring_emails = isset( $_POST['mainwp_managesites_edit_monitoringNotificationEmails'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_monitoringNotificationEmails'] ) ) : ''; $monitoring_emails = MainWP_Utility::valid_input_emails( $monitoring_emails ); MainWP_DB::instance()->update_website_option( $website, 'monitoring_notification_emails', trim( $monitoring_emails ) ); $added = isset( $_POST['mainwp_managesites_edit_dt_added'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_dt_added'] ) ) : ''; if ( ! empty( $added ) ) { $added = strtotime( $added ); } MainWP_DB::instance()->update_website_option( $website, 'added_timestamp', $added ); $new_alg = isset( $_POST['mainwp_managesites_edit_openssl_alg'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_openssl_alg'] ) ) : ''; MainWP_DB::instance()->update_website_option( $website, 'signature_algo', $new_alg ); $use_lib = isset( $_POST['mainwp_managesites_edit_verify_connection_method'] ) ? intval( $_POST['mainwp_managesites_edit_verify_connection_method'] ) : 0; MainWP_DB::instance()->update_website_option( $website, 'verify_method', $use_lib ); $uploaded_site_icon = isset( $_POST['mainwp_managesites_edit_site_uploaded_icon_hidden'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_site_uploaded_icon_hidden'] ) ) : ''; $selected_site_icon = isset( $_POST['mainwp_managesites_edit_site_selected_icon_hidden'] ) ? sanitize_text_field( wp_unslash( $_POST['mainwp_managesites_edit_site_selected_icon_hidden'] ) ) : ''; $cust_icon_color = isset( $_POST['mainwp_managesites_edit_site_color'] ) ? sanitize_hex_color( wp_unslash( $_POST['mainwp_managesites_edit_site_color'] ) ) : ''; $icon_info = 'uploaded:' . $uploaded_site_icon . ';selected:' . $selected_site_icon . ';color:' . $cust_icon_color; MainWP_DB::instance()->update_website_option( $website, 'cust_site_icon_info', $icon_info ); if ( ! empty( $website->cust_site_icon_info ) ) { $current_uploaded = static::get_instance()->get_cust_site_icon( $website->cust_site_icon_info, 'uploaded' ); if ( ! empty( $current_uploaded ) && $current_uploaded !== $uploaded_site_icon ) { MainWP_Utility::instance()->delete_uploaded_icon_file( 'site-icons', $current_uploaded ); // delete old icon. } } /** * Update site * * Fires after updating a website settings. * * @param int $website Child site Ọbject. * * @since 3.4 */ do_action( 'mainwp_site_updated', $website, $_POST ); if ( $old_suspended !== $suspended ) { // changed suspended. /** * Site suspended changed. * * Fires after suspended a website changed. * * @param int $website->id Child site ID. * * @since 4.5.1.1 */ do_action( 'mainwp_site_suspended', $website, $suspended ); } $updated = true; } // phpcs:enable return $updated; } /** * Method render_edit_site() * * Render edit site. * * @param mixed $websiteid Child Site ID. * @param mixed $updated Updated. * * @uses \MainWP\Dashboard\MainWP_Manage_Sites_View::render_edit_site() * @uses \MainWP\Dashboard\MainWP_System_Utility::set_current_wpid() */ public static function render_edit_site( $websiteid, $updated ) { if ( $websiteid ) { MainWP_System_Utility::set_current_wpid( $websiteid ); } static::render_header( 'ManageSitesEdit' ); MainWP_Manage_Sites_View::render_edit_site( $websiteid, $updated ); static::render_footer( 'ManageSitesEdit' ); } /** * Method on_edit_site() * * Render on edit. * * @param object $website The website object. */ public static function on_edit_site( $website ) { if ( isset( $_POST['submit'] ) && isset( $_REQUEST['id'] ) && isset( $_POST['wp_nonce'] ) && isset( $_POST['mainwp_managesites_edit_siteadmin'] ) && ( '' !== $_POST['mainwp_managesites_edit_siteadmin'] ) && wp_verify_nonce( sanitize_key( $_POST['wp_nonce'] ), 'UpdateWebsite' . sanitize_key( $_REQUEST['id'] ) ) && isset( $_POST['mainwp_managesites_edit_uniqueId'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification,ized ?>

Set up the MainWP Plugin
Install MainWP Child
Add a Site to your Dashboard
Import Sites

Set up the MainWP Plugin
Install MainWP Child
Add a Site to your Dashboard
Import Sites

Manage Child Sites
Access Child Site WP Admin
Synchronize a Child Site
Edit a Child Site
Reconnect a Child Site
Delete a Child Site
Security Issues
Manage Child Site Tags
Manage Child Site Notes
* get_general_option() * @uses MainWP_DB::instance()->update_general_option() */ public static function mainwp_managesites_form_import_sites() { $temp_sites = MainWP_DB::instance()->get_general_option( 'temp_import_sites', 'array' ); // Reset key of temp_sites. if ( ! empty( $temp_sites ) && is_array( $temp_sites ) ) { $temp_sites = array_values( $temp_sites ); MainWP_DB::instance()->update_general_option( 'temp_import_sites', $temp_sites, 'array' ); } // Get total rows import site default 5. $total_sites = max( 5, count( $temp_sites ) ); $is_page_setup = isset( $_GET['page'] ) && 'mainwp-setup' === $_GET['page'] ? true : false; // phpcs:ignore WordPress.Security.NonceVerification,WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $display_none = $is_page_setup ? 'display:none' : ''; ?>
array( 'site_url' => array( 'label' => 'Site URL', 'class' => $default_class . '-site-url', 'id' => $default_class . '-site-url', ), 'site_name' => array( 'label' => 'Site Name', 'class' => $default_class . '-site-name', 'id' => $default_class . '-site-name', ), 'admin_name' => array( 'label' => 'Admin Name', 'class' => $default_class . '-admin-name', 'id' => $default_class . '-admin-name', ), 'admin_password' => array( 'label' => 'Admin Password', 'class' => $default_class . '-admin-password', 'id' => $default_class . '-admin-password', 'type' => 'password', ), ), 'optional_fields' => array( 'tag' => array( 'label' => 'Tag', 'class' => $default_class . '-tag', 'id' => $default_class . '-tag-', ), 'security_id' => array( 'label' => 'Security ID', 'class' => $default_class . '-security-id', 'id' => $default_class . '-security-id', ), 'http_username' => array( 'label' => 'HTTP Username', 'class' => $default_class . '-http-username', 'id' => $default_class . '-http-usernam', ), 'http_password' => array( 'label' => 'HTTP Password', 'class' => $default_class . '-http-password', 'id' => $default_class . '-http-password', ), 'verify_certificate' => array( 'label' => 'Verify Certificate', 'input_type' => 'number', 'default' => 1, 'class' => 'mini ' . $default_class . '-verify-certificate', 'id' => $default_class . '-verify-certificate', ), 'ssl_version' => array( 'label' => 'SSL Version', 'default' => 'auto', 'class' => 'mini ' . $default_class . '-ssl-version', 'id' => $default_class . '-ssl-version', ), ), ); } /** * Method mainwp_managesites_form_import_sites_render_input() * Html input rendering. * * @param int $index row index. * @param string $key_optional field key. * @param mixed $field_optional field value. * @param array $field field data. * @param array $site site row data. */ public static function mainwp_managesites_form_import_sites_render_input( $index, $key_optional, $field_optional, $field, $site ) { $input_optional = isset( $field_optional['default'] ) ? $field_optional['default'] : ''; $value = static::mainwp_managesites_form_import_sites_get_value( $site, $key_optional, $input_optional ); $index_rand = wp_rand( 0, 9999 ); ?>
id="" class=""/>
$field ) : if ( 'admin_password' === $key ) { $row_class = $is_page_setup ? 'three' : 'two'; } $field_value = self::mainwp_managesites_form_import_sites_get_value( $site, $key, '' ); $field_id = $field['id'] . '-' . $index; ?>
$field_optional ) : ?>
$field_optional ) : ?>