render_websites( $client_id ); } /** * Render client overview Info. * * @param object $client_id Client ID. */ public function render_websites( $client_id ) { $client_info = MainWP_DB_Client::instance()->get_wp_client_by( 'client_id', $client_id, ARRAY_A ); ?>

prepare_items( $client_id ); ?> print_column_headers( true ); ?>display_rows_or_placeholder(); ?>
'25', 10 => '10', 50 => '50', 100 => '100', 300 => '300', ); $pages_length = $pages_length + array( $sites_per_page => $sites_per_page ); ksort( $pages_length ); if ( isset( $pages_length[-1] ) ) { unset( $pages_length[-1] ); } $pagelength_val = implode( ',', array_keys( $pages_length ) ); $pagelength_title = implode( ',', array_values( $pages_length ) ); $table_features = array( 'searching' => 'true', 'paging' => 'true', 'info' => 'false', 'colReorder' => '{ columns:":not(.manage-status-column):not(.manage-site_actions-column)"} ', 'stateSave' => 'true', 'stateDuration' => '0', 'order' => '[]', 'scrollX' => 'true', 'responsive' => 'true', ); ?> userExtension ) { $this->userExtension = MainWP_DB_Common::instance()->get_user_extension(); } $total_params = array( 'count_only' => true, 'selectgroups' => true, 'orderby' => 'wp.url', 'offset' => 0, 'rowcount' => 9999, 'client_id' => array( $client_id ), ); $params = array( 'selectgroups' => true, 'orderby' => 'wp.url', 'offset' => 0, 'rowcount' => 9999, 'client_id' => array( $client_id ), ); $totalRecords = 0; $websites = false; if ( $client_id ) { $total_websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_search_websites_for_current_user( $total_params ) ); $totalRecords = ( $total_websites ? MainWP_DB::num_rows( $total_websites ) : 0 ); $websites = MainWP_DB::instance()->query( MainWP_DB::instance()->get_sql_search_websites_for_current_user( $params ) ); } $this->items = $websites; $this->total_items = $totalRecords; } /** * Echo the column headers. */ public function print_column_headers() { list( $columns ) = $this->get_column_info(); $sortable = array( 'site' => array( 'site', false ), 'update' => array( 'update', false ), 'client_name' => array( 'client_name', false ), ); $def_columns = $columns; $def_columns['site_actions'] = ''; foreach ( $columns as $column_overview_key => $column_display_name ) { $class = array( 'manage-' . $column_overview_key . '-column' ); $attr = ''; if ( ! isset( $def_columns[ $column_overview_key ] ) ) { $class[] = 'extra-column'; } if ( ! isset( $sortable[ $column_overview_key ] ) ) { $class[] = 'no-sort'; } $tag = 'th'; $id = "id='$column_overview_key'"; if ( ! empty( $class ) ) { $class = "class='" . join( ' ', $class ) . "'"; } echo "<$tag $id $class $attr>$column_display_name"; // phpcs:ignore WordPress.Security.EscapeOutput } } /** * Return empty table place holders. */ public function display_rows_or_placeholder() { if ( $this->has_items() ) { $this->display_rows(); } } /** * Fetch single row item. * * @return mixed Single Row Item. * * @uses \MainWP\Dashboard\MainWP_DB::is_result() * @uses \MainWP\Dashboard\MainWP_DB::fetch_array() */ public function display_rows() { if ( MainWP_DB::is_result( $this->items ) ) { while ( $this->items && ( $item = MainWP_DB::fetch_array( $this->items ) ) ) { $this->single_row( $item ); } } } /** * Single Row. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Utility::sanitize_file_name() */ public function single_row( $website ) { $classes = ''; $hasSyncErrors = ( '' !== $website['sync_errors'] ); $classes = ' class="child-site mainwp-child-site-' . intval( $website['id'] ) . ' ' . ( $hasSyncErrors ? 'error' : '' ) . ' ' . $classes . '"'; echo ''; // phpcs:ignore WordPress.Security.EscapeOutput $this->single_row_columns( $website ); echo ''; } /** * Get default columns. * * @return array Array of default column names. */ public function get_default_columns() { return array( 'status' => '', 'site' => esc_html__( 'Site', 'mainwp' ), 'update' => esc_html__( 'Updates', 'mainwp' ), ); } /** * Method get_columns() * * Combine all columns. * * @return array $columns Array of column names. */ public function get_columns() { $columns = $this->get_default_columns(); $columns['site_actions'] = ''; return $columns; } /** * Get column info. */ protected function get_column_info() { if ( isset( $this->column_headers ) && is_array( $this->column_headers ) ) { $column_headers = array( array(), array(), array() ); foreach ( $this->column_headers as $key => $value ) { $column_headers[ $key ] = $value; } return $column_headers; } $columns = $this->get_columns(); $this->column_headers = array( $columns ); return $this->column_headers; } /** * Get column defines. * * @return array $defines */ public function get_columns_defines() { $defines = array(); $defines[] = array( 'targets' => 'no-sort', 'orderable' => false, ); $defines[] = array( 'targets' => array( 'manage-status-column' ), 'className' => 'collapsing center aligned', ); $defines[] = array( 'targets' => 'manage-site-column', 'className' => 'column-site-bulk mainwp-site-cell', ); $defines[] = array( 'targets' => array( 'manage-update-column' ), 'className' => 'collapsing center aligned', ); $defines[] = array( 'targets' => array( 'manage-site_actions-column' ), 'className' => 'collapsing right aligned', ); return $defines; } /** * Columns for a single row. * * @param mixed $website Child Site. * * @uses \MainWP\Dashboard\MainWP_Connect::get_favico_url() * @uses \MainWP\Dashboard\MainWP_DB::instance()::get_website_options_array() * @uses \MainWP\Dashboard\MainWP_Utility::get_site_health() * @uses \MainWP\Dashboard\MainWP_Utility::esc_content() * @uses \MainWP\Dashboard\MainWP_Utility::get_http_codes() * @uses \MainWP\Dashboard\MainWP_Utility::format_timestamp() * @uses \MainWP\Dashboard\MainWP_Utility::get_timestamp() */ protected function single_row_columns( $website ) { // phpcs:ignore -- NOSONAR - complex function. Current complexity is the only way to achieve desired results, pull request solutions appreciated. $userExtension = MainWP_DB_Common::instance()->get_user_extension(); $decodedIgnoredCores = ! empty( $userExtension->ignored_wp_upgrades ) ? json_decode( $userExtension->ignored_wp_upgrades, true ) : array(); // @NO_SONAR_START@ - duplicated issue. $total_wp_upgrades = 0; $total_plugin_upgrades = 0; $total_theme_upgrades = 0; $site_options = MainWP_DB::instance()->get_website_options_array( $website, array( 'wp_upgrades', 'ignored_wp_upgrades', 'premium_upgrades', 'primary_lasttime_backup' ) ); $wp_upgrades = isset( $site_options['wp_upgrades'] ) ? json_decode( $site_options['wp_upgrades'], true ) : array(); $ignored_core_upgrades = isset( $site_options['ignored_wp_upgrades'] ) ? json_decode( $site_options['ignored_wp_upgrades'], true ) : array(); if ( $website['is_ignoreCoreUpdates'] || MainWP_Common_Functions::instance()->is_ignored_updates( $wp_upgrades, $ignored_core_upgrades, 'core' ) || MainWP_Common_Functions::instance()->is_ignored_updates( $wp_upgrades, $decodedIgnoredCores, 'core' ) ) { $wp_upgrades = array(); } if ( is_array( $wp_upgrades ) && ! empty( $wp_upgrades ) ) { ++$total_wp_upgrades; } $plugin_upgrades = json_decode( $website['plugin_upgrades'], true ); if ( $website['is_ignorePluginUpdates'] ) { $plugin_upgrades = array(); } $theme_upgrades = json_decode( $website['theme_upgrades'], true ); if ( $website['is_ignoreThemeUpdates'] ) { $theme_upgrades = array(); } $decodedPremiumUpgrades = isset( $site_options['premium_upgrades'] ) ? json_decode( $site_options['premium_upgrades'], true ) : array(); if ( is_array( $decodedPremiumUpgrades ) ) { foreach ( $decodedPremiumUpgrades as $crrSlug => $premiumUpgrade ) { $premiumUpgrade['premium'] = true; if ( 'plugin' === $premiumUpgrade['type'] ) { if ( ! is_array( $plugin_upgrades ) ) { $plugin_upgrades = array(); } if ( ! $website['is_ignorePluginUpdates'] ) { $plugin_upgrades[ $crrSlug ] = $premiumUpgrade; } } elseif ( 'theme' === $premiumUpgrade['type'] ) { if ( ! is_array( $theme_upgrades ) ) { $theme_upgrades = array(); } if ( ! $website['is_ignoreThemeUpdates'] ) { $theme_upgrades[ $crrSlug ] = $premiumUpgrade; } } } } if ( is_array( $plugin_upgrades ) ) { $ignored_plugins = json_decode( $website['ignored_plugins'], true ); if ( is_array( $ignored_plugins ) ) { $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins ); } $ignored_plugins = json_decode( $this->userExtension->ignored_plugins, true ); if ( is_array( $ignored_plugins ) ) { $plugin_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $plugin_upgrades, $ignored_plugins ); } $total_plugin_upgrades += count( $plugin_upgrades ); } if ( is_array( $theme_upgrades ) ) { $ignored_themes = json_decode( $website['ignored_themes'], true ); if ( is_array( $ignored_themes ) ) { $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes ); } $ignored_themes = json_decode( $this->userExtension->ignored_themes, true ); if ( is_array( $ignored_themes ) ) { $theme_upgrades = MainWP_Common_Functions::instance()->get_not_ignored_updates_themesplugins( $theme_upgrades, $ignored_themes ); } $total_theme_upgrades += count( $theme_upgrades ); } $total_updates = $total_wp_upgrades + $total_plugin_upgrades + $total_theme_upgrades; $hasSyncErrors = ( '' !== $website['sync_errors'] ); // @NO_SONAR_END@ . list( $columns ) = $this->get_column_info(); foreach ( $columns as $column_name => $column_display_name ) { ?> ' : ''; ?>
items ); } /** * Clear Items. * * @uses \MainWP\Dashboard\MainWP_DB::is_result() * @uses \MainWP\Dashboard\MainWP_DB::free_result() */ public function clear_items() { if ( MainWP_DB::is_result( $this->items ) ) { MainWP_DB::free_result( $this->items ); } } }