Uname: Linux webm005.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: 6036 (villadal)
Group: 100 (users)
Disabled functions: NONE
Safe mode: On[ PHPinfo ]
//home/villadal/www/old/wp-content/plugins/revslider/includes      ( Reset | Go to )
File Name: slider.class.php
Edit
<?php
/**
 * @author    ThemePunch <info@themepunch.com>
 * @link      http://www.themepunch.com/
 * @copyright 2015 ThemePunch
 */

if( !defined'ABSPATH') ) exit();

class 
RevSliderSlider extends RevSliderElementsBase{

    const 
DEFAULT_POST_SORTBY "ID";
    const 
DEFAULT_POST_SORTDIR "DESC";
    
    const 
VALIDATE_NUMERIC "numeric";
    const 
VALIDATE_EMPTY "empty";
    const 
FORCE_NUMERIC "force_numeric";
    
    const 
SLIDER_TYPE_GALLERY "gallery";
    const 
SLIDER_TYPE_POSTS "posts";
    const 
SLIDER_TYPE_TEMPLATE "template";
    const 
SLIDER_TYPE_ALL "all";
    
    private 
$slider_version 5;
    private 
$id;
    private 
$title;
    private 
$alias;
    private 
$arrParams;
    private 
$settings;
    private 
$arrSlides = array();
    
    public function 
__construct(){
        
parent::__construct();
    }
    
    
    
/**
     * 
     * return if the slider is inited or not
     */
    
public function isInited(){
        if(!empty(
$this->id))
            return(
true);
            
        return(
false);
    }
    
    
    
/**
     * 
     * validate that the slider is inited. if not - throw error
     */
    
private function validateInited(){
        if(empty(
$this->id))
            
RevSliderFunctions::throwError("The slider is not initialized!");
    }
    
    
/**
     * init slider by db data
     */
    
public function initByDBData($arrData){
        
        
$this->id $arrData["id"];
        
$this->title $arrData["title"];
        
$this->alias $arrData["alias"];
        
        
$settings $arrData["settings"];
        
$settings = (array)json_decode($settings);
        
        
$this->settings $settings;
        
        
$params $arrData["params"];
        
$params = (array)json_decode($params);
        
$params RevSliderBase::translate_settings_to_v5($params);
        
        
$this->arrParams $params;
    }
    
    
    
/**
     * 
     * init the slider object by database id
     */
    
public function initByID($sliderID){
        
RevSliderFunctions::validateNumeric($sliderID,"Slider ID");
        
        try{
            
$sliderData $this->db->fetchSingle(RevSliderGlobals::$table_sliders$this->db->prepare("id = %s", array($sliderID)));
        }catch(
Exception $e){
            
$message $e->getMessage();
            echo 
$message;
            exit;
        }
        
        
$this->initByDBData($sliderData);
    }

    
/**
     * 
     * init slider by alias
     */
    
public function initByAlias($alias){

        try{
            
$where $this->db->prepare("alias = %s  AND `type` != 'template'", array($alias));
            
            
$sliderData $this->db->fetchSingle(RevSliderGlobals::$table_sliders,$where);
            
        }catch(
Exception $e){
            
$arrAliases $this->getAllSliderAliases();
            
$strAliases "";
            
            if(!empty(
$arrAliases) && is_array($arrAliases)){
                
$arrAliases array_slice($arrAliases06); //show 6 other, will be enough
                
                
$strAliases "'".sanitize_text_field(implode("' or '"$arrAliases))."'";
            }
                
            
$errorMessage 'Slider with alias <strong>'.sanitize_text_field(esc_attr($alias)).'</strong> not found.';
            if(!empty(
$strAliases))
                
$errorMessage .= ' <br>Maybe you mean: '.$strAliases;
                
            
RevSliderFunctions::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);
    }
    
    
/*
     * return Slider settings
     * @since: 5.0
     */
    
public function getSettings(){
        return(
$this->settings);
    }
    
    
/*
     * return true if slider is favorite
     * @since: 5.0
     */
    
public function isFavorite(){
        if(!empty(
$this->settings)){
            if(isset(
$this->settings['favorite']) && $this->settings['favorite'] == 'true') return true;
        }
        
        return 
false;
    }
    
    
/**
     * 
     * set slider params
     */
    
public function setParams($arrParams){
        
$this->arrParams $arrParams;
    }
    
    
    
/**
     * set specific slider param
     * @since: 5.1.1
     */
    
public function setParam($param$value){
        
$this->arrParams[$param] = $value;
    }
    
    
    
/**
     * 
     * 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){
            
$default "";
        }
        
        
$value RevSliderFunctions::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 !== && empty($value))
                    
RevSliderFunctions::throwError("The param <strong>$paramTitle</strong> should not be empty.");
            break;
            case 
self::VALIDATE_NUMERIC:
                
$paramTitle = !empty($title)?$title:$name;
                if(!
is_numeric($value))
                    
RevSliderFunctions::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;
        return(
$showTitle);
    }
    
    
/**
     * 
     * get slider shortcode
     */
    
public function getShortcode(){
        
$shortCode '[rev_slider alias="'.$this->alias.'"]';
        return(
$shortCode);
    }
    
    
    
/**
     * 
     * check if alias exists in DB
     */
    
public function isAliasExistsInDB($alias){
        
        
$where $this->db->prepare("alias = %s ", array($alias));
        if(!empty(
$this->id)){
            
            
$where .= $this->db->prepare(" and id != %s  AND `type` != 'template'", array($this->id));
        }
        
        
        
$response $this->db->fetch(RevSliderGlobals::$table_sliders,$where);
        
        return(!empty(
$response));
        
    }
    
    
    
/**
     * 
     * check if alias exists in DB
     */
    
public static function isAliasExists($alias){
        global 
$wpdb;
        
        
$response $wpdb->get_row($wpdb->prepare("SELECT * FROM ".RevSliderGlobals::$table_sliders." WHERE alias = %s AND `type` != 'template'"$alias));
        
        return(!empty(
$response));
    }
    
    
    
/**
     * 
     * validate settings for add
     */
    
private function validateInputSettings($title,$alias,$params){
        
RevSliderFunctions::validateNotEmpty($title,"title");
        
RevSliderFunctions::validateNotEmpty($alias,"alias");
        
        if(
$this->isAliasExistsInDB($alias))
            
RevSliderFunctions::throwError("Some other slider with alias '$alias' already exists");
        
    }
    
    
    
/**
     * set new hero slide id for the Slider
     * @since: 5.0
     */
    
public function setHeroSlide($data){
        
$sliderID RevSliderFunctions::getVal($data"slider_id");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
$this->initByID($sliderID);

        
$new_slide_id RevSliderFunctions::getVal($data"slide_id");
        
RevSliderFunctions::validateNotEmpty($new_slide_id,"Hero Slide ID");
        
        
$this->updateParam(array('hero_active' => intval($new_slide_id)));
        
        return(
$new_slide_id);
    }
    
    
/**
     * 
     * create / update slider from options
     */
    
private function createUpdateSliderFromOptions($options$sliderID null){
        
        
$arrMain RevSliderFunctions::getVal($options"main");
        
$params RevSliderFunctions::getVal($options"params");
        
        
//trim all input data
        
$arrMain RevSliderFunctions::trimArrayItems($arrMain);
        
        
$params RevSliderFunctions::trimArrayItems($params);
        
        
$params array_merge($arrMain,$params);
        
        
$title sanitize_text_field(RevSliderFunctions::getVal($arrMain"title"));
        
$alias sanitize_text_field(RevSliderFunctions::getVal($arrMain"alias"));
        
        
//params css and js check
        
if(!RevSliderFunctionsWP::isAdminUser() && apply_filters('revslider_restrict_role'true)){
            
//dont allow css and javascript from users other than administrator
            
unset($params['custom_css']);
            unset(
$params['custom_javascript']);
        }
        
        if(!empty(
$sliderID)){
            
$this->initByID($sliderID);
            
            if(!
RevSliderFunctionsWP::isAdminUser() && apply_filters('revslider_restrict_role'true)){
                
//check for js and css, add it to $params
                
$params['custom_css'] = $this->getParam('custom_css''');
                
$params['custom_javascript'] = $this->getParam('custom_javascript''');
            }
            
        }
        
        
$this->validateInputSettings($title$alias$params);
        
        
$jsonParams json_encode($params);
        
        
//insert slider to database
        
$arrData = array();
        
$arrData["title"] = $title;
        
$arrData["alias"] = $alias;
        
$arrData["params"] = $jsonParams;
        
$arrData["type"] = '';
        
        if(empty(
$sliderID)){    //create slider    
            
            
$arrData['settings'] = json_encode(array('version' => 5.0));
            
            
$sliderID $this->db->insert(RevSliderGlobals::$table_sliders,$arrData);
            return(
$sliderID);
            
        }else{    
//update slider
            
$this->initByID($sliderID);
            
            
$settings $this->getSettings();
            
$settings['version'] = 5.0;
            
$arrData['settings'] = json_encode($settings);
            
            
$sliderID $this->db->update(RevSliderGlobals::$table_sliders,$arrData,array("id"=>$sliderID));
        }
    }
    
    
    
/**
     * delete slider from datatase
     */
    
public function deleteSlider(){
        
        
$this->validateInited();
        
        
//delete slider
        
$this->db->delete(RevSliderGlobals::$table_sliders$this->db->prepare("id = %s", array($this->id)));
        
        
//delete slides
        
$this->deleteAllSlides();
        
$this->deleteStaticSlide();
    }

    
/**
     * 
     * delete all slides
     */
    
private function deleteAllSlides(){
        
$this->validateInited();
        
        
$this->db->delete(RevSliderGlobals::$table_slides$this->db->prepare("slider_id = %s", array($this->id)));
        
        
do_action('revslider_slider_deleteAllSlides'$this->id);
    }
    

    
/**
     * 
     * delete all slides
     */
    
public function deleteStaticSlide(){
        
$this->validateInited();
        
        
$this->db->delete(RevSliderGlobals::$table_static_slides$this->db->prepare("slider_id = %s", array($this->id)));
    }
    
    
    
/**
     * 
     * get all slide children
     */
    
public function getArrSlideChildren($slideID){
    
        
$this->validateInited();
        
$arrSlides $this->getSlidesFromGallery();
        if(!isset(
$arrSlides[$slideID]))
            
RevSliderFunctions::throwError("Slide with id: $slideID not found in the main slides of the slider. Maybe it's child slide.");
        
        
$slide $arrSlides[$slideID];
        
$arrChildren $slide->getArrChildren();
        
        return(
$arrChildren);
    }
    
    
    
/**
     * 
     * duplicate slider in datatase
     */
    
private function duplicateSlider($title false$prefix false){
        
        
$this->validateInited();
        
        
//insert a new slider
        
$sqlSelect $this->db->prepare("select ".RevSliderGlobals::FIELDS_SLIDER." from ".RevSliderGlobals::$table_sliders." where id = %s", array($this->id));
        
$sqlInsert "insert into ".RevSliderGlobals::$table_sliders." (".RevSliderGlobals::FIELDS_SLIDER.") ($sqlSelect)";
        
        
$this->db->runSql($sqlInsert);
        
$lastID $this->db->getLastInsertID();
        
RevSliderFunctions::validateNotEmpty($lastID);
        
        
        
$params $this->arrParams;
        
        if(
$title === false){
            
//get slider number:
            
$response $this->db->fetch(RevSliderGlobals::$table_sliders);
            
$numSliders count($response);
            
$newSliderSerial $numSliders+1;
            
            
$newSliderTitle "Slider".$newSliderSerial;
            
$newSliderAlias "slider".$newSliderSerial;
        }else{
            if(
$prefix !== false){
                
$newSliderTitle sanitize_text_field($title.' '.$params['title']);
                
$newSliderAlias sanitize_title($title.' '.$params['title']);
            }else{
                
$newSliderTitle sanitize_text_field($title);
                
$newSliderAlias sanitize_title($title);
            }
            
// Check Duplicate Alias
            
$sqlTitle $this->db->fetch(RevSliderGlobals::$table_sliders$this->db->prepare("alias = %s", array($newSliderAlias)));
            if(!empty(
$sqlTitle)){
                
$response $this->db->fetch(RevSliderGlobals::$table_sliders);
                
$numSliders count($response);
                
$newSliderSerial $numSliders+1;
                
$newSliderTitle .= $newSliderSerial;
                
$newSliderAlias .= $newSliderSerial;    
            }
        }
        
        
//update params
        
        
$params["title"] = $newSliderTitle;
        
$params["alias"] = $newSliderAlias;
        
$params["shortcode"] = "[rev_slider alias=\""$newSliderAlias ."\"]";
        
        
//update the new slider with the title and the alias values
        
$arrUpdate = array();
        
$arrUpdate["title"] = $newSliderTitle;
        
$arrUpdate["alias"] = $newSliderAlias;
        
        

        
$jsonParams json_encode($params);
        
$arrUpdate["params"] = $jsonParams;

        
$arrUpdate["type"] = '';//remove the type as we do not want it to be template if it was

        
$this->db->update(RevSliderGlobals::$table_sliders$arrUpdate, array("id"=>$lastID));
        
        
//duplicate Slides
        
$slides $this->db->fetch(RevSliderGlobals::$table_slides$this->db->prepare("slider_id = %s", array($this->id)));
        if(!empty(
$slides)){
            foreach(
$slides as $slide){
                
$slide['slider_id'] = $lastID;
                
$myID $slide['id'];
                unset(
$slide['id']);
                
$last_id $this->db->insert(RevSliderGlobals::$table_slides,$slide);
                
                if(isset(
$myID)){
                    
$slider_map[$myID] = $last_id;
                }
            }
        }
        
        
//duplicate static slide if exists
        
$slide = new RevSlide();
        
$staticID $slide->getStaticSlideID($this->id);
        
$static_id 0;
        if(
$staticID !== false){
            
$record $this->db->fetchSingle(RevSliderGlobals::$table_static_slides$this->db->prepare("id = %s", array($staticID)));
            unset(
$record['id']);
            
$record['slider_id'] = $lastID;
            
            
$static_id $this->db->insert(RevSliderGlobals::$table_static_slides$record);
        }
        
        
        
//update actions
        
$slides $this->db->fetch(RevSliderGlobals::$table_slides$this->db->prepare("slider_id = %s", array($lastID)));
        if(
$static_id 0){
            
$slides_static $this->db->fetch(RevSliderGlobals::$table_static_slides$this->db->prepare("id = %s", array($static_id)));
            
$slides array_merge($slides$slides_static);
        }
        if(!empty(
$slides)){
            foreach(
$slides as $slide){
                
$c_slide = new RevSlide();
                
$c_slide->initByData($slide);
                
                
$layers $c_slide->getLayers();
                
$did_change false;
                foreach(
$layers as $key => $value){
                    if(isset(
$value['layer_action'])){
                        if(isset(
$value['layer_action']->jump_to_slide) && !empty($value['layer_action']->jump_to_slide)){
                            foreach(
$value['layer_action']->jump_to_slide as $jtsk => $jtsval){
                                if(isset(
$slider_map[$jtsval])){
                                    
                                    
$layers[$key]['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval];
                                    
$did_change true;
                                }
                            }
                        }
                    }
                }
                
                if(
$did_change === true){
                    
                    
$arrCreate = array();
                    
$my_layers json_encode($layers);
                    if(empty(
$my_layers))
                        
$my_layers stripslashes(json_encode($layers));
                    
                    
$arrCreate['layers'] = $my_layers;
                    
                    if(
$slide['id'] == $static_id){
                        
$this->db->update(RevSliderGlobals::$table_static_slides,$arrCreate,array("id"=>$static_id));
                    }else{
                        
$this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$slide['id']));
                    }
                    
                }
            }
        }
        
        
//change the javascript api ID to the correct one
        
$c_slider = new RevSliderSlider();
        
$c_slider->initByID($lastID);
        
        
$cus_js $c_slider->getParam('custom_javascript''');
        
        if(
strpos($cus_js'revapi') !== false){
            if(
preg_match_all('/revapi[0-9]*/'$cus_js$results)){
                
                if(isset(
$results[0]) && !empty($results[0])){
                    foreach(
$results[0] as $replace){
                        
$cus_js str_replace($replace'revapi'.$lastID$cus_js);
                    }
                }
                
                
$c_slider->updateParam(array('custom_javascript' => $cus_js));
                
            }
        }
        
        return 
$lastID;
    }
    
    
    
/**
     * duplicate slide
     */
    
public function duplicateSlide($slideID){
        
$slide = new RevSlide();
        
$slide->initByID($slideID);
        
$order $slide->getOrder();
        
$slides $this->getSlidesFromGallery();
        
$newOrder $order+1;
        
$this->shiftOrder($newOrder);
        
        
//do duplication
        
$sqlSelect $this->db->prepare("select ".RevSliderGlobals::FIELDS_SLIDE." from ".RevSliderGlobals::$table_slides." where id = %s", array(intval($slideID)));
        
$sqlInsert "insert into ".RevSliderGlobals::$table_slides." (".RevSliderGlobals::FIELDS_SLIDE.") ($sqlSelect)";
        
        
$this->db->runSql($sqlInsert);
        
$lastID $this->db->getLastInsertID();
        
RevSliderFunctions::validateNotEmpty($lastID);
        
        
//update order
        
$arrUpdate = array("slide_order"=>$newOrder);
        
        
$this->db->update(RevSliderGlobals::$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);    
            
            
//update children
            
$arrChildren $this->getArrSlideChildren($slideID);
            foreach(
$arrChildren as $child){
                
$childID $child->getID();
                
$this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$childID));
            }
            
            
$this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$slideID));
            
        }else{    
//in place of copy
            
$newSlideID $this->duplicateSlide($slideID);
            
$this->duplicateChildren($slideID$newSlideID);
            
            
$this->copyMoveSlide($newSlideID,$targetSliderID,"move");
        }
    }
    
    
    
/**
     * 
     * shift order of the slides from specific order
     */
    
private function shiftOrder($fromOrder){
        
        
$where $this->db->prepare(" slider_id = %s and slide_order >= %s", array($this->id$fromOrder));
        
$sql "update ".RevSliderGlobals::$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,null);
        return(
$sliderID);            
    }
    
    
    
/**
     * 
     * export slider from data, output a file for download
     */
    
public function exportSlider($useDummy false){
        
        
$this->validateInited();
        
        
$sliderParams $this->getParamsForExport();
        
$arrSlides $this->getSlidesForExport($useDummy);
        
$arrStaticSlide $this->getStaticSlideForExport($useDummy);
        
        
$usedCaptions = array();
        
$usedAnimations = array();
        
$usedImages = array();
        
$usedSVG = array();
        
$usedVideos = array();
        
$usedNavigations = array();
        
        
$cfw = array();
        if(!empty(
$arrSlides) && count($arrSlides) > 0$cfw array_merge($cfw$arrSlides);
        if(!empty(
$arrStaticSlide) && count($arrStaticSlide) > 0$cfw array_merge($cfw$arrStaticSlide);
        
        
        
//remove image_id as it is not needed in export
        //plus remove background image if solid color or transparent 
        
if(!empty($arrSlides)){
            foreach(
$arrSlides as $k => $s){
                if(isset(
$arrSlides[$k]['params']['image_id'])) unset($arrSlides[$k]['params']['image_id']);
                if(isset(
$arrSlides[$k]['params']["background_type"]) && ($arrSlides[$k]['params']["background_type"] == 'solid' || $arrSlides[$k]['params']["background_type"] == "trans" || $arrSlides[$k]['params']["background_type"] == "transparent")){
                    if(isset(
$arrSlides[$k]['params']['background_image']))
                        
$arrSlides[$k]['params']['background_image'] = '';
                }
            }
        }
        if(!empty(
$arrStaticSlide)){
            foreach(
$arrStaticSlide as $k => $s){
                if(isset(
$arrStaticSlide[$k]['params']['image_id'])) unset($arrStaticSlide[$k]['params']['image_id']);
                if(isset(
$arrStaticSlide[$k]['params']["background_type"]) && ($arrStaticSlide[$k]['params']["background_type"] == 'solid' || $arrStaticSlide[$k]['params']["background_type"] == "trans" || $arrStaticSlide[$k]['params']["background_type"] == "transparent")){
                    if(isset(
$arrStaticSlide[$k]['params']['background_image']))
                        
$arrStaticSlide[$k]['params']['background_image'] = '';
                }
            }
        }
        
        if(!empty(
$cfw) && count($cfw) > 0){
            foreach(
$cfw as $key => $slide){
                
//check if we are transparent and so on
                
if(isset($slide['params']['image']) && $slide['params']['image'] != ''$usedImages[$slide['params']['image']] = true//['params']['image'] background url
                
if(isset($slide['params']['background_image']) && $slide['params']['background_image'] != ''$usedImages[$slide['params']['background_image']] = true//['params']['image'] background url
                
if(isset($slide['params']['slide_thumb']) && $slide['params']['slide_thumb'] != ''$usedImages[$slide['params']['slide_thumb']] = true//['params']['image'] background url
                
                //html5 video
                
if(isset($slide['params']['background_type']) && $slide['params']['background_type'] == 'html5'){
                    if(isset(
$slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != ''$usedVideos[$slide['params']['slide_bg_html_mpeg']] = true;
                    if(isset(
$slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != ''$usedVideos[$slide['params']['slide_bg_html_webm']] = true;
                    if(isset(
$slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != ''$usedVideos[$slide['params']['slide_bg_html_ogv']] = true;
                }else{
                    if(isset(
$slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != ''$slide['params']['slide_bg_html_mpeg'] = '';
                    if(isset(
$slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != ''$slide['params']['slide_bg_html_webm'] = '';
                    if(isset(
$slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != ''$slide['params']['slide_bg_html_ogv'] = '';
                }
                
                
//image thumbnail
                
if(isset($slide['layers']) && !empty($slide['layers']) && count($slide['layers']) > 0){
                    foreach(
$slide['layers'] as $lKey => $layer){
                        if(isset(
$layer['style']) && $layer['style'] != ''$usedCaptions[$layer['style']] = true;
                        if(isset(
$layer['animation']) && $layer['animation'] != '' && strpos($layer['animation'], 'customin') !== false$usedAnimations[str_replace('customin-'''$layer['animation'])] = true;
                        if(isset(
$layer['endanimation']) && $layer['endanimation'] != '' && strpos($layer['endanimation'], 'customout') !== false$usedAnimations[str_replace('customout-'''$layer['endanimation'])] = true;
                        if(isset(
$layer['image_url']) && $layer['image_url'] != ''$usedImages[$layer['image_url']] = true//image_url if image caption
                        
if(isset($layer['bgimage_url']) && $layer['bgimage_url'] != ''$usedImages[$layer['bgimage_url']] = true//image_url if background layer image
                        
                        
if(isset($layer['type']) && ($layer['type'] == 'video' || $layer['type'] == 'audio')){
                            
                            
$video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array();
                            
                            if(!empty(
$video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){

                                if(isset(
$video_data['urlPoster']) && $video_data['urlPoster'] != ''$usedImages[$video_data['urlPoster']] = true;
                                
                                if(isset(
$video_data['urlMp4']) && $video_data['urlMp4'] != ''$usedVideos[$video_data['urlMp4']] = true;
                                if(isset(
$video_data['urlWebm']) && $video_data['urlWebm'] != ''$usedVideos[$video_data['urlWebm']] = true;
                                if(isset(
$video_data['urlOgv']) && $video_data['urlOgv'] != ''$usedVideos[$video_data['urlOgv']] = true;
                                
                            }elseif(!empty(
$video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image
                                
if($video_data['video_type'] == 'audio'){
                                    if(isset(
$video_data['urlAudio']) && $video_data['urlAudio'] != ''$usedVideos[$video_data['urlAudio']] = true;
                                }else{
                                    if(isset(
$video_data['previewimage']) && $video_data['previewimage'] != ''$usedImages[$video_data['previewimage']] = true;
                                }
                            }
                            
                            if(
$video_data['video_type'] != 'html5'){
                                
$video_data['urlMp4'] = '';
                                
$video_data['urlWebm'] = '';
                                
$video_data['urlOgv'] = '';
                            }
                            if(
$video_data['video_type'] != 'audio'){
                                
$video_data['urlAudio'] = '';
                            }
                            if(isset(
$layer['video_image_url']) && $layer['video_image_url'] != ''$usedImages[$layer['video_image_url']] = true;
                        }
                        
                        if(isset(
$layer['type']) && $layer['type'] == 'svg'){
                            if(isset(
$layer['svg']) && isset($layer['svg']->src)){
                                
$usedSVG[$layer['svg']->src] = true;
                            }
                        }
                    }
                }
            }
            
            
$d = array('usedSVG' => $usedSVG'usedImages' => $usedImages'usedVideos' => $usedVideos);
            
$d apply_filters('revslider_exportSlider_usedMedia'$d$cfw$sliderParams$useDummy); //  $arrSlides, $arrStaticSlide, 
            
            
$usedSVG $d['usedSVG'];
            
$usedImages $d['usedImages'];
            
$usedVideos $d['usedVideos'];
        }
        
        
$arrSliderExport = array("params"=>$sliderParams,"slides"=>$arrSlides);
        if(!empty(
$arrStaticSlide))
            
$arrSliderExport['static_slides'] = $arrStaticSlide;
        
        
$strExport serialize($arrSliderExport);
        
        
//$strExportAnim = serialize(RevSliderOperations::getFullCustomAnimations());
        
        
$exportname = (!empty($this->alias)) ? $this->alias.'.zip' "slider_export.zip";
        
        
//add navigations if not default animation
        
if(isset($sliderParams['navigation_arrow_style'])) $usedNavigations[$sliderParams['navigation_arrow_style']] = true;
        if(isset(
$sliderParams['navigation_bullets_style'])) $usedNavigations[$sliderParams['navigation_bullets_style']] = true;
        if(isset(
$sliderParams['thumbnails_style'])) $usedNavigations[$sliderParams['thumbnails_style']] = true;
        if(isset(
$sliderParams['tabs_style'])) $usedNavigations[$sliderParams['tabs_style']] = true;
        
$navs false;
        if(!empty(
$usedNavigations)){
            
$navs RevSliderNavigation::export_navigation($usedNavigations);
            if(
$navs !== false$navs serialize($navs);
        }
        
        
        
$styles '';
        if(!empty(
$usedCaptions)){
            
$captions = array();
            foreach(
$usedCaptions as $class => $val){
                
$cap RevSliderOperations::getCaptionsContentArray($class);
                
//set also advanced styles here...
                
if(!empty($cap))
                    
$captions[] = $cap;
            }
            
$styles RevSliderCssParser::parseArrayToCss($captions"\n"true);
        }
        
        
$animations '';
        if(!empty(
$usedAnimations)){
            
$animation = array();
            foreach(
$usedAnimations as $anim => $val){
                
$anima RevSliderOperations::getFullCustomAnimationByID($anim);
                if(
$anima !== false$animation[] = $anima;
                
            }
            if(!empty(
$animation)) $animations serialize($animation);
        }
        
        
$usedImages array_merge($usedImages$usedVideos);
        
        
$usepcl false;
        if(
class_exists('ZipArchive')){
            
$zip = new ZipArchive;
            
$success $zip->open(RevSliderGlobals::$uploadsUrlExportZipZIPARCHIVE::CREATE ZipArchive::OVERWRITE);
            
            if(
$success !== true)
                
throwError("Can't create zip file: ".RevSliderGlobals::$uploadsUrlExportZip);
            
        }else{
            
//fallback to pclzip
            
require_once(ABSPATH 'wp-admin/includes/class-pclzip.php');
            
            
$pclzip = new PclZip(RevSliderGlobals::$uploadsUrlExportZip);
            
            
//either the function uses die() or all is cool
            
$usepcl true;
        }
        
        
//add svg to the zip
        
if(!empty($usedSVG)){
            
$content_url content_url();
            
$content_path ABSPATH 'wp-content';
            
$ud wp_upload_dir();
            
$up_dir $ud['baseurl'];
            foreach(
$usedSVG as $file => $val){
                if(
strpos($file'http') !== false){ //remove all up to wp-content folder
                    
$checkpath str_replace($content_url''$file);

                    
$checkpath2 str_replace($up_dir''$file);
                    if(
$checkpath2 === $file){ //we have an SVG like whiteboard, fallback to older export
                        
$checkpath2 $checkpath;
                    }
                    if(
is_file($content_path.$checkpath)){
                        
$strExport str_replace($filestr_replace('/revslider/assets/svg'''$checkpath2), $strExport);
                    }
                }
            }
        }
        
        
//add images to zip
        
if(!empty($usedImages)){
            
$upload_dir RevSliderFunctionsWP::getPathUploads();
            
$upload_dir_multisiteless wp_upload_dir();
            
$cont_url $upload_dir_multisiteless['baseurl'];
            
$cont_url_no_www str_replace('www.'''$upload_dir_multisiteless['baseurl']);
            
$upload_dir_multisiteless $upload_dir_multisiteless['basedir'].'/';
            
            foreach(
$usedImages as $file => $val){
                if(
$useDummy == "true"){ //only use dummy images
                    
                
}else{ //use the real images
                    
if(strpos($file'http') !== false){
                        
//check if we are in objects folder, if yes take the original image into the zip-
                        
                        
$remove false;
                        
$checkpath str_replace(array($cont_url$cont_url_no_www), ''$file);
                        
                        if(
is_file($upload_dir.$checkpath)){
                            if(!
$usepcl){
                                
$zip->addFile($upload_dir.$checkpath'images/'.$checkpath);
                            }else{
                                
$v_list $pclzip->add($upload_dir.$checkpathPCLZIP_OPT_REMOVE_PATH$upload_dirPCLZIP_OPT_ADD_PATH'images/');
                            }
                            
$remove true;
                        }elseif(
is_file($upload_dir_multisiteless.$checkpath)){
                            if(!
$usepcl){
                                
$zip->addFile($upload_dir_multisiteless.$checkpath'images/'.$checkpath);
                            }else{
                                
$v_list $pclzip->add($upload_dir_multisiteless.$checkpathPCLZIP_OPT_REMOVE_PATH$upload_dir_multisitelessPCLZIP_OPT_ADD_PATH'images/');
                            }
                            
$remove true;
                        }
                        
                        if(
$remove){ //as its http, remove this from strexport
                            
$strExport str_replace(array($cont_url.$checkpath$cont_url_no_www.$checkpath), $checkpath$strExport);
                        }
                    }else{
                        if(
is_file($upload_dir.$file)){
                            if(!
$usepcl){
                                
$zip->addFile($upload_dir.$file'images/'.$file);
                            }else{
                                
$v_list $pclzip->add($upload_dir.$filePCLZIP_OPT_REMOVE_PATH$upload_dirPCLZIP_OPT_ADD_PATH'images/');
                            }
                        }elseif(
is_file($upload_dir_multisiteless.$file)){
                            if(!
$usepcl){
                                
$zip->addFile($upload_dir_multisiteless.$file'images/'.$file);
                            }else{
                                
$v_list $pclzip->add($upload_dir_multisiteless.$filePCLZIP_OPT_REMOVE_PATH$upload_dir_multisitelessPCLZIP_OPT_ADD_PATH'images/');
                            }
                        }
                    }
                }
            }
        }
        
        if(!
$usepcl){
            
$zip->addFromString("slider_export.txt"$strExport); //add slider settings
        
}else{
            
$list $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'slider_export.txt',PCLZIP_ATT_FILE_CONTENT => $strExport)));
            if (
$list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
            
        }
        if(
strlen(trim($animations)) > 0){
            if(!
$usepcl){
                
$zip->addFromString("custom_animations.txt"$animations); //add custom animations
            
}else{
                
$list $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'custom_animations.txt',PCLZIP_ATT_FILE_CONTENT => $animations)));
                if (
$list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
            }
        }
        if(
strlen(trim($styles)) > 0){
            if(!
$usepcl){
                
$zip->addFromString("dynamic-captions.css"$styles); //add dynamic styles
            
}else{
                
$list $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'dynamic-captions.css',PCLZIP_ATT_FILE_CONTENT => $styles)));
                if (
$list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
            }
        }
        if(
strlen(trim($navs)) > 0){
            if(!
$usepcl){
                
$zip->addFromString("navigation.txt"$navs); //add dynamic styles
            
}else{
                
$list $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'navigation.txt',PCLZIP_ATT_FILE_CONTENT => $navs)));
                if (
$list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
            }
        }
        
        
$static_css RevSliderOperations::getStaticCss();
        if(
trim($static_css) !== ''){
            if(!
$usepcl){
                
$zip->addFromString("static-captions.css"$static_css); //add slider settings
            
}else{
                
$list $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'static-captions.css',PCLZIP_ATT_FILE_CONTENT => $static_css)));
                if (
$list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
            }
        }
        
$enable_slider_pack apply_filters('revslider_slider_pack_export'false);
        
        if(
$enable_slider_pack){ //allow for slider packs the automatic creation of the info.cfg
            
if(!$usepcl){
                
$zip->addFromString('info.cfg'md5($this->alias)); //add slider settings
            
}else{
                
$list $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'info.cfg',PCLZIP_ATT_FILE_CONTENT => md5($this->alias))));
                if (
$list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
            }
        }
        
        if(!
$usepcl){
            
$zip->close();
        }else{
            
//do nothing
        
}
        
        
        
header("Content-type: application/zip");
        
header("Content-Disposition: attachment; filename=".$exportname);
        
header("Pragma: no-cache");
        
header("Expires: 0");
        
readfile(RevSliderGlobals::$uploadsUrlExportZip);
        
        @
unlink(RevSliderGlobals::$uploadsUrlExportZip); //delete file after sending it to user
        
        
exit();
    }
    
    
    
/**
     * import slider from multipart form
     * @since: 5.3.1: $updateStatic is now deprecated
     */
    
public function importSliderFromPost($updateAnim true$updateStatic true$exactfilepath false$is_template false$single_slide false$updateNavigation true){
        
        
$real_slider_id '';
        try{
            
$upload_dir wp_upload_dir();
            
$rem_path $upload_dir['basedir'].'/rstemp/';
            
$d_path $rem_path;
            
            
$sliderID RevSliderFunctions::getPostVariable("sliderid");
            
$sliderExists = !empty($sliderID);
            
            if(
$sliderExists)
                
$this->initByID($sliderID);
            
            if(
$exactfilepath !== false){
                
$filepath $exactfilepath;
            }else{
                switch (
$_FILES['import_file']['error']) {
                    case 
UPLOAD_ERR_OK:
                        break;
                    case 
UPLOAD_ERR_NO_FILE:
                        
RevSliderFunctions::throwError(__('No file sent.''revslider'));
                    case 
UPLOAD_ERR_INI_SIZE:
                    case 
UPLOAD_ERR_FORM_SIZE:
                        
RevSliderFunctions::throwError(__('Exceeded filesize limit.''revslider'));
                        
                    default:
                    break;
                }
                
$filepath $_FILES["import_file"]["tmp_name"];
            }
            
            if(
file_exists($filepath) == false)
                
RevSliderFunctions::throwError(__('Import file not found!!!''revslider'));
            
            
$importZip false;
            
            
WP_Filesystem();
            
            global 
$wp_filesystem;
            
            
$unzipfile unzip_file$filepath$d_path);
            
            if( 
is_wp_error($unzipfile) ){
                
define('FS_METHOD''direct'); //lets try direct. 
                
                
WP_Filesystem();  //WP_Filesystem() needs to be called again since now we use direct !
                
                //@chmod($filepath, 0775);
                
                
$unzipfile unzip_file$filepath$d_path);
                if( 
is_wp_error($unzipfile) ){
                    
$d_path RS_PLUGIN_PATH.'rstemp/';
                    
$rem_path $d_path;
                    
$unzipfile unzip_file$filepath$d_path);
                    
                    if( 
is_wp_error($unzipfile) ){
                        
$f basename($filepath);
                        
$d_path str_replace($f''$filepath);
                        
                        
$unzipfile unzip_file$filepath$d_path);
                    }
                }
            }
            
            if( !
is_wp_error($unzipfile) ){
                
$importZip true//raus damit..
                
                //read all files needed
                
$content = ( $wp_filesystem->exists$d_path.'slider_export.txt' ) ) ? $wp_filesystem->get_contents$d_path.'slider_export.txt' ) : '';
                if(
$content == ''){
                    
RevSliderFunctions::throwError(__('slider_export.txt does not exist!''revslider'));
                }
                
$animations = ( $wp_filesystem->exists$d_path.'custom_animations.txt' ) ) ? $wp_filesystem->get_contents$d_path.'custom_animations.txt' ) : '';
                
$dynamic = ( $wp_filesystem->exists$d_path.'dynamic-captions.css' ) ) ? $wp_filesystem->get_contents$d_path.'dynamic-captions.css' ) : '';
                
//$static = ( $wp_filesystem->exists( $d_path.'static-captions.css' ) ) ? $wp_filesystem->get_contents( $d_path.'static-captions.css' ) : '';
                
$navigations = ( $wp_filesystem->exists$d_path.'navigation.txt' ) ) ? $wp_filesystem->get_contents$d_path.'navigation.txt' ) : '';
                
                
$uid_check = ( $wp_filesystem->exists$d_path.'info.cfg' ) ) ? $wp_filesystem->get_contents$d_path.'info.cfg' ) : '';
                
$version_check = ( $wp_filesystem->exists$d_path.'version.cfg' ) ) ? $wp_filesystem->get_contents$d_path.'version.cfg' ) : '';
                
                if(
$is_template !== false){
                    if(
$uid_check != $is_template){
                        return(array(
"success"=>false,"error"=>__('Please select the correct zip file, checksum failed!''revslider')));
                    }
                }else{ 
//someone imported a template base Slider, check if it is existing in Base Sliders, if yes, check if it was imported
                    
if($uid_check !== ''){
                        
$tmpl = new RevSliderTemplate();
                        
$tmpl_slider $tmpl->getThemePunchTemplateSliders();
                        
                        foreach(
$tmpl_slider as $tp_slider){
                            if(!isset(
$tp_slider['installed'])) continue;
                            
                            if(
$tp_slider['uid'] == $uid_check){
                                
$is_template $uid_check;
                                break;
                            }
                        }
                    }
                }
                
                
$db = new RevSliderDB();
                
                
//update/insert custom animations
                
$animations = @unserialize($animations);
                if(!empty(
$animations)){
                    foreach(
$animations as $key => $animation){ //$animation['id'], $animation['handle'], $animation['params']
                        
$exist $db->fetch(RevSliderGlobals::$table_layer_anims$db->prepare("handle = %s", array($animation['handle'])));
                        if(!empty(
$exist)){ //update the animation, get the ID
                            
if($updateAnim == "true"){ //overwrite animation if exists
                                
$arrUpdate = array();
                                
$arrUpdate['params'] = stripslashes(json_encode(str_replace("'"'"'$animation['params'])));
                                
$db->update(RevSliderGlobals::$table_layer_anims$arrUpdate, array('handle' => $animation['handle']));
                                
                                
$anim_id $exist['0']['id'];
                            }else{ 
//insert with new handle
                                
$arrInsert = array();
                                
$arrInsert["handle"] = 'copy_'.$animation['handle'];
                                
$arrInsert["params"] = stripslashes(json_encode(str_replace("'"'"'$animation['params'])));
                                
                                
$anim_id $db->insert(RevSliderGlobals::$table_layer_anims$arrInsert);
                            }
                        }else{ 
//insert the animation, get the ID
                            
$arrInsert = array();
                            
$arrInsert["handle"] = $animation['handle'];
                            
$arrInsert["params"] = stripslashes(json_encode(str_replace("'"'"'$animation['params'])));
                            
                            
$anim_id $db->insert(RevSliderGlobals::$table_layer_anims$arrInsert);
                        }
                        
                        
//and set the current customin-oldID and customout-oldID in slider params to new ID from $id
                        
$content str_replace(array('customin-'.$animation['id'].'"''customout-'.$animation['id'].'"'), array('customin-'.$anim_id.'"''customout-'.$anim_id.'"'), $content);    
                    }
                    
//dmp(__("animations imported!",'revslider'));
                
}
                
                
//overwrite/append static-captions.css
                /*if(!empty($static)){
                    if($updateStatic == "true"){ //overwrite file
                        RevSliderOperations::updateStaticCss($static);
                    }elseif($updateStatic == 'none'){
                        //do nothing
                    }else{//append
                        $static_cur = RevSliderOperations::getStaticCss();
                        $static = $static_cur."\n".$static;
                        RevSliderOperations::updateStaticCss($static);
                    }
                }*/
                
                //overwrite/create dynamic-captions.css
                //parse css to classes
                
$dynamicCss RevSliderCssParser::parseCssToArray($dynamic);
                if(
is_array($dynamicCss) && $dynamicCss !== false && count($dynamicCss) > 0){
                    foreach(
$dynamicCss as $class => $styles){
                        
//check if static style or dynamic style
                        
$class trim($class);
                        
                        if(
strpos($class',') !== false && strpos($class'.tp-caption') !== false){ //we have something like .tp-caption.redclass, .redclass
                            
$class_t explode(','$class);
                            foreach(
$class_t as $k => $cl){
                                if(
strpos($cl'.tp-caption') !== false$class $cl;
                            }
                        }
                        
                        if((
strpos($class':hover') === false && strpos($class':') !== false) || //before, after
                            
strpos($class," ") !== false || // .tp-caption.imageclass img or .tp-caption .imageclass or .tp-caption.imageclass .img
                            
strpos($class,".tp-caption") === false || // everything that is not tp-caption
                            
(strpos($class,".") === false || strpos($class,"#") !== false) || // no class -> #ID or img
                            
strpos($class,">") !== false){ //.tp-caption>.imageclass or .tp-caption.imageclass>img or .tp-caption.imageclass .img
                            
continue;
                        }
                        
                        
//is a dynamic style
                        
if(strpos($class':hover') !== false){
                            
$class trim(str_replace(':hover'''$class));
                            
$arrInsert = array();
                            
$arrInsert["hover"] = json_encode($styles);
                            
$arrInsert["settings"] = json_encode(array('hover' => 'true'));
                        }else{
                            
$arrInsert = array();
                            
$arrInsert["params"] = json_encode($styles);
                            
$arrInsert["settings"] = '';
                        }
                        
//check if class exists
                        
$result $db->fetch(RevSliderGlobals::$table_css$db->prepare("handle = %s", array($class)));
                        
                        if(!empty(
$result)){ //update
                            
$db->update(RevSliderGlobals::$table_css$arrInsert, array('handle' => $class));
                        }else{ 
//insert
                            
$arrInsert["handle"] = $class;
                            
$db->insert(RevSliderGlobals::$table_css$arrInsert);
                        }
                    }
                    
//dmp(__("dynamic styles imported!",'revslider'));
                
}
                
                
//update/insert custom animations
                
$navigations = @unserialize($navigations);
                if(!empty(
$navigations)){
                    
                    foreach(
$navigations as $key => $navigation){
                        
$exist $db->fetch(RevSliderGlobals::$table_navigation$db->prepare("handle = %s", array($navigation['handle'])));
                        unset(
$navigation['id']);
                        
                        
$rh $navigation["handle"];
                        if(!empty(
$exist)){ //create new navigation, get the ID
                            
if($updateNavigation == "true"){ //overwrite navigation if exists
                                
unset($navigation['handle']);
                                
$db->update(RevSliderGlobals::$table_navigation$navigation, array('handle' => $rh));
                                
                            }else{
                                
//insert with new handle
                                
$navigation["handle"] = $navigation['handle'].'-'.date('is');
                                
$navigation["name"] = $navigation['name'].'-'.date('is');
                                
$content str_replace($rh.'"'$navigation["handle"].'"'$content);
                                
$navigation["css"] = str_replace('.'.$rh'.'.$navigation["handle"], $navigation["css"]); //change css class to the correct new class
                                
$navi_id $db->insert(RevSliderGlobals::$table_navigation$navigation);
                                
                            }
                        }else{
                            
$navi_id $db->insert(RevSliderGlobals::$table_navigation$navigation);
                        }
                    }
                    
//dmp(__("navigations imported!",'revslider'));
                
}
            }else{
                
$message $unzipfile->get_error_message();
                
                
$wp_filesystem->delete($rem_pathtrue);
                
                return(array(
"success"=>false,"error"=>$message));
            }
            
            
//$content = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $content); //clear errors in string //deprecated in newest php version
            
$content preg_replace_callback('!s:(\d+):"(.*?)";!', array('RevSliderSlider''clear_error_in_string') , $content); //clear errors in string
            
            
$arrSlider = @unserialize($content);
            if(empty(
$arrSlider)){
                
$wp_filesystem->delete($rem_pathtrue);
                
RevSliderFunctions::throwError(__('Wrong export slider file format! Please make sure that the uploaded file is either a zip file with a correct slider_export.txt in the root of it or an valid slider_export.txt file.''revslider'));
            }
            
            
//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"] = RevSliderFunctionsWP::getImageUrlFromPath($sliderParams["background_image"]);
            
            
$import_statics true;
            if(isset(
$sliderParams['enable_static_layers'])){
                if(
$sliderParams['enable_static_layers'] == 'off'$import_statics false;
                unset(
$sliderParams['enable_static_layers']);
            }
            
            
$sliderParams['version'] = $version_check;
            
            
$json_params json_encode($sliderParams);
            
            
//update slider or create new
            
if($sliderExists){
                
$arrUpdate = array("params"=>$json_params);    
                
$this->db->update(RevSliderGlobals::$table_sliders,$arrUpdate,array("id"=>$sliderID));
            }else{    
//new slider
                
$arrInsert = array();
                
$arrInsert['params'] = $json_params;
                
//check if Slider with title and/or alias exists, if yes change both to stay unique
                
                
                
$arrInsert['title'] = RevSliderFunctions::getVal($sliderParams'title''Slider1');
                
$arrInsert['alias'] = RevSliderFunctions::getVal($sliderParams'alias''slider1');    
                if(
$is_template === false){ //we want to stay at the given alias if we are a template
                    
$talias $arrInsert['alias'];
                    
$ti 1;
                    while(
$this->isAliasExistsInDB($talias)){ //set a new alias and title if its existing in database
                        
$talias $arrInsert['alias'] . $ti;
                        
$ti++;
                    }
                    
                    if(
$talias !== $arrInsert['alias']){
                        
$sliderParams['title'] = $talias;
                        
$sliderParams['alias'] = $talias;
                        
$arrInsert['title'] = $talias;
                        
$arrInsert['alias'] = $talias;
                        
$json_params json_encode($sliderParams);
                        
$arrInsert['params'] = $json_params;
                    }
                }
                
                if(
$is_template !== false){ //add that we are an template
                    
$arrInsert['type'] = 'template';
                    
$sliderParams['uid'] = $is_template;
                    
$json_params json_encode($sliderParams);
                    
$arrInsert['params'] = $json_params;
                }
                
                
                
                
$sliderID $this->db->insert(RevSliderGlobals::$table_sliders,$arrInsert);
            }
            
            
//-------- Slides Handle -----------
            
            //delete current slides
            
if($sliderExists)
                
$this->deleteAllSlides();
            
            
//create all slides
            
$arrSlides $arrSlider["slides"];
            
            
$alreadyImported = array();
            
            
$content_url content_url();
            
            
//wpml compatibility
            
$slider_map = array();
            foreach(
$arrSlides as $sl_key => $slide){
                
$params $slide["params"];
                
$layers $slide["layers"];
                
$settings = (isset($slide["settings"])) ? $slide["settings"] : '';
                
                
//convert params images:
                
if($importZip === true){ //we have a zip, check if exists
                    //remove image_id as it is not needed in import
                    
if(isset($params['image_id'])) unset($params['image_id']);
                    
                    if(isset(
$params["image"])){
                        
$params["image"] = RevSliderBase::check_file_in_zip($d_path$params["image"], $sliderParams["alias"], $alreadyImported);
                        
$params["image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["image"]);
                    }
                    
                    if(isset(
$params["background_image"])){
                        
$params["background_image"] = RevSliderBase::check_file_in_zip($d_path$params["background_image"], $sliderParams["alias"], $alreadyImported);
                        
$params["background_image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["background_image"]);
                    }
                    
                    if(isset(
$params["slide_thumb"])){
                        
$params["slide_thumb"] = RevSliderBase::check_file_in_zip($d_path$params["slide_thumb"], $sliderParams["alias"], $alreadyImported);
                        
$params["slide_thumb"] = RevSliderFunctionsWP::getImageUrlFromPath($params["slide_thumb"]);
                    }
                    
                    if(isset(
$params["show_alternate_image"])){
                        
$params["show_alternate_image"] = RevSliderBase::check_file_in_zip($d_path$params["show_alternate_image"], $sliderParams["alias"], $alreadyImported);
                        
$params["show_alternate_image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["show_alternate_image"]);
                    }
                    if(isset(
$params['background_type']) && $params['background_type'] == 'html5'){
                        if(isset(
$params['slide_bg_html_mpeg']) && $params['slide_bg_html_mpeg'] != ''){
                            
$params['slide_bg_html_mpeg'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$params["slide_bg_html_mpeg"], $sliderParams["alias"], $alreadyImportedtrue));
                        }
                        if(isset(
$params['slide_bg_html_webm']) && $params['slide_bg_html_webm'] != ''){
                            
$params['slide_bg_html_webm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$params["slide_bg_html_webm"], $sliderParams["alias"], $alreadyImportedtrue));
                        }
                        if(isset(
$params['slide_bg_html_ogv'])  && $params['slide_bg_html_ogv'] != ''){
                            
$params['slide_bg_html_ogv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$params["slide_bg_html_ogv"], $sliderParams["alias"], $alreadyImportedtrue));
                        }
                    }
                }
                
                
//convert layers images:
                
foreach($layers as $key=>$layer){                    
                    
//import if exists in zip folder
                    
if($importZip === true){ //we have a zip, check if exists
                        
if(isset($layer["image_url"])){
                            
$layer["image_url"] = RevSliderBase::check_file_in_zip($d_path$layer["image_url"], $sliderParams["alias"], $alreadyImported);
                            
$layer["image_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["image_url"]);
                        }
                        if(isset(
$layer["bgimage_url"])){
                            
$layer["bgimage_url"] = RevSliderBase::check_file_in_zip($d_path$layer["bgimage_url"], $sliderParams["alias"], $alreadyImported);
                            
$layer["bgimage_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["bgimage_url"]);
                        }
                        if(isset(
$layer['type']) && ($layer['type'] == 'video' || $layer['type'] == 'audio')){
                            
                            
$video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array();
                            
                            if(!empty(
$video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){

                                if(isset(
$video_data['urlPoster']) && $video_data['urlPoster'] != ''){
                                    
$video_data['urlPoster'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlPoster"], $sliderParams["alias"], $alreadyImported));
                                }
                                
                                if(isset(
$video_data['urlMp4']) && $video_data['urlMp4'] != ''){
                                    
$video_data['urlMp4'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlMp4"], $sliderParams["alias"], $alreadyImportedtrue));
                                }
                                if(isset(
$video_data['urlWebm']) && $video_data['urlWebm'] != ''){
                                    
$video_data['urlWebm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlWebm"], $sliderParams["alias"], $alreadyImportedtrue));
                                }
                                if(isset(
$video_data['urlOgv']) && $video_data['urlOgv'] != ''){
                                    
$video_data['urlOgv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlOgv"], $sliderParams["alias"], $alreadyImportedtrue));
                                }
                                
                            }elseif(!empty(
$video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image
                                
if($video_data['video_type'] == 'audio'){
                                    if(isset(
$video_data['urlAudio']) && $video_data['urlAudio'] != ''){
                                        
$video_data['urlAudio'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlAudio"], $sliderParams["alias"], $alreadyImportedtrue));
                                    }
                                }else{
                                    if(isset(
$video_data['previewimage']) && $video_data['previewimage'] != ''){
                                        
$video_data['previewimage'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["previewimage"], $sliderParams["alias"], $alreadyImported));
                                    }
                                }
                            }
                            
                            
$layer['video_data'] = $video_data;
                            
                            if(isset(
$layer['video_image_url']) && $layer['video_image_url'] != ''){
                                
$layer['video_image_url'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$layer["video_image_url"], $sliderParams["alias"], $alreadyImported));
                            }
                        }
                        
                        if(isset(
$layer['type']) && $layer['type'] == 'svg'){
                            if(isset(
$layer['svg']) && isset($layer['svg']->src)){
                                
$layer['svg']->src $content_url.$layer['svg']->src;
                            }
                        }
                        
                    }
                    
                    
$layer['text'] = stripslashes($layer['text']);
                    
$layers[$key] = $layer;
                }
                
$arrSlides[$sl_key]['layers'] = $layers;
                
                
//create new slide
                
$arrCreate = array();
                
$arrCreate["slider_id"] = $sliderID;
                
$arrCreate["slide_order"] = $slide["slide_order"];
                
                
$d = array('params' => $params'sliderParams' => $sliderParams'layers' => $layers'settings' => $settings'alreadyImported' => $alreadyImported);
                
$d apply_filters('revslider_importSliderFromPost_modify_data'$d'normal'$d_path);
                
                
$params $d['params'];
                
$sliderParams $d['sliderParams'];
                
$layers $d['layers'];
                
$settings $d['settings'];
                
$alreadyImported $d['alreadyImported'];
                
                
$my_layers json_encode($layers);
                if(empty(
$my_layers))
                    
$my_layers stripslashes(json_encode($layers));
                
$my_params json_encode($params);
                if(empty(
$my_params))
                    
$my_params stripslashes(json_encode($params));
                
$my_settings json_encode($settings);
                if(empty(
$my_settings))
                    
$my_settings stripslashes(json_encode($settings));
                
                
$arrCreate["layers"] = $my_layers;
                
$arrCreate["params"] = $my_params;
                
$arrCreate["settings"] = $my_settings;
                
                
$last_id $this->db->insert(RevSliderGlobals::$table_slides,$arrCreate);
                
                if(isset(
$slide['id'])){
                    
$slider_map[$slide['id']] = $last_id;
                }
            }
            
            
//change for WPML the parent IDs if necessary
            
if(!empty($slider_map)){
                foreach(
$arrSlides as $sl_key => $slide){
                    if(isset(
$slide['params']['parentid']) && isset($slider_map[$slide['params']['parentid']])){
                        
$update_id $slider_map[$slide['id']];
                        
$parent_id $slider_map[$slide['params']['parentid']];
                        
                        
$arrCreate = array();
                        
                        
$arrCreate["params"] = $slide['params'];
                        
$arrCreate["params"]['parentid'] = $parent_id;
                        
$my_params json_encode($arrCreate["params"]);
                        if(empty(
$my_params))
                            
$my_params stripslashes(json_encode($arrCreate["params"]));
                        
                        
$arrCreate["params"] = $my_params;
                        
                        
$this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$update_id));
                    }
                    
                    
$did_change false;
                    foreach(
$slide['layers'] as $key => $value){
                        if(isset(
$value['layer_action'])){
                            if(isset(
$value['layer_action']->jump_to_slide) && !empty($value['layer_action']->jump_to_slide)){
                                
$value['layer_action']->jump_to_slide = (array)$value['layer_action']->jump_to_slide;
                                foreach(
$value['layer_action']->jump_to_slide as $jtsk => $jtsval){
                                    if(isset(
$slider_map[$jtsval])){
                                        
$slide['layers'][$key]['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval];
                                        
$did_change true;
                                    }
                                }
                            }
                        }
                        
                        
$link_slide RevSliderFunctions::getVal($value'link_slide'false);
                        if(
$link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions
                            
if(!isset($slide['layers'][$key]['layer_action'])) $slide['layers'][$key]['layer_action'] = new stdClass();
                            switch(
$link_slide){
                                case 
'link':
                                    
$link RevSliderFunctions::getVal($value'link');
                                    
$link_open_in RevSliderFunctions::getVal($value'link_open_in');
                                    
$slide['layers'][$key]['layer_action']->action = array('a' => 'link');
                                    
$slide['layers'][$key]['layer_action']->link_type = array('a' => 'a');
                                    
$slide['layers'][$key]['layer_action']->image_link = array('a' => $link);
                                    
$slide['layers'][$key]['layer_action']->link_open_in = array('a' => $link_open_in);
                                    
                                    unset(
$slide['layers'][$key]['link']);
                                    unset(
$slide['layers'][$key]['link_open_in']);
                                case 
'next':
                                    
$slide['layers'][$key]['layer_action']->action = array('a' => 'next');
                                break;
                                case 
'prev':
                                    
$slide['layers'][$key]['layer_action']->action = array('a' => 'prev');
                                break;
                                case 
'scroll_under':
                                    
$scrollunder_offset RevSliderFunctions::getVal($value'scrollunder_offset');
                                    
$slide['layers'][$key]['layer_action']->action = array('a' => 'scroll_under');
                                    
$slide['layers'][$key]['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset);
                                    
                                    unset(
$slide['layers'][$key]['scrollunder_offset']);
                                break;
                                default: 
//its an ID, so its a slide ID
                                    
$slide['layers'][$key]['layer_action']->action = array('a' => 'jumpto');
                                    
$slide['layers'][$key]['layer_action']->jump_to_slide = array('a' => $slider_map[$link_slide]);
                                break;
                                
                            }
                            
$slide['layers'][$key]['layer_action']->tooltip_event = array('a' => 'click');
                            
                            unset(
$slide['layers'][$key]['link_slide']);
                            
                            
$did_change true;
                        }
                        
                        
                        if(
$did_change === true){
                            
                            
$arrCreate = array();
                            
$my_layers json_encode($slide['layers']);
                            if(empty(
$my_layers))
                                
$my_layers stripslashes(json_encode($layers));
                            
                            
$arrCreate['layers'] = $my_layers;
                            
                            
$this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$slider_map[$slide['id']]));
                        }
                    }
                }
            }
            
            
//check if static slide exists and import
            
if(isset($arrSlider['static_slides']) && !empty($arrSlider['static_slides']) && $import_statics){
                
$static_slide $arrSlider['static_slides'];
                foreach(
$static_slide as $slide){
                    
                    
$params $slide["params"];
                    
$layers $slide["layers"];
                    
$settings = (isset($slide["settings"])) ? $slide["settings"] : '';
                    
                    
//remove image_id as it is not needed in import
                    
if(isset($params['image_id'])) unset($params['image_id']);
                    
                    
//convert params images:
                    
if(isset($params["image"])){
                        
//import if exists in zip folder
                        
if(strpos($params["image"], 'http') !== false){
                        }else{
                            if(
trim($params["image"]) !== ''){
                                if(
$importZip === true){ //we have a zip, check if exists
                                    
$image $wp_filesystem->exists$d_path.'images/'.$params["image"] );
                                    if(!
$image){
                                        echo 
$params["image"].__(' not found!<br>''revslider');
                                    }else{
                                        if(!isset(
$alreadyImported['images/'.$params["image"]])){
                                            
$importImage RevSliderFunctionsWP::import_media($d_path.'images/'.$params["image"], $sliderParams["alias"].'/');

                                            if(
$importImage !== false){
                                                
$alreadyImported['images/'.$params["image"]] = $importImage['path'];
                                                
                                                
$params["image"] = $importImage['path'];
                                            }
                                        }else{
                                            
$params["image"] = $alreadyImported['images/'.$params["image"]];
                                        }


                                    }
                                }
                            }
                            
$params["image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["image"]);
                        }
                    }
                    
                    
//convert layers images:
                    
foreach($layers as $key=>$layer){
                        if(isset(
$layer["image_url"])){
                            
//import if exists in zip folder
                            
if(trim($layer["image_url"]) !== ''){
                                if(
strpos($layer["image_url"], 'http') !== false){
                                }else{
                                    if(
$importZip === true){ //we have a zip, check if exists
                                        
$image_url $wp_filesystem->exists$d_path.'images/'.$layer["image_url"] );
                                        if(!
$image_url){
                                            echo 
$layer["image_url"].__(' not found!<br>');
                                        }else{
                                            if(!isset(
$alreadyImported['images/'.$layer["image_url"]])){
                                                
$importImage RevSliderFunctionsWP::import_media($d_path.'images/'.$layer["image_url"], $sliderParams["alias"].'/');
                                                
                                                if(
$importImage !== false){
                                                    
$alreadyImported['images/'.$layer["image_url"]] = $importImage['path'];
                                                    
                                                    
$layer["image_url"] = $importImage['path'];
                                                }
                                            }else{
                                                
$layer["image_url"] = $alreadyImported['images/'.$layer["image_url"]];
                                            }
                                        }
                                    }
                                }
                            }
                            
$layer["image_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["image_url"]);
                        }
                        if(isset(
$layer["bgimage_url"])){
                            
//import if exists in zip folder
                            
if(trim($layer["bgimage_url"]) !== ''){
                                if(
strpos($layer["bgimage_url"], 'http') !== false){
                                }else{
                                    if(
$importZip === true){ //we have a zip, check if exists
                                        
$bgimage_url $wp_filesystem->exists$d_path.'images/'.$layer["bgimage_url"] );
                                        if(!
$bgimage_url){
                                            echo 
$layer["bgimage_url"].__(' not found!<br>');
                                        }else{
                                            if(!isset(
$alreadyImported['images/'.$layer["bgimage_url"]])){
                                                
$importImage RevSliderFunctionsWP::import_media($d_path.'images/'.$layer["bgimage_url"], $sliderParams["alias"].'/');
                                                
                                                if(
$importImage !== false){
                                                    
$alreadyImported['images/'.$layer["bgimage_url"]] = $importImage['path'];
                                                    
                                                    
$layer["bgimage_url"] = $importImage['path'];
                                                }
                                            }else{
                                                
$layer["bgimage_url"] = $alreadyImported['images/'.$layer["bgimage_url"]];
                                            }
                                        }
                                    }
                                }
                            }
                            
$layer["bgimage_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["bgimage_url"]);
                        }
                        
                        
$layer['text'] = stripslashes($layer['text']);
                            
                        if(isset(
$layer['type']) && ($layer['type'] == 'video' || $layer['type'] == 'audio')){
                            
                            
$video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array();
                            
                            if(!empty(
$video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){

                                if(isset(
$video_data['urlPoster']) && $video_data['urlPoster'] != ''){
                                    
$video_data['urlPoster'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlPoster"], $sliderParams["alias"], $alreadyImported));
                                }
                                if(isset(
$video_data['urlMp4']) && $video_data['urlMp4'] != ''){
                                    
$video_data['urlMp4'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlMp4"], $sliderParams["alias"], $alreadyImportedtrue));
                                }
                                if(isset(
$video_data['urlWebm']) && $video_data['urlWebm'] != ''){
                                    
$video_data['urlWebm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlWebm"], $sliderParams["alias"], $alreadyImportedtrue));
                                }
                                if(isset(
$video_data['urlOgv']) && $video_data['urlOgv'] != ''){
                                    
$video_data['urlOgv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlOgv"], $sliderParams["alias"], $alreadyImportedtrue));
                                }
                                
                            }elseif(!empty(
$video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image
                                
if($video_data['video_type'] == 'audio'){
                                    if(isset(
$video_data['urlAudio']) && $video_data['urlAudio'] != ''){
                                        
$video_data['urlAudio'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["urlAudio"], $sliderParams["alias"], $alreadyImportedtrue));
                                    }
                                }else{
                                    if(isset(
$video_data['previewimage']) && $video_data['previewimage'] != ''){
                                        
$video_data['previewimage'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$video_data["previewimage"], $sliderParams["alias"], $alreadyImported));
                                    }
                                }
                            }
                            
                            
$layer['video_data'] = $video_data;
                            
                            if(isset(
$layer['video_image_url']) && $layer['video_image_url'] != ''){
                                
$layer['video_image_url'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path$layer["video_image_url"], $sliderParams["alias"], $alreadyImported));
                            }
                        }
                        
                        if(isset(
$layer['type']) && $layer['type'] == 'svg'){
                            if(isset(
$layer['svg']) && isset($layer['svg']->src)){
                                
$layer['svg']->src $content_url.$layer['svg']->src;
                            }
                        }
                        
                        if(isset(
$layer['layer_action'])){
                            if(isset(
$layer['layer_action']->jump_to_slide) && !empty($layer['layer_action']->jump_to_slide)){
                                foreach(
$layer['layer_action']->jump_to_slide as $jtsk => $jtsval){
                                    if(isset(
$slider_map[$jtsval])){
                                        
$layer['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval];
                                    }
                                }
                            }
                        }
                        
                        
$link_slide RevSliderFunctions::getVal($layer'link_slide'false);
                        if(
$link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions
                            
if(!isset($layer['layer_action'])) $layer['layer_action'] = new stdClass();
                            
                            switch(
$link_slide){
                                case 
'link':
                                    
$link RevSliderFunctions::getVal($layer'link');
                                    
$link_open_in RevSliderFunctions::getVal($layer'link_open_in');
                                    
$layer['layer_action']->action = array('a' => 'link');
                                    
$layer['layer_action']->link_type = array('a' => 'a');
                                    
$layer['layer_action']->image_link = array('a' => $link);
                                    
$layer['layer_action']->link_open_in = array('a' => $link_open_in);
                                    
                                    unset(
$layer['link']);
                                    unset(
$layer['link_open_in']);
                                case 
'next':
                                    
$layer['layer_action']->action = array('a' => 'next');
                                break;
                                case 
'prev':
                                    
$layer['layer_action']->action = array('a' => 'prev');
                                break;
                                case 
'scroll_under':
                                    
$scrollunder_offset RevSliderFunctions::getVal($value'scrollunder_offset');
                                    
$layer['layer_action']->action = array('a' => 'scroll_under');
                                    
$layer['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset);
                                    
                                    unset(
$layer['scrollunder_offset']);
                                break;
                                default: 
//its an ID, so its a slide ID
                                    
$layer['layer_action']->action = array('a' => 'jumpto');
                                    
$layer['layer_action']->jump_to_slide = array('a' => $slider_map[$link_slide]);
                                break;
                                
                            }
                            
$layer['layer_action']->tooltip_event = array('a' => 'click');
                            
                            unset(
$layer['link_slide']);
                            
                            
$did_change true;
                        }
                        
                        
$layers[$key] = $layer;
                    }
                    
                    
$d = array('params' => $params'layers' => $layers'settings' => $settings);
                    
$d apply_filters('revslider_importSliderFromPost_modify_data'$d'static'$d_path);
                    
                    
$params $d['params'];
                    
$layers $d['layers'];
                    
$settings $d['settings'];
                    
                    
                    
//create new slide
                    
$arrCreate = array();
                    
$arrCreate["slider_id"] = $sliderID;
                    
                    
$my_layers json_encode($layers);
                    if(empty(
$my_layers))
                        
$my_layers stripslashes(json_encode($layers));
                    
$my_params json_encode($params);
                    if(empty(
$my_params))
                        
$my_params stripslashes(json_encode($params));
                    
$my_settings json_encode($settings);
                    if(empty(
$my_settings))
                        
$my_settings stripslashes(json_encode($settings));
                        
                        
                    
$arrCreate["layers"] = $my_layers;
                    
$arrCreate["params"] = $my_params;
                    
$arrCreate["settings"] = $my_settings;
                    
                    if(
$sliderExists){
                        unset(
$arrCreate["slider_id"]);
                        
$this->db->update(RevSliderGlobals::$table_static_slides,$arrCreate,array("slider_id"=>$sliderID));
                    }else{
                        
$this->db->insert(RevSliderGlobals::$table_static_slides,$arrCreate);
                    }
                }
            }
            
            
$c_slider = new RevSliderSlider();
            
$c_slider->initByID($sliderID);
            
            
//check to convert styles to latest versions
            
RevSliderPluginUpdate::update_css_styles(); //set to version 5
            
RevSliderPluginUpdate::add_animation_settings_to_layer($c_slider); //set to version 5
            
RevSliderPluginUpdate::add_style_settings_to_layer($c_slider); //set to version 5
            
RevSliderPluginUpdate::change_settings_on_layers($c_slider); //set to version 5
            
RevSliderPluginUpdate::add_general_settings($c_slider); //set to version 5
            
RevSliderPluginUpdate::change_general_settings_5_0_7($c_slider); //set to version 5.0.7
            
RevSliderPluginUpdate::change_layers_svg_5_2_5_5($c_slider); //set to version 5.2.5.5
            
            
$cus_js $c_slider->getParam('custom_javascript''');
            
            if(
strpos($cus_js'revapi') !== false){
                if(
preg_match_all('/revapi[0-9]*/'$cus_js$results)){
                    
                    if(isset(
$results[0]) && !empty($results[0])){
                        foreach(
$results[0] as $replace){
                            
$cus_js str_replace($replace'revapi'.$sliderID$cus_js);
                        }
                    }
                    
                    
$c_slider->updateParam(array('custom_javascript' => $cus_js));
                    
                }
                
            }
            
            
$real_slider_id $sliderID;
            
            if(
$is_template !== false){ //duplicate the slider now, as we just imported the "template"
                
if($single_slide !== false){ //add now one Slide to the current Slider
                    
$mslider = new RevSlider();
                    
                    
//change slide_id to correct, as it currently is just a number beginning from 0 as we did not have a correct slide ID yet.
                    
$i 0;
                    
$changed false;
                    foreach(
$slider_map as $value){
                        if(
$i == $single_slide['slide_id']){
                            
$single_slide['slide_id'] = $value;
                            
$changed true;
                            break;
                        }
                        
$i++;
                    }
                    
                    if(
$changed){
                        
$return $mslider->copySlideToSlider($single_slide);
                    }else{
                        return(array(
"success"=>false,"error"=>__('could not find correct Slide to copy, please try again.''revslider'),"sliderID"=>$sliderID));
                    }
                    
                }else{
                    
$mslider = new RevSlider();
                    
$title RevSliderFunctions::getVal($sliderParams'title''slider1');    
                    
$talias $title;
                    
$ti 1;
                    while(
$this->isAliasExistsInDB($talias)){ //set a new alias and title if its existing in database
                        
$talias $title $ti;
                        
$ti++;
                    }
                    
$real_slider_id $mslider->duplicateSliderFromData(array('sliderid' => $sliderID'title' => $talias));
                }
            }
            
            
$wp_filesystem->delete($rem_pathtrue);
            
            
        }catch(
Exception $e){
            
$errorMessage $e->getMessage();
            
            if(isset(
$rem_path)){
                
$wp_filesystem->delete($rem_pathtrue);
            }
            return(array(
"success"=>false,"error"=>$errorMessage,"sliderID"=>$sliderID));
        }
        
        
do_action('revslider_slider_imported'$real_slider_id);
        
        return(array(
"success"=>true,"sliderID"=>$real_slider_id));
    }
    
    
    
/**
     * 
     * update slider from options
     */
    
public function updateSliderFromOptions($options){
        
        
$sliderID RevSliderFunctions::getVal($options"sliderid");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
        
$this->createUpdateSliderFromOptions($options,$sliderID);
    }
    
    
/**
     * 
     * update some params in the slider
     */
    
public function updateParam($arrUpdate){
        
$this->validateInited();
        
        
$this->arrParams array_merge($this->arrParams,$arrUpdate);
        
$jsonParams json_encode($this->arrParams);
        
$arrUpdateDB = array();
        
$arrUpdateDB["params"] = $jsonParams;
        
        
$this->db->update(RevSliderGlobals::$table_sliders,$arrUpdateDB,array("id"=>$this->id));
    }
    
    
/**
     * update some settings in the slider
     */
    
public function updateSetting($arrUpdate){
        
$this->validateInited();
        
        
$this->settings array_merge($this->settings,$arrUpdate);
        
$jsonParams json_encode($this->settings);
        
$arrUpdateDB = array();
        
$arrUpdateDB["settings"] = $jsonParams;
        
        
$this->db->update(RevSliderGlobals::$table_sliders,$arrUpdateDB,array("id"=>$this->id));
    }
    
    
    
/**
     * 
     * delete slider from input data
     */
    
public function deleteSliderFromData($data){
        
$sliderID RevSliderFunctions::getVal($data"sliderid");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
$this->initByID($sliderID);
        
        
$this->deleteSlider();
        
        return 
true;
    }

    
    
/**
     * 
     * delete slider from input data
     */
    
public function duplicateSliderFromData($data){
        
$sliderID RevSliderFunctions::getVal($data"sliderid");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
$this->initByID($sliderID);
        
$slider_id $this->duplicateSlider(RevSliderFunctions::getVal($data"title"));
        return 
$slider_id;
    }

    
    
/**
     * delete slider from input data
     * @since: 5.2.5
     */
    
public function duplicateSliderPackageFromData($data){
        
$tmpl = new RevSliderTemplate();
        
        
$slider_uid RevSliderFunctions::getVal($data"slideruid");
        
        
$uids $tmpl->get_package_uids($slider_uid);
        
        foreach(
$uids as $sid => $uid){
            if(
$sid 0){ //one or more still needs to be downloaded...
                
return __('Please install Package first to use this feature''revslider');
            }
        }
        
        foreach(
$uids as $sliderID => $uid){
            
$slider = new RevSlider();
            
$slider->initByID($sliderID);
            
$slider_id $slider->duplicateSlider(RevSliderFunctions::getVal($data"title"), true);
        }
        
        return 
true;
    }
    
    
    
/**
     * 
     * duplicate slide from input data
     */
    
public function duplicateSlideFromData($data){
        
        
//init the slider
        
$sliderID RevSliderFunctions::getVal($data"sliderID");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
$this->initByID($sliderID);
        
        
//get the slide id
        
$slideID RevSliderFunctions::getVal($data"slideID");
        
RevSliderFunctions::validateNotEmpty($slideID,"Slide ID");
        
$newSlideID $this->duplicateSlide($slideID);
        
        
$this->duplicateChildren($slideID$newSlideID);
        
        return(array(
$sliderID$newSlideID));
    }
    
    
    
/**
     * duplicate slide children
     * @param $slideID
     */
    
private function duplicateChildren($slideID,$newSlideID){
        
        
$arrChildren $this->getArrSlideChildren($slideID);
        
        foreach(
$arrChildren as $childSlide){
            
$childSlideID $childSlide->getID();
            
//duplicate
            
$duplicatedSlideID $this->duplicateSlide($childSlideID);
            
            
//update parent id
            
$duplicatedSlide = new RevSlide();
            
$duplicatedSlide->initByID($duplicatedSlideID);
            
$duplicatedSlide->updateParentSlideID($newSlideID);
        }
        
    }
    
    
    
/**
     * copy slide from one Slider to the given Slider ID
     * @since: 5.0
     */
    
public function copySlideToSlider($data){
        global 
$wpdb;
        
        
$sliderID intval(RevSliderFunctions::getVal($data"slider_id"));
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
$slideID intval(RevSliderFunctions::getVal($data"slide_id"));
        
RevSliderFunctions::validateNotEmpty($slideID,"Slide ID");
        
        
$tableSliders $wpdb->prefix RevSliderGlobals::TABLE_SLIDERS_NAME;
        
$tableSlides $wpdb->prefix RevSliderGlobals::TABLE_SLIDES_NAME;

        
//check if ID exists
        
$add_to_slider $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSliders WHERE id = %s"$sliderID), ARRAY_A);
        
        if(empty(
$add_to_slider))
            return 
__('Slide could not be duplicated''revslider');
        
        
//get last slide in slider for the order
        
$slide_order $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSlides WHERE slider_id = %s ORDER BY slide_order DESC"$sliderID), ARRAY_A);
        
$order = (empty($slide_order)) ? $slide_order['slide_order'] + 1;
        
        
$slide_to_copy $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSlides WHERE id = %s"$slideID), ARRAY_A);
        
        if(empty(
$slide_to_copy))
            return 
__('Slide could not be duplicated''revslider');
        
        unset(
$slide_to_copy['id']); //remove the ID of Slide, as it will be a new Slide
        
$slide_to_copy['slider_id'] = $sliderID//set the new Slider ID to the Slide
        
$slide_to_copy['slide_order'] = $order//set the next slide order, to set slide to the end
        
        
$response $wpdb->insert($tableSlides$slide_to_copy);
        
        if(
$response === false) return __('Slide could not be copied''revslider');
        
        return 
true;
    }
    
    
    
/**
     * copy / move slide from data
     */
    
public function copyMoveSlideFromData($data){
        
        
$sliderID RevSliderFunctions::getVal($data"sliderID");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
        
$this->initByID($sliderID);

        
$targetSliderID RevSliderFunctions::getVal($data"targetSliderID");
        
RevSliderFunctions::validateNotEmpty($sliderID,"Target Slider ID");
        
$this->initByID($sliderID);
        
        if(
$targetSliderID == $sliderID)
            
RevSliderFunctions::throwError("The target slider can't be equal to the source slider");
        
        
$slideID RevSliderFunctions::getVal($data"slideID");
        
RevSliderFunctions::validateNotEmpty($slideID,"Slide ID");
        
        
$operation RevSliderFunctions::getVal($data"operation");
        
        
$this->copyMoveSlide($slideID,$targetSliderID,$operation);
        
        return(
$sliderID);
    }
    
    
    
/**
     * create a slide from input data
     */
    
public function createSlideFromData($data,$returnSlideID false){
        
        
$sliderID RevSliderFunctions::getVal($data"sliderid");
        
$obj RevSliderFunctions::getVal($data"obj");
        
        
RevSliderFunctions::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 RevSliderFunctions::getVal($data"sliderID");
        
$arrIDs RevSliderFunctions::getVal($data"arrIDs");
        
RevSliderFunctions::validateNotEmpty($arrIDs,"slides");
        
        
$this->initByID($sliderID);
        
        
$isFromPosts $this->isSlidesFromPosts();
        
        foreach(
$arrIDs as $index=>$slideID){
            
            
$order $index+1;
            
            if(
$isFromPosts){
                
RevSliderFunctionsWP::updatePostOrder($slideID$order);
            }else{
                
                
$arrUpdate = array("slide_order"=>$order);
                
$where = array("id"=>$slideID);
                
$this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,$where);
            }                            
        }
//end foreach
        
        //update sortby            
        
if($isFromPosts){
            
$arrUpdate = array();
            
$arrUpdate["post_sortby"] = RevSliderFunctionsWP::SORTBY_MENU_ORDER;
            
$this->updateParam($arrUpdate);
        } 
        
    }
    
    
/**
     * 
     * 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 all used fonts in the current Slider
     * @since: 5.1.0
     */
    
public function getUsedFonts($full false){
        
$this->validateInited();
        
$gf = array();
        
        
$sl = new RevSliderSlide();
        
        
$mslides $this->getSlides(true);
        
        
$staticID $sl->getStaticSlideID($this->getID());
        if(
$staticID !== false){
            
$msl = new RevSliderSlide();
            if(
strpos($staticID'static_') === false){
                
$staticID 'static_'.$this->getID();
            }
            
$msl->initByID($staticID);
            if(
$msl->getID() !== ''){
                
$mslides array_merge($mslides, array($msl));
            }
        }
        
        if(!empty(
$mslides)){
            foreach(
$mslides as $ms){
                
$mf $ms->getUsedFonts($full);
                if(!empty(
$mf)){
                    foreach(
$mf as $mfk => $mfv){
                        if(!isset(
$gf[$mfk])){
                            
$gf[$mfk] = $mfv;
                        }else{
                            foreach(
$mfv['variants'] as $mfvk => $mfvv){
                                
$gf[$mfk]['variants'][$mfvk] = true;
                            }
                        }
                        
$gf[$mfk]['slide'][] = array('id' => $ms->getID(), 'title' => $ms->getTitle());
                    }
                }
            }
        }
        
        return 
apply_filters('revslider_getUsedFonts'$gf);
    }
    
    
    
/**
     * get slides from gallery
     * force from gallery - get the slide from the gallery only
     */
    
public function getSlides($publishedOnly false){
        
        
$arrSlides $this->getSlidesFromGallery($publishedOnly);
        
        return(
$arrSlides);
    }
    
    
    
/**
     * get slides from gallery
     * get the slides raw, do not initialize them
     * @since: 5.3.0
     */
    
public function getSlidesCountRaw($publishedOnly false){
        
        
$arrSlides $this->getSlidesCountFromGallery($publishedOnly);
        
        return(
$arrSlides);
    }
    
    
    
/**
     * get first slide from gallery
     * @since: 5.3.0
     */
    
public function getFirstSlide($publishedOnly false){
        
        
$arrSlides $this->getSlidesFromGallery($publishedOnlyfalsetrue);
        
        return(
$arrSlides);
    }
    
    
    
/**
     * get slides from gallery respecting wpml
     * force from gallery - get the slide from the gallery only
     */
    
public function getSlidesWPML($publishedOnly false$slide){
        
        
$arrSlides $this->getSlides($publishedOnly);
        
        
$mslide_list = array();
        
        
//check if WPML is active and change the ID of Slide depending on that.
        
if(RevSliderWpml::isWpmlExists() && $this->getParam('use_wpml''off') == 'on'){
            
$lang $slide->getParam('lang''all');
            
            if(!empty(
$arrSlides)){
                foreach(
$arrSlides as $at_slide){
                    
$langs $at_slide->getArrChildrenLangs();
                    
                    if(!empty(
$langs) && is_array($langs)){
                        foreach(
$langs as $l){
                            if(
$l['lang'] == $lang){
                                
$mslide_list[] = array('id' => $l['slideid'], 'title' => $at_slide->getParam('title''Slide'));
                            }
                        }
                    }
                }
            }
            
//get cur lang of slide
        
}else{
            if(!empty(
$arrSlides)){
                foreach(
$arrSlides as $at_slide){
                    
$mslID $at_slide->getID();
                    
                    
$mslide_list[] = array('id' => $mslID'title' => $at_slide->getParam('title''Slide'));
                }
            }
        }
        
        return(
$mslide_list);
    }
    
    
    
/**
     * get slides from posts
     */
    
public function getSlidesFromPosts($publishedOnly false$gal_ids = array()){
        
        
$slideTemplates $this->getSlidesFromGallery($publishedOnly);
        
$slideTemplates RevSliderFunctions::assocToArray($slideTemplates);
        
        if(
count($slideTemplates) == 0) return array();
        
        
$sourceType $this->getParam("source_type","gallery");
        
        if(!empty(
$gal_ids)) $sourceType 'specific_posts'//change to specific posts, give the gal_ids to the list
        
        
switch($sourceType){
            case 
"posts":
                
//check where to get posts from
                
$sourceType $this->getParam("fetch_type","cat_tag");
                switch(
$sourceType){
                    case 
'cat_tag':
                    default:
                        
$arrPosts $this->getPostsFromCategories($publishedOnly);
                    break;
                    case 
'related':
                        
$arrPosts $this->getPostsFromRelated();
                    break;
                    case 
'popular':
                        
$arrPosts $this->getPostsFromPopular();
                    break;
                    case 
'recent':
                        
$arrPosts $this->getPostsFromRecent();
                    break;
                    case 
'next_prev':
                        
$arrPosts $this->getPostsNextPrevious();
                    break;
                }
            break;
            case 
"current_post":
                global 
$post;
                
$arrPosts $this->getPostsFromSpecificList(array("",$post->ID));
            break;
            case 
"specific_posts":
                
$arrPosts $this->getPostsFromSpecificList($gal_ids);
            break;
            case 
'woocommerce':
                
$arrPosts $this->getProductsFromCategories($publishedOnly);
            break;
            default:
                
RevSliderFunctions::throwError("getSlidesFromPosts error: This source type must be from posts.");
            break;
        }
        
        
$arrSlides = array();
        
        
$templateKey 0;
        
$numTemplates count($slideTemplates);
        
        
        foreach(
$arrPosts as $postData){
            
$slideTemplate = clone $slideTemplates[$templateKey];
            
            
//advance the templates
            
$templateKey++;
            if(
$templateKey == $numTemplates){
                
$templateKey 0;
                
$slideTemplates $this->getSlidesFromGallery($publishedOnly); //reset as clone did not work properly
                
$slideTemplates RevSliderFunctions::assocToArray($slideTemplates);
            }
            
            
$slide = new RevSlide();
            
$slide->initByPostData($postData$slideTemplate$this->id);
            
$arrSlides[] = $slide;
        }
        
        
$this->arrSlides $arrSlides;
        
        
        return(
$arrSlides);
    }
    
    
    
/**
     * get slides from posts
     */
    
public function getSlidesFromStream($publishedOnly false){
        
        
$slideTemplates $this->getSlidesFromGallery($publishedOnly);
        
$slideTemplates RevSliderFunctions::assocToArray($slideTemplates);
        
        if(
count($slideTemplates) == 0) return array();
        
        
$arrPosts = array();
        
        
$max_allowed 999999;
        
$sourceType $this->getParam("source_type","gallery");
        
$additions = array('fb_type' => 'album');
        switch(
$sourceType){
            case 
"facebook":
                
$facebook = new RevSliderFacebook($this->getParam('facebook-transient','1200'));
                if(
$this->getParam('facebook-type-source','timeline') == "album"){
                    
$arrPosts $facebook->get_photo_set_photos($this->getParam('facebook-album'),$this->getParam('facebook-count',10),$this->getParam('facebook-app-id'),$this->getParam('facebook-app-secret'));
                }
                else{
                    
$user_id $facebook->get_user_from_url($this->getParam('facebook-page-url'));
                    
$arrPosts $facebook->get_photo_feed($user_id,$this->getParam('facebook-app-id'),$this->getParam('facebook-app-secret'),$this->getParam('facebook-count',10));
                    
$additions['fb_type'] = $this->getParam('facebook-type-source','timeline');
                    
$additions['fb_user_id'] = $user_id;
                }
                
                if(!empty(
$arrPosts)){
                    foreach(
$arrPosts as $k => $p){
                        if(!isset(
$p->status_type)) continue;
                        
                        if(
in_array($p->status_type, array("wall_post"))) unset($arrPosts[$k]);
                    }
                }
                
$max_posts $this->getParam('facebook-count''25'self::FORCE_NUMERIC);
                
$max_allowed 25;
            break;
            case 
"twitter":
                
$twitter = new RevSliderTwitter($this->getParam('twitter-consumer-key'),$this->getParam('twitter-consumer-secret'),$this->getParam('twitter-access-token'),$this->getParam('twitter-access-secret'),$this->getParam('twitter-transient','1200'));
                
$arrPosts $twitter->get_public_photos($this->getParam('twitter-user-id'),$this->getParam('twitter-include-retweets'),$this->getParam'twitter-exclude-replies'),$this->getParam('twitter-count'),$this->getParam('twitter-image-only'));    
                
$max_posts $this->getParam('twitter-count''500'self::FORCE_NUMERIC);
                
$max_allowed 500;
                
$additions['twitter_user'] = $this->getParam('twitter-user-id');
            break;
            case 
"instagram":
                
$instagram = new RevSliderInstagram($this->getParam('instagram-transient','1200'));
                if(
$this->getParam('instagram-type','user')!="hash"){
                    
$search_user_id $this->getParam('instagram-user-id');
                    
$arrPosts $instagram->get_public_photos($search_user_id,$this->getParam('instagram-count'));
                }
                else{
                    
$search_hash_tag $this->getParam('instagram-hash-tag');
                    
$arrPosts $instagram->get_tag_photos($search_hash_tag,$this->getParam('instagram-count'));
                }
                
                
$max_posts $this->getParam('instagram-count''33'self::FORCE_NUMERIC);
                
$max_allowed 33;
            break;
            case 
"flickr":
                
$flickr = new RevSliderFlickr($this->getParam('flickr-api-key'),$this->getParam('flickr-transient','1200'));
                switch(
$this->getParam('flickr-type')){
                    case 
'publicphotos':
                        
$user_id $flickr->get_user_from_url($this->getParam('flickr-user-url'));
                        
$arrPosts $flickr->get_public_photos($user_id,$this->getParam('flickr-count'));
                    break;
                    case 
'gallery':
                        
$gallery_id $flickr->get_gallery_from_url($this->getParam('flickr-gallery-url'));
                        
$arrPosts $flickr->get_gallery_photos($gallery_id,$this->getParam('flickr-count'));
                    break;
                    case 
'group':
                        
$group_id $flickr->get_group_from_url($this->getParam('flickr-group-url'));
                        
$arrPosts $flickr->get_group_photos($group_id,$this->getParam('flickr-count'));
                    break;
                    case 
'photosets':
                        
$arrPosts $flickr->get_photo_set_photos($this->getParam('flickr-photoset'),$this->getParam('flickr-count'));
                    break;
                }
                
$max_posts $this->getParam('flickr-count''99'self::FORCE_NUMERIC);
            break;
            case 
'youtube':
                
$channel_id $this->getParam('youtube-channel-id');
                
$youtube = new RevSliderYoutube($this->getParam('youtube-api'),$channel_id,$this->getParam('youtube-transient','1200'));
                
                if(
$this->getParam('youtube-type-source')=="playlist"){
                    
$arrPosts $youtube->show_playlist_videos($this->getParam('youtube-playlist'),$this->getParam('youtube-count'));
                }
                else{
                    
$arrPosts $youtube->show_channel_videos($this->getParam('youtube-count'));
                }
                
$additions['yt_type'] = $this->getParam('youtube-type-source','channel');
                
$max_posts $this->getParam('youtube-count''25'self::FORCE_NUMERIC);
                
$max_allowed 50;
                break;
            case 
'vimeo':
                
$vimeo = new RevSliderVimeo($this->getParam('vimeo-transient','1200'));
                
$vimeo_type $this->getParam('vimeo-type-source');
                
                switch (
$vimeo_type) {
                    case 
'user':
                        
$arrPosts $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-username'));
                        break;
                    case 
'channel':
                        
$arrPosts $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-channelname'));
                        break;
                    case 
'group':
                        
$arrPosts $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-groupname'));
                        break;
                    case 
'album':
                        
$arrPosts $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-albumid'));
                        break;
                    default:
                        break;

                }
                
$additions['vim_type'] = $this->getParam('vimeo-type-source','user');
                
$max_posts $this->getParam('vimeo-count''25'self::FORCE_NUMERIC);
                
$max_allowed 60;
                break;
            default:
                
RevSliderFunctions::throwError("getSlidesFromStream error: This source type must be from stream.");
            break;
        }
        
        if(
$max_posts 0$max_posts *= -1;
        
        
$arrPosts apply_filters('revslider_pre_mod_stream_data'$arrPosts$sourceType$this->id);
        
        while(
count($arrPosts) > $max_posts || count($arrPosts) > $max_allowed){
            
array_pop($arrPosts);
        }
        
        
$arrPosts apply_filters('revslider_post_mod_stream_data'$arrPosts$sourceType$this->id);
        
        
$arrSlides = array();
        
        
$templateKey 0;
        
$numTemplates count($slideTemplates);
        
        if(empty(
$arrPosts)) RevSliderFunctions::throwError(__('Failed to load Stream''revslider'));
        
        foreach(
$arrPosts as $postData){
            if(empty(
$postData)) continue; //ignore empty entries, like from instagram
            
            
$slideTemplate $slideTemplates[$templateKey];
            
            
//advance the templates
            
$templateKey++;
            if(
$templateKey == $numTemplates)
                
$templateKey 0;
            
            
$slide = new RevSlide();
            
$slide->initByStreamData($postData$slideTemplate$this->id$sourceType$additions);
            
$arrSlides[] = $slide;
        }
        
        
$this->arrSlides $arrSlides;
        
        return(
$arrSlides);
    }
    
    
    
/**
     * get the first slide ID of the current slider
     */
    
public function getFirstSlideIdFromGallery(){
        
$this->validateInited();
        
        
$arrSlides = array();
        
$arrSlideRecords $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order",'',' LIMIT 0,1');
        
        foreach (
$arrSlideRecords as $record){
            
$slide = new RevSlide();
            
$slide->initByData($record);
            
$slideID $slide->getID();
            
$arrSlides[$slideID] = $slide;
            return 
$arrSlides;
        }
        
        return 
false;
    }
    
    
    
/**
     * get slides of the current slider
     */
    
public function getSlidesFromGallery($publishedOnly false$allwpml false$first false){
        
//global $rs_slide_template;
        
$this->validateInited();
        
        
$arrSlides = array();
        
$arrSlideRecords $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order");
        
        
//add Slides set by postsettings, so slide_template
        /*if(!empty($rs_slide_template)){
            foreach($rs_slide_template as $rs_s_t){
                $rs_s_t_d = $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("id = %s", array($rs_s_t)),"slide_order");
                foreach($rs_s_t_d as $rs_s_t_d_v){
                    $arrSlideRecords[] = $rs_s_t_d_v;
                }
            }
        }*/
        
        
$arrChildren = array();
        
        foreach (
$arrSlideRecords as $record){
            
$slide = new RevSlide();
            
$slide->initByData($record);
            
            
$slideID $slide->getID();
            
$arrIdsAssoc[$slideID] = true;

            if(
$publishedOnly == true){
                
$state $slide->getParam("state""published");
                if(
$state == "unpublished"){
                    continue;
                }
            }
            
            
$parentID $slide->getParam("parentid","");
            if(!empty(
$parentID)){
                
$lang $slide->getParam("lang","");
                if(!isset(
$arrChildren[$parentID]))
                    
$arrChildren[$parentID] = array();
                
$arrChildren[$parentID][] = $slide;
                if(!
$allwpml)
                    continue;    
//skip adding to main list
            
}
            
            
//init the children array
            
$slide->setArrChildren(array());
            
            
$arrSlides[$slideID] = $slide;
            
            if(
$first) break; //we only want the first slide!
        
}
        
        
//add children array to the parent slides
        
foreach($arrChildren as $parentID=>$arr){
            if(!isset(
$arrSlides[$parentID])){
                continue;
            }
            
$arrSlides[$parentID]->setArrChildren($arr);
        }
        
        
$this->arrSlides $arrSlides;

        return(
$arrSlides);
    }
    
    
    
/**
     * get slides of the current slider
     * @since: 5.3.0
     */
    
public function getSlidesFromGalleryRaw($publishedOnly false){
    
        
$this->validateInited();
        
        
$arrSlideRecords $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order");
        
        return 
$arrSlideRecords;
    }
    
    
    
/**
     * get slides of the current slider
     * @since: 5.3.0
     */
    
public function getSlidesCountFromGallery($publishedOnly false){
    
        
$this->validateInited();
        
        
$sqlSelect $this->db->prepare("select `id` from ".RevSliderGlobals::$table_slides." where `slider_id` = %s", array($this->id));
        
$arrSlideRecords $this->db->runSqlR($sqlSelect);
        
        return 
$arrSlideRecords;
    }
    
    
    
    
/**
     * 
     * get slide id and slide title from gallery
     */
    
public function getArrSlidesFromGalleryShort(){
        
$arrSlides $this->getSlidesFromGallery();
        
        
$arrOutput = array();
        
$counter 0;
        foreach(
$arrSlides as $slide){
            
$slideID $slide->getID();
            
$outputName 'Slide '.$counter;
            
$title $slide->getParam('title','');
            
$counter++;
            
            if(!empty(
$title))
                
$outputName .= ' - ('.$title.')';
                
            
$arrOutput[$slideID] = $outputName;
        }
        
        return(
$arrOutput);
    }
    
    
    
/**
     * 
     * get slides for output
     * one level only without children
     */
    
public function getSlidesForOutput($publishedOnly false$lang 'all',$gal_ids = array()){
        
        
$isSlidesFromPosts $this->isSlidesFromPosts();
        
$isSlidesFromStream $this->isSlidesFromStream();
        
        
        if(
RevSliderWpml::isWpmlExists() && $this->getParam('use_wpml''off') == 'on'){
            
$cur_lang apply_filters'wpml_current_language'null );
            
$wpml_current_language apply_filters'wpml_current_language'null );
            
do_action'wpml_switch_language'$lang );
        }
        
        if(
$isSlidesFromPosts){
            
$arrParentSlides $this->getSlidesFromPosts($publishedOnly$gal_ids);
        }elseif(
$isSlidesFromStream !== false){
            
$arrParentSlides $this->getSlidesFromStream($publishedOnly);
        }else{
            
$arrParentSlides $this->getSlides($publishedOnly);
        }
        
        if(
RevSliderWpml::isWpmlExists() && $this->getParam('use_wpml''off') == 'on'){ //switch language back
            
do_action'wpml_switch_language'$cur_lang );
        }
        
        if(
$lang == 'all' || $isSlidesFromStream// || $isSlidesFromPosts
            
return($arrParentSlides);
        
        
$arrSlides = array();
        foreach(
$arrParentSlides as $parentSlide){
            
$parentLang $parentSlide->getLang();
            if(
$parentLang == $lang)
                
$arrSlides[] = $parentSlide;
                
            
$childAdded false;
            
$arrChildren $parentSlide->getArrChildren();
            foreach(
$arrChildren as $child){
                
$childLang $child->getLang();
                
                
                
//echo $childLang .'||'. $lang.'--';
                
                
                
if($childLang == $lang){
                    
$arrSlides[] = $child;
                    
$childAdded true;
                    break;
                }
            }
            
            if(
$childAdded == false && $parentLang == "all")
                
$arrSlides[] = $parentSlide;
        }
        
        return(
$arrSlides);
    }
    
    
    
/**
     * 
     * get array of slide names
     */
    
public function getArrSlideNames(){
        if(empty(
$this->arrSlides))
            
$this->getSlidesFromGallery();
        
        
$arrSlideNames = array();

        foreach(
$this->arrSlides as $number=>$slide){
            
$slideID $slide->getID();
            
$filename $slide->getImageFilename();    
            
$slideTitle $slide->getParam("title","Slide");
            
$slideName $slideTitle;
            if(!empty(
$filename))
                
$slideName .= " ($filename)";
            
            
$arrChildrenIDs $slide->getArrChildrenIDs();
             
            
$arrSlideNames[$slideID] = array("name"=>$slideName,"arrChildrenIDs"=>$arrChildrenIDs,"title"=>$slideTitle);
        }
        return(
$arrSlideNames);
    }
    
    
    
/**
     * 
     * get array of slides numbers by id's
     */
    
public function getSlidesNumbersByIDs($publishedOnly false){
        
        if(empty(
$this->arrSlides))
            
$this->getSlides($publishedOnly);
        
        
$arrSlideNumbers = array();
        
        
$counter 0;
        
        if(empty(
$this->arrSlides)) return $arrSlideNumbers;
        
        foreach(
$this->arrSlides as $slide){
            
$counter++;
            
$slideID $slide->getID();
            
$arrSlideNumbers[$slideID] = $counter;                
        }
        return(
$arrSlideNumbers);
    }
    
    
    
/**
     * 
     * get slider params for export slider
     */
    
private function getParamsForExport(){
        
$exportParams $this->arrParams;
        
        
//modify background image
        
$urlImage RevSliderFunctions::getVal($exportParams"background_image");
        if(!empty(
$urlImage))
            
$exportParams["background_image"] = $urlImage;
        
        return(
$exportParams);
    }

    
    
/**
     * 
     * get slides for export
     */
    
public function getSlidesForExport($useDummy false){
        
$arrSlides $this->getSlidesFromGallery(falsetrue);
        
$arrSlidesExport = array();
        
        foreach(
$arrSlides as $slide){
            
$slideNew = array();
            
$slideNew["id"] = $slide->getID();
            
$slideNew["params"] = $slide->getParamsForExport();
            
$slideNew["slide_order"] = $slide->getOrder();
            
$slideNew["layers"] = $slide->getLayersForExport($useDummy);
            
$slideNew["settings"] = $slide->getSettings();
            
            
$arrSlidesExport[] = $slideNew;
        }
        
        return 
apply_filters('revslider_getSlidesForExport'$arrSlidesExport);
    }

    
    
/**
     * 
     * get slides for export
     */
    
public function getStaticSlideForExport($useDummy false){
        
$arrSlidesExport = array();
        
        
$slide = new RevSlide();
        
        
$staticID $slide->getStaticSlideID($this->id);
        if(
$staticID !== false){
            
$slideNew = array();
            
$slide->initByStaticID($staticID);
            
$slideNew["params"] = $slide->getParamsForExport();
            
$slideNew["slide_order"] = $slide->getOrder();
            
$slideNew["layers"] = $slide->getLayersForExport($useDummy);
            
$slideNew["settings"] = $slide->getSettings();
            
$arrSlidesExport[] = $slideNew;
        }
        
        return 
apply_filters('revslider_getStaticSlideForExport'$arrSlidesExport);
    }
    
    
    
/**
     * get slides number
     */
    
public function getNumSlides($publishedOnly false){
        
        if(empty(
$this->arrSlides))
            
$this->getSlides($publishedOnly);
        
        
$numSlides count($this->arrSlides);
        return(
$numSlides);
    }
    
    
    
/**
     * get slides number
     */
    
public function getNumSlidesRaw($publishedOnly false){
        
        if(empty(
$this->arrSlides)){
            
$ret $this->getSlidesCountRaw($publishedOnly);
            
$numSlides count($ret);
        }else{
            
$numSlides count($this->arrSlides);
        }
        return(
$numSlides);
    }
    
    
    
/**
     * get real slides number, from posts, social streams ect.
     */
    
public function getNumRealSlides($publishedOnly false$type 'post'){
        
$numSlides count($this->arrSlides);
        
        switch(
$type){
            case 
'post':
                if(
$this->getParam('fetch_type''cat_tag') == 'next_prev'){
                    
$numSlides 2;
                }else{
                    
$numSlides $this->getParam('max_slider_posts'count($this->arrSlides));
                    if(
intval($numSlides) == 0$numSlides '∞';
                    
//$this->getSlidesFromPosts($publishedOnly);
                    //$numSlides = count($this->arrSlides);
                
}
            break;
            case 
'facebook':
                
$numSlides $this->getParam('facebook-count'count($this->arrSlides));
            break;
            case 
'twitter':
                
$numSlides $this->getParam('twitter-count'count($this->arrSlides));
            break;
            case 
'instagram':
                
$numSlides $this->getParam('instagram-count'count($this->arrSlides));
            break;
            case 
'flickr':
                
$numSlides $this->getParam('flickr-count'count($this->arrSlides));
            break;
            case 
'youtube':
                
$numSlides $this->getParam('youtube-count'count($this->arrSlides));
            break;
            case 
'vimeo':
                
$numSlides $this->getParam('vimeo-count'count($this->arrSlides));
            break;
        }
        
        return(
$numSlides);
    }
    
    
    
/**
     * get real slides number, from posts, social streams ect.
     */
    
public function getNumRealStreamSlides($publishedOnly false){
        
        
$this->getSlidesFromStream($publishedOnly);
        
        
$numSlides count($this->arrSlides);
        return(
$numSlides);
    }
    
    
    
/**
     * get sliders array - function don't belong to the object!
     */
    
public function getArrSliders($orders false$templates 'neither'){
        
$order_fav false;
        if(
$orders !== false && key($orders) != 'favorite'){
            
$order_direction reset($orders);
            
$do_order key($orders);
        }else{
            
$do_order 'id';
            
$order_direction 'ASC';
            if(
is_array($orders) && key($orders) == 'favorite'){
                
$order_direction reset($orders);
                
$order_fav true;
            }
        }
        
//$where = "`type` != 'template' ";
        
$where "`type` != 'template' OR `type` IS NULL";
        
        
$response $this->db->fetch(RevSliderGlobals::$table_sliders,$where,$do_order,'',$order_direction);
        
        
$arrSliders = array();
        foreach(
$response as $arrData){
            
$slider = new RevSlider();
            
$slider->initByDBData($arrData);
            
            
/*
            This part needs to stay for backwards compatibility. It is used in the update process from v4x to v5x
            */
            
if($templates === true){
                if(
$slider->getParam("template","false") == "false") continue;
            }elseif(
$templates === false){
                if(
$slider->getParam("template","false") == "true") continue;
            }
            
            
$arrSliders[] = $slider;
        }
        
        if(
$order_fav === true){
            
$temp = array();
            
$temp_not = array();
            foreach(
$arrSliders as $key => $slider){
                if(
$slider->isFavorite()){
                    
$temp_not[] = $slider;
                }else{
                    
$temp[] = $slider;
                }
            }
            
$arrSliders = array();
            
$arrSliders = ($order_direction == 'ASC') ? array_merge($temp$temp_not) : array_merge($temp_not$temp);
        }
        
        return(
$arrSliders);
    }

    
    
/**
     * get array of alias
     */
    
public function getAllSliderAliases(){
        
$where "`type` != 'template'";
        
        
$response $this->db->fetch(RevSliderGlobals::$table_sliders,$where,"id");
        
        
$arrAliases = array();
        foreach(
$response as $arrSlider){
            
$arrAliases[] = $arrSlider["alias"];
        }
        
        return(
$arrAliases);
    }

    
/**
     * get array of alias
     */
    
public function getAllSliderForAdminMenu(){
        
$arrSliders $this->getArrSliders();
        
$arrShort = array();
        if(!empty(
$arrSliders)){
            foreach(
$arrSliders as $slider){
                
$id $slider->getID();
                
$title $slider->getTitle();
                
$alias $slider->getAlias();
                
                
$arrShort[$id] = array('title' => $title'alias' => $alias);
            }
        }
        
        return(
$arrShort);
    }    
    
    
    
/**
     * 
     * get array of slider id -> title
     */        
    
public function getArrSlidersShort($exceptID null,$filterType self::SLIDER_TYPE_ALL){
        
$arrSliders $this->getArrSliders();
        
$arrShort = array();
        foreach(
$arrSliders as $slider){
            
$id $slider->getID();
            
$isFromPosts $slider->isSlidesFromPosts();
            
$isTemplate $slider->getParam("template","false");
            
            
//filter by gallery only
            
if($filterType == self::SLIDER_TYPE_POSTS && $isFromPosts == false)
                continue;
                
            if(
$filterType == self::SLIDER_TYPE_GALLERY && $isFromPosts == true)
                continue;
            
            
//filter by template type
            
if($filterType == self::SLIDER_TYPE_TEMPLATE && $isFromPosts == false)
                continue;
            
            
//filter by except
            
if(!empty($exceptID) && $exceptID == $id)
                continue;
                
            
$title $slider->getTitle();
            
$arrShort[$id] = $title;
        }
        return(
$arrShort);
    }
    
    
/**
     * 
     * get array of sliders with slides, short, assoc.
     */
    
public function getArrSlidersWithSlidesShort($filterType self::SLIDER_TYPE_ALL){
        
$arrSliders self::getArrSlidersShort(null$filterType);
        
        
$output = array();
        foreach(
$arrSliders as $sliderID=>$sliderName){
            
$slider = new RevSlider();
            
$slider->initByID($sliderID);
            
            
$isFromPosts $slider->isSlidesFromPosts();
            
$isTemplate $slider->getParam("template","false");
            
            
//filter by gallery only
            
if($filterType == self::SLIDER_TYPE_POSTS && $isFromPosts == false)
                continue;
                
            if(
$filterType == self::SLIDER_TYPE_GALLERY && $isFromPosts == true)
                continue;
            
            
//filter by template type
            
if($filterType == self::SLIDER_TYPE_TEMPLATE && $isFromPosts == false//$isTemplate == "false")
                
continue;
                
            
$sliderTitle $slider->getTitle();
            
$arrSlides $slider->getArrSlidesFromGalleryShort();
            
            foreach(
$arrSlides as $slideID=>$slideName){
                
$output[$slideID] = $sliderName.", ".$slideName;
            }
        }
        
        return(
$output);
    }
    
    
    
/**
     * 
     * get max order
     */
    
public function getMaxOrder(){
        
$this->validateInited();
        
$maxOrder 0;
        
$arrSlideRecords $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($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);
    }
    
    
    
/**
     * return if the slides source is from posts
     */
    
public function isSlidesFromPosts(){
        
$this->validateInited();
        
$sourceType $this->getParam("source_type","gallery");
        if(
$sourceType == "posts" || $sourceType == "specific_posts" || $sourceType == "current_post" || $sourceType == "woocommerce")
            return(
true);
        
        return(
false);
    }
    
    
    
/**
     * return if the slides source is from stream
     */
    
public function isSlidesFromStream(){
        
$this->validateInited();
        
$sourceType $this->getParam("source_type","gallery");
        if(
$sourceType != "posts" && $sourceType != "specific_posts" && $sourceType != "current_post" && $sourceType != "woocommerce" && $sourceType != "gallery")
            return(
$sourceType);
        
        return(
false);
    }
    
    
    
/**
     * 
     * get posts from categories (by the slider params).
     */
    
private function getPostsFromCategories($publishedOnly false){
        
$this->validateInited();
        
        
$catIDs $this->getParam("post_category");
        
$data RevSliderFunctionsWP::getCatAndTaxData($catIDs);
        
        
$taxonomies $data["tax"];
        
$catIDs $data["cats"];
        
        
$sortBy $this->getParam("post_sortby",self::DEFAULT_POST_SORTBY);
        
$sortDir $this->getParam("posts_sort_direction",self::DEFAULT_POST_SORTDIR);
        
$maxPosts $this->getParam("max_slider_posts","30");
        if(empty(
$maxPosts) || !is_numeric($maxPosts))
            
$maxPosts = -1;
        
        
$postTypes $this->getParam("post_types","any");
            
        
//set direction for custom order
        
if($sortBy == RevSliderFunctionsWP::SORTBY_MENU_ORDER)
            
$sortDir RevSliderFunctionsWP::ORDER_DIRECTION_ASC;
        
        
//Events integration
        
$arrAddition = array();
        if(
$publishedOnly == true)            
            
$arrAddition["post_status"] = RevSliderFunctionsWP::STATE_PUBLISHED;
        
        if(
RevSliderEventsManager::isEventsExists()){
            
            
$filterType $this->getParam("events_filter",RevSliderEventsManager::DEFAULT_FILTER);                
            
$arrAddition RevSliderEventsManager::getWPQuery($filterType$sortBy);
        }
        
        
$slider_id $this->getID();
        
$arrPosts RevSliderFunctionsWP::getPostsByCategory($slider_id$catIDs,$sortBy,$sortDir,$maxPosts,$postTypes,$taxonomies,$arrAddition);
        
        return(
$arrPosts);
    }  
    
    
    
/**
     * get related posts from current one
     * @since: 5.1.1
     */
    
public function getPostsFromRelated(){
        
$my_posts = array();
        
        
$sortBy $this->getParam("post_sortby",self::DEFAULT_POST_SORTBY);
        
$sortDir $this->getParam("posts_sort_direction",self::DEFAULT_POST_SORTDIR);
        
$max_posts $this->getParam("max_slider_posts","30");
        if(empty(
$max_posts) || !is_numeric($max_posts))
            
$max_posts = -1;
        
        
$post_id get_the_ID();
        
        
$tags_string '';
        
$post_tags get_the_tags();
        
        if (
$post_tags) {
            foreach (
$post_tags as $post_tag) {
                
$tags_string .= $post_tag->slug ',';
            }
        }
        
        
$query = array(
                        
'exclude' => $post_id,
                        
'numberposts' => $max_posts,
                        
'order' => $sortDir,
                        
'tag' => $tags_string
                      
);
                      
        if(
strpos($sortBy"meta_num_") === 0){
            
$metaKey str_replace("meta_num_"""$sortBy);
            
$query["orderby"] = "meta_value_num";
            
$query["meta_key"] = $metaKey;
        }else
        if(
strpos($sortBy"meta_") === 0){
            
$metaKey str_replace("meta_"""$sortBy);
            
$query["orderby"] = "meta_value";
            
$query["meta_key"] = $metaKey;
        }else
            
$query["orderby"] = $sortBy;
        
        
$get_relateds apply_filters('revslider_get_related_posts'$query$post_id);
        
        
$tag_related_posts get_posts($get_relateds);        
        
        
        if(
count($tag_related_posts) < $max_posts){
            
$ignore = array();
            foreach(
$tag_related_posts as $tag_related_post){
                
$ignore[] = $tag_related_post->ID;
            }
            
$article_categories get_the_category($post_id);
            
$category_string '';
            foreach(
$article_categories as $category) { 
                
$category_string .= $category->cat_ID ',';
            }
            
$max $max_posts count($tag_related_posts);
            
            
$excl implode(','$ignore);
            
$query = array(
                            
'exclude' => $excl,
                            
'numberposts' => $max,
                            
'category' => $category_string
                          
);
                          
            if(
strpos($sortBy"meta_num_") === 0){
                
$metaKey str_replace("meta_num_"""$sortBy);
                
$query["orderby"] = "meta_value_num";
                
$query["meta_key"] = $metaKey;
            }else
            if(
strpos($sortBy"meta_") === 0){
                
$metaKey str_replace("meta_"""$sortBy);
                
$query["orderby"] = "meta_value";
                
$query["meta_key"] = $metaKey;
            }else
                
$query["orderby"] = $sortBy;
            
            
$get_relateds apply_filters('revslider_get_related_posts'$query$post_id);
            
$cat_related_posts get_posts($get_relateds);
            
            
$tag_related_posts $tag_related_posts $cat_related_posts;
        }
        
        foreach(
$tag_related_posts as $post){
            
$the_post = array();
            
            if(
method_exists($post"to_array"))
                
$the_post $post->to_array();
            else
                
$the_post = (array)$post;
            
            if(
$the_post['ID'] == $post_id) continue;
            
            
$my_posts[] = $the_post;
        }
        
        return 
$my_posts;
    }
    
    
    
/**
     * get popular posts
     * @since: 5.1.1
     */
    
public function getPostsFromPopular($max_posts false){
        
$post_id get_the_ID();
        
        if(
$max_posts == false){
            
$max_posts $this->getParam("max_slider_posts","30");
            if(empty(
$max_posts) || !is_numeric($max_posts))
                
$max_posts = -1;
        }else{
            
$max_posts intval($max_posts);
        }
        
$my_posts = array();
        
        
$args = array(
            
'post_type' => 'any',
            
'posts_per_page' => $max_posts,
            
'suppress_filters' => 0,
            
'meta_key'    => '_thumbnail_id',
            
'orderby'     => 'comment_count',
            
'order'       => 'DESC'
        
);
        
        
$args apply_filters('revslider_get_popular_posts'$args$post_id);
        
$posts get_posts($args);
        
        foreach(
$posts as $post){
        
            if(
method_exists($post"to_array"))
                
$my_posts[] = $post->to_array();
            else
                
$my_posts[] = (array)$post;
        }
        
        return 
$my_posts;
    }
    
    
    
/**
     * get recent posts
     * @since: 5.1.1
     */
    
public function getPostsFromRecent($max_posts false){
        
$post_id get_the_ID();
        
        if(
$max_posts == false){
            
$max_posts $this->getParam("max_slider_posts","30");
            if(empty(
$max_posts) || !is_numeric($max_posts))
                
$max_posts = -1;
        }else{
            
$max_posts intval($max_posts);
        }
        
        
$my_posts = array();
        
        
$args = array(
            
'post_type' => 'any',
            
'posts_per_page' => $max_posts,
            
'suppress_filters' => 0,
            
'meta_key'    => '_thumbnail_id',
            
'orderby'     => 'date',
            
'order'       => 'DESC'
        
);
        
$args apply_filters('revslider_get_latest_posts'$args$post_id);
        
        
$posts get_posts($args);
        
        foreach(
$posts as $post){
        
            if(
method_exists($post"to_array"))
                
$my_posts[] = $post->to_array();
            else
                
$my_posts[] = (array)$post;
        }
        
        return 
$my_posts;
    }
    
    
/**
     * get recent posts
     * @since: 5.1.1
     */
    
public function getPostsNextPrevious(){
        
$my_posts = array();
        
        
$startup_next_post get_next_post();
        if (!empty( 
$startup_next_post )){
            if(
method_exists($startup_next_post"to_array"))
                
$my_posts[] = $startup_next_post->to_array();
            else
                
$my_posts[] = (array)$startup_next_post;
        }    

        
$startup_previous_post get_previous_post();
        if (!empty( 
$startup_previous_post )){
            if(
method_exists($startup_previous_post"to_array"))
                
$my_posts[] = $startup_previous_post->to_array();
            else
                
$my_posts[] = (array)$startup_previous_post;
        }
        
        return 
$my_posts;
    }
    
    
    
/**
     * get products from categories (by the slider params).
     * @since: 5.1.0
     */
    
private function getProductsFromCategories($publishedOnly false){
        
$this->validateInited();
        
        
$catIDs $this->getParam("product_category");
        
$data RevSliderFunctionsWP::getCatAndTaxData($catIDs);
        
        
$taxonomies $data["tax"];
        
$catIDs $data["cats"];
        
        
$sortBy $this->getParam("product_sortby",self::DEFAULT_POST_SORTBY);
        
$sortDir $this->getParam("product_sort_direction",self::DEFAULT_POST_SORTDIR);
        
$maxPosts $this->getParam("max_slider_products","30");
        if(empty(
$maxPosts) || !is_numeric($maxPosts))
            
$maxPosts = -1;
        
        
$postTypes $this->getParam("product_types","any");
            
        
//set direction for custom order
        
if($sortBy == RevSliderFunctionsWP::SORTBY_MENU_ORDER)
            
$sortDir RevSliderFunctionsWP::ORDER_DIRECTION_ASC;
        
        
//Events integration
        
$arrAddition = array();
        if(
$publishedOnly == true)            
            
$arrAddition["post_status"] = RevSliderFunctionsWP::STATE_PUBLISHED;
        
        
        
$arrAddition array_merge($arrAdditionRevSliderWooCommerce::getMetaQuery($this->getParams()));
        
$tax_addition = array();
        
        if(isset(
$arrAddition['tax_query'])){
            
$tax_addition $arrAddition['tax_query'];
            unset(
$arrAddition['tax_query']);
        }
        
        
        
$slider_id $this->getID();
        
$arrPosts RevSliderFunctionsWP::getPostsByCategory($slider_id$catIDs,$sortBy,$sortDir,$maxPosts,$postTypes,$taxonomies,$arrAddition,$tax_addition);
        
        return(
$arrPosts);
    }
    
    
    
/**
     * 
     * get posts from specific posts list
     */
    
private function getPostsFromSpecificList($gal_ids = array()){
        
        
$is_gal false;
        
$additional = array();

        if(!empty(
$gal_ids) && $gal_ids[0]){
            
$strPosts $gal_ids;
            
$strPosts apply_filters('revslider_set_posts_list_gal'$strPosts$this->getID());
            
$is_gal true;
        }else{
            if(isset(
$gal_ids[0])){
                unset(
$gal_ids[0]);
                
$strPosts implode(","$gal_ids);
                
$additional['order'] = "none";
                
$additional['orderby'] = "post__in";
            }else {
                
$strPosts $this->getParam("posts_list""");    
                
$additional['order'] = $this->getParam("posts_sort_direction""DESC");
                
$additional['orderby'] = $this->getParam("post_sortby""");
            }
            
$strPosts apply_filters('revslider_set_posts_list'$strPosts$this->getID());
        }
        
        
$slider_id $this->getID();
        
        
$arrPosts RevSliderFunctionsWP::getPostsByIDs($strPosts$slider_id$is_gal$additional);

        return(
$arrPosts);
    }
    
    
/**
     * update sortby option
     */
    
public function updatePostsSortbyFromData($data){
        
        
$sliderID RevSliderFunctions::getVal($data"sliderID");
        
$sortBy RevSliderFunctions::getVal($data"sortby");
        
RevSliderFunctions::validateNotEmpty($sortBy,"sortby");
        
        
$this->initByID($sliderID);
        
$arrUpdate = array();
        
$arrUpdate["post_sortby"] = $sortBy;
        
        
$this->updateParam($arrUpdate); 
    }

    
/**
     * 
     * replace image urls
     */
    
public function replaceImageUrlsFromData($data){
        
        
$sliderID RevSliderFunctions::getVal($data"sliderid");
        
$urlFrom RevSliderFunctions::getVal($data"url_from");
        
RevSliderFunctions::validateNotEmpty($urlFrom,"url from");
        
$urlTo RevSliderFunctions::getVal($data"url_to");
        
        
$this->initByID($sliderID);
        
        
$arrSildes $this->getSlides();
        foreach(
$arrSildes as $slide){
            
$slide->replaceImageUrls($urlFrom$urlTo);
        }
        
        
        
        
$slide = new RevSlide();
        
$staticID $slide->getStaticSlideID($sliderID);
        
        if(
$staticID !== false){
            
$slide->initByStaticID($staticID);
            
$slide->replaceImageUrls($urlFrom$urlTo$staticID);
        }
    }
    
    public function 
resetSlideSettings($data){
        
$sliderID RevSliderFunctions::getVal($data"sliderid");
        
        
$this->initByID($sliderID);
        
        
$arrSildes $this->getSlides();
        foreach(
$arrSildes as $slide){
            
$slide->reset_slide_values($data);
        }
    }
    
    public static function 
clear_error_in_string($m){
        return 
's:'.strlen($m[2]).':"'.$m[2].'";';
    }
    
}

/**
 * old classname extends new one (old classnames will be obsolete soon)
 * @since: 5.0
 **/
class RevSlider extends RevSliderSlider {}
?>

All system for education purposes only. For more tools: Telegram @jackleet

Mr.X Private Shell

Logo
-
New File | New Folder
Command
SQL