<?php

class Hotel_26_Customizer_Notify
{

    private $recommended_actions;

    
    private $recommended_plugins;

    
    private static $instance;

    
    private $recommended_actions_title;

    
    private $recommended_plugins_title;

    
    private $dismiss_button;

    
    private $install_button_label;

    
    private $activate_button_label;

    
    private $hotel_26_deactivate_button_label;
    
    
    private $config;

    
    public static function init( $config )
    {
        if (! isset(self::$instance) && ! ( self::$instance instanceof Hotel_26_Customizer_Notify ) ) {
            self::$instance = new Hotel_26_Customizer_Notify;
            if (! empty($config) && is_array($config) ) {
                self::$instance->config = $config;
                self::$instance->setup_config();
                self::$instance->setup_actions();
            }
        }

    }

    
    public function setup_config()
    {

        global $hotel_26_customizer_notify_recommended_plugins;
        global $hotel_26_customizer_notify_recommended_actions;

        global $install_button_label;
        global $activate_button_label;
        global $hotel_26_deactivate_button_label;

        $this->recommended_actions = isset($this->config['recommended_actions']) ? $this->config['recommended_actions'] : array();
        $this->recommended_plugins = isset($this->config['recommended_plugins']) ? $this->config['recommended_plugins'] : array();

        $this->recommended_actions_title = isset($this->config['recommended_actions_title']) ? $this->config['recommended_actions_title'] : '';
        $this->recommended_plugins_title = isset($this->config['recommended_plugins_title']) ? $this->config['recommended_plugins_title'] : '';
        $this->dismiss_button            = isset($this->config['dismiss_button']) ? $this->config['dismiss_button'] : '';

        $hotel_26_customizer_notify_recommended_plugins = array();
        $hotel_26_customizer_notify_recommended_actions = array();

        if (isset($this->recommended_plugins) ) {
            $hotel_26_customizer_notify_recommended_plugins = $this->recommended_plugins;
        }

        if (isset($this->recommended_actions) ) {
            $hotel_26_customizer_notify_recommended_actions = $this->recommended_actions;
        }

        $install_button_label    = isset($this->config['install_button_label']) ? $this->config['install_button_label'] : '';
        $activate_button_label   = isset($this->config['activate_button_label']) ? $this->config['activate_button_label'] : '';
        $hotel_26_deactivate_button_label = isset($this->config['hotel_26_deactivate_button_label']) ? $this->config['hotel_26_deactivate_button_label'] : '';

    }

    
    public function setup_actions()
    {

        // Register the section
        add_action('customize_register', array( $this, 'hotel_26_plugin_notification_customize_register' ));

        // Enqueue scripts and styles
        add_action('customize_controls_enqueue_scripts', array( $this, 'hotel_26_customizer_notify_scripts_for_customizer' ), 0);

        /* ajax callback for dismissable recommended actions */
        add_action('wp_ajax_quality_customizer_notify_dismiss_action', array( $this, 'hotel_26_customizer_notify_dismiss_recommended_action_callback' ));

        add_action('wp_ajax_ti_customizer_notify_dismiss_recommended_plugins', array( $this, 'hotel_26_customizer_notify_dismiss_recommended_plugins_callback' ));

    }

    
    public function hotel_26_customizer_notify_scripts_for_customizer()
    {

        wp_enqueue_style('hotel-26-customizer-notify-css', get_template_directory_uri() . '/inc/customizer-notify/css/hotel-26-customizer-notify.css', array());

        wp_enqueue_style('hotel-26-plugin-install');
        wp_enqueue_script('hotel-26-plugin-install');
        wp_add_inline_script('hotel-26-plugin-install', 'var pagenow = "customizer";');

        wp_enqueue_script('hotel-26-updates');

        wp_enqueue_script('hotel-26-customizer-notify-js', get_template_directory_uri() . '/inc/customizer-notify/js/hotel-26-customizer-notify.js', array( 'customize-controls' ));
        wp_localize_script(
            'hotel-26-customizer-notify-js', 'Hotel26CustomizercompanionObject', array(
            'hotel_26_ajaxurl'            => esc_url(admin_url('admin-ajax.php')),
            'hotel_26_template_directory' => esc_url(get_template_directory_uri()),
            'hotel_26_base_path'          => esc_url(admin_url()),
            'hotel_26_activating_string'  => __('Activating', 'hotel-26'),
            )
        );

    }

    
    public function hotel_26_plugin_notification_customize_register( $wp_customize )
    {

        
        include_once get_template_directory() . '/inc/customizer-notify/hotel-26-customizer-notify-section.php';

        $wp_customize->register_section_type('Hotel_26_Customizer_Notify_Section');

        $wp_customize->add_section(
            new Hotel_26_Customizer_Notify_Section(
                $wp_customize,
                'Hotel-26-customizer-notify-section',
                array(
                'title'          => $this->recommended_actions_title,
                'plugin_text'    => $this->recommended_plugins_title,
                'dismiss_button' => $this->dismiss_button,
                'priority'       => 0,
                )
            )
        );

    }

    
    public function hotel_26_customizer_notify_dismiss_recommended_action_callback()
    {

        global $hotel_26_customizer_notify_recommended_actions;

        $action_id = ( isset($_GET['id']) ) ? $_GET['id'] : 0;

        echo esc_html($action_id); 

        if (! empty($action_id) ) {

            
            if (get_theme_mod('hotel_26_customizer_notify_show') ) {

                $hotel_26_customizer_notify_show_recommended_actions = get_theme_mod('hotel_26_customizer_notify_show');
                switch ( $_GET['todo'] ) {
                case 'add':
                    $hotel_26_customizer_notify_show_recommended_actions[ $action_id ] = true;
                    break;
                case 'dismiss':
                    $hotel_26_customizer_notify_show_recommended_actions[ $action_id ] = false;
                    break;
                }
                echo esc_html($hotel_26_customizer_notify_show_recommended_actions);
                
            } else {
                $hotel_26_customizer_notify_show_recommended_actions = array();
                if (! empty($hotel_26_customizer_notify_recommended_actions) ) {
                    foreach ( $hotel_26_customizer_notify_recommended_actions as $hotel_26_lite_customizer_notify_recommended_action ) {
                        if ($hotel_26_lite_customizer_notify_recommended_action['id'] == $action_id ) {
                            $hotel_26_customizer_notify_show_recommended_actions[ $hotel_26_lite_customizer_notify_recommended_action['id'] ] = false;
                        } else {
                            $hotel_26_customizer_notify_show_recommended_actions[ $hotel_26_lite_customizer_notify_recommended_action['id'] ] = true;
                        }
                    }
                    echo esc_html($hotel_26_customizer_notify_show_recommended_actions);
                }
            }
        }
        die(); 
    }

    
    public function hotel_26_customizer_notify_dismiss_recommended_plugins_callback()
    {

        $action_id = ( isset($_GET['id']) ) ? $_GET['id'] : 0;

        echo esc_html($action_id); 

        if (! empty($action_id) ) {

            $hotel_26_lite_customizer_notify_show_recommended_plugins = get_theme_mod('hotel_26_customizer_notify_show_recommended_plugins');

            switch ( $_GET['todo'] ) {
            case 'add':
                $hotel_26_lite_customizer_notify_show_recommended_plugins[ $action_id ] = false;
                break;
            case 'dismiss':
                $hotel_26_lite_customizer_notify_show_recommended_plugins[ $action_id ] = true;
                break;
            }
            echo esc_html($hotel_26_customizer_notify_show_recommended_actions);
        }
        die(); 
    }

}
