PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / 1.7.7
Image Optimizer – Compress Images and Convert to WebP or AVIF v1.7.7
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 / stats / classes / stats.php

stats.php in Image Optimizer – Compress Images and Convert to WebP or AVIF 1.7.7, at modules/stats/classes/stats.php

99 lines 2.9 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\Stats\Classes;
4
5 use ImageOptimization\Classes\Async_Operation\{
6 Async_Operation,
7 Async_Operation_Hook,
8 Queries\Operation_Query,
9 };
10 use ImageOptimization\Classes\Image\Image_Query_Builder;
11 use ImageOptimization\Modules\Optimization\Classes\Bulk_Optimization\{
12 Bulk_Optimization_Queue,
13 Bulk_Optimization_Queue_Status,
14 Bulk_Optimization_Queue_Type
15 };
16
17 if ( ! defined( 'ABSPATH' ) ) {
18 exit; // Exit if accessed directly.
19 }
20
21 class Stats {
22 public static function calculate_global_stats(): array {
23 $bulk_optimization_operation_status = self::get_bulk_optimization_status();
24
25 return [
26 'optimization_stats' => Optimization_Stats::get_image_stats(),
27 'bulk_optimization_status' => $bulk_optimization_operation_status,
28 'bulk_restoring_status' => self::get_bulk_restoring_status(),
29 'bulk_backup_removing_status' => self::get_bulk_backup_removing_status(),
30 'backups_exist' => self::backups_exist(),
31 ];
32 }
33
34 private static function get_bulk_optimization_status(): string {
35 $queue = new Bulk_Optimization_Queue( Bulk_Optimization_Queue_Type::OPTIMIZATION );
36
37 if ( ! $queue->exists() ) {
38 return Async_Operation::OPERATION_STATUS_NOT_STARTED;
39 }
40
41 $queue_status = $queue->get_status();
42
43 switch ( $queue_status ) {
44 case Bulk_Optimization_Queue_Status::PROCESSING:
45 case Bulk_Optimization_Queue_Status::PENDING:
46 return Async_Operation::OPERATION_STATUS_RUNNING;
47
48 case Bulk_Optimization_Queue_Status::CANCELLED:
49 return Async_Operation::OPERATION_STATUS_CANCELED;
50
51 case Bulk_Optimization_Queue_Status::COMPLETED:
52 case Bulk_Optimization_Queue_Status::FAILED:
53 default:
54 return Async_Operation::OPERATION_STATUS_NOT_STARTED;
55 }
56 }
57
58 private static function get_bulk_restoring_status(): string {
59 $active_query = ( new Operation_Query() )
60 ->set_hook( Async_Operation_Hook::RESTORE_MANY_IMAGES )
61 ->set_status( [
62 Async_Operation::OPERATION_STATUS_PENDING,
63 Async_Operation::OPERATION_STATUS_RUNNING,
64 ] )
65 ->set_limit( 1 );
66
67 $active_operations = Async_Operation::get( $active_query );
68
69 return ! empty( $active_operations )
70 ? Async_Operation::OPERATION_STATUS_RUNNING
71 : Async_Operation::OPERATION_STATUS_NOT_STARTED;
72 }
73
74 private static function get_bulk_backup_removing_status(): string {
75 $active_query = ( new Operation_Query() )
76 ->set_hook( Async_Operation_Hook::REMOVE_MANY_BACKUPS )
77 ->set_status( [
78 Async_Operation::OPERATION_STATUS_PENDING,
79 Async_Operation::OPERATION_STATUS_RUNNING,
80 ] )
81 ->set_limit( 1 );
82
83 $active_operations = Async_Operation::get( $active_query );
84
85 return ! empty( $active_operations )
86 ? Async_Operation::OPERATION_STATUS_RUNNING
87 : Async_Operation::OPERATION_STATUS_NOT_STARTED;
88 }
89
90 private static function backups_exist(): bool {
91 $query = ( new Image_Query_Builder() )
92 ->set_paging_size( 1 )
93 ->return_images_only_with_backups()
94 ->execute();
95
96 return $query->post_count > 0;
97 }
98 }
99