PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / 1.7.4
Image Optimizer – Compress Images and Convert to WebP or AVIF v1.7.4
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
image-optimization / modules / oauth / classes / data.php

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

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