Current File : /home/inlingua/public_html/bestbuyind/wp-content/plugins/crelly-slider/wordpress/frontend.php
<?php
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

// Code output
function crellySlider($alias) {
	echo getCrellySlider($alias);
}

function getCrellySlider($alias) {
	return CrellySliderFrontend::output($alias);
}

class CrellySliderFrontend {

	public static function setNotAdminJs() {
		add_action('wp_enqueue_scripts', 'CrellySliderFrontend::notAdminJs');
	}

	// Shortcode
	public static function shortcode($atts) {
		$a = shortcode_atts( array(
			'alias' => false,
		), $atts );

		if(! $a['alias']) {
			return __('You have to insert a valid alias in the shortcode', 'crelly-slider');
		}
		else {
			return CrellySliderFrontend::output($a['alias']);
		}
	}

	public static function addShortcode() {
		add_shortcode('crellyslider', array( __CLASS__, 'shortcode'));
	}

	public static function output($alias) {
		global $wpdb;

		// Check if the slider exists
		$slider = $wpdb->get_row($wpdb->prepare('SELECT id FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE alias = %s', esc_sql($alias)));
		if(! $slider) {
			return __('The slider hasn\'t been found', 'crelly-slider');
		}

		// Generate a unique ID for each slider. This is needed because we might want to display the same slider on the same page more than once.
		// The first slider of the page will have id="crellyslider-theSliderID". All the others will have id="crellyslider-theSliderID-aRandomString"
		static $loadedSliders = array();
		$uid = $slider->id;
		if(in_array($slider->id, $loadedSliders)) {
			$uid .= '-' . uniqid();
		}
		else {
			array_push($loadedSliders, $slider->id);
		}

		// Get the slider. Return if now() is not between from/to dates
		$slider = $wpdb->get_row($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_sliders WHERE NOW() BETWEEN fromDate AND toDate AND alias=%s', esc_sql($alias)));
		if(! $slider) {
			return '';
		}

		$slider_id = esc_sql($slider->id);
		$slides = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_slides WHERE draft = 0 AND slider_parent = %d ORDER BY position', $slider_id));

		$output = '';

		$output .= '<div style="display: none;" class="crellyslider-slider crellyslider-slider-' . esc_attr($slider->layout) . ' crellyslider-slider-' . esc_attr($alias) . ' crellyslider-' . esc_attr($slider_id) . '" id="crellyslider-' . $uid . '">' . "\n";
		$output .= '<ul>' . "\n";
		foreach($slides as $slide) {
			$background_type_image = $slide->background_type_image == 'undefined' || $slide->background_type_image == 'none' ? 'none;' : 'url(\'' . CrellySliderCommon::getURL($slide->background_type_image) . '\');';
			$output .= '<li' .  "\n" .
			'style="' . "\n" .
			'background-color: ' . esc_attr($slide->background_type_color) . ';' . "\n" .
			'background-image: ' . $background_type_image . "\n" .
			'background-position: ' . esc_attr($slide->background_propriety_position_x) . ' ' . esc_attr($slide->background_propriety_position_y) . ';' . "\n" .
			'background-repeat: ' . esc_attr($slide->background_repeat) . ';' . "\n" .
			'background-size: ' . esc_attr($slide->background_propriety_size) . ';' . "\n" .
			stripslashes($slide->custom_css) . "\n" .
			'"' . "\n" .

			'data-in="' . esc_attr($slide->data_in) . '"' . "\n" .
			'data-ease-in="' . esc_attr($slide->data_easeIn) . '"' . "\n" .
			'data-out="' . esc_attr($slide->data_out) . '"' . "\n" .
			'data-ease-out="' . esc_attr($slide->data_easeOut) . '"' . "\n" .
			'data-time="' . esc_attr($slide->data_time) . '"' . "\n" .
			'>' . "\n";

			if($slide->link != '') {
				if($slide->link_new_tab) {
					$output .= '<a class="cs-background-link" target="_blank" href="' . stripslashes($slide->link) . '"></a>';
				}
				else {
					$output .= '<a class="cs-background-link" href="' . stripslashes($slide->link) . '"></a>';
				}
			}

			$slide_parent = esc_sql($slide->position);
			$elements = $wpdb->get_results($wpdb->prepare('SELECT * FROM ' . $wpdb->prefix . 'crellyslider_elements WHERE slider_parent = %d AND slide_parent = %d', $slider_id, $slide_parent));

			foreach($elements as $element) {
				if($element->link != '') {
					$target = $element->link_new_tab == 1 ? 'target="_blank"' : '';

					$output .= '<a' . "\n" .
					'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
					'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
					'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
					'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
					'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
					'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
					'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
					'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
					'data-time="' . esc_attr($element->data_time) . '"' . "\n" .
					'href="' . stripslashes($element->link) . '"' . "\n" .
					$target . "\n" .
					'style="' .
					'z-index: ' . $element->z_index . ';' . "\n" .
					'">' .  "\n";
				}

				switch($element->type) {
					case 'text':
						$output .= '<div' . "\n" .
						'class="' . esc_attr($element->custom_css_classes) . '"' . "\n" .
						'style="';
						if($element->link == '') {
							$output .= 'z-index: ' . esc_attr($element->z_index) . ';' . "\n";
						}
						$output .= stripslashes($element->custom_css) . "\n" .
						'"' .  "\n";
						if($element->link == '') {
							$output .= 'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
							'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
							'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
							'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
							'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
							'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
							'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
							'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
							'data-time="' . esc_attr($element->data_time) . '"' . "\n";
						}
						$output .= '>' .
						stripslashes($element->inner_html) .
						'</div>' . "\n";
					break;

					case 'image':
						$output .= '<img' . "\n" .
						'class="' . esc_attr($element->custom_css_classes) . '"' . "\n" .
						'src="' . CrellySliderCommon::getURL($element->image_src) . '"' . "\n" .
						'alt="' . esc_attr($element->image_alt) . '"' . "\n" .
						'style="' . "\n";
						if($element->link == '') {
							$output .= 'z-index: ' . esc_attr($element->z_index) . ';' . "\n";
						}
						$output .= stripslashes($element->custom_css) . "\n" .
						'"' . "\n";
						if($element->link == '') {
							$output .= 'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
							'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
							'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
							'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
							'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
							'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
							'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
							'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
							'data-time="' . esc_attr($element->data_time) . '"' . "\n";
						}
						$output .= '/>' . "\n";
					break;

					case 'youtube_video':
						$output .= '<iframe allow="autoplay" frameborder="0" type="text/html" width="560" height="315"' . "\n" .
						'class="cs-yt-iframe ' . esc_attr($element->custom_css_classes) . '"' . "\n" .
						'src="' . esc_url('https://www.youtube.com/embed/' . $element->video_id . '?enablejsapi=1') . '"' . "\n" .
						'data-autoplay="' . $element->video_autoplay . '"' . "\n" .
						'data-loop="' . $element->video_loop . '"' . "\n" .
						'data-start-mute="' . $element->video_start_mute . '"' . "\n" .
						'data-pause-while-watching="' . $element->video_pause_while_watching . '"' . "\n" .
						'style="' . "\n" .
						'z-index: ' . $element->z_index . ';' . "\n" .
						stripslashes($element->custom_css) . "\n" .
						'"' . "\n" .
						'data-delay="' . $element->data_delay . '"' . "\n" .
						'data-ease-in="' . $element->data_easeIn . '"' . "\n" .
						'data-ease-out="' . $element->data_easeOut . '"' . "\n" .
						'data-in="' . $element->data_in . '"' . "\n" .
						'data-out="' . $element->data_out . '"' . "\n" .
						'data-ignore-ease-out="' . $element->data_ignoreEaseOut . '"' . "\n" .
						'data-top="' . $element->data_top . '"' . "\n" .
						'data-left="' . $element->data_left . '"' . "\n" .
						'data-time="' . $element->data_time . '"' . "\n" .
						'></iframe>' . "\n";
					break;

					case 'vimeo_video':
						$output .= '<iframe allow="autoplay" frameborder="0" width="560" height="315"' . "\n" .
						'class="cs-vimeo-iframe ' . esc_attr($element->custom_css_classes) . '"' . "\n" .
						'src="' . esc_url('https://player.vimeo.com/video/' . $element->video_id . '?api=1') . '"' . "\n" .
						'data-autoplay="' . esc_attr($element->video_autoplay) . '"' . "\n" .
						'data-loop="' . esc_attr($element->video_loop) . '"' . "\n" .
						'data-start-mute="' . $element->video_start_mute . '"' . "\n" .
						'data-pause-while-watching="' . $element->video_pause_while_watching . '"' . "\n" .
						'style="' . "\n" .
						'z-index: ' . esc_attr($element->z_index) . ';' . "\n" .
						stripslashes($element->custom_css) . "\n" .
						'"' . "\n" .
						'data-delay="' . esc_attr($element->data_delay) . '"' . "\n" .
						'data-ease-in="' . esc_attr($element->data_easeIn) . '"' . "\n" .
						'data-ease-out="' . esc_attr($element->data_easeOut) . '"' . "\n" .
						'data-in="' . esc_attr($element->data_in) . '"' . "\n" .
						'data-out="' . esc_attr($element->data_out) . '"' . "\n" .
						'data-ignore-ease-out="' . esc_attr($element->data_ignoreEaseOut) . '"' . "\n" .
						'data-top="' . esc_attr($element->data_top) . '"' . "\n" .
						'data-left="' . esc_attr($element->data_left) . '"' . "\n" .
						'data-time="' . esc_attr($element->data_time) . '"' . "\n" .
						'></iframe>' . "\n";
					break;
				}

				if($element->link != '') {
					$output .= '</a>' . "\n";
				}
			}

			$output .= '</li>' . "\n";
		}
		$output .= '</ul>' . "\n";
		$output .= '</div>' . "\n";

		$output .= '<script type="text/javascript">' . "\n";
		$output .= '(function($) {' . "\n";
		$output .= '$(document).ready(function() {' . "\n";
		$output .= '$("#crellyslider-' . $uid  . '").crellySlider({' . "\n";
		$output .= 'layout: \'' . $slider->layout . '\',' . "\n";
		$output .= 'responsive: ' . $slider->responsive . ',' . "\n";
		$output .= 'startWidth: ' . $slider->startWidth . ',' . "\n";
		$output .= 'startHeight: ' . $slider->startHeight . ',' . "\n";
		$output .= 'automaticSlide: ' . $slider->automaticSlide . ',' . "\n";
		$output .= 'showControls: ' . $slider->showControls . ',' . "\n";
		$output .= 'showNavigation: ' . $slider->showNavigation . ',' . "\n";
		$output .= 'enableSwipe: ' . $slider->enableSwipe . ',' . "\n";
		$output .= 'showProgressBar: ' . $slider->showProgressBar . ',' . "\n";
		$output .= 'pauseOnHover: ' . $slider->pauseOnHover . ',' . "\n";
		if($slider->randomOrder != NULL) {
			$output .= 'randomOrder: ' . $slider->randomOrder . ',' . "\n";
		}
		if($slider->startFromSlide != NULL) {
			$output .= 'startFromSlide: ' . $slider->startFromSlide . ',' . "\n";
		}
		$output .= stripslashes($slider->callbacks) . "\n";
		$output .= '});' . "\n";
		$output .= '});' . "\n";
		$output .= '})(jQuery);' . "\n";
		$output .= '</script>' . "\n";

		return $output;
	}

}