diff --git a/admin/pages.php b/admin/pages.php index 56ad00e..8d1c49b 100644 --- a/admin/pages.php +++ b/admin/pages.php @@ -47,6 +47,12 @@ function dm_render_admin_page() { '

'; } + if ( isset( $_GET['checking'] ) && $_GET['checking'] && $current_tab === 'health' ) { + echo '

' . + __( 'Domain health check started. The check is running in the background.', 'wp-domain-mapping' ) . + '

'; + } + if ( isset( $_GET['settings-updated'] ) && $_GET['settings-updated'] && $current_tab === 'health' ) { echo '

' . __( 'Settings saved.', 'wp-domain-mapping' ) . @@ -74,7 +80,7 @@ function dm_render_admin_page() { '

'; } ?> - +
$tab_label ) : ?> @@ -104,7 +110,7 @@ function dm_render_admin_page() {
- + + +

+

+ + + +
+

+
@@ -722,6 +782,14 @@ function dm_render_health_content() {

+ + + + + +

+ +

diff --git a/assets/css/admin.css b/assets/css/admin.css index cf62040..f61e5df 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -346,8 +346,13 @@ .search-form-field { min-width: 100%; + width: auto; } + .regular-text { + max-width: 100%; + width: auto; + } .form-table th { width: 100%; display: block; diff --git a/includes/class-tools.php b/includes/class-tools.php index 449bed5..49b7106 100644 --- a/includes/class-tools.php +++ b/includes/class-tools.php @@ -73,14 +73,22 @@ class WP_Domain_Mapping_Tools { add_filter( 'manage_sites-network_columns', array( $this, 'add_site_id_column' ), 20 ); add_action( 'manage_sites_custom_column', array( $this, 'display_site_id_column' ), 10, 2 ); add_action( 'admin_print_styles', array( $this, 'site_id_column_style' ) ); + + // Add SSL and Reachable columns + add_filter( 'manage_sites-network_columns', array( $this, 'add_ssl_reachable_columns' ), 25 ); + add_filter( 'wpmu_blogs_columns', array( $this, 'add_ssl_reachable_columns' ), 25 ); + add_action( 'manage_blogs_custom_column', array( $this, 'display_ssl_reachable_column' ), 15, 3 ); + add_action( 'manage_sites_custom_column', array( $this, 'display_ssl_reachable_column' ), 15, 3 ); } // AJAX handlers add_action( 'wp_ajax_dm_check_domain_health', array( $this, 'ajax_check_domain_health' ) ); + add_action( 'wp_ajax_dm_check_domain_health_batch', array( $this, 'ajax_check_domain_health_batch' ) ); add_action( 'wp_ajax_dm_import_csv', array( $this, 'ajax_import_csv' ) ); // Scheduled tasks add_action( 'dm_domain_health_check', array( $this, 'scheduled_health_check' ) ); + add_action( 'dm_domain_health_check_batch', array( $this, 'process_health_check_batch' ) ); // Admin init actions add_action( 'admin_init', array( $this, 'handle_export' ) ); @@ -152,6 +160,99 @@ class WP_Domain_Mapping_Tools { } } + /** + * Add SSL and Reachable columns + */ + public function add_ssl_reachable_columns( $columns ) { + $new_columns = array(); + $ssl_reachable_added = false; + + foreach ( $columns as $key => $value ) { + // First add the current column + $new_columns[$key] = $value; + + // Insert SSL and Reachable columns after the Site ID column + if ( $key === 'dm_site_id' && ! $ssl_reachable_added ) { + $new_columns['ssl_status'] = __( 'SSL', 'wp-domain-mapping' ); + $new_columns['reachable_status'] = __( 'Reachable', 'wp-domain-mapping' ); + $ssl_reachable_added = true; + } + } + + // If Site ID column wasn't found but columns need to be added + if ( ! $ssl_reachable_added ) { + // Insert after checkbox (cb) column, before everything else + $final_columns = array(); + foreach ( $new_columns as $key => $value ) { + $final_columns[$key] = $value; + if ( $key === 'cb' && ! $ssl_reachable_added ) { + $final_columns['ssl_status'] = __( 'SSL', 'wp-domain-mapping' ); + $final_columns['reachable_status'] = __( 'Reachable', 'wp-domain-mapping' ); + $ssl_reachable_added = true; + } + } + return $final_columns; + } + + return $new_columns; + } + + /** + * Display SSL and Reachable column content + */ + public function display_ssl_reachable_column( $column, $blog_id ) { + global $wpdb; + + if ( $column == 'ssl_status' ) { + // Check if site uses HTTPS + $site_url = get_blog_option( $blog_id, 'siteurl', '' ); + if ( strpos( $site_url, 'https://' ) === 0 ) { + echo ''; + } else { + echo ''; + } + } + + if ( $column == 'reachable_status' ) { + // Check if this is the main site + if ( is_main_site( $blog_id ) ) { + // Main site is always reachable if we can access the admin + echo ''; + return; + } + + // Get primary domain for this blog + $domain = $wpdb->get_var( $wpdb->prepare( + "SELECT domain FROM {$this->tables['domains']} WHERE blog_id = %d AND active = 1 LIMIT 1", + $blog_id + )); + + if ( ! $domain ) { + // No mapped domain, check original domain + $blog_details = get_blog_details( $blog_id ); + if ( $blog_details ) { + $domain = $blog_details->domain; + } + } + + if ( $domain ) { + $health_result = dm_get_health_result( $domain ); + + if ( $health_result && isset( $health_result['accessible'] ) ) { + if ( $health_result['accessible'] ) { + echo ''; + } else { + echo ''; + } + } else { + echo ''; + } + } else { + echo ''; + } + } + } + /** * Add custom styles for site ID column */ @@ -160,6 +261,8 @@ class WP_Domain_Mapping_Tools { ?>