| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577 |
- <?php
- /**
- * @author ThemePunch <info@themepunch.com>
- * @link http://www.themepunch.com/
- * @copyright 2015 ThemePunch
- */
- if( !defined( 'ABSPATH') ) exit();
- class RevSliderSlider extends RevSliderElementsBase{
- const DEFAULT_POST_SORTBY = "ID";
- const DEFAULT_POST_SORTDIR = "DESC";
-
- const VALIDATE_NUMERIC = "numeric";
- const VALIDATE_EMPTY = "empty";
- const FORCE_NUMERIC = "force_numeric";
-
- const SLIDER_TYPE_GALLERY = "gallery";
- const SLIDER_TYPE_POSTS = "posts";
- const SLIDER_TYPE_TEMPLATE = "template";
- const SLIDER_TYPE_ALL = "all";
-
- private $slider_version = 5;
- private $id;
- private $title;
- private $alias;
- private $arrParams;
- private $settings;
- private $arrSlides = null;
-
- public function __construct(){
- parent::__construct();
- }
-
-
- /**
- *
- * return if the slider is inited or not
- */
- public function isInited(){
- if(!empty($this->id))
- return(true);
-
- return(false);
- }
-
-
- /**
- *
- * validate that the slider is inited. if not - throw error
- */
- private function validateInited(){
- if(empty($this->id))
- RevSliderFunctions::throwError("The slider is not initialized!");
- }
-
- /**
- * init slider by db data
- */
- public function initByDBData($arrData){
-
- $this->id = $arrData["id"];
- $this->title = $arrData["title"];
- $this->alias = $arrData["alias"];
-
- $settings = $arrData["settings"];
- $settings = (array)json_decode($settings);
-
- $this->settings = $settings;
-
- $params = $arrData["params"];
- $params = (array)json_decode($params);
- $params = RevSliderBase::translate_settings_to_v5($params);
-
- $this->arrParams = $params;
- }
-
-
- /**
- *
- * init the slider object by database id
- */
- public function initByID($sliderID){
- RevSliderFunctions::validateNumeric($sliderID,"Slider ID");
-
- try{
- $sliderData = $this->db->fetchSingle(RevSliderGlobals::$table_sliders, $this->db->prepare("id = %s", array($sliderID)));
- }catch(Exception $e){
- $message = $e->getMessage();
- echo $message;
- exit;
- }
-
- $this->initByDBData($sliderData);
- }
- /**
- *
- * init slider by alias
- */
- public function initByAlias($alias){
- try{
- $where = $this->db->prepare("alias = %s AND `type` != 'template'", array($alias));
-
- $sliderData = $this->db->fetchSingle(RevSliderGlobals::$table_sliders,$where);
-
- }catch(Exception $e){
- $arrAliases = $this->getAllSliderAliases();
- $strAliases = "";
-
- if(!empty($arrAliases) && is_array($arrAliases)){
- $arrAliases = array_slice($arrAliases, 0, 6); //show 6 other, will be enough
-
- $strAliases = "'".sanitize_text_field(implode("' or '", $arrAliases))."'";
- }
-
- $errorMessage = 'Slider with alias <strong>'.sanitize_text_field(esc_attr($alias)).'</strong> not found.';
- if(!empty($strAliases))
- $errorMessage .= ' <br>Maybe you mean: '.$strAliases;
-
- RevSliderFunctions::throwError($errorMessage);
- }
-
- $this->initByDBData($sliderData);
- }
-
-
- /**
- *
- * init by id or alias
- */
- public function initByMixed($mixed){
- if(is_numeric($mixed))
- $this->initByID($mixed);
- else
- $this->initByAlias($mixed);
- }
-
-
- /**
- *
- * get data functions
- */
- public function getTitle(){
- return($this->title);
- }
-
- public function getID(){
- return($this->id);
- }
-
- public function getParams(){
- return($this->arrParams);
- }
-
- /*
- * return Slider settings
- * @since: 5.0
- */
- public function getSettings(){
- return($this->settings);
- }
-
- /*
- * return true if slider is favorite
- * @since: 5.0
- */
- public function isFavorite(){
- if(!empty($this->settings)){
- if(isset($this->settings['favorite']) && $this->settings['favorite'] == 'true') return true;
- }
-
- return false;
- }
-
- /**
- *
- * set slider params
- */
- public function setParams($arrParams){
- $this->arrParams = $arrParams;
- }
-
-
- /**
- * set specific slider param
- * @since: 5.1.1
- */
- public function setParam($param, $value){
- $this->arrParams[$param] = $value;
- }
-
-
- /**
- *
- * get parameter from params array. if no default, then the param is a must!
- */
- function getParam($name,$default=null,$validateType = null,$title=""){
-
- if($default === null){
- $default = "";
- }
-
- $value = RevSliderFunctions::getVal($this->arrParams, $name,$default);
-
- //validation:
- switch($validateType){
- case self::VALIDATE_NUMERIC:
- case self::VALIDATE_EMPTY:
- $paramTitle = !empty($title)?$title:$name;
- if($value !== "0" && $value !== 0 && empty($value))
- RevSliderFunctions::throwError("The param <strong>$paramTitle</strong> should not be empty.");
- break;
- case self::VALIDATE_NUMERIC:
- $paramTitle = !empty($title)?$title:$name;
- if(!is_numeric($value))
- RevSliderFunctions::throwError("The param <strong>$paramTitle</strong> should be numeric. Now it's: $value");
- break;
- case self::FORCE_NUMERIC:
- if(!is_numeric($value)){
- $value = 0;
- if(!empty($default))
- $value = $default;
- }
- break;
- }
-
- return $value;
- }
-
- public function getAlias(){
- return($this->alias);
- }
-
- /**
- * get combination of title (alias)
- */
- public function getShowTitle(){
- $showTitle = $this->title;
- return($showTitle);
- }
-
- /**
- *
- * get slider shortcode
- */
- public function getShortcode(){
- $shortCode = '[rev_slider alias="'.$this->alias.'"]';
- return($shortCode);
- }
-
-
- /**
- *
- * check if alias exists in DB
- */
- public function isAliasExistsInDB($alias){
-
- $where = $this->db->prepare("alias = %s ", array($alias));
- if(!empty($this->id)){
-
- $where .= $this->db->prepare(" and id != %s AND `type` != 'template'", array($this->id));
- }
-
-
- $response = $this->db->fetch(RevSliderGlobals::$table_sliders,$where);
-
- return(!empty($response));
-
- }
-
-
- /**
- *
- * check if alias exists in DB
- */
- public static function isAliasExists($alias){
- global $wpdb;
-
- $response = $wpdb->get_row($wpdb->prepare("SELECT * FROM ".RevSliderGlobals::$table_sliders." WHERE alias = %s AND `type` != 'template'", $alias));
-
- return(!empty($response));
- }
-
-
- /**
- *
- * validate settings for add
- */
- private function validateInputSettings($title,$alias,$params){
- RevSliderFunctions::validateNotEmpty($title,"title");
- RevSliderFunctions::validateNotEmpty($alias,"alias");
-
- if($this->isAliasExistsInDB($alias))
- RevSliderFunctions::throwError("Some other slider with alias '$alias' already exists");
-
- }
-
-
- /**
- * set new hero slide id for the Slider
- * @since: 5.0
- */
- public function setHeroSlide($data){
- $sliderID = RevSliderFunctions::getVal($data, "slider_id");
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $this->initByID($sliderID);
- $new_slide_id = RevSliderFunctions::getVal($data, "slide_id");
- RevSliderFunctions::validateNotEmpty($new_slide_id,"Hero Slide ID");
-
- $this->updateParam(array('hero_active' => intval($new_slide_id)));
-
- return($new_slide_id);
- }
-
- /**
- *
- * create / update slider from options
- */
- private function createUpdateSliderFromOptions($options, $sliderID = null){
-
- $arrMain = RevSliderFunctions::getVal($options, "main");
- $params = RevSliderFunctions::getVal($options, "params");
-
- //trim all input data
- $arrMain = RevSliderFunctions::trimArrayItems($arrMain);
-
- $params = RevSliderFunctions::trimArrayItems($params);
-
- $params = array_merge($arrMain,$params);
-
- $title = sanitize_text_field(RevSliderFunctions::getVal($arrMain, "title"));
- $alias = sanitize_text_field(RevSliderFunctions::getVal($arrMain, "alias"));
-
- //params css and js check
- if(!RevSliderFunctionsWP::isAdminUser() && apply_filters('revslider_restrict_role', true)){
- //dont allow css and javascript from users other than administrator
- unset($params['custom_css']);
- unset($params['custom_javascript']);
- }
-
- if(!empty($sliderID)){
- $this->initByID($sliderID);
-
- if(!RevSliderFunctionsWP::isAdminUser() && apply_filters('revslider_restrict_role', true)){
- //check for js and css, add it to $params
- $params['custom_css'] = $this->getParam('custom_css', '');
- $params['custom_javascript'] = $this->getParam('custom_javascript', '');
- }
-
- }
-
- $this->validateInputSettings($title, $alias, $params);
-
- $jsonParams = json_encode($params);
-
- //insert slider to database
- $arrData = array();
- $arrData["title"] = $title;
- $arrData["alias"] = $alias;
- $arrData["params"] = $jsonParams;
- $arrData["type"] = '';
-
- if(empty($sliderID)){ //create slider
-
- $arrData['settings'] = json_encode(array('version' => 5.0));
-
- $sliderID = $this->db->insert(RevSliderGlobals::$table_sliders,$arrData);
- return($sliderID);
-
- }else{ //update slider
- $this->initByID($sliderID);
-
- $settings = $this->getSettings();
- $settings['version'] = 5.0;
- $arrData['settings'] = json_encode($settings);
-
- $sliderID = $this->db->update(RevSliderGlobals::$table_sliders,$arrData,array("id"=>$sliderID));
- }
- }
-
-
- /**
- * delete slider from datatase
- */
- public function deleteSlider(){
-
- $this->validateInited();
-
- //delete slider
- $this->db->delete(RevSliderGlobals::$table_sliders, $this->db->prepare("id = %s", array($this->id)));
-
- //delete slides
- $this->deleteAllSlides();
- $this->deleteStaticSlide();
- }
- /**
- *
- * delete all slides
- */
- private function deleteAllSlides(){
- $this->validateInited();
-
- $this->db->delete(RevSliderGlobals::$table_slides, $this->db->prepare("slider_id = %s", array($this->id)));
-
- do_action('revslider_slider_deleteAllSlides', $this->id);
- }
-
- /**
- *
- * delete all slides
- */
- public function deleteStaticSlide(){
- $this->validateInited();
-
- $this->db->delete(RevSliderGlobals::$table_static_slides, $this->db->prepare("slider_id = %s", array($this->id)));
- }
-
-
- /**
- *
- * get all slide children
- */
- public function getArrSlideChildren($slideID){
-
- $this->validateInited();
- $arrSlides = $this->getSlidesFromGallery();
- if(!isset($arrSlides[$slideID]))
- RevSliderFunctions::throwError("Slide with id: $slideID not found in the main slides of the slider. Maybe it's child slide.");
-
- $slide = $arrSlides[$slideID];
- $arrChildren = $slide->getArrChildren();
-
- return($arrChildren);
- }
-
-
- /**
- *
- * duplicate slider in datatase
- */
- private function duplicateSlider($title = false, $prefix = false){
-
- $this->validateInited();
-
- //insert a new slider
- $sqlSelect = $this->db->prepare("select ".RevSliderGlobals::FIELDS_SLIDER." from ".RevSliderGlobals::$table_sliders." where id = %s", array($this->id));
- $sqlInsert = "insert into ".RevSliderGlobals::$table_sliders." (".RevSliderGlobals::FIELDS_SLIDER.") ($sqlSelect)";
-
- $this->db->runSql($sqlInsert);
- $lastID = $this->db->getLastInsertID();
- RevSliderFunctions::validateNotEmpty($lastID);
-
-
- $params = $this->arrParams;
-
- if($title === false){
- //get slider number:
- $response = $this->db->fetch(RevSliderGlobals::$table_sliders);
- $numSliders = count($response);
- $newSliderSerial = $numSliders+1;
-
- $newSliderTitle = "Slider".$newSliderSerial;
- $newSliderAlias = "slider".$newSliderSerial;
- }else{
- if($prefix !== false){
- $newSliderTitle = sanitize_text_field($title.' '.$params['title']);
- $newSliderAlias = sanitize_title($title.' '.$params['title']);
- }else{
- $newSliderTitle = sanitize_text_field($title);
- $newSliderAlias = sanitize_title($title);
- }
- // Check Duplicate Alias
- $sqlTitle = $this->db->fetch(RevSliderGlobals::$table_sliders, $this->db->prepare("alias = %s", array($newSliderAlias)));
- if(!empty($sqlTitle)){
- $response = $this->db->fetch(RevSliderGlobals::$table_sliders);
- $numSliders = count($response);
- $newSliderSerial = $numSliders+1;
- $newSliderTitle .= $newSliderSerial;
- $newSliderAlias .= $newSliderSerial;
- }
- }
-
- //update params
-
- $params["title"] = $newSliderTitle;
- $params["alias"] = $newSliderAlias;
- $params["shortcode"] = "[rev_slider alias=\"". $newSliderAlias ."\"]";
-
- //update the new slider with the title and the alias values
- $arrUpdate = array();
- $arrUpdate["title"] = $newSliderTitle;
- $arrUpdate["alias"] = $newSliderAlias;
-
-
- $jsonParams = json_encode($params);
- $arrUpdate["params"] = $jsonParams;
- $arrUpdate["type"] = '';//remove the type as we do not want it to be template if it was
- $this->db->update(RevSliderGlobals::$table_sliders, $arrUpdate, array("id"=>$lastID));
-
- //duplicate Slides
- $slides = $this->db->fetch(RevSliderGlobals::$table_slides, $this->db->prepare("slider_id = %s", array($this->id)));
- if(!empty($slides)){
- foreach($slides as $slide){
- $slide['slider_id'] = $lastID;
- $myID = $slide['id'];
- unset($slide['id']);
- $last_id = $this->db->insert(RevSliderGlobals::$table_slides,$slide);
-
- if(isset($myID)){
- $slider_map[$myID] = $last_id;
- }
- }
- }
-
- //duplicate static slide if exists
- $slide = new RevSlide();
- $staticID = $slide->getStaticSlideID($this->id);
- $static_id = 0;
- if($staticID !== false){
- $record = $this->db->fetchSingle(RevSliderGlobals::$table_static_slides, $this->db->prepare("id = %s", array($staticID)));
- unset($record['id']);
- $record['slider_id'] = $lastID;
-
- $static_id = $this->db->insert(RevSliderGlobals::$table_static_slides, $record);
- }
-
-
- //update actions
- $slides = $this->db->fetch(RevSliderGlobals::$table_slides, $this->db->prepare("slider_id = %s", array($lastID)));
- if($static_id > 0){
- $slides_static = $this->db->fetch(RevSliderGlobals::$table_static_slides, $this->db->prepare("id = %s", array($static_id)));
- $slides = array_merge($slides, $slides_static);
- }
- if(!empty($slides)){
- foreach($slides as $slide){
- $c_slide = new RevSlide();
- $c_slide->initByData($slide);
-
- $layers = $c_slide->getLayers();
- $did_change = false;
- foreach($layers as $key => $value){
- if(isset($value['layer_action'])){
- if(isset($value['layer_action']->jump_to_slide) && !empty($value['layer_action']->jump_to_slide)){
- foreach($value['layer_action']->jump_to_slide as $jtsk => $jtsval){
- if(isset($slider_map[$jtsval])){
-
- $layers[$key]['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval];
- $did_change = true;
- }
- }
- }
- }
- }
-
- if($did_change === true){
-
- $arrCreate = array();
- $my_layers = json_encode($layers);
- if(empty($my_layers))
- $my_layers = stripslashes(json_encode($layers));
-
- $arrCreate['layers'] = $my_layers;
-
- if($slide['id'] == $static_id){
- $this->db->update(RevSliderGlobals::$table_static_slides,$arrCreate,array("id"=>$static_id));
- }else{
- $this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$slide['id']));
- }
-
- }
- }
- }
-
- //change the javascript api ID to the correct one
- $c_slider = new RevSliderSlider();
- $c_slider->initByID($lastID);
-
- $cus_js = $c_slider->getParam('custom_javascript', '');
-
- if(strpos($cus_js, 'revapi') !== false){
- if(preg_match_all('/revapi[0-9]*/', $cus_js, $results)){
-
- if(isset($results[0]) && !empty($results[0])){
- foreach($results[0] as $replace){
- $cus_js = str_replace($replace, 'revapi'.$lastID, $cus_js);
- }
- }
-
- $c_slider->updateParam(array('custom_javascript' => $cus_js));
-
- }
- }
-
- return $lastID;
- }
-
-
- /**
- * duplicate slide
- */
- public function duplicateSlide($slideID){
- $slide = new RevSlide();
- $slide->initByID($slideID);
- $order = $slide->getOrder();
- $slides = $this->getSlidesFromGallery();
- $newOrder = $order+1;
- $this->shiftOrder($newOrder);
-
- //do duplication
- $sqlSelect = $this->db->prepare("select ".RevSliderGlobals::FIELDS_SLIDE." from ".RevSliderGlobals::$table_slides." where id = %s", array(intval($slideID)));
- $sqlInsert = "insert into ".RevSliderGlobals::$table_slides." (".RevSliderGlobals::FIELDS_SLIDE.") ($sqlSelect)";
-
- $this->db->runSql($sqlInsert);
- $lastID = $this->db->getLastInsertID();
- RevSliderFunctions::validateNotEmpty($lastID);
-
- //update order
- $arrUpdate = array("slide_order"=>$newOrder);
-
- $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate, array("id"=>$lastID));
-
- return($lastID);
- }
-
-
- /**
- *
- * copy / move slide
- */
- private function copyMoveSlide($slideID,$targetSliderID,$operation){
-
- if($operation == "move"){
-
- $targetSlider = new RevSlider();
- $targetSlider->initByID($targetSliderID);
- $maxOrder = $targetSlider->getMaxOrder();
- $newOrder = $maxOrder+1;
- $arrUpdate = array("slider_id"=>$targetSliderID,"slide_order"=>$newOrder);
-
- //update children
- $arrChildren = $this->getArrSlideChildren($slideID);
- foreach($arrChildren as $child){
- $childID = $child->getID();
- $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$childID));
- }
-
- $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,array("id"=>$slideID));
-
- }else{ //in place of copy
- $newSlideID = $this->duplicateSlide($slideID);
- $this->duplicateChildren($slideID, $newSlideID);
-
- $this->copyMoveSlide($newSlideID,$targetSliderID,"move");
- }
- }
-
-
- /**
- *
- * shift order of the slides from specific order
- */
- private function shiftOrder($fromOrder){
-
- $where = $this->db->prepare(" slider_id = %s and slide_order >= %s", array($this->id, $fromOrder));
- $sql = "update ".RevSliderGlobals::$table_slides." set slide_order=(slide_order+1) where $where";
- $this->db->runSql($sql);
-
- }
-
-
- /**
- *
- * create slider in database from options
- */
- public function createSliderFromOptions($options){
- $sliderID = $this->createUpdateSliderFromOptions($options,null);
- return($sliderID);
- }
-
-
- /**
- *
- * export slider from data, output a file for download
- */
- public function exportSlider($useDummy = false){
-
- $this->validateInited();
-
- $sliderParams = $this->getParamsForExport();
- $arrSlides = $this->getSlidesForExport($useDummy);
- $arrStaticSlide = $this->getStaticSlideForExport($useDummy);
-
- $usedCaptions = array();
- $usedAnimations = array();
- $usedImages = array();
- $usedSVG = array();
- $usedVideos = array();
- $usedNavigations = array();
-
- $cfw = array();
- if(!empty($arrSlides) && count($arrSlides) > 0) $cfw = array_merge($cfw, $arrSlides);
- if(!empty($arrStaticSlide) && count($arrStaticSlide) > 0) $cfw = array_merge($cfw, $arrStaticSlide);
-
-
- //remove image_id as it is not needed in export
- //plus remove background image if solid color or transparent
- if(!empty($arrSlides)){
- foreach($arrSlides as $k => $s){
- if(isset($arrSlides[$k]['params']['image_id'])) unset($arrSlides[$k]['params']['image_id']);
- if(isset($arrSlides[$k]['params']["background_type"]) && ($arrSlides[$k]['params']["background_type"] == 'solid' || $arrSlides[$k]['params']["background_type"] == "trans" || $arrSlides[$k]['params']["background_type"] == "transparent")){
- if(isset($arrSlides[$k]['params']['background_image']))
- $arrSlides[$k]['params']['background_image'] = '';
- }
- }
- }
- if(!empty($arrStaticSlide)){
- foreach($arrStaticSlide as $k => $s){
- if(isset($arrStaticSlide[$k]['params']['image_id'])) unset($arrStaticSlide[$k]['params']['image_id']);
- if(isset($arrStaticSlide[$k]['params']["background_type"]) && ($arrStaticSlide[$k]['params']["background_type"] == 'solid' || $arrStaticSlide[$k]['params']["background_type"] == "trans" || $arrStaticSlide[$k]['params']["background_type"] == "transparent")){
- if(isset($arrStaticSlide[$k]['params']['background_image']))
- $arrStaticSlide[$k]['params']['background_image'] = '';
- }
- }
- }
-
- if(!empty($cfw) && count($cfw) > 0){
- foreach($cfw as $key => $slide){
- //check if we are transparent and so on
- if(isset($slide['params']['image']) && $slide['params']['image'] != '') $usedImages[$slide['params']['image']] = true; //['params']['image'] background url
- if(isset($slide['params']['background_image']) && $slide['params']['background_image'] != '') $usedImages[$slide['params']['background_image']] = true; //['params']['image'] background url
- if(isset($slide['params']['slide_thumb']) && $slide['params']['slide_thumb'] != '') $usedImages[$slide['params']['slide_thumb']] = true; //['params']['image'] background url
-
- //html5 video
- if(isset($slide['params']['background_type']) && $slide['params']['background_type'] == 'html5'){
- if(isset($slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != '') $usedVideos[$slide['params']['slide_bg_html_mpeg']] = true;
- if(isset($slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != '') $usedVideos[$slide['params']['slide_bg_html_webm']] = true;
- if(isset($slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != '') $usedVideos[$slide['params']['slide_bg_html_ogv']] = true;
- }else{
- if(isset($slide['params']['slide_bg_html_mpeg']) && $slide['params']['slide_bg_html_mpeg'] != '') $slide['params']['slide_bg_html_mpeg'] = '';
- if(isset($slide['params']['slide_bg_html_webm']) && $slide['params']['slide_bg_html_webm'] != '') $slide['params']['slide_bg_html_webm'] = '';
- if(isset($slide['params']['slide_bg_html_ogv']) && $slide['params']['slide_bg_html_ogv'] != '') $slide['params']['slide_bg_html_ogv'] = '';
- }
-
- //image thumbnail
- if(isset($slide['layers']) && !empty($slide['layers']) && count($slide['layers']) > 0){
- foreach($slide['layers'] as $lKey => $layer){
- if(isset($layer['style']) && $layer['style'] != '') $usedCaptions[$layer['style']] = true;
- if(isset($layer['animation']) && $layer['animation'] != '' && strpos($layer['animation'], 'customin') !== false) $usedAnimations[str_replace('customin-', '', $layer['animation'])] = true;
- if(isset($layer['endanimation']) && $layer['endanimation'] != '' && strpos($layer['endanimation'], 'customout') !== false) $usedAnimations[str_replace('customout-', '', $layer['endanimation'])] = true;
- if(isset($layer['image_url']) && $layer['image_url'] != '') $usedImages[$layer['image_url']] = true; //image_url if image caption
- if(isset($layer['bgimage_url']) && $layer['bgimage_url'] != '') $usedImages[$layer['bgimage_url']] = true; //image_url if background layer image
-
- if(isset($layer['type']) && ($layer['type'] == 'video' || $layer['type'] == 'audio')){
-
- $video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array();
-
- if(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){
- if(isset($video_data['urlPoster']) && $video_data['urlPoster'] != '') $usedImages[$video_data['urlPoster']] = true;
-
- if(isset($video_data['urlMp4']) && $video_data['urlMp4'] != '') $usedVideos[$video_data['urlMp4']] = true;
- if(isset($video_data['urlWebm']) && $video_data['urlWebm'] != '') $usedVideos[$video_data['urlWebm']] = true;
- if(isset($video_data['urlOgv']) && $video_data['urlOgv'] != '') $usedVideos[$video_data['urlOgv']] = true;
-
- }elseif(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image
- if($video_data['video_type'] == 'audio'){
- if(isset($video_data['urlAudio']) && $video_data['urlAudio'] != '') $usedVideos[$video_data['urlAudio']] = true;
- }else{
- if(isset($video_data['previewimage']) && $video_data['previewimage'] != '') $usedImages[$video_data['previewimage']] = true;
- }
- }
-
- if($video_data['video_type'] != 'html5'){
- $video_data['urlMp4'] = '';
- $video_data['urlWebm'] = '';
- $video_data['urlOgv'] = '';
- }
- if($video_data['video_type'] != 'audio'){
- $video_data['urlAudio'] = '';
- }
- if(isset($layer['video_image_url']) && $layer['video_image_url'] != '') $usedImages[$layer['video_image_url']] = true;
- }
-
- if(isset($layer['type']) && $layer['type'] == 'svg'){
- if(isset($layer['svg']) && isset($layer['svg']->src)){
- $usedSVG[$layer['svg']->src] = true;
- }
- }
- }
- }
- }
-
- $d = array('usedSVG' => $usedSVG, 'usedImages' => $usedImages, 'usedVideos' => $usedVideos);
- $d = apply_filters('revslider_exportSlider_usedMedia', $d, $cfw, $sliderParams, $useDummy); // $arrSlides, $arrStaticSlide,
-
- $usedSVG = $d['usedSVG'];
- $usedImages = $d['usedImages'];
- $usedVideos = $d['usedVideos'];
- }
-
- $arrSliderExport = array("params"=>$sliderParams,"slides"=>$arrSlides);
- if(!empty($arrStaticSlide))
- $arrSliderExport['static_slides'] = $arrStaticSlide;
-
- $strExport = serialize($arrSliderExport);
-
- //$strExportAnim = serialize(RevSliderOperations::getFullCustomAnimations());
-
- $exportname = (!empty($this->alias)) ? $this->alias.'.zip' : "slider_export.zip";
-
- //add navigations if not default animation
- if(isset($sliderParams['navigation_arrow_style'])) $usedNavigations[$sliderParams['navigation_arrow_style']] = true;
- if(isset($sliderParams['navigation_bullets_style'])) $usedNavigations[$sliderParams['navigation_bullets_style']] = true;
- if(isset($sliderParams['thumbnails_style'])) $usedNavigations[$sliderParams['thumbnails_style']] = true;
- if(isset($sliderParams['tabs_style'])) $usedNavigations[$sliderParams['tabs_style']] = true;
- $navs = false;
- if(!empty($usedNavigations)){
- $navs = RevSliderNavigation::export_navigation($usedNavigations);
- if($navs !== false) $navs = serialize($navs);
- }
-
-
- $styles = '';
- if(!empty($usedCaptions)){
- $captions = array();
- foreach($usedCaptions as $class => $val){
- $cap = RevSliderOperations::getCaptionsContentArray($class);
- //set also advanced styles here...
- if(!empty($cap))
- $captions[] = $cap;
- }
- $styles = RevSliderCssParser::parseArrayToCss($captions, "\n", true);
- }
-
- $animations = '';
- if(!empty($usedAnimations)){
- $animation = array();
- foreach($usedAnimations as $anim => $val){
- $anima = RevSliderOperations::getFullCustomAnimationByID($anim);
- if($anima !== false) $animation[] = $anima;
-
- }
- if(!empty($animation)) $animations = serialize($animation);
- }
-
- $usedImages = array_merge($usedImages, $usedVideos);
-
- $usepcl = false;
- if(class_exists('ZipArchive')){
- $zip = new ZipArchive;
- $success = $zip->open(RevSliderGlobals::$uploadsUrlExportZip, ZIPARCHIVE::CREATE | ZipArchive::OVERWRITE);
-
- if($success !== true)
- throwError("Can't create zip file: ".RevSliderGlobals::$uploadsUrlExportZip);
-
- }else{
- //fallback to pclzip
- require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php');
-
- $pclzip = new PclZip(RevSliderGlobals::$uploadsUrlExportZip);
-
- //either the function uses die() or all is cool
- $usepcl = true;
- }
-
- //add svg to the zip
- if(!empty($usedSVG)){
- $content_url = content_url();
- $content_path = ABSPATH . 'wp-content';
- $ud = wp_upload_dir();
- $up_dir = $ud['baseurl'];
- foreach($usedSVG as $file => $val){
- if(strpos($file, 'http') !== false){ //remove all up to wp-content folder
- $checkpath = str_replace($content_url, '', $file);
- $checkpath2 = str_replace($up_dir, '', $file);
- if($checkpath2 === $file){ //we have an SVG like whiteboard, fallback to older export
- $checkpath2 = $checkpath;
- }
- if(is_file($content_path.$checkpath)){
- $strExport = str_replace($file, str_replace('/revslider/assets/svg', '', $checkpath2), $strExport);
- }
- }
- }
- }
-
- //add images to zip
- if(!empty($usedImages)){
- $upload_dir = RevSliderFunctionsWP::getPathUploads();
- $upload_dir_multisiteless = wp_upload_dir();
- $cont_url = $upload_dir_multisiteless['baseurl'];
- $cont_url_no_www = str_replace('www.', '', $upload_dir_multisiteless['baseurl']);
- $upload_dir_multisiteless = $upload_dir_multisiteless['basedir'].'/';
-
- foreach($usedImages as $file => $val){
- if($useDummy == "true"){ //only use dummy images
-
- }else{ //use the real images
- if(strpos($file, 'http') !== false){
- //check if we are in objects folder, if yes take the original image into the zip-
-
- $remove = false;
- $checkpath = str_replace(array($cont_url, $cont_url_no_www), '', $file);
-
- if(is_file($upload_dir.$checkpath)){
- if(!$usepcl){
- $zip->addFile($upload_dir.$checkpath, 'images/'.$checkpath);
- }else{
- $v_list = $pclzip->add($upload_dir.$checkpath, PCLZIP_OPT_REMOVE_PATH, $upload_dir, PCLZIP_OPT_ADD_PATH, 'images/');
- }
- $remove = true;
- }elseif(is_file($upload_dir_multisiteless.$checkpath)){
- if(!$usepcl){
- $zip->addFile($upload_dir_multisiteless.$checkpath, 'images/'.$checkpath);
- }else{
- $v_list = $pclzip->add($upload_dir_multisiteless.$checkpath, PCLZIP_OPT_REMOVE_PATH, $upload_dir_multisiteless, PCLZIP_OPT_ADD_PATH, 'images/');
- }
- $remove = true;
- }
-
- if($remove){ //as its http, remove this from strexport
- $strExport = str_replace(array($cont_url.$checkpath, $cont_url_no_www.$checkpath), $checkpath, $strExport);
- }
- }else{
- if(is_file($upload_dir.$file)){
- if(!$usepcl){
- $zip->addFile($upload_dir.$file, 'images/'.$file);
- }else{
- $v_list = $pclzip->add($upload_dir.$file, PCLZIP_OPT_REMOVE_PATH, $upload_dir, PCLZIP_OPT_ADD_PATH, 'images/');
- }
- }elseif(is_file($upload_dir_multisiteless.$file)){
- if(!$usepcl){
- $zip->addFile($upload_dir_multisiteless.$file, 'images/'.$file);
- }else{
- $v_list = $pclzip->add($upload_dir_multisiteless.$file, PCLZIP_OPT_REMOVE_PATH, $upload_dir_multisiteless, PCLZIP_OPT_ADD_PATH, 'images/');
- }
- }
- }
- }
- }
- }
-
- if(!$usepcl){
- $zip->addFromString("slider_export.txt", $strExport); //add slider settings
- }else{
- $list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'slider_export.txt',PCLZIP_ATT_FILE_CONTENT => $strExport)));
- if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
-
- }
- if(strlen(trim($animations)) > 0){
- if(!$usepcl){
- $zip->addFromString("custom_animations.txt", $animations); //add custom animations
- }else{
- $list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'custom_animations.txt',PCLZIP_ATT_FILE_CONTENT => $animations)));
- if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
- }
- }
- if(strlen(trim($styles)) > 0){
- if(!$usepcl){
- $zip->addFromString("dynamic-captions.css", $styles); //add dynamic styles
- }else{
- $list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'dynamic-captions.css',PCLZIP_ATT_FILE_CONTENT => $styles)));
- if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
- }
- }
- if(strlen(trim($navs)) > 0){
- if(!$usepcl){
- $zip->addFromString("navigation.txt", $navs); //add dynamic styles
- }else{
- $list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'navigation.txt',PCLZIP_ATT_FILE_CONTENT => $navs)));
- if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
- }
- }
-
- $static_css = RevSliderOperations::getStaticCss();
- if(trim($static_css) !== ''){
- if(!$usepcl){
- $zip->addFromString("static-captions.css", $static_css); //add slider settings
- }else{
- $list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'static-captions.css',PCLZIP_ATT_FILE_CONTENT => $static_css)));
- if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
- }
- }
- $enable_slider_pack = apply_filters('revslider_slider_pack_export', false);
-
- if($enable_slider_pack){ //allow for slider packs the automatic creation of the info.cfg
- if(!$usepcl){
- $zip->addFromString('info.cfg', md5($this->alias)); //add slider settings
- }else{
- $list = $pclzip->add(array(array( PCLZIP_ATT_FILE_NAME => 'info.cfg',PCLZIP_ATT_FILE_CONTENT => md5($this->alias))));
- if ($list == 0) { die("ERROR : '".$pclzip->errorInfo(true)."'"); }
- }
- }
-
- if(!$usepcl){
- $zip->close();
- }else{
- //do nothing
- }
-
-
- header("Content-type: application/zip");
- header("Content-Disposition: attachment; filename=".$exportname);
- header("Pragma: no-cache");
- header("Expires: 0");
- readfile(RevSliderGlobals::$uploadsUrlExportZip);
-
- @unlink(RevSliderGlobals::$uploadsUrlExportZip); //delete file after sending it to user
-
- exit();
- }
-
-
- /**
- * import slider from multipart form
- * @since: 5.3.1: $updateStatic is now deprecated
- */
- public function importSliderFromPost($updateAnim = true, $updateStatic = true, $exactfilepath = false, $is_template = false, $single_slide = false, $updateNavigation = true){
-
- $real_slider_id = '';
- try{
- $upload_dir = wp_upload_dir();
- $rem_path = $upload_dir['basedir'].'/rstemp/';
- $d_path = $rem_path;
-
- $sliderID = RevSliderFunctions::getPostVariable("sliderid");
- $sliderExists = !empty($sliderID);
-
- if($sliderExists)
- $this->initByID($sliderID);
-
- if($exactfilepath !== false){
- $filepath = $exactfilepath;
- }else{
- switch ($_FILES['import_file']['error']) {
- case UPLOAD_ERR_OK:
- break;
- case UPLOAD_ERR_NO_FILE:
- RevSliderFunctions::throwError(__('No file sent.', 'revslider'));
- case UPLOAD_ERR_INI_SIZE:
- case UPLOAD_ERR_FORM_SIZE:
- RevSliderFunctions::throwError(__('Exceeded filesize limit.', 'revslider'));
-
- default:
- break;
- }
- $filepath = $_FILES["import_file"]["tmp_name"];
- }
-
- if(file_exists($filepath) == false)
- RevSliderFunctions::throwError(__('Import file not found!!!', 'revslider'));
-
- $importZip = false;
-
- WP_Filesystem();
-
- global $wp_filesystem;
-
- $unzipfile = unzip_file( $filepath, $d_path);
-
- if( is_wp_error($unzipfile) ){
- define('FS_METHOD', 'direct'); //lets try direct.
-
- WP_Filesystem(); //WP_Filesystem() needs to be called again since now we use direct !
-
- //@chmod($filepath, 0775);
-
- $unzipfile = unzip_file( $filepath, $d_path);
- if( is_wp_error($unzipfile) ){
- $d_path = RS_PLUGIN_PATH.'rstemp/';
- $rem_path = $d_path;
- $unzipfile = unzip_file( $filepath, $d_path);
-
- if( is_wp_error($unzipfile) ){
- $f = basename($filepath);
- $d_path = str_replace($f, '', $filepath);
-
- $unzipfile = unzip_file( $filepath, $d_path);
- }
- }
- }
-
- if( !is_wp_error($unzipfile) ){
- $importZip = true; //raus damit..
-
- //read all files needed
- $content = ( $wp_filesystem->exists( $d_path.'slider_export.txt' ) ) ? $wp_filesystem->get_contents( $d_path.'slider_export.txt' ) : '';
- if($content == ''){
- RevSliderFunctions::throwError(__('slider_export.txt does not exist!', 'revslider'));
- }
- $animations = ( $wp_filesystem->exists( $d_path.'custom_animations.txt' ) ) ? $wp_filesystem->get_contents( $d_path.'custom_animations.txt' ) : '';
- $dynamic = ( $wp_filesystem->exists( $d_path.'dynamic-captions.css' ) ) ? $wp_filesystem->get_contents( $d_path.'dynamic-captions.css' ) : '';
- //$static = ( $wp_filesystem->exists( $d_path.'static-captions.css' ) ) ? $wp_filesystem->get_contents( $d_path.'static-captions.css' ) : '';
- $navigations = ( $wp_filesystem->exists( $d_path.'navigation.txt' ) ) ? $wp_filesystem->get_contents( $d_path.'navigation.txt' ) : '';
-
- $uid_check = ( $wp_filesystem->exists( $d_path.'info.cfg' ) ) ? $wp_filesystem->get_contents( $d_path.'info.cfg' ) : '';
- $version_check = ( $wp_filesystem->exists( $d_path.'version.cfg' ) ) ? $wp_filesystem->get_contents( $d_path.'version.cfg' ) : '';
-
- if($is_template !== false){
- if($uid_check != $is_template){
- return(array("success"=>false,"error"=>__('Please select the correct zip file, checksum failed!', 'revslider')));
- }
- }else{ //someone imported a template base Slider, check if it is existing in Base Sliders, if yes, check if it was imported
- if($uid_check !== ''){
- $tmpl = new RevSliderTemplate();
- $tmpl_slider = $tmpl->getThemePunchTemplateSliders();
-
- foreach($tmpl_slider as $tp_slider){
- if(!isset($tp_slider['installed'])) continue;
-
- if($tp_slider['uid'] == $uid_check){
- $is_template = $uid_check;
- break;
- }
- }
- }
- }
-
- $db = new RevSliderDB();
-
- //update/insert custom animations
- $animations = @unserialize($animations);
- if(!empty($animations)){
- foreach($animations as $key => $animation){ //$animation['id'], $animation['handle'], $animation['params']
- $exist = $db->fetch(RevSliderGlobals::$table_layer_anims, $db->prepare("handle = %s", array($animation['handle'])));
- if(!empty($exist)){ //update the animation, get the ID
- if($updateAnim == "true"){ //overwrite animation if exists
- $arrUpdate = array();
- $arrUpdate['params'] = stripslashes(json_encode(str_replace("'", '"', $animation['params'])));
- $db->update(RevSliderGlobals::$table_layer_anims, $arrUpdate, array('handle' => $animation['handle']));
-
- $anim_id = $exist['0']['id'];
- }else{ //insert with new handle
- $arrInsert = array();
- $arrInsert["handle"] = 'copy_'.$animation['handle'];
- $arrInsert["params"] = stripslashes(json_encode(str_replace("'", '"', $animation['params'])));
-
- $anim_id = $db->insert(RevSliderGlobals::$table_layer_anims, $arrInsert);
- }
- }else{ //insert the animation, get the ID
- $arrInsert = array();
- $arrInsert["handle"] = $animation['handle'];
- $arrInsert["params"] = stripslashes(json_encode(str_replace("'", '"', $animation['params'])));
-
- $anim_id = $db->insert(RevSliderGlobals::$table_layer_anims, $arrInsert);
- }
-
- //and set the current customin-oldID and customout-oldID in slider params to new ID from $id
- $content = str_replace(array('customin-'.$animation['id'].'"', 'customout-'.$animation['id'].'"'), array('customin-'.$anim_id.'"', 'customout-'.$anim_id.'"'), $content);
- }
- //dmp(__("animations imported!",'revslider'));
- }
-
- //overwrite/append static-captions.css
- /*if(!empty($static)){
- if($updateStatic == "true"){ //overwrite file
- RevSliderOperations::updateStaticCss($static);
- }elseif($updateStatic == 'none'){
- //do nothing
- }else{//append
- $static_cur = RevSliderOperations::getStaticCss();
- $static = $static_cur."\n".$static;
- RevSliderOperations::updateStaticCss($static);
- }
- }*/
-
- //overwrite/create dynamic-captions.css
- //parse css to classes
- $dynamicCss = RevSliderCssParser::parseCssToArray($dynamic);
- if(is_array($dynamicCss) && $dynamicCss !== false && count($dynamicCss) > 0){
- foreach($dynamicCss as $class => $styles){
- //check if static style or dynamic style
- $class = trim($class);
-
- if(strpos($class, ',') !== false && strpos($class, '.tp-caption') !== false){ //we have something like .tp-caption.redclass, .redclass
- $class_t = explode(',', $class);
- foreach($class_t as $k => $cl){
- if(strpos($cl, '.tp-caption') !== false) $class = $cl;
- }
- }
-
- if((strpos($class, ':hover') === false && strpos($class, ':') !== false) || //before, after
- strpos($class," ") !== false || // .tp-caption.imageclass img or .tp-caption .imageclass or .tp-caption.imageclass .img
- strpos($class,".tp-caption") === false || // everything that is not tp-caption
- (strpos($class,".") === false || strpos($class,"#") !== false) || // no class -> #ID or img
- strpos($class,">") !== false){ //.tp-caption>.imageclass or .tp-caption.imageclass>img or .tp-caption.imageclass .img
- continue;
- }
-
- //is a dynamic style
- if(strpos($class, ':hover') !== false){
- $class = trim(str_replace(':hover', '', $class));
- $arrInsert = array();
- $arrInsert["hover"] = json_encode($styles);
- $arrInsert["settings"] = json_encode(array('hover' => 'true'));
- }else{
- $arrInsert = array();
- $arrInsert["params"] = json_encode($styles);
- $arrInsert["settings"] = '';
- }
- //check if class exists
- $result = $db->fetch(RevSliderGlobals::$table_css, $db->prepare("handle = %s", array($class)));
-
- if(!empty($result)){ //update
- $db->update(RevSliderGlobals::$table_css, $arrInsert, array('handle' => $class));
- }else{ //insert
- $arrInsert["handle"] = $class;
- $db->insert(RevSliderGlobals::$table_css, $arrInsert);
- }
- }
- //dmp(__("dynamic styles imported!",'revslider'));
- }
-
- //update/insert custom animations
- $navigations = @unserialize($navigations);
- if(!empty($navigations)){
-
- foreach($navigations as $key => $navigation){
- $exist = $db->fetch(RevSliderGlobals::$table_navigation, $db->prepare("handle = %s", array($navigation['handle'])));
- unset($navigation['id']);
-
- $rh = $navigation["handle"];
- if(!empty($exist)){ //create new navigation, get the ID
- if($updateNavigation == "true"){ //overwrite navigation if exists
- unset($navigation['handle']);
- $db->update(RevSliderGlobals::$table_navigation, $navigation, array('handle' => $rh));
-
- }else{
- //insert with new handle
- $navigation["handle"] = $navigation['handle'].'-'.date('is');
- $navigation["name"] = $navigation['name'].'-'.date('is');
- $content = str_replace($rh.'"', $navigation["handle"].'"', $content);
- $navigation["css"] = str_replace('.'.$rh, '.'.$navigation["handle"], $navigation["css"]); //change css class to the correct new class
- $navi_id = $db->insert(RevSliderGlobals::$table_navigation, $navigation);
-
- }
- }else{
- $navi_id = $db->insert(RevSliderGlobals::$table_navigation, $navigation);
- }
- }
- //dmp(__("navigations imported!",'revslider'));
- }
- }else{
- $message = $unzipfile->get_error_message();
-
- $wp_filesystem->delete($rem_path, true);
-
- return(array("success"=>false,"error"=>$message));
- }
-
- //$content = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $content); //clear errors in string //deprecated in newest php version
- $content = preg_replace_callback('!s:(\d+):"(.*?)";!', array('RevSliderSlider', 'clear_error_in_string') , $content); //clear errors in string
-
- $arrSlider = @unserialize($content);
- if(empty($arrSlider)){
- $wp_filesystem->delete($rem_path, true);
- RevSliderFunctions::throwError(__('Wrong export slider file format! Please make sure that the uploaded file is either a zip file with a correct slider_export.txt in the root of it or an valid slider_export.txt file.', 'revslider'));
- }
-
- //update slider params
- $sliderParams = $arrSlider["params"];
-
- if($sliderExists){
- $sliderParams["title"] = $this->arrParams["title"];
- $sliderParams["alias"] = $this->arrParams["alias"];
- $sliderParams["shortcode"] = $this->arrParams["shortcode"];
- }
-
- if(isset($sliderParams["background_image"]))
- $sliderParams["background_image"] = RevSliderFunctionsWP::getImageUrlFromPath($sliderParams["background_image"]);
-
- $import_statics = true;
- if(isset($sliderParams['enable_static_layers'])){
- if($sliderParams['enable_static_layers'] == 'off') $import_statics = false;
- unset($sliderParams['enable_static_layers']);
- }
-
- $sliderParams['version'] = $version_check;
-
- $json_params = json_encode($sliderParams);
-
- //update slider or create new
- if($sliderExists){
- $arrUpdate = array("params"=>$json_params);
- $this->db->update(RevSliderGlobals::$table_sliders,$arrUpdate,array("id"=>$sliderID));
- }else{ //new slider
- $arrInsert = array();
- $arrInsert['params'] = $json_params;
- //check if Slider with title and/or alias exists, if yes change both to stay unique
-
-
- $arrInsert['title'] = RevSliderFunctions::getVal($sliderParams, 'title', 'Slider1');
- $arrInsert['alias'] = RevSliderFunctions::getVal($sliderParams, 'alias', 'slider1');
- if($is_template === false){ //we want to stay at the given alias if we are a template
- $talias = $arrInsert['alias'];
- $ti = 1;
- while($this->isAliasExistsInDB($talias)){ //set a new alias and title if its existing in database
- $talias = $arrInsert['alias'] . $ti;
- $ti++;
- }
-
- if($talias !== $arrInsert['alias']){
- $sliderParams['title'] = $talias;
- $sliderParams['alias'] = $talias;
- $arrInsert['title'] = $talias;
- $arrInsert['alias'] = $talias;
- $json_params = json_encode($sliderParams);
- $arrInsert['params'] = $json_params;
- }
- }
-
- if($is_template !== false){ //add that we are an template
- $arrInsert['type'] = 'template';
- $sliderParams['uid'] = $is_template;
- $json_params = json_encode($sliderParams);
- $arrInsert['params'] = $json_params;
- }
-
-
-
- $sliderID = $this->db->insert(RevSliderGlobals::$table_sliders,$arrInsert);
- }
-
- //-------- Slides Handle -----------
-
- //delete current slides
- if($sliderExists)
- $this->deleteAllSlides();
-
- //create all slides
- $arrSlides = $arrSlider["slides"];
-
- $alreadyImported = array();
-
- $content_url = content_url();
-
- //wpml compatibility
- $slider_map = array();
- foreach($arrSlides as $sl_key => $slide){
- $params = $slide["params"];
- $layers = $slide["layers"];
- $settings = (isset($slide["settings"])) ? $slide["settings"] : '';
-
- //convert params images:
- if($importZip === true){ //we have a zip, check if exists
- //remove image_id as it is not needed in import
- if(isset($params['image_id'])) unset($params['image_id']);
-
- if(isset($params["image"])){
- $params["image"] = RevSliderBase::check_file_in_zip($d_path, $params["image"], $sliderParams["alias"], $alreadyImported);
- $params["image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["image"]);
- }
-
- if(isset($params["background_image"])){
- $params["background_image"] = RevSliderBase::check_file_in_zip($d_path, $params["background_image"], $sliderParams["alias"], $alreadyImported);
- $params["background_image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["background_image"]);
- }
-
- if(isset($params["slide_thumb"])){
- $params["slide_thumb"] = RevSliderBase::check_file_in_zip($d_path, $params["slide_thumb"], $sliderParams["alias"], $alreadyImported);
- $params["slide_thumb"] = RevSliderFunctionsWP::getImageUrlFromPath($params["slide_thumb"]);
- }
-
- if(isset($params["show_alternate_image"])){
- $params["show_alternate_image"] = RevSliderBase::check_file_in_zip($d_path, $params["show_alternate_image"], $sliderParams["alias"], $alreadyImported);
- $params["show_alternate_image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["show_alternate_image"]);
- }
- if(isset($params['background_type']) && $params['background_type'] == 'html5'){
- if(isset($params['slide_bg_html_mpeg']) && $params['slide_bg_html_mpeg'] != ''){
- $params['slide_bg_html_mpeg'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $params["slide_bg_html_mpeg"], $sliderParams["alias"], $alreadyImported, true));
- }
- if(isset($params['slide_bg_html_webm']) && $params['slide_bg_html_webm'] != ''){
- $params['slide_bg_html_webm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $params["slide_bg_html_webm"], $sliderParams["alias"], $alreadyImported, true));
- }
- if(isset($params['slide_bg_html_ogv']) && $params['slide_bg_html_ogv'] != ''){
- $params['slide_bg_html_ogv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $params["slide_bg_html_ogv"], $sliderParams["alias"], $alreadyImported, true));
- }
- }
- }
-
- //convert layers images:
- foreach($layers as $key=>$layer){
- //import if exists in zip folder
- if($importZip === true){ //we have a zip, check if exists
- if(isset($layer["image_url"])){
- $layer["image_url"] = RevSliderBase::check_file_in_zip($d_path, $layer["image_url"], $sliderParams["alias"], $alreadyImported);
- $layer["image_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["image_url"]);
- }
- if(isset($layer["bgimage_url"])){
- $layer["bgimage_url"] = RevSliderBase::check_file_in_zip($d_path, $layer["bgimage_url"], $sliderParams["alias"], $alreadyImported);
- $layer["bgimage_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["bgimage_url"]);
- }
- if(isset($layer['type']) && ($layer['type'] == 'video' || $layer['type'] == 'audio')){
-
- $video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array();
-
- if(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){
- if(isset($video_data['urlPoster']) && $video_data['urlPoster'] != ''){
- $video_data['urlPoster'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlPoster"], $sliderParams["alias"], $alreadyImported));
- }
-
- if(isset($video_data['urlMp4']) && $video_data['urlMp4'] != ''){
- $video_data['urlMp4'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlMp4"], $sliderParams["alias"], $alreadyImported, true));
- }
- if(isset($video_data['urlWebm']) && $video_data['urlWebm'] != ''){
- $video_data['urlWebm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlWebm"], $sliderParams["alias"], $alreadyImported, true));
- }
- if(isset($video_data['urlOgv']) && $video_data['urlOgv'] != ''){
- $video_data['urlOgv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlOgv"], $sliderParams["alias"], $alreadyImported, true));
- }
-
- }elseif(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image
- if($video_data['video_type'] == 'audio'){
- if(isset($video_data['urlAudio']) && $video_data['urlAudio'] != ''){
- $video_data['urlAudio'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlAudio"], $sliderParams["alias"], $alreadyImported, true));
- }
- }else{
- if(isset($video_data['previewimage']) && $video_data['previewimage'] != ''){
- $video_data['previewimage'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["previewimage"], $sliderParams["alias"], $alreadyImported));
- }
- }
- }
-
- $layer['video_data'] = $video_data;
-
- if(isset($layer['video_image_url']) && $layer['video_image_url'] != ''){
- $layer['video_image_url'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $layer["video_image_url"], $sliderParams["alias"], $alreadyImported));
- }
- }
-
- if(isset($layer['type']) && $layer['type'] == 'svg'){
- if(isset($layer['svg']) && isset($layer['svg']->src)){
- $layer['svg']->src = $content_url.$layer['svg']->src;
- }
- }
-
- }
-
- $layer['text'] = stripslashes($layer['text']);
- $layers[$key] = $layer;
- }
- $arrSlides[$sl_key]['layers'] = $layers;
-
- //create new slide
- $arrCreate = array();
- $arrCreate["slider_id"] = $sliderID;
- $arrCreate["slide_order"] = $slide["slide_order"];
-
- $d = array('params' => $params, 'sliderParams' => $sliderParams, 'layers' => $layers, 'settings' => $settings, 'alreadyImported' => $alreadyImported);
- $d = apply_filters('revslider_importSliderFromPost_modify_data', $d, 'normal', $d_path);
-
- $params = $d['params'];
- $sliderParams = $d['sliderParams'];
- $layers = $d['layers'];
- $settings = $d['settings'];
- $alreadyImported = $d['alreadyImported'];
-
- $my_layers = json_encode($layers);
- if(empty($my_layers))
- $my_layers = stripslashes(json_encode($layers));
- $my_params = json_encode($params);
- if(empty($my_params))
- $my_params = stripslashes(json_encode($params));
- $my_settings = json_encode($settings);
- if(empty($my_settings))
- $my_settings = stripslashes(json_encode($settings));
-
- $arrCreate["layers"] = $my_layers;
- $arrCreate["params"] = $my_params;
- $arrCreate["settings"] = $my_settings;
-
- $last_id = $this->db->insert(RevSliderGlobals::$table_slides,$arrCreate);
-
- if(isset($slide['id'])){
- $slider_map[$slide['id']] = $last_id;
- }
- }
-
- //change for WPML the parent IDs if necessary
- if(!empty($slider_map)){
- foreach($arrSlides as $sl_key => $slide){
- if(isset($slide['params']['parentid']) && isset($slider_map[$slide['params']['parentid']])){
- $update_id = $slider_map[$slide['id']];
- $parent_id = $slider_map[$slide['params']['parentid']];
-
- $arrCreate = array();
-
- $arrCreate["params"] = $slide['params'];
- $arrCreate["params"]['parentid'] = $parent_id;
- $my_params = json_encode($arrCreate["params"]);
- if(empty($my_params))
- $my_params = stripslashes(json_encode($arrCreate["params"]));
-
- $arrCreate["params"] = $my_params;
-
- $this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$update_id));
- }
-
- $did_change = false;
- foreach($slide['layers'] as $key => $value){
- if(isset($value['layer_action'])){
- if(isset($value['layer_action']->jump_to_slide) && !empty($value['layer_action']->jump_to_slide)){
- $value['layer_action']->jump_to_slide = (array)$value['layer_action']->jump_to_slide;
- foreach($value['layer_action']->jump_to_slide as $jtsk => $jtsval){
- if(isset($slider_map[$jtsval])){
- $slide['layers'][$key]['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval];
- $did_change = true;
- }
- }
- }
- }
-
- $link_slide = RevSliderFunctions::getVal($value, 'link_slide', false);
- if($link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions
- if(!isset($slide['layers'][$key]['layer_action'])) $slide['layers'][$key]['layer_action'] = new stdClass();
- switch($link_slide){
- case 'link':
- $link = RevSliderFunctions::getVal($value, 'link');
- $link_open_in = RevSliderFunctions::getVal($value, 'link_open_in');
- $slide['layers'][$key]['layer_action']->action = array('a' => 'link');
- $slide['layers'][$key]['layer_action']->link_type = array('a' => 'a');
- $slide['layers'][$key]['layer_action']->image_link = array('a' => $link);
- $slide['layers'][$key]['layer_action']->link_open_in = array('a' => $link_open_in);
-
- unset($slide['layers'][$key]['link']);
- unset($slide['layers'][$key]['link_open_in']);
- case 'next':
- $slide['layers'][$key]['layer_action']->action = array('a' => 'next');
- break;
- case 'prev':
- $slide['layers'][$key]['layer_action']->action = array('a' => 'prev');
- break;
- case 'scroll_under':
- $scrollunder_offset = RevSliderFunctions::getVal($value, 'scrollunder_offset');
- $slide['layers'][$key]['layer_action']->action = array('a' => 'scroll_under');
- $slide['layers'][$key]['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset);
-
- unset($slide['layers'][$key]['scrollunder_offset']);
- break;
- default: //its an ID, so its a slide ID
- $slide['layers'][$key]['layer_action']->action = array('a' => 'jumpto');
- $slide['layers'][$key]['layer_action']->jump_to_slide = array('a' => $slider_map[$link_slide]);
- break;
-
- }
- $slide['layers'][$key]['layer_action']->tooltip_event = array('a' => 'click');
-
- unset($slide['layers'][$key]['link_slide']);
-
- $did_change = true;
- }
-
-
- if($did_change === true){
-
- $arrCreate = array();
- $my_layers = json_encode($slide['layers']);
- if(empty($my_layers))
- $my_layers = stripslashes(json_encode($layers));
-
- $arrCreate['layers'] = $my_layers;
-
- $this->db->update(RevSliderGlobals::$table_slides,$arrCreate,array("id"=>$slider_map[$slide['id']]));
- }
- }
- }
- }
-
- //check if static slide exists and import
- if(isset($arrSlider['static_slides']) && !empty($arrSlider['static_slides']) && $import_statics){
- $static_slide = $arrSlider['static_slides'];
- foreach($static_slide as $slide){
-
- $params = $slide["params"];
- $layers = $slide["layers"];
- $settings = (isset($slide["settings"])) ? $slide["settings"] : '';
-
- //remove image_id as it is not needed in import
- if(isset($params['image_id'])) unset($params['image_id']);
-
- //convert params images:
- if(isset($params["image"])){
- //import if exists in zip folder
- if(strpos($params["image"], 'http') !== false){
- }else{
- if(trim($params["image"]) !== ''){
- if($importZip === true){ //we have a zip, check if exists
- $image = $wp_filesystem->exists( $d_path.'images/'.$params["image"] );
- if(!$image){
- echo $params["image"].__(' not found!<br>', 'revslider');
- }else{
- if(!isset($alreadyImported['images/'.$params["image"]])){
- $importImage = RevSliderFunctionsWP::import_media($d_path.'images/'.$params["image"], $sliderParams["alias"].'/');
- if($importImage !== false){
- $alreadyImported['images/'.$params["image"]] = $importImage['path'];
-
- $params["image"] = $importImage['path'];
- }
- }else{
- $params["image"] = $alreadyImported['images/'.$params["image"]];
- }
- }
- }
- }
- $params["image"] = RevSliderFunctionsWP::getImageUrlFromPath($params["image"]);
- }
- }
-
- //convert layers images:
- foreach($layers as $key=>$layer){
- if(isset($layer["image_url"])){
- //import if exists in zip folder
- if(trim($layer["image_url"]) !== ''){
- if(strpos($layer["image_url"], 'http') !== false){
- }else{
- if($importZip === true){ //we have a zip, check if exists
- $image_url = $wp_filesystem->exists( $d_path.'images/'.$layer["image_url"] );
- if(!$image_url){
- echo $layer["image_url"].__(' not found!<br>');
- }else{
- if(!isset($alreadyImported['images/'.$layer["image_url"]])){
- $importImage = RevSliderFunctionsWP::import_media($d_path.'images/'.$layer["image_url"], $sliderParams["alias"].'/');
-
- if($importImage !== false){
- $alreadyImported['images/'.$layer["image_url"]] = $importImage['path'];
-
- $layer["image_url"] = $importImage['path'];
- }
- }else{
- $layer["image_url"] = $alreadyImported['images/'.$layer["image_url"]];
- }
- }
- }
- }
- }
- $layer["image_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["image_url"]);
- }
- if(isset($layer["bgimage_url"])){
- //import if exists in zip folder
- if(trim($layer["bgimage_url"]) !== ''){
- if(strpos($layer["bgimage_url"], 'http') !== false){
- }else{
- if($importZip === true){ //we have a zip, check if exists
- $bgimage_url = $wp_filesystem->exists( $d_path.'images/'.$layer["bgimage_url"] );
- if(!$bgimage_url){
- echo $layer["bgimage_url"].__(' not found!<br>');
- }else{
- if(!isset($alreadyImported['images/'.$layer["bgimage_url"]])){
- $importImage = RevSliderFunctionsWP::import_media($d_path.'images/'.$layer["bgimage_url"], $sliderParams["alias"].'/');
-
- if($importImage !== false){
- $alreadyImported['images/'.$layer["bgimage_url"]] = $importImage['path'];
-
- $layer["bgimage_url"] = $importImage['path'];
- }
- }else{
- $layer["bgimage_url"] = $alreadyImported['images/'.$layer["bgimage_url"]];
- }
- }
- }
- }
- }
- $layer["bgimage_url"] = RevSliderFunctionsWP::getImageUrlFromPath($layer["bgimage_url"]);
- }
-
- $layer['text'] = stripslashes($layer['text']);
-
- if(isset($layer['type']) && ($layer['type'] == 'video' || $layer['type'] == 'audio')){
-
- $video_data = (isset($layer['video_data'])) ? (array) $layer['video_data'] : array();
-
- if(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] == 'html5'){
- if(isset($video_data['urlPoster']) && $video_data['urlPoster'] != ''){
- $video_data['urlPoster'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlPoster"], $sliderParams["alias"], $alreadyImported));
- }
- if(isset($video_data['urlMp4']) && $video_data['urlMp4'] != ''){
- $video_data['urlMp4'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlMp4"], $sliderParams["alias"], $alreadyImported, true));
- }
- if(isset($video_data['urlWebm']) && $video_data['urlWebm'] != ''){
- $video_data['urlWebm'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlWebm"], $sliderParams["alias"], $alreadyImported, true));
- }
- if(isset($video_data['urlOgv']) && $video_data['urlOgv'] != ''){
- $video_data['urlOgv'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlOgv"], $sliderParams["alias"], $alreadyImported, true));
- }
-
- }elseif(!empty($video_data) && isset($video_data['video_type']) && $video_data['video_type'] != 'html5'){ //video cover image
- if($video_data['video_type'] == 'audio'){
- if(isset($video_data['urlAudio']) && $video_data['urlAudio'] != ''){
- $video_data['urlAudio'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["urlAudio"], $sliderParams["alias"], $alreadyImported, true));
- }
- }else{
- if(isset($video_data['previewimage']) && $video_data['previewimage'] != ''){
- $video_data['previewimage'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $video_data["previewimage"], $sliderParams["alias"], $alreadyImported));
- }
- }
- }
-
- $layer['video_data'] = $video_data;
-
- if(isset($layer['video_image_url']) && $layer['video_image_url'] != ''){
- $layer['video_image_url'] = RevSliderFunctionsWP::getImageUrlFromPath(RevSliderBase::check_file_in_zip($d_path, $layer["video_image_url"], $sliderParams["alias"], $alreadyImported));
- }
- }
-
- if(isset($layer['type']) && $layer['type'] == 'svg'){
- if(isset($layer['svg']) && isset($layer['svg']->src)){
- $layer['svg']->src = $content_url.$layer['svg']->src;
- }
- }
-
- if(isset($layer['layer_action'])){
- if(isset($layer['layer_action']->jump_to_slide) && !empty($layer['layer_action']->jump_to_slide)){
- foreach($layer['layer_action']->jump_to_slide as $jtsk => $jtsval){
- if(isset($slider_map[$jtsval])){
- $layer['layer_action']->jump_to_slide[$jtsk] = $slider_map[$jtsval];
- }
- }
- }
- }
-
- $link_slide = RevSliderFunctions::getVal($layer, 'link_slide', false);
- if($link_slide != false && $link_slide !== 'nothing'){ //link to slide/scrollunder is set, move it to actions
- if(!isset($layer['layer_action'])) $layer['layer_action'] = new stdClass();
-
- switch($link_slide){
- case 'link':
- $link = RevSliderFunctions::getVal($layer, 'link');
- $link_open_in = RevSliderFunctions::getVal($layer, 'link_open_in');
- $layer['layer_action']->action = array('a' => 'link');
- $layer['layer_action']->link_type = array('a' => 'a');
- $layer['layer_action']->image_link = array('a' => $link);
- $layer['layer_action']->link_open_in = array('a' => $link_open_in);
-
- unset($layer['link']);
- unset($layer['link_open_in']);
- case 'next':
- $layer['layer_action']->action = array('a' => 'next');
- break;
- case 'prev':
- $layer['layer_action']->action = array('a' => 'prev');
- break;
- case 'scroll_under':
- $scrollunder_offset = RevSliderFunctions::getVal($value, 'scrollunder_offset');
- $layer['layer_action']->action = array('a' => 'scroll_under');
- $layer['layer_action']->scrollunder_offset = array('a' => $scrollunder_offset);
-
- unset($layer['scrollunder_offset']);
- break;
- default: //its an ID, so its a slide ID
- $layer['layer_action']->action = array('a' => 'jumpto');
- $layer['layer_action']->jump_to_slide = array('a' => $slider_map[$link_slide]);
- break;
-
- }
- $layer['layer_action']->tooltip_event = array('a' => 'click');
-
- unset($layer['link_slide']);
-
- $did_change = true;
- }
-
- $layers[$key] = $layer;
- }
-
- $d = array('params' => $params, 'layers' => $layers, 'settings' => $settings);
- $d = apply_filters('revslider_importSliderFromPost_modify_data', $d, 'static', $d_path);
-
- $params = $d['params'];
- $layers = $d['layers'];
- $settings = $d['settings'];
-
-
- //create new slide
- $arrCreate = array();
- $arrCreate["slider_id"] = $sliderID;
-
- $my_layers = json_encode($layers);
- if(empty($my_layers))
- $my_layers = stripslashes(json_encode($layers));
- $my_params = json_encode($params);
- if(empty($my_params))
- $my_params = stripslashes(json_encode($params));
- $my_settings = json_encode($settings);
- if(empty($my_settings))
- $my_settings = stripslashes(json_encode($settings));
-
-
- $arrCreate["layers"] = $my_layers;
- $arrCreate["params"] = $my_params;
- $arrCreate["settings"] = $my_settings;
-
- if($sliderExists){
- unset($arrCreate["slider_id"]);
- $this->db->update(RevSliderGlobals::$table_static_slides,$arrCreate,array("slider_id"=>$sliderID));
- }else{
- $this->db->insert(RevSliderGlobals::$table_static_slides,$arrCreate);
- }
- }
- }
-
- $c_slider = new RevSliderSlider();
- $c_slider->initByID($sliderID);
-
- //check to convert styles to latest versions
- RevSliderPluginUpdate::update_css_styles(); //set to version 5
- RevSliderPluginUpdate::add_animation_settings_to_layer($c_slider); //set to version 5
- RevSliderPluginUpdate::add_style_settings_to_layer($c_slider); //set to version 5
- RevSliderPluginUpdate::change_settings_on_layers($c_slider); //set to version 5
- RevSliderPluginUpdate::add_general_settings($c_slider); //set to version 5
- RevSliderPluginUpdate::change_general_settings_5_0_7($c_slider); //set to version 5.0.7
- RevSliderPluginUpdate::change_layers_svg_5_2_5_5($c_slider); //set to version 5.2.5.5
-
- $cus_js = $c_slider->getParam('custom_javascript', '');
-
- if(strpos($cus_js, 'revapi') !== false){
- if(preg_match_all('/revapi[0-9]*/', $cus_js, $results)){
-
- if(isset($results[0]) && !empty($results[0])){
- foreach($results[0] as $replace){
- $cus_js = str_replace($replace, 'revapi'.$sliderID, $cus_js);
- }
- }
-
- $c_slider->updateParam(array('custom_javascript' => $cus_js));
-
- }
-
- }
-
- $real_slider_id = $sliderID;
-
- if($is_template !== false){ //duplicate the slider now, as we just imported the "template"
- if($single_slide !== false){ //add now one Slide to the current Slider
- $mslider = new RevSlider();
-
- //change slide_id to correct, as it currently is just a number beginning from 0 as we did not have a correct slide ID yet.
- $i = 0;
- $changed = false;
- foreach($slider_map as $value){
- if($i == $single_slide['slide_id']){
- $single_slide['slide_id'] = $value;
- $changed = true;
- break;
- }
- $i++;
- }
-
- if($changed){
- $return = $mslider->copySlideToSlider($single_slide);
- }else{
- return(array("success"=>false,"error"=>__('could not find correct Slide to copy, please try again.', 'revslider'),"sliderID"=>$sliderID));
- }
-
- }else{
- $mslider = new RevSlider();
- $title = RevSliderFunctions::getVal($sliderParams, 'title', 'slider1');
- $talias = $title;
- $ti = 1;
- while($this->isAliasExistsInDB($talias)){ //set a new alias and title if its existing in database
- $talias = $title . $ti;
- $ti++;
- }
- $real_slider_id = $mslider->duplicateSliderFromData(array('sliderid' => $sliderID, 'title' => $talias));
- }
- }
-
- $wp_filesystem->delete($rem_path, true);
-
-
- }catch(Exception $e){
- $errorMessage = $e->getMessage();
-
- if(isset($rem_path)){
- $wp_filesystem->delete($rem_path, true);
- }
- return(array("success"=>false,"error"=>$errorMessage,"sliderID"=>$sliderID));
- }
-
- do_action('revslider_slider_imported', $real_slider_id);
-
- return(array("success"=>true,"sliderID"=>$real_slider_id));
- }
-
-
- /**
- *
- * update slider from options
- */
- public function updateSliderFromOptions($options){
-
- $sliderID = RevSliderFunctions::getVal($options, "sliderid");
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
-
- $this->createUpdateSliderFromOptions($options,$sliderID);
- }
-
- /**
- *
- * update some params in the slider
- */
- public function updateParam($arrUpdate){
- $this->validateInited();
-
- $this->arrParams = array_merge($this->arrParams,$arrUpdate);
- $jsonParams = json_encode($this->arrParams);
- $arrUpdateDB = array();
- $arrUpdateDB["params"] = $jsonParams;
-
- $this->db->update(RevSliderGlobals::$table_sliders,$arrUpdateDB,array("id"=>$this->id));
- }
-
- /**
- * update some settings in the slider
- */
- public function updateSetting($arrUpdate){
- $this->validateInited();
-
- $this->settings = array_merge($this->settings,$arrUpdate);
- $jsonParams = json_encode($this->settings);
- $arrUpdateDB = array();
- $arrUpdateDB["settings"] = $jsonParams;
-
- $this->db->update(RevSliderGlobals::$table_sliders,$arrUpdateDB,array("id"=>$this->id));
- }
-
-
- /**
- *
- * delete slider from input data
- */
- public function deleteSliderFromData($data){
- $sliderID = RevSliderFunctions::getVal($data, "sliderid");
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $this->initByID($sliderID);
-
- $this->deleteSlider();
-
- return true;
- }
-
- /**
- *
- * delete slider from input data
- */
- public function duplicateSliderFromData($data){
- $sliderID = RevSliderFunctions::getVal($data, "sliderid");
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $this->initByID($sliderID);
- $slider_id = $this->duplicateSlider(RevSliderFunctions::getVal($data, "title"));
- return $slider_id;
- }
-
- /**
- * delete slider from input data
- * @since: 5.2.5
- */
- public function duplicateSliderPackageFromData($data){
- $tmpl = new RevSliderTemplate();
-
- $slider_uid = RevSliderFunctions::getVal($data, "slideruid");
-
- $uids = $tmpl->get_package_uids($slider_uid);
-
- foreach($uids as $sid => $uid){
- if($sid < 0){ //one or more still needs to be downloaded...
- return __('Please install Package first to use this feature', 'revslider');
- }
- }
-
- foreach($uids as $sliderID => $uid){
- $slider = new RevSlider();
- $slider->initByID($sliderID);
- $slider_id = $slider->duplicateSlider(RevSliderFunctions::getVal($data, "title"), true);
- }
-
- return true;
- }
-
-
- /**
- *
- * duplicate slide from input data
- */
- public function duplicateSlideFromData($data){
-
- //init the slider
- $sliderID = RevSliderFunctions::getVal($data, "sliderID");
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $this->initByID($sliderID);
-
- //get the slide id
- $slideID = RevSliderFunctions::getVal($data, "slideID");
- RevSliderFunctions::validateNotEmpty($slideID,"Slide ID");
- $newSlideID = $this->duplicateSlide($slideID);
-
- $this->duplicateChildren($slideID, $newSlideID);
-
- return(array($sliderID, $newSlideID));
- }
-
-
- /**
- * duplicate slide children
- * @param $slideID
- */
- private function duplicateChildren($slideID,$newSlideID){
-
- $arrChildren = $this->getArrSlideChildren($slideID);
-
- foreach($arrChildren as $childSlide){
- $childSlideID = $childSlide->getID();
- //duplicate
- $duplicatedSlideID = $this->duplicateSlide($childSlideID);
-
- //update parent id
- $duplicatedSlide = new RevSlide();
- $duplicatedSlide->initByID($duplicatedSlideID);
- $duplicatedSlide->updateParentSlideID($newSlideID);
- }
-
- }
-
-
- /**
- * copy slide from one Slider to the given Slider ID
- * @since: 5.0
- */
- public function copySlideToSlider($data){
- global $wpdb;
-
- $sliderID = intval(RevSliderFunctions::getVal($data, "slider_id"));
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $slideID = intval(RevSliderFunctions::getVal($data, "slide_id"));
- RevSliderFunctions::validateNotEmpty($slideID,"Slide ID");
-
- $tableSliders = $wpdb->prefix . RevSliderGlobals::TABLE_SLIDERS_NAME;
- $tableSlides = $wpdb->prefix . RevSliderGlobals::TABLE_SLIDES_NAME;
- //check if ID exists
- $add_to_slider = $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSliders WHERE id = %s", $sliderID), ARRAY_A);
-
- if(empty($add_to_slider))
- return __('Slide could not be duplicated', 'revslider');
-
- //get last slide in slider for the order
- $slide_order = $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSlides WHERE slider_id = %s ORDER BY slide_order DESC", $sliderID), ARRAY_A);
- $order = (empty($slide_order)) ? 1 : $slide_order['slide_order'] + 1;
-
- $slide_to_copy = $wpdb->get_row($wpdb->prepare("SELECT * FROM $tableSlides WHERE id = %s", $slideID), ARRAY_A);
-
- if(empty($slide_to_copy))
- return __('Slide could not be duplicated', 'revslider');
-
- unset($slide_to_copy['id']); //remove the ID of Slide, as it will be a new Slide
- $slide_to_copy['slider_id'] = $sliderID; //set the new Slider ID to the Slide
- $slide_to_copy['slide_order'] = $order; //set the next slide order, to set slide to the end
-
- $response = $wpdb->insert($tableSlides, $slide_to_copy);
-
- if($response === false) return __('Slide could not be copied', 'revslider');
-
- return true;
- }
-
-
- /**
- * copy / move slide from data
- */
- public function copyMoveSlideFromData($data){
-
- $sliderID = RevSliderFunctions::getVal($data, "sliderID");
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $this->initByID($sliderID);
- $targetSliderID = RevSliderFunctions::getVal($data, "targetSliderID");
- RevSliderFunctions::validateNotEmpty($sliderID,"Target Slider ID");
- $this->initByID($sliderID);
-
- if($targetSliderID == $sliderID)
- RevSliderFunctions::throwError("The target slider can't be equal to the source slider");
-
- $slideID = RevSliderFunctions::getVal($data, "slideID");
- RevSliderFunctions::validateNotEmpty($slideID,"Slide ID");
-
- $operation = RevSliderFunctions::getVal($data, "operation");
-
- $this->copyMoveSlide($slideID,$targetSliderID,$operation);
-
- return($sliderID);
- }
-
-
- /**
- * create a slide from input data
- */
- public function createSlideFromData($data,$returnSlideID = false){
-
- $sliderID = RevSliderFunctions::getVal($data, "sliderid");
- $obj = RevSliderFunctions::getVal($data, "obj");
-
- RevSliderFunctions::validateNotEmpty($sliderID,"Slider ID");
- $this->initByID($sliderID);
-
- if(is_array($obj)){ //multiple
- foreach($obj as $item){
- $slide = new RevSlide();
- $slideID = $slide->createSlide($sliderID, $item);
- }
-
- return(count($obj));
-
- }else{ //signle
- $urlImage = $obj;
- $slide = new RevSlide();
- $slideID = $slide->createSlide($sliderID, $urlImage);
- if($returnSlideID == true)
- return($slideID);
- else
- return(1); //num slides -1 slide created
- }
- }
-
-
-
- /**
- * update slides order from data
- */
- public function updateSlidesOrderFromData($data){
- $sliderID = RevSliderFunctions::getVal($data, "sliderID");
- $arrIDs = RevSliderFunctions::getVal($data, "arrIDs");
- RevSliderFunctions::validateNotEmpty($arrIDs,"slides");
-
- $this->initByID($sliderID);
-
- $isFromPosts = $this->isSlidesFromPosts();
-
- foreach($arrIDs as $index=>$slideID){
-
- $order = $index+1;
-
- if($isFromPosts){
- RevSliderFunctionsWP::updatePostOrder($slideID, $order);
- }else{
-
- $arrUpdate = array("slide_order"=>$order);
- $where = array("id"=>$slideID);
- $this->db->update(RevSliderGlobals::$table_slides,$arrUpdate,$where);
- }
- }//end foreach
-
- //update sortby
- if($isFromPosts){
- $arrUpdate = array();
- $arrUpdate["post_sortby"] = RevSliderFunctionsWP::SORTBY_MENU_ORDER;
- $this->updateParam($arrUpdate);
- }
-
- }
-
- /**
- *
- * get the "main" and "settings" arrays, for dealing with the settings.
- */
- public function getSettingsFields(){
- $this->validateInited();
-
- $arrMain = array();
- $arrMain["title"] = $this->title;
- $arrMain["alias"] = $this->alias;
-
- $arrRespose = array("main"=>$arrMain, "params"=>$this->arrParams);
-
- return($arrRespose);
- }
-
-
- /**
- * get all used fonts in the current Slider
- * @since: 5.1.0
- */
- public function getUsedFonts($full = false){
- $this->validateInited();
- $gf = array();
-
- $sl = new RevSliderSlide();
-
- $mslides = $this->getSlides(true);
-
- $staticID = $sl->getStaticSlideID($this->getID());
- if($staticID !== false){
- $msl = new RevSliderSlide();
- if(strpos($staticID, 'static_') === false){
- $staticID = 'static_'.$this->getID();
- }
- $msl->initByID($staticID);
- if($msl->getID() !== ''){
- $mslides = array_merge($mslides, array($msl));
- }
- }
-
- if(!empty($mslides)){
- foreach($mslides as $ms){
- $mf = $ms->getUsedFonts($full);
- if(!empty($mf)){
- foreach($mf as $mfk => $mfv){
- if(!isset($gf[$mfk])){
- $gf[$mfk] = $mfv;
- }else{
- foreach($mfv['variants'] as $mfvk => $mfvv){
- $gf[$mfk]['variants'][$mfvk] = true;
- }
- }
- $gf[$mfk]['slide'][] = array('id' => $ms->getID(), 'title' => $ms->getTitle());
- }
- }
- }
- }
-
- return apply_filters('revslider_getUsedFonts', $gf);
- }
-
-
- /**
- * get slides from gallery
- * force from gallery - get the slide from the gallery only
- */
- public function getSlides($publishedOnly = false){
-
- $arrSlides = $this->getSlidesFromGallery($publishedOnly);
-
- return($arrSlides);
- }
-
-
- /**
- * get slides from gallery
- * get the slides raw, do not initialize them
- * @since: 5.3.0
- */
- public function getSlidesCountRaw($publishedOnly = false){
-
- $arrSlides = $this->getSlidesCountFromGallery($publishedOnly);
-
- return($arrSlides);
- }
-
-
- /**
- * get first slide from gallery
- * @since: 5.3.0
- */
- public function getFirstSlide($publishedOnly = false){
-
- $arrSlides = $this->getSlidesFromGallery($publishedOnly, false, true);
-
- return($arrSlides);
- }
-
-
- /**
- * get slides from gallery respecting wpml
- * force from gallery - get the slide from the gallery only
- */
- public function getSlidesWPML($publishedOnly = false, $slide){
-
- $arrSlides = $this->getSlides($publishedOnly);
-
- $mslide_list = array();
-
- //check if WPML is active and change the ID of Slide depending on that.
- if(RevSliderWpml::isWpmlExists() && $this->getParam('use_wpml', 'off') == 'on'){
- $lang = $slide->getParam('lang', 'all');
-
- if(!empty($arrSlides)){
- foreach($arrSlides as $at_slide){
- $langs = $at_slide->getArrChildrenLangs();
-
- if(!empty($langs) && is_array($langs)){
- foreach($langs as $l){
- if($l['lang'] == $lang){
- $mslide_list[] = array('id' => $l['slideid'], 'title' => $at_slide->getParam('title', 'Slide'));
- }
- }
- }
- }
- }
- //get cur lang of slide
- }else{
- if(!empty($arrSlides)){
- foreach($arrSlides as $at_slide){
- $mslID = $at_slide->getID();
-
- $mslide_list[] = array('id' => $mslID, 'title' => $at_slide->getParam('title', 'Slide'));
- }
- }
- }
-
- return($mslide_list);
- }
-
-
- /**
- * get slides from posts
- */
- public function getSlidesFromPosts($publishedOnly = false, $gal_ids = array()){
-
- $slideTemplates = $this->getSlidesFromGallery($publishedOnly);
- $slideTemplates = RevSliderFunctions::assocToArray($slideTemplates);
-
- if(count($slideTemplates) == 0) return array();
-
- $sourceType = $this->getParam("source_type","gallery");
-
- if(!empty($gal_ids)) $sourceType = 'specific_posts'; //change to specific posts, give the gal_ids to the list
-
- switch($sourceType){
- case "posts":
- //check where to get posts from
- $sourceType = $this->getParam("fetch_type","cat_tag");
- switch($sourceType){
- case 'cat_tag':
- default:
- $arrPosts = $this->getPostsFromCategories($publishedOnly);
- break;
- case 'related':
- $arrPosts = $this->getPostsFromRelated();
- break;
- case 'popular':
- $arrPosts = $this->getPostsFromPopular();
- break;
- case 'recent':
- $arrPosts = $this->getPostsFromRecent();
- break;
- case 'next_prev':
- $arrPosts = $this->getPostsNextPrevious();
- break;
- }
- break;
- case "current_post":
- global $post;
- $arrPosts = $this->getPostsFromSpecificList(array("",$post->ID));
- break;
- case "specific_posts":
- $arrPosts = $this->getPostsFromSpecificList($gal_ids);
- break;
- case 'woocommerce':
- $arrPosts = $this->getProductsFromCategories($publishedOnly);
- break;
- default:
- RevSliderFunctions::throwError("getSlidesFromPosts error: This source type must be from posts.");
- break;
- }
-
- $arrSlides = array();
-
- $templateKey = 0;
- $numTemplates = count($slideTemplates);
-
-
- foreach($arrPosts as $postData){
- $slideTemplate = clone $slideTemplates[$templateKey];
-
- //advance the templates
- $templateKey++;
- if($templateKey == $numTemplates){
- $templateKey = 0;
- $slideTemplates = $this->getSlidesFromGallery($publishedOnly); //reset as clone did not work properly
- $slideTemplates = RevSliderFunctions::assocToArray($slideTemplates);
- }
- $slide = new RevSlide();
- $slide->initByPostData($postData, $slideTemplate, $this->id);
- $arrSlides[] = $slide;
- }
-
- $this->arrSlides = $arrSlides;
-
- return($arrSlides);
- }
-
-
- /**
- * get slides from posts
- */
- public function getSlidesFromStream($publishedOnly = false){
-
- $slideTemplates = $this->getSlidesFromGallery($publishedOnly);
- $slideTemplates = RevSliderFunctions::assocToArray($slideTemplates);
-
- if(count($slideTemplates) == 0) return array();
-
- $arrPosts = array();
-
- $max_allowed = 999999;
- $sourceType = $this->getParam("source_type","gallery");
- $additions = array('fb_type' => 'album');
- switch($sourceType){
- case "facebook":
- $facebook = new RevSliderFacebook($this->getParam('facebook-transient','1200'));
- if($this->getParam('facebook-type-source','timeline') == "album"){
- $arrPosts = $facebook->get_photo_set_photos($this->getParam('facebook-album'),$this->getParam('facebook-count',10),$this->getParam('facebook-app-id'),$this->getParam('facebook-app-secret'));
- }
- else{
- $user_id = $facebook->get_user_from_url($this->getParam('facebook-page-url'));
- $arrPosts = $facebook->get_photo_feed($user_id,$this->getParam('facebook-app-id'),$this->getParam('facebook-app-secret'),$this->getParam('facebook-count',10));
- $additions['fb_type'] = $this->getParam('facebook-type-source','timeline');
- $additions['fb_user_id'] = $user_id;
- }
-
- if(!empty($arrPosts)){
- foreach($arrPosts as $k => $p){
- if(!isset($p->status_type)) continue;
-
- if(in_array($p->status_type, array("wall_post"))) unset($arrPosts[$k]);
- }
- }
- $max_posts = $this->getParam('facebook-count', '25', self::FORCE_NUMERIC);
- $max_allowed = 25;
- break;
- case "twitter":
- $twitter = new RevSliderTwitter($this->getParam('twitter-consumer-key'),$this->getParam('twitter-consumer-secret'),$this->getParam('twitter-access-token'),$this->getParam('twitter-access-secret'),$this->getParam('twitter-transient','1200'));
- $arrPosts = $twitter->get_public_photos($this->getParam('twitter-user-id'),$this->getParam('twitter-include-retweets'),$this->getParam( 'twitter-exclude-replies'),$this->getParam('twitter-count'),$this->getParam('twitter-image-only'));
- $max_posts = $this->getParam('twitter-count', '500', self::FORCE_NUMERIC);
- $max_allowed = 500;
- $additions['twitter_user'] = $this->getParam('twitter-user-id');
- break;
- case "instagram":
- $instagram = new RevSliderInstagram($this->getParam('instagram-transient','1200'));
- if($this->getParam('instagram-type','user')!="hash"){
- $search_user_id = $this->getParam('instagram-user-id');
- $arrPosts = $instagram->get_public_photos($search_user_id,$this->getParam('instagram-count'));
- }
- else{
- $search_hash_tag = $this->getParam('instagram-hash-tag');
- $arrPosts = $instagram->get_tag_photos($search_hash_tag,$this->getParam('instagram-count'));
- }
-
- $max_posts = $this->getParam('instagram-count', '33', self::FORCE_NUMERIC);
- $max_allowed = 33;
- break;
- case "flickr":
- $flickr = new RevSliderFlickr($this->getParam('flickr-api-key'),$this->getParam('flickr-transient','1200'));
- switch($this->getParam('flickr-type')){
- case 'publicphotos':
- $user_id = $flickr->get_user_from_url($this->getParam('flickr-user-url'));
- $arrPosts = $flickr->get_public_photos($user_id,$this->getParam('flickr-count'));
- break;
- case 'gallery':
- $gallery_id = $flickr->get_gallery_from_url($this->getParam('flickr-gallery-url'));
- $arrPosts = $flickr->get_gallery_photos($gallery_id,$this->getParam('flickr-count'));
- break;
- case 'group':
- $group_id = $flickr->get_group_from_url($this->getParam('flickr-group-url'));
- $arrPosts = $flickr->get_group_photos($group_id,$this->getParam('flickr-count'));
- break;
- case 'photosets':
- $arrPosts = $flickr->get_photo_set_photos($this->getParam('flickr-photoset'),$this->getParam('flickr-count'));
- break;
- }
- $max_posts = $this->getParam('flickr-count', '99', self::FORCE_NUMERIC);
- break;
- case 'youtube':
- $channel_id = $this->getParam('youtube-channel-id');
- $youtube = new RevSliderYoutube($this->getParam('youtube-api'),$channel_id,$this->getParam('youtube-transient','1200'));
-
- if($this->getParam('youtube-type-source')=="playlist"){
- $arrPosts = $youtube->show_playlist_videos($this->getParam('youtube-playlist'),$this->getParam('youtube-count'));
- }
- else{
- $arrPosts = $youtube->show_channel_videos($this->getParam('youtube-count'));
- }
- $additions['yt_type'] = $this->getParam('youtube-type-source','channel');
- $max_posts = $this->getParam('youtube-count', '25', self::FORCE_NUMERIC);
- $max_allowed = 50;
- break;
- case 'vimeo':
- $vimeo = new RevSliderVimeo($this->getParam('vimeo-transient','1200'));
- $vimeo_type = $this->getParam('vimeo-type-source');
-
- switch ($vimeo_type) {
- case 'user':
- $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-username'));
- break;
- case 'channel':
- $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-channelname'));
- break;
- case 'group':
- $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-groupname'));
- break;
- case 'album':
- $arrPosts = $vimeo->get_vimeo_videos($vimeo_type,$this->getParam('vimeo-albumid'));
- break;
- default:
- break;
- }
- $additions['vim_type'] = $this->getParam('vimeo-type-source','user');
- $max_posts = $this->getParam('vimeo-count', '25', self::FORCE_NUMERIC);
- $max_allowed = 60;
- break;
- default:
- RevSliderFunctions::throwError("getSlidesFromStream error: This source type must be from stream.");
- break;
- }
-
- if($max_posts < 0) $max_posts *= -1;
-
- $arrPosts = apply_filters('revslider_pre_mod_stream_data', $arrPosts, $sourceType, $this->id);
-
- while(count($arrPosts) > $max_posts || count($arrPosts) > $max_allowed){
- array_pop($arrPosts);
- }
-
- $arrPosts = apply_filters('revslider_post_mod_stream_data', $arrPosts, $sourceType, $this->id);
-
- $arrSlides = array();
-
- $templateKey = 0;
- $numTemplates = count($slideTemplates);
-
- if(empty($arrPosts)) RevSliderFunctions::throwError(__('Failed to load Stream', 'revslider'));
-
- foreach($arrPosts as $postData){
- if(empty($postData)) continue; //ignore empty entries, like from instagram
-
- $slideTemplate = $slideTemplates[$templateKey];
-
- //advance the templates
- $templateKey++;
- if($templateKey == $numTemplates)
- $templateKey = 0;
-
- $slide = new RevSlide();
- $slide->initByStreamData($postData, $slideTemplate, $this->id, $sourceType, $additions);
- $arrSlides[] = $slide;
- }
-
- $this->arrSlides = $arrSlides;
-
- return($arrSlides);
- }
-
-
- /**
- * get the first slide ID of the current slider
- */
- public function getFirstSlideIdFromGallery(){
- $this->validateInited();
-
- $arrSlides = array();
- $arrSlideRecords = $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order",'',' LIMIT 0,1');
-
- foreach ($arrSlideRecords as $record){
- $slide = new RevSlide();
- $slide->initByData($record);
- $slideID = $slide->getID();
- $arrSlides[$slideID] = $slide;
- return $arrSlides;
- }
-
- return false;
- }
-
-
- /**
- * get slides of the current slider
- */
- public function getSlidesFromGallery($publishedOnly = false, $allwpml = false, $first = false){
- //global $rs_slide_template;
- $this->validateInited();
-
- $arrSlides = array();
- $arrSlideRecords = $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order");
-
- //add Slides set by postsettings, so slide_template
- /*if(!empty($rs_slide_template)){
- foreach($rs_slide_template as $rs_s_t){
- $rs_s_t_d = $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("id = %s", array($rs_s_t)),"slide_order");
- foreach($rs_s_t_d as $rs_s_t_d_v){
- $arrSlideRecords[] = $rs_s_t_d_v;
- }
- }
- }*/
-
- $arrChildren = array();
-
- foreach ($arrSlideRecords as $record){
- $slide = new RevSlide();
- $slide->initByData($record);
-
- $slideID = $slide->getID();
- $arrIdsAssoc[$slideID] = true;
- if($publishedOnly == true){
- $state = $slide->getParam("state", "published");
- if($state == "unpublished"){
- continue;
- }
- }
-
- $parentID = $slide->getParam("parentid","");
- if(!empty($parentID)){
- $lang = $slide->getParam("lang","");
- if(!isset($arrChildren[$parentID]))
- $arrChildren[$parentID] = array();
- $arrChildren[$parentID][] = $slide;
- if(!$allwpml)
- continue; //skip adding to main list
- }
-
- //init the children array
- $slide->setArrChildren(array());
-
- $arrSlides[$slideID] = $slide;
-
- if($first) break; //we only want the first slide!
- }
-
- //add children array to the parent slides
- foreach($arrChildren as $parentID=>$arr){
- if(!isset($arrSlides[$parentID])){
- continue;
- }
- $arrSlides[$parentID]->setArrChildren($arr);
- }
-
- $this->arrSlides = $arrSlides;
- return($arrSlides);
- }
-
-
- /**
- * get slides of the current slider
- * @since: 5.3.0
- */
- public function getSlidesFromGalleryRaw($publishedOnly = false){
-
- $this->validateInited();
-
- $arrSlideRecords = $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order");
-
- return $arrSlideRecords;
- }
-
-
- /**
- * get slides of the current slider
- * @since: 5.3.0
- */
- public function getSlidesCountFromGallery($publishedOnly = false){
-
- $this->validateInited();
-
- $sqlSelect = $this->db->prepare("select `id` from ".RevSliderGlobals::$table_slides." where `slider_id` = %s", array($this->id));
- $arrSlideRecords = $this->db->runSqlR($sqlSelect);
-
- return $arrSlideRecords;
- }
-
-
-
- /**
- *
- * get slide id and slide title from gallery
- */
- public function getArrSlidesFromGalleryShort(){
- $arrSlides = $this->getSlidesFromGallery();
-
- $arrOutput = array();
- $counter = 0;
- foreach($arrSlides as $slide){
- $slideID = $slide->getID();
- $outputName = 'Slide '.$counter;
- $title = $slide->getParam('title','');
- $counter++;
-
- if(!empty($title))
- $outputName .= ' - ('.$title.')';
-
- $arrOutput[$slideID] = $outputName;
- }
-
- return($arrOutput);
- }
-
-
- /**
- *
- * get slides for output
- * one level only without children
- */
- public function getSlidesForOutput($publishedOnly = false, $lang = 'all',$gal_ids = array()){
-
- $isSlidesFromPosts = $this->isSlidesFromPosts();
- $isSlidesFromStream = $this->isSlidesFromStream();
-
-
- if(RevSliderWpml::isWpmlExists() && $this->getParam('use_wpml', 'off') == 'on'){
- $cur_lang = apply_filters( 'wpml_current_language', null );
- $wpml_current_language = apply_filters( 'wpml_current_language', null );
- do_action( 'wpml_switch_language', $lang );
-
- }
-
- if($isSlidesFromPosts){
- $arrParentSlides = $this->getSlidesFromPosts($publishedOnly, $gal_ids);
- }elseif($isSlidesFromStream !== false){
- $arrParentSlides = $this->getSlidesFromStream($publishedOnly);
- }else{
- $arrParentSlides = $this->getSlides($publishedOnly);
- }
-
- if(RevSliderWpml::isWpmlExists() && $this->getParam('use_wpml', 'off') == 'on'){ //switch language back
- do_action( 'wpml_switch_language', $cur_lang );
- }
-
- if($lang == 'all' || $isSlidesFromPosts || $isSlidesFromStream)
- return($arrParentSlides);
-
- $arrSlides = array();
- foreach($arrParentSlides as $parentSlide){
- $parentLang = $parentSlide->getLang();
- if($parentLang == $lang)
- $arrSlides[] = $parentSlide;
-
- $childAdded = false;
- $arrChildren = $parentSlide->getArrChildren();
- foreach($arrChildren as $child){
- $childLang = $child->getLang();
- if($childLang == $lang){
- $arrSlides[] = $child;
- $childAdded = true;
- break;
- }
- }
-
- if($childAdded == false && $parentLang == "all")
- $arrSlides[] = $parentSlide;
- }
-
- return($arrSlides);
- }
-
-
- /**
- *
- * get array of slide names
- */
- public function getArrSlideNames(){
- if(empty($this->arrSlides))
- $this->getSlidesFromGallery();
-
- $arrSlideNames = array();
- foreach($this->arrSlides as $number=>$slide){
- $slideID = $slide->getID();
- $filename = $slide->getImageFilename();
- $slideTitle = $slide->getParam("title","Slide");
- $slideName = $slideTitle;
- if(!empty($filename))
- $slideName .= " ($filename)";
-
- $arrChildrenIDs = $slide->getArrChildrenIDs();
-
- $arrSlideNames[$slideID] = array("name"=>$slideName,"arrChildrenIDs"=>$arrChildrenIDs,"title"=>$slideTitle);
- }
- return($arrSlideNames);
- }
-
-
- /**
- *
- * get array of slides numbers by id's
- */
- public function getSlidesNumbersByIDs($publishedOnly = false){
-
- if(empty($this->arrSlides))
- $this->getSlides($publishedOnly);
-
- $arrSlideNumbers = array();
-
- $counter = 0;
-
- if(empty($this->arrSlides)) return $arrSlideNumbers;
-
- foreach($this->arrSlides as $slide){
- $counter++;
- $slideID = $slide->getID();
- $arrSlideNumbers[$slideID] = $counter;
- }
- return($arrSlideNumbers);
- }
-
-
- /**
- *
- * get slider params for export slider
- */
- private function getParamsForExport(){
- $exportParams = $this->arrParams;
-
- //modify background image
- $urlImage = RevSliderFunctions::getVal($exportParams, "background_image");
- if(!empty($urlImage))
- $exportParams["background_image"] = $urlImage;
-
- return($exportParams);
- }
-
- /**
- *
- * get slides for export
- */
- public function getSlidesForExport($useDummy = false){
- $arrSlides = $this->getSlidesFromGallery(false, true);
- $arrSlidesExport = array();
-
- foreach($arrSlides as $slide){
- $slideNew = array();
- $slideNew["id"] = $slide->getID();
- $slideNew["params"] = $slide->getParamsForExport();
- $slideNew["slide_order"] = $slide->getOrder();
- $slideNew["layers"] = $slide->getLayersForExport($useDummy);
- $slideNew["settings"] = $slide->getSettings();
-
- $arrSlidesExport[] = $slideNew;
- }
-
- return apply_filters('revslider_getSlidesForExport', $arrSlidesExport);
- }
-
- /**
- *
- * get slides for export
- */
- public function getStaticSlideForExport($useDummy = false){
- $arrSlidesExport = array();
-
- $slide = new RevSlide();
-
- $staticID = $slide->getStaticSlideID($this->id);
- if($staticID !== false){
- $slideNew = array();
- $slide->initByStaticID($staticID);
- $slideNew["params"] = $slide->getParamsForExport();
- $slideNew["slide_order"] = $slide->getOrder();
- $slideNew["layers"] = $slide->getLayersForExport($useDummy);
- $slideNew["settings"] = $slide->getSettings();
- $arrSlidesExport[] = $slideNew;
- }
-
- return apply_filters('revslider_getStaticSlideForExport', $arrSlidesExport);
- }
-
-
- /**
- * get slides number
- */
- public function getNumSlides($publishedOnly = false){
-
- if($this->arrSlides == null)
- $this->getSlides($publishedOnly);
-
- $numSlides = count($this->arrSlides);
- return($numSlides);
- }
-
-
- /**
- * get slides number
- */
- public function getNumSlidesRaw($publishedOnly = false){
-
- if($this->arrSlides == null){
- $ret = $this->getSlidesCountRaw($publishedOnly);
- $numSlides = count($ret);
- }else{
- $numSlides = count($this->arrSlides);
- }
- return($numSlides);
- }
-
-
- /**
- * get real slides number, from posts, social streams ect.
- */
- public function getNumRealSlides($publishedOnly = false, $type = 'post'){
- $numSlides = count($this->arrSlides);
-
- switch($type){
- case 'post':
- if($this->getParam('fetch_type', 'cat_tag') == 'next_prev'){
- $numSlides = 2;
- }else{
- $numSlides = $this->getParam('max_slider_posts', count($this->arrSlides));
- if(intval($numSlides) == 0) $numSlides = '∞';
- //$this->getSlidesFromPosts($publishedOnly);
- //$numSlides = count($this->arrSlides);
- }
- break;
- case 'facebook':
- $numSlides = $this->getParam('facebook-count', count($this->arrSlides));
- break;
- case 'twitter':
- $numSlides = $this->getParam('twitter-count', count($this->arrSlides));
- break;
- case 'instagram':
- $numSlides = $this->getParam('instagram-count', count($this->arrSlides));
- break;
- case 'flickr':
- $numSlides = $this->getParam('flickr-count', count($this->arrSlides));
- break;
- case 'youtube':
- $numSlides = $this->getParam('youtube-count', count($this->arrSlides));
- break;
- case 'vimeo':
- $numSlides = $this->getParam('vimeo-count', count($this->arrSlides));
- break;
- }
-
- return($numSlides);
- }
-
-
- /**
- * get real slides number, from posts, social streams ect.
- */
- public function getNumRealStreamSlides($publishedOnly = false){
-
- $this->getSlidesFromStream($publishedOnly);
-
- $numSlides = count($this->arrSlides);
- return($numSlides);
- }
-
-
- /**
- * get sliders array - function don't belong to the object!
- */
- public function getArrSliders($orders = false, $templates = 'neither'){
- $order_fav = false;
- if($orders !== false && key($orders) != 'favorite'){
- $order_direction = reset($orders);
- $do_order = key($orders);
- }else{
- $do_order = 'id';
- $order_direction = 'ASC';
- if(is_array($orders) && key($orders) == 'favorite'){
- $order_direction = reset($orders);
- $order_fav = true;
- }
- }
- //$where = "`type` != 'template' ";
- $where = "`type` != 'template' OR `type` IS NULL";
-
- $response = $this->db->fetch(RevSliderGlobals::$table_sliders,$where,$do_order,'',$order_direction);
-
- $arrSliders = array();
- foreach($response as $arrData){
- $slider = new RevSlider();
- $slider->initByDBData($arrData);
-
- /*
- This part needs to stay for backwards compatibility. It is used in the update process from v4x to v5x
- */
- if($templates === true){
- if($slider->getParam("template","false") == "false") continue;
- }elseif($templates === false){
- if($slider->getParam("template","false") == "true") continue;
- }
-
- $arrSliders[] = $slider;
- }
-
- if($order_fav === true){
- $temp = array();
- $temp_not = array();
- foreach($arrSliders as $key => $slider){
- if($slider->isFavorite()){
- $temp_not[] = $slider;
- }else{
- $temp[] = $slider;
- }
- }
- $arrSliders = array();
- $arrSliders = ($order_direction == 'ASC') ? array_merge($temp, $temp_not) : array_merge($temp_not, $temp);
- }
-
- return($arrSliders);
- }
-
- /**
- * get array of alias
- */
- public function getAllSliderAliases(){
- $where = "`type` != 'template'";
-
- $response = $this->db->fetch(RevSliderGlobals::$table_sliders,$where,"id");
-
- $arrAliases = array();
- foreach($response as $arrSlider){
- $arrAliases[] = $arrSlider["alias"];
- }
-
- return($arrAliases);
- }
- /**
- * get array of alias
- */
- public function getAllSliderForAdminMenu(){
- $arrSliders = $this->getArrSliders();
- $arrShort = array();
- if(!empty($arrSliders)){
- foreach($arrSliders as $slider){
- $id = $slider->getID();
- $title = $slider->getTitle();
- $alias = $slider->getAlias();
-
- $arrShort[$id] = array('title' => $title, 'alias' => $alias);
- }
- }
-
- return($arrShort);
- }
-
-
- /**
- *
- * get array of slider id -> title
- */
- public function getArrSlidersShort($exceptID = null,$filterType = self::SLIDER_TYPE_ALL){
- $arrSliders = $this->getArrSliders();
- $arrShort = array();
- foreach($arrSliders as $slider){
- $id = $slider->getID();
- $isFromPosts = $slider->isSlidesFromPosts();
- $isTemplate = $slider->getParam("template","false");
-
- //filter by gallery only
- if($filterType == self::SLIDER_TYPE_POSTS && $isFromPosts == false)
- continue;
-
- if($filterType == self::SLIDER_TYPE_GALLERY && $isFromPosts == true)
- continue;
-
- //filter by template type
- if($filterType == self::SLIDER_TYPE_TEMPLATE && $isFromPosts == false)
- continue;
-
- //filter by except
- if(!empty($exceptID) && $exceptID == $id)
- continue;
-
- $title = $slider->getTitle();
- $arrShort[$id] = $title;
- }
- return($arrShort);
- }
-
- /**
- *
- * get array of sliders with slides, short, assoc.
- */
- public function getArrSlidersWithSlidesShort($filterType = self::SLIDER_TYPE_ALL){
- $arrSliders = self::getArrSlidersShort(null, $filterType);
-
- $output = array();
- foreach($arrSliders as $sliderID=>$sliderName){
- $slider = new RevSlider();
- $slider->initByID($sliderID);
-
- $isFromPosts = $slider->isSlidesFromPosts();
- $isTemplate = $slider->getParam("template","false");
-
- //filter by gallery only
- if($filterType == self::SLIDER_TYPE_POSTS && $isFromPosts == false)
- continue;
-
- if($filterType == self::SLIDER_TYPE_GALLERY && $isFromPosts == true)
- continue;
-
- //filter by template type
- if($filterType == self::SLIDER_TYPE_TEMPLATE && $isFromPosts == false) //$isTemplate == "false")
- continue;
-
- $sliderTitle = $slider->getTitle();
- $arrSlides = $slider->getArrSlidesFromGalleryShort();
-
- foreach($arrSlides as $slideID=>$slideName){
- $output[$slideID] = $sliderName.", ".$slideName;
- }
- }
-
- return($output);
- }
-
-
- /**
- *
- * get max order
- */
- public function getMaxOrder(){
- $this->validateInited();
- $maxOrder = 0;
- $arrSlideRecords = $this->db->fetch(RevSliderGlobals::$table_slides,$this->db->prepare("slider_id = %s", array($this->id)),"slide_order desc","","limit 1");
- if(empty($arrSlideRecords))
- return($maxOrder);
- $maxOrder = $arrSlideRecords[0]["slide_order"];
-
- return($maxOrder);
- }
-
- /**
- *
- * get setting - start with slide
- */
- public function getStartWithSlideSetting(){
-
- $numSlides = $this->getNumSlides();
-
- $startWithSlide = $this->getParam("start_with_slide","1");
- if(is_numeric($startWithSlide)){
- $startWithSlide = (int)$startWithSlide - 1;
- if($startWithSlide < 0)
- $startWithSlide = 0;
-
- if($startWithSlide >= $numSlides)
- $startWithSlide = 0;
-
- }else
- $startWithSlide = 0;
-
- return($startWithSlide);
- }
-
-
- /**
- * return if the slides source is from posts
- */
- public function isSlidesFromPosts(){
- $this->validateInited();
- $sourceType = $this->getParam("source_type","gallery");
- if($sourceType == "posts" || $sourceType == "specific_posts" || $sourceType == "current_post" || $sourceType == "woocommerce")
- return(true);
-
- return(false);
- }
-
-
- /**
- * return if the slides source is from stream
- */
- public function isSlidesFromStream(){
- $this->validateInited();
- $sourceType = $this->getParam("source_type","gallery");
- if($sourceType != "posts" && $sourceType != "specific_posts" && $sourceType != "current_post" && $sourceType != "woocommerce" && $sourceType != "gallery")
- return($sourceType);
-
- return(false);
- }
-
-
- /**
- *
- * get posts from categories (by the slider params).
- */
- private function getPostsFromCategories($publishedOnly = false){
- $this->validateInited();
-
- $catIDs = $this->getParam("post_category");
- $data = RevSliderFunctionsWP::getCatAndTaxData($catIDs);
-
- $taxonomies = $data["tax"];
- $catIDs = $data["cats"];
-
- $sortBy = $this->getParam("post_sortby",self::DEFAULT_POST_SORTBY);
- $sortDir = $this->getParam("posts_sort_direction",self::DEFAULT_POST_SORTDIR);
- $maxPosts = $this->getParam("max_slider_posts","30");
- if(empty($maxPosts) || !is_numeric($maxPosts))
- $maxPosts = -1;
-
- $postTypes = $this->getParam("post_types","any");
-
- //set direction for custom order
- if($sortBy == RevSliderFunctionsWP::SORTBY_MENU_ORDER)
- $sortDir = RevSliderFunctionsWP::ORDER_DIRECTION_ASC;
-
- //Events integration
- $arrAddition = array();
- if($publishedOnly == true)
- $arrAddition["post_status"] = RevSliderFunctionsWP::STATE_PUBLISHED;
-
- if(RevSliderEventsManager::isEventsExists()){
-
- $filterType = $this->getParam("events_filter",RevSliderEventsManager::DEFAULT_FILTER);
- $arrAddition = RevSliderEventsManager::getWPQuery($filterType, $sortBy);
- }
-
- $slider_id = $this->getID();
- $arrPosts = RevSliderFunctionsWP::getPostsByCategory($slider_id, $catIDs,$sortBy,$sortDir,$maxPosts,$postTypes,$taxonomies,$arrAddition);
-
- return($arrPosts);
- }
-
-
- /**
- * get related posts from current one
- * @since: 5.1.1
- */
- public function getPostsFromRelated(){
- $my_posts = array();
-
- $sortBy = $this->getParam("post_sortby",self::DEFAULT_POST_SORTBY);
- $sortDir = $this->getParam("posts_sort_direction",self::DEFAULT_POST_SORTDIR);
- $max_posts = $this->getParam("max_slider_posts","30");
- if(empty($max_posts) || !is_numeric($max_posts))
- $max_posts = -1;
-
- $post_id = get_the_ID();
-
- $tags_string = '';
- $post_tags = get_the_tags();
-
- if ($post_tags) {
- foreach ($post_tags as $post_tag) {
- $tags_string .= $post_tag->slug . ',';
- }
- }
-
- $query = array(
- 'exclude' => $post_id,
- 'numberposts' => $max_posts,
- 'order' => $sortDir,
- 'tag' => $tags_string
- );
-
- if(strpos($sortBy, "meta_num_") === 0){
- $metaKey = str_replace("meta_num_", "", $sortBy);
- $query["orderby"] = "meta_value_num";
- $query["meta_key"] = $metaKey;
- }else
- if(strpos($sortBy, "meta_") === 0){
- $metaKey = str_replace("meta_", "", $sortBy);
- $query["orderby"] = "meta_value";
- $query["meta_key"] = $metaKey;
- }else
- $query["orderby"] = $sortBy;
-
- $get_relateds = apply_filters('revslider_get_related_posts', $query, $post_id);
-
- $tag_related_posts = get_posts($get_relateds);
-
-
- if(count($tag_related_posts) < $max_posts){
- $ignore = array();
- foreach($tag_related_posts as $tag_related_post){
- $ignore[] = $tag_related_post->ID;
- }
- $article_categories = get_the_category($post_id);
- $category_string = '';
- foreach($article_categories as $category) {
- $category_string .= $category->cat_ID . ',';
- }
- $max = $max_posts - count($tag_related_posts);
-
- $excl = implode(',', $ignore);
- $query = array(
- 'exclude' => $excl,
- 'numberposts' => $max,
- 'category' => $category_string
- );
-
- if(strpos($sortBy, "meta_num_") === 0){
- $metaKey = str_replace("meta_num_", "", $sortBy);
- $query["orderby"] = "meta_value_num";
- $query["meta_key"] = $metaKey;
- }else
- if(strpos($sortBy, "meta_") === 0){
- $metaKey = str_replace("meta_", "", $sortBy);
- $query["orderby"] = "meta_value";
- $query["meta_key"] = $metaKey;
- }else
- $query["orderby"] = $sortBy;
-
- $get_relateds = apply_filters('revslider_get_related_posts', $query, $post_id);
- $cat_related_posts = get_posts($get_relateds);
-
- $tag_related_posts = $tag_related_posts + $cat_related_posts;
- }
-
- foreach($tag_related_posts as $post){
- $the_post = array();
-
- if(method_exists($post, "to_array"))
- $the_post = $post->to_array();
- else
- $the_post = (array)$post;
-
- if($the_post['ID'] == $post_id) continue;
-
- $my_posts[] = $the_post;
- }
-
- return $my_posts;
- }
-
-
- /**
- * get popular posts
- * @since: 5.1.1
- */
- public function getPostsFromPopular($max_posts = false){
- $post_id = get_the_ID();
-
- if($max_posts == false){
- $max_posts = $this->getParam("max_slider_posts","30");
- if(empty($max_posts) || !is_numeric($max_posts))
- $max_posts = -1;
- }else{
- $max_posts = intval($max_posts);
- }
- $my_posts = array();
-
- $args = array(
- 'post_type' => 'any',
- 'posts_per_page' => $max_posts,
- 'suppress_filters' => 0,
- 'meta_key' => '_thumbnail_id',
- 'orderby' => 'comment_count',
- 'order' => 'DESC'
- );
-
- $args = apply_filters('revslider_get_popular_posts', $args, $post_id);
- $posts = get_posts($args);
-
- foreach($posts as $post){
-
- if(method_exists($post, "to_array"))
- $my_posts[] = $post->to_array();
- else
- $my_posts[] = (array)$post;
- }
-
- return $my_posts;
- }
-
-
- /**
- * get recent posts
- * @since: 5.1.1
- */
- public function getPostsFromRecent($max_posts = false){
- $post_id = get_the_ID();
-
- if($max_posts == false){
- $max_posts = $this->getParam("max_slider_posts","30");
- if(empty($max_posts) || !is_numeric($max_posts))
- $max_posts = -1;
- }else{
- $max_posts = intval($max_posts);
- }
-
- $my_posts = array();
-
- $args = array(
- 'post_type' => 'any',
- 'posts_per_page' => $max_posts,
- 'suppress_filters' => 0,
- 'meta_key' => '_thumbnail_id',
- 'orderby' => 'date',
- 'order' => 'DESC'
- );
- $args = apply_filters('revslider_get_latest_posts', $args, $post_id);
-
- $posts = get_posts($args);
-
- foreach($posts as $post){
-
- if(method_exists($post, "to_array"))
- $my_posts[] = $post->to_array();
- else
- $my_posts[] = (array)$post;
- }
-
- return $my_posts;
- }
-
- /**
- * get recent posts
- * @since: 5.1.1
- */
- public function getPostsNextPrevious(){
- $my_posts = array();
-
- $startup_next_post = get_next_post();
- if (!empty( $startup_next_post )){
- if(method_exists($startup_next_post, "to_array"))
- $my_posts[] = $startup_next_post->to_array();
- else
- $my_posts[] = (array)$startup_next_post;
- }
- $startup_previous_post = get_previous_post();
- if (!empty( $startup_previous_post )){
- if(method_exists($startup_previous_post, "to_array"))
- $my_posts[] = $startup_previous_post->to_array();
- else
- $my_posts[] = (array)$startup_previous_post;
- }
-
- return $my_posts;
- }
-
-
- /**
- * get products from categories (by the slider params).
- * @since: 5.1.0
- */
- private function getProductsFromCategories($publishedOnly = false){
- $this->validateInited();
-
- $catIDs = $this->getParam("product_category");
- $data = RevSliderFunctionsWP::getCatAndTaxData($catIDs);
-
- $taxonomies = $data["tax"];
- $catIDs = $data["cats"];
-
- $sortBy = $this->getParam("product_sortby",self::DEFAULT_POST_SORTBY);
- $sortDir = $this->getParam("product_sort_direction",self::DEFAULT_POST_SORTDIR);
- $maxPosts = $this->getParam("max_slider_products","30");
- if(empty($maxPosts) || !is_numeric($maxPosts))
- $maxPosts = -1;
-
- $postTypes = $this->getParam("product_types","any");
-
- //set direction for custom order
- if($sortBy == RevSliderFunctionsWP::SORTBY_MENU_ORDER)
- $sortDir = RevSliderFunctionsWP::ORDER_DIRECTION_ASC;
-
- //Events integration
- $arrAddition = array();
- if($publishedOnly == true)
- $arrAddition["post_status"] = RevSliderFunctionsWP::STATE_PUBLISHED;
-
-
- $arrAddition = array_merge($arrAddition, RevSliderWooCommerce::getMetaQuery($this->getParams()));
-
- $slider_id = $this->getID();
- $arrPosts = RevSliderFunctionsWP::getPostsByCategory($slider_id, $catIDs,$sortBy,$sortDir,$maxPosts,$postTypes,$taxonomies,$arrAddition);
-
- return($arrPosts);
- }
-
-
- /**
- *
- * get posts from specific posts list
- */
- private function getPostsFromSpecificList($gal_ids = array()){
-
- $is_gal = false;
- $additional = array();
- if(!empty($gal_ids) && $gal_ids[0]){
- $strPosts = $gal_ids;
- $strPosts = apply_filters('revslider_set_posts_list_gal', $strPosts, $this->getID());
- $is_gal = true;
- }else{
- if(isset($gal_ids[0])){
- unset($gal_ids[0]);
- $strPosts = implode(",", $gal_ids);
- $additional['order'] = "none";
- $additional['orderby'] = "post__in";
- }else {
- $strPosts = $this->getParam("posts_list", "");
- $additional['order'] = $this->getParam("posts_sort_direction", "DESC");
- $additional['orderby'] = $this->getParam("post_sortby", "");
- }
- $strPosts = apply_filters('revslider_set_posts_list', $strPosts, $this->getID());
- }
-
- $slider_id = $this->getID();
-
- $arrPosts = RevSliderFunctionsWP::getPostsByIDs($strPosts, $slider_id, $is_gal, $additional);
- return($arrPosts);
- }
-
- /**
- * update sortby option
- */
- public function updatePostsSortbyFromData($data){
-
- $sliderID = RevSliderFunctions::getVal($data, "sliderID");
- $sortBy = RevSliderFunctions::getVal($data, "sortby");
- RevSliderFunctions::validateNotEmpty($sortBy,"sortby");
-
- $this->initByID($sliderID);
- $arrUpdate = array();
- $arrUpdate["post_sortby"] = $sortBy;
-
- $this->updateParam($arrUpdate);
- }
- /**
- *
- * replace image urls
- */
- public function replaceImageUrlsFromData($data){
-
- $sliderID = RevSliderFunctions::getVal($data, "sliderid");
- $urlFrom = RevSliderFunctions::getVal($data, "url_from");
- RevSliderFunctions::validateNotEmpty($urlFrom,"url from");
- $urlTo = RevSliderFunctions::getVal($data, "url_to");
-
- $this->initByID($sliderID);
-
- $arrSildes = $this->getSlides();
- foreach($arrSildes as $slide){
- $slide->replaceImageUrls($urlFrom, $urlTo);
- }
-
-
-
- $slide = new RevSlide();
- $staticID = $slide->getStaticSlideID($sliderID);
-
- if($staticID !== false){
- $slide->initByStaticID($staticID);
- $slide->replaceImageUrls($urlFrom, $urlTo, $staticID);
- }
- }
-
- public function resetSlideSettings($data){
- $sliderID = RevSliderFunctions::getVal($data, "sliderid");
-
- $this->initByID($sliderID);
-
- $arrSildes = $this->getSlides();
- foreach($arrSildes as $slide){
- $slide->reset_slide_values($data);
- }
- }
-
- public static function clear_error_in_string($m){
- return 's:'.strlen($m[2]).':"'.$m[2].'";';
- }
-
- }
- /**
- * old classname extends new one (old classnames will be obsolete soon)
- * @since: 5.0
- **/
- class RevSlider extends RevSliderSlider {}
- ?>
|