PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.1
16.3 16.3-beta 16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 All 508 releases
← All changes | jetpack_vendor/automattic/jetpack-stats-admin/src/class-rest-controller.php +0 -147 16.3-beta → 16.3-a.1 View file →
@@ -8,9 +8,8 @@
8 8
9 9 namespace Automattic\Jetpack\Stats_Admin;
10 10
11 11 use Automattic\Jetpack\Constants;
12 -use Automattic\Jetpack\Stats\Settings as Stats_Settings;
13 12 use Automattic\Jetpack\Stats\WPCOM_Stats;
14 13 use Jetpack_Options;
15 14 use WP_Error;
16 15 use WP_REST_Request;
@@ -166,47 +165,8 @@
166 165 'permission_callback' => array( $this, 'can_user_view_general_stats_callback' ),
167 166 )
168 167 );
169 168
170 - // Stats settings.
171 - register_rest_route(
172 - static::$namespace,
173 - sprintf( '/sites/%d/jetpack-stats/settings', Jetpack_Options::get_option( 'id' ) ),
174 - array(
175 - array(
176 - 'methods' => WP_REST_Server::READABLE,
177 - 'callback' => array( $this, 'get_stats_settings' ),
178 - 'permission_callback' => array( $this, 'can_user_manage_stats_settings_callback' ),
179 - ),
180 - array(
181 - 'methods' => WP_REST_Server::EDITABLE,
182 - 'callback' => array( $this, 'update_stats_settings' ),
183 - 'permission_callback' => array( $this, 'can_user_manage_stats_settings_callback' ),
184 - 'args' => array(
185 - 'admin_bar' => array(
186 - 'description' => 'Show a chart of the last 48 hours of views in the admin bar',
187 - 'type' => 'boolean',
188 - ),
189 - 'roles' => array(
190 - 'description' => 'Roles that can view Stats. `administrator` is always kept.',
191 - 'type' => 'array',
192 - 'items' => array( 'type' => 'string' ),
193 - 'minItems' => 1,
194 - ),
195 - 'count_roles' => array(
196 - 'description' => 'Roles whose logged-in page views are counted',
197 - 'type' => 'array',
198 - 'items' => array( 'type' => 'string' ),
199 - ),
200 - 'wpcom_reader_views_enabled' => array(
201 - 'description' => 'Show post views in the WordPress.com Reader',
202 - 'type' => 'boolean',
203 - ),
204 - ),
205 - ),
206 - )
207 - );
208 -
209 169 // User feedback endpoint.
210 170 register_rest_route(
211 171 static::$namespace,
212 172 sprintf( '/sites/%d/jetpack-stats/user-feedback', Jetpack_Options::get_option( 'id' ) ),
@@ -523,21 +483,8 @@
523 483 return $this->get_forbidden_error();
524 484 }
525 485
526 486 /**
527 - * Only administrators can read or change the Stats settings, because `roles` decides who else can view Stats.
528 - *
529 - * @return bool|WP_Error
530 - */
531 - public function can_user_manage_stats_settings_callback() {
532 - if ( current_user_can( 'manage_options' ) ) {
533 - return true;
534 - }
535 -
536 - return $this->get_forbidden_error();
537 - }
538 -
539 - /**
540 487 * Only administrators or users with capability `activate_wordads` can access the API.
541 488 */
542 489 public function can_user_view_wordads_stats_callback() {
543 490 // phpcs:ignore WordPress.WP.Capabilities.Unknown
@@ -810,102 +757,8 @@
810 757 array( 'timeout' => 5 ),
811 758 null,
812 759 'wpcom',
813 760 false
814 - );
815 - }
816 -
817 - /**
818 - * Get the Stats settings and the site's roles.
819 - *
820 - * @return array
821 - */
822 - public function get_stats_settings() {
823 - return $this->get_stats_settings_response();
824 - }
825 -
826 - /**
827 - * Save the Stats settings in the request.
828 - *
829 - * @param WP_REST_Request $req The request object.
830 - *
831 - * @return array|WP_Error The settings after the save, or why the values were refused.
832 - */
833 - public function update_stats_settings( $req ) {
834 - $params = $req->get_params();
835 - $keys = self::get_stats_settings_keys();
836 -
837 - $stats_values = array_intersect_key( $params, array_flip( $keys ) );
838 - if ( empty( $stats_values ) && ! isset( $params['wpcom_reader_views_enabled'] ) ) {
839 - return new WP_Error(
840 - 'jetpack_stats_missing_setting_field',
841 - sprintf(
842 - /* translators: %s: comma-separated list of the settings that can be changed. */
843 - __( 'Provide at least one of: %s.', 'jetpack-stats-admin' ),
844 - implode( ', ', array_merge( $keys, array( 'wpcom_reader_views_enabled' ) ) )
845 - ),
846 - array( 'status' => 400 )
847 - );
848 - }
849 -
850 - if ( ! empty( $stats_values ) ) {
851 - $result = Stats_Settings::update( $stats_values, $keys );
852 - if ( is_wp_error( $result ) ) {
853 - $result->add_data( array( 'status' => 400 ) );
854 - return $result;
855 - }
856 - }
857 -
858 - if ( isset( $params['wpcom_reader_views_enabled'] ) ) {
859 - $reader_views = (int) $params['wpcom_reader_views_enabled'];
860 - update_option( 'wpcom_reader_views_enabled', $reader_views );
861 - // update_option() also returns false for an unchanged value, so read the option back.
862 - if ( (int) get_option( 'wpcom_reader_views_enabled', 1 ) !== $reader_views ) {
863 - return new WP_Error(
864 - 'jetpack_stats_save_failed',
865 - __( 'The Stats settings could not be saved.', 'jetpack-stats-admin' ),
866 - array( 'status' => 400 )
867 - );
868 - }
869 - }
870 -
871 - return $this->get_stats_settings_response();
872 - }
873 -
874 - /**
875 - * The Stats settings the Settings screen offers.
876 - *
877 - * @return string[]
878 - */
879 - private static function get_stats_settings_keys() {
880 - // Nothing reads `do_not_track`, so the screen does not offer it.
881 - return array_values( array_diff( Stats_Settings::KEYS, array( 'do_not_track' ) ) );
882 - }
883 -
884 - /**
885 - * Build the settings response: the current values and the roles the toggles list.
886 - *
887 - * @return array
888 - */
889 - private function get_stats_settings_response() {
890 - if ( ! function_exists( 'get_editable_roles' ) ) {
891 - require_once ABSPATH . 'wp-admin/includes/user.php';
892 - }
893 -
894 - $roles = array();
895 - foreach ( get_editable_roles() as $slug => $role ) {
896 - $roles[] = array(
897 - 'slug' => $slug,
898 - 'name' => translate_user_role( $role['name'] ),
899 - );
900 - }
901 -
902 - return array(
903 - 'settings' => array_merge(
904 - Stats_Settings::get( self::get_stats_settings_keys() ),
905 - array( 'wpcom_reader_views_enabled' => (bool) get_option( 'wpcom_reader_views_enabled', true ) )
906 - ),
907 - 'roles' => $roles,
908 761 );
909 762 }
910 763
911 764 /**