PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 3.2.2
Adminify – White Label, Admin Menu Editor, Login Customizer v3.2.2
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 3.2.2, at Inc/utils.php

937 lines 32.6 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' ) ) {
8 exit;
9 }
10 class Utils
11 {
12 public $post_types = '' ;
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
23 if ( empty($value) ) {
24 return;
25 } else {
26 return true;
27 }
28
29 }
30
31 /**
32 * Check given value empty or not
33 *
34 * @param [type] $value
35 *
36 * @return void
37 */
38 public static function check_is_empty( $value, $default = '' )
39 {
40 $value = ( !empty(esc_attr( $value )) ? $value : $default );
41 return $value;
42 }
43
44 /**
45 * Check given value empty or not
46 *
47 * @param [type] $value
48 *
49 * @return void
50 */
51 public static function restricted_for( $restrict_for )
52 {
53 if ( !is_array( $restrict_for ) ) {
54 $restrict_for = [ 'administrator' ];
55 }
56 if ( !function_exists( 'wp_get_current_user' ) ) {
57 include ABSPATH . 'wp-includes/pluggable.php';
58 }
59 $current_user = wp_get_current_user();
60 $current_name = $current_user->display_name;
61 $current_roles = $current_user->roles;
62 $all_roles = wp_roles()->get_names();
63 if ( in_array( $current_name, $restrict_for ) ) {
64 return true;
65 }
66 // Super Admin for Multisite
67 if ( is_super_admin() && is_multisite() ) {
68
69 if ( in_array( 'Super Admin', $restrict_for ) || in_array( 'administrator', $restrict_for ) ) {
70 return true;
71 } else {
72 return false;
73 }
74
75 }
76 // Normal Super Admin
77 // if ($current_user->ID === 1) {
78 // if (in_array('Super Admin', $restrict_for)) {
79 // return true;
80 // } else {
81 // return false;
82 // }
83 // }
84 foreach ( $current_roles as $role ) {
85 $role_name = $all_roles[$role];
86 if ( in_array( strtolower( $role_name ), $restrict_for ) ) {
87 return true;
88 }
89 }
90 }
91
92 /**
93 * Check Site wide plugin settings
94 */
95 public static function is_site_wide( $plugin )
96 {
97 if ( !is_multisite() ) {
98 return false;
99 }
100 $plugins = get_site_option( 'active_sitewide_plugins' );
101 if ( isset( $plugins[$plugin] ) ) {
102 return true;
103 }
104 return false;
105 }
106
107 /**
108 * Restricts for role / user
109 */
110 public static function restrict_for( $disabled_for )
111 {
112 if ( !is_array( $disabled_for ) ) {
113 return false;
114 }
115 require_once ABSPATH . '/wp-includes/pluggable.php';
116 if ( !function_exists( 'wp_get_current_user' ) ) {
117 return false;
118 }
119 $current_user = wp_get_current_user();
120 $current_name = $current_user->display_name;
121 $current_roles = $current_user->roles;
122 $formattedroles = [];
123 foreach ( $disabled_for as $item ) {
124 $item = strtolower( $item );
125 $item = str_replace( ' ', '_', $item );
126 array_push( $formattedroles, $item );
127 }
128 if ( in_array( $current_name, $disabled_for ) ) {
129 return true;
130 }
131 foreach ( $current_roles as $role ) {
132 if ( in_array( $role, $formattedroles ) ) {
133 return true;
134 }
135 }
136 }
137
138 // Get Taxonomies
139 public static function get_taxonomies()
140 {
141 $args = [
142 'public' => true,
143 'show_ui' => true,
144 ];
145 $output = 'objects';
146 $taxonomies = get_taxonomies( $args, $output );
147 $taxonomies = $taxonomies;
148 return $taxonomies;
149 }
150
151 // Get Post Types
152 public static function get_post_types()
153 {
154 $args = [
155 'public' => true,
156 'show_ui' => true,
157 ];
158 $output = 'objects';
159 $post_types = get_post_types( $args, $output );
160 $post_types = $post_types;
161 return $post_types;
162 }
163
164 // Get Post Meta
165 public static function post_meta( $meta_key )
166 {
167 $meta_key = get_post_meta( get_the_ID(), $meta_key, true );
168 return $meta_key;
169 }
170
171 // verfiy current page id
172 public static function jltwp_adminify_currentpage_id( $id )
173 {
174 if ( !function_exists( 'get_current_screen' ) ) {
175 return true;
176 }
177 $screen = get_current_screen();
178 return is_object( $screen ) && $screen->id == $id;
179 }
180
181 /**
182 * Get Current Admin Page Title
183 *
184 * @param string $title
185 *
186 * @return void
187 */
188 public static function admin_page_title( $title = '' )
189 {
190 $title = ( isset( $title ) && !empty($title) ? $title : WP_ADMINIFY );
191 echo esc_html( $title ) ;
192
193 if ( is_multisite() ) {
194 $text = ' | ' . esc_html__( 'Current Blog ID', 'adminify' ) . ': ' . get_current_blog_id();
195 ?>
196 <?php
197 echo self::wp_kses_custom( self::admin_page_subtitle( $text ) ) ;
198 ?>
199 <?php
200 }
201
202 ?>
203 <?php
204 }
205
206 /**
207 * Get Current Admin Subtitle
208 */
209 public static function admin_page_subtitle( $text )
210 {
211 ?>
212
213 <span style="color:#8b959e;" <?php
214 if ( is_rtl() ) {
215 echo ' dir="rtl"' ;
216 }
217 ?>>
218 <?php
219 echo esc_html( $text ) ;
220 ?>
221 </span>
222
223 <?php
224 }
225
226 public static function convert_name_to_class( $name )
227 {
228 $class = str_replace( [
229 ' ',
230 ',',
231 '.',
232 '"',
233 "'",
234 '/',
235 '\\',
236 '+',
237 '=',
238 ')',
239 '(',
240 '*',
241 '&',
242 '^',
243 '%',
244 '$',
245 '#',
246 '@',
247 '!',
248 '~',
249 '`',
250 '<',
251 '>',
252 '?',
253 '[',
254 ']',
255 '{',
256 '}',
257 '|',
258 ':'
259 ], '', $name );
260 return $class;
261 }
262
263 public static function jltwp_adminify_class_cleanup( $string )
264 {
265 // Lower case everything
266 $string = strtolower( $string );
267 // Make alphanumeric (removes all other characters)
268 $string = preg_replace( '/[^a-z0-9_\\s-]/', '', $string );
269 // Clean up multiple dashes or whitespaces
270 $string = preg_replace( '/[\\s-]+/', ' ', $string );
271 // Convert whitespaces and underscore to dash
272 $string = preg_replace( '/[\\s_]/', '-', $string );
273 return $string;
274 }
275
276 public static function sanitize_id( $url )
277 {
278 $url = preg_replace( '/^customize.php\\?return=.*$/', 'customize', $url );
279 $url = preg_replace( '/(&|&amp;|&#038;)?_wpnonce=([^&]+)/', '', $url );
280 return str_replace( [
281 '.php',
282 '.',
283 '/',
284 '?',
285 '='
286 ], [
287 '',
288 '_',
289 '_',
290 '_',
291 '_'
292 ], $url );
293 }
294
295 /**
296 * Strip tags and it's content from the given string.
297 *
298 * @link https://stackoverflow.com/questions/14684077/remove-all-html-tags-from-php-string/#answer-39320168
299 *
300 * @param string $text The string being stripped.
301 * @return string The stripped string.
302 */
303 public static function strip_tags_content( $text )
304 {
305 $cleanup = preg_replace( '@<(\\w+)\\b.*?>.*?</\\1>@si', '', $text );
306 $cleanup = wp_strip_all_tags( $cleanup );
307 $cleanup = trim( $cleanup );
308 return $cleanup;
309 }
310
311 /**
312 * String to ID
313 * Remove Space replace with underscore and lowercase
314 *
315 * @param void
316 *
317 * @return string
318 */
319 public static function string_to_id( $string )
320 {
321 $string_replace = str_replace( ' ', '_', $string );
322 $formatted_string = strtolower( $string_replace );
323 return $formatted_string;
324 }
325
326 /**
327 * ID to String
328 * Remove Space replace with underscore and lowercase
329 *
330 * @param void
331 *
332 * @return string
333 */
334 public static function id_to_string( $string )
335 {
336 $string_replace = str_replace( '_', ' ', $string );
337 $formatted_string = ucwords( $string_replace );
338 return $formatted_string;
339 }
340
341 /**
342 * Check is Plugin Active
343 *
344 * @param [type] $plugin_basename
345 *
346 * @return boolean
347 */
348 public static function is_plugin_active( $plugin_basename )
349 {
350 include_once ABSPATH . 'wp-admin/includes/plugin.php';
351 return is_plugin_active( $plugin_basename );
352 }
353
354 /**
355 * User Defined Settings
356 */
357 public static function get_user_preference( $key )
358 {
359 $userid = get_current_user_id();
360 $current = get_user_meta( $userid, '_wpadminify_preferences', true );
361 $value = false;
362 if ( is_array( $current ) ) {
363 if ( isset( $current[$key] ) ) {
364 $value = $current[$key];
365 }
366 }
367 return $value;
368 }
369
370 /**
371 * Sanitises and strips tags of input from ajax
372 *
373 * @since 1.0.0
374 * @variables $values = item to clean (array or string)
375 */
376 public static function clean_ajax_input( $values )
377 {
378
379 if ( is_array( $values ) ) {
380 foreach ( $values as $index => $in ) {
381
382 if ( is_array( $in ) ) {
383 $values[$index] = self::clean_ajax_input( $in );
384 } else {
385 $values[$index] = strip_tags( $in );
386 }
387
388 }
389 } else {
390 $values = strip_tags( $values );
391 }
392
393 return $values;
394 }
395
396 /**
397 * Check Ajax Error Messages
398 *
399 * @param [type] $message
400 *
401 * @return void
402 */
403 public static function ajax_error_message( $message )
404 {
405 $returndata = [];
406 $returndata['error'] = true;
407 $returndata['error_message'] = $message;
408 return json_encode( $returndata );
409 }
410
411 /**
412 * Get All Updates
413 * Themes, Plugins, Core etc
414 *
415 * @return void
416 */
417 public static function get_all_updates()
418 {
419 $allupdates = [];
420 $allupdates['total'] = 0;
421 $allupdates['wordpress'] = 0;
422 $allupdates['theme'] = 0;
423 $allupdates['plugin'] = 0;
424 if ( !is_admin() ) {
425 return $allupdates;
426 }
427 if ( !current_user_can( 'install_plugins' ) ) {
428 return $allupdates;
429 }
430 $updatesTotal = 0;
431
432 if ( is_super_admin() && is_admin() ) {
433 $pluginUpdates = get_plugin_updates();
434 $themeUpdates = get_theme_updates();
435 $wpUpdates = get_core_updates();
436
437 if ( isset( $wpUpdates[0] ) ) {
438 $wpversion = $wpUpdates[0]->version;
439 global $wp_version ;
440
441 if ( $wpversion > $wp_version ) {
442 $wpUpdates = 1;
443 } else {
444 $wpUpdates = 0;
445 }
446
447 } else {
448 $wpUpdates = 0;
449 }
450
451 $updatesTotal = count( $pluginUpdates ) + count( $themeUpdates ) + $wpUpdates;
452 $allupdates['total'] = $updatesTotal;
453 $allupdates['wordpress'] = $wpUpdates;
454 $allupdates['theme'] = $themeUpdates;
455 $allupdates['plugin'] = $pluginUpdates;
456 }
457
458 return $allupdates;
459 }
460
461 public static function adminfiy_help_urls(
462 $module_name = '',
463 $docs = '',
464 $youtube = '',
465 $facebook_grp = '',
466 $support = ''
467 )
468 {
469 $help_content = '';
470 // Modules
471
472 if ( empty($module_name) ) {
473 $module_name = 'Module';
474 } else {
475 $module_name = $module_name;
476 }
477
478 // Docs
479
480 if ( empty($docs) ) {
481 $docs = 'https://wpadminify.com/kb';
482 } else {
483 $docs = $docs;
484 }
485
486 // youtube
487
488 if ( empty($youtube) ) {
489 $youtube = 'https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8';
490 } else {
491 $youtube = $youtube;
492 }
493
494 // facebook_grp
495
496 if ( empty($facebook_grp) ) {
497 $facebook_grp = 'https://www.facebook.com/groups/jeweltheme';
498 } else {
499 $facebook_grp = $facebook_grp;
500 }
501
502 // Support
503
504 if ( empty($support) ) {
505 $support = 'https://wpadminify.com/support/wp-adminify';
506 } else {
507 $support = $support;
508 }
509
510 $help_content = sprintf(
511 __( '%1$s <a class="adminify-docs-url" href="%2$s" target="_blank"> ' . self::docs_icon() . ' Docs</a>
512 <a class="adminify-video-url" href="%3$s" target="_blank">' . self::video_tutorials_icon() . ' Video Tutorial</a> <a class="adminify-fbgroup-url" href="%4$s" target="_blank">' . self::fbgroup_icon() . ' Facebook Group</a> <a class="adminify-support-url" href="%5$s" target="_blank">' . self::support_icon() . ' Support</a>', 'adminify' ),
513 $module_name,
514 $docs,
515 $youtube,
516 $facebook_grp,
517 $support
518 );
519 return $help_content;
520 }
521
522 /**
523 * Upgrade Pro Icon
524 *
525 * @return void
526 */
527 public static function jltwp_adminify_upgrade_pro_icon()
528 {
529 return '<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">
530 <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"/>
531 </svg>';
532 }
533
534 // Upgrade to Pro Notice
535 public static function adminify_upgrade_pro( $custom_message = '' )
536 {
537
538 if ( empty($custom_message) ) {
539 $pro_content = sprintf( __( 'Get <strong>Pro Version</strong> to Unlock this feature.', 'adminify' ) );
540 } else {
541 $pro_content = $custom_message;
542 }
543
544 $upgrade_notice_msg = sprintf(
545 __( '<div class="adminify-pro-notice"> %1$s <p> %2$s <a href="%3$s" target="_blank">%4$s</a> </p></div>', 'adminify' ),
546 self::jltwp_adminify_upgrade_pro_icon(),
547 self::wp_kses_custom( $pro_content ),
548 esc_url( 'https://wpadminify.com/pricing' ),
549 __( 'Upgrade to Pro Now!', 'adminify' )
550 );
551 return self::wp_kses_custom( $upgrade_notice_msg );
552 }
553
554 /**
555 * Documentation SVG Icon
556 */
557 public static function docs_icon()
558 {
559 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">
560 <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"/>
561 </svg>';
562 }
563
564 /**
565 * Video Tutorials SVG Icon
566 */
567 public static function video_tutorials_icon()
568 {
569 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">
570 <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"/>
571 </svg>';
572 }
573
574 /**
575 * Facebook Group SVG Icon
576 */
577 public static function fbgroup_icon()
578 {
579 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">
580 <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"/>
581 </svg>';
582 }
583
584 /**
585 * Support SVG Icon
586 */
587 public static function support_icon()
588 {
589 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">
590 <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"/>
591 </svg>';
592 }
593
594 /* White Label Upgrade Pro */
595 public static function jltwp_adminify_white_label_upgrade()
596 {
597 ?>
598 <div class="wp-adminify-white-label-notice-content">
599 <div class="wp-adminify-white-label-notice-logo">
600 <img src="<?php
601 echo esc_url( WP_ADMINIFY_ASSETS_IMAGE ) . 'logos/logo-text-light.svg' ;
602 ?>" alt="<?php
603 echo esc_attr( WP_ADMINIFY ) ;
604 ?>">
605 </div>
606 <h2>
607 <?php
608 echo sprintf( __( 'Upgrade <span>Pro</span> for White Labeling', 'adminify' ) ) ;
609 ?>
610 </h2>
611 <p>
612 <?php
613 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. ', 'adminify' ), esc_html( WP_ADMINIFY ) ) ;
614 ?>
615 <br>
616 <em><?php
617 esc_html_e( 'Note: Agency or Higher Plans Only', 'adminify' );
618 ?></em>
619 </p>
620 <a class="wp-adminify-btn wp-adminify-get-pro" href="<?php
621 echo esc_url( 'https://wpadminify.com/pricing/' ) ;
622 ?>" target="_blank">
623 <?php
624 esc_html_e( 'Upgrade Now', 'adminify' );
625 ?>
626 </a>
627 </div>
628 <?php
629 }
630
631 public static function get_widget_template_options()
632 {
633 $type = 'widget';
634 $page_templates = self::jltwp_adminify_get_page_templates( $type );
635 $options[-1] = __( 'Select', 'adminify' );
636
637 if ( count( $page_templates ) ) {
638 foreach ( $page_templates as $id => $name ) {
639 $options[$id] = $name;
640 }
641 } else {
642 $options['no_template'] = __( 'No saved templates found!', 'adminify' );
643 }
644
645 return $options;
646 }
647
648 public static function get_section_template_options()
649 {
650 $type = 'section';
651 $page_templates = self::jltwp_adminify_get_page_templates( $type );
652 $options[-1] = __( 'Select', 'adminify' );
653
654 if ( count( $page_templates ) ) {
655 foreach ( $page_templates as $id => $name ) {
656 $options[$id] = $name;
657 }
658 } else {
659 $options['no_template'] = __( 'No saved templates found!', 'adminify' );
660 }
661
662 return $options;
663 }
664
665 public static function get_page_template_options()
666 {
667 $type = 'page';
668 $page_templates = self::jltwp_adminify_get_page_templates( $type );
669 $options[-1] = __( 'Select', 'adminify' );
670
671 if ( count( $page_templates ) ) {
672 foreach ( $page_templates as $id => $name ) {
673 $options[$id] = $name;
674 }
675 } else {
676 $options['no_template'] = __( 'No saved templates found!', 'adminify' );
677 }
678
679 return $options;
680 }
681
682 public static function get_theme_presets( $theme = null )
683 {
684 $presets = [
685 'preset1' => [
686 '--adminify-preset-background' => '#F9F9F9',
687 '--adminify-menu-bg' => '#ffffff',
688 '--adminify-menu-text-color' => 'rgba(78, 75, 102, 0.72)',
689 '--adminify-admin-bar-bg' => 'var(--adminify-menu-bg)',
690 '--adminify-admin-bar-icon' => '#14142B',
691 '--adminify-admin-bar-input-bg' => '#F1F1F3',
692 '--adminify-admin-bar-input-text' => '#14142B',
693 '--adminify-admin-bar-icon-brightness' => '1',
694 '--adminify-notif-bg-color' => '#FF1C69',
695 '--adminify-text-color' => '#ffffff',
696 '--adminify-btn-bg' => '#0347FF',
697 '--adminify-admin-bar-icon-filter' => '0.5',
698 ],
699 'preset2' => [
700 '--adminify-preset-background' => '#F9F9F9',
701 '--adminify-menu-bg' => '#14142B',
702 '--adminify-menu-text-color' => '#ffffff',
703 '--adminify-admin-bar-bg' => 'var(--adminify-menu-bg)',
704 '--adminify-admin-bar-icon' => '#ffffff',
705 '--adminify-admin-bar-input-bg' => '#2b2a3f',
706 '--adminify-admin-bar-input-text' => '#9391A0',
707 '--adminify-admin-bar-icon-brightness' => '11',
708 '--adminify-notif-bg-color' => '#FF1C69',
709 '--adminify-text-color' => '#ffffff',
710 '--adminify-btn-bg' => '#0347FF',
711 '--adminify-admin-bar-icon-filter' => '1',
712 ],
713 ];
714 // return all presets
715 if ( is_null( $theme ) ) {
716 return $presets;
717 }
718 // return specific preset
719 if ( array_key_exists( $theme, $presets ) ) {
720 return $presets[$theme];
721 }
722 // specific preset not found
723 return [];
724 }
725
726 public static function jltwp_adminify_get_page_templates( $type = '' )
727 {
728 $args = [
729 'post_type' => 'elementor_library',
730 'posts_per_page' => -1,
731 ];
732 if ( $type ) {
733 $args['tax_query'] = [ [
734 'taxonomy' => 'elementor_library_type',
735 'field' => 'slug',
736 'terms' => $type,
737 ] ];
738 }
739 $page_templates = get_posts( $args );
740 $options = [];
741 if ( !empty($page_templates) && !is_wp_error( $page_templates ) ) {
742 foreach ( $page_templates as $post ) {
743 $options[$post->ID] = $post->post_title;
744 }
745 }
746 return $options;
747 }
748
749 public static function assets_ext( $ext )
750 {
751 if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
752 return $ext;
753 }
754 return '.min' . $ext;
755 }
756
757 public static function wp_kses_atts_map( array $attrs )
758 {
759 return array_fill_keys( array_values( $attrs ), true );
760 }
761
762 public static function wp_kses_custom( $content )
763 {
764 $allowed_tags = wp_kses_allowed_html( 'post' );
765 $custom_tags = [
766 'select' => self::wp_kses_atts_map( [
767 'class',
768 'id',
769 'style',
770 'width',
771 'height',
772 'title',
773 'data',
774 'name',
775 'autofocus',
776 'disabled',
777 'multiple',
778 'required',
779 'size'
780 ] ),
781 'input' => self::wp_kses_atts_map( [
782 'class',
783 'id',
784 'style',
785 'width',
786 'height',
787 'title',
788 'data',
789 'name',
790 'autofocus',
791 'disabled',
792 'required',
793 'size',
794 'type',
795 'checked',
796 'readonly',
797 'placeholder',
798 'value',
799 'maxlength',
800 'min',
801 'max',
802 'multiple',
803 'pattern',
804 'step',
805 'autocomplete'
806 ] ),
807 'textarea' => self::wp_kses_atts_map( [
808 'class',
809 'id',
810 'style',
811 'width',
812 'height',
813 'title',
814 'data',
815 'name',
816 'autofocus',
817 'disabled',
818 'required',
819 'rows',
820 'cols',
821 'wrap',
822 'maxlength'
823 ] ),
824 'option' => self::wp_kses_atts_map( [
825 'class',
826 'id',
827 'label',
828 'disabled',
829 'label',
830 'selected',
831 'value'
832 ] ),
833 'optgroup' => self::wp_kses_atts_map( [
834 'disabled',
835 'label',
836 'class',
837 'id'
838 ] ),
839 'form' => self::wp_kses_atts_map( [
840 'class',
841 'id',
842 'data',
843 'style',
844 'width',
845 'height',
846 'accept-charset',
847 'action',
848 'autocomplete',
849 'enctype',
850 'method',
851 'name',
852 'novalidate',
853 'rel',
854 'target'
855 ] ),
856 'svg' => self::wp_kses_atts_map( [
857 'class',
858 'xmlns',
859 'viewbox',
860 'width',
861 'height',
862 'fill',
863 'aria-hidden',
864 'aria-labelledby',
865 'role'
866 ] ),
867 'rect' => self::wp_kses_atts_map( [
868 'rx',
869 'width',
870 'height',
871 'fill'
872 ] ),
873 'path' => self::wp_kses_atts_map( [ 'd', 'fill' ] ),
874 'g' => self::wp_kses_atts_map( [ 'fill' ] ),
875 'defs' => self::wp_kses_atts_map( [ 'fill' ] ),
876 'linearGradient' => self::wp_kses_atts_map( [
877 'id',
878 'x1',
879 'x2',
880 'y1',
881 'y2',
882 'gradientUnits'
883 ] ),
884 'stop' => self::wp_kses_atts_map( [ 'stop-color', 'offset', 'stop-opacity' ] ),
885 'style' => self::wp_kses_atts_map( [ 'type' ] ),
886 'div' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
887 'ul' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
888 'li' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
889 'label' => self::wp_kses_atts_map( [ 'class', 'for' ] ),
890 'span' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
891 'h1' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
892 'h2' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
893 'h3' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
894 'h4' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
895 'h5' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
896 'h6' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
897 'a' => self::wp_kses_atts_map( [
898 'class',
899 'href',
900 'target',
901 'rel'
902 ] ),
903 'p' => self::wp_kses_atts_map( [
904 'class',
905 'id',
906 'style',
907 'data'
908 ] ),
909 'table' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
910 'thead' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
911 'tbody' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
912 'tr' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
913 'th' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
914 'td' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
915 'i' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
916 'button' => self::wp_kses_atts_map( [ 'class', 'id' ] ),
917 'nav' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
918 'time' => self::wp_kses_atts_map( [ 'datetime' ] ),
919 'br' => [],
920 'strong' => [],
921 'style' => [],
922 'img' => self::wp_kses_atts_map( [
923 'class',
924 'src',
925 'alt',
926 'height',
927 'width',
928 'srcset',
929 'id',
930 'loading'
931 ] ),
932 ];
933 $allowed_tags = array_merge_recursive( $allowed_tags, $custom_tags );
934 return wp_kses( stripslashes_deep( $content ), $allowed_tags );
935 }
936
937 }