/** * * 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); } }