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 / TableScreenFactory / PostFactory.php
codepress-admin-columns / classes / TableScreenFactory Last commit date
Aggregate.php 2 days ago CommentFactory.php 2 days ago MediaFactory.php 2 days ago PostFactory.php 2 days ago UserFactory.php 2 days ago
PostFactory.php
69 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\TableScreenFactory;
6
7 use AC\Exception\InvalidTableScreenException;
8 use AC\PostTypeRepository;
9 use AC\TableScreen;
10 use AC\TableScreenFactory;
11 use AC\Type\TableId;
12 use WP_Post_Type;
13 use WP_Screen;
14
15 class PostFactory implements TableScreenFactory
16 {
17 protected PostTypeRepository $post_type_repository;
18
19 public function __construct(PostTypeRepository $post_type_repository)
20 {
21 $this->post_type_repository = $post_type_repository;
22 }
23
24 public function can_create_from_wp_screen(WP_Screen $screen): bool
25 {
26 return 'edit' === $screen->base &&
27 $screen->post_type &&
28 'edit-' . $screen->post_type === $screen->id &&
29 $this->post_type_repository->exists($screen->post_type);
30 }
31
32 public function create_from_wp_screen(WP_Screen $screen): TableScreen
33 {
34 $post_type = get_post_type_object((string)$screen->post_type);
35
36 if (! $post_type instanceof WP_Post_Type) {
37 throw InvalidTableScreenException::from_invalid_id(new TableId((string)$screen->post_type));
38 }
39
40 return $this->create_table_screen($post_type);
41 }
42
43 public function can_create(TableId $id): bool
44 {
45 return $this->post_type_repository->exists((string)$id);
46 }
47
48 public function create(TableId $id): TableScreen
49 {
50 if (! $this->can_create($id)) {
51 throw InvalidTableScreenException::from_invalid_id($id);
52 }
53
54 $post_type = get_post_type_object((string)$id);
55
56 if (! $post_type instanceof WP_Post_Type) {
57 throw InvalidTableScreenException::from_invalid_id($id);
58 }
59
60 return $this->create_table_screen($post_type);
61 }
62
63 protected function create_table_screen(WP_Post_Type $post_type): TableScreen\Post
64 {
65 return new TableScreen\Post($post_type);
66 }
67
68 }
69