Actions.php
1.8 KB
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
<?php
namespace WPML\REST\XMLConfig\Custom;
use WP_REST_Request;
class Actions extends \WPML_REST_Base {
/** @var array<string> */
private $capabilities = [ 'manage_options' ];
/**
* @var \WPML_Custom_XML
*/
private $custom_xml;
/**
* @var \WPML_XML_Config_Validate
*/
private $validate;
public function __construct( \WPML_Custom_XML $custom_xml, \WPML_XML_Config_Validate $validate ) {
parent::__construct();
$this->custom_xml = $custom_xml;
$this->validate = $validate;
}
function add_hooks() {
$this->register_routes();
}
function register_routes() {
parent::register_route(
'/custom-xml-config',
[
'methods' => 'GET',
'callback' => [ $this, 'read_content' ],
]
);
parent::register_route(
'/custom-xml-config',
[
'methods' => 'POST',
'callback' => [ $this, 'update_content' ],
]
);
parent::register_route(
'/custom-xml-config/validate',
[
'methods' => 'POST',
'callback' => [ $this, 'validate_content' ],
]
);
}
/**
* REST
*
* @param \WP_REST_Request $request
*
* @return string
*/
public function update_content( WP_REST_Request $request ) {
$content = $request->get_param( 'content' );
$this->custom_xml->set( $content, false );
\WPML_Config::load_config_run();
return $this->custom_xml->get();
}
/**
* REST
*
* @param \WP_REST_Request $request
*
* @return \LibXMLError[]
*/
public function validate_content( WP_REST_Request $request ) {
$content = $request->get_param( 'content' );
if ( ! $this->validate->from_string( $content ) ) {
return $this->validate->get_errors();
}
return [];
}
/**
* REST
*/
public function read_content() {
return $this->custom_xml->get();
}
function get_allowed_capabilities( WP_REST_Request $request ) {
return $this->capabilities;
}
}