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 / Request / Middleware / TableScreenAdmin.php
codepress-admin-columns / classes / Request / Middleware Last commit date
ListScreenAdmin.php 2 days ago ListScreenTable.php 2 days ago TableScreenAdmin.php 2 days ago
TableScreenAdmin.php
90 lines
1 <?php
2
3 declare(strict_types=1);
4
5 namespace AC\Request\Middleware;
6
7 use AC\Admin\Preference;
8 use AC\Middleware;
9 use AC\Request;
10 use AC\Table\TableScreenCollection;
11 use AC\TableScreen;
12 use AC\Type\TableId;
13 use Exception;
14
15 class TableScreenAdmin implements Middleware
16 {
17 private Preference\EditorPreference $preference;
18
19 private TableScreenCollection $table_screens;
20
21 public function __construct(
22 Preference\EditorPreference $preference,
23 TableScreenCollection $table_screens
24 ) {
25 $this->preference = $preference;
26 $this->table_screens = $table_screens;
27 }
28
29 private function get_table_screen_by_id(TableId $table_id): ?TableScreen
30 {
31 foreach ($this->table_screens as $table_screen) {
32 if ($table_screen->get_id()->equals($table_id)) {
33 return $table_screen;
34 }
35 }
36
37 return null;
38 }
39
40 private function get_requested_table_screen(Request $request): ?TableScreen
41 {
42 try {
43 $key = new TableId((string)$request->get('list_screen'));
44 } catch (Exception $e) {
45 return null;
46 }
47
48 return $this->get_table_screen_by_id($key);
49 }
50
51 private function get_last_visited_table_screen(): ?TableScreen
52 {
53 $table_id = $this->preference->get_table_id();
54
55 return $table_id ?
56 $this->get_table_screen_by_id($table_id)
57 : null;
58 }
59
60 private function get_first_visit_table_screen(): ?TableScreen
61 {
62 $table_screen = $this->get_table_screen_by_id(new TableId('post'));
63
64 return $table_screen ?: $this->table_screens->last();
65 }
66
67 private function get_table_screen(Request $request): ?TableScreen
68 {
69 $table_screen = $this->get_requested_table_screen($request);
70
71 if (! $table_screen) {
72 $table_screen = $this->get_last_visited_table_screen();
73 }
74
75 if (! $table_screen) {
76 $table_screen = $this->get_first_visit_table_screen();
77 }
78
79 return $table_screen;
80 }
81
82 public function handle(Request $request): void
83 {
84 $request->get_parameters()->merge([
85 'table_screen' => $this->get_table_screen($request),
86 ]);
87 }
88
89 }
90