PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.1.4
Admin Columns v7.1.4
7.1.4 7.0.19 2.3.5 2.4 2.4.1 2.4.10 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.6.1 2.5.6.2 2.5.6.3 2.5.6.4 3.0 3.0.1 3.0.2 3.0.3 3.0.5 3.0.7 3.1 3.1.1 3.1.10 3.1.2 3.1.3 3.1.5 3.2.3 3.2.7 3.3.1 3.4.1 3.4.6 3.4.8 4.0.1 4.0.3 4.1.6 4.2.2 4.2.5 4.3 4.3.2 4.4.1 4.4.4 4.4.5 4.5.5 4.6.1 4.7.18 4.7.19 4.7.20 4.7.7 7.0.13 7.0.14 7.0.16 trunk 1.0 1.1 1.1.3 1.2 1.2.1 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.5.1 1.4.6 1.4.6.1 1.4.6.2 1.4.6.3 1.4.6.4 1.4.7 1.4.8 1.4.9 2.0.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 2.2.1 2.2.1.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.5.1 2.2.6 2.2.6.1 2.2.6.2 2.2.6.3 2.2.6.4 2.2.7 2.2.8 2.2.8.1 2.2.9 2.3.1 2.3.2 2.3.3
codepress-admin-columns / classes / Formatter / Media / AvailableSizes.php
codepress-admin-columns / classes / Formatter / Media Last commit date
Audio 2 days ago Video 2 days ago AttachmentMetaData.php 2 days ago AttachmentUrl.php 2 days ago AudioPlayer.php 2 days ago AvailableSizes.php 2 days ago Dimensions.php 2 days ago Download.php 2 days ago ExifData.php 2 days ago FileLinkToUrl.php 2 days ago FileName.php 2 days ago FileSize.php 2 days ago Link.php 2 days ago NestedAttachmentMetaData.php 2 days ago NumberFormat.php 2 days ago PostMimeType.php 2 days ago PreviewViewLink.php 2 days ago VideoEmbed.php 2 days ago
AvailableSizes.php
101 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter\Media;
6
7 use AC\Exception\ValueNotFoundException;
8 use AC\Formatter;
9 use AC\Helper;
10 use AC\Type\Value;
11
12 class AvailableSizes implements Formatter
13 {
14 private bool $include_missing_file_sizes;
15
16 public function __construct(bool $include_missing_file_sizes)
17 {
18 $this->include_missing_file_sizes = $include_missing_file_sizes;
19 }
20
21 public function format(Value $value): Value
22 {
23 $meta = get_post_meta($value->get_id(), '_wp_attachment_metadata', true);
24 $sizes = $meta['sizes'] ?? null;
25
26 if (! $sizes) {
27 throw new ValueNotFoundException();
28 }
29
30 $paths = [];
31
32 $available_sizes = $this->get_available_sizes($sizes);
33
34 if ($available_sizes) {
35 $url = wp_get_attachment_url($value->get_id());
36
37 if ($url) {
38 $paths[] = Helper\Html::create()->tooltip(
39 Helper\Html::create()->link($url, __('original', 'codepress-admin-columns')),
40 basename($url)
41 );
42 }
43
44 foreach ($available_sizes as $size) {
45 $src = (array)wp_get_attachment_image_src($value->get_id(), $size);
46
47 if (! empty($src[0])) {
48 $paths[] = Helper\Html::create()->tooltip(Helper\Html::create()->link($src[0], $size), basename($src[0]));
49 }
50 }
51 }
52
53 if ($this->include_missing_file_sizes) {
54 $missing = $this->get_missing_sizes($sizes);
55
56 if ($missing) {
57 foreach ($missing as $size) {
58 $paths[] = sprintf(
59 '<span class="ac-missing-size">%s</span>',
60 Helper\Html::create()->tooltip(
61 $size,
62 sprintf(
63 __('Missing image file for size %s.', 'codepress-admin-columns'),
64 '<em>"' . $size . '"</em>'
65 )
66 )
67 );
68 }
69 }
70 }
71
72 return $value->with_value(
73 "<div class='ac-image-sizes'>" . Helper\Html::create()->divided($paths) . "</div>"
74 );
75 }
76
77 private function get_available_sizes(array $image_sizes): array
78 {
79 return array_intersect(array_keys($image_sizes), get_intermediate_image_sizes());
80 }
81
82 private function get_missing_sizes(array $image_sizes): array
83 {
84 global $_wp_additional_image_sizes;
85
86 if (empty($_wp_additional_image_sizes)) {
87 return [];
88 }
89
90 $additional_size = $_wp_additional_image_sizes;
91
92 if (isset($additional_size['post-thumbnail'])) {
93 unset($additional_size['post-thumbnail']);
94 }
95
96 // image does not have these additional sizes rendered yet
97 return array_diff(array_keys((array)$additional_size), array_keys($image_sizes));
98 }
99
100 }
101