revslider.php 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. <?php
  2. /*
  3. Plugin Name: Slider Revolution
  4. Plugin URI: https://revolution.themepunch.com/
  5. Description: Slider Revolution - Premium responsive slider
  6. Author: ThemePunch
  7. Version: 5.4.8
  8. Author URI: https://themepunch.com
  9. */
  10. // If this file is called directly, abort.
  11. if ( ! defined( 'WPINC' ) ) {
  12. die;
  13. }
  14. if(class_exists('RevSliderFront')) {
  15. die('ERROR: It looks like you have more than one instance of Slider Revolution installed. Please remove additional instances for this plugin to work again.');
  16. }
  17. $revSliderVersion = '5.4.8';
  18. $revSliderAsTheme = false;
  19. $revslider_screens = array();
  20. $revslider_fonts = array();
  21. $rs_plugin_url = str_replace('index.php','',plugins_url( 'index.php', __FILE__ ));
  22. if(strpos($rs_plugin_url, 'http') === false) {
  23. $site_url = get_site_url();
  24. $rs_plugin_url = (substr($site_url, -1) === '/') ? substr($site_url, 0, -1). $rs_plugin_url : $site_url. $rs_plugin_url;
  25. }
  26. $rs_plugin_url = str_replace(array(chr(10), chr(13)), '', $rs_plugin_url);
  27. define('RS_PLUGIN_PATH', plugin_dir_path(__FILE__));
  28. define('RS_PLUGIN_FILE_PATH', __FILE__);
  29. define('RS_PLUGIN_URL', $rs_plugin_url);
  30. define('RS_PLUGIN_SLUG', apply_filters('set_revslider_slug', 'revslider'));
  31. define('RS_DEMO', false);
  32. if(isset($_GET['revSliderAsTheme'])){
  33. if($_GET['revSliderAsTheme'] == 'true'){
  34. update_option('revSliderAsTheme', 'true');
  35. }else{
  36. update_option('revSliderAsTheme', 'false');
  37. }
  38. }
  39. //set the RevSlider Plugin as a Theme. This hides the activation notice and the activation area in the Slider Overview
  40. function set_revslider_as_theme(){
  41. global $revSliderAsTheme;
  42. if(defined('REV_SLIDER_AS_THEME')){
  43. if(REV_SLIDER_AS_THEME == true)
  44. $revSliderAsTheme = true;
  45. }else{
  46. if(get_option('revSliderAsTheme', 'true') == 'true')
  47. $revSliderAsTheme = true;
  48. }
  49. }
  50. //include frameword files
  51. require_once(RS_PLUGIN_PATH . 'includes/framework/include-framework.php');
  52. //include bases
  53. require_once($folderIncludes . 'base.class.php');
  54. require_once($folderIncludes . 'elements-base.class.php');
  55. require_once($folderIncludes . 'base-admin.class.php');
  56. require_once($folderIncludes . 'base-front.class.php');
  57. //include product files
  58. require_once(RS_PLUGIN_PATH . 'includes/globals.class.php');
  59. require_once(RS_PLUGIN_PATH . 'includes/operations.class.php');
  60. require_once(RS_PLUGIN_PATH . 'includes/slider.class.php');
  61. require_once(RS_PLUGIN_PATH . 'includes/output.class.php');
  62. require_once(RS_PLUGIN_PATH . 'includes/slide.class.php');
  63. require_once(RS_PLUGIN_PATH . 'includes/widget.class.php');
  64. require_once(RS_PLUGIN_PATH . 'includes/navigation.class.php');
  65. require_once(RS_PLUGIN_PATH . 'includes/object-library.class.php');
  66. require_once(RS_PLUGIN_PATH . 'includes/template.class.php');
  67. require_once(RS_PLUGIN_PATH . 'includes/external-sources.class.php');
  68. require_once(RS_PLUGIN_PATH . 'includes/page-template.class.php');
  69. require_once(RS_PLUGIN_PATH . 'includes/tinybox.class.php');
  70. require_once(RS_PLUGIN_PATH . 'includes/extension.class.php');
  71. require_once(RS_PLUGIN_PATH . 'public/revslider-front.class.php');
  72. try{
  73. $rs_rsl = (isset($_GET['rs_refresh_server'])) ? true : false;
  74. $rslb = new RevSliderLoadBalancer();
  75. $GLOBALS['rslb'] = $rslb;
  76. $rslb->refresh_server_list($rs_rsl);
  77. //register the revolution slider widget
  78. RevSliderFunctionsWP::registerWidget('RevSliderWidget');
  79. //add shortcode
  80. function rev_slider_shortcode($args, $mid_content = null){
  81. extract(shortcode_atts(array('alias' => ''), $args, 'rev_slider'));
  82. extract(shortcode_atts(array('settings' => ''), $args, 'rev_slider'));
  83. extract(shortcode_atts(array('order' => ''), $args, 'rev_slider'));
  84. if($settings !== '') $settings = json_decode(str_replace(array('({', '})', "'"), array('[', ']', '"'), $settings) ,true);
  85. if($order !== '') $order = explode(',', $order);
  86. $sliderAlias = ($alias != '') ? $alias : RevSliderFunctions::getVal($args,0);
  87. $gal_ids = RevSliderFunctionsWP::check_for_shortcodes($mid_content); //check for example on gallery shortcode and do stuff
  88. ob_start();
  89. if(!empty($gal_ids)){ //add a gallery based slider
  90. $slider = RevSliderOutput::putSlider($sliderAlias, '', $gal_ids);
  91. }else{
  92. $slider = RevSliderOutput::putSlider($sliderAlias, '', array(), $settings, $order);
  93. }
  94. $content = ob_get_contents();
  95. ob_clean();
  96. ob_end_clean();
  97. if(!empty($slider)){
  98. // Do not output Slider if we are on mobile
  99. $disable_on_mobile = $slider->getParam("disable_on_mobile","off");
  100. if($disable_on_mobile == 'on'){
  101. $mobile = (strstr($_SERVER['HTTP_USER_AGENT'],'Android') || strstr($_SERVER['HTTP_USER_AGENT'],'webOS') || strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || strstr($_SERVER['HTTP_USER_AGENT'],'Windows Phone') || wp_is_mobile()) ? true : false;
  102. if($mobile) return false;
  103. }
  104. $show_alternate = $slider->getParam("show_alternative_type","off");
  105. if($show_alternate == 'mobile' || $show_alternate == 'mobile-ie8'){
  106. if(strstr($_SERVER['HTTP_USER_AGENT'],'Android') || strstr($_SERVER['HTTP_USER_AGENT'],'webOS') || strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || strstr($_SERVER['HTTP_USER_AGENT'],'Windows Phone') || wp_is_mobile()){
  107. $show_alternate_image = $slider->getParam("show_alternate_image","");
  108. return '<img class="tp-slider-alternative-image" src="'.$show_alternate_image.'" data-no-retina>';
  109. }
  110. }
  111. //handle slider output types
  112. $outputType = $slider->getParam("output_type","");
  113. switch($outputType){
  114. case "compress":
  115. $content = str_replace("\n", "", $content);
  116. $content = str_replace("\r", "", $content);
  117. return($content);
  118. break;
  119. case "echo":
  120. echo $content; //bypass the filters
  121. break;
  122. default:
  123. return($content);
  124. break;
  125. }
  126. }else
  127. return($content); //normal output
  128. }
  129. add_shortcode( 'rev_slider', 'rev_slider_shortcode' );
  130. /**
  131. * Call Extensions
  132. */
  133. $revext = new RevSliderExtension();
  134. add_action('plugins_loaded', array( 'RevSliderTinyBox', 'visual_composer_include' )); //VC functionality
  135. add_action('plugins_loaded', array( 'RevSliderPageTemplate', 'get_instance' ));
  136. if(is_admin()){ //load admin part
  137. require_once(RS_PLUGIN_PATH . 'includes/framework/update.class.php');
  138. require_once(RS_PLUGIN_PATH . 'includes/framework/newsletter.class.php');
  139. require_once(RS_PLUGIN_PATH . 'admin/revslider-admin.class.php');
  140. $productAdmin = new RevSliderAdmin(RS_PLUGIN_FILE_PATH);
  141. //add tiny box dropdown menu
  142. add_action('admin_head', array('RevSliderTinyBox', 'add_tinymce_editor'));
  143. }else{ //load front part
  144. /**
  145. *
  146. * put rev slider on the page.
  147. * the data can be slider ID or slider alias.
  148. */
  149. function putRevSlider($data,$putIn = ""){
  150. $operations = new RevSliderOperations();
  151. $arrValues = $operations->getGeneralSettingsValues();
  152. $includesGlobally = RevSliderFunctions::getVal($arrValues, "includes_globally","on");
  153. $strPutIn = RevSliderFunctions::getVal($arrValues, "pages_for_includes");
  154. $isPutIn = RevSliderOutput::isPutIn($strPutIn,true);
  155. if($isPutIn == false && $includesGlobally == "off"){
  156. $output = new RevSliderOutput();
  157. $option1Name = __("Include RevSlider libraries globally (all pages/posts)", 'revslider');
  158. $option2Name = __("Pages to include RevSlider libraries", 'revslider');
  159. $output->putErrorMessage(__("If you want to use the PHP function \"putRevSlider\" in your code please make sure to check \" ",'revslider').$option1Name.__(" \" in the backend's \"General Settings\" (top right panel). <br> <br> Or add the current page to the \"",'revslider').$option2Name.__("\" option box.", 'revslider'));
  160. return(false);
  161. }
  162. ob_start();
  163. $slider = RevSliderOutput::putSlider($data,$putIn);
  164. $content = ob_get_contents();
  165. ob_clean();
  166. ob_end_clean();
  167. if(is_object($slider)){
  168. $disable_on_mobile = @$slider->getParam("disable_on_mobile","off"); // Do not output Slider if we are on mobile
  169. if($disable_on_mobile == 'on'){
  170. $mobile = (strstr($_SERVER['HTTP_USER_AGENT'],'Android') || strstr($_SERVER['HTTP_USER_AGENT'],'webOS') || strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||strstr($_SERVER['HTTP_USER_AGENT'],'iPod') || strstr($_SERVER['HTTP_USER_AGENT'],'Windows Phone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPad') || wp_is_mobile()) ? true : false;
  171. if($mobile) return false;
  172. }
  173. }
  174. echo $content;
  175. }
  176. /**
  177. *
  178. * put rev slider on the page.
  179. * the data can be slider ID or slider alias.
  180. */
  181. function checkRevSliderExists($alias){
  182. $rev = new RevSlider();
  183. return $rev->isAliasExists($alias);
  184. }
  185. $productFront = new RevSliderFront(RS_PLUGIN_FILE_PATH);
  186. }
  187. add_action('plugins_loaded', array( 'RevSliderFront', 'createDBTables' )); //add update checks
  188. add_action('plugins_loaded', array( 'RevSliderPluginUpdate', 'do_update_checks' )); //add update checks
  189. }catch(Exception $e){
  190. $message = $e->getMessage();
  191. $trace = $e->getTraceAsString();
  192. echo _e("Revolution Slider Error:",'revslider')." <b>".$message."</b>";
  193. }
  194. ?>