Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
Set_Provider_CSS
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 1
 handle
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
12
 unmask_content
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Automattic\Jetpack_Boost\Lib\Critical_CSS\Data_Sync_Actions;
4
5use Automattic\Jetpack\WP_JS_Data_Sync\Contracts\Data_Sync_Action;
6use Automattic\Jetpack_Boost\Lib\Critical_CSS\Critical_CSS_State;
7use Automattic\Jetpack_Boost\Lib\Critical_CSS\Critical_CSS_Storage;
8
9/**
10 * Critical CSS Action: Set CSS for a provider.
11 */
12class Set_Provider_CSS implements Data_Sync_Action {
13
14    /**
15     * Handles the action logic.
16     *
17     * @param mixed            $data     JSON Data passed to the action.
18     * @param \WP_REST_Request $_request The request object.
19     */
20    public function handle( $data, $_request ) {
21        $state = new Critical_CSS_State();
22
23        if ( empty( $data['key'] ) || empty( $data['css'] ) ) {
24            return array(
25                'success' => false,
26                'state'   => $state->get(),
27                'error'   => 'Invalid data',
28            );
29        }
30
31        $provider_key = sanitize_key( $data['key'] );
32        $css          = $this->unmask_content( $data['css'] );
33
34        $storage = new Critical_CSS_Storage();
35        $storage->store_css( $provider_key, $css );
36
37        $state->set_provider_success( $provider_key );
38        $state->save();
39
40        return array(
41            'success' => true,
42            'state'   => $state->get(),
43        );
44    }
45
46    /**
47     * Unmasks the content.
48     *
49     * @param string $content The content to unmask.
50     * @return string The unmasked content.
51     */
52    private function unmask_content( $content ) {
53        return str_replace( '__JB_XMLNS__', 'xmlns', $content );
54    }
55}