PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.11
Booking for Appointments and Events Calendar – Amelia v1.2.11
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / src / Infrastructure / WP / WPMenu / Submenu.php
ameliabooking / src / Infrastructure / WP / WPMenu Last commit date
Submenu.php 2 years ago SubmenuPageHandler.php 1 year ago
Submenu.php
129 lines
1 <?php
2
3 namespace AmeliaBooking\Infrastructure\WP\WPMenu;
4
5 /**
6 * Class Submenu
7 *
8 * @package AmeliaBooking\Infrastructure\WPMenu
9 */
10 class Submenu
11 {
12
13 /** @var SubmenuPageHandler $submenuHandler */
14 private $submenuHandler;
15
16 /** @var array $menu */
17 private $menu;
18
19 /**
20 * Submenu constructor.
21 *
22 * @param SubmenuPageHandler $submenuHandler
23 * @param array $menu
24 */
25 public function __construct($submenuHandler, $menu)
26 {
27 $this->submenuHandler = $submenuHandler;
28
29 $this->menu = $menu;
30 }
31
32 /**
33 * Initialize admin menu in WP
34 */
35 public function init()
36 {
37 add_action('admin_menu', [$this, 'addOptionsPages']);
38 }
39
40 /**
41 * Add options in WP menu
42 */
43 public function addOptionsPages()
44 {
45 add_menu_page(
46 'Amelia Booking',
47 'Amelia',
48 'amelia_read_menu',
49 'amelia',
50 '',
51 AMELIA_URL . 'public/img/amelia-logo-admin-icon.svg'
52 );
53
54 $isLite = false;
55
56 foreach ($this->menu as $menu) {
57 if ($menu['menuSlug'] === 'wpamelia-lite-vs-premium') {
58 $isLite = true;
59 }
60 }
61
62 foreach ($this->menu as $menu) {
63 $this->handleMenuItem($menu, $isLite);
64 }
65
66 remove_submenu_page('amelia', 'amelia');
67 }
68
69 /**
70 * @param array $menu
71 * @param bool $isLite
72 */
73 public function handleMenuItem($menu, $isLite)
74 {
75 if ($menu['menuSlug'] === 'wpamelia-whats-new') {
76 $menu['menuTitle'] = (!$isLite ? '<span style="color: #FF8C00">' : '') . $menu['menuTitle'] . (!$isLite ? '</span>' : '');
77 }
78
79 if ($menu['menuSlug'] === 'wpamelia-lite-vs-premium') {
80 $menu['menuTitle'] = '<span style="color: #ff8c00;font-weight: 500;display: inline-block;margin-top: 2px;">'
81 . $menu['menuTitle'] . '</span>
82 <span class="dashicons dashicons-star-filled" style="color: #ff8c00;margin-left: 5px;"></span>';
83 }
84
85 if ($menu['menuSlug'] === 'wpamelia-locations') {
86 $menu['menuTitle'] = ($isLite ? '<span style="display: inline-block;margin-top: 2px;color:inherit;">' : '')
87 . $menu['menuTitle'] . ($isLite ? '</span><span class="dashicons dashicons-star-filled" style="color: #ff8c00;margin-left: 5px;"></span>' : '');
88 }
89
90 if ($menu['menuSlug'] === 'wpamelia-cf') {
91 $menu['menuTitle'] = ($isLite ? '<span style="display: inline-block;margin-top: 2px;color:inherit;">' : '')
92 . $menu['menuTitle'] . ($isLite ? '</span><span class="dashicons dashicons-star-filled" style="color: #ff8c00;margin-left: 5px;"></span>' : '');
93 }
94
95 $this->addSubmenuPage(
96 $menu['parentSlug'],
97 $menu['pageTitle'],
98 $menu['menuTitle'],
99 $menu['capability'],
100 $menu['menuSlug'],
101 function () use ($menu) {
102 $this->submenuHandler->render($menu['menuSlug']);
103 }
104 );
105 }
106
107 /**
108 * @noinspection MoreThanThreeArgumentsInspection
109 *
110 * @param $parentSlug
111 * @param $pageTitle
112 * @param $menuTitle
113 * @param $capability
114 * @param $menuSlug
115 * @param string $function
116 */
117 private function addSubmenuPage($parentSlug, $pageTitle, $menuTitle, $capability, $menuSlug, $function = '')
118 {
119 add_submenu_page(
120 $parentSlug,
121 $pageTitle,
122 $menuTitle,
123 $capability,
124 $menuSlug,
125 $function
126 );
127 }
128 }
129