/home/preegmxb/gymnyou.com/wp-content/plugins/white-label-cms/includes/classes/Settings.php
<?php

class WLCMS_Settings
{
    private $settings;

    function __construct()
    {
        $this->init_settings();
        add_filter('wp_kses_allowed_html', array($this, 'kses_allowed_html'), 10, 2);
        add_action('init', array($this, 'init'));
        add_action('wlcms_after_body', array($this, 'add_import_html'));
    }

    public function init()
    {
        // check or initiate import
        $this->import();

        if (!isset($_GET['wlcms-action'])) {
            return;
        }

        // check or initiate reset
        $this->reset_plugin();

        // check or initiate export
        $this->export();

    }

    public function kses_allowed_html($tags, $context)
    {

        if ('post' === $context) {

            $tags['iframe'] = array(
                'align' => true,
                'width' => true,
                'height' => true,
                'frameborder' => true,
                'name' => true,
                'src' => true,
                'id' => true,
                'class' => true,
                'style' => true,
                'scrolling' => true,
                'marginwidth' => true,
                'marginheight' => true,
                'allowfullscreen' => true,
                'mozallowfullscreen' => true,
                'webkitallowfullscreen' => true,
            );

            $tags['embed'] = array(
                'src' => true,
                'height' => true,
                'width' => true,
                'style' => true,
                'type' => true,
            );
        }

        return $tags;
    }

    public function get($key = "", $default = false)
    {
        if (!isset($this->settings[$key])) {
            return $default;
        }

        $value = wlcms_removeslashes($this->settings[$key]);
        if (empty($value) || is_null($value)) {
            return false;
        }

        if (is_array($value) && count($value) == 0) {
            return false;
        }

        return $value;
    }

    public function reset()
    {
        $this->settings = array();
    }

    public function setAll($value)
    {
        $this->settings = $value;
    }

    public function getAll()
    {
        return $this->settings;
    }

    public function set($key, $value)
    {
        $this->settings[$key] = $value;
    }

    public function remove($key)
    {
        if (isset($this->settings[$key])) {
            unset($this->settings[$key]);
        }
    }

    public function save()
    {
        update_option("wlcms_options", $this->settings);
    }

    public function store()
    {
        do_action('wlcms_before_saving', $this);
        $this->reset();
        $this->set('version', WLCMS_VERSION);

        foreach ($this->keys() as $key) {
            $setting_value = '';
            if (isset($_POST[$key])) {
                $setting_value = wlcms_kses($_POST[$key]);
            }
            $this->set($key, $setting_value);
        }

        $placeholder = ''; // use the same method used by preview wizard
        do_action('wlcms_save_addtional_settings', $this, $placeholder);

        $this->save();

        do_action('wlcms_after_saving', $this);

        WLCMS_Queue('Settings saved.');
        wp_redirect(wlcms()->admin_url());
        exit;
    }

    public function init_settings()
    {
        $settings = get_option("wlcms_options", false);

        if (!$settings) {
            $settings = $this->default_options();
        }

        $this->settings = $settings;
    }

    public function add_import_html()
    {
        wlcms()->admin_view('parts/import-settings');
    }

    public function import()
    {
        if (!isset($_POST['wlcms-settings_nonce'])) return;

        if (!is_admin() && !current_user_can('manage_options')) {
            return;
        }

        if (!isset($_POST['wlcms-settings']) && !isset($_FILES['import_file'])) {
            return;
        }

        if (!isset($_FILES['import_file'])) {
            return;
        }

        if ($_FILES['import_file']['size'] == 0 && $_FILES['import_file']['name'] == '') {
            return;
        }

        // check nonce
        if (!wp_verify_nonce($_POST['wlcms-settings_nonce'], 'wlcms-settings-action')) {

            WLCMS_Queue('Sorry, your nonce did not verify.', 'error');
            wp_redirect(wlcms()->admin_url());
            exit;
        }

        $import_field = 'import_file';
        $temp_file_raw = $_FILES[$import_field]['tmp_name'];
        $temp_file = esc_attr($temp_file_raw);
        $arr_file_type = $_FILES[$import_field];
        $uploaded_file_type = $arr_file_type['type'];
        $allowed_file_types = array('application/json');

        if (!in_array($uploaded_file_type, $allowed_file_types)) {
            WLCMS_Queue('Upload a valid .json file.', 'error');
            wp_redirect(wlcms()->admin_url());
            exit;
        }

        $settings = (array)json_decode(
            file_get_contents($temp_file),
            true
        );

        unlink($temp_file);

        if (!$settings) {

            WLCMS_Queue('Nothing to import, please check your json file format.', 'error');
            wp_redirect(wlcms()->admin_url());
            exit;

        }

        $this->setAll($settings);
        $this->save();

        WLCMS_Queue('Your Import has been completed.');

        wp_redirect(wlcms()->admin_url());
        exit;
    }


    public function export()
    {
        if (!isset($_GET['wlcms-action']) || (isset($_GET['wlcms-action']) && $_GET['wlcms-action'] != 'export')) {
            return;
        }

        $settings = $this->getAll();

        if (!is_array($settings)) {
            $settings = array();
        }

        $settings = json_encode($settings);

        header('Content-disposition: attachment; filename=wlcms-settings.json');
        header('Content-type: application/json');
        echo $settings;
        exit;
    }

    public function reset_plugin()
    {
        global $wpdb;

        if ($_GET['wlcms-action'] != 'reset') {
            return;
        }

        delete_option("wlcms_options");
        $wpdb->get_results($wpdb->prepare("DELETE FROM $wpdb->options WHERE option_name LIKE %s", 'wlcms_o_%'));

        WLCMS_Queue('Settings reset.');
        wp_redirect(wlcms()->admin_url());
        exit;
    }

    public function keys()
    {
        return array_keys($this->default_options());
    }

    public function get_default_option($key)
    {
        $settings = $this->default_options();
        return isset($settings[$key]) ? $settings[$key] : null;
    }
    
    public function default_options()
    {

        $settings = array(
            'developer_icon' => '',
            'use_developer_icon_footer' => 1,
            'developer_icon_footer_url' => '',
            'developer_side_menu_image' => '',
            'developer_icon_admin_bar' => false,
            'developer_branding_footer' => false,
            'use_developer_side_menu_image' => false,
            'hide_wordpress_logo_and_links' => false,
            'hide_wp_version' => false,
            'admin_bar_logo' => '',
            'admin_bar_logo_width' => 15,
            'admin_bar_alt_text' => '',
            'admin_bar_howdy_text' => '',
            'admin_bar_url' => '',
            'side_menu_image' => '',
            'collapsed_side_menu_image' => '',
            'side_menu_link_url' => '',
            'side_menu_alt_text' => '',
            'gutenberg_exit_icon' => '',
            'gutenberg_exit_custom_icon' => '',
            'footer_image' => '',
            'footer_url' => '',
            'footer_html' => '',
            'dashboard_icon' => '',
            'dashboard_title' => 'Dashboard',
            'dashboard_role_stat' => false,
            'dashboard_widgets_visibility_roles' => array('administrator', 'editor', 'author', 'contributor', 'subscriber'),
            'dashboard_widgets' => array(),
            'hide_all_dashboard_panels' => false,
            'hide_at_a_glance' => false,
            'hide_activities' => false,
            'hide_recent_comments' => false,
            'hide_quick_press' => false,
            'hide_news_and_events' => false,
            'remove_empty_dash_panel' => false,
            'welcome_panel' => array(
                array(
                    'is_active' => false,
                    'show_title' => false,
                    'template_type' => 'html',
                    'visible_to' => array('administrator', 'editor', 'author', 'contributor', 'subscriber'),
                ), array(
                    'is_active' => false,
                    'show_title' => false,
                    'template_type' => 'html',
                    'visible_to' => array('administrator', 'editor', 'author', 'contributor', 'subscriber'),
                )
            ),
            'add_own_rss_panel' => false,
            'rss_feed_number_of_item' => 3,
            'show_post_content' => false,
            'rss_introduction' => '',
            'rss_logo' => '',
            'rss_title' => '',
            'wlcms_admin' => false,
            'admin_menus' => false,
            'enable_wlcms_admin' => false,
            'admin_bar_menus' => false,
            'hide_admin_bar_all' => false,
            'hide_help_box' => false,
            'hide_screen_options' => false,
            'hide_nag_messages' => false,
            'settings_custom_css_admin' => '',
            'settings_custom_css_url' => ''
        );
        return apply_filters('wlcms_setting_fields', $settings);
    }
}