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

930 lines 32.4 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 ) ) {
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;"
214 <?php
215 if ( is_rtl() ) {
216 echo ' dir="rtl"' ;
217 }
218 ?>
219 >
220 <?php
221 echo esc_html( $text ) ;
222 ?>
223 </span>
224
225 <?php
226 }
227
228 public static function convert_name_to_class( $name )
229 {
230 $class = str_replace( [
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 '|',
260 ':'
261 ], '', $name );
262 return $class;
263 }
264
265 public static function jltwp_adminify_class_cleanup( $string )
266 {
267 // Lower case everything
268 $string = strtolower( $string );
269 // Make alphanumeric (removes all other characters)
270 $string = preg_replace( '/[^a-z0-9_\\s-]/', '', $string );
271 // Clean up multiple dashes or whitespaces
272 $string = preg_replace( '/[\\s-]+/', ' ', $string );
273 // Convert whitespaces and underscore to dash
274 $string = preg_replace( '/[\\s_]/', '-', $string );
275 return $string;
276 }
277
278 public static function sanitize_id( $url )
279 {
280 $url = preg_replace( '/^customize.php\\?return=.*$/', 'customize', $url );
281 $url = preg_replace( '/(&|&amp;|&#038;)?_wpnonce=([^&]+)/', '', $url );
282 return str_replace( [
283 '.php',
284 '.',
285 '/',
286 '?',
287 '='
288 ], [
289 '',
290 '_',
291 '_',
292 '_',
293 '_'
294 ], $url );
295 }
296
297 /**
298 * Strip tags and it's content from the given string.
299 *
300 * @link https://stackoverflow.com/questions/14684077/remove-all-html-tags-from-php-string/#answer-39320168
301 *
302 * @param string $text The string being stripped.
303 * @return string The stripped string.
304 */
305 public static function strip_tags_content( $text )
306 {
307 $cleanup = preg_replace( '@<(\\w+)\\b.*?>.*?</\\1>@si', '', $text );
308 $cleanup = wp_strip_all_tags( $cleanup );
309 $cleanup = trim( $cleanup );
310 return $cleanup;
311 }
312
313 /**
314 * String to ID
315 * Remove Space replace with underscore and lowercase
316 *
317 * @param void
318 *
319 * @return string
320 */
321 public static function string_to_id( $string )
322 {
323 $string_replace = str_replace( ' ', '_', $string );
324 $formatted_string = strtolower( $string_replace );
325 return $formatted_string;
326 }
327
328 /**
329 * ID to String
330 * Remove Space replace with underscore and lowercase
331 *
332 * @param void
333 *
334 * @return string
335 */
336 public static function id_to_string( $string )
337 {
338 $string_replace = str_replace( '_', ' ', $string );
339 $formatted_string = ucwords( $string_replace );
340 return $formatted_string;
341 }
342
343 /**
344 * Check is Plugin Active
345 *
346 * @param [type] $plugin_basename
347 *
348 * @return boolean
349 */
350 public static function is_plugin_active( $plugin_basename )
351 {
352 include_once ABSPATH . 'wp-admin/includes/plugin.php';
353 return is_plugin_active( $plugin_basename );
354 }
355
356 /**
357 * User Defined Settings
358 */
359 public static function get_user_preference( $key )
360 {
361 $userid = get_current_user_id();
362 $current = get_user_meta( $userid, '_wpadminify_preferences', true );
363 $value = false;
364 if ( is_array( $current ) ) {
365 if ( isset( $current[$key] ) ) {
366 $value = $current[$key];
367 }
368 }
369 return $value;
370 }
371
372 /**
373 * Sanitises and strips tags of input from ajax
374 *
375 * @since 1.0.0
376 * @variables $values = item to clean (array or string)
377 */
378 public static function clean_ajax_input( $values )
379 {
380
381 if ( is_array( $values ) ) {
382 foreach ( $values as $index => $in ) {
383
384 if ( is_array( $in ) ) {
385 $values[$index] = self::clean_ajax_input( $in );
386 } else {
387 $values[$index] = strip_tags( $in );
388 }
389
390 }
391 } else {
392 $values = strip_tags( $values );
393 }
394
395 return $values;
396 }
397
398 /**
399 * Check Ajax Error Messages
400 *
401 * @param [type] $message
402 *
403 * @return void
404 */
405 public static function ajax_error_message( $message )
406 {
407 $returndata = [];
408 $returndata['error'] = true;
409 $returndata['error_message'] = $message;
410 return json_encode( $returndata );
411 }
412
413 /**
414 * Get All Updates
415 * Themes, Plugins, Core etc
416 *
417 * @return void
418 */
419 public static function get_all_updates()
420 {
421 $allupdates = [];
422 $allupdates['total'] = 0;
423 $allupdates['wordpress'] = 0;
424 $allupdates['theme'] = 0;
425 $allupdates['plugin'] = 0;
426 if ( !is_admin() ) {
427 return $allupdates;
428 }
429 if ( !current_user_can( 'install_plugins' ) ) {
430 return $allupdates;
431 }
432 $updatesTotal = 0;
433
434 if ( is_super_admin() && is_admin() ) {
435 $pluginUpdates = get_plugin_updates();
436 $themeUpdates = get_theme_updates();
437 $wpUpdates = get_core_updates();
438
439 if ( isset( $wpUpdates[0] ) ) {
440 $wpversion = $wpUpdates[0]->version;
441 global $wp_version ;
442
443 if ( $wpversion > $wp_version ) {
444 $wpUpdates = 1;
445 } else {
446 $wpUpdates = 0;
447 }
448
449 } else {
450 $wpUpdates = 0;
451 }
452
453 $updatesTotal = count( $pluginUpdates ) + count( $themeUpdates ) + $wpUpdates;
454 $allupdates['total'] = $updatesTotal;
455 $allupdates['wordpress'] = $wpUpdates;
456 $allupdates['theme'] = $themeUpdates;
457 $allupdates['plugin'] = $pluginUpdates;
458 }
459
460 return $allupdates;
461 }
462
463 public static function adminfiy_help_urls(
464 $module_name = '',
465 $docs = '',
466 $youtube = '',
467 $facebook_grp = '',
468 $support = ''
469 )
470 {
471 $help_content = '';
472 // Modules
473
474 if ( empty($module_name) ) {
475 $module_name = 'Module';
476 } else {
477 $module_name = $module_name;
478 }
479
480 // Docs
481
482 if ( empty($docs) ) {
483 $docs = 'https://wpadminify.com/kb';
484 } else {
485 $docs = $docs;
486 }
487
488 // youtube
489
490 if ( empty($youtube) ) {
491 $youtube = 'https://www.youtube.com/playlist?list=PLqpMw0NsHXV-EKj9Xm1DMGa6FGniHHly8';
492 } else {
493 $youtube = $youtube;
494 }
495
496 // facebook_grp
497
498 if ( empty($facebook_grp) ) {
499 $facebook_grp = 'https://www.facebook.com/groups/jeweltheme';
500 } else {
501 $facebook_grp = $facebook_grp;
502 }
503
504 // Support
505
506 if ( empty($support) ) {
507 $support = 'https://wpadminify.com/support/wp-adminify';
508 } else {
509 $support = $support;
510 }
511
512 $help_content = sprintf(
513 __( '%1$s <a class="adminify-docs-url" href="%2$s" target="_blank"> ' . self::docs_icon() . ' Docs</a>
514 <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' ),
515 $module_name,
516 $docs,
517 $youtube,
518 $facebook_grp,
519 $support
520 );
521 return $help_content;
522 }
523
524 // Upgrade to Pro Notice
525 public static function adminify_upgrade_pro( $custom_message = '' )
526 {
527 $pro_content = '';
528 $pro_message = '';
529
530 if ( empty($custom_message) ) {
531 $pro_message = 'Get <strong>Pro Version</strong> to Unlock this feature.';
532 } else {
533 $pro_content = $custom_message;
534 }
535
536 if ( !empty($custom_message) ) {
537 $pro_message = wp_kses_post( $custom_message );
538 }
539 $jltwp_pro_notice = sprintf( __( '%s <a href="https://wpadminify.com/pricing" target="_blank">Upgrade to Pro Now!</a>', 'adminify' ), wp_kses_post( $pro_message ) );
540 $pro_content = '<div class="adminify-pro-notice">
541 <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">
542 <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"/>
543 </svg>
544 <p> ' . self::wp_kses_custom( $jltwp_pro_notice ) . '</p>
545 </div>';
546 return self::wp_kses_custom( $pro_content );
547 }
548
549 /**
550 * Documentation SVG Icon
551 */
552 public static function docs_icon()
553 {
554 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">
555 <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"/>
556 </svg>';
557 }
558
559 /**
560 * Video Tutorials SVG Icon
561 */
562 public static function video_tutorials_icon()
563 {
564 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">
565 <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"/>
566 </svg>';
567 }
568
569 /**
570 * Facebook Group SVG Icon
571 */
572 public static function fbgroup_icon()
573 {
574 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">
575 <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"/>
576 </svg>';
577 }
578
579 /**
580 * Support SVG Icon
581 */
582 public static function support_icon()
583 {
584 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">
585 <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"/>
586 </svg>';
587 }
588
589 /* White Label Upgrade Pro */
590 public static function jltwp_adminify_white_label_upgrade()
591 {
592 ?>
593 <div class="wp-adminify-white-label-notice-content">
594 <div class="wp-adminify-white-label-notice-logo">
595 <img src="<?php
596 echo esc_url( WP_ADMINIFY_ASSETS_IMAGE ) . 'logos/logo-text-light.svg' ;
597 ?>" alt="<?php
598 echo esc_attr( WP_ADMINIFY ) ;
599 ?>">
600 </div>
601 <h2>
602 <?php
603 esc_html_e( 'Upgrade <span>Pro</span> for White Labeling', 'adminify' );
604 ?>
605 </h2>
606 <p>
607 <?php
608 echo sprintf( esc_html_e( '<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 ) ) ;
609 ?>
610 <br>
611 <em><?php
612 esc_html_e( 'Note: Agency or Higher Plans Only', 'adminify' );
613 ?></em>
614 </p>
615 <a class="wp-adminify-btn wp-adminify-get-pro" href="<?php
616 echo esc_url( 'https://wpadminify.com/pricing/' ) ;
617 ?>" target="_blank">
618 <?php
619 esc_html_e( 'Upgrade Now', 'adminify' );
620 ?>
621 </a>
622 </div>
623 <?php
624 }
625
626 public static function get_widget_template_options()
627 {
628 $type = 'widget';
629 $page_templates = self::jltwp_adminify_get_page_templates( $type );
630 $options[-1] = __( 'Select', 'adminify' );
631
632 if ( count( $page_templates ) ) {
633 foreach ( $page_templates as $id => $name ) {
634 $options[$id] = $name;
635 }
636 } else {
637 $options['no_template'] = __( 'No saved templates found!', 'adminify' );
638 }
639
640 return $options;
641 }
642
643 public static function get_section_template_options()
644 {
645 $type = 'section';
646 $page_templates = self::jltwp_adminify_get_page_templates( $type );
647 $options[-1] = __( 'Select', 'adminify' );
648
649 if ( count( $page_templates ) ) {
650 foreach ( $page_templates as $id => $name ) {
651 $options[$id] = $name;
652 }
653 } else {
654 $options['no_template'] = __( 'No saved templates found!', 'adminify' );
655 }
656
657 return $options;
658 }
659
660 public static function get_page_template_options()
661 {
662 $type = 'page';
663 $page_templates = self::jltwp_adminify_get_page_templates( $type );
664 $options[-1] = __( 'Select', 'adminify' );
665
666 if ( count( $page_templates ) ) {
667 foreach ( $page_templates as $id => $name ) {
668 $options[$id] = $name;
669 }
670 } else {
671 $options['no_template'] = __( 'No saved templates found!', 'adminify' );
672 }
673
674 return $options;
675 }
676
677 public static function get_theme_presets( $theme = null )
678 {
679 $presets = [
680 'preset1' => [
681 '--adminify-preset-background' => '#F9F9F9',
682 '--adminify-menu-bg' => '#ffffff',
683 '--adminify-menu-text-color' => 'rgba(78, 75, 102, 0.72)',
684 '--adminify-admin-bar-bg' => 'var(--adminify-menu-bg)',
685 '--adminify-admin-bar-icon' => '#14142B',
686 '--adminify-admin-bar-input-bg' => '#F1F1F3',
687 '--adminify-admin-bar-input-text' => '#14142B',
688 '--adminify-admin-bar-icon-brightness' => '1',
689 '--adminify-notif-bg-color' => '#FF1C69',
690 '--adminify-text-color' => '#ffffff',
691 '--adminify-btn-bg' => '#0347FF',
692 '--adminify-admin-bar-icon-filter' => '0.5',
693 ],
694 'preset2' => [
695 '--adminify-preset-background' => '#F9F9F9',
696 '--adminify-menu-bg' => '#14142B',
697 '--adminify-menu-text-color' => '#ffffff',
698 '--adminify-admin-bar-bg' => 'var(--adminify-menu-bg)',
699 '--adminify-admin-bar-icon' => '#ffffff',
700 '--adminify-admin-bar-input-bg' => '#2b2a3f',
701 '--adminify-admin-bar-input-text' => '#9391A0',
702 '--adminify-admin-bar-icon-brightness' => '11',
703 '--adminify-notif-bg-color' => '#FF1C69',
704 '--adminify-text-color' => '#ffffff',
705 '--adminify-btn-bg' => '#0347FF',
706 '--adminify-admin-bar-icon-filter' => '1',
707 ],
708 ];
709 // return all presets
710 if ( is_null( $theme ) ) {
711 return $presets;
712 }
713 // return specific preset
714 if ( array_key_exists( $theme, $presets ) ) {
715 return $presets[$theme];
716 }
717 // specific preset not found
718 return [];
719 }
720
721 public static function jltwp_adminify_get_page_templates( $type = '' )
722 {
723 $args = [
724 'post_type' => 'elementor_library',
725 'posts_per_page' => -1,
726 ];
727 if ( $type ) {
728 $args['tax_query'] = [ [
729 'taxonomy' => 'elementor_library_type',
730 'field' => 'slug',
731 'terms' => $type,
732 ] ];
733 }
734 $page_templates = get_posts( $args );
735 $options = [];
736 if ( !empty($page_templates) && !is_wp_error( $page_templates ) ) {
737 foreach ( $page_templates as $post ) {
738 $options[$post->ID] = $post->post_title;
739 }
740 }
741 return $options;
742 }
743
744 public static function assets_ext( $ext )
745 {
746 if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) {
747 return $ext;
748 }
749 return '.min' . $ext;
750 }
751
752 public static function wp_kses_atts_map( array $attrs )
753 {
754 return array_fill_keys( array_values( $attrs ), true );
755 }
756
757 public static function wp_kses_custom( $content )
758 {
759 $allowed_tags = wp_kses_allowed_html( 'post' );
760 $custom_tags = [
761 'select' => self::wp_kses_atts_map( [
762 'class',
763 'id',
764 'style',
765 'width',
766 'height',
767 'title',
768 'data',
769 'name',
770 'autofocus',
771 'disabled',
772 'multiple',
773 'required',
774 'size'
775 ] ),
776 'input' => self::wp_kses_atts_map( [
777 'class',
778 'id',
779 'style',
780 'width',
781 'height',
782 'title',
783 'data',
784 'name',
785 'autofocus',
786 'disabled',
787 'required',
788 'size',
789 'type',
790 'checked',
791 'readonly',
792 'placeholder',
793 'value',
794 'maxlength',
795 'min',
796 'max',
797 'multiple',
798 'pattern',
799 'step',
800 'autocomplete'
801 ] ),
802 'textarea' => self::wp_kses_atts_map( [
803 'class',
804 'id',
805 'style',
806 'width',
807 'height',
808 'title',
809 'data',
810 'name',
811 'autofocus',
812 'disabled',
813 'required',
814 'rows',
815 'cols',
816 'wrap',
817 'maxlength'
818 ] ),
819 'option' => self::wp_kses_atts_map( [
820 'class',
821 'id',
822 'label',
823 'disabled',
824 'label',
825 'selected',
826 'value'
827 ] ),
828 'optgroup' => self::wp_kses_atts_map( [
829 'disabled',
830 'label',
831 'class',
832 'id'
833 ] ),
834 'form' => self::wp_kses_atts_map( [
835 'class',
836 'id',
837 'data',
838 'style',
839 'width',
840 'height',
841 'accept-charset',
842 'action',
843 'autocomplete',
844 'enctype',
845 'method',
846 'name',
847 'novalidate',
848 'rel',
849 'target'
850 ] ),
851 'svg' => self::wp_kses_atts_map( [
852 'xmlns',
853 'viewbox',
854 'width',
855 'height',
856 'fill',
857 'aria-hidden',
858 'aria-labelledby',
859 'role'
860 ] ),
861 'rect' => self::wp_kses_atts_map( [
862 'rx',
863 'width',
864 'height',
865 'fill'
866 ] ),
867 'path' => self::wp_kses_atts_map( [ 'd', 'fill' ] ),
868 'g' => self::wp_kses_atts_map( [ 'fill' ] ),
869 'defs' => self::wp_kses_atts_map( [ 'fill' ] ),
870 'linearGradient' => self::wp_kses_atts_map( [
871 'id',
872 'x1',
873 'x2',
874 'y1',
875 'y2',
876 'gradientUnits'
877 ] ),
878 'stop' => self::wp_kses_atts_map( [ 'stop-color', 'offset', 'stop-opacity' ] ),
879 'style' => self::wp_kses_atts_map( [ 'type' ] ),
880 'div' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
881 'ul' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
882 'li' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
883 'label' => self::wp_kses_atts_map( [ 'class', 'for' ] ),
884 'span' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
885 'h1' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
886 'h2' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
887 'h3' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
888 'h4' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
889 'h5' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
890 'h6' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
891 'a' => self::wp_kses_atts_map( [
892 'class',
893 'href',
894 'target',
895 'rel'
896 ] ),
897 'p' => self::wp_kses_atts_map( [
898 'class',
899 'id',
900 'style',
901 'data'
902 ] ),
903 'table' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
904 'thead' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
905 'tbody' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
906 'tr' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
907 'th' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
908 'td' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
909 'i' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
910 'button' => self::wp_kses_atts_map( [ 'class', 'id' ] ),
911 'nav' => self::wp_kses_atts_map( [ 'class', 'id', 'style' ] ),
912 'time' => self::wp_kses_atts_map( [ 'datetime' ] ),
913 'br' => [],
914 'strong' => [],
915 'img' => self::wp_kses_atts_map( [
916 'class',
917 'src',
918 'alt',
919 'height',
920 'width',
921 'srcset',
922 'id',
923 'loading'
924 ] ),
925 ];
926 $allowed_tags = array_merge_recursive( $allowed_tags, $custom_tags );
927 return wp_kses( stripslashes_deep( $content ), $allowed_tags );
928 }
929
930 }