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 / Aggregate.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
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 * @var TableScreenFactory[]
17 */
18 private static array $factories = [];
19
20 public static function add(TableScreenFactory $factory): void
21 {
22 array_unshift(self::$factories, $factory);
23 }
24
25 public function create(TableId $id): TableScreen
26 {
27 foreach (self::$factories as $factory) {
28 if ($factory->can_create($id)) {
29 return $factory->create($id);
30 }
31 }
32
33 throw new InvalidArgumentException();
34 }
35
36 public function can_create(TableId $id): bool
37 {
38 foreach (self::$factories as $factory) {
39 if ($factory->can_create($id)) {
40 return (bool)apply_filters('ac/list_screen/key/is_active', true, (string)$id);
41 }
42 }
43
44 return false;
45 }
46
47 public function create_from_wp_screen(WP_Screen $screen): TableScreen
48 {
49 foreach (self::$factories as $factory) {
50 if ($factory->can_create_from_wp_screen($screen)) {
51 return $factory->create_from_wp_screen($screen);
52 }
53 }
54
55 throw new InvalidArgumentException();
56 }
57
58 public function can_create_from_wp_screen(WP_Screen $screen): bool
59 {
60 foreach (self::$factories as $factory) {
61 if ($factory->can_create_from_wp_screen($screen)) {
62 return (bool)apply_filters('ac/list_screen/is_active', true, $screen);
63 }
64 }
65
66 return false;
67 }
68
69 }
70