Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 3.144.3.235
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/diixadigital.com/wp-content/plugins/revslider/admin/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/diixadigital.com/wp-content/plugins/revslider/admin/includes/export.class.php
<?php
/**
 * @author    ThemePunch <info@themepunch.com>
 * @link      https://www.themepunch.com/
 * @copyright 2022 ThemePunch
 */

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

class RevSliderSliderExport extends RevSliderSlider {
	
	private $used_captions;
	private $used_animations;
	private $used_images;
	private $used_svg;
	private $used_videos;
	private $used_navigations;
	
	private $slider_id;
	private $slider_title;
	public $slider_alias;
	private $slider_params;
	private $slider_settings;
	private $export_slides;
	private $static_slide;
	private $all_slides;
	private $export_data;
	private $navigation_data;
	private $style_data;
	private $animations_data;
	public $usepcl;
	public $zip;
	public $export_path_zip;
	public $export_url_zip;
	public $pclzip;
	
	
	public function __construct($title = 'export'){
		$this->used_captions	= array();
		$this->used_animations	= array();
		$this->used_images		= array();
		$this->used_svg			= array();
		$this->used_videos		= array();
		$this->used_navigations	= array();
		$this->all_slides		= array();
		$this->navigation_data	= false;
		$this->style_data		= '';
		$this->animations_data	= '';
		$this->usepcl			= false;
		
		$wp_upload_dir			= wp_upload_dir();
		$this->export_path_zip	= $this->get_val($wp_upload_dir, 'basedir').'/'.$title.'.zip';
		$this->export_url_zip	= $this->get_val($wp_upload_dir, 'baseurl').'/'.$title.'.zip';
	}
	
	/**
	 * return the used images, for SEO
	 */
	public function get_used_images(){
		return $this->used_images;
	}
	
	/**
	 * export slider from data, output a file for download
	 * @before: RevSliderSlider::exportSlider();
	 */
	public function export_slider($id = 0){
		//slider needs to be initialized :)
		if($id > 0){
			$this->init_by_id($id);
		}
		
		//check if an update is needed
		if(version_compare($this->get_param(array('settings', 'version')), get_option('revslider_update_version', '6.0.0'), '<')){
			$upd = new RevSliderPluginUpdate();
			$upd->upgrade_slider_to_latest($this);
			$this->init_by_id($id);
		}
		
		$this->set_parameters();
		$this->remove_image_ids();
		$this->remove_background_image();
		
		$this->add_used_images();
		$this->add_used_videos();
		//$this->add_used_captions();
		//$this->add_used_animations();
		$this->add_used_navigations();
		$this->add_used_svg();
		
		$this->modify_used_data();
		
		$this->serialize_export_data();
		$this->serialize_navigation_data();
		$this->prepare_caption_css();
		$this->serialize_animation_data();
		
		$this->create_export_zip();
		$this->add_svg_to_zip();
		$this->add_images_videos_to_zip();
		$this->add_slider_export_to_zip();
		$this->add_animations_to_zip();
		$this->add_styles_to_zip();
		$this->add_navigation_to_zip();
		$this->add_static_styles_to_zip();
		$this->add_info_to_zip();
		$this->close_export_zip();
		$this->push_zip_to_client();
		$this->delete_export_zip();
		
		exit;
	}
	
	
	/**
	 * set slides and slider parameters
	 **/
	public function set_parameters(){
		$this->slider_id		= $this->get_id();
		$this->slider_title		= $this->get_title();
		$this->slider_alias		= $this->get_alias();
		$this->slider_params	= $this->get_params();
		$this->slider_settings	= $this->get_settings();
		$this->export_slides	= $this->get_slides_for_export();
		$this->static_slide		= $this->get_static_slide_for_export();
		
		if(!empty($this->export_slides) && count($this->export_slides) > 0)	$this->all_slides = array_merge($this->all_slides, $this->export_slides);
		if(!empty($this->static_slide) && count($this->static_slide) > 0)	$this->all_slides = array_merge($this->all_slides, $this->static_slide);
	}
	
	
	/**
	 * remove the image_id as its not needed in export
	 **/
	public function remove_image_ids(){
		if($this->get_val($this->slider_params, array('troubleshooting', 'alternateURLId'), false) !== false){
			unset($this->slider_params['troubleshooting']['alternateURLId']);
		}
		
		if(!empty($this->export_slides)){
			foreach($this->export_slides as $k => $s){
				if($this->get_val($this->export_slides[$k], array('params', 'bg', 'imageId'), false) !== false){
					unset($this->export_slides[$k]['params']['bg']['imageId']);
				}
				/*if($this->get_val($this->export_slides[$k], array('params', 'bg', 'videoId'), false) !== false){ //TODO maybe not delete, depending on if this is a wordpress media library id (then yes) or not
					unset($this->export_slides[$k]['params']['bg']['videoId']);
				}*/
				if($this->get_val($this->export_slides[$k], array('params', 'thumb', 'customThumbSrcId'), false) !== false){
					unset($this->export_slides[$k]['params']['thumb']['customThumbSrcId']);
				}
				if($this->get_val($this->export_slides[$k], array('params', 'thumb', 'customAdminThumbSrcId'), false) !== false){
					unset($this->export_slides[$k]['params']['thumb']['customAdminThumbSrcId']);
				}
				if($this->get_val($this->export_slides[$k], array('params', 'bg', 'lastLoadedImage'), false) !== false){
					unset($this->export_slides[$k]['params']['bg']['lastLoadedImage']);
				}
			}
		}
		
		if(!empty($this->static_slide)){
			foreach($this->static_slide as $k => $s){
				if($this->get_val($this->static_slide[$k], array('params', 'bg', 'imageId'), false) !== false){
					unset($this->static_slide[$k]['params']['bg']['imageId']);
				}
				/*if($this->get_val($this->static_slide[$k], array('params', 'bg', 'videoId'), false) !== false){ //TODO maybe not delete, depending on if this is a wordpress media library id (then yes) or not
					unset($this->static_slide[$k]['params']['bg']['videoId']);
				}*/
				if($this->get_val($this->static_slide[$k], array('params', 'thumb', 'customThumbSrcId'), false) !== false){
					unset($this->static_slide[$k]['params']['thumb']['customThumbSrcId']);
				}
				if($this->get_val($this->static_slide[$k], array('params', 'thumb', 'customAdminThumbSrcId'), false) !== false){
					unset($this->static_slide[$k]['params']['thumb']['customAdminThumbSrcId']);
				}
				if($this->get_val($this->static_slide[$k], array('params', 'bg', 'lastLoadedImage'), false) !== false){
					unset($this->static_slide[$k]['params']['bg']['lastLoadedImage']);
				}
			}
		}
	}
	
	
	/**
	 * remove the background image on transparent or solid colored slides
	 **/
	public function remove_background_image(){
		if(!empty($this->export_slides)){
			foreach($this->export_slides as $k => $s){
				if(isset($this->export_slides[$k]['params']) && (in_array($this->get_val($this->export_slides[$k]['params'], array('bg', 'type')), array('solid', 'trans', 'transparent'), true))){
					if($this->get_val($this->export_slides[$k]['params'], array('bg', 'image'), false) !== false)
						$this->export_slides[$k]['params']['layout']['bg']['image'] = '';
				}
			}
		}
		if(!empty($this->static_slide)){
			foreach($this->static_slide as $k => $s){
				if(isset($this->static_slide[$k]['params']) && (in_array($this->get_val($this->static_slide[$k]['params'], array('bg', 'type')), array('solid', 'trans', 'transparent'), true))){
					if($this->get_val($this->static_slide[$k]['params'], array('bg', 'image'), false) !== false)
						$this->static_slide[$k]['params']['bg']['image'] = '';
				}
			}
		}
	}
	
	
	/**
	 * add all used images
	 **/
	public function add_used_images(){
		$image = $this->get_val($this->slider_params, array('layout', 'bg', 'image'));
		$a_url = $this->get_val($this->slider_params, array('troubleshooting', 'alternateURL'));
		
		if($image != '') $this->used_images[$image] = true;
		if($a_url != '') $this->used_images[$a_url] = true;
		
		if(!empty($this->all_slides) && count($this->all_slides) > 0){
			foreach($this->all_slides as $key => $slide){
				$params = $this->get_val($slide, 'params', array());
				$layers = $this->get_val($slide, 'layers', array());
				
				$image = $this->get_val($params, array('bg', 'image'));
				$thumb = $this->get_val($params, array('thumb', 'customThumbSrc'));
				$a_thumb = $this->get_val($params, array('thumb', 'customAdminThumbSrc'));
				
				if($image != '') $this->used_images[$image] = true;
				if($thumb != '') $this->used_images[$thumb] = true;
				if($a_thumb != '') $this->used_images[$a_thumb] = true;
				
				if(!empty($layers)){
					foreach($layers as $layer){
						$type		= $this->get_val($layer, 'type', 'text');
						$image		= $this->get_val($layer, array('media', 'imageUrl'));
						$bg_image	= $this->get_val($layer, array('idle', 'backgroundImage'));
						
						if($image != '') $this->used_images[$image] = true;
						if($bg_image != '')	$this->used_images[$bg_image] = true;
						
						if(in_array($type, array('video', 'audio'))){
							$poster = $this->get_val($layer, array('media', 'posterUrl'), '');
							if($poster != '') $this->used_images[$poster] = true;
						}
						if($type === 'video'){
							$very_big	= $this->get_val($layer, array('media', 'thumbs', 'veryBig'));
							$big		= $this->get_val($layer, array('media', 'thumbs', 'big'));
							$large		= $this->get_val($layer, array('media', 'thumbs', 'large'));
							$medium		= $this->get_val($layer, array('media', 'thumbs', 'medium'));
							$small		= $this->get_val($layer, array('media', 'thumbs', 'small'));
							
							$very_big	= (is_array($very_big) && isset($very_big['url'])) ? $very_big['url'] : $very_big;
							$big		= (is_array($big) && isset($big['url'])) ? $big['url'] : $big;
							$large		= (is_array($large) && isset($large['url'])) ? $large['url'] : $large;
							$medium		= (is_array($medium) && isset($medium['url'])) ? $medium['url'] : $medium;
							$small		= (is_array($small) && isset($small['url'])) ? $small['url'] : $small;
							
							if($very_big != '') $this->used_images[$very_big] = true;
							if($big != '')		$this->used_images[$big] = true;
							if($large != '')	$this->used_images[$large] = true;
							if($medium != '')	$this->used_images[$medium] = true;
							if($small != '')	$this->used_images[$small] = true;
						}
					}
				}
			}
		}
	}
	
	
	/**
	 * add all used videos, also removing values if unneeded
	 **/
	public function add_used_videos(){
		if(!empty($this->all_slides) && count($this->all_slides) > 0){
			foreach($this->all_slides as $k => $slide){
				$params = $this->get_val($slide, 'params', array());
				$layers = $this->get_val($slide, 'layers', array());
				$static = $this->get_val($params, array('static', 'isstatic'), false);
				//html5 video
				if($this->get_val($params, array('bg', 'type')) == 'html5'){
					if($this->get_val($params, array('bg', 'mpeg')) != '')	$this->used_videos[$this->get_val($params, array('bg', 'mpeg'))] = true;
					if($this->get_val($params, array('bg', 'webm')) != '')	$this->used_videos[$this->get_val($params, array('bg', 'webm'))] = true;
					if($this->get_val($params, array('bg', 'ogv')) != '')	$this->used_videos[$this->get_val($params, array('bg', 'ogv'))] = true;
				}else{
					if($static){
						if($this->get_val($params, array('bg', 'mpeg')) != '')	$this->set_val($this->static_slide, array(0, 'params', 'bg', 'mpeg'), '');
						if($this->get_val($params, array('bg', 'webm')) != '')	$this->set_val($this->static_slide, array(0, 'params', 'bg', 'webm'), '');
						if($this->get_val($params, array('bg', 'ogv')) != '')	$this->set_val($this->static_slide, array(0, 'params', 'bg', 'ogv'), '');
					}else{
						if($this->get_val($params, array('bg', 'mpeg')) != '')	$this->set_val($this->export_slides, array($k, 'params', 'bg', 'mpeg'), '');
						if($this->get_val($params, array('bg', 'webm')) != '')	$this->set_val($this->export_slides, array($k, 'params', 'bg', 'webm'), '');
						if($this->get_val($params, array('bg', 'ogv')) != '')	$this->set_val($this->export_slides, array($k, 'params', 'bg', 'ogv'), '');
					}
				}
				
				//image thumbnail
				if(!empty($layers)){
					foreach($layers as $lk => $layer){
						if(in_array($this->get_val($layer, 'type'), array('video', 'audio'))){
							
							if($this->get_val($layer, array('media', 'mediaType')) == 'html5'){
								if($this->get_val($layer, array('media', 'mp4Url'), '') != '')	$this->used_videos[$this->get_val($layer, array('media', 'mp4Url'), '')] = true;
								if($this->get_val($layer, array('media', 'webmUrl'), '') != '')	$this->used_videos[$this->get_val($layer, array('media', 'webmUrl'), '')] = true;
								if($this->get_val($layer, array('media', 'ogvUrl'), '') != '')	$this->used_videos[$this->get_val($layer, array('media', 'ogvUrl'), '')] = true;
							}else{ //if(!in_array($this->get_val($layer, array('media', 'mediaType')), array('html5', 'audio')))
								if($this->get_val($layer, array('media', 'audioUrl')) != '') $this->used_videos[$this->get_val($layer, array('media', 'audioUrl'))] = true;
								$this->set_val($layer, array('media', 'mp4Url'), '');
								$this->set_val($layer, array('media', 'webmUrl'), '');
								$this->set_val($layer, array('media', 'ogvUrl'), '');
							}
							
							if($static){
								$this->static_slide[0]['layers'][$lk] = $layer;
							}else{
								$this->export_slides[$k]['layers'][$lk] = $layer;
							}
						}
					}
				}
			}
		}
	}
	
	
	/**
	 * add all used captions
	 * @obsolete since: 6.0
	 **/
	public function add_used_captions(){
		if(!empty($this->all_slides) && count($this->all_slides) > 0){
			foreach($this->all_slides as $key => $slide){
				$layers = $this->get_val($slide, 'layers', array());
				
				if(!empty($layers)){
					foreach($layers as $lk => $layer){
						if($this->get_val($layer, array('idle', 'style')) != '') $this->used_captions[$this->get_val($layer, array('idle', 'style'))] = true;
					}
				}
			}
		}
	}
	
	
	/**
	 * add all used animations
	 * @obsolete since: 6.0
	 **/
	public function add_used_animations(){
		if(!empty($this->all_slides) && count($this->all_slides) > 0){
			foreach($this->all_slides as $key => $slide){
				$layers = $this->get_val($slide, 'layers', array());
				
				if(!empty($layers)){
					foreach($layers as $lk => $layer){
						if(strpos($this->get_val($layer, 'animation'), 'customin') !== false)		$this->used_animations[str_replace('customin-', '', $this->get_val($layer, 'animation'))] = true;
						if(strpos($this->get_val($layer, 'endanimation'), 'customout') !== false)	$this->used_animations[str_replace('customout-', '', $this->get_val($layer, 'endanimation'))] = true;
					}
				}
			}
		}
	}
	
	
	/**
	 * add navigations if not default animation
	 **/
	public function add_used_navigations(){
		$nav = new RevSliderNavigation();
		
		$navigations = $nav->get_all_navigations(false, true);
		
		$arrows	 = $this->get_val($this->slider_params, array('nav', 'arrows', 'style'), false);
		$bullets = $this->get_val($this->slider_params, array('nav', 'bullets', 'style'), false);
		$thumbs	 = $this->get_val($this->slider_params, array('nav', 'thumbs', 'style'), false);
		$tabs	 = $this->get_val($this->slider_params, array('nav', 'tabs', 'style'), false);
		
		if($arrows !== false)	$this->used_navigations[$arrows] = true;
		if($bullets !== false)	$this->used_navigations[$bullets] = true;
		if($thumbs !== false)	$this->used_navigations[$thumbs] = true;
		if($tabs !== false)		$this->used_navigations[$tabs] = true;
	}
	
	
	/**
	 * add all used svg
	 **/
	public function add_used_svg(){
		if(!empty($this->all_slides) && count($this->all_slides) > 0){
			foreach($this->all_slides as $key => $slide){
				$layers = $this->get_val($slide, 'layers');
				
				if(!empty($layers)){
					foreach($layers as $lk => $layer){
						if($this->get_val($layer, 'type') == 'svg'){
							$svg = $this->get_val($layer, array('svg', 'source'));
							if($svg !== ''){
								$this->used_svg[$svg] = true;
							}
						}
					}
				}
			}
		}
	}
	
	
	/**
	 * modify the used stuff data
	 **/
	public function modify_used_data(){
		$d = array('used_svg' => $this->used_svg, 'used_images' => $this->used_images, 'used_videos' => $this->used_videos);
		$d = apply_filters('revslider_exportSlider_usedMedia', $d, $this->all_slides, $this->slider_params); //$this->export_slides, $this->static_slide, 
		
		$this->used_svg		= $d['used_svg'];
		$this->used_images	= $d['used_images'];
		$this->used_videos	= $d['used_videos'];
	}
	
	
	/**
	 * serialize the export data
	 **/
	public function serialize_export_data(){
		$data = array(
			'id'	 => $this->slider_id,
			'title'	 => $this->slider_title,
			'alias'	 => $this->slider_alias,
			'params' => $this->slider_params,
			'slides' => $this->export_slides,
			'settings' => $this->slider_settings
		);
		
		if(!empty($this->static_slide)) $data['static_slides'] = $this->static_slide;
		
		$data = apply_filters('revslider_exportSlider_export_data', $data, $this);
		
		$this->export_data = json_encode($data);
	}
	
	
	/**
	 * serialize the navigation data
	 **/
	public function serialize_navigation_data(){
		if(!empty($this->used_navigations)){
			$nav = new RevSliderNavigation();
			$this->navigation_data = $nav->export_navigation($this->used_navigations);
			if($this->navigation_data !== false) $this->navigation_data = json_encode($this->navigation_data);
		}
	}
	
	
	/**
	 * prepare the css for export
	 **/
	public function prepare_caption_css(){
		if(!empty($this->used_captions)){
			$captions = array();
			foreach($this->used_captions as $class => $val){
				$caption = $this->get_captions_content($class);
				if(!empty($caption)){
					unset($caption['id']);
					$captions[] = $caption;
				}
			}
			$this->style_data = json_encode($captions);
		}
	}
	
	
	/**
	 * serialize the animation data
	 **/
	public function serialize_animation_data(){
		if(!empty($this->used_animations)){
			$animations = array();
			foreach($this->used_animations as $anim => $val){
				$animation = $this->get_custom_animation_by_id($anim);
				if($animation !== false) $animations[] = $animation;
			}
			if(!empty($animations)) $this->animations_data = json_encode($animations);
		}
	}
	
	
	/**
	 * get animation params by id
	 * @before: RevSliderOperations::getFullCustomAnimationByID()
	 */
	public function get_custom_animation_by_id($id){
		global $revslider_animations;

		$this->fill_animations();
		if(empty($revslider_animations)) return false;
		
		foreach($revslider_animations as $animation){
			if($animation['id'] == $id){
				return array(
					'id'	 => $animation['id'],
					'handle' => $animation['handle'],
					'params' => $animation['params'],
					'settings' => $animation['settings']
				);
			}
		}
		
		return false;
	}
	
	
	/**
	 * create the blank zip file to be used further on
	 **/
	public function create_export_zip(){
		$this->usepcl = false;
		
		if(file_exists($this->export_path_zip)){
			@unlink($this->export_path_zip); //delete file to start with a fresh one
		}
		
		if(class_exists('ZipArchive')){
			$this->zip = new ZipArchive;
			$success = $this->zip->open($this->export_path_zip, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
			
			if($success !== true)
				$this->throw_error(__("Can't create zip file: ", 'revslider').$this->export_path_zip);
		}else{
			//fallback to pclzip
			require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php');
			
			$this->pclzip = new PclZip($this->export_path_zip);
			
			//either the function uses die() or all is cool
			$this->usepcl = true;
		}
	}
	
	
	/**
	 * add svg to the zip file, by modifying data in $export_data
	 **/
	public function add_svg_to_zip(){
		if(empty($this->used_svg)) return;
		
		$c_url	= str_replace(array('http:', 'https:'), '', content_url());
		$c_path	= ABSPATH . 'wp-content';
		$ud		= wp_upload_dir();
		$up_dir	= $this->get_val($ud, 'baseurl');
		$up_dir	= str_replace(array('http:', 'https:'), '', $up_dir);
		$cont_url			= str_replace(array('http:', 'https:'), '', $this->get_val($ud, 'baseurl'));
		$cont_url_no_www	= str_replace('www.', '', $cont_url);
		
		foreach($this->used_svg as $file => $val){
			if(strpos($file, 'http') !== false){ //remove all up to wp-content folder
				$file		= str_replace(array('http:', 'https:'), '', $file);
				$_checkpath = str_replace(array($cont_url.'/', $cont_url_no_www.'/'), '', $file);
				$checkpath = str_replace($c_url, '', $file);
				$checkpath2 = str_replace($up_dir, '', $file);
				if($checkpath2 === $file){ //we have an SVG like whiteboard, fallback to older export
					$checkpath2 = $checkpath;
				}
				
				//check if file is in the upload folder, if yes, add it to the zip file
				if(strpos($file, $up_dir) !== false){
					if(!$this->usepcl){
						$this->zip->addFile($c_path.$checkpath, 'images/'.$_checkpath);
					}else{
						$this->pclzip->add($c_path.$checkpath, PCLZIP_OPT_REMOVE_PATH, $c_path, PCLZIP_OPT_ADD_PATH, $_checkpath);
					}
				}
				$file = str_replace('/', '\/', $file);
				$checkpath2 = str_replace('/', '\/', str_replace('/revslider/assets/svg', '', $checkpath2));

				if(is_file($c_path.$checkpath)){
					$this->export_data = str_replace(array('http:'.$file, 'https:'.$file), $checkpath2, $this->export_data);
				}
			}
		}
	}
	
	
	/**
	 * push images and videos to the zip file
	 **/
	public function add_images_videos_to_zip($root = false){
		$this->used_images = array_merge($this->used_images, $this->used_videos);
		
		if(!empty($this->used_images)){
			$upload_dir			= $this->get_upload_path();
			$upload_dir_multi	= wp_upload_dir();
			$cont_url			= $this->get_val($upload_dir_multi, 'baseurl');
			$cont_url2			= (strpos($cont_url, 'http://') !== false) ? str_replace('http://', 'https://', $cont_url) : str_replace('https://', 'http://', $cont_url);
			$cont_url_no_www	= str_replace('www.', '', $cont_url);
			$cont_url2_no_www	= str_replace('www.', '', $cont_url2);
			$upload_dir_multi	= $this->get_val($upload_dir_multi, 'basedir').'/';
			
			foreach($this->used_images as $file => $val){
				//replace double // except the http:// https://
				$file = str_replace(array('http://', 'https://'), '!!!!!', $file);
				$file = str_replace('//', '/', $file);
				$file = str_replace('!!!!!', 'http://', $file);
				
				$add_path		= ($root === false) ? 'images/' : '';
				$add_structure	= ($root === false) ? 'images/'.$file : $file;
				if($root === false){
					$file_push = $file;
				}else{
					$file_expl = explode('.', $file);
					$extension = strtolower(end($file_expl));
					if(in_array($extension, array('jpg', 'jpeg', 'png', 'gif'))){
						$file_push = 'thumb.'.strtolower(end($file_expl));
					}else{
						$file_push = 'video.'.strtolower(end($file_expl));
					}
				}
				
				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.'/', $cont_url2.'/', $cont_url2_no_www.'/'), '', $file);
					
					$add_checkpath = ($root === false) ? 'images/'.$checkpath : $checkpath;
					if($root === true){
						$add_checkpath = explode('/', $add_checkpath);
						$add_checkpath = end($add_checkpath);
					}
					
					if(is_file($upload_dir.$checkpath)){
						if(!$this->usepcl){
							$this->zip->addFile($upload_dir.$checkpath, $add_checkpath);
						}else{
							$this->pclzip->add($upload_dir.$checkpath, PCLZIP_OPT_REMOVE_PATH, $upload_dir, PCLZIP_OPT_ADD_PATH, $add_path);
						}
						$remove = true;
					}elseif(is_file($upload_dir_multi.$checkpath)){
						if(!$this->usepcl){
							$this->zip->addFile($upload_dir_multi.$checkpath, $add_checkpath);
						}else{
							$this->pclzip->add($upload_dir_multi.$checkpath, PCLZIP_OPT_REMOVE_PATH, $upload_dir_multi, PCLZIP_OPT_ADD_PATH, $add_path);
						}
						$remove = true;
					}
					
					if($remove){ //as its http, remove this from strexport

						/*
						 * fixes an issue where external urls were not getting processed
						*/
						try {
							$unescaped = json_encode(json_decode($this->export_data), JSON_UNESCAPED_SLASHES); // only available from php 5.4
						}
						catch(Exception $e) {
							$unescaped = $this->export_data;
						}
						
						$this->export_data = str_replace(array($cont_url . '/' . $checkpath, $cont_url_no_www . '/' . $checkpath), $checkpath, $unescaped);
						// $this->export_data = str_replace(array($cont_url.$checkpath, $cont_url_no_www.$checkpath), $checkpath, $this->export_data);
					}
				}else{
					if(is_file($upload_dir.$file)){
						if(!$this->usepcl){
							$this->zip->addFile($upload_dir.$file, $add_structure);
						}else{
							$this->pclzip->add($upload_dir.$file, PCLZIP_OPT_REMOVE_PATH, $upload_dir, PCLZIP_OPT_ADD_PATH, $add_path);
						}
					}elseif(is_file($upload_dir_multi.$file)){
						if(!$this->usepcl){
							$this->zip->addFile($upload_dir_multi.$file, $add_structure);
						}else{
							$this->pclzip->add($upload_dir_multi.$file, PCLZIP_OPT_REMOVE_PATH, $upload_dir_multi, PCLZIP_OPT_ADD_PATH, $add_path);
						}
					}
				}
			}
		}

	}
	
	
	/**
	 * push the slider, slides and layer data to the zip
	 **/
	public function add_slider_export_to_zip($filename = 'slider_export.txt'){
		if(!$this->usepcl){
			$this->zip->addFromString($filename, $this->export_data);
		}else{
			$list = $this->pclzip->add(array(array(PCLZIP_ATT_FILE_NAME => $filename, PCLZIP_ATT_FILE_CONTENT => $this->export_data)));
			if($list == 0){
				die("ERROR : '".$this->pclzip->errorInfo(true)."'");
			}
		}
	}
	
	
	/**
	 * push the custom animations to the zip
	 **/
	public function add_animations_to_zip(){
		if(strlen(trim($this->animations_data)) > 0){
			if(!$this->usepcl){
				$this->zip->addFromString('custom_animations.txt', $this->animations_data); //add custom animations
			}else{
				$list = $this->pclzip->add(array(array(PCLZIP_ATT_FILE_NAME => 'custom_animations.txt', PCLZIP_ATT_FILE_CONTENT => $this->animations_data)));
				if($list == 0){
					die("ERROR : '".$this->pclzip->errorInfo(true)."'");
				}
			}
		}
	}
	
	
	/**
	 * push the custom css styles to the zip
	 **/
	public function add_styles_to_zip(){
		if(strlen(trim($this->style_data)) > 0){
			if(!$this->usepcl){
				$this->zip->addFromString('styles.txt', $this->style_data);
			}else{
				$list = $this->pclzip->add(array(array(PCLZIP_ATT_FILE_NAME => 'styles.txt', PCLZIP_ATT_FILE_CONTENT => $this->style_data)));
				if($list == 0){
					die("ERROR : '".$this->pclzip->errorInfo(true)."'");
				}
			}
		}
	}
	
	
	/**
	 * push the custom navigations to the zip
	 **/
	public function add_navigation_to_zip(){
		if(strlen(trim($this->navigation_data)) > 0){
			if(!$this->usepcl){
				$this->zip->addFromString('navigation.txt', $this->navigation_data);
			}else{
				$list = $this->pclzip->add(array(array(PCLZIP_ATT_FILE_NAME => 'navigation.txt', PCLZIP_ATT_FILE_CONTENT => $this->navigation_data)));
				if($list == 0){
					die("ERROR : '".$this->pclzip->errorInfo(true)."'");
				}
			}
		}
	}
	
	
	/**
	 * push the static styles to the zip
	 **/
	public function add_static_styles_to_zip(){
		$static_css = $this->get_static_css();
		if(trim($static_css) !== ''){
			if(!$this->usepcl){
				$this->zip->addFromString("static-captions.css", $static_css); //add slider settings
			}else{
				$list = $this->pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'static-captions.css',PCLZIP_ATT_FILE_CONTENT => $static_css)));
				if ($list == 0) { die("ERROR : '".$this->pclzip->errorInfo(true)."'"); }
			}
		}
	}
	
	
	/**
	 * push the info.cfg to the zip
	 * allow for slider packs the automatic creation of the info.cfg
	 **/
	public function add_info_to_zip(){
		if(apply_filters('revslider_slider_pack_export', false)){
			if(!$this->usepcl){
				$this->zip->addFromString('info.cfg', md5($this->alias)); //add slider settings
			}else{
				$list = $this->pclzip->add(array(array(PCLZIP_ATT_FILE_NAME => 'info.cfg', PCLZIP_ATT_FILE_CONTENT => md5($this->alias))));
				if($list == 0){
					die("ERROR : '".$this->pclzip->errorInfo(true)."'");
				}
			}
		}
	}
	
	
	/**
	 * close the zip if we are not in pcl
	 **/
	public function close_export_zip(){
		if(!$this->usepcl){
			$this->zip->close();
		}
	}
	
	
	/**
	 * send the zip to the client browser
	 **/
	public function push_zip_to_client(){
		$exportname = (!empty($this->slider_alias)) ? $this->slider_alias.'.zip' : 'slider_export.zip';
		
		header('Content-type: application/zip');
		header('Content-Disposition: attachment; filename='.$exportname);
		header('Pragma: no-cache');
		header('Expires: 0');
		readfile($this->export_path_zip);
	}
	
	
	/**
	 * delete the export zip file, ignoring errors
	 **/
	public function delete_export_zip(){
		@unlink($this->export_path_zip);
	}
	
	
	/**
	 * Export a Zip with video, thumbnail and layergroup for import
	 * @dev function
	 **/
	public function export_layer_group($videoid, $thumbid, $layers){
		$this->create_export_zip();
		
		$this->slider_alias = 'layergroup';
		$this->used_images[$this->get_url_attachment_image($thumbid)] = true;
		$this->used_videos[$this->get_url_attachment_image($videoid)] = true;
		$this->add_images_videos_to_zip(true);
		$this->export_data = stripslashes($layers);
		$this->add_slider_export_to_zip('layers.txt');
		$this->close_export_zip();
		
		return $this->export_url_zip;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit