%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/lightco1/upgrade.lightco.com.au/modules/mod_djimageslider/
Upload File :
Create Path :
Current File : /home/lightco1/upgrade.lightco.com.au/modules/mod_djimageslider/helper.php

<?php

/**

 * @version $Id: helper.php 30 2015-11-04 11:15:22Z szymon $

 * @package DJ-ImageSlider

 * @subpackage DJ-ImageSlider Component

 * @copyright Copyright (C) 2012 DJ-Extensions.com, All rights reserved.

 * @license http://www.gnu.org/licenses GNU/GPL

 * @author url: http://dj-extensions.com

 * @author email contact@dj-extensions.com

 * @developer Szymon Woronowski - szymon.woronowski@design-joomla.eu

 *

 *

 * DJ-ImageSlider is free software: you can redistribute it and/or modify

 * it under the terms of the GNU General Public License as published by

 * the Free Software Foundation, either version 3 of the License, or

 * (at your option) any later version.

 *

 * DJ-ImageSlider is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

 * GNU General Public License for more details.

 *

 * You should have received a copy of the GNU General Public License

 * along with DJ-ImageSlider. If not, see <http://www.gnu.org/licenses/>.

 *

 */

 

// no direct access

defined('_JEXEC') or die ('Restricted access');



class modDJImageSliderHelper

{

    static function getImagesFromFolder(&$params) {

    	

    	if(!is_numeric($max = $params->get('max_images'))) $max = 20;

        $folder = $params->get('image_folder');

        if(!$dir = @opendir($folder)) return null;

        while (false !== ($file = readdir($dir)))

        {

            if (preg_match('/.+\.(jpg|jpeg|gif|png)$/i', $file)) {

            	// check with getimagesize() which attempts to return the image mime-type 

            	if(getimagesize(JPATH_ROOT.DS.$folder.DS.$file)!==FALSE) $files[] = $file;

			}

        }

        closedir($dir);

        if($params->get('sort_by')) natcasesort($files);

		else shuffle($files);



		$images = array_slice($files, 0, $max);

		

		$target = modDJImageSliderHelper::getSlideTarget($params->get('link'));

		

		foreach($images as $image) {

			$slides[] = (object) array('title'=>'', 'description'=>'', 'image'=>$folder.'/'.$image, 'link'=>$params->get('link'), 'alt'=>$image, 'target'=>$target);

		}

				

		return $slides;

    }

	

	static function getImagesFromDJImageSlider(&$params) {

		

		if(!is_numeric($max = $params->get('max_images'))) $max = 20;

        $catid = $params->get('category',0);

		

		// build query to get slides

		$db = JFactory::getDBO();

		$query = $db->getQuery(true);

		$query->select('a.*');

		$query->from('#__djimageslider AS a');

		

		if (is_numeric($catid)) {

			$query->where('a.catid = ' . (int) $catid);

		}

		

		// Filter by start and end dates.

		$nullDate	= $db->Quote($db->getNullDate());

		$nowDate	= $db->Quote(JFactory::getDate()->format($db->getDateFormat()));

		

		$query->where('a.published = 1');

		$query->where('(a.publish_up = '.$nullDate.' OR a.publish_up <= '.$nowDate.')');

		$query->where('(a.publish_down = '.$nullDate.' OR a.publish_down >= '.$nowDate.')');

		

		if($params->get('sort_by',1)) {

			$query->order('a.ordering ASC');

		} else {

			$query->order('RAND()');

		}



		$db->setQuery($query, 0 , $max);

		$slides = $db->loadObjectList();

		

		foreach($slides as $slide){

			$slide->params = new JRegistry($slide->params);

			$slide->link = modDJImageSliderHelper::getSlideLink($slide);

			$slide->description = modDJImageSliderHelper::getSlideDescription($slide, $params->get('limit_desc'));

			$slide->alt = $slide->title;

			$slide->target = $slide->params->get('link_target','');

			if(empty($slide->target)) $slide->target = modDJImageSliderHelper::getSlideTarget($slide->link);

		}

		

		return $slides;

    }

	

	static function getSlideLink(&$slide) {

		$link = '';

		$db = JFactory::getDBO();

		$app = JFactory::getApplication();

		

		switch($slide->params->get('link_type', '')) {

			case 'menu':

				if ($menuid = $slide->params->get('link_menu',0)) {

					

					$menu = $app->getMenu();

					$menuitem = $menu->getItem($menuid);

					if($menuitem) switch($menuitem->type) {

						case 'component': 

							$link = JRoute::_($menuitem->link.'&Itemid='.$menuid);

							break;

						case 'url':

						case 'alias':

							$link = JRoute::_($menuitem->link);

							break;

					}	

				}

				break;

			case 'url':

				if($itemurl = $slide->params->get('link_url',0)) {

					$link = JRoute::_($itemurl);

				}

				break;

			case 'article':

				if ($artid = $slide->params->get('id',$slide->params->get('link_article',0))) {

					jimport('joomla.application.component.model');

					require_once(JPATH_BASE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');

					JModelLegacy::addIncludePath(JPATH_BASE.DS.'components'.DS.'com_content'.DS.'models');

					$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request'=>true));

					$model->setState('params', $app->getParams());

					$model->setState('filter.article_id', $artid);
					$model->setState('filter.article_id.include', true); // Include
					$items = $model->getItems();

					if($items && $item = $items[0]) {

						$item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id;

						$link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid));

						$slide->introtext = $item->introtext;

					}

				}

				break;

		}

		

		return $link;

	}

	

	static function getSlideDescription($slide, $limit) {

		$sparams = new JRegistry($slide->params);

		if($sparams->get('link_type','')=='article' && empty($slide->description)){ // if article and no description then get introtext as description

			if(isset($slide->introtext)) $slide->description = $slide->introtext;

		}

		

		$desc = strip_tags($slide->description);

		

		if($limit && $limit - strlen($desc) < 0) {

			// don't cut in the middle of the word unless it's longer than 20 chars
			if($pos = strpos($desc, ' ', $limit)) $limit = ($pos - $limit > 20) ? $limit : $pos;
			// cut text and add dots
			$desc = mb_substr($desc, 0, $limit);
			if(preg_match('/[a-zA-Z0-9]$/', $desc)) $desc.='&hellip;';
			$desc = '<p>'.nl2br($desc).'</p>';

		} else { // no limit or limit greater than description

			$desc = $slide->description;

		}



		return $desc;

	}



	private function truncateDescription($text, $limit) {
	
		$text = preg_replace('/{djmedia\s*(\d*)}/i', '', $text);
	
		$desc = strip_tags($text);
	
		if($limit - strlen($desc) < 0) {
			// don't cut in the middle of the word unless it's longer than 20 chars
			if($pos = strpos($desc, ' ', $limit)) $limit = ($pos - $limit > 20) ? $limit : $pos;
			// cut text and add dots
			$desc = mb_substr($desc, 0, $limit);
			if(preg_match('/[a-zA-Z0-9]$/', $desc)) $desc.='&hellip;';
			$desc = '<p>'.nl2br($desc).'</p>';
		} else { // no limit or limit greater than description
			$desc = $text;
		}
	
		return $desc;
	}

	

	static function getAnimationOptions(&$params) {

		$transition = $params->get('effect');

		$easing = $params->get('effect_type');

		if(!is_numeric($duration = $params->get('duration'))) $duration = 0;

		if(!is_numeric($delay = $params->get('delay'))) $delay = 3000;

		$autoplay = $params->get('autoplay');

		if($params->get('slider_type')==2 && !$duration) {

			$transition = 'Sine';

			$easing = 'easeInOut';

			$duration = 400;

		} else switch($transition){

			case 'Linear':

				$easing = '';

				$transition = 'linear';

				if(!$duration) $duration = 400;

				break;

			case 'Back':

				if(!$easing) $easing = 'easeIn';

				if(!$duration) $duration = 400;

				break;

			case 'Bounce':

				if(!$easing) $easing = 'easeOut';

				if(!$duration) $duration = 800;

				break;

			case 'Elastic':

				if(!$easing) $easing = 'easeOut';

				if(!$duration) $duration = 1000;

				break;

			default: 

				if(!$easing) $easing = 'easeInOut';

				if(!$duration) $duration = 400;

		}

		// add transition duration to delay

		$delay = $delay + $duration;

		$css3transition = $params->get('css3') ? modDJImageSliderHelper::getCSS3Transition($transition, $easing) : '';

		

		if (version_compare(JVERSION, '3.0.0', '<')) { // Joomla!2.5 - Mootools

			if($transition=='ease') $transition = 'Sine';

			$transition = $transition.(!empty($easing) ? '.'.$easing : '');

			$transition = modDJImageSliderHelper::getMooTransition($transition);

		} else { // Joomla!3 - jQuery

			if($transition=='ease') {

				$transition = 'swing';

				$easing = '';

			}

			$transition = $easing.$transition;

		}

		

		$options = json_encode(array('auto' => $autoplay, 'transition' => $transition, 'css3transition' => $css3transition, 'duration' => $duration, 'delay' => $delay));

		

		return $options;

	}

	

	static function getMooTransition($transition) {

		

		$parts = explode('.', $transition);

		

		$easing = '';

		if(isset($parts[1])) {

			switch($parts[1]) {

				case 'easeIn': $easing = ':in'; break;

				case 'easeOut': $easing = ':out'; break;

				default: $easing = ':in:out'; break;

			}

		}

		

		return strtolower($parts[0]).$easing;

		

	}

	

	static function getCSS3Transition($transition, $easing) {

		

		switch($easing) {

			

			case '': return 'linear';

			case 'easeInOut':
				switch($transition) {

					case 'Quad': 	return 'cubic-bezier(0.455, 0.030, 0.515, 0.955)';

					case 'Cubic': 	return 'cubic-bezier(0.645, 0.045, 0.355, 1.000)';

					case 'Quart':	return 'cubic-bezier(0.645, 0.045, 0.355, 1.000)';

					case 'Quint': 	return 'cubic-bezier(0.860, 0.000, 0.070, 1.000)';

					case 'Sine': 	return 'cubic-bezier(0.445, 0.050, 0.550, 0.950)';

					case 'Expo': 	return 'cubic-bezier(1.000, 0.000, 0.000, 1.000)';

					case 'Circ': 	return 'cubic-bezier(0.785, 0.135, 0.150, 0.860)';

					case 'Back': 	return 'cubic-bezier(0.680, -0.550, 0.265, 1.550)';
					default: 		return 'ease-in-out';
				}

			case 'easeOut':

				switch($transition) {

					case 'Quad': 	return 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';

					case 'Cubic': 	return 'cubic-bezier(0.215, 0.610, 0.355, 1.000)';

					case 'Quart':	return 'cubic-bezier(0.165, 0.840, 0.440, 1.000)';

					case 'Quint': 	return 'cubic-bezier(0.230, 1.000, 0.320, 1.000)';

					case 'Sine': 	return 'cubic-bezier(0.390, 0.575, 0.565, 1.000)';

					case 'Expo': 	return 'cubic-bezier(0.190, 1.000, 0.220, 1.000)';

					case 'Circ': 	return 'cubic-bezier(0.075, 0.820, 0.165, 1.000)';

					case 'Back': 	return 'cubic-bezier(0.175, 0.885, 0.320, 1.275)';
					default: 		return 'ease-out';
				}

			case 'easeIn':
				switch($transition) {

					case 'Quad': 	return 'cubic-bezier(0.550, 0.085, 0.680, 0.530)';

					case 'Cubic': 	return 'cubic-bezier(0.550, 0.055, 0.675, 0.190)';

					case 'Quart':	return 'cubic-bezier(0.895, 0.030, 0.685, 0.220)';

					case 'Quint': 	return 'cubic-bezier(0.755, 0.050, 0.855, 0.060)';

					case 'Sine': 	return 'cubic-bezier(0.470, 0.000, 0.745, 0.715)';

					case 'Expo': 	return 'cubic-bezier(0.950, 0.050, 0.795, 0.035)';

					case 'Circ': 	return 'cubic-bezier(0.600, 0.040, 0.980, 0.335)';

					case 'Back': 	return 'cubic-bezier(0.600, -0.280, 0.735, 0.045)';
					default: 		return 'ease-in';
				}
			default: return 'ease';

		}

	}

	

	static function getSlideTarget($link) {

		

		if(preg_match("/^http/",$link) && !preg_match("/^".str_replace(array('/','.','-'), array('\/','\.','\-'),JURI::base())."/",$link)) {

			$target = '_blank';

		} else {

			$target = '_self';

		}

		

		return $target;

	}

	

	static function getNavigation(&$params, &$mid) {

		

		$prev = $params->get('left_arrow');

		$next = $params->get('right_arrow');

		$play = $params->get('play_button');

		$pause = $params->get('pause_button');

		

		$theme = $params->set('theme', 'default');

		

		if($params->get('slider_type')==1) {			

			if(empty($prev) || !file_exists(JPATH_ROOT.DS.$prev)) $prev = 'modules/mod_djimageslider/themes/'.$theme.'/images/up.png';			

			if(empty($next) || !file_exists(JPATH_ROOT.DS.$next)) $next = 'modules/mod_djimageslider/themes/'.$theme.'/images/down.png';

		} else {			

			if(empty($prev) || !file_exists(JPATH_ROOT.DS.$prev)) $prev = 'modules/mod_djimageslider/themes/'.$theme.'/images/prev.png';			

			if(empty($next) || !file_exists(JPATH_ROOT.DS.$next)) $next = 'modules/mod_djimageslider/themes/'.$theme.'/images/next.png';

		}

		if(empty($play) || !file_exists(JPATH_ROOT.DS.$play)) $play = 'modules/mod_djimageslider/themes/'.$theme.'/images/play.png';

		if(empty($pause) || !file_exists(JPATH_ROOT.DS.$pause)) $pause = 'modules/mod_djimageslider/themes/'.$theme.'/images/pause.png';

		

		$navi = (object) array('prev'=>$prev,'next'=>$next,'play'=>$play,'pause'=>$pause);

		

		return $navi;

	}

	

	static function getStyles($params) {

		if(!is_numeric($slide_width = $params->get('image_width'))) $slide_width = 240;

		if(!is_numeric($slide_height = $params->get('image_height'))) $slide_height = 160;

		if(!is_numeric($max = $params->get('max_images'))) $max = 20;

		if(!is_numeric($count = $params->get('visible_images'))) $count = 2;

		if(!is_numeric($spacing = $params->get('space_between_images'))) $spacing = 0;

		if($count<1) $count = 1;

		if($count>$max) $count = $max;

		if(!is_numeric($desc_width = $params->get('desc_width')) || $desc_width > $slide_width) $desc_width = $slide_width;

		if(!is_numeric($desc_bottom = $params->get('desc_bottom'))) $desc_bottom = 0;

		if(!is_numeric($desc_left = $params->get('desc_horizontal'))) $desc_left = 0;

		if(!is_numeric($arrows_top = $params->get('arrows_top'))) $arrows_top = 100;

		if(!is_numeric($arrows_horizontal = $params->get('arrows_horizontal'))) $arrows_horizontal = 5;

		

		switch($params->get('slider_type')){

			case 2:

				$slider_width = $slide_width;

				$slider_height = $slide_height;

				$image_width = 'width: 100%';

				$image_height = 'height: auto';

				$padding_right = 0;

				$padding_bottom = 0;

				break;

			case 1:

				$slider_width = $slide_width;

				$slider_height = $slide_height * $count + $spacing * ($count - 1);

				$image_width = 'width: auto';

				$image_height = 'height: 100%';

				$padding_right = 0;

				$padding_bottom = $spacing;

				break;

			case 0:

			default:

				$slider_width = $slide_width * $count + $spacing * ($count - 1);

				$slider_height = $slide_height;

				$image_width = 'width: 100%';

				$image_height = 'height: auto';

				$padding_right = $spacing;

				$padding_bottom = 0;

				break;

		}

		

		$desc_width = (($desc_width / $slide_width) * 100);

		$desc_left = (($desc_left / $slide_width) * 100);

		$desc_bottom = (($desc_bottom / $slide_height) * 100);

		$arrows_top = (($arrows_top / $slider_height) * 100);	

		

		if($params->get('fit_to')==1) {

			$image_width = 'width: 100%';

			$image_height = 'height: auto';

		} else if($params->get('fit_to')==2) {

			$image_width = 'width: auto';

			$image_height = 'height: 100%';

		}

		

		$style = array();

		$style['slider'] = 'height: '.$slider_height.'px; width: '.$slider_width.'px;';

		if(!$params->get('full_width', 0)) $style['slider'].= ' max-width: '.$slider_width.'px;';

		$style['image'] = $image_width.'; '.$image_height.';';		

		$style['navi'] = 'top: '.$arrows_top.'%; margin: 0 '.$arrows_horizontal.'px;';

		$style['desc'] = 'bottom: '.$desc_bottom.'%; left: '.$desc_left.'%; width: '.$desc_width.'%;';

		if($params->get('direction') == 'rtl') {

			$style['slide'] = 'margin: 0 0 '.$padding_bottom.'px '.$padding_right.'px !important; height: '.$slide_height.'px; width: '.$slide_width.'px;';

		} else {

			$style['slide'] = 'margin: 0 '.$padding_right.'px '.$padding_bottom.'px 0 !important; height: '.$slide_height.'px; width: '.$slide_width.'px;';

			

		}

		

		return $style;

	}



}


Zerion Mini Shell 1.0