PluginProbe
Image Optimization – Compress Images and Convert to WebP or AVIF / 1.6.6
Image Optimization – Compress Images and Convert to WebP or AVIF v1.6.6
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 1.6.6 All 32 releases
image-optimization / modules / oauth / classes / data.php

data.php in Image Optimization – Compress Images and Convert to WebP or AVIF 1.6.6, at modules/oauth/classes/data.php

191 lines 4.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace ImageOptimization\Modules\Oauth\Classes;
4
5 use ImageOptimization\Modules\Oauth\Components\Connect;
6
7 if ( ! defined( 'ABSPATH' ) ) {
8 exit; // Exit if accessed directly.
9 }
10
11 /**
12 * Class Data
13 */
14 class Data {
15
16 const CONNECT_CLIENT_DATA_OPTION_NAME = 'image_optimizer_client_data';
17 const CONNECT_DATA_OPTION_NAME = 'image_optimizer_connect_data';
18 const OPTION_CONNECT_SITE_KEY = 'image_optimizer_site_key';
19 const OPTION_CONNECT_STATE = 'image_optimizer_connect_state';
20 const OPTION_ACTIVATION_STATE = 'image_optimizer_activation_state';
21 const OPTION_OWNER_USER_ID = 'image_optimizer_owner_user_id';
22
23 /**
24 * set_client_data
25 * @param $client_id
26 * @param $auth_secret
27 */
28 public static function set_client_data( $client_id, $auth_secret ) {
29 update_option( self::CONNECT_CLIENT_DATA_OPTION_NAME, [
30 'client_id' => $client_id,
31 'auth_secret' => $auth_secret,
32 ], false );
33 }
34
35 /**
36 * get_client_data
37 * @return array
38 */
39 public static function get_client_data(): array {
40 return get_option( self::CONNECT_CLIENT_DATA_OPTION_NAME, [
41 'client_id' => '',
42 'auth_secret' => '',
43 ] );
44 }
45
46
47 /**
48 * get_client_id
49 * @return string
50 */
51 public static function get_client_id(): string {
52 return self::get_client_data()['client_id'] ?? '';
53 }
54
55 /**
56 * get_client_secret
57 * @return string
58 */
59 public static function get_client_secret(): string {
60 return self::get_client_data()['auth_secret'] ?? '';
61 }
62
63 /**
64 * get_connect_data
65 *
66 * @param bool $force
67 *
68 * @return array|null
69 */
70 public static function get_connect_data( bool $force = false ): array {
71 static $connect_data = null;
72 if ( $connect_data === null || $force ) {
73 $connect_data = array_merge(
74 [
75 'access_token' => '',
76 'access_token_secret' => '',
77 'last_update' => 0,
78 'token_type' => 'bearer',
79 'user' => [],
80 'version' => 1,
81 ],
82 get_option( self::CONNECT_DATA_OPTION_NAME, [] )
83 );
84 }
85 return $connect_data;
86 }
87
88 /**
89 * set_connect_data
90 *
91 * @param array $data
92 */
93 public static function set_connect_data( array $data = [] ): bool {
94 $data['last_update'] = time();
95 $data['version'] = 1;
96
97 update_option( self::OPTION_OWNER_USER_ID, get_current_user_id() );
98 return update_option( self::CONNECT_DATA_OPTION_NAME, $data );
99 }
100
101 /**
102 * get_access_token
103 * @return false|mixed
104 */
105 public static function get_access_token() {
106 return self::get_connect_data()['access_token'] ?? false;
107 }
108
109 /**
110 * get_connect_state
111 *
112 * @param bool $force
113 *
114 * @return false|mixed|null|string
115 */
116 public static function get_connect_state( bool $force = false ) {
117 $state = get_option( static::OPTION_CONNECT_STATE );
118 if ( ! $state || $force ) {
119 $state = wp_generate_password( 12, false );
120 update_option( static::OPTION_CONNECT_STATE, $state, false );
121 }
122 return $state;
123 }
124
125 /**
126 * get_site_key
127 * @return false|mixed|string|null
128 */
129 public static function get_site_key() {
130 $site_key = get_option( static::OPTION_CONNECT_SITE_KEY );
131
132 if ( ! $site_key ) {
133 $site_key = md5( uniqid( wp_generate_password() ) );
134 update_option( static::OPTION_CONNECT_SITE_KEY, $site_key, false );
135 }
136
137 return $site_key;
138 }
139
140 /**
141 * delete_connect_state
142 */
143 public static function delete_connect_state(): bool {
144 return delete_option( static::OPTION_CONNECT_STATE );
145 }
146
147 public static function get_activation_state(): string {
148 return get_option( self::OPTION_ACTIVATION_STATE, '' );
149 }
150
151 public static function set_activation_state( $state ): bool {
152 return update_option( self::OPTION_ACTIVATION_STATE, $state );
153 }
154
155 public static function delete_activation_state(): bool {
156 return delete_option( self::OPTION_ACTIVATION_STATE );
157 }
158
159 /**
160 * reset connect data
161 */
162 public static function reset(): void {
163 self::delete_connect_state();
164 self::delete_activation_state();
165
166 delete_option( self::OPTION_OWNER_USER_ID );
167 delete_option( static::CONNECT_DATA_OPTION_NAME );
168 delete_option( self::CONNECT_CLIENT_DATA_OPTION_NAME );
169 delete_transient( Connect::STATUS_CHECK_TRANSIENT );
170 }
171
172 public static function images_left(): int {
173 $plan_data = Connect::get_connect_status();
174
175 if ( empty( $plan_data ) ) {
176 return 0;
177 }
178
179 $quota = $plan_data->quota;
180 $used_quota = $plan_data->used_quota;
181
182 return max( $quota - $used_quota, 0 );
183 }
184
185 public static function user_is_subscription_owner(): bool {
186 $owner_id = (int) get_option( self::OPTION_OWNER_USER_ID );
187
188 return get_current_user_id() === $owner_id;
189 }
190 }
191