<?php
/**
* @Template: revslider.php
* @since: 1.0.0
* @author: Case-Themes
* @descriptions:
* @create: 28-Nov-17
*/
if(!defined('ABSPATH')){
die();
}
function ct_ie_revslider_import($folder)
{
global $import_result;
/* if class RevSlider does not exists. */
if (!class_exists('RevSlider'))
return;
$folder = trailingslashit($folder . '/revslider/');
if(is_dir($folder)){
$slider = new RevSliderSliderImport();
$files = scandir($folder);
$files = array_diff($files, array('..', '.'));
foreach ($files as $_f){
$_FILES["import_file"]["tmp_name"] = $folder . $_f;
$_FILES['import_file']['error'] = '';
ob_start();
$slider->import_slider();
$log[] = ob_get_clean();
$import_result = $log;
}
}
}
function ct_ie_revslider_export($folder){
global $wp_filesystem;
if(class_exists('RevSliderSlider')){
if(!is_dir($folder . '/revslider/'))
wp_mkdir_p($folder . '/revslider/');
$slider = new RevSliderSlider();
$arrSliders = $slider->get_sliders();
if ( $arrSliders ) {
foreach ( $arrSliders as $slider ) {
ct_ie_revslider_export_slider($slider, $folder);
}
}
}
}
/**
* export slider from data, output a file for download
* RevSliderSliderExport::export_slider()
*/
function ct_ie_revslider_export_slider($slider, $folder){
$id = $slider->id;
$slider_export = new RevSliderSliderExport();
//slider needs to be initialized :)
if($id > 0){
$slider_export->init_by_id($id);
}
//check if an update is needed
if(version_compare($slider_export->get_param(array('settings', 'version')), get_option('revslider_update_revision', '6.0.0'), '<')){
$upd = new RevSliderPluginUpdate();
$upd->upgrade_slider_to_latest($slider_export);
$slider_export->init_by_id($id);
}
$slider_export->set_parameters();
$slider_export->remove_image_ids();
$slider_export->remove_background_image();
$slider_export->add_used_images();
$slider_export->add_used_videos();
$slider_export->add_used_navigations();
$slider_export->add_used_svg();
$slider_export->modify_used_data();
$slider_export->serialize_export_data();
$slider_export->serialize_navigation_data();
$slider_export->prepare_caption_css();
$slider_export->serialize_animation_data();
$slider_export->create_export_zip();
$slider_export->add_svg_to_zip();
$slider_export->add_images_videos_to_zip();
$slider_export->add_slider_export_to_zip();
$slider_export->add_animations_to_zip();
$slider_export->add_styles_to_zip();
$slider_export->add_navigation_to_zip();
$slider_export->add_static_styles_to_zip();
$slider_export->add_info_to_zip();
$slider_export->close_export_zip();
// $slider_export->push_zip_to_client();
rename($slider_export->export_path_zip, $folder . '/revslider/' . $slider->get_alias() . '.zip');
$slider_export->delete_export_zip();
return $slider_export->export_path_zip;
}
function old_ct_ie_revslider_export($folder){
global $wp_filesystem;
if(class_exists('RevSlider')){
if(!is_dir($folder . '/revslider/'))
wp_mkdir_p($folder . '/revslider/');
$slider = new RevSlider();
$arrSliders = $slider->getArrSliders();
$slider_class = new RevSliderSlider();
if ( $arrSliders ) {
foreach ( $arrSliders as $slider ) {
$slider_class->initByID($slider->getID());
$rev_file = ct_ie_revslider_export_slider($slider_class, $slider->getAlias(), $slider->getParams());
rename($rev_file, $folder . '/revslider/' . $slider->getAlias() . '.zip');
}
}
}
}
/**
*
* export slider from data, output a file for download
*/
function old_ct_ie_revslider_export_slider($slider, $alias, $sliderParams, $useDummy = false){
$arrSlides = $slider->getSlidesForExport($useDummy);
$arrStaticSlide = $slider->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
if(!empty($arrSlides)){
foreach($arrSlides as $k => $s){
if(isset($arrSlides[$k]['params']['image_id'])) unset($arrSlides[$k]['params']['image_id']);
}
}
if(!empty($arrStaticSlide)){
foreach($arrStaticSlide as $k => $s){
if(isset($arrStaticSlide[$k]['params']['image_id'])) unset($arrStaticSlide[$k]['params']['image_id']);
}
}
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' || $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['type']) && $layer['type'] == 'svg'){
if(isset($layer['svg']) && isset($layer['svg']->src)){
$usedSVG[$layer['svg']->src] = true;
}
}
}
}
}
}
$arrSliderExport = array("params"=>$sliderParams,"slides"=>$arrSlides);
if(!empty($arrStaticSlide))
$arrSliderExport['static_slides'] = $arrStaticSlide;
$strExport = serialize($arrSliderExport);
//$strExportAnim = serialize(RevSliderOperations::getFullCustomAnimations());
$exportname = (!empty($alias)) ? $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::$uploadsUrlExportZip, ZIPARCHIVE::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';
foreach($usedSVG as $file => $val){
if(strpos($file, 'http') !== false){ //remove all up to wp-content folder
$checkpath = str_replace($content_url, '', $file);
if(is_file($content_path.$checkpath)){
/*if(!$usepcl){
$zip->addFile($content_path.$checkpath, 'svg/'.$checkpath);
}else{
$v_list = $pclzip->add($content_path.$checkpath, PCLZIP_OPT_REMOVE_PATH, $content_path, PCLZIP_OPT_ADD_PATH, 'svg/');
}*/
$strExport = str_replace($file, $checkpath, $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){
$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.$checkpath, PCLZIP_OPT_REMOVE_PATH, $upload_dir, PCLZIP_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.$checkpath, PCLZIP_OPT_REMOVE_PATH, $upload_dir_multisiteless, PCLZIP_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.$file, PCLZIP_OPT_REMOVE_PATH, $upload_dir, PCLZIP_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.$file, PCLZIP_OPT_REMOVE_PATH, $upload_dir_multisiteless, PCLZIP_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($alias)); //add slider settings
}else{
$list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'info.cfg',PCLZIP_ATT_FILE_CONTENT => md5($alias))));
if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
}
}
if(!$usepcl){
$zip->close();
}else{
//do nothing
}
return RevSliderGlobals::$uploadsUrlExportZip;
} |