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 / User / PostCount.php
codepress-admin-columns / classes / Formatter / User Last commit date
AuthorPostUrl.php 4 days ago CommentCount.php 4 days ago FirstPost.php 4 days ago FullName.php 4 days ago HasRichEditing.php 4 days ago LastPost.php 4 days ago Meta.php 4 days ago PostCount.php 4 days ago PostCountOriginal.php 4 days ago Property.php 4 days ago Roles.php 4 days ago ShowToolbar.php 4 days ago TranslatedRoles.php 4 days ago UserFilteredPostLink.php 4 days ago UserLink.php 4 days ago UserName.php 4 days ago
PostCount.php
110 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Formatter\User;
6
7 use AC\Exception\ValueNotFoundException;
8 use AC\Formatter;
9 use AC\Helper;
10 use AC\Type\Value;
11 use AC\Value\Extended\Posts;
12 use WP_Post_Type;
13
14 class PostCount implements Formatter
15 {
16 private array $post_types;
17
18 private array $post_stati;
19
20 public function __construct(array $post_types = [], ?array $post_stati = null)
21 {
22 $this->post_types = $post_types ?: array_keys(get_post_types(['show_ui' => true]));
23 $this->post_stati = $post_stati ?: get_post_stati(['internal' => 0]);
24 }
25
26 public function format(Value $value): Value
27 {
28 $user_id = (int)$value->get_id();
29
30 $user = get_userdata($user_id);
31
32 if (! $user) {
33 throw ValueNotFoundException::from_id($user_id);
34 }
35
36 $count = $this->get_post_count(
37 $user_id
38 );
39
40 if ($count < 1) {
41 return $value->with_value(false);
42 }
43
44 $single_posttype = $this->is_single_post_type();
45
46 $params = [];
47
48 if ($this->post_types) {
49 $params['post_type'] = $this->post_types;
50 }
51 if ($this->post_stati) {
52 $params['post_stati'] = $this->post_stati;
53 }
54
55 $label = (string)number_format_i18n($count);
56
57 if ($single_posttype) {
58 $label = sprintf(
59 '%d %s',
60 $count,
61 $count > 1
62 ? strtolower($single_posttype->labels->name)
63 : strtolower($single_posttype->labels->singular_name)
64 );
65 }
66
67 $username = Helper\User::create()->get_formatted_name($user);
68
69 $link = (new Posts())
70 ->get_link($user_id, $label)
71 ->with_title(
72 sprintf(
73 __('Recent items by %s', 'codepress-admin-columns'),
74 sprintf('”%s”', $username),
75 )
76 )
77 ->with_params($params);
78
79 if ($single_posttype) {
80 $link = $link->with_view_link(
81 add_query_arg([
82 'post_type' => $single_posttype->name,
83 'author' => $user_id,
84 ], admin_url('edit.php'))
85 );
86 }
87
88 return $value->with_value(
89 $link->render()
90 );
91 }
92
93 private function is_single_post_type(): ?WP_Post_Type
94 {
95 return 1 === count($this->post_types)
96 ? get_post_type_object($this->post_types[0])
97 : null;
98 }
99
100 private function get_post_count(int $user_id): ?int
101 {
102 return Helper\Post::create()->count_user_posts(
103 $user_id,
104 $this->post_types,
105 $this->post_stati
106 );
107 }
108
109 }
110