~sajoupa/wordpress/wp-plugin-jetpack

« back to all changes in this revision

Viewing changes to json-endpoints/jetpack/class.wpcom-json-api-get-option-endpoint.php

  • Committer: laurent.sesques at canonical
  • Date: 2017-06-14 13:02:28 UTC
  • Revision ID: laurent.sesques@canonical.com-20170614130228-bxf4a0cuovrtrmc7
[sajoupa] initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
class WPCOM_JSON_API_Get_Option_Endpoint extends Jetpack_JSON_API_Endpoint {
 
4
 
 
5
        protected $needed_capabilities = 'manage_options';
 
6
 
 
7
        public $option_name;
 
8
        public $site_option;
 
9
 
 
10
        function result() {
 
11
                if ( $this->site_option ) {
 
12
                        return array( 'option_value' => get_site_option( $this->option_name ) );
 
13
                }
 
14
                return array( 'option_value' => get_option( $this->option_name ) );
 
15
        }
 
16
 
 
17
        function validate_input( $object ) {
 
18
                $query_args = $this->query_args();
 
19
                $this->option_name = isset( $query_args['option_name'] ) ? $query_args['option_name'] : false;
 
20
                if ( ! $this->option_name ) {
 
21
                        return new WP_Error( 'option_name_not_set', __( 'You must specify an option_name', 'jetpack' ) );
 
22
                }
 
23
                $this->site_option = isset( $query_args['site_option'] ) ? $query_args['site_option'] : false;
 
24
 
 
25
                require_once JETPACK__PLUGIN_DIR . '/sync/class.jetpack-sync-defaults.php';
 
26
                /**
 
27
                 * Filter the list of options that are manageable via the JSON API.
 
28
                 *
 
29
                 * @module json-api
 
30
                 *
 
31
                 * @since 3.8.2
 
32
                 *
 
33
                 * @param array The default list of site options.
 
34
                 * @param bool Is the option a site option.
 
35
                 */
 
36
                if ( ! in_array( $this->option_name, apply_filters( 'jetpack_options_whitelist', Jetpack_Sync_Defaults::$default_options_whitelist, $this->site_option ) ) ) {
 
37
                        return new WP_Error( 'option_name_not_in_whitelist', __( 'You must specify a whitelisted option_name', 'jetpack' ) );
 
38
                }
 
39
                return true;
 
40
        }
 
41
}