Completed
Push — add/add-update-option-endpoint ( 03c78e...8a887b )
by
unknown
10:53 queued 04:20
created

permission_check()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 */
5
class WPCOM_REST_API_V2_Endpoint_Options extends WP_REST_Controller {
6
	/**
7
	 * Flag to help WordPress.com decide where it should look for
8
	 * Publicize data. Ignored for direct requests to Jetpack sites.
9
	 *
10
	 * @var bool $wpcom_is_wpcom_only_endpoint
11
	 */
12
	public $wpcom_is_wpcom_only_endpoint = true;
13
14
	public function __construct() {
15
		$this->namespace = 'wpcom/v2';
16
		$this->rest_base = 'options';
17
18
		add_action( 'rest_api_init', array( $this, 'register_routes' ) );
19
	}
20
21
	/**
22
	 * Called automatically on `rest_api_init()`.
23
	 */
24 View Code Duplication
	public function register_routes() {
25
		register_rest_route(
26
			$this->namespace,
27
			'/' . $this->rest_base,
28
			array(
29
				array(
30
					'methods'             => WP_REST_Server::EDITABLE,
31
					'callback'            => array( $this, 'update_option' ),
32
 				  'permission_callback' => array( $this, 'permission_check' ),
33
				),
34
		#		'schema' => array( $this, 'get_public_item_schema' ),
35
			)
36
		);
37
	}
38
39
	public function permission_check() {
40
		return true; #current_user_can( 'manage_options' );
41
	}
42
43
	public function update_option( $request ) {
44
		// $service = self::validate_service_api_service( $request['service'] );
45
		// if ( ! $service ) {
46
		// 	return self::service_api_invalid_service_response();
47
		// }
48
		// $json_params = $request->get_json_params();
49
		// $params     = ! empty( $json_params ) ? $json_params : $request->get_body_params();
50
		// $service_api_key    = trim( $params['service_api_key'] );
51
		// $option     = self::key_for_api_service( $service );
52
		// $validation = self::validate_service_api_key( $service_api_key, $service, $params );
53
		// if ( ! $validation['status'] ) {
54
		// 	return new WP_Error( 'invalid_key', esc_html__( 'Invalid API Key', 'jetpack' ), array( 'status' => 404 ) );
55
		// }
56
		$option = 'wpcom_site_type';
57
	  $message = esc_html__( 'API key updated successfully.', 'jetpack' );
58
		Jetpack_Options::update_option( $option, 'LALA' );
59
		return array(
60
			'code'            => 'success',
61
			'option'          => $option,
62
			'option_value'    => Jetpack_Options::get_option( $option, '' ),
63
			'message'         => $message,
64
		);
65
	}
66
67
68
	/**
69
	 * @param WP_REST_Request $request
70
	 * @return WP_REST_Response suitable for 1-page collection
71
	 */
72 View Code Duplication
	public function get_items( $request ) {
73
		$items = array();
74
75
		foreach ( $this->get_connections() as $item ) {
76
			$items[] = $this->prepare_item_for_response( $item, $request );
77
		}
78
79
		$response = rest_ensure_response( $items );
80
		$response->header( 'X-WP-Total', count( $items ) );
81
		$response->header( 'X-WP-TotalPages', 1 );
82
83
		return $response;
84
	}
85
86
	/**
87
	 * Filters out data based on ?_fields= request parameter
88
	 *
89
	 * @param array           $connection
90
	 * @param WP_REST_Request $request
91
	 * @return array filtered $connection
92
	 */
93 View Code Duplication
	public function prepare_item_for_response( $connection, $request ) {
94
		if ( ! is_callable( array( $this, 'get_fields_for_response' ) ) ) {
95
			return $connection;
96
		}
97
98
		$fields = $this->get_fields_for_response( $request );
99
100
		$response_data = array();
101
		foreach ( $connection as $field => $value ) {
102
			if ( in_array( $field, $fields, true ) ) {
103
				$response_data[ $field ] = $value;
104
			}
105
		}
106
107
		return $response_data;
108
	}
109
110
	/**
111
	 * Verify that user can access Publicize data
112
	 *
113
	 * @return true|WP_Error
114
	 */
115 View Code Duplication
	public function get_items_permission_check() {
116
		global $publicize;
117
118
		if ( $publicize->current_user_can_access_publicize_data() ) {
119
			return true;
120
		}
121
122
		return new WP_Error(
123
			'invalid_user_permission_publicize',
124
			__( 'Sorry, you are not allowed to access Publicize data on this site.', 'jetpack' ),
125
			array( 'status' => rest_authorization_required_code() )
126
		);
127
	}
128
}
129
130
wpcom_rest_api_v2_load_plugin( 'WPCOM_REST_API_V2_Endpoint_Options' );
131