* @link http://www.themepunch.com/
* @copyright 2015 ThemePunch
*/
if( !defined( 'ABSPATH') ) exit();
class RevSliderSlide extends RevSliderElementsBase{
private $id;
private $sliderID;
private $slideOrder;
private $imageUrl;
private $imageID;
private $imageThumb;
private $imageFilepath;
private $imageFilename;
private $params;
private $arrLayers;
private $settings;
private $arrChildren = null;
private $slider;
private $static_slide = false;
private $postData;
public $templateID;
public function __construct(){
parent::__construct();
}
/**
*
* init slide by db record
*/
public function initByData($record){
$record = apply_filters('revslider_slide_initByData', $record);
$this->id = $record["id"];
$this->sliderID = $record["slider_id"];
$this->slideOrder = (isset($record["slide_order"])) ? $record["slide_order"] : '';
$params = $record["params"];
$params = (array)json_decode($params);
$layers = $record["layers"];
$layers = (array)json_decode($layers);
$layers = RevSliderFunctions::convertStdClassToArray($layers);
if(!isset($record["settings"])){
$settings = array();
}else{
$settings = $record["settings"];
}
if(empty($settings) || $settings==""){
$settings = array();
}else{
$settings = (array)json_decode($settings);
}
//$layers = $this->translateLayerSizes($layers);
$imageID = RevSliderFunctions::getVal($params, "image_id");
$imgResolution = RevSliderFunctions::getVal($params, 'image_source_type', 'full');
//get image url and thumb url
if(!empty($imageID)){
$this->imageID = $imageID;
$imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imageID, $imgResolution);
if(empty($imageUrl)){
$imageUrl = RevSliderFunctions::getVal($params, "image");
//$imgID = RevSliderBase::get_image_id_by_url($imageUrl);
$imgID = get_image_id_by_url($imageUrl);
// var_dump($imgID);die();
// if($imgID !== false){
// $imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imgID, $imgResolution);
// }
}
$this->imageThumb = RevSliderFunctionsWP::getUrlAttachmentImage($imageID,RevSliderFunctionsWP::THUMB_MEDIUM);
}else{
$imageUrl = RevSliderFunctions::getVal($params, "image");
//$imgID = RevSliderBase::get_image_id_by_url($imageUrl);
$imgID = get_image_id_by_url($imageUrl);
if($imgID !== false && $imgID !== null){
$imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($imgID, $imgResolution);
}else{ //we may be from the object library
$objlib = new RevSliderObjectLibrary();
$imageUrl = $objlib->get_correct_size_url($imageUrl, $imgResolution); //check for size to be used
}
}
if(is_ssl()){
$imageUrl = str_replace("http://", "https://", $imageUrl);
}
//set image path, file and url
$this->imageUrl = $imageUrl;
$this->imageFilepath = RevSliderFunctionsWP::getImagePathFromURL($this->imageUrl);
$realPath = RevSliderFunctionsWP::getPathContent().$this->imageFilepath;
if(file_exists($realPath) == false || is_file($realPath) == false)
$this->imageFilepath = "";
$this->imageFilename = basename($this->imageUrl);
$this->params = $params;
$this->arrLayers = $layers;
$this->settings = $settings;
//die("dsd");
}
//
// public function initByData($record){
//
// $this->id = $record["id"];
// $this->sliderID = $record["slider_id"];
// if(isset($record["slide_order"]))
// $this->slideOrder = @$record["slide_order"];
//
// $params = $record["params"];
// $params_org = htmlspecialchars_decode(trim($params));
// $params = (array)json_decode($params_org);
//
// $layers = $record["layers"];
// $layers_org = htmlspecialchars_decode(trim($layers));
// $layers = (array)json_decode($layers_org);
// $layers = UniteFunctionsRev::convertStdClassToArray($layers);
//
// // $imageID = UniteFunctionsRev::getVal($params, "image_id");
// $imageID = '';
//
// //get image url and thumb url
// if(!empty($imageID)){
// $this->imageID = $imageID;
//
// $imageUrl = UniteFunctionsWPRev::getUrlAttachmentImage($imageID);
// if(empty($imageUrl))
// $imageUrl = UniteFunctionsRev::getVal($params, "image");
//
// $this->imageThumb = UniteFunctionsWPRev::getUrlAttachmentImage($imageID,UniteFunctionsWPRev::THUMB_MEDIUM);
//
// }else{
// $imageUrl = UniteFunctionsRev::getVal($params, "image");
// }
//
// if(is_ssl()){
// $imageUrl = str_replace("http://", "https://", $imageUrl);
// }
//
// //dmp($imageUrl);exit();
//
// //set image path, file and url
// $this->imageUrl = $imageUrl;
//
// $this->imageFilepath = UniteFunctionsWPRev::getImagePathFromURL($this->imageUrl);
// $realPath = UniteFunctionsWPRev::getPathContent().$this->imageFilepath;
//
// if(file_exists($realPath) == false || is_file($realPath) == false)
// $this->imageFilepath = "";
//
// $this->imageFilename = basename($this->imageUrl);
//
// $this->params = $params;
// $this->arrLayers = $layers;
//
// }
/**
* set the image by image id
* @since: 5.0
*/
public function setImageByID($imageID, $size = 'full'){
$a = apply_filters('revslider_slide_setImageByID', array('imageID' => $imageID, 'size' => $size), $this);
$imageUrl = RevSliderFunctionsWP::getUrlAttachmentImage($a['imageID'], $a['size']);
if(!empty($imageUrl)){
$this->imageID = $a['imageID'];
$this->imageUrl = $imageUrl;
$this->imageThumb = RevSliderFunctionsWP::getUrlAttachmentImage($a['imageID'],RevSliderFunctionsWP::THUMB_MEDIUM);
$this->imageFilename = basename($this->imageUrl);
$this->imageFilepath = RevSliderFunctionsWP::getImagePathFromURL($this->imageUrl);
$realPath = RevSliderFunctionsWP::getPathContent().$this->imageFilepath;
if(file_exists($realPath) == false || is_file($realPath) == false)
$this->imageFilepath = "";
return true;
}
return false;
}
/**
* change the background_type parameter
* @since: 5.0
*/
public function setBackgroundType($new_param){
$new_param = apply_filters('revslider_slide_setBackgroundType', $new_param, $this);
$this->params['background_type'] = $new_param;
}
/**
*
* init by another slide
*/
public function initBySlide(RevSliderSlide $slide){
$slide = apply_filters('revslider_slide_initBySlide', $slide, $this);
$this->id = "template";
$this->templateID = $slide->getID();
$this->sliderID = $slide->getSliderID();
$this->slideOrder = $slide->getOrder();
$this->imageUrl = $slide->getImageUrl();
$this->imageID = $slide->getImageID();
$this->imageThumb = $slide->getThumbUrl();
$this->imageFilepath = $slide->getImageFilepath();
$this->imageFilename = $slide->getImageFilename();
$this->params = $slide->getParams();
$this->arrLayers = $slide->getLayers();
$this->settings = $slide->getSettings();
$this->arrChildren = $slide->getArrChildrenPure();
}
/**
*
* init slide by post data
*/
public function initByStreamData($postData, $slideTemplate, $sliderID, $sourceType, $additions){
$a = apply_filters('revslider_slide_initByStreamData', array('postData' => $postData, 'slideTemplate' => $slideTemplate, 'sliderID' => $sliderID, 'sourceType' => $sourceType, 'additions' => $additions), $this);
$this->postData = array();
$this->postData = (array)$a['postData'];
//init by global template
$this->initBySlide($a['slideTemplate']);
switch($a['sourceType']){
case 'facebook':
$this->initByFacebook($a['sliderID'], $a['additions']);
break;
case 'twitter':
$this->initByTwitter($a['sliderID'], $a['additions']);
break;
case 'instagram':
$this->initByInstagram($a['sliderID']);
break;
case 'flickr':
$this->initByFlickr($a['sliderID']);
break;
case 'youtube':
$this->initByYoutube($a['sliderID'], $a['additions']);
break;
case 'vimeo':
$this->initByVimeo($a['sliderID'], $a['additions']);
break;
default:
$return = apply_filters('revslider_slide_initByStreamData_sourceType', false, $a, $this);
if($return === false)
RevSliderFunctions::throwError(__("Source must be from Stream", 'revslider'));
break;
}
}
/**
* init the data for facebook
* @since: 5.0
* @change: 5.1.1 Facebook Album
*/
private function initByFacebook($sliderID, $additions){
$this->postData = apply_filters('revslider_slide_initByFacebook_pre', $this->postData, $sliderID, $additions, $this);
//set some slide params
$this->id = RevSliderFunctions::getVal($this->postData, 'id');
$this->params["title"] = RevSliderFunctions::getVal($this->postData, 'name');
if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
$link = RevSliderFunctions::getVal($this->postData, 'link');
if(empty($link)) $link = 'https://www.instagram.com/p/' . RevSliderFunctions::getVal($this->postData, 'code');
$this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
}
$this->params["state"] = "published";
if($this->params["background_type"] == 'image'){ //if image is choosen, use featured image as background
if($additions['fb_type'] == 'album'){
$this->imageUrl = 'https://graph.facebook.com/'.RevSliderFunctions::getVal($this->postData, 'id').'/picture';
$this->imageThumb = RevSliderFunctions::getVal($this->postData, 'picture');
}else{
$img = $this->get_facebook_timeline_image();
$this->imageUrl = $img;
$this->imageThumb = $img;
}
if(empty($this->imageUrl))
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/fb.png';
if(is_ssl()){
$this->imageUrl = str_replace("http://", "https://", $this->imageUrl);
}
$this->imageFilename = basename($this->imageUrl);
}
$this->postData = apply_filters('revslider_slide_initByFacebook_post', $this->postData, $sliderID, $additions, $this);
//replace placeholders in layers:
$this->setLayersByStreamData($sliderID, 'facebook', $additions);
}
/**
* init the data for twitter
* @since: 5.0
*/
private function initByTwitter($sliderID, $additions){
$this->postData = apply_filters('revslider_slide_initByTwitter_pre', $this->postData, $sliderID, $additions, $this);
//set some slide params
$this->id = RevSliderFunctions::getVal($this->postData, 'id');
$this->params["title"] = RevSliderFunctions::getVal($this->postData, 'title');
if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
$link = 'https://twitter.com/'.$additions['twitter_user'].'/status/'.RevSliderFunctions::getVal($this->postData, 'id_str');
$this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
}
$this->params["state"] = "published";
if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streamtwitter' || $this->params["background_type"] == 'streamtwitterboth'){ //if image is choosen, use featured image as background
$img_sizes = RevSliderBase::get_all_image_sizes('twitter');
$imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes));
$this->imageID = RevSliderFunctions::getVal($this->postData, 'id');
if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes);
$image_url_array = RevSliderFunctions::getVal($this->postData, 'media');
$image_url_large = RevSliderFunctions::getVal($image_url_array, 'large');
$img = RevSliderFunctions::getVal($image_url_large, 'media_url', '');
$entities = RevSliderFunctions::getVal($this->postData, 'entities');
if($img == ''){
$image_url_array = RevSliderFunctions::getVal($entities, 'media');
if(is_array($image_url_array) && isset($image_url_array[0])){
if(is_ssl()){
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https');
}else{
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url');
}
}
}
$urls = RevSliderFunctions::getVal($entities, 'urls');
if(is_array($urls) && isset($urls[0])){
$display_url = RevSliderFunctions::getVal($urls[0], 'display_url');
//check if youtube or vimeo is inside
if(strpos($display_url, 'youtu.be') !== false){
$raw = explode('/', $display_url);
$yturl = $raw[1];
$this->params["slide_bg_youtube"] = $yturl; //set video for background video
}elseif(strpos($display_url, 'vimeo.com') !== false){
$raw = explode('/', $display_url);
$vmurl = $raw[1];
$this->params["slide_bg_vimeo"] = $vmurl; //set video for background video
}
}
$image_url_array = RevSliderFunctions::getVal($entities, 'media');
if(is_array($image_url_array) && isset($image_url_array[0])){
$video_info = RevSliderFunctions::getVal($image_url_array[0], 'video_info');
$variants = RevSliderFunctions::getVal($video_info, 'variants');
if(is_array($variants) && isset($variants[0])){
$mp4 = RevSliderFunctions::getVal($variants[0], 'url');
$this->params["slide_bg_html_mpeg"] = $mp4; //set video for background video
}
}
$entities = RevSliderFunctions::getVal($this->postData, 'extended_entities');
if($img == ''){
$image_url_array = RevSliderFunctions::getVal($entities, 'media');
if(is_array($image_url_array) && isset($image_url_array[0])){
if(is_ssl()){
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https');
}else{
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url');
}
}
}
$urls = RevSliderFunctions::getVal($entities, 'urls');
if(is_array($urls) && isset($urls[0])){
$display_url = RevSliderFunctions::getVal($urls[0], 'display_url');
//check if youtube or vimeo is inside
if(strpos($display_url, 'youtu.be') !== false){
$raw = explode('/', $display_url);
$yturl = $raw[1];
$this->params["slide_bg_youtube"] = $yturl; //set video for background video
}elseif(strpos($display_url, 'vimeo.com') !== false){
$raw = explode('/', $display_url);
$vmurl = $raw[1];
$this->params["slide_bg_vimeo"] = $vmurl; //set video for background video
}
}
$image_url_array = RevSliderFunctions::getVal($entities, 'media');
if(is_array($image_url_array) && isset($image_url_array[0])){
$video_info = RevSliderFunctions::getVal($image_url_array[0], 'video_info');
$variants = RevSliderFunctions::getVal($video_info, 'variants');
if(is_array($variants) && isset($variants[0])){
$mp4 = RevSliderFunctions::getVal($variants[0], 'url');
$this->params["slide_bg_html_mpeg"] = $mp4; //set video for background video
}
}
if($img !== ''){
$this->imageUrl = $img;
$this->imageThumb = $img;
}
//if(empty($this->imageUrl))
// return(false);
if(empty($this->imageUrl))
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/tw.png';
if(is_ssl()){
$this->imageUrl = str_replace("http://", "https://", $this->imageUrl);
}
$this->imageFilename = basename($this->imageUrl);
}
$this->postData = apply_filters('revslider_slide_initByTwitter_post', $this->postData, $sliderID, $additions, $this);
//replace placeholders in layers:
$this->setLayersByStreamData($sliderID, 'twitter', $additions);
}
/**
* init the data for instagram
* @since: 5.0
*/
private function initByInstagram($sliderID){
$this->postData = apply_filters('revslider_slide_initByInstagram_pre', $this->postData, $sliderID, $this);
//var_dump($this->params);
//set some slide params
$this->id = $this->postData['node']->id;
$caption = $this->postData['node']->edge_media_to_caption->edges[0]->node->text;
$this->params["title"] = $caption ;
$link = 'https://www.instagram.com/p/' . $this->postData['node']->shortcode;
$this->params["link"] = $link;
if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
$this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
}
$this->params["state"] = "published";
if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streaminstagram' || $this->params["background_type"] == 'streaminstagramboth'){ //if image is choosen, use featured image as background
//$img_sizes = RevSliderBase::get_all_image_sizes('instagram');
//$imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes));
//if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes);
/*$this->imageID = RevSliderFunctions::getVal($this->postData['node'], 'id');
$imgs = RevSliderFunctions::getVal($this->postData['node'], 'images', array());
$is = array();
foreach($imgs as $k => $im){
$is[$k] = $im->url;
}
if(isset($is[$imgResolution])){
$this->imageUrl = $is[$imgResolution];
$this->imageThumb = $is['thumbnail'];
}
else {
$this->imageUrl = $this->postData['node']->display_src;
$this->imageThumb = $this->postData['node']->thumbnail_src;
}*/
if(empty($this->postData['node']->display_url)){
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/ig.png';
}
else {
$this->imageUrl = $this->postData['node']->display_url;
$this->imageThumb = $this->postData['node']->thumbnail_src;
}
//if(empty($this->imageUrl))
// return(false);
if(empty($this->imageUrl)){
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/ig.png';
}
if(is_ssl()){
$this->imageUrl = str_replace("http://", "https://", $this->imageUrl);
}
$this->imageFilename = basename($this->imageUrl);
}
$videos = RevSliderFunctions::getVal($this->postData['node'], 'videos');
if(!empty($videos) && isset($videos->standard_resolution) && isset($videos->standard_resolution->url)){
$this->params["slide_bg_instagram"] = $videos->standard_resolution->url; //set video for background video
$this->params["slide_bg_html_mpeg"] = $videos->standard_resolution->url; //set video for background video
}
$this->postData = apply_filters('revslider_slide_initByInstagram_post', $this->postData['node'], $sliderID, $this);
//replace placeholders in layers:
$this->setLayersByStreamData($sliderID, 'instagram');
}
/**
* init the data for flickr
* @since: 5.0
*/
private function initByFlickr($sliderID){
$this->postData = apply_filters('revslider_slide_initByFlickr_pre', $this->postData, $sliderID, $this);
//set some slide params
$this->id = RevSliderFunctions::getVal($this->postData, 'id');
$this->params["title"] = RevSliderFunctions::getVal($this->postData, 'title');
if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
$link = 'http://flic.kr/p/'.$this->base_encode(RevSliderFunctions::getVal($this->postData, 'id'));
$this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
}
$this->params["state"] = "published";
if($this->params["background_type"] == 'image'){ //if image is choosen, use featured image as background
//facebook check which image size is choosen
$img_sizes = RevSliderBase::get_all_image_sizes('flickr');
$imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes));
$this->imageID = RevSliderFunctions::getVal($this->postData, 'id');
if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes);
$is = @array(
'square' => RevSliderFunctions::getVal($this->postData, 'url_sq'),
'large-square' => RevSliderFunctions::getVal($this->postData, 'url_q'),
'thumbnail' => RevSliderFunctions::getVal($this->postData, 'url_t'),
'small' => RevSliderFunctions::getVal($this->postData, 'url_s'),
'small-320' => RevSliderFunctions::getVal($this->postData, 'url_n'),
'medium' => RevSliderFunctions::getVal($this->postData, 'url_m'),
'medium-640' => RevSliderFunctions::getVal($this->postData, 'url_z'),
'medium-800' => RevSliderFunctions::getVal($this->postData, 'url_c'),
'large' => RevSliderFunctions::getVal($this->postData, 'url_l'),
'original' => RevSliderFunctions::getVal($this->postData, 'url_o')
);
$this->imageUrl = (isset($is[$imgResolution])) ? $is[$imgResolution] : '';
$this->imageThumb = (isset($is['thumbnail'])) ? $is['thumbnail'] : '';
//if(empty($this->imageUrl))
// return(false);
if(empty($this->imageUrl))
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/fr.png';
if(is_ssl()){
$this->imageUrl = str_replace("http://", "https://", $this->imageUrl);
}
$this->imageFilename = basename($this->imageUrl);
if(!empty($thumbID))
$this->setImageByImageURL($thumbID);
}
$this->postData = apply_filters('revslider_slide_initByFlickr_post', $this->postData, $sliderID, $this);
//replace placeholders in layers:
$this->setLayersByStreamData($sliderID, 'flickr');
}
/**
* init the data for youtube
* @since: 5.0
*/
private function initByYoutube($sliderID, $additions){
$this->postData = apply_filters('revslider_slide_initByYoutube_pre', $this->postData, $sliderID, $additions, $this);
//set some slide params
$snippet = RevSliderFunctions::getVal($this->postData, 'snippet');
$resource = RevSliderFunctions::getVal($snippet, 'resourceId');
if($additions['yt_type'] == 'channel'){
$link_raw = RevSliderFunctions::getVal($this->postData, 'id');
$link = RevSliderFunctions::getVal($link_raw, 'videoId');
}else{
$link_raw = RevSliderFunctions::getVal($snippet, 'resourceId');
$link = RevSliderFunctions::getVal($link_raw, 'videoId');
}
if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
if($link !== '') $link = '//youtube.com/watch?v='.$link;
$this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
}
$this->params["slide_bg_youtube"] = $link; //set video for background video
switch($additions['yt_type']){
case 'channel':
$id = RevSliderFunctions::getVal($this->postData, 'id');
$this->id = RevSliderFunctions::getVal($id, 'videoId');
break;
case 'playlist':
$this->id = RevSliderFunctions::getVal($resource, 'videoId');
break;
}
if($this->id == '') $this->id = 'not-found';
$this->params["title"] = RevSliderFunctions::getVal($snippet, 'title');
$this->params["state"] = "published";
if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streamyoutube' || $this->params["background_type"] == 'streamyoutubeboth'){ //if image is choosen, use featured image as background
//facebook check which image size is choosen
$img_sizes = RevSliderBase::get_all_image_sizes('youtube');
$imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes));
$this->imageID = RevSliderFunctions::getVal($resource, 'videoId');
if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes);
$thumbs = RevSliderFunctions::getVal($snippet, 'thumbnails');
$is = array();
if(!empty($thumbs)){
foreach($thumbs as $name => $vals){
$is[$name] = RevSliderFunctions::getVal($vals, 'url');
}
}
$this->imageUrl = (isset($is[$imgResolution])) ? $is[$imgResolution] : '';
$this->imageThumb = (isset($is['medium'])) ? $is['medium'] : '';
//if(empty($this->imageUrl))
// return(false);
if(empty($this->imageUrl))
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/yt.png';
if(is_ssl()){
$this->imageUrl = str_replace("http://", "https://", $this->imageUrl);
}
$this->imageFilename = basename($this->imageUrl);
if(!empty($thumbID))
$this->setImageByImageURL($thumbID);
}
$this->postData = apply_filters('revslider_slide_initByYoutube_post', $this->postData, $sliderID, $additions, $this);
//replace placeholders in layers:
$this->setLayersByStreamData($sliderID, 'youtube', $additions);
}
/**
* init the data for vimeo
* @since: 5.0
*/
private function initByVimeo($sliderID, $additions){
$this->postData = apply_filters('revslider_slide_initByVimeo_pre', $this->postData, $sliderID, $additions, $this);
//set some slide params
$this->id = RevSliderFunctions::getVal($this->postData, 'id');
$this->params["title"] = RevSliderFunctions::getVal($this->postData, 'title');
if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
$link = RevSliderFunctions::getVal($this->postData, 'url');
$this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
}
$this->params["slide_bg_vimeo"] = RevSliderFunctions::getVal($this->postData, 'url');
$this->params["state"] = "published";
if($this->params["background_type"] == 'trans' || $this->params["background_type"] == 'image' || $this->params["background_type"] == 'streamvimeo' || $this->params["background_type"] == 'streamvimeoboth'){ //if image is choosen, use featured image as background
//facebook check which image size is choosen
$img_sizes = RevSliderBase::get_all_image_sizes('vimeo');
$imgResolution = RevSliderFunctions::getVal($this->params, 'image_source_type', reset($img_sizes));
$this->imageID = RevSliderFunctions::getVal($this->postData, 'id');
if(!isset($img_sizes[$imgResolution])) $imgResolution = key($img_sizes);
$is = array();
foreach($img_sizes as $handle => $name){
$is[$handle] = RevSliderFunctions::getVal($this->postData, $handle);
}
$this->imageUrl = (isset($is[$imgResolution])) ? $is[$imgResolution] : '';
$this->imageThumb = (isset($is['thumbnail'])) ? $is['thumbnail'] : '';
//if(empty($this->imageUrl))
// return(false);
if(empty($this->imageUrl))
$this->imageUrl = RS_PLUGIN_URL.'public/assets/assets/sources/vm.png';
if(is_ssl()){
$this->imageUrl = str_replace("http://", "https://", $this->imageUrl);
}
$this->imageFilename = basename($this->imageUrl);
if(!empty($thumbID))
$this->setImageByImageURL($thumbID);
}
$this->postData = apply_filters('revslider_slide_initByVimeo_post', $this->postData, $sliderID, $additions, $this);
//replace placeholders in layers:
$this->setLayersByStreamData($sliderID, 'vimeo', $additions);
}
/**
* replace layer placeholders by stream data
* @since: 5.0
*/
private function setLayersByStreamData($sliderID, $stream_type, $additions = array()){
$a = apply_filters('revslider_slide_setLayersByStreamData_pre', array('arrLayers' => $this->arrLayers, 'params' => $this->params), $sliderID, $stream_type, $additions, $this);
$this->params = $a['params'];
$this->arrLayers = $a['arrLayers'];
$attr = $this->return_stream_data($stream_type, $additions);
foreach($this->arrLayers as $key=>$layer){
$text = RevSliderFunctions::getVal($layer, "text");
$text = apply_filters('revslider_mod_stream_meta', $text, $sliderID, $stream_type, $this->postData); //option to add your own filter here to modify meta to your likings
$text = $this->set_stream_data($text, $attr, $stream_type, $additions);
$layer["text"] = $text;
//set link actions to the stream data
$layer['layer_action'] = (array) $layer['layer_action'];
if(isset($layer['layer_action'])){
if(isset($layer['layer_action']['image_link']) && !empty($layer['layer_action']['image_link'])){
foreach($layer['layer_action']['image_link'] as $jtsk => $jtsval){
$layer['layer_action']['image_link'][$jtsk] = $this->set_stream_data($layer['layer_action']['image_link'][$jtsk], $attr, $stream_type, $additions, true);
}
}
}
$this->arrLayers[$key] = $layer;
}
/*$params = $this->getParams();
foreach($params as $key => $param){ //set metas on all params except arrays
if(!is_array($param)){
$pa = $this->set_stream_data($param, $attr, $stream_type, $additions);
$this->setParam($key, $pa);
}
}*/
//set params to the stream data
for($mi=1;$mi<=10;$mi++){
$pa = $this->getParam('params_'.$mi, '');
$pa = $this->set_stream_data($pa, $attr, $stream_type, $additions);
$this->setParam('params_'.$mi, $pa);
}
$param_list = array('id_attr', 'class_attr', 'data_attr');
//set params to the stream data
foreach($param_list as $p){
$pa = $this->getParam($p, '');
$pa = $this->set_stream_data($pa, $attr, $stream_type, $additions);
$this->setParam($p, $pa);
}
$a = apply_filters('revslider_slide_setLayersByStreamData_post', array('arrLayers' => $this->arrLayers, 'params' => $this->params), $sliderID, $stream_type, $additions, $this);
$this->params = $a['params'];
$this->arrLayers = $a['arrLayers'];
}
public function set_stream_data($text, $attr, $stream_type, $additions = array(), $is_action = false){
$img_sizes = RevSliderBase::get_all_image_sizes($stream_type);
$text = apply_filters('revslider_slide_set_stream_data_pre', $text, $attr, $stream_type, $additions, $is_action, $img_sizes);
$title = ($stream_type == 'twitter' && $is_action === false) ? RevSliderBase::add_wrap_around_url($attr['title']) : $attr['title'];
$excerpt = ($stream_type == 'twitter' && $is_action === false) ? RevSliderBase::add_wrap_around_url($attr['excerpt']) : $attr['excerpt'];
$content = ($stream_type == 'twitter' && $is_action === false) ? RevSliderBase::add_wrap_around_url($attr['content']) : $attr['content'];
$text = str_replace(array('%title%', '{{title}}'), $title, $text);
$text = str_replace(array('%excerpt%', '{{excerpt}}'), $excerpt, $text);
$text = str_replace(array('%alias%', '{{alias}}'), $attr['alias'], $text);
$text = str_replace(array('%content%', '{{content}}'), $content, $text);
$text = str_replace(array('%link%', '{{link}}'), $attr['link'], $text);
$text = str_replace(array('%date_published%', '{{date_published}}', '%date%', '{{date}}'), $attr['date'], $text);
$text = str_replace(array('%date_modified%', '{{date_modified}}'), $attr['date_modified'], $text);
$text = str_replace(array('%author_name%', '{{author_name}}'), $attr['author_name'], $text);
$text = str_replace(array('%num_comments%', '{{num_comments}}'), $attr['num_comments'], $text);
$text = str_replace(array('%catlist%', '{{catlist}}'), $attr['catlist'], $text);
$text = str_replace(array('%catlist_raw%', '{{catlist_raw}}'), $attr['catlist_raw'], $text);
$text = str_replace(array('%taglist%', '{{taglist}}'), $attr['taglist'], $text);
$text = str_replace(array('%likes%', '{{likes}}'), $attr['likes'], $text);
$text = str_replace(array('%retweet_count%', '{{retweet_count}}'), $attr['retweet_count'], $text);
$text = str_replace(array('%favorite_count%', '{{favorite_count}}'), $attr['favorite_count'], $text);
$text = str_replace(array('%views%', '{{views}}'), $attr['views'], $text);
$arrMatches = array();
preg_match_all("/{{content:\w+[\:]\w+}}/", $text, $arrMatches);
foreach($arrMatches as $matched){
foreach($matched as $match) {
//now check length and type
$meta = str_replace("{{content:", "", $match);
$meta = str_replace("}}","",$meta);
$meta = str_replace('_REVSLIDER_', '-', $meta);
$vals = explode(':', $meta);
if(count($vals) !== 2) continue; //not correct values
$vals[1] = intval($vals[1]); //get real number
if($vals[1] === 0 || $vals[1] < 0) continue; //needs to be at least 1
if($vals[0] == 'words'){
$metaValue = explode(' ', strip_tags($content), $vals[1]+1);
if(is_array($metaValue) && count($metaValue) > $vals[1]) array_pop($metaValue);
$metaValue = implode(' ', $metaValue);
}elseif($vals[0] == 'chars'){
$metaValue = substr(strip_tags($content), 0, $vals[1]);
}else{
continue;
}
$text = str_replace($match,$metaValue,$text);
}
}
switch($stream_type){
case 'facebook':
foreach($img_sizes as $img_handle => $img_name){
if(!isset($attr['img_urls'])) $attr['img_urls'] = array();
if(!isset($attr['img_urls'][$img_handle])) $attr['img_urls'][$img_handle] = array();
if(!isset($attr['img_urls'][$img_handle]['url'])) $attr['img_urls'][$img_handle]['url'] = '';
if(!isset($attr['img_urls'][$img_handle]['tag'])) $attr['img_urls'][$img_handle]['tag'] = '';
if($additions['fb_type'] == 'album'){
$text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), $attr['img_urls'][$img_handle]['url'], $text);
$text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), $attr['img_urls'][$img_handle]['tag'], $text);
}else{
$text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), $attr['img_urls']['url'], $text);
$text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), $attr['img_urls']['tag'], $text);
}
}
break;
case 'youtube':
case 'vimeo':
//$text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['url'], $text);
//$text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), @$attr['img_urls'][$img_handle]['tag'], $text);
case 'twitter':
case 'instagram':
case 'flickr':
foreach($img_sizes as $img_handle => $img_name){
if(!isset($attr['img_urls'])) $attr['img_urls'] = array();
if(!isset($attr['img_urls'][$img_handle])) $attr['img_urls'][$img_handle] = array();
if(!isset($attr['img_urls'][$img_handle]['url'])) $attr['img_urls'][$img_handle]['url'] = '';
if(!isset($attr['img_urls'][$img_handle]['tag'])) $attr['img_urls'][$img_handle]['tag'] = '';
$text = str_replace(array('%image_url_'.$img_handle.'%', '{{image_url_'.$img_handle.'}}'), $attr['img_urls'][$img_handle]['url'], $text);
$text = str_replace(array('%image_'.$img_handle.'%', '{{image_'.$img_handle.'}}'), $attr['img_urls'][$img_handle]['tag'], $text);
}
break;
}
return apply_filters('revslider_slide_set_stream_data_post', $text, $attr, $stream_type, $additions, $is_action, $img_sizes);
}
public function return_stream_data($stream_type, $additions = array()){
$attr = array();
$attr['title'] = '';
$attr['excerpt'] = '';
$attr['alias'] = '';
$attr['content'] = '';
$attr['link'] = '';
$attr['date'] = '';
$attr['date_modified'] = '';
$attr['author_name'] = '';
$attr['num_comments'] = '';
$attr['catlist'] = '';
$attr['catlist_raw'] = '';
$attr['taglist'] = '';
$attr['likes'] = '';
$attr['retweet_count'] = '';
$attr['favorite_count'] = '';
$attr['views'] = '';
$attr['img_urls'] = array();
$img_sizes = RevSliderBase::get_all_image_sizes($stream_type);
$attr = apply_filters('revslider_slide_return_stream_data_pre', $attr, $stream_type, $additions, $img_sizes);
switch($stream_type){
case 'facebook':
if($additions['fb_type'] == 'album'){
$attr['title'] = RevSliderFunctions::getVal($this->postData, 'name');
$attr['content'] = RevSliderFunctions::getVal($this->postData, 'name');
$attr['link'] = RevSliderFunctions::getVal($this->postData, 'link');
$attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_time'), true);
$attr['date_modified'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'updated_time'), true);
$author_name_raw = RevSliderFunctions::getVal($this->postData, 'from');
$attr['author_name'] = $author_name_raw->name;
$likes_data = RevSliderFunctions::getVal($this->postData, 'likes');
$attr['likes'] = count(RevSliderFunctions::getVal($likes_data, 'data'));
$fb_img_thumbnail = RevSliderFunctions::getVal($this->postData, 'picture');
$fb_img = 'https://graph.facebook.com/'.RevSliderFunctions::getVal($this->postData, 'id').'/picture';
$attr['img_urls']['full'] = array(
'url' => $fb_img,
'tag' => ''
);
$attr['img_urls']['thumbnail'] = array(
'url' => $fb_img_thumbnail,
'tag' => '
'
);
}else{
$attr['title'] = RevSliderFunctions::getVal($this->postData, 'message');
$attr['content'] = RevSliderFunctions::getVal($this->postData, 'message');
$post_url = explode('_', RevSliderFunctions::getVal($this->postData, 'id'));
$attr['link'] = 'https://www.facebook.com/'.$additions['fb_user_id'].'/posts/'.$post_url[1];
$attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_time'), true);
$attr['date_modified'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'updated_time'), true);
$author_name_raw = RevSliderFunctions::getVal($this->postData, 'from');
$attr['author_name'] = $author_name_raw->name;
$likes_data = RevSliderFunctions::getVal($this->postData, 'likes');
$likes_data = RevSliderFunctions::getVal($likes_data, 'summary');
$likes_data = RevSliderFunctions::getVal($likes_data, 'total_count');
$attr['likes'] = intval($likes_data);
$img = $this->get_facebook_timeline_image();
$attr['img_urls'] = array(
'url' => $img,
'tag' => '
'
);
}
break;
case 'twitter':
$user = RevSliderFunctions::getVal($this->postData, 'user');
$attr['title'] = RevSliderFunctions::getVal($this->postData, 'full_text');
$attr['content'] = RevSliderFunctions::getVal($this->postData, 'full_text');
$attr['link'] = 'https://twitter.com/'.$additions['twitter_user'].'/status/'.RevSliderFunctions::getVal($this->postData, 'id_str');
$attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'created_at'), true);
$attr['author_name'] = RevSliderFunctions::getVal($user, 'screen_name');
$attr['retweet_count'] = RevSliderFunctions::getVal($this->postData, 'retweet_count', '0');
$attr['favorite_count'] = RevSliderFunctions::getVal($this->postData, 'favorite_count', '0');
$image_url_array = RevSliderFunctions::getVal($this->postData, 'media');
$image_url_large = RevSliderFunctions::getVal($image_url_array, 'large');
$img = RevSliderFunctions::getVal($image_url_large, 'media_url', '');
if($img == ''){
$entities = RevSliderFunctions::getVal($this->postData, 'entities');
$image_url_array = RevSliderFunctions::getVal($entities, 'media');
if(is_array($image_url_array) && isset($image_url_array[0])){
if(is_ssl()){
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https');
}else{
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url');
}
$image_url_large = $image_url_array[0];
}
}
if($img == ''){
$entities = RevSliderFunctions::getVal($this->postData, 'extended_entities');
$image_url_array = RevSliderFunctions::getVal($entities, 'media');
if(is_array($image_url_array) && isset($image_url_array[0])){
if(is_ssl()){
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url_https');
}else{
$img = RevSliderFunctions::getVal($image_url_array[0], 'media_url');
}
$image_url_large = $image_url_array[0];
}
}
if($img !== ''){
$w = RevSliderFunctions::getVal($image_url_large, 'w', '');
$h = RevSliderFunctions::getVal($image_url_large, 'h', '');
$attr['img_urls']['large'] = array(
'url' => $img,
'tag' => '
'
);
}
break;
case 'instagram':
$caption = $this->postData->edge_media_to_caption->edges[0]->node->text;
$user = isset($this->postData->user_info) ? $this->postData->user_info : '';
$attr['title'] = $caption;
$attr['content'] = $caption;
$attr['link'] = 'https://www.instagram.com/p/' . $this->postData->shortcode;
$attr['date'] = $this->postData->taken_at_timestamp;
$attr['date'] = date_i18n(get_option('date_format').' '.get_option('time_format'), $attr['date']);
$attr['author_name'] = $user;
$attr['author_name'] = empty($attr['author_name']) ? "" : $attr['author_name'];
$attr['likes'] = $this->postData->edge_liked_by->count;
//$attr['likes'] = RevSliderFunctions::getVal($likes_raw, 'count');
$attr['num_comments'] = $this->postData->edge_media_to_comment->count;
//$attr['num_comments'] = RevSliderFunctions::getVal($comments_raw, 'count');
$inst_img = RevSliderFunctions::getVal($this->postData, 'images', array());
foreach($inst_img as $key => $img){
$attr['img_urls'][$key] = array(
'url' => $img->url,
'tag' => '
'
);
}
break;
case 'flickr':
$attr['title'] = RevSliderFunctions::getVal($this->postData, 'title');
$tc = RevSliderFunctions::getVal($this->postData, 'description');
$attr['content'] = RevSliderFunctions::getVal($tc, '_content');
$attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'datetaken'));
$attr['author_name'] = RevSliderFunctions::getVal($this->postData, 'ownername');
$attr['link'] = 'http://flic.kr/p/'.$this->base_encode(RevSliderFunctions::getVal($this->postData, 'id'));
$attr['views'] = RevSliderFunctions::getVal($this->postData, 'views');
$attr['img_urls'] = @array(
'square' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_sq'), 'tag' => '
'),
'large-square' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_q'), 'tag' => '
'),
'thumbnail' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_t'), 'tag' => '
'),
'small' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_s'), 'tag' => '
'),
'small-320' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_n'), 'tag' => '
'),
'medium' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_m'), 'tag' => '
'),
'medium-640' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_z'), 'tag' => '
'),
'medium-800' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_c'), 'tag' => '
'),
'large' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_l'), 'tag' => '
'),
'original' => array('url' => RevSliderFunctions::getVal($this->postData, 'url_o'), 'tag' => '
')
);
break;
case 'youtube':
$snippet = RevSliderFunctions::getVal($this->postData, 'snippet');
$attr['title'] = RevSliderFunctions::getVal($snippet, 'title');
$attr['excerpt'] = RevSliderFunctions::getVal($snippet, 'description');
$attr['content'] = RevSliderFunctions::getVal($snippet, 'description');
$attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($snippet, 'publishedAt'));
if($additions['yt_type'] == 'channel'){
$link_raw = RevSliderFunctions::getVal($this->postData, 'id');
$attr['link'] = RevSliderFunctions::getVal($link_raw, 'videoId');
if($attr['link'] !== '') $attr['link'] = '//youtube.com/watch?v='.$attr['link'];
}else{
$link_raw = RevSliderFunctions::getVal($this->postData, 'resourceId');
$attr['link'] = RevSliderFunctions::getVal($link_raw, 'videoId');
if($attr['link'] !== '') $attr['link'] = '//youtube.com/watch?v='.$attr['link'];
}
$thumbs = RevSliderFunctions::getVal($snippet, 'thumbnails');
$attr['img_urls'] = array();
if(!empty($thumbs)){
foreach($thumbs as $name => $vals){
$attr['img_urls'][$name] = array(
'url' => RevSliderFunctions::getVal($vals, 'url'),
);
switch($additions['yt_type']){
case 'channel':
$attr['img_urls'][$name]['tag'] = '
';
break;
case 'playlist':
$attr['img_urls'][$name]['tag'] = '
';
break;
}
}
}
break;
case 'vimeo':
$attr['title'] = RevSliderFunctions::getVal($this->postData, 'title');
$attr['excerpt'] = RevSliderFunctions::getVal($this->postData, 'description');
$attr['content'] = RevSliderFunctions::getVal($this->postData, 'description');
$attr['date'] = RevSliderFunctionsWP::convertPostDate(RevSliderFunctions::getVal($this->postData, 'upload_date'));
$attr['likes'] = RevSliderFunctions::getVal($this->postData, 'stats_number_of_likes');
$attr['views'] = RevSliderFunctions::getVal($this->postData, 'stats_number_of_plays');
$attr['num_comments'] = RevSliderFunctions::getVal($this->postData, 'stats_number_of_comments');
$attr['link'] = RevSliderFunctions::getVal($this->postData, 'url');
$attr['author_name'] = RevSliderFunctions::getVal($this->postData, 'user_name');
$attr['img_urls'] = array();
if(!empty($img_sizes)){
foreach($img_sizes as $name => $vals){
$attr['img_urls'][$name] = array(
'url' => RevSliderFunctions::getVal($this->postData, $name),
'tag' => '
'
);
}
}
break;
}
return apply_filters('revslider_slide_return_stream_data_post', $attr, $stream_type, $additions, $img_sizes);
}
public function find_biggest_photo($image_urls, $wanted_size, $avail_sizes){
if(!$this->isEmpty(@$image_urls[$wanted_size])) return $image_urls[$wanted_size];
$wanted_size_pos = array_search($wanted_size, $avail_sizes);
for ($i=$wanted_size_pos; $i < 7; $i++) {
if(!$this->isEmpty(@$image_urls[$avail_sizes[$i]])) return $image_urls[$avail_sizes[$i]];
}
for ($i=$wanted_size_pos; $i >= 0; $i--) {
if(!$this->isEmpty(@$image_urls[$avail_sizes[$i]])) return $image_urls[$avail_sizes[$i]];
}
}
public function isEmpty($stringOrArray) {
if(is_array($stringOrArray)) {
foreach($stringOrArray as $value) {
if(!$this->isEmpty($value)) {
return false;
}
}
return true;
}
return !strlen($stringOrArray); // this properly checks on empty string ('')
}
public function get_facebook_timeline_image(){
$return = '';
$object_id = RevSliderFunctions::getVal($this->postData, 'object_id', '');
$picture = RevSliderFunctions::getVal($this->postData, 'picture', '');
if(!empty($object_id)){
$return = 'https://graph.facebook.com/'.RevSliderFunctions::getVal($this->postData, 'object_id', '').'/picture';//$photo->picture;
}elseif(!empty($picture)) {
$image_url = $this->decode_facebook_url(RevSliderFunctions::getVal($this->postData, 'picture', ''));
$image_url = parse_str(parse_url($image_url, PHP_URL_QUERY), $array);
$image_url = explode('&', $array['url']);
/* patch for when url returned as "fbstaging://" */
if(strpos($image_url[0], 'fbstaging') !== false) {
$new_url = RevSliderFunctions::getVal($this->postData, 'picture', '');
$new_url = explode('&w=', $new_url);
if(count($new_url) > 1) {
$end_url = explode('&url=', $new_url[1]);
if(count($end_url) > 1) $image_url = array($new_url[0] . '&url=' . $end_url[1]);
}
}
/* END patch */
$return = $image_url[0];
}
return apply_filters('revslider_slide_get_facebook_timeline_image', $return, $object_id, $picture, $this);
}
private function decode_facebook_url($url) {
$url = str_replace('u00253A',':',$url);
$url = str_replace('\u00255C\u00252F','/',$url);
$url = str_replace('u00252F','/',$url);
$url = str_replace('u00253F','?',$url);
$url = str_replace('u00253D','=',$url);
$url = str_replace('u002526','&',$url);
return $url;
}
/**
* Encode the flickr ID for URL (base58)
*
* @since 5.0
* @param string $num flickr photo id
*/
private function base_encode($num, $alphabet='123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ') {
$base_count = strlen($alphabet);
$encoded = '';
while ($num >= $base_count) {
$div = $num/$base_count;
$mod = ($num-($base_count*intval($div)));
$mod = intval($mod);
$encoded = $alphabet[$mod] . $encoded;
$num = intval($div);
// var_dump($alphabet);
}
// die('die here');
if ($num) $encoded = $alphabet[$num] . $encoded;
return $encoded;
}
/**
*
* init slide by post data
*/
// public function initByPostData($postData, RevSliderSlide $slideTemplate, $sliderID){
// $this->postData = apply_filters('revslider_slide_initByPostData', $postData, $slideTemplate, $sliderID, $this);
// var_dump();die();
// //$postID = $postData["ID"];
// $postID = $postData["product_id"];
// //$slideTemplateID = get_post_meta($postID, 'slide_template', true);
// $slideTemplateID = '';
// if($slideTemplateID == '') $slideTemplateID = 'default';
//
// if(!empty($slideTemplateID) && is_numeric($slideTemplateID)){
// //init by local template, if fail, init by global (slider) template
// try{
// //check if slide exists
// $slideTemplateLocal = new RevSliderSlide();
// if($slideTemplateLocal->isSlideByID($slideTemplateID)){
// $slideTemplateLocal->initByID($slideTemplateID);
// $this->initBySlide($slideTemplateLocal);
// }else{
// $this->initBySlide($slideTemplate);
// }
// }
// catch(Exception $e){
// $this->initBySlide($slideTemplate);
// }
//
// }else{
// //init by global template
// $this->initBySlide($slideTemplate);
// }
//
// //set some slide params
// $this->id = $postID;
// //$this->params["title"] = RevSliderFunctions::getVal($postData, "post_title");
// $this->params["title"] = RevSliderFunctions::getVal($postData, "name");
//
//
//
// if(isset($this->params['enable_link']) && $this->params['enable_link'] == "true" && isset($this->params['link_type']) && $this->params['link_type'] == "regular"){
//
//
// $link = $postData['link'];
//
//
// $this->params["link"] = str_replace(array("%link%", '{{link}}'), $link, $this->params["link"]);
// $this->params["link"] = str_replace('-', '_REVSLIDER_', $this->params["link"]);
//
// //process meta tags:
// $arrMatches = array();
// preg_match('/%meta:\w+%/', $this->params["link"], $arrMatches);
//
// foreach($arrMatches as $match){
// $meta = str_replace("%meta:", "", $match);
// $meta = str_replace("%","",$meta);
// $meta = str_replace('_REVSLIDER_', '-', $meta);
// //$metaValue = get_post_meta($postID,$meta,true);
// $metaValue = '';
// $this->params["link"] = str_replace($match,$metaValue,$this->params["link"]);
// }
//
//
// $arrMatches = array();
// preg_match('/{{meta:\w+}}/', $this->params["link"], $arrMatches);
//
// foreach($arrMatches as $match){
// $meta = str_replace("{{meta:", "", $match);
// $meta = str_replace("}}","",$meta);
// $meta = str_replace('_REVSLIDER_', '-', $meta);
// //$metaValue = get_post_meta($postID,$meta,true);
// $metaValue = '';
// $this->params["link"] = str_replace($match,$metaValue,$this->params["link"]);
// }
//
// $this->params["link"] = str_replace('_REVSLIDER_','-',$this->params["link"]);
//
// }
//
// //$status = $postData["post_status"];
// $status = $postData["status"];
//
// if($status == "1")
// $this->params["state"] = "published";
// else
// $this->params["state"] = "unpublished";
//
//
// if($this->params["background_type"] == 'image'){ //if image is choosen, use featured image as background
// //set image
//// $thumbID = RevSliderFunctionsWP::getPostThumbID($postID);
////
//// if(!empty($thumbID))
//// $this->setImageByImageID($thumbID);
// $this->setImageByImageID($postData['image']);
//
// }
//
//
// //replace placeholders in layers:
// $this->setLayersByPostData($postData, $sliderID);
// }
//
public function initByPostData($postData, RevSlide $slideTemplate, $sliderID)
{
$this->postData = $this->postData;
$postID = $postData['id_product'];
$arrWildcardsValues = RevOperations::getPostWilcardValues($postID);
$slideTemplateID = UniteFunctionsRev::getVal($arrWildcardsValues, "slide_template");
if (!empty($slideTemplateID) && is_numeric($slideTemplateID)) {
//init by local template, if fail, init by global (slider) template
try {
$slideTemplateLocal = new RevSlide();
$slideTemplateLocal->initByID($slideTemplateID);
$this->initBySlide($slideTemplateLocal);
} catch (Exception $e) {
$this->initBySlide($slideTemplate);
}
} else {
$this->initBySlide($slideTemplate);
}
$this->id = $postID;
$this->params["title"] = UniteFunctionsRev::getVal($postData, "post_title");
$status = $postData["active"];
if ($status == 1) {
$this->params["state"] = "published";
} else {
$this->params["state"] = "unpublished";
}
$RevSlider = new RevSlider();
$getSliderImgSettings = $RevSlider->getSliderImgSettings($sliderID);
if (!empty($postID)) {
$this->setImageByImageID($postID, $getSliderImgSettings);
}
//replace placeholders in layers:
$this->setLayersByPostData($postData, $sliderID);
}
/**
*
* replace layer placeholders by post data
*/
// private function setLayersByPostData($postData,$sliderID){
// $postData = apply_filters('revslider_slide_setLayersByPostData_pre', $postData, $sliderID, $this);
//
// $postID = $postData["product_id"];
//
// $attr = array();
// $attr['title'] = RevSliderFunctions::getVal($postData, "name");
//
// //check if we are product or not
// $st = $this->getSliderParam($sliderID,"source_type",'gallery');
//
// if($st == 'product'){
// $excerpt_limit = $this->getSliderParam($sliderID,"excerpt_limit_product",55,RevSlider::VALIDATE_NUMERIC);
// $excerpt_limit = (int)$excerpt_limit;
// }else{
// $excerpt_limit = $this->getSliderParam($sliderID,"excerpt_limit",55,RevSlider::VALIDATE_NUMERIC);
// $excerpt_limit = (int)$excerpt_limit;
// }
//
// $attr['excerpt'] =$postData['description'];// RevSliderFunctionsWP::getExcerptById($postID, $excerpt_limit);
//
// $name = RevSliderFunctions::getVal($postData, "name");
// $final = preg_replace('#[ -]+#', '-', $name);
// $attr['alias'] = $final;
//
// $attr['content'] = RevSliderFunctions::getVal($postData, "description");
//
// $attr['link'] = RevSliderFunctions::getVal($postData, "link");
//
//// $postDate = RevSliderFunctions::getVal($postData, "post_date_gmt");
//// $attr['postDate'] = RevSliderFunctionsWP::convertPostDate($postDate);
//
// $attr['postDate'] = RevSliderFunctions::getVal($postData, "date_added");
//
// $dateModified = RevSliderFunctions::getVal($postData, "post_modified");
// $attr['dateModified'] = RevSliderFunctions::getVal($postData, "date_modified");
//
// //$authorID = RevSliderFunctions::getVal($postData, "post_author");
// $attr['authorName'] = '';
//
// //$postCatsIDs = $postData["post_category"];
//// $attr['catlist'] = RevSliderFunctionsWP::getCategoriesHtmlList($postCatsIDs);
//// $attr['catlist_raw'] = strip_tags(RevSliderFunctionsWP::getCategoriesHtmlList($postCatsIDs));
// //$attr['taglist'] = RevSliderFunctionsWP::getTagsHtmlList($postID);
// $attr['catlist'] = '';
// $attr['catlist_raw'] ='';
// $attr['taglist'] = '';
//
// // $ptid = get_post_thumbnail_id($postID);
//
// // $img_sizes = RevSliderBase::get_all_image_sizes();
// $attr['img_urls'] = array();
// $img_sizes = array();
// foreach($img_sizes as $img_handle => $img_name){
// $featured_image_url = wp_get_attachment_image_src($ptid, $img_handle);
// if($featured_image_url !== false){
// $attr['img_urls'][$img_handle] = array(
// 'url' => $featured_image_url[0],
// 'tag' => '
'
// );
// }
// }
//
// //$attr['numComments'] = RevSliderFunctions::getVal($postData, "comment_count");
// $attr['numComments'] = 0;
//
// $attr = apply_filters('revslider_slide_setLayersByPostData_post', $attr, $postData, $sliderID, $this);
//
// foreach($this->arrLayers as $key=>$layer){
//
// $text = RevSliderFunctions::getVal($layer, "text");
// $text = apply_filters('revslider_mod_meta', $text, $postID, $postData); //option to add your own filter here to modify meta to your likings
//
// $text = $this->set_post_data($text, $attr, $postID);
//
// $layer["text"] = $text;
//
// $all_actions = RevSliderFunctions::getVal($layer, 'layer_action', array());
// $all_actions=array();//this is done for oc
// if(!empty($all_actions)){
// $a_image_link = RevSliderFunctions::cleanStdClassToArray(RevSliderFunctions::getVal($all_actions, 'image_link', array()));
// if(!empty($a_image_link)){
// foreach($a_image_link as $ik => $ilink){
// $ilink = $this->set_post_data($ilink, $attr, $postID);
// $a_image_link[$ik] = $ilink;
// }
// $layer['layer_action']->image_link = $a_image_link;
// }
// }
//
// $this->arrLayers[$key] = $layer;
// }
//
//
// /*$params = $this->getParams();
//
// foreach($params as $key => $param){ //set metas on all params except arrays
// if(!is_array($param)){
// $pa = $this->set_post_data($param, $attr, $postID);
// $this->setParam($key, $pa);
// }
// }*/
//
// //below lines are commented
//// for($mi=1;$mi<=10;$mi++){ //set params to the post data
//// $pa = $this->getParam('params_'.$mi, '');
//// $pa = $this->set_post_data($pa, $attr, $postID);
//// $this->setParam('params_'.$mi, $pa);
//// }
//// //below lines are commented
//// $param_list = array('id_attr', 'class_attr', 'data_attr');
//// //set params to the stream data
//// foreach($param_list as $p){
//// $pa = $this->getParam($p, '');
//// $pa = $this->set_post_data($pa, $attr, $postID);
//// $this->setParam($p, $pa);
//// }
//
// }
//
private function setLayersByPostData($postData, $sliderID)
{
$priceDisplay = Product::getTaxCalculationMethod((int) Context::getcontext()->cookie->id_customer);
if (!$priceDisplay) {
$productprice = Tools::displayPrice($postData["price"], Context::getContext()->currency);
} else {
$productprice = Tools::displayPrice($postData["price_tax_exc"], Context::getContext()->currency);
}
$postID = $postData["id_product"];
$countdown = $this->setCountDown($postData);
// $imgsrc = $this->setImageSrc($postData);
$title = UniteFunctionsRev::getVal($postData, "name");
$excerpt_limit = $this->getSliderParam($sliderID, "excerpt_limit", 55, RevSlider::VALIDATE_NUMERIC);
$excerpt_limit = (int) $excerpt_limit;
$description = Tools::substr($postData["description"], $excerpt_limit);
$description_short = $postData["description_short"];
// $alias = UniteFunctionsRev::getVal($postData, "post_name");
// $content = UniteFunctionsRev::getVal($postData, "post_content");
//$link = get_permalink($postID);
$link = $postData["link"];
$date_add = $postData["date_add"];
//$date_add = UniteFunctionsWPRev::convertPostDate($date_add);
$date_upd = $postData["date_upd"];
//$date_upd = UniteFunctionsWPRev::convertPostDate($date_upd);
$default_category = $postData["default_category"];
$linkobj = new Link();
$addtocart = $linkobj->getPageLink('cart', false, null, "add=1&id_product=" . $postID, false);
foreach ($this->arrLayers as $key => $layer) {
$text = UniteFunctionsRev::getVal($layer, "text");
$text = str_replace("%title%", $title, $text);
$text = str_replace("%description_short%", $description_short, $text);
$text = str_replace("%description%", $description, $text);
$text = str_replace("%link%", $link, $text);
$text = str_replace("%addtocart%", $addtocart, $text);
$text = str_replace("%countdown%", $countdown, $text);
// $text = str_replace("%imgsrc%", $imgsrc, $text);
$text = str_replace("%date%", $date_add, $text);
$text = str_replace("%date_modified%", $date_upd, $text);
$text = str_replace("%product_price%", $productprice, $text);
$text = str_replace("%default_category%", $default_category, $text);
$arrMatches = array();
$text = str_replace('-', '_REVSLIDER_', $text);
preg_match_all('/%product:\w+%/', $text, $arrMatches);
foreach ($arrMatches as $matched) {
foreach ($matched as $match) {
$meta = str_replace("%product:", "", $match);
$meta = str_replace("%", "", $meta);
$meta = str_replace('_REVSLIDER_', '-', $meta);
if (@RevsliderPrestashop::getIsset($postData[$meta]) && !empty($postData[$meta])) {
$metaValue = $postData[$meta];
$text = str_replace($match, $metaValue, $text);
}
}
}
$text = str_replace('_REVSLIDER_', '-', $text);
// start hook exec
$extra_hook_meta_exec = array();
Hook::exec('actionsdsrevinsertmetaexec', array(
'extra_hook_meta_exec' => &$extra_hook_meta_exec,
'id_product' => &$postID,
));
if (@RevsliderPrestashop::getIsset($extra_hook_meta_exec) && !empty($extra_hook_meta_exec)) {
foreach ($extra_hook_meta_exec as $svalue) {
$hook_title = "%" . $svalue['title'] . "%";
$hook_exec = $svalue['exec'];
$text = str_replace($hook_title, $hook_exec, $text);
}
}
// end hook exec
$layer["text"] = $text;
$this->arrLayers[$key] = $layer;
}
}
private function setCountDown($postData = array())
{
$html = '';
if (@RevsliderPrestashop::getIsset($postData) && @RevsliderPrestashop::getIsset($postData['specific_prices']) && !empty($postData['specific_prices'])) {
$id_product = $postData['id_product'];
$specific_prices = $postData['specific_prices'];
$to_time = $specific_prices['to'];
$to_time_str = strtotime($to_time);
$to_time_y = date("Y", $to_time_str);
$to_time_m = date("m", $to_time_str);
$to_time_d = date("d", $to_time_str);
$to_time_h = date("H", $to_time_str);
$to_time_i = date("i", $to_time_str);
$to_time_s = date("s", $to_time_str);
$from_time = $specific_prices['from'];
$now_time = date("Y-m-d H:i:s");
if ($now_time <= $to_time && $now_time >= $from_time) {
$html .= '