896 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			896 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
	class RevSlider extends UniteElementsBaseRev{
 | 
						|
		
 | 
						|
		const VALIDATE_NUMERIC = "numeric";
 | 
						|
		const VALIDATE_EMPTY = "empty";
 | 
						|
		const FORCE_NUMERIC = "force_numeric";
 | 
						|
		
 | 
						|
		private $id;
 | 
						|
		private $title;
 | 
						|
		private $alias;
 | 
						|
		private $arrParams;
 | 
						|
		private $arrSlides = null;
 | 
						|
		
 | 
						|
		public function __construct(){
 | 
						|
			parent::__construct();
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * validate that the slider is inited. if not - throw error
 | 
						|
		 */
 | 
						|
		private function validateInited(){
 | 
						|
			if(empty($this->id))
 | 
						|
				UniteFunctionsRev::throwError("The slider is not inited!");
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * init slider by db data
 | 
						|
		 * 
 | 
						|
		 */
 | 
						|
		public function initByDBData($arrData){
 | 
						|
			
 | 
						|
			$this->id = $arrData["id"];
 | 
						|
			$this->title = $arrData["title"];
 | 
						|
			$this->alias = $arrData["alias"];
 | 
						|
			
 | 
						|
			$params = $arrData["params"];
 | 
						|
			$params = (array)json_decode($params);
 | 
						|
			
 | 
						|
			$this->arrParams = $params;
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * init the slider object by database id
 | 
						|
		 */
 | 
						|
		public function initByID($sliderID){
 | 
						|
			UniteFunctionsRev::validateNumeric($sliderID,"Slider ID");
 | 
						|
			$sliderID = $this->db->escape($sliderID);
 | 
						|
			
 | 
						|
			try{
 | 
						|
				$sliderData = $this->db->fetchSingle(GlobalsRevSlider::$table_sliders,"id=$sliderID");								
 | 
						|
			}catch(Exception $e){
 | 
						|
				UniteFunctionsRev::throwError("Slider with ID: $sliderID Not Found");
 | 
						|
			}
 | 
						|
			
 | 
						|
			$this->initByDBData($sliderData);
 | 
						|
		}
 | 
						|
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * init slider by alias
 | 
						|
		 */
 | 
						|
		public function initByAlias($alias){
 | 
						|
			$alias = $this->db->escape($alias);
 | 
						|
 | 
						|
			try{
 | 
						|
				$where = "alias='$alias'";
 | 
						|
				
 | 
						|
				$sliderData = $this->db->fetchSingle(GlobalsRevSlider::$table_sliders,$where);
 | 
						|
				
 | 
						|
			}catch(Exception $e){
 | 
						|
				$arrAliases = $this->getAllSliderAliases();
 | 
						|
				$strAliases = "";
 | 
						|
				if(!empty($arrAliases))
 | 
						|
					$strAliases = "'".implode("' or '", $arrAliases)."'";
 | 
						|
					
 | 
						|
				$errorMessage = "Slider with alias <strong>$alias</strong> not found.";
 | 
						|
				if(!empty($strAliases))
 | 
						|
					$errorMessage .= " <br><br>Maybe you mean: ".$strAliases;
 | 
						|
					
 | 
						|
				UniteFunctionsRev::throwError($errorMessage);
 | 
						|
			}
 | 
						|
			
 | 
						|
			$this->initByDBData($sliderData);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * init by id or alias
 | 
						|
		 */
 | 
						|
		public function initByMixed($mixed){
 | 
						|
			if(is_numeric($mixed))
 | 
						|
				$this->initByID($mixed);
 | 
						|
			else
 | 
						|
				$this->initByAlias($mixed);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get data functions
 | 
						|
		 */
 | 
						|
		public function getTitle(){
 | 
						|
			return($this->title);
 | 
						|
		}
 | 
						|
		
 | 
						|
		public function getID(){
 | 
						|
			return($this->id);
 | 
						|
		}
 | 
						|
		
 | 
						|
		public function getParams(){
 | 
						|
			return($this->arrParams);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * set slider params
 | 
						|
		 */
 | 
						|
		public function setParams($arrParams){
 | 
						|
			$this->arrParams = $arrParams;
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get parameter from params array. if no default, then the param is a must!
 | 
						|
		 */
 | 
						|
		function getParam($name,$default=null,$validateType = null,$title=""){
 | 
						|
			
 | 
						|
			if($default === null){
 | 
						|
				if(!array_key_exists($name, $this->arrParams))
 | 
						|
					UniteFunctionsRev::throwError("The param <b>$name</b> not found in slider params.");
 | 
						|
				
 | 
						|
				$default = "";
 | 
						|
			}
 | 
						|
			
 | 
						|
			$value = UniteFunctionsRev::getVal($this->arrParams, $name,$default);
 | 
						|
						
 | 
						|
			//validation:
 | 
						|
			switch($validateType){
 | 
						|
				case self::VALIDATE_NUMERIC:
 | 
						|
				case self::VALIDATE_EMPTY:
 | 
						|
					$paramTitle = !empty($title)?$title:$name;
 | 
						|
					if($value !== "0" && $value !== 0 && empty($value))
 | 
						|
						UniteFunctionsRev::throwError("The param <strong>$paramTitle</strong> should not be empty.");
 | 
						|
				break;
 | 
						|
				case self::VALIDATE_NUMERIC:
 | 
						|
					$paramTitle = !empty($title)?$title:$name;
 | 
						|
					if(!is_numeric($value))
 | 
						|
						UniteFunctionsRev::throwError("The param <strong>$paramTitle</strong> should be numeric. Now it's: $value");
 | 
						|
				break;
 | 
						|
				case self::FORCE_NUMERIC:
 | 
						|
					if(!is_numeric($value)){
 | 
						|
						$value = 0;
 | 
						|
						if(!empty($default))
 | 
						|
							$value = $default;
 | 
						|
					}
 | 
						|
				break; 
 | 
						|
			}
 | 
						|
			
 | 
						|
			return $value;
 | 
						|
		}
 | 
						|
		
 | 
						|
		public function getAlias(){
 | 
						|
			return($this->alias);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * get combination of title (alias)
 | 
						|
		 */
 | 
						|
		public function getShowTitle(){
 | 
						|
			$showTitle = $this->title." ($this->alias)";
 | 
						|
			return($showTitle);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get slider shortcode
 | 
						|
		 */
 | 
						|
		public function getShortcode(){
 | 
						|
			$shortCode = "[rev_slider {$this->alias}]";
 | 
						|
			return($shortCode);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * check if alias exists in DB
 | 
						|
		 */
 | 
						|
		private function isAliasExistsInDB($alias){
 | 
						|
			$alias = $this->db->escape($alias);
 | 
						|
			
 | 
						|
			$where = "alias='$alias'";
 | 
						|
			if(!empty($this->id))
 | 
						|
				$where .= " and id != '{$this->id}'";
 | 
						|
				
 | 
						|
			$response = $this->db->fetch(GlobalsRevSlider::$table_sliders,$where);
 | 
						|
			return(!empty($response));
 | 
						|
			
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * validate settings for add
 | 
						|
		 */
 | 
						|
		private function validateInputSettings($title,$alias,$params){
 | 
						|
			UniteFunctionsRev::validateNotEmpty($title,"title");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($alias,"alias");
 | 
						|
			
 | 
						|
			if($this->isAliasExistsInDB($alias))
 | 
						|
				UniteFunctionsRev::throwError("Some other slider with alias '$alias' already exists");
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * create / update slider from options
 | 
						|
		 */
 | 
						|
		private function createUpdateSliderFromOptions($options,$sliderID = null){
 | 
						|
			
 | 
						|
			$arrMain = UniteFunctionsRev::getVal($options, "main");
 | 
						|
			$params = UniteFunctionsRev::getVal($options, "params");
 | 
						|
			
 | 
						|
			//trim all input data
 | 
						|
			$arrMain = UniteFunctionsRev::trimArrayItems($arrMain);
 | 
						|
			$params = UniteFunctionsRev::trimArrayItems($params);
 | 
						|
			
 | 
						|
			$params = array_merge($arrMain,$params);
 | 
						|
			
 | 
						|
			$title = UniteFunctionsRev::getVal($arrMain, "title");
 | 
						|
			$alias = UniteFunctionsRev::getVal($arrMain, "alias");
 | 
						|
			
 | 
						|
			if(!empty($sliderID))
 | 
						|
				$this->initByID($sliderID);
 | 
						|
				
 | 
						|
			$this->validateInputSettings($title, $alias, $params);
 | 
						|
			
 | 
						|
			$jsonParams = json_encode($params);
 | 
						|
			
 | 
						|
			//insert slider to database
 | 
						|
			$arrData = array();
 | 
						|
			$arrData["title"] = $title;
 | 
						|
			$arrData["alias"] = $alias;
 | 
						|
			$arrData["params"] = $jsonParams;
 | 
						|
			
 | 
						|
			if(empty($sliderID)){	//create slider	
 | 
						|
				$sliderID = $this->db->insert(GlobalsRevSlider::$table_sliders,$arrData);
 | 
						|
				return($sliderID);
 | 
						|
				
 | 
						|
			}else{	//update slider
 | 
						|
				$this->initByID($sliderID);
 | 
						|
				
 | 
						|
				$sliderID = $this->db->update(GlobalsRevSlider::$table_sliders,$arrData,array("id"=>$sliderID));				
 | 
						|
			}
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * delete slider from datatase
 | 
						|
		 */
 | 
						|
		private function deleteSlider(){			
 | 
						|
			
 | 
						|
			$this->validateInited();
 | 
						|
			
 | 
						|
			//delete slider
 | 
						|
			$this->db->delete(GlobalsRevSlider::$table_sliders,"id=".$this->id);
 | 
						|
			
 | 
						|
			//delete slides
 | 
						|
			$this->deleteAllSlides();
 | 
						|
		}
 | 
						|
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * delete all slides
 | 
						|
		 */
 | 
						|
		private function deleteAllSlides(){
 | 
						|
			$this->validateInited();
 | 
						|
			
 | 
						|
			$this->db->delete(GlobalsRevSlider::$table_slides,"slider_id=".$this->id);			
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * duplicate slider in datatase
 | 
						|
		 */
 | 
						|
		private function duplicateSlider(){			
 | 
						|
			
 | 
						|
			$this->validateInited();
 | 
						|
			
 | 
						|
			//get slider number:
 | 
						|
			$response = $this->db->fetch(GlobalsRevSlider::$table_sliders);
 | 
						|
			$numSliders = count($response);
 | 
						|
			$newSliderSerial = $numSliders+1;
 | 
						|
			
 | 
						|
			$newSliderTitle = "Slider".$newSliderSerial;
 | 
						|
			$newSliderAlias = "slider".$newSliderSerial;
 | 
						|
			
 | 
						|
			//insert a new slider
 | 
						|
			$sqlSelect = "select ".GlobalsRevSlider::FIELDS_SLIDER." from ".GlobalsRevSlider::$table_sliders." where id={$this->id}";
 | 
						|
			$sqlInsert = "insert into ".GlobalsRevSlider::$table_sliders." (".GlobalsRevSlider::FIELDS_SLIDER.") ($sqlSelect)";
 | 
						|
						
 | 
						|
			$this->db->runSql($sqlInsert);
 | 
						|
			$lastID = $this->db->getLastInsertID();
 | 
						|
			UniteFunctionsRev::validateNotEmpty($lastID);
 | 
						|
			
 | 
						|
			//update the new slider with the title and the alias values
 | 
						|
			$arrUpdate = array();
 | 
						|
			$arrUpdate["title"] = $newSliderTitle;
 | 
						|
			$arrUpdate["alias"] = $newSliderAlias;
 | 
						|
			$this->db->update(GlobalsRevSlider::$table_sliders, $arrUpdate, array("id"=>$lastID));
 | 
						|
			
 | 
						|
			//duplicate slides
 | 
						|
			$fields_slide = GlobalsRevSlider::FIELDS_SLIDE;
 | 
						|
			$fields_slide = str_replace("slider_id", $lastID, $fields_slide);
 | 
						|
			
 | 
						|
			$sqlSelect = "select ".$fields_slide." from ".GlobalsRevSlider::$table_slides." where slider_id={$this->id}";
 | 
						|
			$sqlInsert = "insert into ".GlobalsRevSlider::$table_slides." (".GlobalsRevSlider::FIELDS_SLIDE.") ($sqlSelect)";
 | 
						|
			
 | 
						|
			$this->db->runSql($sqlInsert);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * duplicate slide
 | 
						|
		 */
 | 
						|
		private function duplicateSlide($slideID){
 | 
						|
			$slide = new RevSlide();
 | 
						|
			$slide->initByID($slideID);
 | 
						|
			$order = $slide->getOrder();
 | 
						|
			$slides = $this->getSlides();
 | 
						|
			$newOrder = $order+1;
 | 
						|
			$this->shiftOrder($newOrder);
 | 
						|
			
 | 
						|
			//do duplication
 | 
						|
			$sqlSelect = "select ".GlobalsRevSlider::FIELDS_SLIDE." from ".GlobalsRevSlider::$table_slides." where id={$slideID}";
 | 
						|
			$sqlInsert = "insert into ".GlobalsRevSlider::$table_slides." (".GlobalsRevSlider::FIELDS_SLIDE.") ($sqlSelect)";
 | 
						|
			
 | 
						|
			$this->db->runSql($sqlInsert);
 | 
						|
			$lastID = $this->db->getLastInsertID();
 | 
						|
			UniteFunctionsRev::validateNotEmpty($lastID);
 | 
						|
			
 | 
						|
			//update order
 | 
						|
			$arrUpdate = array("slide_order"=>$newOrder);
 | 
						|
			
 | 
						|
			$this->db->update(GlobalsRevSlider::$table_slides,$arrUpdate, array("id"=>$lastID));
 | 
						|
			
 | 
						|
			return($lastID);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * copy / move slide
 | 
						|
		 */		
 | 
						|
		private function copyMoveSlide($slideID,$targetSliderID,$operation){
 | 
						|
			
 | 
						|
			if($operation == "move"){
 | 
						|
				
 | 
						|
				$targetSlider = new RevSlider();
 | 
						|
				$targetSlider->initByID($targetSliderID);
 | 
						|
				$maxOrder = $targetSlider->getMaxOrder();
 | 
						|
				$newOrder = $maxOrder+1;
 | 
						|
				$arrUpdate = array("slider_id"=>$targetSliderID,"slide_order"=>$newOrder);	
 | 
						|
				
 | 
						|
				$this->db->update(GlobalsRevSlider::$table_slides,$arrUpdate,array("id"=>$slideID));
 | 
						|
				
 | 
						|
			}else{	//in place of copy
 | 
						|
				$this->duplicateSlide($slideID);
 | 
						|
				$this->copyMoveSlide($slideID,$targetSliderID,"move");
 | 
						|
			}
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * shift order of the slides from specific order
 | 
						|
		 */
 | 
						|
		private function shiftOrder($fromOrder){
 | 
						|
			
 | 
						|
			$where = " slider_id={$this->id} and slide_order >= $fromOrder";
 | 
						|
			$sql = "update ".GlobalsRevSlider::$table_slides." set slide_order=(slide_order+1) where $where";
 | 
						|
			$this->db->runSql($sql);
 | 
						|
			
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * create slider in database from options
 | 
						|
		 */
 | 
						|
		public function createSliderFromOptions($options){
 | 
						|
			$sliderID = $this->createUpdateSliderFromOptions($options);
 | 
						|
			return($sliderID);			
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * export slider from data, output a file for download
 | 
						|
		 */
 | 
						|
		public function exportSlider(){
 | 
						|
			$this->validateInited();
 | 
						|
			
 | 
						|
			$sliderParams = $this->getParamsForExport();
 | 
						|
			$arrSlides = $this->getSlidesForExport();
 | 
						|
			
 | 
						|
			$arrSliderExport = array("params"=>$sliderParams,"slides"=>$arrSlides);
 | 
						|
			
 | 
						|
			$strExport = serialize($arrSliderExport);
 | 
						|
			
 | 
						|
			if(!empty($this->alias))
 | 
						|
				$filename = $this->alias.".txt";
 | 
						|
			else
 | 
						|
				$filename = "slider_export.txt";
 | 
						|
			
 | 
						|
			UniteFunctionsRev::downloadFile($strExport,$filename);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * import slider from multipart form
 | 
						|
		 */
 | 
						|
		public function importSliderFromPost(){
 | 
						|
			
 | 
						|
			try{
 | 
						|
 					
 | 
						|
					$sliderID = UniteFunctionsRev::getPostVariable("sliderid");
 | 
						|
					$sliderExists = !empty($sliderID);
 | 
						|
					
 | 
						|
					if($sliderExists)
 | 
						|
						$this->initByID($sliderID);
 | 
						|
						
 | 
						|
					$filepath = $_FILES["import_file"]["tmp_name"];
 | 
						|
					
 | 
						|
					if(file_exists($filepath) == false)
 | 
						|
						UniteFunctionsRev::throwError("Import file not found!!!");
 | 
						|
						
 | 
						|
					//get content array
 | 
						|
					$content = @file_get_contents($filepath);			
 | 
						|
					$arrSlider = @unserialize($content);
 | 
						|
					if(empty($arrSlider))
 | 
						|
						 UniteFunctionsRev::throwError("Wrong export slider file format!");
 | 
						|
					
 | 
						|
					
 | 
						|
					//update slider params
 | 
						|
					
 | 
						|
					$sliderParams = $arrSlider["params"];
 | 
						|
					
 | 
						|
					if($sliderExists){					
 | 
						|
						$sliderParams["title"] = $this->arrParams["title"];
 | 
						|
						$sliderParams["alias"] = $this->arrParams["alias"];
 | 
						|
						$sliderParams["shortcode"] = $this->arrParams["shortcode"];
 | 
						|
					}
 | 
						|
					
 | 
						|
					if(isset($sliderParams["background_image"]))
 | 
						|
						$sliderParams["background_image"] = UniteFunctionsWPRev::getImageUrlFromPath($sliderParams["background_image"]);
 | 
						|
					
 | 
						|
					$json_params = json_encode($sliderParams);
 | 
						|
										
 | 
						|
					//update slider or craete new
 | 
						|
					if($sliderExists){
 | 
						|
						$arrUpdate = array("params"=>$json_params);	
 | 
						|
						$this->db->update(GlobalsRevSlider::$table_sliders,$arrUpdate,array("id"=>$sliderID));
 | 
						|
					}
 | 
						|
					else{	//new slider
 | 
						|
						$arrInsert = array();
 | 
						|
						$arrInsert["params"] = $json_params;
 | 
						|
						$arrInsert["title"] = UniteFunctionsRev::getVal($sliderParams, "title","Slider1");
 | 
						|
						$arrInsert["alias"] = UniteFunctionsRev::getVal($sliderParams, "alias","slider1");	
 | 
						|
						$sliderID = $this->db->insert(GlobalsRevSlider::$table_sliders,$arrInsert);
 | 
						|
					}
 | 
						|
					
 | 
						|
					//-------- Slides Handle -----------
 | 
						|
					
 | 
						|
					//delete current slides
 | 
						|
					if($sliderExists)
 | 
						|
						$this->deleteAllSlides();
 | 
						|
					
 | 
						|
					//create all slides
 | 
						|
					$arrSlides = $arrSlider["slides"];
 | 
						|
					foreach($arrSlides as $slide){
 | 
						|
						
 | 
						|
						$params = $slide["params"];
 | 
						|
						$layers = $slide["layers"];
 | 
						|
						
 | 
						|
						//convert params images:
 | 
						|
						if(isset($params["image"]))
 | 
						|
							$params["image"] = UniteFunctionsWPRev::getImageUrlFromPath($params["image"]);
 | 
						|
						
 | 
						|
						//convert layers images:
 | 
						|
						foreach($layers as $key=>$layer){					
 | 
						|
							if(isset($layer["image_url"])){
 | 
						|
								$layer["image_url"] = UniteFunctionsWPRev::getImageUrlFromPath($layer["image_url"]);
 | 
						|
								$layers[$key] = $layer;
 | 
						|
							}
 | 
						|
						}
 | 
						|
						
 | 
						|
						//create new slide
 | 
						|
						$arrCreate = array();
 | 
						|
						$arrCreate["slider_id"] = $sliderID;
 | 
						|
						$arrCreate["slide_order"] = $slide["slide_order"];				
 | 
						|
						$arrCreate["layers"] = json_encode($layers);
 | 
						|
						$arrCreate["params"] = json_encode($params);
 | 
						|
						
 | 
						|
						$this->db->insert(GlobalsRevSlider::$table_slides,$arrCreate);									
 | 
						|
					}
 | 
						|
 | 
						|
			}catch(Exception $e){
 | 
						|
				$errorMessage = $e->getMessage();
 | 
						|
				return(array("success"=>false,"error"=>$errorMessage,"sliderID"=>$sliderID));
 | 
						|
			}
 | 
						|
			
 | 
						|
			return(array("success"=>true,"sliderID"=>$sliderID));
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * update slider from options
 | 
						|
		 */
 | 
						|
		public function updateSliderFromOptions($options){
 | 
						|
			
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($options, "sliderid");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Slider ID");
 | 
						|
			
 | 
						|
			$this->createUpdateSliderFromOptions($options,$sliderID);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * delete slider from input data
 | 
						|
		 */
 | 
						|
		public function deleteSliderFromData($data){
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($data, "sliderid");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Slider ID");
 | 
						|
			$this->initByID($sliderID);
 | 
						|
			$this->deleteSlider();
 | 
						|
		}
 | 
						|
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * delete slider from input data
 | 
						|
		 */
 | 
						|
		public function duplicateSliderFromData($data){
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($data, "sliderid");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Slider ID");
 | 
						|
			$this->initByID($sliderID);
 | 
						|
			$this->duplicateSlider();
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * duplicate slide from input data
 | 
						|
		 */
 | 
						|
		public function duplicateSlideFromData($data){
 | 
						|
			
 | 
						|
			//init the slider
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($data, "sliderID");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Slider ID");
 | 
						|
			$this->initByID($sliderID);
 | 
						|
			
 | 
						|
			//get the slide id
 | 
						|
			$slideID = UniteFunctionsRev::getVal($data, "slideID");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($slideID,"Slide ID");
 | 
						|
			$this->duplicateSlide($slideID);
 | 
						|
			
 | 
						|
			return($sliderID);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * copy / move slide from data
 | 
						|
		 */
 | 
						|
		public function copyMoveSlideFromData($data){
 | 
						|
			
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($data, "sliderID");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Slider ID");
 | 
						|
			$this->initByID($sliderID);
 | 
						|
 | 
						|
			$targetSliderID = UniteFunctionsRev::getVal($data, "targetSliderID");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Target Slider ID");
 | 
						|
			$this->initByID($sliderID);
 | 
						|
			
 | 
						|
			if($targetSliderID == $sliderID)
 | 
						|
				UniteFunctionsRev::throwError("The target slider can't be equal to the source slider");
 | 
						|
			
 | 
						|
			$slideID = UniteFunctionsRev::getVal($data, "slideID");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($slideID,"Slide ID");
 | 
						|
			
 | 
						|
			$operation = UniteFunctionsRev::getVal($data, "operation");
 | 
						|
			
 | 
						|
			$this->copyMoveSlide($slideID,$targetSliderID,$operation);
 | 
						|
			
 | 
						|
			return($sliderID);
 | 
						|
		}
 | 
						|
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * create a slide from input data
 | 
						|
		 */
 | 
						|
		public function createSlideFromData($data,$returnSlideID = false){
 | 
						|
			
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($data, "sliderid");
 | 
						|
			$obj = UniteFunctionsRev::getVal($data, "obj");
 | 
						|
			
 | 
						|
			UniteFunctionsRev::validateNotEmpty($sliderID,"Slider ID");
 | 
						|
			$this->initByID($sliderID);
 | 
						|
			
 | 
						|
			if(is_array($obj)){	//multiple
 | 
						|
				foreach($obj as $item){
 | 
						|
					$slide = new RevSlide();
 | 
						|
					$slideID = $slide->createSlide($sliderID, $item);
 | 
						|
				}
 | 
						|
				
 | 
						|
				return(count($obj));
 | 
						|
				
 | 
						|
			}else{	//signle
 | 
						|
				$urlImage = $obj;
 | 
						|
				$slide = new RevSlide();
 | 
						|
				$slideID = $slide->createSlide($sliderID, $urlImage);
 | 
						|
				if($returnSlideID == true)
 | 
						|
					return($slideID);
 | 
						|
				else 
 | 
						|
					return(1);	//num slides -1 slide created
 | 
						|
			}
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * update slides order from data
 | 
						|
		 */
 | 
						|
		public function updateSlidesOrderFromData($data){
 | 
						|
			$sliderID = UniteFunctionsRev::getVal($data, "sliderID");
 | 
						|
			$arrIDs = UniteFunctionsRev::getVal($data, "arrIDs");
 | 
						|
			UniteFunctionsRev::validateNotEmpty($arrIDs,"slides");
 | 
						|
			
 | 
						|
			$this->initByID($sliderID);
 | 
						|
			
 | 
						|
			foreach($arrIDs as $index=>$slideID){
 | 
						|
				$order = $index+1;
 | 
						|
				$arrUpdate = array("slide_order"=>$order);
 | 
						|
				$where = array("id"=>$slideID);
 | 
						|
				$this->db->update(GlobalsRevSlider::$table_slides,$arrUpdate,$where);
 | 
						|
			}
 | 
						|
			
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get the "main" and "settings" arrays, for dealing with the settings.
 | 
						|
		 */
 | 
						|
		public function getSettingsFields(){
 | 
						|
			$this->validateInited();
 | 
						|
			
 | 
						|
			$arrMain = array();
 | 
						|
			$arrMain["title"] = $this->title;
 | 
						|
			$arrMain["alias"] = $this->alias;
 | 
						|
			
 | 
						|
			$arrRespose = array("main"=>$arrMain,
 | 
						|
								"params"=>$this->arrParams);
 | 
						|
			
 | 
						|
			return($arrRespose);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get slides of the current slider
 | 
						|
		 */
 | 
						|
		public function getSlides($publishedOnly = false){
 | 
						|
			$this->validateInited();
 | 
						|
			
 | 
						|
			$arrSlides = array();
 | 
						|
			$arrSlideRecords = $this->db->fetch(GlobalsRevSlider::$table_slides,"slider_id=".$this->id,"slide_order");
 | 
						|
			
 | 
						|
			foreach ($arrSlideRecords as $record){
 | 
						|
				$slide = new RevSlide();
 | 
						|
				$slide->initByData($record);
 | 
						|
				
 | 
						|
				if($publishedOnly == true){					
 | 
						|
					$state = $slide->getParam("state","published");
 | 
						|
					if($state == "unpublished")
 | 
						|
						continue;
 | 
						|
				}
 | 
						|
				
 | 
						|
				$arrSlides[] = $slide;
 | 
						|
			}
 | 
						|
			
 | 
						|
			$this->arrSlides = $arrSlides;
 | 
						|
			
 | 
						|
			return($arrSlides);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get array of slide names
 | 
						|
		 */
 | 
						|
		public function getArrSlideNames(){
 | 
						|
			if(empty($this->arrSlides))
 | 
						|
				$this->getSlides();
 | 
						|
			
 | 
						|
			$arrSlideNames = array();
 | 
						|
			
 | 
						|
			foreach($this->arrSlides as $number=>$slide){
 | 
						|
				$slideID = $slide->getID();
 | 
						|
				$filename = $slide->getImageFilename();
 | 
						|
				$slideName = "Slide ".($number+1);
 | 
						|
				if(!empty($filename))
 | 
						|
					$slideName .= " ($filename)";
 | 
						|
					
 | 
						|
				$arrSlideNames[$slideID] = $slideName;
 | 
						|
			}
 | 
						|
			return($arrSlideNames);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get array of slides numbers by id's
 | 
						|
		 */
 | 
						|
		public function getSlidesNumbersByIDs($publishedOnly = false){
 | 
						|
			
 | 
						|
			if(empty($this->arrSlides))
 | 
						|
				$this->getSlides($publishedOnly);
 | 
						|
				
 | 
						|
			$arrSlideNumbers = array();
 | 
						|
			
 | 
						|
			foreach($this->arrSlides as $number=>$slide){
 | 
						|
				$slideID = $slide->getID();
 | 
						|
				$arrSlideNumbers[$slideID] = ($number+1);				
 | 
						|
			}
 | 
						|
			return($arrSlideNumbers);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get slider params for export slider
 | 
						|
		 */
 | 
						|
		private function getParamsForExport(){
 | 
						|
			$exportParams = $this->arrParams;
 | 
						|
			
 | 
						|
			//modify background image
 | 
						|
			$urlImage = UniteFunctionsRev::getVal($exportParams, "background_image");
 | 
						|
			if(!empty($urlImage))
 | 
						|
				$exportParams["background_image"] = $urlImage;
 | 
						|
			
 | 
						|
			return($exportParams);
 | 
						|
		}
 | 
						|
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get slides for export
 | 
						|
		 */
 | 
						|
		private function getSlidesForExport(){
 | 
						|
			$arrSlides = $this->getSlides();
 | 
						|
			$arrSlidesExport = array();
 | 
						|
			foreach($arrSlides as $slide){
 | 
						|
				$slideNew = array();
 | 
						|
				$slideNew["params"] = $slide->getParamsForExport();
 | 
						|
				$slideNew["slide_order"] = $slide->getOrder();
 | 
						|
				$slideNew["layers"] = $slide->getLayersForExport();
 | 
						|
				$arrSlidesExport[] = $slideNew;
 | 
						|
			}
 | 
						|
			
 | 
						|
			return($arrSlidesExport);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get slides number
 | 
						|
		 */
 | 
						|
		public function getNumSlides($publishedOnly = false){
 | 
						|
			if($this->arrSlides == null)
 | 
						|
				$this->getSlides($publishedOnly);
 | 
						|
			
 | 
						|
			$numSlides = count($this->arrSlides);
 | 
						|
			return($numSlides);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get sliders array - function don't belong to the object!
 | 
						|
		 */
 | 
						|
		public function getArrSliders(){
 | 
						|
			$where = "";
 | 
						|
			
 | 
						|
			$response = $this->db->fetch(GlobalsRevSlider::$table_sliders,$where,"id");
 | 
						|
			
 | 
						|
			$arrSliders = array();
 | 
						|
			foreach($response as $arrData){
 | 
						|
				$slider = new RevSlider();
 | 
						|
				$slider->initByDBData($arrData);
 | 
						|
				$arrSliders[] = $slider;
 | 
						|
			}
 | 
						|
			
 | 
						|
			return($arrSliders);
 | 
						|
		}
 | 
						|
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get aliasees array
 | 
						|
		 */
 | 
						|
		public function getAllSliderAliases(){
 | 
						|
			$where = "";
 | 
						|
			
 | 
						|
			$response = $this->db->fetch(GlobalsRevSlider::$table_sliders,$where,"id");
 | 
						|
			
 | 
						|
			$arrAliases = array();
 | 
						|
			foreach($response as $arrSlider){
 | 
						|
				$arrAliases[] = $arrSlider["alias"];
 | 
						|
			}
 | 
						|
			
 | 
						|
			return($arrAliases);
 | 
						|
		}		
 | 
						|
		
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get array of slider id -> title
 | 
						|
		 */		
 | 
						|
		public function getArrSlidersShort($exceptID = null){
 | 
						|
			$arrSliders = $this->getArrSliders();
 | 
						|
			$arrShort = array();
 | 
						|
			foreach($arrSliders as $slider){
 | 
						|
				$id = $slider->getID();
 | 
						|
				if(!empty($exceptID) && $exceptID == $id)
 | 
						|
					continue;
 | 
						|
					
 | 
						|
				$title = $slider->getTitle();
 | 
						|
				$arrShort[$id] = $title;
 | 
						|
			}
 | 
						|
			return($arrShort);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get max order
 | 
						|
		 */
 | 
						|
		public function getMaxOrder(){
 | 
						|
			$this->validateInited();
 | 
						|
			$maxOrder = 0;
 | 
						|
			$arrSlideRecords = $this->db->fetch(GlobalsRevSlider::$table_slides,"slider_id=".$this->id,"slide_order desc","","limit 1");
 | 
						|
			if(empty($arrSlideRecords))
 | 
						|
				return($maxOrder);
 | 
						|
			$maxOrder = $arrSlideRecords[0]["slide_order"];
 | 
						|
			
 | 
						|
			return($maxOrder);
 | 
						|
		}
 | 
						|
		
 | 
						|
		/**
 | 
						|
		 * 
 | 
						|
		 * get setting - start with slide
 | 
						|
		 */
 | 
						|
		public function getStartWithSlideSetting(){
 | 
						|
			
 | 
						|
			$numSlides = $this->getNumSlides();
 | 
						|
			
 | 
						|
			$startWithSlide = $this->getParam("start_with_slide","1");
 | 
						|
			if(is_numeric($startWithSlide)){
 | 
						|
				$startWithSlide = (int)$startWithSlide - 1;
 | 
						|
				if($startWithSlide < 0)
 | 
						|
					$startWithSlide = 0;
 | 
						|
					
 | 
						|
				if($startWithSlide >= $numSlides)
 | 
						|
					$startWithSlide = 0;
 | 
						|
				
 | 
						|
			}else
 | 
						|
				$startWithSlide = 0;
 | 
						|
			
 | 
						|
			return($startWithSlide);
 | 
						|
		}
 | 
						|
		
 | 
						|
		
 | 
						|
	}
 | 
						|
 | 
						|
?>
 |