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