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

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