PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / 1.5.3
Image Optimizer – Compress Images and Convert to WebP or AVIF v1.5.3
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.5.3, at modules/oauth/classes/data.php

183 lines 4.3 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_connect_data
57 *
58 * @param bool $force
59 *
60 * @return array|null
61 */
62 public static function get_connect_data( bool $force = false ): array {
63 static $connect_data = null;
64 if ( $connect_data === null || $force ) {
65 $connect_data = array_merge(
66 [
67 'access_token' => '',
68 'access_token_secret' => '',
69 'last_update' => 0,
70 'token_type' => 'bearer',
71 'user' => [],
72 'version' => 1,
73 ],
74 get_option( self::CONNECT_DATA_OPTION_NAME, [] )
75 );
76 }
77 return $connect_data;
78 }
79
80 /**
81 * set_connect_data
82 *
83 * @param array $data
84 */
85 public static function set_connect_data( array $data = [] ): bool {
86 $data['last_update'] = time();
87 $data['version'] = 1;
88
89 update_option( self::OPTION_OWNER_USER_ID, get_current_user_id() );
90 return update_option( self::CONNECT_DATA_OPTION_NAME, $data );
91 }
92
93 /**
94 * get_access_token
95 * @return false|mixed
96 */
97 public static function get_access_token() {
98 return self::get_connect_data()['access_token'] ?? false;
99 }
100
101 /**
102 * get_connect_state
103 *
104 * @param bool $force
105 *
106 * @return false|mixed|null|string
107 */
108 public static function get_connect_state( bool $force = false ) {
109 $state = get_option( static::OPTION_CONNECT_STATE );
110 if ( ! $state || $force ) {
111 $state = wp_generate_password( 12, false );
112 update_option( static::OPTION_CONNECT_STATE, $state, false );
113 }
114 return $state;
115 }
116
117 /**
118 * get_site_key
119 * @return false|mixed|string|null
120 */
121 public static function get_site_key() {
122 $site_key = get_option( static::OPTION_CONNECT_SITE_KEY );
123
124 if ( ! $site_key ) {
125 $site_key = md5( uniqid( wp_generate_password() ) );
126 update_option( static::OPTION_CONNECT_SITE_KEY, $site_key, false );
127 }
128
129 return $site_key;
130 }
131
132 /**
133 * delete_connect_state
134 */
135 public static function delete_connect_state(): bool {
136 return delete_option( static::OPTION_CONNECT_STATE );
137 }
138
139 public static function get_activation_state(): string {
140 return get_option( self::OPTION_ACTIVATION_STATE, '' );
141 }
142
143 public static function set_activation_state( $state ): bool {
144 return update_option( self::OPTION_ACTIVATION_STATE, $state );
145 }
146
147 public static function delete_activation_state(): bool {
148 return delete_option( self::OPTION_ACTIVATION_STATE );
149 }
150
151 /**
152 * reset connect data
153 */
154 public static function reset(): void {
155 self::delete_connect_state();
156 self::delete_activation_state();
157
158 delete_option( self::OPTION_OWNER_USER_ID );
159 delete_option( static::CONNECT_DATA_OPTION_NAME );
160 delete_option( self::CONNECT_CLIENT_DATA_OPTION_NAME );
161 delete_transient( Connect::STATUS_CHECK_TRANSIENT );
162 }
163
164 public static function images_left(): int {
165 $plan_data = Connect::get_connect_status();
166
167 if ( empty( $plan_data ) ) {
168 return 0;
169 }
170
171 $quota = $plan_data->quota;
172 $used_quota = $plan_data->used_quota;
173
174 return max( $quota - $used_quota, 0 );
175 }
176
177 public static function user_is_subscription_owner(): bool {
178 $owner_id = (int) get_option( self::OPTION_OWNER_USER_ID );
179
180 return get_current_user_id() === $owner_id;
181 }
182 }
183