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();
}
?>
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' => '
',
'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 = '
';
}
// 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 = '';
}
$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( '' );
?>
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
?>
*
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 ) : ?>