PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.3.2
Admin Columns v4.3.2
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 / Controller / Middleware / ListScreenTable.php
codepress-admin-columns / classes / Controller / Middleware Last commit date
ListScreenAdmin.php 5 years ago ListScreenTable.php 5 years ago
ListScreenTable.php
90 lines
1 <?php
2
3 namespace AC\Controller\Middleware;
4
5 use AC\ListScreenRepository\Filter;
6 use AC\ListScreenRepository\Storage;
7 use AC\Middleware;
8 use AC\PermissionChecker;
9 use AC\Request;
10 use AC\Screen;
11 use AC\Table;
12 use AC\Type\ListScreenId;
13 use WP_Screen;
14
15 class ListScreenTable implements Middleware {
16
17 const PARAM_LIST_ID = 'list_id';
18 const PARAM_LIST_KEY = 'list_key';
19
20 /**
21 * @var Storage
22 */
23 private $storage;
24
25 /**
26 * @var WP_Screen
27 */
28 private $wp_screen;
29
30 /**
31 * @var Table\Preference
32 */
33 private $preference;
34
35 public function __construct( Storage $storage, WP_Screen $wp_screen, Table\Preference $preference ) {
36 $this->storage = $storage;
37 $this->wp_screen = $wp_screen;
38 $this->preference = $preference;
39 }
40
41 /**
42 * @return string|null
43 */
44 private function get_list_key_from_screen() {
45 return ( new Screen() )->set_screen( $this->wp_screen )->get_list_screen();
46 }
47
48 /**
49 * Set the list_key and layout
50 *
51 * @param Request $request
52 */
53 public function handle( Request $request ) {
54 $list_key = $request->get( self::PARAM_LIST_KEY );
55
56 if ( ! $list_key ) {
57 $list_key = $this->get_list_key_from_screen();
58 }
59
60 if ( ! $list_key ) {
61 return;
62 }
63
64 $list_id = $request->get( 'layout' );
65
66 if ( ! ListScreenId::is_valid_id( $list_id ) ) {
67 $list_id = $this->preference->get( $list_key );
68 }
69
70 if ( ! ListScreenId::is_valid_id( $list_id ) || ! $this->storage->exists( new ListScreenId( $list_id ) ) ) {
71
72 $list_screens = $this->storage->find_all( [
73 Storage::KEY => $list_key,
74 Storage::ARG_FILTER => [
75 new Filter\Permission( new PermissionChecker() ),
76 ],
77 ] );
78
79 $list_id = $list_screens->count() > 0
80 ? $list_screens->get_first()->get_id()->get_id()
81 : null;
82 }
83
84 $request->get_parameters()->merge( [
85 self::PARAM_LIST_KEY => $list_key,
86 self::PARAM_LIST_ID => $list_id,
87 ] );
88 }
89
90 }