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