PluginProbe
Image Optimizer – Compress Images and Convert to WebP or AVIF / 1.6.3
Image Optimizer – Compress Images and Convert to WebP or AVIF v1.6.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 / classes / image / image-meta.php

image-meta.php in Image Optimizer – Compress Images and Convert to WebP or AVIF 1.6.3, at classes/image/image-meta.php

172 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\Classes\Image;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly.
7 }
8
9 class Image_Meta {
10 public const IMAGE_OPTIMIZER_METADATA_KEY = 'image_optimizer_metadata';
11 private const INITIAL_META_VALUE = [
12 'status' => Image_Status::NOT_OPTIMIZED,
13 'error_type' => null,
14 'compression_level' => null,
15 'sizes_optimized' => [],
16 'backups' => [],
17 'original_data' => [
18 'sizes' => [],
19 ],
20 ];
21
22 private int $image_id;
23 private array $image_meta;
24
25 public function get_status(): string {
26 return $this->image_meta['status'];
27 }
28
29 public function set_status( string $status ): Image_Meta {
30 $this->image_meta['status'] = $status;
31
32 return $this;
33 }
34
35 public function get_error_type(): ?string {
36 return $this->image_meta['error_type'];
37 }
38
39 public function set_error_type( ?string $type ): Image_Meta {
40 $this->image_meta['error_type'] = $type;
41
42 return $this;
43 }
44
45 public function get_compression_level(): ?string {
46 return $this->image_meta['compression_level'];
47 }
48
49 public function set_compression_level( string $compression_level ): Image_Meta {
50 $this->image_meta['compression_level'] = $compression_level;
51
52 return $this;
53 }
54
55 public function get_optimized_sizes(): array {
56 return $this->image_meta['sizes_optimized'];
57 }
58
59 public function add_optimized_size( string $optimized_size ): Image_Meta {
60 if ( ! in_array( $optimized_size, $this->image_meta['sizes_optimized'], true ) ) {
61 $this->image_meta['sizes_optimized'][] = $optimized_size;
62 }
63
64 return $this;
65 }
66
67 public function clear_optimized_sizes(): Image_Meta {
68 $this->image_meta['sizes_optimized'] = [];
69
70 return $this;
71 }
72
73 public function set_optimized_size( array $optimized_size ): Image_Meta {
74 $this->image_meta['sizes_optimized'] = $optimized_size;
75
76 return $this;
77 }
78
79 public function clear_backups(): Image_Meta {
80 $this->image_meta['backups'] = [];
81
82 return $this;
83 }
84
85 public function get_image_backup_paths(): array {
86 return $this->image_meta['backups'];
87 }
88
89 public function get_image_backup_path( string $image_size ): ?string {
90 return $this->image_meta['backups'][ $image_size ] ?? null;
91 }
92
93 public function set_image_backup_path( string $image_size, string $backup_path ): Image_Meta {
94 $this->image_meta['backups'][ $image_size ] = $backup_path;
95
96 return $this;
97 }
98
99 public function remove_image_backup_path( string $image_size ): Image_Meta {
100 unset( $this->image_meta['backups'][ $image_size ] );
101
102 return $this;
103 }
104
105 public function get_original_file_size( string $image_size ): ?int {
106 if ( ! isset( $this->image_meta['original_data']['sizes'][ $image_size ]['filesize'] ) ) {
107 return null;
108 }
109
110 return $this->image_meta['original_data']['sizes'][ $image_size ]['filesize'];
111 }
112
113 public function get_original_mime_type( string $image_size ): ?string {
114 if ( ! isset( $this->image_meta['original_data']['sizes'][ $image_size ] ) ) {
115 return null;
116 }
117
118 return $this->image_meta['original_data']['sizes'][ $image_size ]['mime-type'];
119 }
120
121 public function get_original_width( string $image_size ): ?string {
122 if ( ! isset( $this->image_meta['original_data']['sizes'][ $image_size ] ) ) {
123 return null;
124 }
125
126 return $this->image_meta['original_data']['sizes'][ $image_size ]['width'];
127 }
128
129 public function get_original_height( string $image_size ): ?string {
130 if ( ! isset( $this->image_meta['original_data']['sizes'][ $image_size ] ) ) {
131 return null;
132 }
133
134 return $this->image_meta['original_data']['sizes'][ $image_size ]['height'];
135 }
136
137 public function add_original_data( string $size, array $data ): Image_Meta {
138 $this->image_meta['original_data']['sizes'][ $size ] = $data;
139
140 return $this;
141 }
142
143 public function clear_original_data(): Image_Meta {
144 $this->image_meta['original_data'] = [ 'sizes' => [] ];
145
146 return $this;
147 }
148
149 public function delete(): bool {
150 return delete_post_meta( $this->image_id, self::IMAGE_OPTIMIZER_METADATA_KEY );
151 }
152
153 public function save(): Image_Meta {
154 update_post_meta( $this->image_id, self::IMAGE_OPTIMIZER_METADATA_KEY, $this->image_meta );
155
156 $this->query_meta();
157
158 return $this;
159 }
160
161 private function query_meta(): void {
162 $meta = get_post_meta( $this->image_id, self::IMAGE_OPTIMIZER_METADATA_KEY, true );
163 $this->image_meta = $meta ? array_replace_recursive( self::INITIAL_META_VALUE, $meta ) : self::INITIAL_META_VALUE;
164 }
165
166 public function __construct( int $image_id ) {
167 $this->image_id = $image_id;
168
169 $this->query_meta();
170 }
171 }
172