| @@ -30,9 +30,9 @@ | ||
| 30 | 30 | /** |
| 31 | 31 | * Add the dashboard widget. |
| 32 | 32 | */ |
| 33 | 33 | public function add_dashboard_widget() { |
| 34 | - if ( ! $this->has_at_least_ten_visits() ) { | |
| 34 | + if ( ! current_user_can( 'manage_options' ) || ! $this->has_at_least_ten_visits() ) { | |
| 35 | 35 | return; |
| 36 | 36 | } |
| 37 | 37 | |
| 38 | 38 | wp_add_dashboard_widget( $this->handle, sprintf( 'Optimole - %s', __( 'Image Optimization Stats', 'optimole-wp' ) ), [ $this, 'render_widget' ] ); |
| @@ -41,9 +41,9 @@ | ||
| 41 | 41 | /** |
| 42 | 42 | * Enqueue the widget assets. |
| 43 | 43 | */ |
| 44 | 44 | public function enqueue_widget() { |
| 45 | - if ( ! $this->is_main_dashboard_page() || ! $this->has_at_least_ten_visits() ) { | |
| 45 | + if ( ! current_user_can( 'manage_options' ) || ! $this->is_main_dashboard_page() || ! $this->has_at_least_ten_visits() ) { | |
| 46 | 46 | return; |
| 47 | 47 | } |
| 48 | 48 | |
| 49 | 49 | $asset_file = include OPTML_PATH . 'assets/build/widget/index.asset.php'; |
| @@ -111,9 +111,9 @@ | ||
| 111 | 111 | 'upgrade' => __( 'Upgrade', 'optimole-wp' ), |
| 112 | 112 | ], |
| 113 | 113 | 'skeletonLoader' => $this->get_skeleton_loader(), |
| 114 | 114 | 'billingURL' => tsdk_translate_link( 'https://dashboard.optimole.com/settings/billing', 'query' ), |
| 115 | - 'serviceData' => $this->get_service_data(), | |
| 115 | + 'serviceData' => $this->get_widget_service_data(), | |
| 116 | 116 | 'assetsURL' => OPTML_URL . 'assets/', |
| 117 | 117 | 'dashboardMetricsURL' => esc_url( 'https://dashboard.optimole.com/metrics' ), |
| 118 | 118 | 'dashboardURL' => esc_url( tsdk_translate_link( 'https://dashboard.optimole.com' ) ), |
| 119 | 119 | ]; |
| @@ -127,8 +127,26 @@ | ||
| 127 | 127 | private function get_service_data() { |
| 128 | 128 | $settings = new Optml_Settings(); |
| 129 | 129 | |
| 130 | 130 | return $settings->get( 'service_data' ); |
| 131 | + } | |
| 132 | + | |
| 133 | + /** | |
| 134 | + * Get the service data fields the widget displays, keeping keys and secrets out of the page. | |
| 135 | + * | |
| 136 | + * @return array<string, mixed> | |
| 137 | + */ | |
| 138 | + private function get_widget_service_data() { | |
| 139 | + $service_data = $this->get_service_data(); | |
| 140 | + | |
| 141 | + if ( ! is_array( $service_data ) ) { | |
| 142 | + return []; | |
| 143 | + } | |
| 144 | + | |
| 145 | + return array_intersect_key( | |
| 146 | + $service_data, | |
| 147 | + array_flip( [ 'visitors', 'visitors_pretty', 'visitors_limit', 'visitors_limit_pretty', 'compression_percentage', 'traffic' ] ) | |
| 148 | + ); | |
| 131 | 149 | } |
| 132 | 150 | |
| 133 | 151 | /** |
| 134 | 152 | * Get the skeleton loader markup. |