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$tag>"; // 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 );
}
}
}