PluginProbe
Timetics – Appointment Booking Calendar & Scheduling / 1.0.38
Timetics – Appointment Booking Calendar & Scheduling v1.0.38
1.0.61 1.0.60 1.0.59 1.0.58 1.0.57 1.0.56 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 All 62 releases
timetics / core / admin / menu.php

menu.php in Timetics – Appointment Booking Calendar & Scheduling 1.0.38, at core/admin/menu.php

169 lines 8.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Admin meni class
5 *
6 * @package Timetics
7 */
8
9 namespace Timetics\Core\Admin;
10
11 /**
12 * Class Menu
13 */
14 class Menu
15 {
16
17 use \Timetics\Utils\Singleton;
18
19 /**
20 * Initialize
21 *
22 * @return void
23 */
24 public function init()
25 {
26 add_action('admin_menu', array($this, 'register_admin_menu'));
27
28 add_action('timetics_menu', array($this, 'add_pro_admin_menu'));
29 }
30
31
32 /**
33 * Register admin menu
34 *
35 * @return void
36 */
37
38 public function register_admin_menu()
39 {
40 global $submenu;
41 $capability = 'manage_timetics';
42 $slug = 'timetics';
43 $url = 'admin.php?page=' . $slug . '#';
44 $timetics_menu_position = 'timetics_menu_position_';
45 $timetics_menu_permission = 'timetics_menu_permission_';
46
47 $menu_items = array(
48 [
49 'id' => 'overview',
50 'title' => esc_html__('Overview', 'timetics'),
51 'link' => '/',
52 'capability' => apply_filters($timetics_menu_permission . 'overview', $capability),
53 'position' => apply_filters($timetics_menu_position . 'overview', 1),
54 ],
55 [
56 'id' => 'meeting',
57 'title' => esc_html__('Meetings', 'timetics'),
58 'link' => '/meetings',
59 'capability' => apply_filters($timetics_menu_permission . 'meeting', 'read_booking'),
60 'position' => apply_filters($timetics_menu_position . 'meeting', 2),
61 ],
62 [
63 'id' => 'staff',
64 'title' => esc_html__('Team Members', 'timetics'),
65 'link' => '/staff',
66 'capability' => apply_filters($timetics_menu_permission . 'staff', 'edit_staff'),
67 'position' => apply_filters($timetics_menu_position . 'staff', 3),
68 ],
69
70 [
71 'id' => 'booking',
72 'title' => esc_html__('Calendar', 'timetics'),
73 'link' => '/bookings',
74 'capability' => apply_filters($timetics_menu_permission . 'booking', 'read_booking'),
75 'position' => apply_filters($timetics_menu_position . 'booking', 1.5),
76 ],
77 [
78 'id' => 'customer',
79 'title' => esc_html__('Customers', 'timetics'),
80 'link' => '/customers',
81 'capability' => apply_filters($timetics_menu_permission . 'customer', 'manage_options'),
82 'position' => apply_filters($timetics_menu_position . 'customer', 5),
83 ],
84 [
85 'id' => 'settings',
86 'title' => esc_html__('Settings', 'timetics'),
87 'link' => '/settings',
88 'capability' => apply_filters($timetics_menu_permission . 'settings', 'manage_options'),
89 'position' => apply_filters($timetics_menu_position . 'settings', 6),
90 ],
91 [
92 'id' => 'my-profile',
93 'title' => esc_html__('My Profile', 'timetics'),
94 'link' => '/my-profile',
95 'capability' => apply_filters($timetics_menu_permission . 'my-profile', 'edit_profile'),
96 'position' => apply_filters($timetics_menu_position . 'my-profile', 7),
97 ],
98 [
99 'id' => 'shortcode',
100 'title' => esc_html__('Shortcodes', 'timetics'),
101 'link' => '/shortcodes',
102 'capability' => apply_filters($timetics_menu_permission . 'shortcode', 'manage_options'),
103 'position' => apply_filters($timetics_menu_position . 'shortcode', 8),
104 ],
105 [
106 'id' => 'onboard',
107 'title' => esc_html__('Setup Wizard', 'timetics'),
108 'link' => '/onboard',
109 'capability' => apply_filters($timetics_menu_permission . 'onboard', 'manage_options'),
110 'position' => apply_filters($timetics_menu_position . 'onboard', 9),
111 ],
112 );
113
114 add_menu_page(
115 esc_html__('Timetics', 'timetics'),
116 esc_html__('Timetics', 'timetics'),
117 $capability,
118 $slug,
119 array($this, 'timetics_dashboard_view'),
120 "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE0MjhfMTE1OSkiPgo8cGF0aCBkPSJNOC42NDc0NSAxMy40NTEyQzUuMTc5MjQgMTMuNDUxMiAyLjQwNDY3IDEwLjY2NjcgMi43OTc3NCA3LjM4OTY0QzMuMDk4MzIgNC44MTkzNiA1LjM2NDIxIDIuNzg0NTUgOC4xMzg3OCAyLjU3MDM2QzkuOTQyMjUgMi40NDE4NSAxMS42MDcgMy4wNjMgMTIuNzYzMSA0LjEzMzk1TDE0Ljc3NDYgMi4zNzc1OUMxMy4wODY4IDAuNzkyNTg1IDEwLjcwNTMgLTAuMTI4NDMyIDguMDkyNTQgMC4wMjE1MDA3QzMuODE1MDggMC4yNTcxMSAwLjMyMzc0OSAzLjQ2OTk2IDAuMDIzMTcwNiA3LjQzMjQ4Qy0wLjMyMzY1IDEyLjEwMTggMy42NzYzNSAxNi4wMDAxIDguNjQ3NDUgMTYuMDAwMUMxMC41MjAzIDE2LjAwMDEgMTIuMjMxMyAxNS40NDMyIDEzLjY0MTcgMTQuNTIyMkMxNC4zMzUzIDE0LjA3MjQgMTQuNDA0NyAxMy4xNTE0IDEzLjgwMzUgMTIuNTk0NUwxMy43ODA0IDEyLjU3M0MxMy4yOTQ4IDEyLjEyMzIgMTIuNTU1IDEyLjEwMTggMTIuMDAwMSAxMi40NDQ1QzExLjA1MjEgMTMuMDg3MSA5Ljg5NiAxMy40NTEyIDguNjQ3NDUgMTMuNDUxMloiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik04LjY0NzQ1IDEzLjQ1MTJDNS4xNzkyNCAxMy40NTEyIDIuNDA0NjcgMTAuNjY2NyAyLjc5Nzc0IDcuMzg5NjRDMy4wOTgzMiA0LjgxOTM2IDUuMzY0MjEgMi43ODQ1NSA4LjEzODc4IDIuNTcwMzZDOS45NDIyNSAyLjQ0MTg1IDExLjYwNyAzLjA2MyAxMi43NjMxIDQuMTMzOTVMMTQuNzc0NiAyLjM3NzU5QzEzLjA4NjggMC43OTI1ODUgMTAuNzA1MyAtMC4xMjg0MzIgOC4wOTI1NCAwLjAyMTUwMDdDMy44MTUwOCAwLjI1NzExIDAuMzIzNzQ5IDMuNDY5OTYgMC4wMjMxNzA2IDcuNDMyNDhDLTAuMzIzNjUgMTIuMTAxOCAzLjY3NjM1IDE2LjAwMDEgOC42NDc0NSAxNi4wMDAxQzEwLjUyMDMgMTYuMDAwMSAxMi4yMzEzIDE1LjQ0MzIgMTMuNjQxNyAxNC41MjIyQzE0LjMzNTMgMTQuMDcyNCAxNC40MDQ3IDEzLjE1MTQgMTMuODAzNSAxMi41OTQ1TDEzLjc4MDQgMTIuNTczQzEzLjI5NDggMTIuMTIzMiAxMi41NTUgMTIuMTAxOCAxMi4wMDAxIDEyLjQ0NDVDMTEuMDUyMSAxMy4wODcxIDkuODk2IDEzLjQ1MTIgOC42NDc0NSAxMy40NTEyWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzE0MjhfMTE1OSkiLz4KPHBhdGggZD0iTTE0LjQyNzggMi4wNzc1M0MxNC4yMTk3IDEuOTA2MTggMTMuOTg4NSAxLjcxMzQxIDEzLjc1NzMgMS41NjM0OEMxMy45MTkxIDEuODIwNSAxNC4wMTE2IDIuMTIwMzcgMTQuMDExNiAyLjQyMDI0QzE0LjAxMTYgMi44MjcyIDEzLjgwMzUgMy4yMzQxNiAxMy40Nzk4IDMuNTEyNjFMMTIuNzg2MiA0LjExMjM0TDguNTc4MDggNy44MTc4M0w3LjA5ODMxIDYuNDQ3MDFDNi41ODk2NCA1Ljk3NTc5IDUuNzU3MjcgNS44OTAxMiA1LjIwMjM2IDYuMzE4NUM0LjU1NDk2IDYuODExMTMgNC41MzE4NCA3LjY4OTMxIDUuMTA5ODcgOC4yMDMzN0w3LjU4Mzg2IDEwLjQ5NTJDNy44NjEzMiAxMC43NTIyIDguMjA4MTQgMTAuODU5MyA4LjU1NDk2IDEwLjg1OTNDOC45MDE3OCAxMC44NTkzIDkuMjQ4NiAxMC43NTIyIDkuNTAyOTQgMTAuNTE2NkwxNC4yNDI4IDYuMzM5OTJMMTUuNTYwNyA1LjE4MzI5QzE2LjA2OTQgNC43MzM0OSAxNi4xNjE5IDQuMDA1MjQgMTUuNzY4OCAzLjQ0ODM1QzE1LjQ2ODMgMy4wODQyMyAxNC44NDQgMi4zOTg4MiAxNC40Mjc4IDIuMDc3NTNaIiBmaWxsPSIjRTlGMkZGIi8+CjwvZz4KPGRlZnM+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xNDI4XzExNTkiIHgxPSIxMy45ODg4IiB5MT0iMC45NDY1NTYiIHgyPSI5LjI0NzY4IiB5Mj0iNS42NDI5OCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMEMzOTc1IiBzdG9wLW9wYWNpdHk9IjAuMzgiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzE2MUYxIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xNDI4XzExNTkiPgo8cmVjdCB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGZpbGw9IndoaXRlIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==",
121 10
122 );
123
124 $menu_items = apply_filters('timetics_menu', $menu_items);
125 $position = array_column($menu_items, 'position');
126
127 array_multisort($position, SORT_ASC, $menu_items);
128
129 foreach ($menu_items as $item) {
130 $external = !empty($item['external_link']) ? $item['external_link'] : false;
131
132 $link = !$external ? $url . $item['link'] : $item['link'];
133 $submenu[$slug][] = [$item['title'], $item['capability'], $link]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
134 }
135 }
136
137 /**
138 * Admin dashboard view
139 *
140 * @return void
141 */
142 public function timetics_dashboard_view()
143 {
144 ?>
145 <div class="wrap" id="time_tics_dashboard">
146 </div>
147 <?php
148 }
149
150 // Add submenu page under "Settings"
151 public function add_pro_admin_menu($menu_items)
152 {
153 if (class_exists('TimeticsPro')) {
154 return $menu_items;
155 }
156
157 $menu_items[] = [
158 'id' => 'go-pro',
159 'title' => esc_html__('Go Pro', 'timetics'),
160 'link' => 'https://arraytics.com/timetics',
161 'external_link' => true,
162 'capability' => 'manage_options',
163 'position' => 9,
164 ];
165
166 return $menu_items;
167 }
168 }
169