PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 7.0.13
Admin Columns v7.0.13
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 / Aggregate.php
codepress-admin-columns / classes / TableScreenFactory Last commit date
Aggregate.php 3 months ago CommentFactory.php 3 months ago MediaFactory.php 3 months ago PostFactory.php 3 months ago UserFactory.php 3 months ago
Aggregate.php
70 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\TableScreenFactory;
6
7 use AC\TableScreen;
8 use AC\TableScreenFactory;
9 use AC\Type\TableId;
10 use InvalidArgumentException;
11 use WP_Screen;
12
13 class Aggregate implements TableScreenFactory
14 {
15
16 /**
17 * @var TableScreenFactory[]
18 */
19 private static array $factories = [];
20
21 public static function add(TableScreenFactory $factory): void
22 {
23 array_unshift(self::$factories, $factory);
24 }
25
26 public function create(TableId $id): TableScreen
27 {
28 foreach (self::$factories as $factory) {
29 if ($factory->can_create($id)) {
30 return $factory->create($id);
31 }
32 }
33
34 throw new InvalidArgumentException();
35 }
36
37 public function can_create(TableId $id): bool
38 {
39 foreach (self::$factories as $factory) {
40 if ($factory->can_create($id)) {
41 return (bool)apply_filters('ac/list_screen/key/is_active', true, (string)$id);
42 }
43 }
44
45 return false;
46 }
47
48 public function create_from_wp_screen(WP_Screen $screen): TableScreen
49 {
50 foreach (self::$factories as $factory) {
51 if ($factory->can_create_from_wp_screen($screen)) {
52 return $factory->create_from_wp_screen($screen);
53 }
54 }
55
56 throw new InvalidArgumentException();
57 }
58
59 public function can_create_from_wp_screen(WP_Screen $screen): bool
60 {
61 foreach (self::$factories as $factory) {
62 if ($factory->can_create_from_wp_screen($screen)) {
63 return (bool)apply_filters('ac/list_screen/is_active', true, $screen);
64 }
65 }
66
67 return false;
68 }
69
70 }