/**
  * 
  * export slider from data, output a file for download
  */
 public function exportSlider($useDummy = false)
 {
     $export_zip = true;
     if (function_exists("unzip_file") == false) {
         if (class_exists("ZipArchive") == false) {
             $export_zip = false;
         }
     }
     if (!class_exists('ZipArchive')) {
         $export_zip = false;
     }
     if ($export_zip) {
         $zip = new ZipArchive();
         $success = $zip->open(RevSliderGlobals::$urlExportZip, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
         if ($success !== true) {
             throwError("Can't create zip file: " . RevSliderGlobals::$urlExportZip);
         }
         $this->validateInited();
         $sliderParams = $this->getParamsForExport();
         $arrSlides = $this->getSlidesForExport($useDummy);
         $arrStaticSlide = $this->getStaticSlideForExport($useDummy);
         $usedCaptions = array();
         $usedAnimations = array();
         $usedImages = array();
         $usedVideos = 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);
         }
         if (!empty($cfw) && count($cfw) > 0) {
             foreach ($cfw as $key => $slide) {
                 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['type']) && $layer['type'] == 'video') {
                             $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 (isset($video_data['previewimage']) && $video_data['previewimage'] != '') {
                                     $usedImages[$video_data['previewimage']] = true;
                                 }
                             }
                         }
                     }
                 }
             }
         }
         /*if(!empty($arrStaticSlide) && count($arrStaticSlide) > 0){
         				foreach($arrStaticSlide as $key => $slide){
         					if(isset($slide['params']['image']) && $slide['params']['image'] != '') $usedImages[$slide['params']['image']] = 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;
         					}
         					
         					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['type']) && $layer['type'] == 'video'){
         								
         								$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(isset($video_data['previewimage']) && $video_data['previewimage'] != '') $usedImages[$video_data['previewimage']] = true;
         								}
         							}
         						}
         					}
         				}
         			}*/
         $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";
         $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[] = RevSliderOperations::getFullCustomAnimationByID($anim);
                 }
             }
             if (!empty($animation)) {
                 $animations = serialize($animation);
             }
         }
         $usedImages = array_merge($usedImages, $usedVideos);
         //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) {
                         $remove = false;
                         $checkpath = str_replace(array($cont_url, $cont_url_no_www), '', $file);
                         if (is_file($upload_dir . $checkpath)) {
                             $zip->addFile($upload_dir . $checkpath, 'images/' . $checkpath);
                             $remove = true;
                         } elseif (is_file($upload_dir_multisiteless . $checkpath)) {
                             $zip->addFile($upload_dir_multisiteless . $checkpath, 'images/' . $checkpath);
                             $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)) {
                             $zip->addFile($upload_dir . $file, 'images/' . $file);
                         } elseif (is_file($upload_dir_multisiteless . $file)) {
                             $zip->addFile($upload_dir_multisiteless . $file, 'images/' . $file);
                         }
                     }
                 }
             }
         }
         $zip->addFromString("slider_export.txt", $strExport);
         //add slider settings
         if (strlen(trim($animations)) > 0) {
             $zip->addFromString("custom_animations.txt", $animations);
         }
         //add custom animations
         if (strlen(trim($styles)) > 0) {
             $zip->addFromString("dynamic-captions.css", $styles);
         }
         //add dynamic styles
         $static_css = RevSliderOperations::getStaticCss();
         $zip->addFromString("static-captions.css", $static_css);
         //add slider settings
         $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
             $zip->addFromString('info.cfg', md5($this->alias));
             //add slider settings
         }
         $zip->close();
         header("Content-type: application/zip");
         header("Content-Disposition: attachment; filename=" . $exportname);
         header("Pragma: no-cache");
         header("Expires: 0");
         readfile(RevSliderGlobals::$urlExportZip);
         @unlink(RevSliderGlobals::$urlExportZip);
         //delete file after sending it to user
     } else {
         //fallback, do old export
         $this->validateInited();
         $sliderParams = $this->getParamsForExport();
         $arrSlides = $this->getSlidesForExport();
         $arrSliderExport = array("params" => $sliderParams, "slides" => $arrSlides);
         $strExport = serialize($arrSliderExport);
         if (!empty($this->alias)) {
             $filename = $this->alias . ".txt";
         } else {
             $filename = "slider_export.txt";
         }
         RevSliderFunctions::downloadFile($strExport, $filename);
     }
 }