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

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