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