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

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

164 lines 4.1 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 $this->image_meta['sizes_optimized'][] = $optimized_size;
61
62 return $this;
63 }
64
65 public function clear_optimized_sizes(): Image_Meta {
66 $this->image_meta['sizes_optimized'] = [];
67
68 return $this;
69 }
70
71 public function clear_backups(): Image_Meta {
72 $this->image_meta['backups'] = [];
73
74 return $this;
75 }
76
77 public function get_image_backup_paths(): array {
78 return $this->image_meta['backups'];
79 }
80
81 public function get_image_backup_path( string $image_size ): ?string {
82 return $this->image_meta['backups'][ $image_size ] ?? null;
83 }
84
85 public function set_image_backup_path( string $image_size, string $backup_path ): Image_Meta {
86 $this->image_meta['backups'][ $image_size ] = $backup_path;
87
88 return $this;
89 }
90
91 public function remove_image_backup_path( string $image_size ): Image_Meta {
92 unset( $this->image_meta['backups'][ $image_size ] );
93
94 return $this;
95 }
96
97 public function get_original_file_size( string $image_size ): ?int {
98 if ( ! isset( $this->image_meta['original_data']['sizes'][ $image_size ]['filesize'] ) ) {
99 return null;
100 }
101
102 return $this->image_meta['original_data']['sizes'][ $image_size ]['filesize'];
103 }
104
105 public function get_original_mime_type( string $image_size ): ?string {
106 if ( ! isset( $this->image_meta['original_data']['sizes'][ $image_size ] ) ) {
107 return null;
108 }
109
110 return $this->image_meta['original_data']['sizes'][ $image_size ]['mime-type'];
111 }
112
113 public function get_original_width( 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 ]['width'];
119 }
120
121 public function get_original_height( 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 ]['height'];
127 }
128
129 public function add_original_data( string $size, array $data ): Image_Meta {
130 $this->image_meta['original_data']['sizes'][ $size ] = $data;
131
132 return $this;
133 }
134
135 public function clear_original_data(): Image_Meta {
136 $this->image_meta['original_data'] = [ 'sizes' => [] ];
137
138 return $this;
139 }
140
141 public function delete(): bool {
142 return delete_post_meta( $this->image_id, self::IMAGE_OPTIMIZER_METADATA_KEY );
143 }
144
145 public function save(): Image_Meta {
146 update_post_meta( $this->image_id, self::IMAGE_OPTIMIZER_METADATA_KEY, $this->image_meta );
147
148 $this->query_meta();
149
150 return $this;
151 }
152
153 private function query_meta(): void {
154 $meta = get_post_meta( $this->image_id, self::IMAGE_OPTIMIZER_METADATA_KEY, true );
155 $this->image_meta = $meta ? array_replace_recursive( self::INITIAL_META_VALUE, $meta ) : self::INITIAL_META_VALUE;
156 }
157
158 public function __construct( int $image_id ) {
159 $this->image_id = $image_id;
160
161 $this->query_meta();
162 }
163 }
164