Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 43
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
LinkPrefetchController
0.00% covered (danger)
0.00%
0 / 43
0.00% covered (danger)
0.00%
0 / 3
30
0.00% covered (danger)
0.00%
0 / 1
 register_routes
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 1
2
 get_settings
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 update_settings
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
12
1<?php
2
3namespace NewfoldLabs\WP\Module\Performance\RestApi;
4
5use NewfoldLabs\WP\Module\Performance\LinkPrefetch\LinkPrefetch;
6
7/**
8 * Class LinkPrefetchController
9 */
10class LinkPrefetchController {
11
12    /**
13     * REST namespace
14     *
15     * @var string
16     */
17    protected $namespace = 'newfold-performance/v1';
18
19    /**
20     * REST base
21     *
22     * @var string
23     */
24    protected $rest_base = '/link-prefetch';
25
26    /**
27     * Registers rest routes for PluginsController class.
28     *
29     * @return void
30     */
31    public function register_routes() {
32        register_rest_route(
33            $this->namespace,
34            $this->rest_base . '/settings',
35            array(
36                array(
37                    'methods'             => \WP_REST_Server::READABLE,
38                    'callback'            => array( $this, 'get_settings' ),
39                    'permission_callback' => function () {
40                        return current_user_can( 'manage_options' );
41                    },
42                ),
43                array(
44                    'methods'             => \WP_REST_Server::CREATABLE,
45                    'callback'            => array( $this, 'update_settings' ),
46                    'permission_callback' => function () {
47                        return current_user_can( 'manage_options' );
48                    },
49                ),
50            )
51        );
52    }
53
54    /**
55     * Get the settings
56     *
57     * @return \WP_REST_Response
58     */
59    public function get_settings() {
60        return new \WP_REST_Response(
61            array(
62                'settings' => LinkPrefetch::get_settings(),
63            ),
64            200
65        );
66    }
67
68    /**
69     * Update the settings
70     *
71     * @param \WP_REST_Request $request the request.
72     * @return \WP_REST_Response
73     */
74    public function update_settings( \WP_REST_Request $request ) {
75        $settings = $request->get_param( 'settings' );
76        if ( is_array( $settings ) ) {
77            $settings['ignoreKeywords'] = sanitize_text_field( $settings['ignoreKeywords'] );
78            $updated                    = LinkPrefetch::update_settings( $settings );
79            return new \WP_REST_Response(
80                array(
81                    'result' => $updated,
82                ),
83                $updated ? 200 : 400
84            );
85        }
86
87        return new \WP_REST_Response(
88            array(
89                'result'  => false,
90                'message' => 'Invalid settings format',
91            ),
92            400
93        );
94    }
95}