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

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