/**
  * Return the HTML markup of the slider.
  *
  * Also, retrieves the JavaScript output of the slider and CSS and JavaScript files that need to be loaded.
  *
  * @since 4.0.0
  * 
  * @param  array   $slider_data An array containing the slider's data.
  * @param  boolean $allow_cache    Indicates whether or not the output will be cached.
  * @return string                  The HTML code that needs to be printed for the slider.
  */
 public function output_slider($slider_data, $allow_cache = true)
 {
     $slider_data = apply_filters('sliderpro_data', $slider_data, $slider_data['id']);
     $slider = new BQW_SP_Slider_Renderer($slider_data);
     $html_output = $slider->render();
     $js_output = $slider->render_js();
     $this->js_output .= $js_output;
     $css_dependencies = $slider->get_css_dependencies();
     $js_dependencies = $slider->get_js_dependencies();
     foreach ($css_dependencies as $css_dependency) {
         wp_enqueue_style($this->plugin_slug . '-' . $css_dependency . '-style');
     }
     foreach ($js_dependencies as $js_dependency) {
         $this->add_script_to_load($this->plugin_slug . '-' . $js_dependency . '-script');
     }
     if ($allow_cache === true) {
         $slider_cache = array('html_output' => $html_output, 'js_output' => $js_output, 'css_dependencies' => $css_dependencies, 'js_dependencies' => $js_dependencies);
         $plugin_settings = BQW_SliderPro_Settings::getPluginSettings();
         $cache_time = 60 * 60 * floatval(get_option('sliderpro_cache_expiry_interval', $plugin_settings['cache_expiry_interval']['default_value']));
         set_transient('sliderpro_cache_' . $slider_data['id'], $slider_cache, $cache_time);
     }
     return $html_output;
 }
 /**
  * Renders the plugin settings page.
  *
  * It also checks if new data was posted, and saves
  * it in the options table.
  *
  * It verifies the purchase code supplied and displays
  * if it's valid.
  * 
  * @since 4.0.0
  */
 public function render_plugin_settings_page()
 {
     $plugin_settings = BQW_SliderPro_Settings::getPluginSettings();
     $load_stylesheets = get_option('sliderpro_load_stylesheets', $plugin_settings['load_stylesheets']['default_value']);
     $load_custom_css_js = get_option('sliderpro_load_custom_css_js', $plugin_settings['load_custom_css_js']['default_value']);
     $load_js_in_all_pages = get_option('sliderpro_load_js_in_all_pages', $plugin_settings['load_js_in_all_pages']['default_value']);
     $load_unminified_scripts = get_option('sliderpro_load_unminified_scripts', $plugin_settings['load_unminified_scripts']['default_value']);
     $cache_expiry_interval = get_option('sliderpro_cache_expiry_interval', $plugin_settings['cache_expiry_interval']['default_value']);
     $hide_inline_info = get_option('sliderpro_hide_inline_info', $plugin_settings['hide_inline_info']['default_value']);
     $hide_getting_started_info = get_option('sliderpro_hide_getting_started_info', $plugin_settings['hide_getting_started_info']['default_value']);
     $access = get_option('sliderpro_access', $plugin_settings['access']['default_value']);
     if (isset($_POST['plugin_settings_update'])) {
         check_admin_referer('plugin-settings-update', 'plugin-settings-nonce');
         if (isset($_POST['load_stylesheets'])) {
             $load_stylesheets = $_POST['load_stylesheets'];
             update_option('sliderpro_load_stylesheets', $load_stylesheets);
         }
         if (isset($_POST['load_custom_css_js'])) {
             $load_custom_css_js = $_POST['load_custom_css_js'];
             update_option('sliderpro_load_custom_css_js', $load_custom_css_js);
         }
         if (isset($_POST['load_js_in_all_pages'])) {
             $load_js_in_all_pages = true;
             update_option('sliderpro_load_js_in_all_pages', true);
         } else {
             $load_js_in_all_pages = false;
             update_option('sliderpro_load_js_in_all_pages', false);
         }
         if (isset($_POST['load_unminified_scripts'])) {
             $load_unminified_scripts = true;
             update_option('sliderpro_load_unminified_scripts', true);
         } else {
             $load_unminified_scripts = false;
             update_option('sliderpro_load_unminified_scripts', false);
         }
         if (isset($_POST['cache_expiry_interval'])) {
             $cache_expiry_interval = $_POST['cache_expiry_interval'];
             update_option('sliderpro_cache_expiry_interval', $cache_expiry_interval);
         }
         if (isset($_POST['hide_inline_info'])) {
             $hide_inline_info = true;
             update_option('sliderpro_hide_inline_info', true);
         } else {
             $hide_inline_info = false;
             update_option('sliderpro_hide_inline_info', false);
         }
         if (isset($_POST['hide_getting_started_info'])) {
             $hide_getting_started_info = true;
             update_option('sliderpro_hide_getting_started_info', true);
         } else {
             $hide_getting_started_info = false;
             update_option('sliderpro_hide_getting_started_info', false);
         }
         if (isset($_POST['access'])) {
             $access = $_POST['access'];
             update_option('sliderpro_access', $access);
         }
     }
     $purchase_code = get_option('sliderpro_purchase_code', '');
     $purchase_code_status = get_option('sliderpro_purchase_code_status', '0');
     if (isset($_POST['purchase_code_update'])) {
         check_admin_referer('purchase-code-update', 'purchase-code-nonce');
         if (isset($_POST['purchase_code'])) {
             $purchase_code = $_POST['purchase_code'];
             update_option('sliderpro_purchase_code', $purchase_code);
             if ($_POST['purchase_code'] === '') {
                 $purchase_code_status = '0';
             } else {
                 $api = BQW_SliderPro_API::get_instance();
                 $verification_result = $api->verify_purchase_code($purchase_code);
                 if ($verification_result === 'yes') {
                     $purchase_code_status = '1';
                 } else {
                     if ($verification_result === 'no') {
                         $purchase_code_status = '2';
                     } else {
                         if ($verification_result === 'error') {
                             $purchase_code_status = '3';
                         }
                     }
                 }
             }
             update_option('sliderpro_purchase_code_status', $purchase_code_status);
         }
     }
     include_once 'views/plugin-settings.php';
 }