/var/www/html_us/wp-content/plugins/woocommerce/src/Internal/Admin/SystemStatusReport.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<?php
/**
 * Add additional system status report sections.
 */

namespace Automattic\WooCommerce\Internal\Admin;

use 
Automattic\WooCommerce\Admin\Notes\Notes;
defined'ABSPATH' ) || exit;

/**
 * SystemStatusReport class.
 */
class SystemStatusReport {
    
/**
     * Class instance.
     *
     * @var SystemStatus instance
     */
    
protected static $instance null;

    
/**
     * Get class instance.
     */
    
public static function get_instance() {
        if ( ! 
self::$instance ) {
            
self::$instance = new self();
        }
        return 
self::$instance;
    }

    
/**
     * Hook into WooCommerce.
     */
    
public function __construct() {
        
add_action'woocommerce_system_status_report', array( $this'system_status_report' ) );
    }

    
/**
     * Hooks extra necessary sections into the system status report template
     */
    
public function system_status_report() {
        
?>
            <table class="wc_status_table widefat" cellspacing="0">
                <thead>
                <tr>
                    <th colspan="5" data-export-label="Admin">
                        <h2>
                            <?php esc_html_e'Admin''woocommerce' ); ?><?php echo wc_help_tipesc_html__'This section shows details of WC Admin.''woocommerce' ) ); ?>
                        </h2>
                    </th>
                </tr>
                </thead>
                <tbody>
                    <?php
                        $this
->render_features();
                        
$this->render_daily_cron();
                        
$this->render_options();
                        
$this->render_notes();
                        
$this->render_onboarding_state();
                    
?>
                </tbody>
            </table>
        <?php
    
}

    
/**
     * Render features rows.
     */
    
public function render_features() {
        
/**
         * Filter the admin feature configs.
         *
         * @since 6.5.0
         */
        
$features          apply_filters'woocommerce_admin_get_feature_config'wc_admin_get_feature_config() );
        
$enabled_features  array_filter$features );
        
$disabled_features array_filter(
            
$features,
            function( 
$feature ) {
                return empty( 
$feature );
            }
        );

        
?>
            <tr>
                <td data-export-label="Enabled Features">
                    <?php esc_html_e'Enabled Features''woocommerce' ); ?>:
                </td>
                <td class="help"><?php echo wc_help_tipesc_html__'Which features are enabled?''woocommerce' ) ); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?></td>
                <td>
                    <?php
                        
echo esc_htmlimplode', 'array_keys$enabled_features ) ) )
                    
?>
                </td>
            </tr>

            <tr>
                <td data-export-label="Disabled Features">
                    <?php esc_html_e'Disabled Features''woocommerce' ); ?>:
                </td>
                <td class="help"><?php echo wc_help_tipesc_html__'Which features are disabled?''woocommerce' ) ); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?></td>
                <td>
                    <?php
                        
echo esc_htmlimplode', 'array_keys$disabled_features ) ) )
                    
?>
                </td>
            </tr>
        <?php
    
}


    
/**
     * Render daily cron row.
     */
    
public function render_daily_cron() {
        
$next_daily_cron wp_next_scheduled'wc_admin_daily' );
        
?>
            <tr>
                <td data-export-label="Daily Cron">
                    <?php esc_html_e'Daily Cron''woocommerce' ); ?>:
                </td>
                <td class="help"><?php echo wc_help_tipesc_html__'Is the daily cron job active, when does it next run?''woocommerce' ) ); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?></td>
                <td>
                    <?php
                    
if ( empty( $next_daily_cron ) ) {
                        echo 
'<mark class="error"><span class="dashicons dashicons-warning"></span> ' esc_html__'Not scheduled''woocommerce' ) . '</mark>';
                    } else {
                        echo 
'<mark class="yes"><span class="dashicons dashicons-yes"></span> Next scheduled: ' esc_htmldate_i18n'Y-m-d H:i:s P'$next_daily_cron ) ) . '</mark>';
                    }
                    
?>
                </td>
            </tr>
        <?php
    
}

    
/**
     * Render option row.
     */
    
public function render_options() {
        
$woocommerce_admin_install_timestamp get_option'woocommerce_admin_install_timestamp' );

        
$all_options_expected is_numeric$woocommerce_admin_install_timestamp )
            && 
< (int) $woocommerce_admin_install_timestamp
            
&& is_arrayget_option'woocommerce_onboarding_profile', array() ) );

        
?>
            <tr>
                <td data-export-label="Options">
                    <?php esc_html_e'Options''woocommerce' ); ?>:
                </td>
                <td class="help"><?php echo wc_help_tipesc_html__'Do the important options return expected values?''woocommerce' ) ); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?></td>
                <td>
                    <?php
                    
if ( $all_options_expected ) {
                        echo 
'<mark class="yes"><span class="dashicons dashicons-yes"></mark>';
                    } else {
                        echo 
'<mark class="error"><span class="dashicons dashicons-warning"></span> ' esc_html__'Not all expected''woocommerce' ) . '</mark>';
                    }
                    
?>
                </td>
            </tr>
        <?php
    
}

    
/**
     * Render the notes row.
     */
    
public function render_notes() {
        
$notes_count Notes::get_notes_count();

        
?>
            <tr>
                <td data-export-label="Notes">
                    <?php esc_html_e'Notes''woocommerce' ); ?>:
                </td>
                <td class="help"><?php echo wc_help_tipesc_html__'How many notes in the database?''woocommerce' ) ); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?></td>
                <td>
                    <?php
                        
echo esc_html$notes_count )
                    
?>
                </td>
            </tr>
        <?php
    
}

    
/**
     * Render the onboarding state row.
     */
    
public function render_onboarding_state() {
        
$onboarding_profile get_option'woocommerce_onboarding_profile', array() );
        
$onboarding_state   '-';

        if ( isset( 
$onboarding_profile['skipped'] ) && $onboarding_profile['skipped'] ) {
            
$onboarding_state 'skipped';
        }

        if ( isset( 
$onboarding_profile['completed'] ) && $onboarding_profile['completed'] ) {
            
$onboarding_state 'completed';
        }

        
?>
            <tr>
                <td data-export-label="Onboarding">
                    <?php esc_html_e'Onboarding''woocommerce' ); ?>:
                </td>
                <td class="help"><?php echo wc_help_tipesc_html__'Was onboarding completed or skipped?''woocommerce' ) ); /* phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped */ ?></td>
                <td>
                    <?php
                        
echo esc_html$onboarding_state )
                    
?>
                </td>
            </tr>
        <?php
    
}

}