PluginProbe ʕ •ᴥ•ʔ
Nested Pages / 3.2.15
Nested Pages v3.2.15
3.2.15 3.2.14 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 trunk 1.0 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.2.1 1.3.0 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.2 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.4.0 1.4.1 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.3.1 1.6.3.2 1.6.4 1.6.5 1.6.5.1 1.6.5.2 1.6.6 1.6.7 1.6.8 1.7.0 1.7.1 2.0.1 2.0.2 2.0.3 2.0.4 3.0.1 3.0.10 3.0.11 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.20 3.1.21 3.1.22 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7
wp-nested-pages / app / Entities / AdminMenu / AdminSubmenu.php
wp-nested-pages / app / Entities / AdminMenu Last commit date
AdminMenu.php 6 years ago AdminSubmenu.php 4 years ago AdminSubmenuDefault.php 8 years ago AdminSubmenuExpander.php 5 years ago BlockEditorLink.php 6 years ago EnabledMenus.php 6 years ago
AdminSubmenu.php
106 lines
1 <?php
2 namespace NestedPages\Entities\AdminMenu;
3
4 use NestedPages\Entities\PostType\PostTypeRepository;
5
6 /**
7 * Adds the submenu for a given menu
8 */
9 class AdminSubmenu
10 {
11 /**
12 * Post Type
13 * @var string
14 */
15 private $post_type;
16
17 /**
18 * Post Type Repository
19 */
20 private $post_type_repo;
21
22 /**
23 * Slug
24 * @var string
25 */
26 private $slug;
27
28 public function __construct($post_type)
29 {
30 $this->post_type = $post_type;
31 $this->post_type_repo = new PostTypeRepository;
32 $this->setSlug();
33 }
34
35 /**
36 * Add the submenu
37 */
38 public function addSubmenu()
39 {
40 global $submenu;
41 $c = 0;
42
43 // Get the right submenu and remove all pages link
44 foreach($submenu as $key => $sub){
45 if ($key == $this->post_type_repo->editSlug($this->post_type)){
46 $edit_key = $this->getSubMenuEditIndex($sub);
47 if ( !$edit_key ) continue;
48 $capability = ( isset($sub[$edit_key][1]) ) ? $sub[$edit_key][1] : 'edit_pages';
49 $submenu[$this->slug][50] = [$sub[$edit_key][0], $capability, esc_url('admin.php?page=' . $this->slug)];
50 if ( isset($sub[$edit_key]) ) unset($sub[$edit_key]); // Remove Top Level
51 $menu_items = $sub;
52 }
53 }
54 if ( isset($menu_items) ){
55 $c = 60;
56 foreach($menu_items as $item){
57 // Make sure URLs for custom menu items are correct
58 $url = ( isset($item[3]) ) ? 'edit.php?post_type=' . $this->post_type->name . '&page=' . $item[2] : $item[2];
59 $submenu[$this->slug][$c] = [$item[0], $item[1], esc_url($url)];
60 $c = $c + 10;
61 }
62 }
63 $this->defaultLink($c);
64 }
65
66 /**
67 * Get the edit submenu index within an individual submenu
68 * @return int
69 */
70 private function getSubMenuEditIndex($submenu)
71 {
72 foreach ( $submenu as $key => $items ){
73 foreach ( $items as $item ){
74 if ( $item == 'edit.php' || $item == 'edit.php?post_type=' . $this->post_type->name ) return $key;
75 }
76 }
77 return false;
78 }
79
80
81 /**
82 * Show the default link if set to show
83 * @param int $c Menu Position Counter
84 */
85 private function defaultLink($c)
86 {
87 global $submenu;
88 if ( !$this->post_type_repo->postTypeSetting($this->post_type->name, 'hide_default') ){
89 $label = sprintf(__('Default %s', 'wp-nested-pages'), $this->post_type->labels->name);
90 $label = apply_filters('nestedpages_default_submenu_text', $label, $this->post_type);
91 $submenu[$this->slug][$c] = [
92 $label,
93 'edit_pages',
94 $this->post_type_repo->editSlug($this->post_type)
95 ];
96 }
97 }
98
99 /**
100 * Set the Menu Slug
101 */
102 private function setSlug()
103 {
104 $this->slug = $this->post_type_repo->getMenuSlug($this->post_type);
105 }
106 }