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 1 day ago CommentCount.php 1 day ago FirstPost.php 1 day ago FullName.php 1 day ago HasRichEditing.php 1 day ago LastPost.php 1 day ago Meta.php 1 day ago PostCount.php 1 day ago PostCountOriginal.php 1 day ago Property.php 1 day ago Roles.php 1 day ago ShowToolbar.php 1 day ago TranslatedRoles.php 1 day ago UserFilteredPostLink.php 1 day ago UserLink.php 1 day ago UserName.php 1 day 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