PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 1.0.7
Adminify – White Label, Admin Menu Editor, Login Customizer v1.0.7
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / utils.php

utils.php in Adminify – White Label, Admin Menu Editor, Login Customizer 1.0.7, at Inc/utils.php

563 lines 20.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc;
4
5 use WPAdminify\Inc\Classes\Helper;
6 // no direct access allowed
7 if (!defined('ABSPATH')) exit;
8
9 class Utils
10 {
11 public $post_types = '';
12
13 /**
14 * Check if the Module is Enable/Disable
15 *
16 * @param [type] $value
17 *
18 * @return void
19 */
20 public static function check_modules($value)
21 {
22 if (empty($value)) {
23 return;
24 } else {
25 return true;
26 }
27 }
28
29 /**
30 * Check given value empty or not
31 *
32 * @param [type] $value
33 *
34 * @return void
35 */
36 public static function check_is_empty($value, $default = '')
37 {
38 $value = !empty(esc_attr($value)) ? $value : $default;
39 return $value;
40 }
41
42
43 /**
44 * Check given value empty or not
45 *
46 * @param [type] $value
47 *
48 * @return void
49 */
50 public static function restricted_for($restrict_for)
51 {
52 if (!is_array($restrict_for)) {
53 return false;
54 }
55
56 if (!function_exists('wp_get_current_user')) {
57 include(ABSPATH . "wp-includes/pluggable.php");
58 }
59
60 $current_user = wp_get_current_user();
61 $current_name = $current_user->display_name;
62 $current_roles = $current_user->roles;
63 $all_roles = wp_roles()->get_names();
64
65
66 if (in_array($current_name, $restrict_for)) {
67 return true;
68 }
69
70 // Super Admin for Multisite
71 if (is_super_admin() && is_multisite()) {
72 if (in_array('Super Admin', $restrict_for)) {
73 return true;
74 } else {
75 return false;
76 }
77 }
78
79 // Normal Super Admin
80 if ($current_user->ID === 1) {
81 if (in_array('Super Admin', $restrict_for)) {
82 return true;
83 } else {
84 return false;
85 }
86 }
87
88 foreach ($current_roles as $role) {
89 $role_name = $all_roles[$role];
90 if (in_array(strtolower($role_name), $restrict_for)) {
91 return true;
92 }
93 }
94 }
95
96 /**
97 * Check Site wide plugin settings
98 */
99
100 public static function is_site_wide($plugin)
101 {
102
103 if (!is_multisite()) {
104 return false;
105 }
106
107 $plugins = get_site_option('active_sitewide_plugins');
108 if (isset($plugins[$plugin])) {
109 return true;
110 }
111
112 return false;
113 }
114
115
116 /**
117 * Restricts for role / user
118 */
119
120 public static function restrict_for($disabled_for)
121 {
122 if (!is_array($disabled_for)) {
123 return false;
124 }
125
126 require_once(ABSPATH . '/wp-includes/pluggable.php');
127
128 if (!function_exists('wp_get_current_user')) {
129 return false;
130 }
131 $current_user = wp_get_current_user();
132 $current_name = $current_user->display_name;
133 $current_roles = $current_user->roles;
134
135 $formattedroles = array();
136
137
138 foreach ($disabled_for as $item) {
139 $item = strtolower($item);
140 $item = str_replace(' ', '_', $item);
141 array_push($formattedroles, $item);
142 }
143
144 if (in_array($current_name, $disabled_for)) {
145 return true;
146 }
147
148 foreach ($current_roles as $role) {
149 if (in_array($role, $formattedroles)) {
150 return true;
151 }
152 }
153 }
154
155
156 // Get Taxonomies
157 public static function get_taxonomies()
158 {
159 $args = array( 'public' => true, 'show_ui' => true );
160 $output = 'objects';
161 $taxonomies = get_taxonomies($args, $output);
162 $taxonomies = $taxonomies;
163 return $taxonomies;
164 }
165
166 // Get Post Types
167 public static function get_post_types()
168 {
169 $args = array( 'public' => true, 'show_ui' => true );
170 $output = 'objects';
171 $post_types = get_post_types($args, $output);
172 $post_types = $post_types;
173 return $post_types;
174 }
175
176 // Get Post Meta
177 public static function post_meta($meta_key)
178 {
179 $meta_key = get_post_meta(get_the_ID(), $meta_key, true);
180 return $meta_key;
181 }
182
183
184 //// verfiy current page id
185 public static function jltwp_adminify_currentpage_id($id)
186 {
187 if (!function_exists("get_current_screen")) return true;
188
189 $screen = get_current_screen();
190 return is_object($screen) && $screen->id == $id;
191 }
192
193 /**
194 * Get Current Admin Page Title
195 *
196 * @param string $title
197 *
198 * @return void
199 */
200 public static function admin_page_title($title = '')
201 {
202
203 $title = isset($title) && !empty($title) ? $title : WP_ADMINIFY;
204 echo $title;
205
206 if (is_multisite()) {
207 $text = ' | ' . esc_html__('Current Blog ID', WP_ADMINIFY_TD) . ': ' . get_current_blog_id(); ?>
208 <?php echo self::admin_page_subtitle($text); ?>
209 <?php } ?>
210 <?php }
211
212 /**
213 * Get Current Admin Subtitle
214 */
215
216 public static function admin_page_subtitle($text)
217 { ?>
218
219 <span style="color:#8b959e;" <?php if (is_rtl()) {
220 echo ' dir="rtl"';
221 } ?>>
222 <?php echo esc_html($text); ?>
223 </span>
224
225 <?php }
226
227 public static function convert_name_to_class($name)
228 {
229 $class = str_replace(array(' ', ',', '.', '"', "'", '/', "\\", '+', '=', ')', '(', '*', '&', '^', '%', '$', '#', '@', '!', '~', '`', '<', '>', '?', '[', ']', '{', '}', '|', ':',), '', $name);
230 return $class;
231 }
232
233 public static function jltwp_adminify_class_cleanup($string)
234 {
235 //Lower case everything
236 $string = strtolower($string);
237 //Make alphanumeric (removes all other characters)
238 $string = preg_replace("/[^a-z0-9_\s-]/", "", $string);
239 //Clean up multiple dashes or whitespaces
240 $string = preg_replace("/[\s-]+/", " ", $string);
241 //Convert whitespaces and underscore to dash
242 $string = preg_replace("/[\s_]/", "-", $string);
243 return $string;
244 }
245
246 public static function sanitize_id($url)
247 {
248 $url = preg_replace('/^customize.php\?return=.*$/', 'customize', $url);
249 $url = preg_replace('/(&|&amp;|&#038;)?_wpnonce=([^&]+)/', '', $url);
250 return str_replace(array('.php', '.', '/', '?', '='), array('', '_', '_', '_', '_'), $url);
251 }
252
253 /**
254 * Strip tags and it's content from the given string.
255 *
256 * @link https://stackoverflow.com/questions/14684077/remove-all-html-tags-from-php-string/#answer-39320168
257 *
258 * @param string $text The string being stripped.
259 * @return string The stripped string.
260 */
261 public static function strip_tags_content($text)
262 {
263
264 $cleanup = preg_replace('@<(\w+)\b.*?>.*?</\1>@si', '', $text);
265 $cleanup = wp_strip_all_tags($cleanup);
266 $cleanup = trim($cleanup);
267
268 return $cleanup;
269 }
270
271 /**
272 * String to ID
273 * Remove Space replace with underscore and lowercase
274 *
275 * @param void
276 *
277 * @return string
278 */
279 public static function string_to_id($string)
280 {
281 $string_replace = str_replace(" ", "_", $string);
282 $formatted_string = strtolower($string_replace);
283 return $formatted_string;
284 }
285
286 /**
287 * ID to String
288 * Remove Space replace with underscore and lowercase
289 *
290 * @param void
291 *
292 * @return string
293 */
294 public static function id_to_string($string)
295 {
296 $string_replace = str_replace("_", " ", $string);
297 $formatted_string = ucwords($string_replace);
298 return $formatted_string;
299 }
300
301 /**
302 * Check is Plugin Active
303 *
304 * @param [type] $plugin_basename
305 *
306 * @return boolean
307 */
308 public static function is_plugin_active($plugin_basename)
309 {
310 include_once(ABSPATH . 'wp-admin/includes/plugin.php');
311 return is_plugin_active($plugin_basename);
312 }
313
314 /**
315 * User Defined Settings
316 */
317
318 public static function get_user_preference($key)
319 {
320
321 $userid = get_current_user_id();
322 $current = get_user_meta($userid, '_wpadminify_preferences', true);
323 $value = false;
324
325 if (is_array($current)) {
326 if (isset($current[$key])) {
327 $value = $current[$key];
328 }
329 }
330
331 return $value;
332 }
333
334
335 /**
336 * Sanitises and strips tags of input from ajax
337 * @since 1.0.0
338 * @variables $values = item to clean (array or string)
339 */
340 public static function clean_ajax_input($values)
341 {
342
343 if (is_array($values)) {
344 foreach ($values as $index => $in) {
345 if (is_array($in)) {
346 $values[$index] = self::clean_ajax_input($in);
347 } else {
348 $values[$index] = strip_tags($in);
349 }
350 }
351 } else {
352 $values = strip_tags($values);
353 }
354
355 return $values;
356 }
357
358 /**
359 * Check Ajax Error Messages
360 *
361 * @param [type] $message
362 *
363 * @return void
364 */
365 public static function ajax_error_message($message)
366 {
367 $returndata = array();
368 $returndata['error'] = true;
369 $returndata['error_message'] = $message;
370 return json_encode($returndata);
371 }
372
373 /**
374 * Get All Updates
375 * Themes, Plugins, Core etc
376 *
377 * @return void
378 */
379 public static function get_all_updates()
380 {
381 $allupdates = [];
382 $allupdates['total'] = 0;
383 $allupdates['wordpress'] = 0;
384 $allupdates['theme'] = 0;
385 $allupdates['plugin'] = 0;
386
387 if (!is_admin()) {
388 return $allupdates;
389 }
390
391 if (!current_user_can('install_plugins')) {
392 return $allupdates;
393 }
394 $updatesTotal = 0;
395 if (is_super_admin() && is_admin()) {
396 $pluginUpdates = get_plugin_updates();
397 $themeUpdates = get_theme_updates();
398 $wpUpdates = get_core_updates();
399
400 if (isset($wpUpdates[0])) {
401 $wpversion = $wpUpdates[0]->version;
402 global $wp_version;
403
404 if ($wpversion > $wp_version) {
405 $wpUpdates = 1;
406 } else {
407 $wpUpdates = 0;
408 }
409 } else {
410 $wpUpdates = 0;
411 }
412
413 $updatesTotal = count($pluginUpdates) + count($themeUpdates) + $wpUpdates;
414
415 $allupdates['total'] = $updatesTotal;
416 $allupdates['wordpress'] = $wpUpdates;
417 $allupdates['theme'] = $themeUpdates;
418 $allupdates['plugin'] = $pluginUpdates;
419 }
420 return $allupdates;
421 }
422
423 public static function adminfiy_help_urls($module_name = '', $docs = '', $youtube, $facebook_grp = '', $support = '')
424 {
425 $help_content = '';
426
427 // Modules
428 if (empty($module_name)) {
429 $module_name = 'Module';
430 } else {
431 $module_name = $module_name;
432 }
433
434 // Docs
435 if (empty($docs)) {
436 $docs = 'https://wpadminify.com/kb';
437 } else {
438 $docs = $docs;
439 }
440
441 // youtube
442 if (empty($youtube)) {
443 $youtube = 'https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8';
444 } else {
445 $youtube = $youtube;
446 }
447
448 // facebook_grp
449 if (empty($facebook_grp)) {
450 $facebook_grp = 'https://www.facebook.com/groups/jeweltheme';
451 } else {
452 $facebook_grp = $facebook_grp;
453 }
454
455 // Support
456 if (empty($support)) {
457 $support = 'https://wpadminify.com/support/wp-adminify';
458 } else {
459 $support = $support;
460 }
461
462
463 $help_content = sprintf(
464 __('%1$s <a class="adminify-docs-url" href="%2$s" target="_blank"> ' . Utils::docs_icon() . ' Docs</a>
465 <a class="adminify-video-url" href="%3$s" target="_blank">' . Utils::video_tutorials_icon() . ' Video Tutorial</a> <a class="adminify-fbgroup-url" href="%4$s" target="_blank">' . Utils::fbgroup_icon() . ' Facebook Group</a> <a class="adminify-support-url" href="%5$s" target="_blank">' . Utils::support_icon() . ' Support</a>', WP_ADMINIFY_TD),
466 $module_name,
467 $docs,
468 $youtube,
469 $facebook_grp,
470 $support
471 );
472 return $help_content;
473 }
474
475
476 // Upgrade to Pro Notice
477 public static function adminify_upgrade_pro($custom_message = '')
478 {
479 $pro_message = '';
480 if (empty($custom_message)) {
481 $pro_message = 'Get <strong>Pro Version</strong> to Unlock this feature.';
482 } else {
483 $pro_message = $custom_message;
484 }
485 $jltwp_pro_notice = sprintf(__('%s <a href="https://wpadminify.com/pricing" target="_blank">Upgrade to Pro Now!</a>', WP_ADMINIFY_TD), $pro_message);
486 $pro_content = '';
487 if (!jltwp_adminify()->can_use_premium_code__premium_only()) {
488 $pro_content = '<div class="adminify-pro-notice">
489 <svg class="adminify-pro-notice-icon is-pulled-left mr-2" width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
490 <path fill-rule="evenodd" clip-rule="evenodd" d="M21.8233 0.18318C21.8541 0.215042 21.8753 0.255055 21.8843 0.298527C22.5767 3.32046 20.085 9.8239 16.4731 13.4209C15.8343 14.064 15.1407 14.6502 14.4002 15.1727C14.4955 16.2787 14.411 17.3846 13.9985 18.3318C12.8302 21.0043 9.75855 21.7824 8.44197 21.9937C8.36979 22.0059 8.29577 22.0012 8.22571 21.9799C8.15566 21.9587 8.09147 21.9215 8.03819 21.8713C7.9849 21.821 7.94397 21.7591 7.9186 21.6904C7.89323 21.6217 7.88411 21.548 7.89196 21.4751L8.36241 17.189C8.04096 17.1858 7.71987 17.1663 7.40039 17.1305C7.17735 17.1087 6.96893 17.0096 6.81109 16.8503L5.15076 15.1924C4.99146 15.0346 4.89242 14.8259 4.87084 14.6026C4.83497 14.281 4.81547 13.9578 4.8124 13.6343L0.524795 14.1076C0.451994 14.1156 0.378341 14.1065 0.309629 14.0811C0.240917 14.0558 0.17902 14.0148 0.128806 13.9615C0.0785915 13.9081 0.0414297 13.8438 0.0202432 13.7736C-0.000943262 13.7035 -0.0055768 13.6293 0.00670721 13.5571C0.223273 12.2368 1.00065 9.16771 3.67065 7.99148C4.61695 7.57859 5.72728 7.4965 6.83761 7.59481C7.35968 6.85546 7.94513 6.16306 8.58733 5.52547C12.1879 1.92304 18.8337 -0.585245 21.7099 0.118627C21.7531 0.128924 21.7924 0.151317 21.8233 0.18318ZM12.224 7.92186C12.3151 8.37957 12.5397 8.79996 12.8695 9.12986C13.0882 9.34908 13.348 9.52298 13.6339 9.64164C13.9198 9.7603 14.2263 9.82137 14.5358 9.82137C14.8453 9.82137 15.1517 9.7603 15.4377 9.64164C15.7236 9.52298 15.9833 9.34908 16.202 9.12986C16.5318 8.79996 16.7565 8.37957 16.8475 7.92186C16.9386 7.46415 16.892 6.98968 16.7137 6.55848C16.5353 6.12727 16.2332 5.7587 15.8455 5.49939C15.4578 5.24007 15.002 5.10166 14.5358 5.10166C14.0695 5.10166 13.6137 5.24007 13.226 5.49939C12.8384 5.7587 12.5362 6.12727 12.3579 6.55848C12.1795 6.98968 12.1329 7.46415 12.224 7.92186ZM5.47798 18.5161C5.99754 18.4262 6.4292 18.321 6.69831 18.0511C6.83974 17.9032 7.0897 18.0256 7.07153 18.2311C6.99299 18.8853 6.69667 19.4941 6.23032 19.9593C5.07579 21.1158 0.785726 21.225 0.785726 21.225C0.785726 21.225 0.894746 16.9334 2.04927 15.7768C2.51439 15.3115 3.12167 15.0153 3.77443 14.9353C3.81912 14.9292 3.86459 14.9374 3.90439 14.9586C3.94419 14.9799 3.97629 15.0131 3.99613 15.0537C4.01597 15.0942 4.02255 15.14 4.01493 15.1845C4.00731 15.229 3.98588 15.2699 3.95368 15.3015C3.80635 15.449 3.56965 16.0767 3.48961 16.5245C3.27991 17.7056 4.31069 18.7152 5.47798 18.5161Z" fill="#00BA88"/>
491 </svg>
492 <p> ' . $jltwp_pro_notice . '</p>
493 </div>';
494 return $pro_content;
495 } else {
496 return $pro_content;
497 }
498 }
499
500
501
502 /**
503 * Documentation SVG Icon
504 */
505 public static function docs_icon()
506 {
507 return '<svg class="is-pulled-left mr-1 width="9" height="12" viewBox="0 0 9 12" fill="none" xmlns="http://www.w3.org/2000/svg">
508 <path d="M5.25 3.1875V0H0.5625C0.250781 0 0 0.250781 0 0.5625V11.4375C0 11.7492 0.250781 12 0.5625 12H8.4375C8.74922 12 9 11.7492 9 11.4375V3.75H5.8125C5.50313 3.75 5.25 3.49687 5.25 3.1875ZM6.75 8.71875C6.75 8.87344 6.62344 9 6.46875 9H2.53125C2.37656 9 2.25 8.87344 2.25 8.71875V8.53125C2.25 8.37656 2.37656 8.25 2.53125 8.25H6.46875C6.62344 8.25 6.75 8.37656 6.75 8.53125V8.71875ZM6.75 7.21875C6.75 7.37344 6.62344 7.5 6.46875 7.5H2.53125C2.37656 7.5 2.25 7.37344 2.25 7.21875V7.03125C2.25 6.87656 2.37656 6.75 2.53125 6.75H6.46875C6.62344 6.75 6.75 6.87656 6.75 7.03125V7.21875ZM6.75 5.53125V5.71875C6.75 5.87344 6.62344 6 6.46875 6H2.53125C2.37656 6 2.25 5.87344 2.25 5.71875V5.53125C2.25 5.37656 2.37656 5.25 2.53125 5.25H6.46875C6.62344 5.25 6.75 5.37656 6.75 5.53125ZM9 2.85703V3H6V0H6.14297C6.29297 0 6.43594 0.0585938 6.54141 0.164062L8.83594 2.46094C8.94141 2.56641 9 2.70938 9 2.85703Z" fill="#0347FF"/>
509 </svg>';
510 }
511 /**
512 * Video Tutorials SVG Icon
513 */
514 public static function video_tutorials_icon()
515 {
516 return '<svg class="is-pulled-left mr-1 width="8" height="10" viewBox="0 0 8 10" fill="none" xmlns="http://www.w3.org/2000/svg">
517 <path d="M7.5 4.13399C8.16667 4.51889 8.16667 5.48114 7.5 5.86604L1.5 9.33014C0.833334 9.71504 0 9.23392 0 8.46412V1.53592C0 0.766115 0.833333 0.28499 1.5 0.66989L7.5 4.13399Z" fill="#C30052"/>
518 </svg>';
519 }
520
521 /**
522 * Facebook Group SVG Icon
523 */
524 public static function fbgroup_icon()
525 {
526 return '<svg class="is-pulled-left mr-1 width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
527 <path d="M1.82594 0C0.814448 0 0 0.814448 0 1.82594V8.17405C0 9.18554 0.814448 9.99999 1.82594 9.99999H5.26656V6.09062H4.23281V4.68312H5.26656V3.48062C5.26656 2.53587 5.87735 1.66844 7.28437 1.66844C7.85404 1.66844 8.2753 1.72313 8.2753 1.72313L8.24217 3.0375C8.24217 3.0375 7.81254 3.03344 7.34374 3.03344C6.83635 3.03344 6.75499 3.26722 6.75499 3.65532V4.68313H8.28248L8.21592 6.09063H6.75499V10H8.17404C9.18553 10 9.99998 9.18555 9.99998 8.17406V1.82595C9.99998 0.814458 9.18553 9.99998e-06 8.17404 9.99998e-06H1.82593L1.82594 0Z" fill="#3B5998"/>
528 </svg>';
529 }
530
531 /**
532 * Support SVG Icon
533 */
534 public static function support_icon()
535 {
536 return '<svg class="is-pulled-left mr-1 width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
537 <path fill-rule="evenodd" clip-rule="evenodd" d="M10 5C10 6.32608 9.47322 7.59785 8.53553 8.53553C7.59785 9.47322 6.32608 10 5 10C3.67392 10 2.40215 9.47322 1.46447 8.53553C0.526784 7.59785 0 6.32608 0 5C0 3.67392 0.526784 2.40215 1.46447 1.46447C2.40215 0.526784 3.67392 0 5 0C6.32608 0 7.59785 0.526784 8.53553 1.46447C9.47322 2.40215 10 3.67392 10 5ZM8.75 5C8.75 5.62063 8.59937 6.20563 8.3325 6.72125L7.38 5.76813C7.52262 5.32668 7.5395 4.85425 7.42875 4.40375L8.405 3.4275C8.62625 3.90563 8.75 4.4375 8.75 5ZM5.52187 7.44563L6.50938 8.43312C6.03375 8.64254 5.51968 8.75046 5 8.75C4.45699 8.75068 3.92036 8.63294 3.4275 8.405L4.40375 7.42875C4.77042 7.5186 5.15266 7.52437 5.52187 7.44563ZM2.59875 5.69812C2.47576 5.27463 2.46692 4.82614 2.57313 4.39812L2.52313 4.44812L1.56687 3.49C1.35738 3.96582 1.24945 4.48011 1.25 5C1.25 5.59625 1.38937 6.16 1.63687 6.66062L2.59938 5.69812H2.59875ZM3.27875 1.66687C3.81076 1.39189 4.40112 1.24891 5 1.25C5.59625 1.25 6.16 1.38937 6.66062 1.63687L5.69812 2.59938C5.21829 2.45961 4.70759 2.46679 4.23187 2.62L3.27875 1.6675V1.66687ZM6.25 5C6.25 5.33152 6.1183 5.64946 5.88388 5.88388C5.64946 6.1183 5.33152 6.25 5 6.25C4.66848 6.25 4.35054 6.1183 4.11612 5.88388C3.8817 5.64946 3.75 5.33152 3.75 5C3.75 4.66848 3.8817 4.35054 4.11612 4.11612C4.35054 3.8817 4.66848 3.75 5 3.75C5.33152 3.75 5.64946 3.8817 5.88388 4.11612C6.1183 4.35054 6.25 4.66848 6.25 5Z" fill="#4E4B66"/>
538 </svg>';
539 }
540
541 /* White Label Upgrade Pro */
542 public static function jltwp_adminify_white_label_upgrade()
543 {
544
545 ?>
546 <div class="wp-adminify-white-label-notice-content">
547 <div class="wp-adminify-white-label-notice-logo">
548 <img src="<?php echo WP_ADMINIFY_ASSETS_IMAGE . 'logos/logo-text-light.svg'; ?>" alt="<?php echo WP_ADMINIFY; ?>">
549 </div>
550 <h2>
551 <?php _e('Upgrade <span>Pro</span> for White Labeling', WP_ADMINIFY_TD); ?>
552 </h2>
553 <p>
554 <?php echo sprintf(__('<strong>%1$s</strong> can be completely re-branded with your own brand Logo, Name and Author Details. Your clients will never know what tools you are using to build their website and will think that this is your own tool set. White-labeling works as long as your license is active. ', WP_ADMINIFY_TD), WP_ADMINIFY);
555
556 _e('', WP_ADMINIFY_TD); ?><br>
557 <em><?php _e('Note: Agency Plans Only', WP_ADMINIFY_TD); ?></em>
558 </p>
559 <a class="wp-adminify-btn wp-adminify-get-pro" href="<?php echo esc_url('https://wpadminify.com/pricing/'); ?>" target="_blank"><?php _e('Upgrade Now', WP_ADMINIFY_TD); ?></a>
560 </div>
561 <?php }
562 }
563