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 / Value / Extended / MediaPreview.php
codepress-admin-columns / classes / Value / Extended Last commit date
ExtendedValue.php 2 days ago MediaPreview.php 2 days ago Posts.php 2 days ago Value.php 2 days ago
MediaPreview.php
73 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Value\Extended;
6
7 use AC\ApplyFilter\ValidAudioMimetypes;
8 use AC\ApplyFilter\ValidVideoMimetypes;
9 use AC\Column;
10 use AC\ListScreen;
11 use AC\Value\ExtendedValueLink;
12 use AC\View\Embed\Video;
13
14 class MediaPreview implements ExtendedValue
15 {
16 private const NAME = 'media-preview';
17
18 public function get_link($id, string $label): ExtendedValueLink
19 {
20 return new ExtendedValueLink($label, $id, self::NAME);
21 }
22
23 public function can_render(string $view): bool
24 {
25 return $view === self::NAME;
26 }
27
28 private function get_media_type($id): ?string
29 {
30 $mime_type = get_post_field('post_mime_type', $id);
31
32 switch (true) {
33 case in_array($mime_type, (new ValidVideoMimetypes())->apply_filters(), true):
34 return 'video';
35
36 case in_array($mime_type, (new ValidAudioMimetypes())->apply_filters(), true):
37 return 'audio';
38
39 case wp_get_attachment_image_src($id):
40 return 'image';
41
42 default:
43 return null;
44 }
45 }
46
47 public function render($id, array $params, Column $column, ListScreen $list_screen): string
48 {
49 $url = wp_get_attachment_url($id);
50
51 if ($url) {
52 switch ($this->get_media_type($id)) {
53 case 'audio':
54 return sprintf(
55 '<audio controls autoplay="autoplay" preload="none" src="%s">%s</audio>',
56 esc_url($url),
57 __('No support for audio player', 'codepress-admin-columns')
58 );
59 case 'video':
60 return (new Video([]))
61 ->set_src($url)
62 ->render();
63
64 case 'image':
65 return sprintf('<img src="%s" alt="">', esc_url($url));
66 }
67 }
68
69 return __('Preview not available', 'codepress-admin-columns');
70 }
71
72 }
73