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 / ListScreenAdmin.php
codepress-admin-columns / classes / Controller / Middleware Last commit date
ListScreenAdmin.php 5 years ago ListScreenTable.php 5 years ago
ListScreenAdmin.php
74 lines
1 <?php
2
3 namespace AC\Controller\Middleware;
4
5 use AC\Admin\Preference;
6 use AC\ListScreenRepository\Storage;
7 use AC\ListScreenTypes;
8 use AC\Middleware;
9 use AC\Request;
10 use AC\Type\ListScreenId;
11
12 class ListScreenAdmin implements Middleware {
13
14 const PARAM_LIST_ID = 'list_id';
15 const PARAM_LIST_KEY = 'list_key';
16
17 /** @var Storage */
18 private $storage;
19
20 /** @var Preference\ListScreen */
21 private $preference;
22
23 /** @var bool */
24 private $is_network;
25
26 public function __construct( Storage $storage, Preference\ListScreen $preference, $is_network = false ) {
27 $this->storage = $storage;
28 $this->preference = $preference;
29 $this->is_network = (bool) $is_network;
30 }
31
32 public function handle( Request $request ) {
33 $list_key = $request->get( 'list_screen' );
34
35 if ( ! $list_key ) {
36 $list_key = $this->preference->get_last_visited_list_key();
37 }
38
39 if ( ! $list_key || ! ListScreenTypes::instance()->get_list_screen_by_key( $list_key, $this->is_network ) ) {
40 $args = $this->is_network
41 ? [ 'network_only' => true ]
42 : [ 'site_only' => true ];
43
44 $list_key = current( ListScreenTypes::instance()->get_list_screens( $args ) )->get_key();
45 }
46
47 if ( ! $list_key ) {
48 return;
49 }
50
51 $list_id = $request->get( 'layout_id' );
52
53 if ( ! ListScreenId::is_valid_id( $list_id ) ) {
54 $list_id = $this->preference->get_list_id( $list_key );
55 }
56
57 if ( ! ListScreenId::is_valid_id( $list_id ) || ! $this->storage->exists( new ListScreenId( $list_id ) ) ) {
58
59 $list_screens = $this->storage->find_all( [
60 Storage::KEY => $list_key,
61 ] );
62
63 $list_id = $list_screens->count() > 0
64 ? $list_screens->get_first()->get_id()->get_id()
65 : null;
66 }
67
68 $request->get_parameters()->merge( [
69 self::PARAM_LIST_ID => $list_id,
70 self::PARAM_LIST_KEY => $list_key,
71 ] );
72 }
73
74 }