PluginProbe ʕ •ᴥ•ʔ
Admin Columns / 4.3.2
Admin Columns v4.3.2
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 / Admin / Section / Partial / Menu.php
codepress-admin-columns / classes / Admin / Section / Partial Last commit date
Menu.php 5 years ago ShowEditButton.php 5 years ago
Menu.php
77 lines
1 <?php
2
3 namespace AC\Admin\Section\Partial;
4
5 use AC\ListScreen;
6 use AC\ListScreenGroups;
7 use AC\ListScreenTypes;
8 use AC\View;
9
10 class Menu {
11
12 /** @var bool */
13 private $is_network;
14
15 public function __construct( $is_network = false ) {
16 $this->is_network = (bool) $is_network;
17 }
18
19 public function render( ListScreen $list_screen, $is_hidden = false ) {
20 $menu = new View( [
21 'items' => $this->get_grouped_list_screens(),
22 'current' => $list_screen->get_key(),
23 'screen_link' => $list_screen->get_screen_link(),
24 'class' => $is_hidden ? 'hidden' : '',
25 ] );
26
27 $menu->set_template( 'admin/edit-menu' );
28
29 return $menu->render();
30 }
31
32 private function get_network_list_screens() {
33 return ListScreenTypes::instance()->get_list_screens( [ 'network_only' => true ] );
34 }
35
36 private function get_site_list_screens() {
37 return ListScreenTypes::instance()->get_list_screens( [ 'site_only' => true ] );
38 }
39
40 /**
41 * @return array
42 */
43 private function get_grouped_list_screens() {
44
45 $list_screens = $this->is_network
46 ? $this->get_network_list_screens()
47 : $this->get_site_list_screens();
48
49 $list_screens_grouped = [];
50 foreach ( $list_screens as $list_screen ) {
51 $list_screens_grouped[ $list_screen->get_group() ][ $list_screen->get_key() ] = $list_screen->get_label();
52 }
53
54 $grouped = [];
55
56 foreach ( ListScreenGroups::get_groups()->get_groups_sorted() as $group ) {
57 $slug = $group['slug'];
58
59 if ( empty( $list_screens_grouped[ $slug ] ) ) {
60 continue;
61 }
62
63 if ( ! isset( $grouped[ $slug ] ) ) {
64 $grouped[ $slug ]['title'] = $group['label'];
65 }
66
67 natcasesort( $list_screens_grouped[ $slug ] );
68
69 $grouped[ $slug ]['options'] = $list_screens_grouped[ $slug ];
70
71 unset( $list_screens_grouped[ $slug ] );
72 }
73
74 return $grouped;
75 }
76
77 }