芝麻web文件管理V1.00
编辑当前文件:/home/soundframestudio/www/wp-content/themes/betheme/functions/admin/setup/class-mfn-setup.php
[], 'layouts' => [], 'all' => 0, ]; public $fonts = [ [ 'Poppins', 'Poppins' ], [ 'Raleway', 'Lato' ], [ 'Sansita', 'Open Sans' ], [ 'Elsie', 'Roboto' ], [ 'Corben', 'Nobile' ], [ 'Playfair Display', 'Fauna one' ], [ 'Yeseva One', 'Josefin Sans' ], [ 'DM Serif Display', 'DM Sans' ], [ 'Roboto Condensed', 'Roboto' ], [ 'Arvo', 'Lato' ], [ 'Roboto', 'Nunito' ], [ 'Rubik', 'Roboto Mono' ], [ 'Roboto Slab', 'PT Sans' ], [ 'Sintony', 'Poppins' ], [ 'Philosopher', 'Mulish' ], [ 'Josefin Sans', 'Inter' ], ]; public $colors = [ // bg, text, h1-h4, h5-h6, theme/link color, hover color [ '#FCFCFC', '#626262', '#161922', '#5f6271', '#006edf', '#0089f7' ], // default [ '#ffffff', '#3c5c55', '#225c54', '#1a4d46', '#b7c958', '#9bac40' ], [ '#fdf7f2', '#626262', '#2d2e36', '#4e4540', '#bb5644', '#c7786a' ], [ '#f7f2ef', '#646464', '#252525', '#1f2b1f', '#578a53', '#69c656' ], [ '#fdf7f2', '#5b6375', '#01247d', '#80101e', '#cf142b', '#b61024' ], [ '#fdf7f2', '#5f2e7a', '#3D1C4F', '#a069b5', '#2dbb52', '#20a041' ], [ '#ffffff', '#626262', '#2d2e36', '#4e4540', '#fd3e04', '#d23100' ], [ '#ffffff', '#000000', '#1f2e88', '#303971', '#3385d7', '#5ea0e8' ], [ '#ffffff', '#44056c', '#2a0443', '#f7b821', '#ee2c2c', '#ec6363' ], [ '#fdf7f2', '#808080', '#000000', '#045ba8', '#14c9f4', '#13bfe8' ], ]; /** * Mfn_Tools constructor */ public function __construct(){ parent::__construct(); // get demo page ID $posts = get_posts( array( 'post_type' => 'page', 'title' => $this->demo_page_title, 'post_status' => 'all', 'numberposts' => -1, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, ) ); if( ! empty($posts) ){ foreach( $posts as $post ){ $this->demo_page_id[] = $post->ID; } } // handle custom AJAX endpoint add_action( 'wp_ajax_mfn_setup_register', array( $this, '_register' ) ); add_action( 'wp_ajax_mfn_setup_deregister', array( $this, '_deregister' ) ); add_action( 'wp_ajax_mfn_setup_rate', array( $this, '_rate' ) ); add_action( 'wp_ajax_mfn_setup_websites', array( $this, '_get_websites' ) ); add_action( 'wp_ajax_mfn_setup_database_reset', array( $this, '_database_reset' ) ); add_action( 'wp_ajax_mfn_setup_plugin_install', array( $this, '_plugin_install' ) ); add_action( 'wp_ajax_mfn_setup_plugin_activate', array( $this, '_plugin_activate' ) ); add_action( 'wp_ajax_mfn_setup_download', array( $this, '_download_package' ) ); add_action( 'wp_ajax_mfn_setup_content', array( $this, '_content' ) ); add_action( 'wp_ajax_mfn_setup_options', array( $this, '_options' ) ); add_action( 'wp_ajax_mfn_setup_slider', array( $this, '_slider' ) ); add_action( 'wp_ajax_mfn_setup_settings', array( $this, '_settings' ) ); add_action( 'wp_ajax_mfn_setup_options_scratch', array( $this, '_options_scratch' ) ); add_action( 'wp_ajax_mfn_setup_settings_scratch', array( $this, '_settings_scratch' ) ); // after_switch_theme is triggered on the request immediately following a theme switch. add_action( 'after_switch_theme', array( $this, 'after_switch_theme' )); // It runs after the basic admin panel menu structure is in place. add_action( 'admin_menu', array( $this, 'admin_menu' ), 2 ); // Fires after the query variable object is created, but before the actual query is run. // add_action( 'pre_get_posts', array( $this, 'exclude_demo_page' ) ); add_action( 'init', array( $this, 'exclude_demo_page' ) ); } /** * Remove setup wizard demo page from pages list */ function exclude_demo_page() { if( ! is_admin() || empty( $this->demo_page_id ) ){ return; } global $pagenow; if( 'edit.php' == $pagenow ){ if( is_iterable($this->demo_page_id) ){ foreach( $this->demo_page_id as $postid ){ // additional security, checking whether the page title is _be_setup_wizard_demo if( $this->demo_page_title === get_the_title($postid) ){ wp_delete_post( $postid, true ); } } } } } /** * Redirect to setup wizard after switch theme if theme is unregistered */ public function after_switch_theme(){ flush_rewrite_rules(false); if( mfn_is_registered() ){ return; } wp_safe_redirect(admin_url('admin.php?page=be-setup')); } /** * Add admin page & enqueue styles */ public function admin_menu(){ $disable = mfn_opts_get('theme-disable'); if( WHITE_LABEL || isset($disable['demo-data']) ){ return; } $title = __( 'Setup Wizard','mfn-opts' ); $page = add_submenu_page( apply_filters('betheme_dynamic_slug', 'betheme'), $title, $title, 'edit_theme_options', apply_filters('betheme_slug', 'be') .'-setup', array( $this, 'init' ) ); add_action( 'admin_print_styles-'. $page, array( $this, 'enqueue' ) ); } /** * Add admin page & enqueue styles */ public function init(){ // include demos, categories, etc require_once( get_theme_file_path('/functions/importer/demos.php') ); $this->demos = $demos; $this->categories = $categories; $this->layouts = $layouts; $this->plugins = $plugins; $this->tresaurus = $tresaurus; // count all websites $this->count['all'] = count($this->demos) - 1; // FIX: array_slice // count websites in categories and layouts $this->count_websites(); // check active plugins $this->check_active_plugins(); // set demo page $this->set_demo_page(); // add demos list to JS $localize = [ 'themeURI' => get_template_directory_uri() .'/', 'placeholdersURI' => get_template_directory_uri() .'/functions/builder/pre-built/images/placeholders/', 'demos' => $this->demos, ]; wp_localize_script( 'mfn-opts-js', 'mfnSetup', $localize ); // print template $this->template(); } /** * Template */ public function template(){ if( mfn_is_registered() ){ include_once get_theme_file_path('/functions/admin/setup/templates/setup.php'); } else { include_once get_theme_file_path('/functions/admin/setup/templates/register.php'); } } /** * Enqueue styles and scripts */ public function enqueue(){ wp_enqueue_style( 'mfn-importer', get_theme_file_uri('/functions/importer/assets/importer.css'), array(), MFN_THEME_VERSION ); wp_enqueue_style( 'mfn-setup', get_theme_file_uri('/functions/admin/setup/assets/setup.css'), array(), MFN_THEME_VERSION ); wp_enqueue_media(); wp_enqueue_script( 'mfn-webfont', 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js', array( 'jquery' ), false, true ); wp_enqueue_script( 'mfn-opts-field-upload', MFN_OPTIONS_URI .'fields/upload/field_upload.js', array( 'jquery' ), MFN_THEME_VERSION, true ); wp_enqueue_script( 'mfn-opts-field-radio_img', MFN_OPTIONS_URI .'fields/radio_img/field_radio_img.js', array( 'jquery' ), MFN_THEME_VERSION, true ); wp_enqueue_script( 'mfn-setup', get_theme_file_uri('/functions/admin/setup/assets/setup.js'), false, MFN_THEME_VERSION, true ); } /** * Template */ public function set_demo_page(){ if( !empty($this->demo_page_id) ){ return; } $wp_filesystem = Mfn_Helper::filesystem(); $file = get_template_directory_uri() .'/functions/admin/setup/assets/content.txt'; $mfn_items = $wp_filesystem->get_contents( $file ); // remove images url $regex = '/\#mfn_placeholder\#/'; $placeholder_url = get_template_directory_uri() .'/functions/admin/setup/assets/images/placeholders/'; $mfn_items = unserialize(call_user_func('base'.'64_decode', $mfn_items), ['allowed_classes' => false]); $mfn_items = Mfn_Builder_Ajax::builder_replace( $regex, $placeholder_url, $mfn_items ); $mfn_items = call_user_func('base'.'64_encode', serialize( $mfn_items) ); // insert post $post = [ 'post_title' => $this->demo_page_title, 'post_status' => 'draft', 'post_type' => 'page', 'meta_input' => [ 'mfn-post-hide-title' => 1, 'mfn-post-remove-padding' => 1, 'mfn-page-items' => $mfn_items, ], ]; $this->demo_page_id[] = wp_insert_post( $post ); } /* * Ajax: Get websites */ public function _get_websites(){ check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); require_once( get_theme_file_path('/functions/admin/setup/demos.php') ); $this->demos = $demos; $this->the_websites( 100, -1 ); exit(); } /** * Show websites */ function the_websites( $start = 0, $limit = 100 ){ $demos = array_slice( $this->demos, $start, $limit, true ); include get_theme_file_path('/functions/admin/setup/templates/parts/websites-items.php'); } /* * Count websites in layouts and categories */ protected function count_websites(){ foreach( $this->demos as $demo ){ if( ! empty( $demo['categories'] ) ){ foreach( $demo['categories'] as $v ){ if( empty( $this->count['categories'][$v] ) ){ $this->count['categories'][$v] = 0; } $this->count['categories'][$v]++; } } if( ! empty( $demo['layouts'] ) ){ foreach( $demo['layouts'] as $v ){ if( empty( $this->count['layouts'][$v] ) ){ $this->count['layouts'][$v] = 0; } $this->count['layouts'][$v]++; } } } } /** * Check if specified plugin is installed */ function is_plugin_installed( $plugin_slug ){ $installed_plugins = get_plugins(); return array_key_exists( $plugin_slug, $installed_plugins ) || in_array( $plugin_slug, $installed_plugins, true ); } /** * Check which plugins are active */ function check_active_plugins(){ $tgm_plugins = $GLOBALS['tgmpa']->plugins; foreach($this->plugins as $key => $plugin){ $slug = $plugin['slug']; if( is_plugin_active( $tgm_plugins[$slug]['file_path'] ) ){ // do nothing, plugin as already active } elseif( $this->is_plugin_installed( $tgm_plugins[$slug]['file_path'] ) ){ $this->plugins[$key]['action'] = 'activate'; $this->plugins[$key]['path'] = $tgm_plugins[$slug]['file_path']; } else { $this->plugins[$key]['action'] = 'install'; } } } /** * GET synonym */ function get_synonym( $name ){ $synonym = false; $name = preg_replace('/[0-9]+/', '', $name); if( ! empty( $this->tresaurus[$name] ) ){ $synonym = $this->tresaurus[$name]; } return $synonym; } /** * AJAX | Deregister */ public function _deregister(){ check_ajax_referer( 'mfn-builder-nonce', 'mfn-builder-nonce' ); $response = $this->deregister(); echo json_encode($response); exit(); } /** * AJAX | Register */ public function _register(){ $response = [ 'status' => false, 'info' => 'Invalid purchase code format.', ]; check_ajax_referer( 'mfn-setup-register', 'mfn-setup-nonce' ); if( ! empty($_POST['code']) ){ $code = $this->validate( $_POST['code'] ); if( $code ){ $response = $this->register( $code ); } } echo json_encode($response); exit(); } /** * AJAX | Rate setup process */ public function _rate(){ check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $rating = $_POST['rating']; $code = $this->validate( mfn_get_purchase_code() ); $return = [ 'status' => false, 'message' => 'Invalid purchase code.', ]; $args = array( 'user-agent' => 'WordPress/'. get_bloginfo('version') .'; '. network_site_url(), 'timeout' => 30, 'body' => array( 'code' => urlencode($code), 'rating' => $rating, ), ); $response = $this->remote_post('rate', $args); if ( is_wp_error($response) ) { $return['info'] = $response->get_error_message(); } elseif ( ! empty($response['success']) ) { $return['status'] = true; } echo json_encode($response); // echo json_encode($return); exit(); } /** * Validate purchase code */ public function validate( $code ) { $code = trim( $code ); if ( ! $code ){ return false; } $pattern = '/^[a-zA-Z0-9]{8}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{4}-[a-zA-Z0-9]{12}$/'; if ( ! preg_match( $pattern, $code ) ){ return false; } return $code; } /** * Register theme */ protected function register( $code ) { $return = [ 'status' => false, 'message' => 'Invalid purchase code.', ]; $args = array( 'user-agent' => 'WordPress/'. get_bloginfo('version') .'; '. network_site_url(), 'timeout' => 30, 'body' => array( 'code' => urlencode($code), 'register' => 1, ), ); $response = $this->remote_post('register', $args); if ( is_wp_error($response) ) { $return['info'] = $response->get_error_message(); return $return; } if (empty($response['success'])) { return $return; } $return['status'] = true; $expires = $response['success']; // set purchase code update_site_option('envato_purchase_code_7758048', $code); set_site_transient( 'betheme_expires', $expires, WEEK_IN_SECONDS ); // refresh transients delete_site_transient('betheme_update_plugins'); delete_site_transient('betheme_plugins'); delete_site_transient('update_themes'); do_action('wp_update_themes'); return $return; } /** * Deregister theme */ protected function deregister() { $return = [ 'status' => true, ]; $code = mfn_get_purchase_code(); if ( ! $code ) { return false; } $args = array( 'user-agent' => 'WordPress/'. get_bloginfo('version') .'; '. network_site_url(), 'timeout' => 30, 'body' => array( 'code' => urlencode($code), 'deregister' => 1, ), ); $this->remote_post('register', $args); // set purchase code update_site_option('envato_purchase_code_7758048', ''); // refresh transients delete_site_transient('betheme_update_plugins'); delete_site_transient('betheme_plugins'); delete_site_transient('update_themes'); do_action('wp_update_themes'); return $return; } /* * Ajax | Database reset */ public function _database_reset(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $remove_media = !empty($_POST['media']) ? 1 : 0; $result = Mfn_Importer_Helper::database_reset( $remove_media ); if( $result ){ echo 'Database has been reseted'; } exit(); } /** * AJAX | Activate plugin */ public function _plugin_activate(){ $response = [ 'error' => false, 'message' => '', ]; if ( current_user_can( 'activate_plugins' ) ) { check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $result = activate_plugin( $_POST['path'] ); if( is_wp_error( $result ) ) { $response['message'] = $result->get_error_message(); $response['error'] = true; } echo json_encode($response); $this->disable_plugins_redirect(); } exit(); } /** * AJAX | Install plugin */ public function _plugin_install(){ if ( current_user_can( 'install_plugins' ) ) { // deactivate plugin before update if( ! empty($_GET['tgmpa-update']) && ! empty($_GET['path']) ){ // deactivate_plugins( esc_attr($_GET['path']) ); } $GLOBALS['tgmpa']->install_plugins_page(); $this->disable_plugins_redirect(); } exit(); } /* * Ajax | Download package */ public function _download_package(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $website = htmlspecialchars(stripslashes($_POST['website'])); $builder = htmlspecialchars(stripslashes($_POST['builder'])); if( ! $website ){ return false; } $importer = new Mfn_Importer_Helper($website, $builder); $result = $importer->download_package(); if( $result ){ echo 'Package downloaded and unziped'; } exit(); } /* * Ajax | Content installation */ public function _content(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $website = htmlspecialchars(stripslashes($_POST['website'])); $builder = htmlspecialchars(stripslashes($_POST['builder'])); $attachments = htmlspecialchars(stripslashes($_POST['attachments'])); $complete_import = htmlspecialchars(stripslashes($_POST['complete_import'])); if( ! $website ){ return false; } $importer = new Mfn_Importer_Helper($website, $builder); // complete pre-built website import if( $complete_import ){ // remove menus $importer->remove_menus(); } // content $importer->content( $attachments ); exit(); } /* * Ajax | Theme options */ public function _options(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $website = htmlspecialchars(stripslashes($_POST['website'])); $builder = htmlspecialchars(stripslashes($_POST['builder'])); $complete_import = htmlspecialchars(stripslashes($_POST['complete_import'])); if( ! $website ){ return false; } $importer = new Mfn_Importer_Helper($website, $builder); // theme options $result = $importer->options(); if( $result ){ echo 'Theme Options imported'; echo '
'; } // complete pre-built website import if( $complete_import ){ // menu location $result = $importer->menu(); if( $result ){ echo 'Menu locations imported'; echo '
'; } // widgets $result = $importer->widgets(); if( $result ){ echo 'Widgets imported'; } } exit(); } /* * Ajax | Slider */ public function _slider(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $website = htmlspecialchars(stripslashes($_POST['website'])); $builder = htmlspecialchars(stripslashes($_POST['builder'])); if( ! $website ){ return false; } $importer = new Mfn_Importer_Helper($website, $builder); $result = $importer->slider(); if( $result ){ echo 'Sliders imported'; } exit(); } /* * Ajax | Settings */ public function _settings(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $editor = false; // editor is set only in setup wizard $website = htmlspecialchars(stripslashes($_POST['website'])); $builder = htmlspecialchars(stripslashes($_POST['builder'])); $complete_import = htmlspecialchars(stripslashes($_POST['complete_import'])); $blogname = htmlspecialchars(stripslashes($_POST['blogname'])); $blogdescription = htmlspecialchars(stripslashes($_POST['blogdescription'])); if( isset($_POST['editor']) ){ $editor = htmlspecialchars(stripslashes($_POST['editor'])); } if( ! $website ){ return false; } $importer = new Mfn_Importer_Helper($website, $builder); // set site title nad tagline if( $blogname ){ // update_option( 'blogname', $blogname ); // Elementor hook crashes here, workaround below: $value = sanitize_option( 'blogname', $blogname ); $result = $wpdb->update( $wpdb->options, ['option_value' => $value], ['option_name' => 'blogname'] ); } if( $blogdescription ){ // update_option( 'blogdescription', $blogdescription ); // Elementor hook crashes here, workaround below: $value = sanitize_option( 'blogdescription', $blogdescription ); $result = $wpdb->update( $wpdb->options, ['option_value' => $value], ['option_name' => 'blogdescription'] ); } echo 'Site title and tagline set'; echo '
'; // set text editor if( $editor ){ $option = 'column-visual'; if( 'code' == $editor ){ $value = 0; } else { $value = 1; } $result = Mfn_Builder_Ajax::settings($option, $value); if( $result ){ echo 'Default text editor set'; echo '
'; } } // complete pre-built website import if( $complete_import ){ // set pages $result = $importer->set_pages(); if( $result ){ echo 'Pages set'; echo '
'; } // regenerate CSS $result = $importer->regenerate_CSS(); if( $result ){ echo 'CSS regenerated'; echo '
'; } } // delete temporary directory $result = $importer->delete_temp_dir(); if( $result ){ echo 'Temporary files removed'; echo '
'; } flush_rewrite_rules(false); exit(); } /* * Ajax | Scratch Theme options */ public function _options_scratch(){ global $MFN_Options; global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $options = $MFN_Options->_default_values(); // header if( ! empty($_POST['scratch']['header']) ){ $header = $_POST['scratch']['header']; if( is_numeric( $header ) ){ // pre-built header $mfn_items = $this->import_template($header); if( $mfn_items ){ // replace logo if( ! empty($_POST['scratch']['logo']) ){ foreach( $mfn_items as $s_k => $section ){ if( ! empty( $section['wraps'] ) ){ foreach( $section['wraps'] as $w_k => $wrap ){ if( ! empty( $wrap['items'] ) ){ foreach( $wrap['items'] as $i_k => $item ){ if( 'header_logo' == $item['type'] && ! empty($item['fields']['image']) ){ $mfn_items[$s_k]['wraps'][$w_k]['items'][$i_k]['fields']['image'] = esc_url($_POST['scratch']['logo']); } } } } } } } // styles $mfn_styles = Mfn_Helper::preparePostUpdate(wp_slash( $mfn_items )); if( isset( $mfn_styles['sections'] ) ){ unset( $mfn_styles['sections'] ); } // insert post $post = [ 'post_title' => 'Header template', 'post_status' => 'publish', 'post_type' => 'template', 'meta_input' => [ 'mfn_template_type' => 'header', 'mfn_template_conditions' => json_encode([ 0 => [ 'rule' => 'include', 'var' => 'everywhere', ], ]), 'mfn-page-items' => call_user_func('base'.'64_encode', serialize( $mfn_items) ), 'mfn-page-local-style' => json_encode( $mfn_styles ), ], ]; $template_id = wp_insert_post( $post ); // set conditions update_option( 'mfn_header_offer_arch', $template_id ); update_option( 'mfn_header_offer_single', $template_id ); update_option( 'mfn_header_page_arch', $template_id ); update_option( 'mfn_header_page_single', $template_id ); update_option( 'mfn_header_portfolio_arch', $template_id ); update_option( 'mfn_header_portfolio_single', $template_id ); update_option( 'mfn_header_post_arch', $template_id ); update_option( 'mfn_header_post_single', $template_id ); update_option( 'mfn_header_product_arch', $template_id ); update_option( 'mfn_header_product_single', $template_id ); // generate CSS Mfn_Helper::generate_css( $mfn_styles, $template_id ); } } else { // default $options['header-style'] = $header; } } // logo if( ! empty($_POST['scratch']['logo']) ){ $options['logo-img'] = esc_url( $_POST['scratch']['logo'] ); } // footer if( ! empty($_POST['scratch']['footer']) ){ $footer = $_POST['scratch']['footer']; $footer = str_replace('_', ';', $footer); if( is_numeric( $footer ) ){ // pre-built footer $mfn_items = $this->import_template($footer); if( $mfn_items ){ // styles $mfn_styles = Mfn_Helper::preparePostUpdate(wp_slash( $mfn_items )); if( isset( $mfn_styles['sections'] ) ){ unset( $mfn_styles['sections'] ); } // insert post $post = [ 'post_title' => 'Footer template', 'post_status' => 'publish', 'post_type' => 'template', 'meta_input' => [ 'mfn_template_type' => 'footer', 'mfn-page-items' => call_user_func('base'.'64_encode', serialize( $mfn_items) ), 'mfn-page-local-style' => json_encode( $mfn_styles ), ], ]; $template_id = wp_insert_post( $post ); // set conditions update_option( 'mfn_footer_offer_arch', $template_id ); update_option( 'mfn_footer_offer_single', $template_id ); update_option( 'mfn_footer_page_arch', $template_id ); update_option( 'mfn_footer_page_single', $template_id ); update_option( 'mfn_footer_portfolio_arch', $template_id ); update_option( 'mfn_footer_portfolio_single', $template_id ); update_option( 'mfn_footer_post_arch', $template_id ); update_option( 'mfn_footer_post_single', $template_id ); update_option( 'mfn_footer_product_arch', $template_id ); update_option( 'mfn_footer_product_single', $template_id ); // generate CSS Mfn_Helper::generate_css( $mfn_styles, $template_id ); } } else { // default $options['footer-layout'] = $footer; } } // typography if( ! empty($_POST['scratch']['fonts']) && is_array( $_POST['scratch']['fonts'] ) ){ $fonts = $_POST['scratch']['fonts']; $options['font-title'] = $fonts[0]; $options['font-headings'] = $fonts[0]; $options['font-decorative'] = $fonts[0]; $options['font-content'] = $fonts[1]; $options['font-menu'] = $fonts[1]; $options['font-headings-small'] = $fonts[1]; $options['font-blockquote'] = $fonts[1]; $options['button-font-family'] = $fonts[1]; } // colors if( ! empty($_POST['scratch']['colors']) && is_array( $_POST['scratch']['colors'] ) ){ $colors = $_POST['scratch']['colors']; // background $options['background-html'] = $colors[0]; $options['background-body'] = $colors[0]; // text $options['color-text'] = $colors[1]; $options['color-tab'] = $colors[1]; $options['color-blockquote'] = $colors[1]; // heading h1-h4 $options['color-h1'] = $colors[2]; $options['color-h2'] = $colors[2]; $options['color-h3'] = $colors[2]; $options['color-h4'] = $colors[2]; // heading h5-h6 $options['color-h5'] = $colors[3]; $options['color-h6'] = $colors[3]; // link $options['color-action-bar-a'] = $colors[4]; $options['mobile-color-action-bar-a'] = $colors[4]; $options['color-menu-a-active'] = $colors[4]; $options['color-menu-responsive-icon'] = $colors[4]; $options['background-overlay-menu'] = $colors[4]; $options['color-theme'] = $colors[4]; $options['color-selection'] = $colors[4]; $options['color-a'] = $colors[4]; $options['background-fancy-link'] = $colors[4]; $options['color-fancy-link-hover'] = $colors[4]; $options['background-highlight'] = $colors[4]; $options['color-hr'] = $colors[4]; $options['background-highlight-section'] = $colors[4]; $options['color-tab-title'] = $colors[4]; $options['background-getintouch'] = $colors[4]; $options['color-contentlink'] = $colors[4]; $options['color-counter'] = $colors[4]; $options['color-iconbar'] = $colors[4]; $options['color-iconbox'] = $colors[4]; $options['color-list-icon'] = $colors[4]; $options['color-pricing-price'] = $colors[4]; $options['background-pricing-featured'] = $colors[4]; $options['background-progressbar'] = $colors[4]; $options['color-quickfact-number'] = $colors[4]; $options['background-slidingbox-title'] = $colors[4]; $options['background-trailer-subtitle'] = $colors[4]; $options['color-shop-single-image-icon']['hover'] = $colors[4]; $options['color-footer-theme'] = $colors[4]; $options['color-footer-a-hover'] = $colors[4]; $options['color-sliding-top-theme'] = $colors[4]; $options['color-sliding-top-a'] = $colors[4]; $options['background-action-button'] = $colors[4]; $options['color-imageframe-link']['hover'] = $colors[4]; // link hover $options['color-action-bar-a-hover'] = $colors[5]; $options['mobile-color-action-bar-a-hover'] = $colors[5]; $options['color-a-hover'] = $colors[5]; $options['background-fancy-link-hover'] = $colors[5]; $options['color-sliding-top-a-hover'] = $colors[5]; } // update options update_option( 'betheme', $options ); exit(); } /* * Ajax | Scratch Settings */ public function _settings_scratch(){ global $wpdb; check_ajax_referer( 'mfn-setup', 'mfn-setup-nonce' ); $editor = htmlspecialchars(stripslashes($_POST['editor'])); $blogname = htmlspecialchars(stripslashes($_POST['blogname'])); $blogdescription = htmlspecialchars(stripslashes($_POST['blogdescription'])); // set site title nad tagline if( $blogname ){ // update_option( 'blogname', $blogname ); // Elementor hook crashes here, workaround below: $value = sanitize_option( 'blogname', $blogname ); $result = $wpdb->update( $wpdb->options, ['option_value' => $value], ['option_name' => 'blogname'] ); } if( $blogdescription ){ // update_option( 'blogdescription', $blogdescription ); // Elementor hook crashes here, workaround below: $value = sanitize_option( 'blogdescription', $blogdescription ); $result = $wpdb->update( $wpdb->options, ['option_value' => $value], ['option_name' => 'blogdescription'] ); } echo 'Site title and tagline set'; echo '
'; // set text editor if( $editor ){ $option = 'column-visual'; if( 'code' == $editor ){ $value = 0; } else { $value = 1; } $result = Mfn_Builder_Ajax::settings($option, $value); if( $result ){ echo 'Default text editor set'; echo '
'; } } exit(); } /** * Import template */ public function import_template( $id ){ if( ! $id ){ return false; } $sections_api = new Mfn_Pre_Built_Sections_API( $id ); $response = $sections_api->remote_get_section(); if( ! $response ){ _e( 'Remote API error.', 'mfn-opts' ); } elseif( is_wp_error( $response ) ){ echo $response->get_error_message(); } else { // unserialize response $mfn_items = unserialize(call_user_func('base'.'64_decode', $response), ['allowed_classes' => false]); if( ! is_array( $mfn_items ) ){ return false; } // change images url $placeholder_url = get_template_directory_uri() .'/functions/builder/pre-built/images/placeholders/'; $regex = '/\#mfn_placeholder\#/'; $mfn_items = Mfn_Builder_Ajax::builder_replace( $regex, $placeholder_url, $mfn_items ); return $mfn_items; } return false; } /** * Disable plugin redirect after activation */ public function disable_plugins_redirect() { delete_transient( '_bbp_activation_redirect' ); delete_transient( '_revslider_welcome_screen_activation_redirect' ); delete_transient( '_tribe_events_activation_redirect' ); delete_transient( '_wc_activation_redirect' ); delete_transient( 'leadin_redirect_after_activation' ); } } $mfn_setup = new Mfn_Setup();