{$function[1]}($option); } } elseif ( is_string( $function[0] ) ) { // Static calling. return $function[0] . '::' . $function[1]($option); } } function eis_sanitize_text_or_array_field($array_or_string) { if ( is_string($array_or_string) ) { $array_or_string = sanitize_text_field($array_or_string); } elseif ( is_array($array_or_string) ) { foreach ( $array_or_string as $key => &$value ) { if ( is_array( $value ) ) { $value = eis_sanitize_text_or_array_field($value); } else { $value = (strpos($key, '_eis_html') !== false) ? wp_kses_post($value) : sanitize_text_field( $value ); } } } return $array_or_string; } function eis_interface_array($interface_id,$args=null) { $interface_array = array(); $settings_title = (isset($args['settings_title'])) ? $args['settings_title'] : __('Settings', 'easy-interface-settings'); $interface_array = array( 'interface_id' => $interface_id, 'type' => (isset($args['type'])) ? $args['type'] : 'page', 'post_type' => (isset($args['post_type'])) ? $args['post_type'] : null, 'meta_box_position' => (isset($args['meta_box_position'])) ? $args['meta_box_position'] : 'normal', 'meta_box_priority' => (isset($args['meta_box_priority'])) ? $args['meta_box_priority'] : 'core', 'show_tabs' => (isset($args['show_tabs'])) ? $args['show_tabs'] : true, 'tab_dir' => (isset($args['tab_dir'])) ? $args['tab_dir'] : 'horizontal', 'tab_save' => (isset($args['tab_save'])) ? $args['tab_save'] : true, 'export_import' => (isset($args['export_import'])) ? $args['export_import'] : true, 'theme' => (isset($args['theme'])) ? $args['theme'] : 'default', 'settings_title' => $settings_title, 'admin_menu_name' => (isset($args['admin_menu_name'])) ? $args['admin_menu_name'] : $settings_title, 'admin_menu_parent' => (isset($args['admin_menu_parent'])) ? $args['admin_menu_parent'] : null, 'admin_menu_icon' => (isset($args['admin_menu_icon'])) ? $args['admin_menu_icon'] : null, 'capability' => (isset($args['capability'])) ? $args['capability'] : 'manage_options', 'order' => (isset($args['order'])) ? $args['order'] : null, ); return $interface_array; } function eis_register_interface($interface_id, $args=null) { global $eis_interfaces_global; $interface_id = preg_replace('!\s+!', '_', $interface_id); if(preg_match('/^[a-z0-9_\-]+$/i', $interface_id)) { $interface_array = eis_interface_array($interface_id, $args); $interface_type = $interface_array['type']; $eis_interfaces_global[$interface_type][$interface_id] = $interface_array; update_option('eis_register_interfaces', $eis_interfaces_global); } } function eis_register_setting() { $eis_interfaces = eis_interfaces(); if (isset($eis_interfaces) && !empty($eis_interfaces)) { $eis_interface_pages = (isset($eis_interfaces['page'])) ? $eis_interfaces['page'] : array(); if (!empty($eis_interface_pages)) { foreach ($eis_interface_pages as $eis_interface_page) { $interface_id = $eis_interface_page['interface_id']; register_setting( $interface_id, $interface_id . '_eis_options' ); } } } } add_action( 'admin_init', 'eis_register_setting' ); function eis_include_interfaces() { $eis_child_theme_directory = get_stylesheet_directory() . '/easy-interface-settings/interfaces'; if (file_exists($eis_child_theme_directory)) { foreach(glob($eis_child_theme_directory . '/*.php') as $filename) { $filename = basename($filename, ".php"); include( $eis_child_theme_directory . '/' . $filename . '.php' ); } } } eis_include_interfaces(); function is_eis_page() { $is_eis_page = false; $page_interface_id = (isset($_GET['page'])) ? sanitize_text_field($_GET['page']) : 'empty'; if (!empty(get_eis_interfaces($page_interface_id))) { $is_eis_page = $page_interface_id; } else { $eis_interfaces = eis_interfaces(); $eis_interfaces_meta_box = (!empty($eis_interfaces['meta_box'])) ? $eis_interfaces['meta_box'] : array(); foreach ($eis_interfaces_meta_box as $interface) { $interface_id = $interface['interface_id']; $post_type = $interface['post_type']; $screen = (function_exists('get_current_screen')) ? get_current_screen() : null; if ( isset($screen->id) && $screen->id == $post_type ) { $is_eis_page = $interface_id; } } } return $is_eis_page; } function eis_interface_tab_option_html($interface_id, $option) { $input_id = $option['input_id']; $input_type = $option['input_type']; $placeholder = $option['placeholder']; $current_val = (strpos($input_id ?? '', '_eis_encrypt') !== false && !empty($option['value']) && !is_array($option['value'])) ? eis_openssl_decrypt($option['value']) : $option['value']; $is_empty = ($current_val === null || $current_val === '' || (is_array($current_val) && empty($current_val))); $current_val = ($is_empty && $option['default']) ? $option['default'] : $current_val; $current_val = (is_array($current_val)) ? array_map("esc_attr", $current_val) : esc_attr($current_val); if (is_array($current_val)) { $current_val = array_map("esc_attr", $current_val); if (strpos($input_id ?? '', '_eis_encrypt') !== false) { $current_val = array_map("eis_openssl_decrypt", $current_val); } } else { $current_val = esc_attr($current_val); } if ($option['parent_name'] != null && $option['show_on_value'] != null) { $show_on_value_arr = ($option['show_on_value'] != null) ? array_map('trim',explode(",",$option['show_on_value'])) : null; $show_on_value_arr = (is_array($show_on_value_arr)) ? preg_filter('/^/', $option['parent_name'] . '_', $show_on_value_arr) : null; $do_parent_option = ' data-parent-option="' . $option['parent_name'] . '" data-parent-value="' . implode(",", $show_on_value_arr) . '"'; } elseif ($option['parent_name'] != null && $option['hide_on_value'] != null) { $hide_on_value_arr = ($option['hide_on_value'] != null) ? array_map('trim',explode(",",$option['hide_on_value'])) : null; $hide_on_value_arr = (is_array($hide_on_value_arr)) ? preg_filter('/^/', $option['parent_name'] . '_', $hide_on_value_arr) : null; $do_parent_option = ' data-parent-option="' . $option['parent_name'] . '" data-hide-value="' . implode(",", $hide_on_value_arr) . '"'; } else { $do_parent_option = ''; } if (is_eis_option_hidden($interface_id, $input_id)) { $hidden = ' hidden'; } else { $hidden = ''; } $data_option_name = ($input_id) ? ' data-option-name="' . $input_id . '"' : ''; $languages = (EIS_IS_POLY) ? pll_languages_list() : array(); $print_fun = '
' . $option['description'] . '
'; $print_fun .= '' . $option['note'] . '
' : null; $print_fun .= '