PluginProbe ʕ •ᴥ•ʔ
10Web Booster – Website speed optimization, Cache & Page Speed optimizer / 2.33.0
10Web Booster – Website speed optimization, Cache & Page Speed optimizer v2.33.0
2.33.0 2.30.5 2.30.7 2.30.9 2.31.10 2.31.8 2.32.11 2.32.21 2.32.3 2.32.4 2.32.7 2.6.31 2.6.40 2.6.42 2.6.7 2.7.37 2.7.44 2.7.47 2.8.18 2.8.19 2.8.32 2.8.34 2.8.35 2.9.23 2.9.24 2.9.25 2.9.27 v2.27.4 trunk 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.17 2.0.18 2.0.21 2.0.22 2.0.25 2.0.26 2.0.27 2.0.3 2.0.7 2.0.9 2.10.46 2.10.65 2.10.66 2.10.68 2.11.41 2.11.42 2.11.43 2.12.15 2.12.21 2.12.22 2.12.23 2.12.26 2.13.37 2.13.40 2.13.41 2.13.42 2.13.44 2.13.45 2.13.47 2.14.49 2.14.50 2.15.18 2.17.21 2.17.23 2.18.17 2.19.44 2.19.45 2.19.46 2.19.49 2.2.12 2.2.15 2.2.16 2.2.18 2.2.8 2.20.31 2.20.32 2.20.33 2.21.11 2.21.12 2.21.16 2.21.25 2.22.32 2.23.13 2.23.15 2.23.16 2.23.18 2.24.12 2.24.14 2.24.18 2.25.14 2.26.6 2.28.10 2.28.13 2.28.14 2.28.7 2.29.1 2.29.2 2.29.3 2.3.0 2.3.1 2.3.2 2.3.3 2.30.18
tenweb-speed-optimizer / OptimizerDataRepository.php
tenweb-speed-optimizer Last commit date
assets 10 months ago config 2 years ago exported 3 years ago includes 2 months ago test 3 years ago vendor 1 month ago views 10 months ago .editorconfig 2 years ago OptimizerAdmin.php 1 year ago OptimizerAdminBar.php 1 year ago OptimizerApi.php 1 month ago OptimizerCli.php 1 year ago OptimizerDataRepository.php 1 year ago changelog.txt 2 years ago config.php 1 month ago env.php 1 month ago phpcs.xml 2 years ago readme.txt 1 month ago tenweb_speed_optimizer.php 1 month ago webpack.config.js 3 years ago
OptimizerDataRepository.php
400 lines
1 <?php
2
3 namespace TenWebOptimizer;
4
5 use Exception;
6 use WP_Query;
7
8 class OptimizerDataRepository
9 {
10 public $modes = [];
11
12 public function __construct()
13 {
14 $this->modes = \TenWebOptimizer\OptimizerUtils::get_modes();
15 }
16
17 public function get_incompatible_active_plugins()
18 {
19 $data_for_response = [
20 'success' => false,
21 'message' => 'Cannot get incompatible plugins',
22 ];
23
24 try {
25 $two_incompatible_plugins = OptimizerUtils::get_conflicting_plugins();
26 $data_for_response['success'] = true;
27 $data_for_response['message'] = 'Successfully';
28 $data_for_response['two_incompatible_plugins'] = $two_incompatible_plugins;
29
30 return $data_for_response;
31 } catch (Exception $exception) {
32 return new $data_for_response();
33 }
34 }
35
36 public function get_modes($page_id)
37 {
38 $data_for_response = [
39 'success' => false,
40 'message' => 'Mode not found',
41 ];
42
43 try {
44 if ($page_id === 'all') {
45 $mode = get_option('two_default_mode', OptimizerUtils::MODES['extreme']);
46 } elseif ($page_id === 'front_page') {
47 $mode = get_option('two_mode_front_page');
48 } elseif (false !== strpos($page_id, 'term_')) {
49 $term_id = (int) ltrim($page_id, 'term_');
50 $mode = get_term_meta($term_id, 'two_mode', true);
51 } elseif (false !== strpos($page_id, 'user_')) {
52 $user_id = (int) ltrim($page_id, 'user_');
53 $mode = get_user_meta($user_id, 'two_mode', true);
54 } else {
55 $mode = get_post_meta($page_id, 'two_mode', true);
56 }
57
58 if (is_array($mode) && isset($mode['mode']) && isset($this->modes[$mode['mode']])) {
59 $mode = $mode['mode'];
60 $data_for_response['success'] = true;
61 $data_for_response['message'] = 'success';
62 $data_for_response['mode'] = $mode;
63 }
64 } catch (Exception $exception) {
65 $data_for_response['message'] = 'Error in getting modes';
66 $data_for_response['error'] = $exception->getMessage() . ' in ' . $exception->getFile() . ' on ' . $exception->getLine();
67
68 return $data_for_response;
69 }
70
71 return $data_for_response;
72 }
73
74 public function get_global_data()
75 {
76 $data_for_response = [
77 'success' => false,
78 'message' => 'Data not found',
79 'data' => []
80 ];
81
82 try {
83 $global_mode = get_option('two_default_mode', OptimizerUtils::MODES['extreme']);
84
85 if (is_array($global_mode) && isset($global_mode['mode'])) {
86 $global_mode = $global_mode['mode'];
87 } else {
88 $global_mode = false;
89 }
90 $count_posts = wp_count_posts('post');
91 $count_pages = wp_count_posts('page');
92 $count_terms = (int) get_terms(['fields' => 'count', 'hide_empty' => false]);
93 $two_update_available = OptimizerUtils::check_plugin_update();
94 global $TwoSettings;
95 $global_data = [
96 'update_available' => $two_update_available,
97 'site_url' => site_url(),
98 'version' => TENWEB_SO_VERSION,
99 'global_mode' => $global_mode,
100 'test_mode' => 'on' == $TwoSettings->get_settings('two_test_mode') ? 'on' : 'off',
101 'page_count' => $count_pages->publish,
102 'post_count' => $count_posts->publish,
103 'term_count' => $count_terms,
104 ];
105 $data_for_response['success'] = true;
106 $data_for_response['message'] = 'Data found successfully';
107 $data_for_response['data'] = $global_data;
108 } catch (Exception $exception) {
109 $data_for_response['message'] = 'Error in getting data';
110 $data_for_response['error'] = $exception->getMessage() . ' in ' . $exception->getFile() . ' on ' . $exception->getLine();
111
112 return $data_for_response;
113 }
114
115 return $data_for_response;
116 }
117
118 public function get_pages($is_custom = 0)
119 {
120 $data_for_response = [
121 'success' => false,
122 'message' => 'Pages not found',
123 'data' => []
124 ];
125
126 try {
127 $so_pages_list = [
128 'pages' => [],
129 ];
130 $two_optimized_pages = \TenWebOptimizer\OptimizerUtils::getCriticalPages();
131
132 $posts_args = [
133 'meta_key' => 'two_mode',
134 'post_type' => 'any',
135 ];
136 $optimized_posts = new WP_Query($posts_args);
137
138 $terms_args = [
139 'taxonomy' => [],
140 'hide_empty' => false,
141 'meta_key' => 'two_mode',
142 ];
143
144 $terms = get_terms($terms_args);
145
146 $users_args = [
147 'meta_key' => 'two_mode',
148 ];
149
150 $users = get_users($users_args);
151
152 if (isset($optimized_posts->posts)) {
153 foreach ($optimized_posts->posts as $post) {
154 if (isset($post->ID) && !isset($two_optimized_pages[$post->ID])) {
155 $two_optimized_pages[$post->ID] = [
156 'id' => $post->ID,
157 'title' => $post->post_title,
158 'url' => get_permalink($post->ID),
159 'status' => 'success',
160 ];
161 }
162 }
163 }
164
165 if (is_array($terms)) {
166 foreach ($terms as $term) {
167 if (isset($term->term_id)) {
168 $id = 'term_' . $term->term_id;
169
170 if (!isset($two_optimized_pages[$id])) {
171 $two_optimized_pages[$id] = [
172 'id' => $id,
173 'title' => $term->name,
174 'url' => get_term_link($term->term_id),
175 'status' => 'success',
176 ];
177 }
178 }
179 }
180 }
181
182 if (is_array($users)) {
183 foreach ($users as $user) {
184 if (isset($user->data, $user->data->ID)) {
185 $id = 'user_' . $user->data->ID;
186
187 if (!isset($two_optimized_pages[$id])) {
188 $two_optimized_pages[$id] = [
189 'id' => $id,
190 'title' => $user->data->display_name,
191 'url' => get_author_posts_url($user->data->ID),
192 'status' => 'success',
193 ];
194 }
195 }
196 }
197 }
198
199 if (is_array($two_optimized_pages)) {
200 foreach ($two_optimized_pages as $p_id => $so_page) {
201 $so_page_data = [
202 'page_id' => $p_id,
203 'title' => $so_page['title'],
204 'url' => $so_page['url'],
205 'status' => $so_page['status'],
206 ];
207
208 if ($p_id === 'front_page') {
209 $page_mode = get_option('two_mode_front_page');
210 $two_optimized_date_front_page = get_option('two_optimized_date_front_page');
211 } elseif (false !== strpos($p_id, 'term_')) {
212 $p_id = (int) ltrim($p_id, 'term_');
213 $so_page_data['page_id'] = 'term_' . (int) ltrim($so_page_data['page_id'], 'term_');
214 $page_mode = get_term_meta($p_id, 'two_mode', true);
215 $two_optimized_date = get_term_meta($p_id, 'two_optimized_date', true);
216 } elseif (false !== strpos($p_id, 'user_')) {
217 $p_id = (int) ltrim($p_id, 'user_');
218 $so_page_data['page_id'] = 'user_' . (int) ltrim($so_page_data['page_id'], 'user_');
219 $page_mode = get_user_meta($p_id, 'two_mode', true);
220 $two_optimized_date = get_user_meta($p_id, 'two_optimized_date', true);
221 } else {
222 $p_id = (int) $p_id;
223 $so_page_data['page_id'] = (int) $so_page_data['page_id'];
224 $page_mode = get_post_meta($p_id, 'two_mode', true);
225 $two_optimized_date = get_post_meta($p_id, 'two_optimized_date', true);
226 }
227
228 if (is_array($page_mode) && isset($page_mode['mode'])) {
229 $page_mode_name = $page_mode['mode'];
230 } else {
231 $page_mode_name = false;
232 }
233 $so_page_data['mode'] = $page_mode_name;
234
235 if ((int) $is_custom === 1) {
236 if (!isset($page_mode['is_custom']) || !$page_mode['is_custom']) {
237 continue;
238 }
239 }
240
241 if (isset($so_page['critical_date'])) {
242 $so_page_data['date'] = $so_page['critical_date'];
243 } else {
244 if (isset($two_optimized_date)) {
245 $so_page_data['date'] = $two_optimized_date;
246 } elseif (isset($two_optimized_date_front_page)) {
247 $so_page_data['date'] = $two_optimized_date_front_page;
248 }
249 }
250
251 $so_page_data['is_custom'] = 0;
252
253 if (isset($page_mode['is_custom'])) {
254 $so_page_data['is_custom'] = $page_mode['is_custom'];
255 }
256
257 $so_pages_list['pages'][] = $so_page_data;
258 }
259 $data_for_response['success'] = true;
260 $data_for_response['message'] = 'Pages found successfully';
261 $data_for_response['data'] = $so_pages_list;
262 }
263 } catch (Exception $exception) {
264 $data_for_response['message'] = 'Error in getting pages';
265 $data_for_response['error'] = $exception->getMessage() . ' in ' . $exception->getFile() . ' on ' . $exception->getLine();
266
267 return $data_for_response;
268 }
269
270 return $data_for_response;
271 }
272
273 public function get_page_cache_status()
274 {
275 $data_for_response = [
276 'success' => false,
277 'page_cache' => true,
278 'message' => 'Cannot get page cache status',
279 'clear_cache_date' => '',
280 ];
281
282 try {
283 global $TwoSettings;
284 $data_for_response['clear_cache_date'] = $TwoSettings->get_settings('two_clear_cache_date', '');
285 $two_page_cache = $TwoSettings->get_settings('two_page_cache', '');
286 $data_for_response['success'] = true;
287
288 if ($two_page_cache === 'on') {
289 $data_for_response['message'] = 'Page cache enabled';
290 $data_for_response['page_cache'] = true;
291 } else {
292 $data_for_response['message'] = 'Page cache disabled';
293 $data_for_response['page_cache'] = false;
294 }
295 } catch (Exception $exception) {
296 $data_for_response['message'] = 'Error in getting page cache status';
297 $data_for_response['error'] = $exception->getMessage() . ' in ' . $exception->getFile() . ' on ' . $exception->getLine();
298
299 return $data_for_response;
300 }
301
302 return $data_for_response;
303 }
304
305 public function get_webp_status()
306 {
307 $data_for_response = [
308 'success' => false,
309 'message' => 'Cannot get webp status.',
310 ];
311
312 try {
313 global $TwoSettings;
314 $webp_status = [];
315
316 if (TENWEB_SO_HOSTED_ON_10WEB) {
317 $webp_status['hosting'] = '10Web';
318 $webp_status['webp_delivery'] = $TwoSettings->get_settings('two_enable_nginx_webp_delivery');
319 } else {
320 if (TENWEB_SO_HOSTED_ON_NGINX) {
321 $webp_status['hosting'] = 'NGINX';
322 } else {
323 $webp_status['hosting'] = 'APACHE';
324 $webp_status['htaccess_writable'] = TENWEB_SO_HTACCESS_WRITABLE;
325 $webp_status['webp_delivery'] = $TwoSettings->get_settings('two_enable_htaccess_webp_delivery');
326 }
327 $two_webp_delivery_working = \TenWebOptimizer\OptimizerUtils::testWebPDelivery();
328 $webp_status['webp_delivery_working'] = $two_webp_delivery_working;
329 $webp_status['picture_webp_delivery'] = $TwoSettings->get_settings('two_enable_picture_webp_delivery');
330 }
331
332 if ($webp_status) {
333 $data_for_response['success'] = true;
334 $data_for_response['message'] = 'WebP status collected successfully.';
335 $data_for_response['data'] = $webp_status;
336 }
337 } catch (Exception $exception) {
338 $data_for_response['message'] = 'Error in getting webp status';
339 $data_for_response['error'] = $exception->getMessage() . ' in ' . $exception->getFile() . ' on ' . $exception->getLine();
340
341 return $data_for_response;
342 }
343
344 return $data_for_response;
345 }
346
347 public function get_settings($filter = '')
348 {
349 $filter_arr = [];
350
351 if (!empty($filter)) {
352 $filter_arr = explode(',', $filter);
353 }
354 $TwoSettings = new \TenWebOptimizer\OptimizerSettings();
355 $settings_data = $TwoSettings->settings_names;
356 $default_settings = $TwoSettings->default_settings;
357 $two_settings = get_option('two_settings');
358 $two_settings = json_decode($two_settings, true);
359 $two_settings['two_critical_pages'] = OptimizerUtils::getCriticalPages();
360 $filter_data = [];
361
362 if (!empty($filter_arr)) {
363 foreach ($filter_arr as $option_name) {
364 if (isset($settings_data[$option_name])) {
365 $filter_data[$option_name] = $settings_data[$option_name];
366 }
367 }
368
369 if (!empty($filter_data)) {
370 $settings_data = $filter_data;
371 }
372 }
373
374 foreach ($two_settings as $key => $val) {
375 if (isset($settings_data[$key])) {
376 if ($settings_data[$key]['type'] == 'checkbox' && (empty($val) || $val === 'false')) {
377 $val = 'off';
378 }
379
380 if ($settings_data[$key]['default'] == 'true') {
381 $settings_data[$key]['default'] = 'on';
382 }
383
384 if ($key === 'two_critical_status' && $val === 'true') {
385 $val = 'on';
386 }
387
388 if ($settings_data[$key]['type'] == 'select') {
389 if (empty($val) && isset($default_settings[$key])) {
390 $val = $default_settings[$key];
391 }
392 }
393 $settings_data[$key]['value'] = $val;
394 }
395 }
396
397 return $settings_data;
398 }
399 }
400