mirror of https://github.com/vtrois/kratos
778 lines
25 KiB
PHP
778 lines
25 KiB
PHP
<?php if (!defined('ABSPATH')) {
|
|
die;
|
|
}
|
|
/**
|
|
*
|
|
* Setup Class
|
|
*
|
|
* @since 1.0.0
|
|
* @version 1.0.0
|
|
*
|
|
*/
|
|
if (!class_exists('CSF')) {
|
|
class CSF
|
|
{
|
|
|
|
// Default constants
|
|
public static $premium = true;
|
|
public static $version = '2.2.4';
|
|
public static $dir = '';
|
|
public static $url = '';
|
|
public static $css = '';
|
|
public static $file = '';
|
|
public static $enqueue = false;
|
|
public static $webfonts = array();
|
|
public static $subsets = array();
|
|
public static $inited = array();
|
|
public static $fields = array();
|
|
public static $args = array(
|
|
'admin_options' => array(),
|
|
'customize_options' => array(),
|
|
'metabox_options' => array(),
|
|
'nav_menu_options' => array(),
|
|
'profile_options' => array(),
|
|
'taxonomy_options' => array(),
|
|
'widget_options' => array(),
|
|
'comment_options' => array(),
|
|
'shortcode_options' => array(),
|
|
);
|
|
|
|
// Shortcode instances
|
|
public static $shortcode_instances = array();
|
|
|
|
private static $instance = null;
|
|
|
|
public static function init($file = __FILE__)
|
|
{
|
|
|
|
// Set file constant
|
|
self::$file = $file;
|
|
|
|
// Set constants
|
|
self::constants();
|
|
|
|
// Include files
|
|
self::includes();
|
|
|
|
if (is_null(self::$instance)) {
|
|
self::$instance = new self();
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
// Initalize
|
|
public function __construct()
|
|
{
|
|
|
|
// Init action
|
|
do_action('csf_init');
|
|
|
|
// Setup textdomain
|
|
self::textdomain();
|
|
|
|
add_action('after_setup_theme', array('CSF', 'setup'));
|
|
add_action('init', array('CSF', 'setup'));
|
|
add_action('switch_theme', array('CSF', 'setup'));
|
|
add_action('admin_enqueue_scripts', array('CSF', 'add_admin_enqueue_scripts'));
|
|
add_action('wp_enqueue_scripts', array('CSF', 'add_typography_enqueue_styles'), 80);
|
|
add_action('wp_head', array('CSF', 'add_custom_css'), 80);
|
|
add_filter('admin_body_class', array('CSF', 'add_admin_body_class'));
|
|
}
|
|
|
|
// Setup frameworks
|
|
public static function setup()
|
|
{
|
|
|
|
// Setup admin option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Options') && !empty(self::$args['admin_options'])) {
|
|
foreach (self::$args['admin_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Options::instance($key, $params);
|
|
|
|
if (!empty($value['show_in_customizer'])) {
|
|
$value['output_css'] = false;
|
|
$value['enqueue_webfont'] = false;
|
|
self::$args['customize_options'][$key] = $value;
|
|
self::$inited[$key] = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup customize option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Customize_Options') && !empty(self::$args['customize_options'])) {
|
|
foreach (self::$args['customize_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Customize_Options::instance($key, $params);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup metabox option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Metabox') && !empty(self::$args['metabox_options'])) {
|
|
foreach (self::$args['metabox_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Metabox::instance($key, $params);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup nav menu option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Nav_Menu_Options') && !empty(self::$args['nav_menu_options'])) {
|
|
foreach (self::$args['nav_menu_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Nav_Menu_Options::instance($key, $params);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup profile option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Profile_Options') && !empty(self::$args['profile_options'])) {
|
|
foreach (self::$args['profile_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Profile_Options::instance($key, $params);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup taxonomy option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Taxonomy_Options') && !empty(self::$args['taxonomy_options'])) {
|
|
$taxonomy = (isset($_GET['taxonomy'])) ? sanitize_text_field(wp_unslash($_GET['taxonomy'])) : '';
|
|
foreach (self::$args['taxonomy_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Taxonomy_Options::instance($key, $params);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup widget option framework
|
|
if (class_exists('CSF_Widget') && class_exists('WP_Widget_Factory') && !empty(self::$args['widget_options'])) {
|
|
$wp_widget_factory = new WP_Widget_Factory();
|
|
global $wp_widget_factory;
|
|
foreach (self::$args['widget_options'] as $key => $value) {
|
|
if (!isset(self::$inited[$key])) {
|
|
|
|
self::$inited[$key] = true;
|
|
$wp_widget_factory->register(CSF_Widget::instance($key, $value));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup comment option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Comment_Metabox') && !empty(self::$args['comment_options'])) {
|
|
foreach (self::$args['comment_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Comment_Metabox::instance($key, $params);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup shortcode option framework
|
|
$params = array();
|
|
if (class_exists('CSF_Shortcoder') && !empty(self::$args['shortcode_options'])) {
|
|
foreach (self::$args['shortcode_options'] as $key => $value) {
|
|
if (!empty(self::$args['sections'][$key]) && !isset(self::$inited[$key])) {
|
|
|
|
$params['args'] = $value;
|
|
$params['sections'] = self::$args['sections'][$key];
|
|
self::$inited[$key] = true;
|
|
|
|
CSF_Shortcoder::instance($key, $params);
|
|
}
|
|
}
|
|
|
|
// Once editor setup for gutenberg and media buttons
|
|
if (class_exists('CSF_Shortcoder') && !empty(self::$shortcode_instances)) {
|
|
foreach (self::$shortcode_instances as $instance) {
|
|
if (!empty($instance['show_in_editor'])) {
|
|
CSF_Shortcoder::once_editor_setup();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
do_action('csf_loaded');
|
|
}
|
|
|
|
// Create options
|
|
public static function createOptions($id, $args = array())
|
|
{
|
|
self::$args['admin_options'][$id] = $args;
|
|
}
|
|
|
|
// Create customize options
|
|
public static function createCustomizeOptions($id, $args = array())
|
|
{
|
|
self::$args['customize_options'][$id] = $args;
|
|
}
|
|
|
|
// Create metabox options
|
|
public static function createMetabox($id, $args = array())
|
|
{
|
|
self::$args['metabox_options'][$id] = $args;
|
|
}
|
|
|
|
// Create menu options
|
|
public static function createNavMenuOptions($id, $args = array())
|
|
{
|
|
self::$args['nav_menu_options'][$id] = $args;
|
|
}
|
|
|
|
// Create shortcoder options
|
|
public static function createShortcoder($id, $args = array())
|
|
{
|
|
self::$args['shortcode_options'][$id] = $args;
|
|
}
|
|
|
|
// Create taxonomy options
|
|
public static function createTaxonomyOptions($id, $args = array())
|
|
{
|
|
self::$args['taxonomy_options'][$id] = $args;
|
|
}
|
|
|
|
// Create profile options
|
|
public static function createProfileOptions($id, $args = array())
|
|
{
|
|
self::$args['profile_options'][$id] = $args;
|
|
}
|
|
|
|
// Create widget
|
|
public static function createWidget($id, $args = array())
|
|
{
|
|
self::$args['widget_options'][$id] = $args;
|
|
self::set_used_fields($args);
|
|
}
|
|
|
|
// Create comment metabox
|
|
public static function createCommentMetabox($id, $args = array())
|
|
{
|
|
self::$args['comment_options'][$id] = $args;
|
|
}
|
|
|
|
// Create section
|
|
public static function createSection($id, $sections)
|
|
{
|
|
self::$args['sections'][$id][] = $sections;
|
|
self::set_used_fields($sections);
|
|
}
|
|
|
|
// Set directory constants
|
|
public static function constants()
|
|
{
|
|
|
|
// We need this path-finder code for set URL of framework
|
|
$dirname = str_replace('//', '/', wp_normalize_path(dirname(dirname(self::$file))));
|
|
$theme_dir = str_replace('//', '/', wp_normalize_path(get_parent_theme_file_path()));
|
|
$plugin_dir = str_replace('//', '/', wp_normalize_path(WP_PLUGIN_DIR));
|
|
$plugin_dir = str_replace('/opt/bitnami', '/bitnami', $plugin_dir);
|
|
$located_plugin = (preg_match('#' . self::sanitize_dirname($plugin_dir) . '#', self::sanitize_dirname($dirname))) ? true : false;
|
|
$directory = ($located_plugin) ? $plugin_dir : $theme_dir;
|
|
$directory_uri = ($located_plugin) ? WP_PLUGIN_URL : get_parent_theme_file_uri();
|
|
$foldername = str_replace($directory, '', $dirname);
|
|
$protocol_uri = (is_ssl()) ? 'https' : 'http';
|
|
$directory_uri = set_url_scheme($directory_uri, $protocol_uri);
|
|
|
|
self::$dir = $dirname;
|
|
self::$url = $directory_uri . $foldername;
|
|
}
|
|
|
|
// Include file helper
|
|
public static function include_plugin_file($file, $load = true)
|
|
{
|
|
|
|
$path = '';
|
|
$file = ltrim($file, '/');
|
|
$override = apply_filters('csf_override', 'csf-override');
|
|
|
|
if (file_exists(get_parent_theme_file_path($override . '/' . $file))) {
|
|
$path = get_parent_theme_file_path($override . '/' . $file);
|
|
} elseif (file_exists(get_theme_file_path($override . '/' . $file))) {
|
|
$path = get_theme_file_path($override . '/' . $file);
|
|
} elseif (file_exists(self::$dir . '/' . $override . '/' . $file)) {
|
|
$path = self::$dir . '/' . $override . '/' . $file;
|
|
} elseif (file_exists(self::$dir . '/' . $file)) {
|
|
$path = self::$dir . '/' . $file;
|
|
}
|
|
|
|
if (!empty($path) && !empty($file) && $load) {
|
|
|
|
global $wp_query;
|
|
|
|
if (is_object($wp_query) && function_exists('load_template')) {
|
|
|
|
load_template($path, true);
|
|
} else {
|
|
|
|
require_once($path);
|
|
}
|
|
} else {
|
|
|
|
return self::$dir . '/' . $file;
|
|
}
|
|
}
|
|
|
|
// Is active plugin helper
|
|
public static function is_active_plugin($file = '')
|
|
{
|
|
return in_array($file, (array) get_option('active_plugins', array()));
|
|
}
|
|
|
|
// Sanitize dirname
|
|
public static function sanitize_dirname($dirname)
|
|
{
|
|
return preg_replace('/[^A-Za-z]/', '', $dirname);
|
|
}
|
|
|
|
// Set url constant
|
|
public static function include_plugin_url($file)
|
|
{
|
|
return esc_url(self::$url) . '/' . ltrim($file, '/');
|
|
}
|
|
|
|
// Include files
|
|
public static function includes()
|
|
{
|
|
|
|
// Helpers
|
|
self::include_plugin_file('functions/actions.php');
|
|
self::include_plugin_file('functions/helpers.php');
|
|
self::include_plugin_file('functions/sanitize.php');
|
|
self::include_plugin_file('functions/validate.php');
|
|
|
|
// Includes free version classes
|
|
self::include_plugin_file('classes/abstract.class.php');
|
|
self::include_plugin_file('classes/fields.class.php');
|
|
self::include_plugin_file('classes/admin-options.class.php');
|
|
|
|
// Includes premium version classes
|
|
if (self::$premium) {
|
|
self::include_plugin_file('classes/customize-options.class.php');
|
|
self::include_plugin_file('classes/metabox-options.class.php');
|
|
self::include_plugin_file('classes/nav-menu-options.class.php');
|
|
self::include_plugin_file('classes/profile-options.class.php');
|
|
self::include_plugin_file('classes/shortcode-options.class.php');
|
|
self::include_plugin_file('classes/taxonomy-options.class.php');
|
|
self::include_plugin_file('classes/widget-options.class.php');
|
|
self::include_plugin_file('classes/comment-options.class.php');
|
|
}
|
|
|
|
// Include all framework fields
|
|
$fields = apply_filters('csf_fields', array(
|
|
'accordion',
|
|
'background',
|
|
'backup',
|
|
'border',
|
|
'button_set',
|
|
'callback',
|
|
'checkbox',
|
|
'code_editor',
|
|
'color',
|
|
'color_group',
|
|
'content',
|
|
'date',
|
|
'dimensions',
|
|
'fieldset',
|
|
'gallery',
|
|
'group',
|
|
'heading',
|
|
'icon',
|
|
'image_select',
|
|
'link',
|
|
'link_color',
|
|
'map',
|
|
'media',
|
|
'notice',
|
|
'number',
|
|
'palette',
|
|
'radio',
|
|
'repeater',
|
|
'select',
|
|
'slider',
|
|
'sortable',
|
|
'sorter',
|
|
'spacing',
|
|
'spinner',
|
|
'subheading',
|
|
'submessage',
|
|
'switcher',
|
|
'tabbed',
|
|
'text',
|
|
'textarea',
|
|
'typography',
|
|
'upload',
|
|
'wp_editor',
|
|
));
|
|
|
|
if (!empty($fields)) {
|
|
foreach ($fields as $field) {
|
|
if (!class_exists('CSF_Field_' . $field) && class_exists('CSF_Fields')) {
|
|
self::include_plugin_file('fields/' . $field . '/' . $field . '.php');
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Setup textdomain
|
|
public static function textdomain()
|
|
{
|
|
load_textdomain('csf', self::$dir . '/languages/' . get_locale() . '.mo');
|
|
}
|
|
|
|
// Set all of used fields
|
|
public static function set_used_fields($sections)
|
|
{
|
|
|
|
if (!empty($sections['fields'])) {
|
|
|
|
foreach ($sections['fields'] as $field) {
|
|
|
|
if (!empty($field['fields'])) {
|
|
self::set_used_fields($field);
|
|
}
|
|
|
|
if (!empty($field['tabs'])) {
|
|
self::set_used_fields(array('fields' => $field['tabs']));
|
|
}
|
|
|
|
if (!empty($field['accordions'])) {
|
|
self::set_used_fields(array('fields' => $field['accordions']));
|
|
}
|
|
|
|
if (!empty($field['type'])) {
|
|
self::$fields[$field['type']] = $field;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Enqueue admin and fields styles and scripts
|
|
public static function add_admin_enqueue_scripts()
|
|
{
|
|
|
|
// Loads scripts and styles only when needed
|
|
$wpscreen = get_current_screen();
|
|
|
|
if (!empty(self::$args['admin_options'])) {
|
|
foreach (self::$args['admin_options'] as $argument) {
|
|
if (substr($wpscreen->id, -strlen($argument['menu_slug'])) === $argument['menu_slug']) {
|
|
self::$enqueue = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!empty(self::$args['metabox_options'])) {
|
|
foreach (self::$args['metabox_options'] as $argument) {
|
|
if (in_array($wpscreen->post_type, (array) $argument['post_type'])) {
|
|
self::$enqueue = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!empty(self::$args['taxonomy_options'])) {
|
|
foreach (self::$args['taxonomy_options'] as $argument) {
|
|
if (in_array($wpscreen->taxonomy, (array) $argument['taxonomy'])) {
|
|
self::$enqueue = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!empty(self::$shortcode_instances)) {
|
|
foreach (self::$shortcode_instances as $argument) {
|
|
if (($argument['show_in_editor'] && $wpscreen->base === 'post') || $argument['show_in_custom']) {
|
|
self::$enqueue = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!empty(self::$args['widget_options']) && ($wpscreen->id === 'widgets' || $wpscreen->id === 'customize')) {
|
|
self::$enqueue = true;
|
|
}
|
|
|
|
if (!empty(self::$args['customize_options']) && $wpscreen->id === 'customize') {
|
|
self::$enqueue = true;
|
|
}
|
|
|
|
if (!empty(self::$args['nav_menu_options']) && $wpscreen->id === 'nav-menus') {
|
|
self::$enqueue = true;
|
|
}
|
|
|
|
if (!empty(self::$args['profile_options']) && ($wpscreen->id === 'profile' || $wpscreen->id === 'user-edit')) {
|
|
self::$enqueue = true;
|
|
}
|
|
|
|
if (!empty(self::$args['comment_options']) && $wpscreen->id === 'comment') {
|
|
self::$enqueue = true;
|
|
}
|
|
|
|
if ($wpscreen->id === 'tools_page_csf-welcome') {
|
|
self::$enqueue = true;
|
|
}
|
|
|
|
if (!apply_filters('csf_enqueue_assets', self::$enqueue)) {
|
|
return;
|
|
}
|
|
|
|
// Check for developer mode
|
|
$min = (self::$premium && SCRIPT_DEBUG) ? '' : '.min';
|
|
|
|
// Admin utilities
|
|
wp_enqueue_media();
|
|
|
|
// Wp color picker
|
|
wp_enqueue_style('wp-color-picker');
|
|
wp_enqueue_script('wp-color-picker');
|
|
|
|
// Font awesome 4 and 5 loader
|
|
if (apply_filters('csf_fa4', false)) {
|
|
wp_enqueue_style('csf-fa', 'https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome' . $min . '.css', array(), '4.7.0', 'all');
|
|
} else {
|
|
wp_enqueue_style('csf-fa5', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/all' . $min . '.css', array(), '5.15.5', 'all');
|
|
wp_enqueue_style('csf-fa5-v4-shims', 'https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@5.15.4/css/v4-shims' . $min . '.css', array(), '5.15.5', 'all');
|
|
}
|
|
|
|
// Main style
|
|
wp_enqueue_style('csf', self::include_plugin_url('assets/css/style' . $min . '.css'), array(), self::$version, 'all');
|
|
|
|
// Main RTL styles
|
|
if (is_rtl()) {
|
|
wp_enqueue_style('csf-rtl', self::include_plugin_url('assets/css/style-rtl' . $min . '.css'), array(), self::$version, 'all');
|
|
}
|
|
|
|
// Main scripts
|
|
wp_enqueue_script('csf-plugins', self::include_plugin_url('assets/js/plugins' . $min . '.js'), array(), self::$version, true);
|
|
wp_enqueue_script('csf', self::include_plugin_url('assets/js/main' . $min . '.js'), array('csf-plugins'), self::$version, true);
|
|
|
|
// Main variables
|
|
wp_localize_script('csf', 'csf_vars', array(
|
|
'color_palette' => apply_filters('csf_color_palette', array()),
|
|
'i18n' => array(
|
|
'confirm' => esc_html__('Are you sure?', 'csf'),
|
|
'typing_text' => esc_html__('Please enter %s or more characters', 'csf'),
|
|
'searching_text' => esc_html__('Searching...', 'csf'),
|
|
'no_results_text' => esc_html__('No results found.', 'csf'),
|
|
),
|
|
));
|
|
|
|
// Enqueue fields scripts and styles
|
|
$enqueued = array();
|
|
|
|
if (!empty(self::$fields)) {
|
|
foreach (self::$fields as $field) {
|
|
if (!empty($field['type'])) {
|
|
$classname = 'CSF_Field_' . $field['type'];
|
|
if (class_exists($classname) && method_exists($classname, 'enqueue')) {
|
|
$instance = new $classname($field);
|
|
if (method_exists($classname, 'enqueue')) {
|
|
$instance->enqueue();
|
|
}
|
|
unset($instance);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
do_action('csf_enqueue');
|
|
}
|
|
|
|
// Add typography enqueue styles to front page
|
|
public static function add_typography_enqueue_styles()
|
|
{
|
|
|
|
if (!empty(self::$webfonts)) {
|
|
|
|
if (!empty(self::$webfonts['enqueue'])) {
|
|
|
|
$query = array();
|
|
$fonts = array();
|
|
|
|
foreach (self::$webfonts['enqueue'] as $family => $styles) {
|
|
$fonts[] = $family . ((!empty($styles)) ? ':' . implode(',', $styles) : '');
|
|
}
|
|
|
|
if (!empty($fonts)) {
|
|
$query['family'] = implode('%7C', $fonts);
|
|
}
|
|
|
|
if (!empty(self::$subsets)) {
|
|
$query['subset'] = implode(',', self::$subsets);
|
|
}
|
|
|
|
$query['display'] = 'swap';
|
|
|
|
wp_enqueue_style('csf-google-web-fonts', esc_url(add_query_arg($query, '//fonts.googleapis.com/css')), array(), null);
|
|
}
|
|
|
|
if (!empty(self::$webfonts['async'])) {
|
|
|
|
$fonts = array();
|
|
|
|
foreach (self::$webfonts['async'] as $family => $styles) {
|
|
$fonts[] = $family . ((!empty($styles)) ? ':' . implode(',', $styles) : '');
|
|
}
|
|
|
|
wp_enqueue_script('csf-google-web-fonts', esc_url('//ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js'), array(), null);
|
|
|
|
wp_localize_script('csf-google-web-fonts', 'WebFontConfig', array('google' => array('families' => $fonts)));
|
|
}
|
|
}
|
|
}
|
|
|
|
// Add admin body class
|
|
public static function add_admin_body_class($classes)
|
|
{
|
|
|
|
if (apply_filters('csf_fa4', false)) {
|
|
$classes .= 'csf-fa5-shims';
|
|
}
|
|
|
|
return $classes;
|
|
}
|
|
|
|
// Add custom css to front page
|
|
public static function add_custom_css()
|
|
{
|
|
|
|
if (!empty(self::$css)) {
|
|
echo '<style type="text/css">' . wp_strip_all_tags(self::$css) . '</style>';
|
|
}
|
|
}
|
|
|
|
// Add a new framework field
|
|
public static function field($field = array(), $value = '', $unique = '', $where = '', $parent = '')
|
|
{
|
|
|
|
// Check for unallow fields
|
|
if (!empty($field['_notice'])) {
|
|
|
|
$field_type = $field['type'];
|
|
|
|
$field = array();
|
|
$field['content'] = esc_html__('Oops! Not allowed.', 'csf') . ' <strong>(' . $field_type . ')</strong>';
|
|
$field['type'] = 'notice';
|
|
$field['style'] = 'danger';
|
|
}
|
|
|
|
$depend = '';
|
|
$visible = '';
|
|
$unique = (!empty($unique)) ? $unique : '';
|
|
$class = (!empty($field['class'])) ? ' ' . esc_attr($field['class']) : '';
|
|
$is_pseudo = (!empty($field['pseudo'])) ? ' csf-pseudo-field' : '';
|
|
$field_type = (!empty($field['type'])) ? esc_attr($field['type']) : '';
|
|
|
|
if (!empty($field['dependency'])) {
|
|
|
|
$dependency = $field['dependency'];
|
|
$depend_visible = '';
|
|
$data_controller = '';
|
|
$data_condition = '';
|
|
$data_value = '';
|
|
$data_global = '';
|
|
|
|
if (is_array($dependency[0])) {
|
|
$data_controller = implode('|', array_column($dependency, 0));
|
|
$data_condition = implode('|', array_column($dependency, 1));
|
|
$data_value = implode('|', array_column($dependency, 2));
|
|
$data_global = implode('|', array_column($dependency, 3));
|
|
$depend_visible = implode('|', array_column($dependency, 4));
|
|
} else {
|
|
$data_controller = (!empty($dependency[0])) ? $dependency[0] : '';
|
|
$data_condition = (!empty($dependency[1])) ? $dependency[1] : '';
|
|
$data_value = (!empty($dependency[2])) ? $dependency[2] : '';
|
|
$data_global = (!empty($dependency[3])) ? $dependency[3] : '';
|
|
$depend_visible = (!empty($dependency[4])) ? $dependency[4] : '';
|
|
}
|
|
|
|
$depend .= ' data-controller="' . esc_attr($data_controller) . '"';
|
|
$depend .= ' data-condition="' . esc_attr($data_condition) . '"';
|
|
$depend .= ' data-value="' . esc_attr($data_value) . '"';
|
|
$depend .= (!empty($data_global)) ? ' data-depend-global="true"' : '';
|
|
|
|
$visible = (!empty($depend_visible)) ? ' csf-depend-visible' : ' csf-depend-hidden';
|
|
}
|
|
|
|
// These attributes has been sanitized above.
|
|
echo '<div class="csf-field csf-field-' . $field_type . $is_pseudo . $class . $visible . '"' . $depend . '>';
|
|
|
|
if (!empty($field_type)) {
|
|
|
|
if (!empty($field['fancy_title'])) {
|
|
echo '<div class="csf-fancy-title">' . $field['fancy_title'] . '</div>';
|
|
}
|
|
|
|
if (!empty($field['title'])) {
|
|
echo '<div class="csf-title">';
|
|
echo '<h4>' . $field['title'] . '</h4>';
|
|
echo (!empty($field['subtitle'])) ? '<div class="csf-subtitle-text">' . $field['subtitle'] . '</div>' : '';
|
|
echo '</div>';
|
|
}
|
|
|
|
echo (!empty($field['title']) || !empty($field['fancy_title'])) ? '<div class="csf-fieldset">' : '';
|
|
|
|
$value = (!isset($value) && isset($field['default'])) ? $field['default'] : $value;
|
|
$value = (isset($field['value'])) ? $field['value'] : $value;
|
|
|
|
$classname = 'CSF_Field_' . $field_type;
|
|
|
|
if (class_exists($classname)) {
|
|
$instance = new $classname($field, $value, $unique, $where, $parent);
|
|
$instance->render();
|
|
} else {
|
|
echo '<p>' . esc_html__('Field not found!', 'csf') . '</p>';
|
|
}
|
|
} else {
|
|
echo '<p>' . esc_html__('Field not found!', 'csf') . '</p>';
|
|
}
|
|
|
|
echo (!empty($field['title']) || !empty($field['fancy_title'])) ? '</div>' : '';
|
|
echo '<div class="clear"></div>';
|
|
echo '</div>';
|
|
}
|
|
}
|
|
}
|
|
|
|
CSF::init(__FILE__);
|