PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / 1.7.7
Image Optimizer – Compress Images and Convert to WebP or AVIF v1.7.7
1.7.7 1.7.6 1.7.5 1.7.4 trunk 1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 1.2.1 1.3.0 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 All 33 releases
← All changes | modules/connect-manager/components/connect.php +57 -32 1.5.31.7.7 View file →
@@ -1,18 +1,15 @@
1 1 <?php
2 2 namespace ImageOptimization\Modules\ConnectManager\Components;
3 3
4 4 use ImageOptimization\Modules\Connect\{
5 - Module as ConnectModule,
6 - Classes\Data,
7 - Classes\Service,
8 - Classes\Utils as ConnectUtils,
9 - Rest\Authorize,
10 - Rest\Version
5 + Module as Connect_Module,
11 6 };
12 7
8 +use ImageOptimization\Modules\Settings\Classes\Settings;
13 9 use ImageOptimization\Classes\Logger;
14 10 use ImageOptimization\Classes\Utils;
11 +use ImageOptimization\Classes\Client\Client;
15 12 use Throwable;
16 13
17 14 if ( ! defined( 'ABSPATH' ) ) {
18 15 exit; // exit if accessed directly
@@ -18,21 +15,22 @@
18 15 exit; // exit if accessed directly
19 16 }
20 17
21 18 class Connect implements Connect_Interface {
22 -
23 19 const STATUS_CHECK_TRANSIENT = 'image_optimizer_status_check';
20 + const STATUS_CHECK_ERROR_TRANSIENT = 'image_optimizer_status_check_error';
21 + const ERROR_CACHE_DURATION = MINUTE_IN_SECONDS * 5;
24 22
25 - public function is_connected() : bool {
26 - return ConnectModule::is_connected();
23 + public function is_connected(): bool {
24 + return Connect_Module::is_connected();
27 25 }
28 26
29 - public function is_activated() : bool {
30 - return ConnectModule::is_connected();
27 + public function is_activated(): bool {
28 + return Connect_Module::is_connected();
31 29 }
32 30
33 - public function is_valid_home_url() : bool {
34 - return ConnectUtils::is_valid_home_url();
31 + public function is_valid_home_url(): bool {
32 + return Connect_Module::get_connect()->utils()->is_valid_home_url();
35 33 }
36 34
37 35 public function get_connect_status() {
38 36 if ( ! $this->is_connected() ) {
@@ -45,8 +43,15 @@
45 43 if ( $cached_status ) {
46 44 return $cached_status;
47 45 }
48 46
47 + $cached_error = get_transient( self::STATUS_CHECK_ERROR_TRANSIENT );
48 +
49 + if ( $cached_error ) {
50 + Logger::debug( 'Status check skipped due to recent error: ' . $cached_error );
51 + return null;
52 + }
53 +
49 54 try {
50 55 $response = Utils::get_api_client()->make_request(
51 56 'POST',
52 57 'status/check'
@@ -51,26 +56,39 @@
51 56 'POST',
52 57 'status/check'
53 58 );
54 59 } catch ( Throwable $t ) {
55 - Logger::log(
56 - Logger::LEVEL_ERROR,
57 - 'Status check error. Reason: ' . $t->getMessage()
58 - );
60 + $error_message = $t->getMessage();
59 61
62 + Logger::error( 'Status check error. Reason: ' . $error_message );
63 +
64 + set_transient( self::STATUS_CHECK_ERROR_TRANSIENT, $error_message, self::ERROR_CACHE_DURATION );
65 +
60 66 return null;
61 67 }
62 68
63 69 if ( ! isset( $response->status ) ) {
64 - Logger::log( Logger::LEVEL_ERROR, 'Invalid response from server' );
70 + $error_message = 'Invalid response from server';
65 71
72 + Logger::error( $error_message );
73 +
74 + set_transient( self::STATUS_CHECK_ERROR_TRANSIENT, $error_message, self::ERROR_CACHE_DURATION );
75 +
66 76 return null;
67 77 }
68 78
69 - if ( ! empty( $response->site_url ) && Data::get_home_url() !== $response->site_url ) {
70 - Data::set_home_url( $response->site_url );
79 + if ( ! empty( $response->site_url ) && Connect_Module::get_connect()->data()->get_home_url() !== $response->site_url ) {
80 + Connect_Module::get_connect()->data()->set_home_url( $response->site_url );
71 81 }
72 82
83 + Settings::set( Settings::SUBSCRIPTION_ID, $response->subscription_id );
84 +
85 + // Append subscription info to response
86 + $subscription_info = Client::get_subscription_info();
87 + if ( $subscription_info ) {
88 + $response->subscription_info = $subscription_info;
89 + }
90 +
73 91 set_transient( self::STATUS_CHECK_TRANSIENT, $response, MINUTE_IN_SECONDS * 5 );
74 92
75 93 return $response;
76 94 }
@@ -117,9 +135,9 @@
117 135
118 136 set_transient( self::STATUS_CHECK_TRANSIENT, $connect_status, MINUTE_IN_SECONDS * 5 );
119 137 }
120 138
121 - public function get_activation_state() : string {
139 + public function get_activation_state(): string {
122 140 /**
123 141 * Returning true because the license key is
124 142 * not used for deactivation in connect.
125 143 */
@@ -126,14 +144,17 @@
126 144 return true;
127 145 }
128 146
129 147 public function get_access_token() {
130 - return Data::get_access_token();
148 + return Connect_Module::get_connect()->data()->get_access_token();
149 + }
131 150
151 + public function get_client_id(): string {
152 + return Connect_Module::get_connect()->data()->get_client_id();
132 153 }
133 154
134 - public function get_client_id(): string {
135 - return Data::get_client_id();
155 + public function get_client_secret(): string {
156 + return Connect_Module::get_connect()->data()->get_client_secret();
136 157 }
137 158
138 159 public function images_left(): int {
139 160 $plan_data = $this->get_connect_status();
@@ -148,34 +169,34 @@
148 169 return max( $quota - $used_quota, 0 );
149 170 }
150 171
151 172 public function user_is_subscription_owner(): bool {
152 - return Data::user_is_subscription_owner();
173 + return Connect_Module::get_connect()->data()->user_is_subscription_owner();
153 174 }
154 175
155 176 // Nonces.
156 177 public function connect_init_nonce(): string {
157 - return Authorize::NONCE_NAME;
178 + return 'wp_rest';
158 179 }
159 180
160 181 public function disconnect_nonce(): string {
161 - return Authorize::NONCE_NAME;
182 + return 'wp_rest';
162 183 }
163 184
164 185 public function deactivate_nonce(): string {
165 - return Authorize::NONCE_NAME;
186 + return 'wp_rest';
166 187 }
167 188
168 189 public function get_subscriptions_nonce(): string {
169 - return Authorize::NONCE_NAME;
190 + return 'wp_rest';
170 191 }
171 192
172 193 public function activate_nonce(): string {
173 - return Authorize::NONCE_NAME;
194 + return 'wp_rest';
174 195 }
175 196
176 197 public function version_nonce(): string {
177 - return Version::NONCE_NAME;
198 + return 'wp_rest';
178 199 }
179 200
180 201 public function get_is_connect_on_fly(): bool {
181 202 return true;
@@ -181,7 +202,11 @@
181 202 return true;
182 203 }
183 204
184 205 public function refresh_token(): void {
185 - Service::refresh_token();
206 + Connect_Module::get_connect()->service()->renew_access_token();
207 + }
208 +
209 + public function clear_error_cache(): void {
210 + delete_transient( self::STATUS_CHECK_ERROR_TRANSIENT );
186 211 }
187 212 }