| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158 |
- <?php
- /**
- * @author ThemePunch <info@themepunch.com>
- * @link http://www.themepunch.com/
- * @copyright 2016 ThemePunch
- */
-
-
- if( !defined( 'ABSPATH') ) exit();
- class RevSliderObjectLibrary {
-
- private $library_list = 'library.php';
- private $library_download = 'download.php';
-
- private $object_thumb_path = '/revslider/objects/thumbs/';
- private $object_orig_path = '/revslider/objects/';
-
- private $curl_check = null;
-
- const LIBRARY_VERSION = '1.0.0';
-
-
- /**
- * get list of objects
- * @since: 5.3.0
- */
- public function _get_list($force = false){
- global $wp_version, $rslb;
-
- $last_check = get_option('revslider-library-check');
-
- if($last_check == false){ //first time called
- $last_check = 1296001;
- update_option('revslider-library-check', time());
- }
-
- // Get latest object list
- if(time() - $last_check > 1296000 || $force == true){ //30 days
-
- update_option('revslider-library-check', time());
-
- $code = get_option('revslider-code', '');
- $library_version = self::LIBRARY_VERSION;
-
- $validated = get_option('revslider-valid', 'false');
- if($validated == 'false'){
- $code = '';
- }
-
- $rattr = array(
- 'code' => urlencode($code),
- 'library_version' => urlencode($library_version),
- 'version' => urlencode(RevSliderGlobals::SLIDER_REVISION),
- 'product' => urlencode(RS_PLUGIN_SLUG)
- );
-
- $done = false;
- $count = 0;
- do{
- $url = $rslb->get_url('library');
- $request = wp_remote_post($url.'/'.$this->library_list, array(
- 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'),
- 'body' => $rattr
- ));
- $response_code = wp_remote_retrieve_response_code( $request );
- if($response_code == 200){
- $done = true;
- }else{
- $rslb->move_server_list();
- }
- $count++;
- }while($done == false && $count < 5);
-
- if(!is_wp_error($request)) {
- if($response = maybe_unserialize($request['body'])) {
-
- $library = json_decode($response, true);
-
- if(is_array($library)) {
- update_option('rs-library', $library, false);
- }
- }
- }
- }
- }
-
-
- public function _get_object_data($object_handle){
- $data = array('thumb' => $object_handle, 'orig' => $object_handle);
-
- $upload_dir = wp_upload_dir(); // Set upload folder
- $file = $upload_dir['basedir'] . $this->object_thumb_path . $object_handle;
- if(file_exists($file)){
- $url_file = $upload_dir['baseurl'] . $this->object_thumb_path . $object_handle;
- $data['thumb'] = $url_file;
- }
-
- $file = $upload_dir['basedir'] . $this->object_orig_path . $object_handle;
- if(file_exists($file)){
- $url_file = $upload_dir['baseurl'] . $this->object_orig_path . $object_handle;
- $data['orig'] = $url_file;
- //check
- }
-
- return $data;
- }
-
-
- /**
- * check if given URL is an object from object library
- * @since: 5.3.0
- */
- public function _is_object($url){
- $is_object = false;
-
- $upload_dir = wp_upload_dir(); // Set upload folder
- //$upload_directory = $upload_dir['basedir'] . $this->object_orig_path;
- $upload_url = $upload_dir['baseurl'] . $this->object_orig_path;
- $file_name = explode('/', $url);
- $file_name = $file_name[count($file_name) - 1];
-
- if(strpos($url, $upload_url) !== false){
- //check now if handle is inside of the array of objects
- $obj = $this->load_objects();
- $online = $obj['online']['objects'];
-
- foreach($online as $object){
- if($object['handle'] == $file_name){
- $is_object = true;
- break;
- }
- }
- }
-
- return $is_object;
- }
-
-
- /**
- * check if given URL is existing in the object library
- * @since: 5.3.0
- */
- public function _does_exist($url){
- $does_exist = false;
-
- $upload_dir = wp_upload_dir(); // Set upload folder
- $upload_directory = $upload_dir['basedir'] . $this->object_orig_path;
- $upload_url = $upload_dir['baseurl'] . $this->object_orig_path;
-
- $url = str_replace($upload_url, '', $url);
-
- if(file_exists($upload_directory.$url)){
- $does_exist = true;
- }
-
- return $does_exist;
- }
-
-
- /**
- * check if certain object needs to be redownloaded
- * @since: 5.3.0
- */
- public function _check_object_exist($object_url){
-
- //first check if it is an object
- $is_obj = $this->_is_object($object_url);
-
- //then check if it is existing
- if($is_obj){
- if($this->_does_exist($object_url)){
- //all cool
- }else{ //if not, redownload if allowed
- //need to redownload
-
- $file_name_with_ending = explode("/", $object_url);
- $file_name_with_ending = $file_name_with_ending[count($file_name_with_ending) - 1];
- $this->_get_object_thumb($file_name_with_ending, 'orig');
- }
- }
- }
-
-
- /**
- * get certain objects thumbnail, download if needed and if not, simply return path
- * @since: 5.3.0
- */
- public function _get_object_thumb($object_handle, $type){
- global $wp_version, $rslb;
-
- $error = '';
- $path = ($type == 'thumb') ? $this->object_thumb_path : $path = $this->object_orig_path;
- $download = false;
- $upload_dir = wp_upload_dir(); // Set upload folder
- $file = $upload_dir['basedir'] . $path . $object_handle;
- $url_file = $upload_dir['baseurl'] . $path . $object_handle;
-
- //check if object thumb is already downloaded
- $download = (!file_exists($file)) ? true : false;
-
- //check if new version of object thumb is available
-
- // Check folder permission and define file location
- if($download && wp_mkdir_p( $upload_dir['basedir'].$path ) ) {
-
- $curl = ($this->check_curl_connection()) ? new WP_Http_Curl() : false;
-
- $file = $upload_dir['basedir'] . $path . $object_handle;
-
- if(!file_exists($file) || isset($temp['push_image'])){
- $image_data = false;
- if($curl !== false){
- $validated = get_option('revslider-valid', 'false');
-
- if($validated == 'false' && $type != 'thumb'){
- $error = __('Plugin not activated', 'revslider');
- }else{
- $code = ($validated == 'false') ? '' : get_option('revslider-code', '');
-
- $done = false;
- $count = 0;
- do{
- $url = $rslb->get_url('library');
- $image_data = wp_remote_post($url.'/'.$this->library_download, array(
- 'user-agent' => 'WordPress/'.$wp_version.'; '.get_bloginfo('url'),
- 'body' => array(
- 'code' => urlencode($code),
- 'library_version' => urlencode(self::LIBRARY_VERSION),
- 'version' => urlencode(RevSliderGlobals::SLIDER_REVISION),
- 'handle' => urlencode($object_handle),
- 'download' => urlencode($type),
- 'product' => urlencode(RS_PLUGIN_SLUG)
- ),
- 'timeout' => 45
- ));
- $response_code = wp_remote_retrieve_response_code( $image_data );
- if($response_code == 200){
- $done = true;
- }else{
- $rslb->move_server_list();
- }
-
- $count++;
- }while($done == false && $count < 5);
-
- if(!is_wp_error($image_data) && isset($image_data['body']) && isset($image_data['response']) && isset($image_data['response']['code']) && $image_data['response']['code'] == '200'){
- $image_data = $image_data['body'];
- //check body for errors in here
- $check = json_decode($image_data, true);
- if(!empty($check)){
- if(isset($check['error'])){
- $image_data = false;
- $error = $check['error'];
- }
- }elseif(trim($image_data) == ''){
- $error = __('No data received', 'revslider');
- }
- }else{
- $image_data = false;
- $error = __('Error downloading object', 'revslider');
- }
- }
- }else{
- //cant download file
- }
- if($image_data !== false){
- @mkdir(dirname($file));
- @file_put_contents( $file, $image_data );
-
- $this->create_image_dimensions($object_handle);
-
- }else{//could not connect to server
- $error = __('Error downloading object', 'revslider');
- }
- }else{//use default image
- $error = __('Error downloading object', 'revslider');
- }
- }else{//use default images
- $error = __('Error downloading object', 'revslider');
- }
-
- if($error !== ''){
- return array('error' => true);
- }
-
- $width = false;
- $height = false;
- //get dimensions of image
- $imgsize = getimagesize( $file );
- if($imgsize !== false){
- $width = $imgsize['0'];
- $height = $imgsize['1'];
- }
-
- return array('error' => false, 'url' => $url_file, 'width' => $width, 'height' => $height);
-
- }
-
-
- /**
- * import object to media library
- * @since: 5.3.0
- */
- public function _import_object($file_path){
- $curl = ($this->check_curl_connection()) ? new WP_Http_Curl() : false;
-
- $upload_dir = wp_upload_dir(); // Set upload folder
- $path = $this->object_orig_path;
- $object_handle = basename($file_path);
- $file = $upload_dir['basedir'] . $path . $object_handle;
- $url_file = $upload_dir['baseurl'] . $path . $object_handle;
-
- $image_handle = @fopen($file_path, "r");
-
- if($image_handle != false){
- $image_data = stream_get_contents($image_handle);
- if($image_data !== false){
- @mkdir(dirname($file));
- @file_put_contents( $file, $image_data );
-
- $this->create_image_dimensions($object_handle);
-
- return array('path' => $url_file);
- }
- }
-
- return false;
- }
-
-
- public function write_markup(){
- ?>
- <!-- THE OBJECT LIBRARY DIALOG WINDOW -->
- <div id="dialog_addobj" class="dialog-addobj" title="<?php _e("Add Object Layer",'revslider'); ?>" style="display:none">
- <div class="addobj-dialog-inner">
- <div id="addobj-list-of-items">
- <div id="addobj-dialog-header">
- <div class="object_library_search_wrapper">
- <input type="text" id="obj_library_search" placeholder="<?php _e("Search for Objects...",'revslider'); ?>" /><span id="obj_library_search_trigger"><i class="eg-icon-search"></i></span>
- </div>
- <div id="object_library_type_list_new">
- <span id="obj_lib_main_cat_filt_all" data-value="all" class="obj_library_cats_filter"><?php _e("ALL",'revslider'); ?></span>
- <span id="obj_lib_main_cat_filt_allimages" data-value="allimages" class="obj_library_cats_filter all_img_cat"><?php _e("ALL IMAGES",'revslider'); ?></span>
- <span id="obj_lib_main_cat_filt_svg" data-value="svg" class="obj_library_cats_filter svg_cat"><?php _e("SVG",'revslider'); ?></span>
- <span id="obj_lib_main_cat_filt_icon" data-value="icon" class="obj_library_cats_filter fonticon_cat"><?php _e("ICON",'revslider'); ?></span>
- <span id="obj_lib_main_cat_filt_image" data-value="image" class="obj_library_cats_filter png_cat"><?php _e("PNG",'revslider'); ?></span>
- <span id="obj_lib_main_cat_filt_bgimage" data-value="bgimage" class="obj_library_cats_filter jpg_cat"><?php _e("JPG",'revslider'); ?></span>
- </div>
- <div id="up-lic-ob-lib">
- <div id="licence_obect_library"><i class="fa-icon-copyright"></i><?php _e("License Info",'revslider'); ?></div>
- <div id="update_obect_library"><i class="eg-icon-arrows-ccw"></i><?php _e("Update Object Library",'revslider'); ?></div>
- </div>
- <div id="object-tag-list" class="object-tag-list"><span id="obj_library_cats_favorite" class="obj_library_cats" data-tag="favorite" data-image="true" data-bgimages="true" data-svg="true"><i class="fa-icon-star-o" style="margin-right: 5px;"></i><?php _e("Favorite",'revslider'); ?></span><span id="obj_library_cats_allico" class="obj_library_cats" data-tag="allicon" data-icon="true" data-bgimages="false" data-svg="false"><i class="fa-icon-folder-o" style="margin-right: 5px;"></i><?php _e("All Icons",'revslider'); ?></span><span id="obj_library_cats_allpng" class="obj_library_cats" data-tag="allpng" data-image="true" data-bgimages="false" data-svg="false"><i class="fa-icon-folder-o" style="margin-right: 5px;"></i><?php _e("All PNG",'revslider'); ?></span><span id="obj_library_cats_alljpg" class="obj_library_cats" data-tag="alljpg" data-image="false" data-bgimages="true" data-svg="false"><i class="fa-icon-folder-o" style="margin-right: 5px;"></i><?php _e("All JPG",'revslider'); ?></span><span id="obj_library_cats_allsvg" class="obj_library_cats" data-tag="allsvg" data-image="false" data-bgimages="false" data-svg="true"><i class="fa-icon-folder-o" style="margin-right: 5px;"></i><?php _e("All SVG",'revslider'); ?></span></div>
- </div>
- <div id="object_library_results">
- <div id="object_library_results-inner">
- </div>
- </div>
- </div>
- </div>
- <div id="bg-vs-layer-wrapper">
- <span id="add_objimage_as_layer"><?php _e("As Layer",'revslider'); ?></span><span class="addthisasbg" id="obj-layer-bg-switcher"></span><span id="add_objimage_as_slidebg"><?php _e("As Slide BG",'revslider'); ?></span>
- </div>
-
- <?php
- $this->write_scripts();
- ?>
- </div>
- <?php
- }
-
-
-
- public function write_scripts(){
- ?>
- <script>
- var obj_libraries = [];
- jQuery('body').on('click','.object_library_itemfavorit',function() {
- var t = jQuery(this),
- item = t.parent(),
- d = item.data(),
- ic = t.find('i');
- if (ic.hasClass("fa-icon-star")) {
- ic.addClass("fa-icon-star-o");
- ic.removeClass("fa-icon-star");
- var newtags = item.data('tags');
- item.data('tags', newtags.replace(',favorite',''));
- favoriteObjectsList = jQuery.grep(favoriteObjectsList,function(value) { return value != d.src});
- } else {
- ic.removeClass("fa-icon-star-o");
- ic.addClass("fa-icon-star");
- var newtags = item.data('tags')+",favorite";
- item.data('tags', newtags);
- favoriteObjectsList.push(d.src);
- }
-
- return false;
- });
-
- // HOVER OVER SINGLE IMAGES
- jQuery('body').on('mouseenter','.obj_lib_container_img',function() {
- var _t = jQuery(this),
- typ = _t.data('type');
- if (typ==="2" || typ===2)
- jQuery('#bg-vs-layer-wrapper').appendTo(_t.find('.obj-item-size-selectors'));
- });
- // LOAD OBJECTS ON DEMAND WHEN THEY BECOME VISIBLE
- function loadObjNow(d) {
- d.data('loaded',true);
- var src = d.data('src'),
- ty = d.data('type');
- if (ty==="svg") {
- jQuery.get(src, function(data) {
- var div = document.createElement("div");
- div.innerHTML = new XMLSerializer().serializeToString(data.documentElement);
- d.find('.obj_item_media_holder').append(div);
- jQuery('#object_library_results').perfectScrollbar("update");
- });
- } else
- if (ty==="img" || ty==="1" || ty==="2" || ty===1 || ty===2) {
- if (src.indexOf("/") === -1) {
- getObjectUrl(src,d,'thumb');
- } else {
- d.find('.obj_item_media_holder').append('<div class="rs-obj-img-mediainner" style="background-image:url('+src+');"></div>');
- //jQuery('#object_library_results').perfectScrollbar("update");
- }
- } else
- if (ty==="icon") {
- d.find('.obj_item_media_holder').append('<i class="'+src+'"></i>');
- }
-
- }
- function ol_itemVisible(o,st) {
- var t = o.position().top,
- ch = jQuery('#object_library_results').height();
- if (t-st>-170 && t-st<ch && !o.data('loaded'))
- loadObjNow(o);
- }
- function ol_checkVisibilityOfItems() {
- var c = jQuery('#object_library_results-inner'),
- st = c.scrollTop();
-
- if (jQuery('#dialog_addobj').parent().css("display")==="block") {
- jQuery('#object_library_results-inner .obj_library_item').each(function() {
- var o = jQuery(this);
- if (o.hasClass("showit"))
- ol_itemVisible(o,st);
-
- });
- }
- }
- function createFontIcons() {
- jQuery('#waitaminute .waitaminute-message').append('<br>Loading Font Icons');
- var sheets = document.styleSheets,
- obj = new Object(),
- fi = 1;
- obj.handle = "FontIcons-"+fi;
- obj.list = new Array();
- if (sheets)
- jQuery.each(sheets,function(index,sheet) {
- var found = false,
- markup = "";
- if (sheet && sheet.href && sheet.href.indexOf("plugins/revslider/public/assets/fonts/")>=0) {
- try{
- if (sheet.cssRules !==null & sheet.cssRules!=undefined)
- jQuery.each(sheet.cssRules, function(index,rule) {
- if (rule && rule!==null && rule !=="null" && rule.selectorText!=undefined) {
- jQuery.each(rs_icon_sets,function(j,prefix){
- if (rule.selectorText.split(prefix).length>1 && rule.cssText.split("content").length>1) {
- var csname = rule.selectorText.split("::before")[0].split(":before")[0];
- if (csname!=undefined) {
- csname = csname.split(".")[1];
-
- if (csname!=undefined) {
- found = true;
- var iconobj = new Object();
- iconobj.name = csname;
- iconobj.group = "icon";
- iconobj.tags="fonticon"+fi+","+csname.replace(/\-/g,",");
- iconobj.type="icon";
- iconobj.src=csname;
- obj.list.push(iconobj);
- }
- }
- }
- })
- }
- });
- } catch(e) {
-
- }
- if (found) {
- found = false;
- if (obj.list.length>0) obj_libraries.push(obj);
- obj = new Object();
- jQuery('#object-tag-list').append('<span id="obj_library_cats_fonticon_'+fi+'" class="obj_library_cats" data-tag="fonticon'+fi+'" data-icon="true">Font Icons '+fi+'</span>')
- fi++;
- obj.handle="FontIcons"+fi;
- obj.list=new Array();
- }
- }
- });
-
-
- }
- // ADD THE ITEMS TO THE MAIN CONTAINER (ONLY EMPTY PLACEHOLDERS FIRST)
- function push_objects_to_library(){
- var c = jQuery('#object_library_results-inner'),
- svgi = 0,
- pngi = 0,
- jpgi = 0,
- iconi = 0,
- taggroups = {},
- counter = 0;
- if (favoriteObjectsList !==undefined && favoriteObjectsList.length>0) {
- svgi=5;
- pngi=5;
- jpgi=5;
- iconi=5;
- } else {
- favoriteObjectsList = new Array();
- }
-
- createFontIcons();
- //console.time("Create Markups");
- for (var i=0;i<obj_libraries.length;i++) {
- var library = obj_libraries[i];
- //console.time("Library Handle:"+library.handle);
- for (var j=0;j<library.list.length;j++) {
- var item = library.list[j],
- ref = 'obj-item-'+library.handle+'-'+i,
- titl = item.name!==undefined ? item.name : item.src,
- short = "SVG",
- color = "purple",
- classext = "",
- tt = '',
- favclass = "fa-icon-star-o";
-
- sizes = item.type==="svg" ? "" : '<div class="obj-item-size-selectors"><div class="sizetooltip"></div><div data-s="xs" class="obj-item-size-selector nfbg">XS</div><div data-s="s" class="obj-item-size-selector nfbg">S</div><div data-s="m" class="obj-item-size-selector">M</div><div data-s="l" class="obj-item-size-selector">L</div><div data-s="o" class="obj-item-size-selector">O</div></div>';
- switch (item.type) {
- case "svg":
- short = "SVG";
- color = "purple";
- classext = "svg";
- item.tags = item.tags+",allsvg";
- if (svgi<3) {
- item.tags = item.tags+",favorite";
- favclass = "fa-icon-star";
- svgi++;
- favoriteObjectsList.push(item.src);
- }
- break;
- case 1:
- case "1":
- short = "PNG";
- color = "green";
- classext = "img";
- item.tags = item.tags+",allpng";
- if (pngi<3) {
- item.tags = item.tags+",favorite";
- favclass = "fa-icon-star";
- pngi++;
- favoriteObjectsList.push(item.src);
- }
- break;
- case 2:
- case "2":
- short = "JPG";
- color = "blue";
- classext = "img";
- item.tags = item.tags+",alljpg";
- if (jpgi<3) {
- item.tags = item.tags+",favorite";
- favclass = "fa-icon-star";
- jpgi++;
- favoriteObjectsList.push(item.src);
- }
- break;
- case "icon":
- short = "ICON";
- color = "red";
- classext = "icon";
- item.tags = item.tags+",allicon";
- if (iconi<3) {
- item.tags = item.tags+",favorite";
- favclass = "fa-icon-star";
- iconi++;
- favoriteObjectsList.push(item.src);
- }
- break;
- }
-
- if (favoriteObjectsList !==undefined && favoriteObjectsList.length>0 && jQuery.inArray(item.src,favoriteObjectsList)>=0){
- item.tags = item.tags+",favorite";
- favclass = "fa-icon-star";
- }
- tt = '<div class="obj_library_item_type_'+color+' ">'+short+'</div>';
-
- if (titl.indexOf("/") !== -1) {
- titl = titl.split("/");
- titl = titl[titl.length-1].split(".")[0];
- } else {
- titl = titl.split(".")[0];
- }
-
- titl = titl.replace(/\_/g," ");
- titl = titl.replace(/\-/g," ");
- item.title = titl.toLowerCase().split(" ");
- item.tags_array = item.tags.toLowerCase().split(",");
- item.idref = ref+"_"+counter;
- counter++;
- var el = '<div id="'+item.idref+'" data-title="'+titl+'" data-origsrc="'+item.origsrc+'" data-type="'+item.type+'" data-group="'+item.group+'" data-src="'+item.src+'" data-mediawidth="'+item.width+'" data-mediaheight="'+item.height+'" data-tags="'+item.tags+'" class="obj_lib_container_'+classext+' obj_library_item objadd-single-item "><div class="object_library_itemfavorit"><i class="'+favclass+'"></i></div><div class="objadd-single-item_holder obj_item_media_holder"></div><div class="obj_lib_item_title">'+titl+'</div>'+tt+sizes+'</div>';
- c.append(el);
- item.ref = el;
- var otags = item.tags.split(",");
-
- for (var k=0;k<otags.length;k++) {
- if (taggroups[item.group]===undefined)
- taggroups[item.group] = new Object();
- taggroups[item.group][otags[k]] = true;
- }
-
- };
- //console.timeEnd("Library Handle:"+library.handle);
- };
-
-
- jQuery.each(taggroups, function(key,value) {
- jQuery.each(value,function(tag){
- jQuery('#obj_library_cats_'+tag).data(key,true);
- })
-
- });
- //console.timeEnd("Create Markups");
- }
-
-
- jQuery('body').on('mouseenter','.obj-item-size-selector',function() {
- var _t = jQuery(this),
- _i = _t.closest('.obj_library_item'),
- _ttip = _i.find('.sizetooltip'),
- size = 1;
-
- switch (_t.data('s')) {
- case "xs": size = 0.1;break;
- case "s": size = 0.25;break;
- case "m": size = 0.50;break;
- case "l": size = 0.75;break;
- case "o": size = 1;break;
- };
- _ttip.html(Math.round(_i.data('mediawidth')*size)+' x '+Math.round(_i.data('mediaheight')*size))
- });
- jQuery('body').on('mouseleave','.obj-item-size-selector',function() {
- var _t = jQuery(this),
- _i = _t.closest('.obj_library_item'),
- _ttip = _i.find('.sizetooltip');
- _ttip.html("");
- });
- jQuery('#add_objimage_as_layer').click(function() {
- jQuery('#obj-layer-bg-switcher').removeClass("addthisasbg");
- });
- jQuery('#add_objimage_as_slidebg').click(function() {
- jQuery('#obj-layer-bg-switcher').addClass("addthisasbg");
- });
- jQuery('#obj-layer-bg-switcher').click(function() {
- var _t = jQuery(this);
- if (_t.hasClass("addthisasbg"))
- _t.removeClass("addthisasbg");
- else
- _t.addClass("addthisasbg");
- });
-
- ol_checkVisibilityOfItems();
- // TAKE CARE ABOUT SCROLL OF THE LIBRARY CONTAINER
- jQuery('#object_library_results').perfectScrollbar({wheelPropagation:false,suppressScrollX:true});
- jQuery('#object_library_results').perfectScrollbar("update");
- document.addEventListener('ps-scroll-y', function (e) {
- if (jQuery(e.target).closest('#object_library_results').length>0) {
- ol_checkVisibilityOfItems();
- }
- });
- // CHANGING THE TAGS SHOULD CHANGE THE LIST OF ITEMS
- jQuery('body').on('click','.obj_library_cats',function() {
- jQuery('.obj_library_cats').removeClass("selected");
- jQuery('#obj_library_cats_searchresult').remove();
- jQuery(this).addClass("selected");
- jQuery('#obj_library_search').val("");
- searchForCatsAndGroups();
- });
- jQuery('body').on('click','.obj_library_cats_filter',function() {
- var op = jQuery(this),
- gr = op.data('value'),
- fv = 0,
- sv = 0;
- jQuery('.obj_library_cats_filter').removeClass("selected");
- op.addClass("selected");
- jQuery('.obj_library_cats').each(function() {
- var _t = jQuery(this);
-
-
- if (_t.data(gr) || gr==="all" || (gr==="allimages" && (_t.data("image") || _t.data("bgimage")))) {
- _t.show();
- if (fv===0)
- fv=_t;
- else
- if (sv===0)
- sv=_t;
- }
- else
- _t.hide();
- });
- if (gr==="all") {
- jQuery('#obj_library_cats_allico').hide();
- jQuery('#obj_library_cats_allpng').hide();
- jQuery('#obj_library_cats_alljpg').hide();
- jQuery('#obj_library_cats_allsvg').hide();
- }
- searchForCatsAndGroups();
- searchForObjects();
- if (jQuery('.obj_library_cats.selected').is(":visible")===false || (fv!==0 && jQuery('.obj_library_cats.selected').data('tag')==="favorite" && gr!=="all")) {
- jQuery('.obj_library_cats.selected').removeClass("selected");
- if(fv !== 0){
- if (gr==="all")
- fv.click();
- if (gr!=="all" && sv !== 0)
- sv.click();
- }
- }
- });
-
-
- // SHOW ONLY ELEMENTS WITH SELECTED TAGS
- function searchForCatsAndGroups() {
- jQuery('#object_library_results').scrollTop(0);
- jQuery('.obj_library_cats.selected').each(function() {
- var searched_lib = jQuery(this).data('tag'),
- group = jQuery('.obj_library_cats_filter.selected').data('value');
- jQuery('.obj_library_item').each(function() {
- var o = jQuery(this),
- otags = o.data('tags').split(","),
- gr = o.data('group'),
- ty = o.data('type'),
- afo = false;
- if (group==="all" || group===gr || (group=="allimages" && (ty===2 || ty===1))) {
- for (var ti =0;ti<otags.length;ti++) {
- if (otags[ti]===searched_lib || afo || searched_lib==="all") {
- o.addClass("showit");
- afo=true;
- }
- else {
- o.removeClass("showit");
- }
- }
- } else {
- o.removeClass("showit");
- }
- });
- });
- ol_checkVisibilityOfItems();
- }
- // SEARCH FOR OBJECTS
- function searchForObjects() {
- jQuery('#object_library_results').scrollTop(0);
- jQuery('#obj_library_cats_searchresult').remove();
- var searchfor = jQuery('#obj_library_search').val(),
- res = 0,
- group = jQuery('.obj_library_cats_filter.selected').data('value');
- if (searchfor.length<3) return;
- searchfor = searchfor.replace(/\ /g,",");
- searchfor = searchfor.split(",");
-
- jQuery.each(obj_libraries, function(i,library) {
- jQuery.each(library.list,function(i,item) {
- var found = false;
-
-
- if (group==="all" || item.group === group)
- jQuery.each(searchfor, function(i,sf){
- if (sf.length>2) {
- // CHECK TITLE
- if (jQuery.isArray(item.title)) {
- if (jQuery.inArray(sf.toLowerCase(),item.title)>=0) {
- jQuery('#'+item.idref).addClass("showit");
- res++;
- found = true;
- return true;
- } else {
- jQuery.each(item.title,function(i,tt){
- if (tt.indexOf(sf)>=0) {
- jQuery('#'+item.idref).addClass("showit");
- res++;
- found = true;
- return true;
- }
- });
- }
- } else {
- if (sf.toLowerCase() === item.title) {
- jQuery('#'+item.idref).addClass("showit");
- res++;
- found = true;
- return true;
- }
- }
- //CHECK ITME TAGS
- if (jQuery.isArray(item.tags_array)) {
- if (jQuery.inArray(sf.toLowerCase(),item.tags_array)>=0) {
- jQuery('#'+item.idref).addClass("showit");
- res++;
- found = true;
- return true;
- } else {
- jQuery.each(item.tags_array,function(i,tt){
- if (tt.indexOf(sf)>=0) {
- jQuery('#'+item.idref).addClass("showit");
- res++;
- found = true;
- return true;
- }
- });
- }
- } else {
- if (sf.toLowerCase() === item.tags_array) {
- jQuery('#'+item.idref).addClass("showit");
- res++;
- found = true;
- return true;
- }
- }
- item.tags_array
- }
- });
-
- if (!found) jQuery('#'+item.idref).removeClass("showit");
- });
- });
- jQuery('.obj_library_cats').removeClass("selected");
- jQuery('.object-tag-list').prepend('<span class="obj_library_cats selected" id="obj_library_cats_searchresult">Found ('+res+') elements</span>');
- ol_checkVisibilityOfItems();
- }
- var objl_keyuprefresh;
- jQuery("#obj_library_search").keyup(function(){
- clearTimeout(objl_keyuprefresh);
- var v = jQuery(this).val();
- objl_keyuprefresh = setTimeout(function() {
- if (v.length>2)
- searchForObjects();
- },150);
- });
- jQuery('#obj_library_search_trigger').click(searchForObjects);
-
- function getObjectUrl(handle, el, type){
- UniteAdminRev.ajaxRequest('load_library_object', {'handle': handle, 'type': type}, function(response){
- if(response.success){
- el.find('.obj_item_media_holder').append('<div class="rs-obj-img-mediainner" style="background-image:url('+response.url+');"></div>');
- jQuery('#object_library_results').perfectScrollbar("update");
- } else {
-
- }
- });
- }
-
- jQuery('#update_obect_library').click(function(){
- if(confirm(rev_lang.unsaved_data_will_be_lost_proceed)){
- jQuery('#dialog_addobj').dialog("close");
- showWaitAMinute({fadeIn:300,text:rev_lang.please_wait_a_moment});
- location.href = window.location.href+'&update_object_library';
- }
- });
-
- var favoriteObjectsList = [];
- <?php
- $obj_favs = $this->get_favorites();
- if(!empty($obj_favs)){
- foreach($obj_favs as $fav){
- ?>favoriteObjectsList.push("<?php echo $fav; ?>");
- <?php
- }
- }
- ?>
- </script>
- <?php
- }
-
-
- public function load_objects(){
- $obj = array();
-
- $svgs = RevSliderBase::get_svg_sets_full();
-
- $obj['svg'] = $svgs;
-
- $online = get_option('rs-library', array());
- if(!empty($online)){
- $obj['online'] = $online;
- }
-
- return $obj;
- }
-
-
- public function create_image_dimensions($handle, $force = false){
- $img_editor_test = wp_image_editor_supports(array('methods' => array('resize', 'save')));
- if($img_editor_test !== true){
- return false;
- }
-
- $upload_dir = wp_upload_dir(); // Set upload folder
- $upload_directory = $upload_dir['basedir'] . $this->object_orig_path;
- $upload_url = $upload_dir['baseurl'] . $this->object_orig_path;
- $image_path = $upload_directory.$handle;
- $file_name_with_ending = explode("/", $image_path);
- $file_name_with_ending = $file_name_with_ending[count($file_name_with_ending) - 1];
- $file_name_without_ending = explode(".", $file_name_with_ending);
- $file_ending = $file_name_without_ending[count($file_name_without_ending) - 1];
- $file_name_without_ending = $file_name_without_ending[count($file_name_without_ending) - 2];
- $sizes = array('75', '50', '25', '10');
- $image = wp_get_image_editor($image_path);
- $imgsize = getimagesize($image_path);
-
- if(!is_wp_error($image) && $imgsize !== false) {
- $orig_width = $imgsize['0'];
- $orig_height = $imgsize['1'];
-
- foreach($sizes as $size){
- $modified_file_name_without_ending = $file_name_without_ending . '-' . $size;
- if(!file_exists($upload_directory.$modified_file_name_without_ending.'.'.$file_ending) || $force) {
-
- $width = round($orig_width / 100 * $size, 0);
- $height = round($orig_height / 100 * $size, 0);
-
- $image->resize($width, $height);
- $image->save($upload_directory.$modified_file_name_without_ending.'.'.$file_ending);
- }
- }
- }else{ //cant create images
- return false;
- }
-
- return true;
- }
-
- /**
- * Check if Curl can be used
- */
- public function check_curl_connection(){
-
- if($this->curl_check !== null) return $this->curl_check;
-
- $curl = new WP_Http_Curl();
-
- $this->curl_check = $curl->test();
-
- return $this->curl_check;
- }
-
-
- /**
- * Returns an URL if it is an object library image, depending on the choosen width/height or the chosen image size
- */
- public function get_correct_size_url($image_path, $imgres, $library_size = array()){
-
- if(!is_array($imgres)){
- //wordpress full, medium ect
- //or check current device and change depending on device
- $img_sizes = get_intermediate_image_sizes();
- if(isset($img_sizes[$imgres]) && isset($img_sizes[$imgres]['width']) && isset($img_sizes[$imgres]['height'])){
- $imgres = array($img_sizes[$imgres]['width'], $img_sizes[$imgres]['height']);
- }
- }else{
- /**
- * check if we have a % and if yes, turn the image back to what was selected in the beginning instead of how it was scaled
- * as it is already an array, it can be the following:
- * px
- * %
- * empty, then this means auto
- * if %, then always get the image that was selected
- **/
- if(isset($library_size['width']) && isset($library_size['height'])){
- foreach($imgres as $res){
- if(strpos($res, '%') !== false || $res == 'SET'){
- $imgres = array($library_size['width'], $library_size['height']);
- break;
- }
- }
- }
- }
-
- if(is_array($imgres)){
- //check if file exists
- if(!file_exists($image_path)) return $image_path;
-
- $upload_dir = wp_upload_dir(); // Set upload folder
- $upload_directory = $upload_dir['basedir'] . $this->object_orig_path;
- $upload_url = $upload_dir['baseurl'] . $this->object_orig_path;
-
- //we got width and high, lets check which one to use
- $file_name_with_ending = explode("/", $image_path);
- $file_name_with_ending = $file_name_with_ending[count($file_name_with_ending) - 1];
- $file_name_without_ending = explode(".", $file_name_with_ending);
- $file_ending = $file_name_without_ending[count($file_name_without_ending) - 1];
- $file_name_without_ending = $file_name_without_ending[count($file_name_without_ending) - 2];
-
- $sizes = array('75', '50', '25', '10');
- $imgsize = getimagesize($image_path);
-
- if($imgsize !== false) {
- $orig_width = $imgsize['0'];
- $orig_height = $imgsize['1'];
-
- foreach($sizes as $size){
- $width = round($orig_width / 100 * $size, 0);
- $height = round($orig_height / 100 * $size, 0);
-
- if($width >= $imgres[0] && $height >= $imgres[1]){
- $modified_file_name_without_ending = $file_name_without_ending . '-' . $size;
- if(file_exists($upload_directory.$modified_file_name_without_ending.'.'.$file_ending)) {
- $image_path = $upload_url.$modified_file_name_without_ending.'.'.$file_ending;
- }
- }
- }
- }
- }
-
- return $image_path;
- }
-
-
- public function retrieve_all_object_data(){
- $obj = $this->load_objects();
-
- $data = array('html' => array(), 'list' => array());
- $svgs = $obj['svg'];
- if(!empty($svgs) && is_array($svgs)){
- foreach($svgs as $svghandle => $svgfiles){
- $data['html'][] = array('type' => 'tag', 'handle' => $svghandle, 'name' => $svghandle);
- $data['html'][] = array('type' => 'inner');
-
- $data['list'][$svghandle] = array();
- foreach($svgfiles as $svgfile => $svgpath){
- $data['list'][$svghandle][] = array(
- 'src' => $svgpath,
- 'origsrc' => '',
- 'type' => 'svg',
- 'group' => 'svg',
- 'tags' => $svghandle,
- );
- }
- }
- }
-
- if(isset($obj['online']) && isset($obj['online']['objects'])){
- $online = $obj['online']['objects'];
- if(!empty($online) && is_array($online)){
- if(isset($obj['online']['tags'])){
- foreach($obj['online']['tags'] as $t){
- $data['html'][] = array('type' => 'tag', 'handle' => $t['handle'], 'name' => $t['name']);
- }
- }
- $data['html'][] = array('type' => 'inner');
-
- $data['list']['png'] = array();
- foreach($online as $online_file){
- $my_data = $this->_get_object_data($online_file['handle']);
- $my_tags = array();
- $group = "image";
- if ($online_file['type']==='2') $group="bgimage";
- if(isset($online_file['tags']) && !empty($online_file['tags'])){
- foreach($online_file['tags'] as $t){
- if(is_array($t) && array_key_exists('handle', $t)){
- $my_tags[] = $t['handle'];
- }
- }
- }
- $data['list']['png'][] = array(
- 'src' => $my_data['thumb'],
- 'origsrc' => $my_data['orig'],
- 'type' => $online_file['type'],
- 'group' => $group,
- 'width' => $online_file['width'],
- 'height' => $online_file['height'],
- 'tags' => implode(',', $my_tags),
- 'name' => $online_file['name']
- );
- }
- }
- }
-
- return $data;
- }
-
-
- /**
- * get list of favorites
- * @since: 5.3.0
- */
- public function get_favorites(){
- return get_option('rs_obj_favorites', array());
- }
-
-
- /**
- * save list of favorites
- * @since: 5.3.0
- */
- public function save_favorites($favourites){
- update_option('rs_obj_favorites', $favourites);
- }
-
- }
- ?>
|