Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 106
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Jetpack_Settings_Page
0.00% covered (danger)
0.00%
0 / 102
0.00% covered (danger)
0.00%
0 / 5
272
0.00% covered (danger)
0.00%
0 / 1
 add_page_actions
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 get_page_hook
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
 page_render
0.00% covered (danger)
0.00%
0 / 85
0.00% covered (danger)
0.00%
0 / 1
156
 additional_styles
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 page_admin_scripts
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
1<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3use Automattic\Jetpack\Assets;
4use Automattic\Jetpack\Tracking;
5
6if ( ! defined( 'ABSPATH' ) ) {
7    exit( 0 );
8}
9
10require_once __DIR__ . '/class.jetpack-admin-page.php';
11require_once JETPACK__PLUGIN_DIR . 'class.jetpack-modules-list-table.php';
12
13/**
14 * Builds the settings page and its menu
15 */
16class Jetpack_Settings_Page extends Jetpack_Admin_Page {
17
18    /**
19     * Show the settings page only when Jetpack is connected or in dev mode.
20     *
21     * @var boolean
22     */
23    protected $dont_show_if_not_active = true;
24
25    /**
26     * Add page action.
27     *
28     * @param string $hook Hook of current page.
29     * @return void
30     */
31    public function add_page_actions( $hook ) {} //phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
32
33    /**
34     * Adds the Settings sub menu.
35     */
36    public function get_page_hook() {
37        return add_submenu_page(
38            '',
39            __( 'Jetpack Settings', 'jetpack' ),
40            __( 'Settings', 'jetpack' ),
41            'jetpack_manage_modules',
42            'jetpack_modules',
43            array( $this, 'render' )
44        );
45    }
46
47    /**
48     * Renders the module list table where you can use bulk action or row
49     * actions to activate/deactivate and configure modules
50     */
51    public function page_render() {
52        $list_table = new Jetpack_Modules_List_Table();
53
54        // We have static.html so let's continue trying to fetch the others.
55        $noscript_notice = @file_get_contents( JETPACK__PLUGIN_DIR . '_inc/build/static-noscript-notice.html' ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents, Not fetching a remote file.
56        $rest_api_notice = @file_get_contents( JETPACK__PLUGIN_DIR . '_inc/build/static-version-notice.html' ); //phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents, Not fetching a remote file.
57
58        $noscript_notice = str_replace(
59            '#HEADER_TEXT#',
60            esc_html__( 'You have JavaScript disabled', 'jetpack' ),
61            $noscript_notice
62        );
63        $noscript_notice = str_replace(
64            '#TEXT#',
65            esc_html__( "Turn on JavaScript to unlock Jetpack's full potential!", 'jetpack' ),
66            $noscript_notice
67        );
68
69        $rest_api_notice = str_replace(
70            '#HEADER_TEXT#',
71            esc_html( __( 'WordPress REST API is disabled', 'jetpack' ) ),
72            $rest_api_notice
73        );
74        $rest_api_notice = str_replace(
75            '#TEXT#',
76            esc_html( __( "Enable WordPress REST API to unlock Jetpack's full potential!", 'jetpack' ) ),
77            $rest_api_notice
78        );
79
80        if ( ! $this->is_rest_api_enabled() ) {
81            echo $rest_api_notice; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
82        }
83        echo $noscript_notice; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
84        ?>
85
86        <div class="jetpack-module-list">
87            <div class="wrap">
88                <div class="manage-left jp-static-block">
89                    <table class="table table-bordered fixed-top jetpack-modules">
90                        <thead>
91                            <tr>
92                                <th class="check-column"><input type="checkbox" class="checkall"></th>
93                                <th colspan="2">
94                                    <?php $list_table->unprotected_display_tablenav( 'top' ); ?>
95                                    <span class="filter-search">
96                                        <button type="button" class="button">Filter</button>
97                                    </span>
98                                </th>
99                            </tr>
100                        </thead>
101                    </table>
102                    <form class="jetpack-modules-list-table-form" onsubmit="return false;">
103                        <table class="<?php echo esc_attr( implode( ' ', $list_table->get_table_classes() ) ); ?>">
104                            <tbody id="the-list">
105                            <?php $list_table->display_rows_or_placeholder(); ?>
106                            </tbody>
107                        </table>
108                    </form>
109                </div>
110                <div class="manage-right">
111                    <div class="bumper">
112                        <form class="navbar-form" role="search">
113                            <input type="hidden" name="page" value="jetpack_modules" />
114                            <?php $list_table->search_box( __( 'Search', 'jetpack' ), 'srch-term' ); ?>
115                            <p><?php esc_html_e( 'View', 'jetpack' ); ?></p>
116                            <span class="dops-button-group button-group filter-active">
117                                <button type="button" class="dops-button is-compact button
118                                <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
119                                if ( empty( $_GET['activated'] ) ) {
120                                    echo 'active';
121                                }
122                                ?>
123                                    ">
124                                <?php esc_html_e( 'All', 'jetpack' ); ?></button>
125                                <button type="button" class="dops-button button
126                                <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
127                                if ( ! empty( $_GET['activated'] ) && 'true' === $_GET['activated'] ) {
128                                    echo 'active';
129                                }
130                                ?>
131                                " data-filter-by="activated" data-filter-value="true"><?php esc_html_e( 'Active', 'jetpack' ); ?></button>
132                                <button type="button" class="dops-button button
133                                <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
134                                if ( ! empty( $_GET['activated'] ) && 'false' === $_GET['activated'] ) {
135                                    echo 'active';
136                                }
137                                ?>
138                                " data-filter-by="activated" data-filter-value="false"><?php esc_html_e( 'Inactive', 'jetpack' ); ?></button>
139                            </span>
140                            <p><?php esc_html_e( 'Sort by', 'jetpack' ); ?></p>
141                            <span class="dops-button-group button-group sort">
142                                <button type="button" class="dops-button button
143                                <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
144                                if ( empty( $_GET['sort_by'] ) ) {
145                                    echo 'active';
146                                }
147                                ?>
148                                " data-sort-by="name"><?php esc_html_e( 'Alphabetical', 'jetpack' ); ?></button>
149                                <button type="button" class="dops-button button
150                                <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
151                                if ( ! empty( $_GET['sort_by'] ) && 'introduced' === $_GET['sort_by'] ) {
152                                    echo 'active';
153                                }
154                                ?>
155                                " data-sort-by="introduced" data-sort-order="reverse"><?php esc_html_e( 'Newest', 'jetpack' ); ?></button>
156                                <button type="button" class="dops-button button
157                                <?php // phpcs:ignore WordPress.Security.NonceVerification.Recommended -- This is view logic.
158                                if ( ! empty( $_GET['sort_by'] ) && 'sort' === $_GET['sort_by'] ) {
159                                    echo 'active';
160                                }
161                                ?>
162                                " data-sort-by="sort"><?php esc_html_e( 'Popular', 'jetpack' ); ?></button>
163                            </span>
164                            <p><?php esc_html_e( 'Show', 'jetpack' ); ?></p>
165                            <?php $list_table->views(); ?>
166                        </form>
167                    </div>
168                </div>
169            </div>
170        </div><!-- /.content -->
171        <?php
172
173        $tracking = new Tracking();
174        $tracking->record_user_event( 'wpa_page_view', array( 'path' => 'old_settings' ) );
175    }
176
177    /**
178     * Load styles for static page.
179     *
180     * @since 4.3.0
181     */
182    public function additional_styles() {
183        Jetpack_Admin_Page::load_wrapper_styles();
184    }
185
186    /**
187     * Javascript logic specific to the list table
188     */
189    public function page_admin_scripts() {
190        wp_enqueue_script(
191            'jetpack-admin-js',
192            Assets::get_file_url_for_environment( '_inc/build/jetpack-admin.min.js', '_inc/jetpack-admin.js' ),
193            array( 'jquery' ),
194            JETPACK__VERSION,
195            true
196        );
197    }
198}