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 / Post / Attachments.php
codepress-admin-columns / classes / Formatter / Post Last commit date
Attachments.php 2 days ago Author.php 2 days ago BeforeMoreContent.php 2 days ago CommentCount.php 2 days ago CommentsForPostLink.php 2 days ago ContentExcerpt.php 2 days ago DatePublishFormatted.php 2 days ago Depth.php 2 days ago DescriptivePostStatus.php 2 days ago DiscussionStatus.php 2 days ago Excerpt.php 2 days ago ExcerptMissingMessage.php 2 days ago ExcerptRaw.php 2 days ago FeaturedImage.php 2 days ago HasCommentStatus.php 2 days ago IsPasswordProtected.php 2 days ago IsSticky.php 2 days ago LastModifiedAuthor.php 2 days ago Meta.php 2 days ago ModifiedDate.php 2 days ago Order.php 2 days ago PageTemplate.php 2 days ago Path.php 2 days ago Permalink.php 2 days ago PingStatus.php 2 days ago PostContent.php 2 days ago PostDate.php 2 days ago PostDateTimestamp.php 2 days ago PostFormat.php 2 days ago PostFormatIcon.php 2 days ago PostFormatLabel.php 2 days ago PostLink.php 2 days ago PostParentId.php 2 days ago PostReferences.php 2 days ago PostStatus.php 2 days ago PostStatusIcon.php 2 days ago PostTerms.php 2 days ago PostTermsOriginal.php 2 days ago PostTitle.php 2 days ago Property.php 2 days ago ShortLink.php 2 days ago Shortcodes.php 2 days ago Slug.php 2 days ago
Attachments.php
54 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter\Post;
6
7 use AC\Exception\ValueNotFoundException;
8 use AC\Formatter;
9 use AC\Type\Value;
10 use AC\Type\ValueCollection;
11
12 class Attachments implements Formatter
13 {
14 public function format(Value $value): ValueCollection
15 {
16 $parent_id = (int)$value->get_value();
17
18 if (! $parent_id) {
19 throw new ValueNotFoundException('Parent ID is required');
20 }
21
22 $attachment_ids = get_posts([
23 'post_type' => 'attachment',
24 'posts_per_page' => -1,
25 'post_status' => 'inherit',
26 'post_parent' => $parent_id,
27 'fields' => 'ids',
28 ]);
29
30 return ValueCollection::from_ids($parent_id, $this->group_by_extension($attachment_ids));
31 }
32
33 /**
34 * Group attachment IDs by file extension, preserving the order of first appearance.
35 *
36 * @param int[] $ids
37 * @return int[]
38 */
39 private function group_by_extension(array $ids): array
40 {
41 $groups = [];
42
43 foreach ($ids as $id) {
44 $file = get_attached_file($id);
45 $ext = $file ? strtolower((string)pathinfo($file, PATHINFO_EXTENSION)) : '';
46
47 $groups[$ext][] = $id;
48 }
49
50 return array_merge(...array_values($groups));
51 }
52
53 }
54