مؤسسة الركن المكتبي التجارية تأسست على رؤية مُختلفة، تهدف إلى تقديم تجربة فريدة من نوعها في الأثاث المكتبي والفندقي لكي نضمن بيئة عمل توفر مساحات عمل مريحة وصحية، حيث نمتاز بخبراتنا الواسعة فأصبحت أحد أفضل المؤسسات الوطنية الرائدة في تجارة وصناعة الأثاث والتصميم الداخلي والسبّاقة على مستوى المملكة في المفروشات المكتبية والفندقية والمنزلية، نهدف الى خلق قيمة لعملائنا عن طريق توفير الجودة العالية في مقابل السعر المناسب.
منتجاتنا الجودة العالية في مقابل السعر المناسب
أغسطس 15, 2022
UX-антипаттерны в действии – Анализ скриншотов популярных онлайн-площадок Просматривая сотни скриншотов популярных онлайн-площадок, мы сразу же видим: навязчивое […]
يناير 1, 2023
Vavada рабочее зеркало вход для удобного доступа Vavada рабочее зеркало вход Чтобы получить моментальный доступ к любимым развлечениям, […]
مايو 29, 2023
Эпикстар казино играй и выигрывай без проблем онлайн Эпикстар казино играй и выигрывай онлайн без проблем Добро пожаловать […]
سبتمبر 16, 2023
Рацион 2025 год что ждет нас на столах Ключ к вашему рациону 2025 года – персонализация. Забудьте о […]
أكتوبر 16, 2023
Авто 2025 – Ваш выбор лучших моделей по всем классам Выберите свой идеальный автомобиль 2025 года. Наш гид […]
فبراير 6, 2025
فبراير 6, 2025
فبراير 6, 2025
أغسطس 15, 2022
UX-антипаттерны в действии – Анализ скриншотов популярных онлайн-площадок Просматривая сотни скриншотов популярных онлайн-площадок, мы сразу же видим: навязчивое […]
يناير 1, 2023
Vavada рабочее зеркало вход для удобного доступа Vavada рабочее зеркало вход Чтобы получить моментальный доступ к любимым развлечениям, […]
مايو 29, 2023
Эпикстар казино играй и выигрывай без проблем онлайн Эпикстар казино играй и выигрывай онлайн без проблем Добро пожаловать […]
سبتمبر 16, 2023
Рацион 2025 год что ждет нас на столах Ключ к вашему рациону 2025 года – персонализация. Забудьте о […]
أكتوبر 16, 2023
Авто 2025 – Ваш выбор лучших моделей по всем классам Выберите свой идеальный автомобиль 2025 года. Наш гид […]
فبراير 6, 2025
فبراير 6, 2025
فبراير 6, 2025
*(……&*6干sfa绅士的风度sfsdfd不打发打发死啊好办法
/home/officeco/public_html/wp-content/plugins/revslider/includes/api.class.php
<?php
/**
* @author ThemePunch <info@themepunch.com>
* @link https://www.themepunch.com/
* @copyright 2024 ThemePunch
*/
if(!defined('ABSPATH')) exit();
class RevSliderApi extends RevSliderFunctions {
private $global_settings = array();
public $demo_allowed = array('get_template_information_short', 'import_template_slider', 'install_template_slide', 'get_list_of', 'get_global_settings', 'get_full_slider_object', 'subscribe_to_newsletter', 'check_system', 'load_module', 'get_addon_list', 'get_layers_by_slide', 'silent_slider_update', 'get_help_directory', 'set_tooltip_preference', 'load_builder', 'load_library_object', 'get_tooltips');
public $user_allowed = array('activate_plugin', 'deactivate_plugin', 'import_template_slider', 'install_template_slide', 'import_slider', 'delete_slider', 'create_navigation_preset', 'delete_navigation_preset', 'save_navigation', 'delete_animation', 'save_animation', 'check_system', 'fix_database_issues', 'trigger_font_deletion');
public $no_cache = array('get_template_information_short', 'export_slider', 'export_slider_html', 'getSliderImage', 'getSliderSizeLayout', 'get_list_of', 'load_wordpress_object', 'get_global_settings', 'get_slides_by_slider_id', 'get_full_slider_object', 'load_builder', 'subscribe_to_newsletter', 'check_system', 'get_layers_by_slide', 'export_layer_group', 'load_wordpress_image', 'load_library_image', 'get_help_directory', 'get_tooltips', 'get_addons_sizes', 'get_v5_slider_list');
public $REST = false;
public function __construct(){
$this->add_actions();
$this->global_settings = $this->get_global_settings();
}
/**
* Add all actions that the backend needs here
**/
public function add_actions(){
add_action('wp_ajax_revslider_ajax_action', array($this, 'do_ajax_action')); //ajax response to save slider options.
add_action('wp_ajax_rs_ajax_action', array($this, 'do_ajax_action')); //ajax response to save slider options.
add_action('wp_ajax_revslider_ajax_call_front', array($this, 'do_front_ajax_action'));
add_action('wp_ajax_nopriv_revslider_ajax_call_front', array($this, 'do_front_ajax_action')); //for not logged in users
add_action('rest_api_init', array($this, 'init_rest_api'));
}
/**
* Init the REST API
**/
public function init_rest_api(){
/**
WP_REST_SERVER::READABLE = 'GET'
WP_REST_SERVER::CREATABLE = 'POST'
WP_REST_SERVER::EDITABLE = 'POST, PUT, PATCH'
WP_REST_SERVER::DELETABLE = 'DELETE'
WP_REST_SERVER::ALLMETHODS = 'GET, POST, PUT, PATCH, DELETE'
return $_SERVER['REQUEST_METHOD']
**/
//{"code":"rest_no_route","message":"Es wurde keine Route gefunden, die mit der URL und der Request-Methode identisch ist.","data":{"status":404}}
register_rest_route('sliderrevolution', '/sliders', array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => array($this, 'get_full_slider_object'),
'permission_callback' => array($this, 'setup_exception_handler')
));
register_rest_route('sliderrevolution', '/sliders/(?P<slider>[\w\-]+)', array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => array($this, 'get_full_slider_object'),
'permission_callback' => array($this, 'setup_exception_handler')
));
register_rest_route('sliderrevolution', '/sliders/slides/(?P<id>\d+)', array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => array($this, 'get_full_slider_object'),
'permission_callback' => array($this, 'setup_exception_handler')
));
//register_rest_route('sliderrevolution', '/sliders/stream/(?P<id>\d+)', array(
register_rest_route('sliderrevolution', '/sliders/stream/(?P<id>[0-9,]+)', array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => array($this, 'get_stream_data'),
'permission_callback' => array($this, 'setup_exception_handler')
));
register_rest_route('sliderrevolution', '/sliders/modal/(?P<slider>[\w\-]+)', array(
'methods' => WP_REST_SERVER::READABLE,
'callback' => array($this, 'get_slider_modal_data'),
'permission_callback' => array($this, 'setup_exception_handler')
));
}
public function set_rest_call(){
$this->REST = true;
}
public function is_rest_call(){
return $this->REST;
}
public function check_nonce(){
$this->setup_exception_handler();
$nonce = $this->get_request_var('nonce');
$nonce = (empty($nonce)) ? $this->get_request_var('rs-nonce') : $nonce;
if(wp_verify_nonce($nonce, 'revslider_actions') == false){
//check if it is wp nonce and if the action is refresh nonce
$this->ajax_response_error(__('Bad Request', 'revslider'));
exit;
}
$sr_admin = RevSliderGlobals::instance()->get('RevSliderAdmin');
if(!current_user_can($sr_admin->get_user_role()) && apply_filters('revslider_restrict_role', true)){
$this->ajax_response_error(__('Bad Request', 'revslider'));
exit;
}
return true;
}
public function setup_exception_handler(){
set_exception_handler(array($this, 'handle_rest_exceptions'));
return true;
}
public function handle_rest_exceptions(Throwable $exception){
//http_response_code(500);
//if(!$this->is_rest_call()) return;
$response = array(
'success' => false,
'message' => $exception->getMessage()
);
wp_send_json($response);
}
/**
* The Ajax Action part for backend actions only
**/
public function do_ajax_action(){
global $SR_GLOBALS;
$slider = new RevSliderSlider();
$slide = new RevSliderSlide();
$action = $this->get_request_var('client_action');
$nonce = $this->get_request_var('nonce');
$nonce = (empty($nonce)) ? $this->get_request_var('rs-nonce') : $nonce;
//for now, set also the data for ajax calls here, later to be removed!
$data = $this->get_request_var('data', '', false);
$data = ($data == '') ? array() : $data;
try{
if(RS_DEMO && !in_array($action, $this->demo_allowed)){
$this->ajax_response_error(__('Function Not Available in Demo Mode', 'revslider'));
exit;
}
$sr_admin = RevSliderGlobals::instance()->get('RevSliderAdmin');
if(!current_user_can($sr_admin->get_user_role()) && apply_filters('revslider_restrict_role', true)){
if(in_array($action, $this->user_allowed)){
$this->ajax_response_error(__('Function only available for administrators', 'revslider'));
exit;
}else{
$return = apply_filters('revslider_admin_onAjaxAction_user_restriction', true, $action, $data, $slider, $slide);
if($return !== true){
$this->ajax_response_error(__('Function only available for administrators', 'revslider'));
exit;
}
}
}
if(wp_verify_nonce($nonce, 'revslider_actions') == false){
//check if it is wp nonce and if the action is refresh nonce
$this->ajax_response_error(__('Bad Request', 'revslider'));
exit;
}
if(!in_array($action, $this->no_cache)) $this->flush_wp_cache();
switch($action){
/**
* new to v7 calls
**/
case 'save_slider_v7':
$this->save_slider();
break;
case 'clear_v7_tables':
$this->truncate_v7_tables();
break;
case 'set_v7_migration_failed':
$this->set_v7_migration_failed();
break;
case 'get_full_slider_object_v7':
$this->get_full_slider_object(false, false);
break;
/**
* The old ajax calls, all of these are not in the REST API yet
**/
case 'load_google_font':
$google_font = $this->get_val($data, 'font', '');
$this->download_collected_fonts($google_font);
$this->ajax_response_success('', '');
break;
case 'collect_google_fonts':
$page = $this->get_val($data, 'page', 1);
$return = $this->collect_used_fonts(true, true, $page);
$this->ajax_response_data($return);
break;
case 'delete_full_fonts_cache':
$this->delete_google_fonts();
$this->ajax_response_success(__('Successfully deleted all fonts cache', 'revslider'));
break;
case 'activate_plugin':
$result = false;
$code = trim($this->get_val($data, 'code'));
$selling = $this->get_addition('selling');
$rs_license = new RevSliderLicense();
if(!empty($code)){
$result = $rs_license->activate_plugin($code);
}else{
$error = ($selling === true) ? __('The License Key needs to be set!', 'revslider') : __('The Purchase Code needs to be set!', 'revslider');
$this->ajax_response_error($error);
exit;
}
if($result === true){
$this->ajax_response_success(__('Plugin successfully activated', 'revslider'));
}elseif($result === false){
$error = ($selling === true) ? __('License Key is invalid', 'revslider') : __('Purchase Code is invalid', 'revslider');
$this->ajax_response_error($error);
}else{
if($result == 'exist'){
$error = ($selling === true) ? __('License Key already registered!', 'revslider') : __('Purchase Code already registered!', 'revslider');
$this->ajax_response_error($error);
}elseif($result == 'banned'){
$error = ($selling === true) ? __('License Key was locked, please contact the ThemePunch support!', 'revslider') : __('Purchase Code was locked, please contact the ThemePunch support!', 'revslider');
$this->ajax_response_error($error);
}
$error = ($selling === true) ? __('License Key could not be validated', 'revslider') : __('Purchase Code could not be validated', 'revslider');
$this->ajax_response_error($error);
}
break;
case 'deactivate_plugin':
$rs_license = new RevSliderLicense();
$result = $rs_license->deactivate_plugin();
if($result){
$this->ajax_response_success(__('Plugin deregistered', 'revslider'));
}else{
$this->ajax_response_error(__('Deregistration failed!', 'revslider'));
}
break;
case 'close_deregister_popup':
update_option('revslider-deregister-popup', 'false');
$this->ajax_response_success(__('Saved', 'revslider'));
break;
case 'deactivate_trustpilot':
update_option('revslider-trustpilot', 'false');
$this->ajax_response_success(__('Saved', 'revslider'));
break;
case 'dismiss_dynamic_notice':
$ids = $this->get_val($data, 'id', array());
$notices_discarded = get_option('revslider-notices-dc', array());
if(!empty($ids)){
foreach($ids as $_id){
$notices_discarded[] = esc_attr(trim($_id));
}
update_option('revslider-notices-dc', $notices_discarded);
}
$this->ajax_response_success(__('Saved', 'revslider'));
break;
case 'check_for_updates':
$update = new RevSliderUpdate(RS_REVISION);
$update->force = true;
$update->_retrieve_version_info();
$version = get_option('revslider-latest-version', RS_REVISION);
if($version !== false){
$this->ajax_response_data(array('version' => $version));
}else{
$this->ajax_response_error(__('Connection to Update Server Failed', 'revslider'));
}
break;
case 'get_template_information_short':
$templates = new RevSliderTemplate();
$sliders = $templates->get_tp_template_sliders();
$this->ajax_response_data(array('templates' => $sliders));
break;
case 'import_template_slider': //before: import_slider_template_slidersview
$uid = $this->get_val($data, 'uid');
$sliderID = intval($this->get_val($data, 'sliderid', 0));
$templates = new RevSliderTemplate();
$filepath = $templates->_download_template($uid);
if($filepath !== false){
$templates->remove_old_template($uid);
$slider = new RevSliderSliderImport();
$return = $slider->import_slider(false, $filepath, $uid, false, true);
if($this->get_val($return, 'success') == true){
$new_id = $this->get_val($return, 'sliderID');
if(intval($new_id) > 0){
$map = $this->get_val($return, 'map', array());
$folder_id = $this->get_val($data, 'folderid', -1);
if(intval($folder_id) > 0){
$folder = new RevSliderFolder();
$folder->add_slider_to_folder($new_id, $folder_id, false);
}
$new_slider = new RevSliderSlider();
$new_slider->init_by_id($new_id);
$data = $new_slider->get_overview_data();
$hiddensliderid = $templates->get_slider_id_by_uid($uid);
$templates->_delete_template($uid); //delete template file
$this->ajax_response_data(array('slider' => $data, 'hiddensliderid' => $hiddensliderid, 'map' => $map, 'uid' => $uid));
}
}
$templates->_delete_template($uid); //delete template file
$error = ($this->get_val($return, 'error') !== '') ? $this->get_val($return, 'error') : __('Slider Import Failed', 'revslider');
$this->ajax_response_error($error);
}
$this->ajax_response_error(__('Template Slider Import Failed', 'revslider'));
break;
case 'install_template_slide':
$template = new RevSliderTemplate();
$slider_id = intval($this->get_val($data, 'slider_id'));
$slide_id = intval($this->get_val($data, 'slide_id'));
if($slider_id == 0 || $slide_id == 0){
}else{
$new_slide_id = $slide->duplicate_slide_by_id($slide_id, $slider_id);
if($new_slide_id !== false){
$slide->init_by_id($new_slide_id);
$_slides[] = array(
'order' => $slide->get_order(),
'params' => $slide->get_params(),
'layers' => $slide->get_layers(),
'id' => $slide->get_id(),
);
$this->ajax_response_data(array('slides' => $_slides));
}
}
$this->ajax_response_error(__('Slide duplication failed', 'revslider'));
break;
case 'import_slider':
$import = new RevSliderSliderImport();
$return = $import->import_slider();
if($this->get_val($return, 'success') == true){
$new_id = $this->get_val($return, 'sliderID');
if(intval($new_id) > 0){
$folder = new RevSliderFolder();
$folder_id = $this->get_val($data, 'folderid', -1);
if(intval($folder_id) > 0){
$folder->add_slider_to_folder($new_id, $folder_id, false);
}
$new_slider = new RevSliderSlider();
$new_slider->init_by_id($new_id);
$data = $new_slider->get_overview_data();
$this->ajax_response_data(array('slider' => $data, 'hiddensliderid' => $new_id));
}
}
$error = ($this->get_val($return, 'error') !== '') ? $this->get_val($return, 'error') : __('Slider Import Failed', 'revslider');
$this->ajax_response_error($error);
break;
case 'add_to_media_library':
$sr_admin = RevSliderGlobals::instance()->get('RevSliderAdmin');
$return = $sr_admin->import_upload_media();
if($this->get_val($return, 'error', false) !== false){
$this->ajax_response_error($this->get_val($return, 'error', false));
}else{
$this->ajax_response_data($return);
}
break;
case 'adjust_modal_ids':
$map = $this->get_val($data, 'map', array());
if(!empty($map)){
$slider_ids = $this->get_val($map, 'slider_map', array());
$slides_ids = $this->get_val($map, 'slides_map', array());
$ztt = $this->get_val($slider_ids, 'zip_to_template', array());
$s_a = array();
if(!empty($slides_ids)){
foreach($slides_ids as $k => $v){
if(is_array($v)){
foreach($v as $vk => $vv){
$s_a[$vk] = $vv;
}
unset($slides_ids[$k]);
}
}
}
if(!empty($ztt)){
foreach($ztt as $old => $new){
$slider = new RevSliderSliderImport();
$slider->init_by_id($new);
$slider->update_modal_ids($ztt, $slides_ids);
}
}
$this->ajax_response_data(array());
}else{
$this->ajax_response_error(__('Slider Map Empty', 'revslider'));
}
break;
case 'adjust_js_css_ids':
$map = $this->get_val($data, 'map', array());
if(!empty($map)){
$slider_map = array();
foreach($map as $m){
$slider_ids = $this->get_val($m, 'slider_map', array());
if(!empty($slider_ids)){
foreach($slider_ids as $old => $new){
$slider = new RevSliderSliderImport();
$slider->init_by_id($new);
$slider_map[] = $slider;
}
}
}
if(!empty($slider_map)){
foreach($slider_map as $slider){
foreach($map as $m){
$slider_ids = $this->get_val($m, 'slider_map', array());
$slide_ids = $this->get_val($m, 'slide_map', array());
if(!empty($slider_ids)){
foreach($slider_ids as $old => $new){
$slider->update_css_and_javascript_ids($old, $new, $slide_ids);
}
}
}
}
}
}
break;
case 'export_slider':
$export = new RevSliderSliderExport();
$id = intval($this->get_request_var('id'));
$export->export_slider($id);
//will never be called if all is good
$this->ajax_response_error(__('Slider Export Error!!!', 'revslider'));
break;
case 'export_slider_html':
$export = new RevSliderSliderExportHtml();
$id = intval($this->get_request_var('id'));
$export->export_slider_html($id);
//will never be called if all is good
$this->ajax_response_error(__('Slider HTML Export Error!!!', 'revslider'));
break;
case 'delete_slider':
$id = $this->get_val($data, 'id');
$slider->init_by_id($id);
$slider->delete_slider();
$this->ajax_response_success(__('Slider Deleted', 'revslider'));
break;
case 'duplicate_slider':
$id = $this->get_val($data, 'id');
$new_id = $slider->duplicate_slider_by_id($id);
if(intval($new_id) > 0){
$new_slider = new RevSliderSlider();
$new_slider->init_by_id($new_id);
$data = $new_slider->get_overview_data();
$this->ajax_response_data(array('slider' => $data));
}
$this->ajax_response_error(__('Duplication Failed', 'revslider'));
break;
case 'save_slide':
$slide_id = $this->get_val($data, 'slide_id');
$slider_id = $this->get_val($data, 'slider_id');
$return = $slide->save_slide($slide_id, $data, $slider_id);
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_transients_by_slider($slider_id);
if($return){
$v7_slider_map = $this->get_v7_slider_map($slider_id);
$this->ajax_response_data(array('v7' => $v7_slider_map));
}else{
$this->ajax_response_error(__('Slide not found', 'revslider'));
}
break;
case 'save_slide_advanced':
$slide_id = $this->get_val($data, 'slide_id');
$slider_id = $this->get_val($data, 'slider_id');
$return = $slide->save_slide_advanced($slide_id, $data, $slider_id);
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_transients_by_slider($slider_id);
if($return){
$this->ajax_response_success(__('Slide Saved', 'revslider'));
}else{
$this->ajax_response_error(__('Slide not found', 'revslider'));
}
break;
case 'save_slider':
$slider_id = $this->get_val($data, 'slider_id');
$slide_ids = $this->get_val($data, 'slide_ids', array());
$return = $slider->save_slider($slider_id, $data);
$missing_slides = array();
$delete_slides = array();
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_transients_by_slider($slider_id);
if($return === false) $this->ajax_response_error(__('Slider not found', 'revslider'));
if(!empty($slide_ids)){
$slides = $slider->get_slides(false, true);
//get the missing Slides (if any at all)
foreach($slide_ids as $slide_id){
foreach($slides as $_slide){
if($_slide->get_id() !== $slide_id) continue;
$missing_slides[] = $slide_id;
break;
}
}
//get the Slides that are no longer needed and delete them
$existing_slide_ids = array();
foreach($slides as $key => $_slide){
$id = $_slide->get_id();
if(!in_array($id, $slide_ids)){
$delete_slides[] = $id;
}else{
$existing_slide_ids[] = $id;
}
}
foreach($slides as $key => $_slide){
//check if the parentID exists in the $slides, if not remove this child slide
$parentID = $_slide->get_param(array('child', 'parentId'), false);
if($parentID !== false){
if(!in_array($parentID, $existing_slide_ids)){
$slid = $_slide->get_id();
if(!in_array($slid, $delete_slides)){
$delete_slides[] = $slid;
}
}
}
}
if(!empty($delete_slides)){
//check for parentID's and if they exist, if the parentID will be deleted
foreach($slides as $key => $_slide){
//params -> child -> parentID
$parentID = $_slide->get_param(array('child', 'parentId'), false);
$child = $_slide->get_param(array('child'), false);
if($parentID !== false){
if(in_array($parentID, $delete_slides)){
$delete_slides[] = $_slide->get_id();
}
}
}
foreach($slides as $key => $_slide){
$id = $_slide->get_id();
if(in_array($id, $delete_slides)){
unset($slides[$key]); //remove none existing slides for further ordering process
}
}
foreach($delete_slides as $delete_slide){
$slide->delete_slide_by_id($delete_slide);
}
}
//change the order of slides
$slide = new RevSliderSlide();
foreach($slide_ids as $order => $id){
$new_order = $order + 1;
$slide->change_slide_order($id, $new_order);
}
}
$v7_slider_map = $this->get_v7_slider_map($slider_id);
$trans_ids = $this->get_val($data, 'trans_ids');
if(!empty($trans_ids)){
foreach($trans_ids ?? [] as $t_id){
$t_v7id = $this->get_v7_slider_map(false, $t_id);
if(intval($t_v7id) === 0) continue;
if(!isset($v7_slider_map['n'])) $v7_slider_map['n'] = array();
$v7_slider_map['n'][$t_id] = $t_v7id;
}
}
$this->ajax_response_data(array('missing' => $missing_slides, 'delete' => $delete_slides, 'v7' => $v7_slider_map));
break;
case 'delete_slide':
$slide_id = intval($this->get_val($data, 'slide_id', ''));
if($slide_id > 0){
$slide->init_by_id($slide_id);
$slider_id = $slide->get_slider_id();
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_transients_by_slider($slider_id);
}
$return = ($slide_id > 0) ? $slide->delete_slide_by_id($slide_id) : false;
if($return !== false){
$this->ajax_response_success(__('Slide deleted', 'revslider'));
}else{
$this->ajax_response_error(__('Slide could not be deleted', 'revslider'));
}
break;
case 'duplicate_slide':
$slide_id = intval($this->get_val($data, 'slide_id', ''));
$slider_id = intval($this->get_val($data, 'slider_id', ''));
$new_slide_id = $slide->duplicate_slide_by_id($slide_id, $slider_id);
if($new_slide_id !== false){
$slide->init_by_id($new_slide_id);
$_slide = $slide->get_overview_data();
$this->ajax_response_data(array('slide' => $_slide));
}else{
$this->ajax_response_error(__('Slide could not duplicated', 'revslider'));
}
break;
case 'update_slide_order':
$slide_ids = $this->get_val($data, 'slide_ids', array());
//change the order of slides
if(!empty($slide_ids)){
$init = false;
foreach($slide_ids as $order => $id){
if($init === false){
$slide->init_by_id($id);
$init = true;
}
$new_order = $order + 1;
$slide->change_slide_order($id, $new_order);
}
$slider_id = $slide->get_slider_id();
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_transients_by_slider($slider_id);
$this->ajax_response_success(__('Slide order changed', 'revslider'));
}else{
$this->ajax_response_error(__('Slide order could not be changed', 'revslider'));
}
break;
case 'getSliderImage':
// Available Sliders
$slider = new RevSliderSlider();
$arrSliders = $slider->get_sliders();
// Given Alias
$alias = $this->get_val($data, 'alias');
$return = array_search($alias,$arrSliders);
foreach($arrSliders as $sliderony){
if($sliderony->get_alias() != $alias) continue;
$slider_found = $sliderony->get_overview_data();
$return = $this->get_val($slider_found, array('bg', 'src'));
$title = $this->get_val($slider_found, 'title');
$premium_state = $this->get_val($slider_found, 'premium');
break;
}
if(!$return) $return = '';
if(!empty($title)){
$this->ajax_response_data(array('image' => $return, 'title' => $title, 'premium' => $premium_state));
}else{
$this->ajax_response_error( __('The Slider with the alias "' . $alias . '" is not available!', 'revslider') );
}
break;
case 'getSliderSizeLayout':
// Available Sliders
$slider = new RevSliderSlider();
$arrSliders = $slider->get_sliders();
// Given Alias
$alias = $this->get_val($data, 'alias');
$return = array_search($alias, $arrSliders);
$title = '';
foreach($arrSliders as $sliderony){
if($sliderony->get_alias() == $alias){
$slider_found = $sliderony->get_overview_data();
$return = $slider_found['size'];
$title = $slider_found['title'];
}
}
$this->ajax_response_data(array('layout' => $return, 'title' => $title));
break;
case 'get_list_of':
$type = $this->get_val($data, 'type');
switch($type){
case 'sliders':
$slider = new RevSliderSlider();
$arrSliders = $slider->get_sliders();
$return = array();
foreach($arrSliders as $sliderony){
$return[$sliderony->get_id()] = array('slug' => $sliderony->get_alias(), 'title' => $sliderony->get_title(), 'type' => $sliderony->get_type(), 'subtype' => $sliderony->get_param(array('source', 'post', 'subType'), false));
}
$this->ajax_response_data(array('sliders' => $return));
break;
case 'pages':
$pages = get_pages(array());
$return = array();
foreach($pages as $page){
if(!$page->post_password){
$return[$page->ID] = array('slug' => $page->post_name, 'title' => $page->post_title);
}
}
$this->ajax_response_data(array('pages' => $return));
break;
case 'posttypes':
$args = array(
'public' => true,
'_builtin' => false,
);
$output = 'objects';
$operator = 'and';
$post_types = get_post_types($args, $output, $operator);
$return['post'] = array('slug' => 'post', 'title' => __('Posts', 'revslider'));
foreach($post_types as $post_type){
$return[$post_type->rewrite['slug']] = array('slug' => $post_type->rewrite['slug'], 'title' => $post_type->labels->name);
if(!in_array($post_type->name, array('post', 'page', 'attachment', 'revision', 'nav_menu_item', 'custom_css', 'custom_changeset', 'user_request'))){
$taxonomy_objects = get_object_taxonomies($post_type->name, 'objects');
if(!empty($taxonomy_objects)){
$return[$post_type->rewrite['slug']]['tax'] = array();
foreach($taxonomy_objects as $name => $tax){
$return[$post_type->rewrite['slug']]['tax'][$name] = $tax->label;
}
}
}
}
$this->ajax_response_data(array('posttypes' => $return));
break;
}
break;
case 'load_wordpress_object':
$id = $this->get_val($data, 'id', 0);
$type = $this->get_val($data, 'type', 'full');
$file = wp_get_attachment_image_src($id, $type);
if($file !== false){
$this->ajax_response_data(array('url' => $this->get_val($file, 0)));
}else{
$this->ajax_response_error(__('File could not be loaded', 'revslider'));
}
break;
case 'get_global_settings':
$this->ajax_response_data(array('global_settings' => $this->global_settings));
break;
case 'update_global_settings':
$global = $this->get_val($data, 'global_settings', array());
if(!empty($global)){
$update = $this->get_val($data, 'update', false);
$return = $this->set_global_settings($global, $update);
if($return === true){
$this->ajax_response_success(__('Global Settings saved/updated', 'revslider'));
}else{
$this->ajax_response_error(__('Global Settings not saved/updated', 'revslider'));
}
}else{
$this->ajax_response_error(__('Global Settings not saved/updated', 'revslider'));
}
break;
case 'create_navigation_preset':
$nav = new RevSliderNavigation();
$return = $nav->add_preset($data);
if($return === true){
$this->ajax_response_success(__('Navigation preset saved/updated', 'revslider'), array('navs' => $nav->get_all_navigations_builder()));
}else{
if($return === false){
$return = __('Preset could not be saved/values are the same', 'revslider');
}
$this->ajax_response_error($return);
}
break;
case 'delete_navigation_preset':
$nav = new RevSliderNavigation();
$return = $nav->delete_preset($data);
if($return === true){
$this->ajax_response_success(__('Navigation preset deleted', 'revslider'), array('navs' => $nav->get_all_navigations_builder()));
}else{
if($return === false){
$return = __('Preset not found', 'revslider');
}
$this->ajax_response_error($return);
}
break;
case 'save_navigation': //also deletes if requested
$_nav = new RevSliderNavigation();
$navs = (array) $this->get_val($data, 'navs', array());
$delete_navs = (array) $this->get_val($data, 'delete', array());
if(!empty($delete_navs)){
foreach($delete_navs as $dnav){
$_nav->delete_navigation($dnav);
}
}
if(!empty($navs)){
$_nav->create_update_full_navigation($navs);
}
$navigations = $_nav->get_all_navigations_builder();
$this->ajax_response_data(array('navs' => $navigations));
break;
case 'delete_animation':
$animation_id = $this->get_val($data, 'id');
$return = $sr_admin->delete_animation($animation_id);
if($return){
$this->ajax_response_success(__('Animation deleted', 'revslider'));
}else{
$this->ajax_response_error(__('Deletion failed', 'revslider'));
}
break;
case 'save_animation':
$id = $this->get_val($data, 'id', false);
$type = $this->get_val($data, 'type', 'in');
$animation = $this->get_val($data, 'obj');
if($id !== false){
$return = $sr_admin->update_animation($id, $animation, $type);
}else{
$return = $sr_admin->insert_animation($animation, $type);
}
if(intval($return) > 0){
$this->ajax_response_data(array('id' => $return));
} elseif($return === true){
$this->ajax_response_success(__('Animation saved', 'revslider'));
}else{
if($return == false){
$this->ajax_response_error(__('Animation could not be saved', 'revslider'));
}
$this->ajax_response_error($return);
}
break;
case 'get_slides_by_slider_id':
$sid = intval($this->get_val($data, 'id'));
$slides = array();
$_slides = $slide->get_slides_by_slider_id($sid);
if(!empty($_slides)){
foreach($_slides as $slide){
$slides[] = $slide->get_overview_data();
}
}
$this->ajax_response_data(array('slides' => $slides));
break;
case 'get_full_slider_object':
$slide_id = $this->get_val($data, 'id');
$slide_id = RevSliderFunctions::esc_attr_deep($slide_id);
$slider_alias = $this->get_val($data, 'alias', '');
$slider_alias = RevSliderFunctions::esc_attr_deep($slider_alias);
if($slider_alias !== ''){
$slider->init_by_alias($slider_alias);
$slider_id = $slider->get_id();
}else{
if(strpos($slide_id, 'slider-') !== false){
$slider_id = str_replace('slider-', '', $slide_id);
}else{
$slide->init_by_id($slide_id);
$slider_id = $slide->get_slider_id();
if(intval($slider_id) == 0){
$this->ajax_response_error(__('Slider could not be loaded', 'revslider'));
}
}
$slider->init_by_id($slider_id);
}
if($slider->inited === false){
$this->ajax_response_error(__('Slider could not be loaded', 'revslider'));
}
//check if an update is needed
if(version_compare($slider->get_param(array('settings', 'version')), get_option('revslider_update_version', '6.0.0'), '<')){
$upd = new RevSliderPluginUpdate();
$upd->upgrade_slider_to_latest($slider);
$slider->init_by_id($slider_id);
}
//create static Slide if the Slider not yet has one
$static_slide_id = $slide->get_static_slide_id($slider_id);
$static_slide_id = (intval($static_slide_id) === 0) ? $slide->create_slide($slider_id, '', true) : $static_slide_id;
$static_slide = false;
if(intval($static_slide_id) > 0){
$static_slide = new RevSliderSlide();
$static_slide->init_by_static_id($static_slide_id);
}
$slides = $slider->get_slides();
$_slides = array();
$_static_slide = array();
foreach($slides ?? [] as $s){
$_slides[] = array(
'order' => $s->get_order(),
'params' => $s->get_params(),
'layers' => $s->get_layers(),
'id' => $s->get_id(),
);
}
if(!empty($static_slide)){
$_static_slide = array(
'params' => $static_slide->get_params(),
'layers' => $static_slide->get_layers(),
'id' => $static_slide->get_id(),
);
}
$obj = array(
'id' => $slider_id,
'alias' => $slider->get_alias(),
'title' => $slider->get_title(),
'slider_params' => $slider->get_params(),
'slider_settings' => $slider->get_settings(),
'slides' => $_slides,
'static_slide' => $_static_slide,
);
$uid = $this->get_val($obj, array('slider_params', 'uid'));
if(!empty($uid)){
$templates = new RevSliderTemplate();
$rslb = RevSliderGlobals::instance()->get('RevSliderLoadBalancer');
$temp_url = $rslb->get_url('templates', 0, true).'/'.$templates->templates_server_path;
$defaults = $this->get_addition(array('templates', 'guide'));
$template_data = $templates->get_tp_template_sliders($uid);
if(!empty($template_data)){
foreach($template_data as $data){
$title = $this->get_val($data, 'guide_title');
$url = $this->get_val($data, 'guide_url');
$img = $this->get_val($data, 'guide_img');
$template_img = $this->get_val($data, 'img');
$obj['guide'] = array(
'title' => (empty($title)) ? $this->get_val($defaults, 'title') : $title,
'url' => (empty($url)) ? $this->get_val($defaults, 'url') : $url,
'img' => (empty($img)) ? $this->get_val($defaults, 'img') : $temp_url.'/'.$img,
'template_img' => (empty($template_img)) ? $this->get_val($defaults, 'img') : $template_img,
'template_title'=> $this->get_val($data, 'title'),
);
break;
}
}
}
$this->ajax_response_data($obj);
break;
case 'load_builder':
ob_start();
require_once(RS_PLUGIN_PATH . 'admin/views/builder.php');
$builder = ob_get_contents();
ob_clean();
ob_end_clean();
$this->ajax_response_data($builder);
break;
case 'create_slider_folder':
$folder = new RevSliderFolder();
$title = $this->get_val($data, 'title', __('New Folder', 'revslider'));
$parent = $this->get_val($data, 'parentFolder', 0);
$new = $folder->create_folder($title, $parent);
if($new !== false){
$overview_data = $new->get_overview_data();
$this->ajax_response_data(array('folder' => $overview_data));
}else{
$this->ajax_response_error(__('Folder Creation Failed', 'revslider'));
}
break;
case 'delete_slider_folder':
$id = $this->get_val($data, 'id');
$folder = new RevSliderFolder();
$is = $folder->init_folder_by_id($id);
if($is === true){
$folder->delete_slider();
$this->ajax_response_success(__('Folder Deleted', 'revslider'));
}else{
$this->ajax_response_error(__('Folder Deletion Failed', 'revslider'));
}
break;
case 'update_slider_tags':
$id = $this->get_val($data, 'id');
$tags = $this->get_val($data, 'tags');
$return = $slider->update_slider_tags($id, $tags);
if($return == true){
$this->ajax_response_success(__('Tags Updated', 'revslider'));
}else{
$this->ajax_response_error(__('Failed to Update Tags', 'revslider'));
}
break;
case 'save_slider_folder':
$folder = new RevSliderFolder();
$children = $this->get_val($data, 'children');
$folder_id = $this->get_val($data, 'id');
$return = $folder->add_slider_to_folder($children, $folder_id);
if($return == true){
$this->ajax_response_success(__('Slider Moved to Folder', 'revslider'));
}else{
$this->ajax_response_error(__('Failed to Move Slider Into Folder', 'revslider'));
}
break;
case 'update_slider_name':
case 'update_folder_name':
$slider_id = $this->get_val($data, 'id');
$new_title = $this->get_val($data, 'title');
$slider->init_by_id($slider_id, $new_title);
$return = $slider->update_title($new_title);
if($return != false){
$this->ajax_response_success(__('Title updated', 'revslider'), array('title' => $return));
}else{
$this->ajax_response_error(__('Failed to update Title', 'revslider'));
}
break;
case 'preview_slider':
$slider_id = $this->get_val($data, 'id');
$slider_data = $this->get_val($data, 'data');
$title = __('Slider Revolution Preview', 'revslider');
global $SR_GLOBALS;
$SR_GLOBALS['preview_mode'] = true;
if(intval($slider_id) > 0 && empty($slider_data)){
$slider->init_by_id($slider_id);
//check if an update is needed
if(version_compare($slider->get_param(array('settings', 'version')), get_option('revslider_update_version', '6.0.0'), '<')){
$upd = new RevSliderPluginUpdate();
$upd->upgrade_slider_to_latest($slider);
$slider->init_by_id($slider_id);
}
$content = '[rev_slider alias="' . esc_attr($slider->get_alias()) . '"][/rev_slider]';
}elseif(!empty($slider_data)){
$_slides = array();
$_static = array();
$slides = array();
$static_slide = array();
$_slider = array(
'id' => $slider_id,
'title' => 'Preview',
'alias' => 'preview',
'settings' => json_encode(array('version' => RS_REVISION)),
'params' => stripslashes($this->get_val($slider_data, 'slider'))
);
$slide_order = json_decode(stripslashes($this->get_val($slider_data, array('slide_order'))), true);
foreach($slider_data as $sk => $sd){
if(in_array($sk, array('slider', 'slide_order'), true)) continue;
if(strpos($sk, 'static_') !== false){
$_static = array(
'params' => stripslashes($this->get_val($sd, 'params')),
'layers' => stripslashes($this->get_val($sd, 'layers')),
);
}else{
$_slides[$sk] = array(
'id' => $sk,
'slider_id' => $slider_id,
'slide_order' => array_search($sk, $slide_order),
'params' => stripslashes($this->get_val($sd, 'params')),
'layers' => stripslashes($this->get_val($sd, 'layers')),
'settings' => array('version' => RS_REVISION)
);
}
}
$slider->set_slides($_slides);
$output = new RevSliderOutput();
$output->set_preview_mode(true);
$slider->init_by_data($_slider);
if($slider->is_stream() || $slider->is_posts()){
$slides = $slider->get_slides_for_output();
}else{
if(!empty($_slides)){
//reorder slides
usort($_slides, function($a, $b) {
return $a['slide_order'] - $b['slide_order'];
});
foreach($_slides as $_slide){
$slide = new RevSliderSlide();
$slide->init_by_data($_slide);
if($slide->get_param(array('publish', 'state'), 'published') === 'unpublished') continue;
$slides[] = $slide;
}
}
}
if(!empty($_static)){
$slide = new RevSliderSlide();
$slide->init_by_data($_static);
$static_slide = $slide;
}
$output->set_slider($slider);
$output->set_current_slides($slides);
$output->set_static_slide($static_slide);
ob_start();
$slider = $output->add_slider_to_stage($slider_id);
$content = ob_get_contents();
ob_clean();
ob_end_clean();
}
//get dimensions of slider
$size = array(
'width' => $slider->get_param(array('size', 'width'), array()),
'height' => $slider->get_param(array('size', 'height'), array()),
'custom' => $slider->get_param(array('size', 'custom'), array())
);
if(empty($size['width'])){
$size['width'] = array(
'd' => $this->get_val($this->global_settings, array('size', 'desktop'), '1240'),
'n' => $this->get_val($this->global_settings, array('size', 'notebook'), '1024'),
't' => $this->get_val($this->global_settings, array('size', 'tablet'), '778'),
'm' => $this->get_val($this->global_settings, array('size', 'mobile'), '480')
);
}
if(empty($size['height'])){
$size['height'] = array('d' => '868', 'n' => '768', 't' => '960', 'm' => '720');
}
if(extension_loaded('newrelic')){ //Ensure PHP agent is available
if(function_exists('newrelic_disable_autorum')){
newrelic_disable_autorum();
}
}
$rev_slider_front = new RevSliderFront(); //needed to be called, to load header properly
$admin = new RevSliderAdmin();
$post = $admin->create_fake_post($content, $title);
define('SHOW_CT_BUILDER', false); //fix for oxygen builder plugin to not remove the <html> tag and so on
ob_start();
include(RS_PLUGIN_PATH . 'public/views/revslider-page-template.php');
$html = ob_get_contents();
ob_clean();
ob_end_clean();
$return = array('html' => $html, 'size' => $size, 'layouttype' => $slider->get_param('layouttype', 'fullwidth'));
$return = apply_filters('revslider_preview_slider_addition', $return, $slider);
$this->ajax_response_data($return);
exit;
break;
case 'subscribe_to_newsletter':
$email = $this->get_val($data, 'email');
if(!empty($email)){
$return = ThemePunch_Newsletter::subscribe($email);
if($return !== false){
if(!isset($return['status']) || $return['status'] === 'error'){
$error = $this->get_val($return, 'message', __('Invalid Email', 'revslider'));
$this->ajax_response_error($error);
}else{
$this->ajax_response_success(__('Success! Please check your E-Mails to finish the subscription', 'revslider'), $return);
}
}
$this->ajax_response_error(__('Invalid Email/Could not connect to the Newsletter server', 'revslider'));
}
$this->ajax_response_error(__('No Email given', 'revslider'));
break;
case 'check_system':
//recheck the connection to themepunch server
$update = new RevSliderUpdate(RS_REVISION);
$update->force = true;
$update->_retrieve_version_info();
$system = $sr_admin->get_system_requirements();
$this->ajax_response_data(array('system' => $system));
break;
case 'load_module':
$module = $this->get_val($data, 'module', array('all'));
$module_uid = $this->get_val($data, 'module_uid', false);
$module_slider_id = $this->get_val($data, 'module_id', false);
$refresh_from_server = $this->get_val($data, 'refresh_from_server', false);
$get_static_slide = $this->_truefalse($this->get_val($data, 'static', false));
if($module_uid === false){
$module_uid = $module_slider_id;
}
$modules = $sr_admin->get_full_library($module, $module_uid, $refresh_from_server, $get_static_slide);
$this->ajax_response_data(array('modules' => $modules));
break;
case 'set_favorite':
$do = $this->get_val($data, 'do', 'add');
$type = $this->get_val($data, 'type', 'slider');
$id = esc_attr($this->get_val($data, 'id'));
$favorite = RevSliderGlobals::instance()->get('RevSliderFavorite');
$favorite->set_favorite($do, $type, $id);
$this->ajax_response_success(__('Favorite Changed', 'revslider'));
break;
case 'load_library_object':
$library = new RevSliderObjectLibrary();
$cover = false;
$id = $this->get_val($data, 'id');
$type = $this->get_val($data, 'type');
if($type == 'thumb'){
$thumb = $library->_get_object_thumb($id, 'thumb');
}elseif($type == 'video'){
$thumb = $library->_get_object_thumb($id, 'video_full', true);
$cover = $library->_get_object_thumb($id, 'cover', true);
}elseif($type == 'layers'){
$thumb = $library->_get_object_layers($id);
}else{
$thumb = $library->_get_object_thumb($id, 'orig', true);
if(isset($thumb['error']) && $thumb['error'] === false){
$url = $library->get_correct_size_url($id, $type);
if($url !== ''){
$thumb['url'] = $url;
}
}
}
if(isset($thumb['error']) && $thumb['error'] !== false){
$this->ajax_response_error(__('Object could not be loaded', 'revslider'));
}else{
if($type == 'layers'){
$return = array('layers' => $this->get_val($thumb, 'data'));
}else{
$return = array('url' => $this->get_val($thumb, 'url'));
}
if($cover !== false){
if(isset($cover['error']) && $cover['error'] !== false){
$this->ajax_response_error(__('Video cover could not be loaded', 'revslider'));
}
$return['cover'] = $this->get_val($cover, 'url');
}
$this->ajax_response_data($return);
}
break;
case 'create_slide':
$slider_id = $this->get_val($data, 'slider_id', false);
$amount = $this->get_val($data, 'amount', 1);
$amount = intval($amount);
$slide_ids = array();
if(intval($slider_id) > 0 && ($amount > 0 && $amount < 50)){
for ($i = 0; $i < $amount; $i++){
$slide_ids[] = $slide->create_slide($slider_id);
}
}
if(!empty($slide_ids)){
$this->ajax_response_data(array('slide_id' => $slide_ids));
}else{
$this->ajax_response_error(__('Could not create Slide', 'revslider'));
}
break;
case 'create_slider':
/**
* 1. create a blank Slider
* 2. create a blank Slide
* 3. create a blank Static Slide
**/
$slide_id = false;
$slider_id = $slider->create_blank_slider();
if($slider_id !== false){
$slide_id = $slide->create_slide($slider_id); //normal slide
$slide->create_slide($slider_id, '', true); //static slide
}
if($slide_id !== false){
$this->ajax_response_data(array('slide_id' => $slide_id, 'slider_id' => $slider_id));
}else{
$this->ajax_response_error(__('Could not create Slider', 'revslider'));
}
break;
case 'get_addon_list':
$addon = new RevSliderAddons();
$addons = $addon->get_addon_list();
update_option('rs-addons-counter', 0); //set the counter back to 0
$this->ajax_response_data(array('addons' => $addons));
break;
case 'get_layers_by_slide':
$slide_id = $this->get_val($data, 'slide_id');
$slide->init_by_id($slide_id);
$layers = $slide->get_layers();
$this->ajax_response_data(array('layers' => $layers));
break;
case 'activate_addon':
$handle = $this->get_val($data, 'addon');
$update = $this->get_val($data, 'update', false);
$addon = new RevSliderAddons();
$return = $addon->install_addon($handle, $update);
if($return === true){
$version = $addon->get_addon_version($handle);
//return needed files of the plugin somehow
$data = array();
$data = apply_filters('revslider_activate_addon', $data, $handle);
$this->ajax_response_data(array($handle => $data, 'version' => $version));
}else{
$error = ($return === false) ? __('AddOn could not be activated', 'revslider') : $return;
$this->ajax_response_error($error);
}
break;
case 'deactivate_addon':
$handle = $this->get_val($data, 'addon');
$addon = new RevSliderAddons();
$return = $addon->deactivate_addon($handle);
if($return){
//return needed files of the plugin somehow
$this->ajax_response_success(__('AddOn deactivated', 'revslider'));
}else{
$this->ajax_response_error(__('AddOn could not be deactivated', 'revslider'));
}
break;
case 'create_draft_page':
$response = array('open' => false, 'edit' => false);
$slider_ids = $this->get_val($data, 'slider_ids');
$modals = $this->get_val($data, 'modals', array());
$additions = $this->get_val($data, 'additions', array());
$page_id = $sr_admin->create_slider_page($slider_ids, $modals, $additions);
if($page_id > 0){
$response['open'] = get_permalink($page_id);
$response['edit'] = get_edit_post_link($page_id);
}
$this->ajax_response_data($response);
break;
case 'generate_attachment_metadata':
$this->generate_attachment_metadata();
$this->ajax_response_success('');
break;
case 'export_layer_group': //developer function only :)
$title = $this->get_val($data, 'title', $this->get_request_var('title'));
$videoid = intval($this->get_val($data, 'videoid', $this->get_request_var('videoid')));
$thumbid = intval($this->get_val($data, 'thumbid', $this->get_request_var('thumbid')));
$layers = $this->get_val($data, 'layers', $this->get_request_var('layers', '', false));
$export = new RevSliderSliderExport($title);
$url = $export->export_layer_group($videoid, $thumbid, $layers);
$this->ajax_response_data(array('url' => $url));
break;
case 'silent_slider_update':
$upd = new RevSliderPluginUpdate();
$return = $upd->upgrade_next_slider();
$this->ajax_response_data($return);
break;
case 'load_wordpress_image':
$id = $this->get_val($data, 'id', 0);
$type = $this->get_val($data, 'type', 'orig');
$img = wp_get_attachment_image_url($id, $type);
if(empty($img)){
$this->ajax_response_error(__('Image could not be loaded', 'revslider'));
}
$this->ajax_response_data(array('url' => $img));
break;
case 'load_library_image':
$images = (!is_array($data)) ? (array)$data : $data;
$images = RevSliderFunctions::esc_attr_deep($images);
$images = RevSliderAdmin::esc_js_deep($images);
$img_data = array();
if(!empty($images)){
$templates = new RevSliderTemplate();
$obj = new RevSliderObjectLibrary();
foreach($images as $image){
$type = $this->get_val($image, 'librarytype');
$img = $this->get_val($image, 'id');
$ind = $this->get_val($image, 'ind');
$mt = $this->get_val($image, 'mediatype');
switch($type){
case 'moduletemplates':
case 'moduletemplateslides':
$img = $templates->_check_file_path($img, true);
$img_data[] = array(
'ind' => $ind,
'url' => $img,
'mediatype' => $mt
);
break;
case 'image':
case 'images':
case 'layers':
case 'objects':
$get = ($mt === 'video') ? 'video_thumb' : 'thumb';
$img = $obj->_get_object_thumb($img, $get, true);
if($this->get_val($img, 'error', false) === false){
$img_data[] = array(
'ind' => $ind,
'url' => $this->get_val($img, 'url'),
'mediatype' => $mt
);
}
break;
case 'videos':
$get = ($mt === 'img') ? 'video' : 'video_thumb';
$img = $obj->_get_object_thumb($img, $get, true);
if($this->get_val($img, 'error', false) === false){
$img_data[] = array(
'ind' => $ind,
'url' => $this->get_val($img, 'url'),
'mediatype' => $mt
);
}
break;
}
}
}
$this->ajax_response_data(array('data' => $img_data));
break;
case 'create_customlibrary_tags':
$obj = new RevSliderObjectLibrary();
$name = $this->get_val($data, 'name', '');
$type = $this->get_val($data, 'type', '');
$return = $obj->create_custom_tag($name, $type);
if(!is_array($return)){
$this->ajax_response_error($return);
}else{
$this->ajax_response_data($return);
}
break;
case 'edit_customlibrary_tags':
$obj = new RevSliderObjectLibrary();
$id = $this->get_val($data, 'id', '');
$name = $this->get_val($data, 'name', '');
$type = $this->get_val($data, 'type', '');
$return = $obj->edit_custom_tag($id, $name, $type);
if($return !== true){
$this->ajax_response_error($return);
}else{
$this->ajax_response_success(__('Tag successfully saved', 'revslider'));
}
break;
case 'delete_customlibrary_tags':
$obj = new RevSliderObjectLibrary();
$id = $this->get_val($data, 'id', '');
$type = $this->get_val($data, 'type', '');
$return = $obj->delete_custom_tag($id, $type);
if($return !== true){
$this->ajax_response_error($return);
}else{
$this->ajax_response_success(__('Tag successfully deleted', 'revslider'));
}
break;
case 'upload_customlibrary_item':
$obj = new RevSliderObjectLibrary();
$return = $obj->upload_custom_item($data);
if(!is_array($return)){
$this->ajax_response_error($return);
}else{
$return['tags'] = $this->get_val($obj->get_custom_tags(), 'svgcustom', array());
$this->ajax_response_data($return);
}
break;
case 'edit_customlibrary_item':
$obj = new RevSliderObjectLibrary();
$id = $this->get_val($data, 'id', '');
$type = $this->get_val($data, 'type', '');
$name = $this->get_val($data, 'name', '');
$tags = $this->get_val($data, 'tags', '');
$return = $obj->edit_custom_item($id, $type, $name, $tags);
if($return !== true){
$this->ajax_response_error(__('Item could not be changed', 'revslider'));
}else{
$this->ajax_response_success(__('Item successfully changed', 'revslider'));
}
break;
case 'delete_customlibrary_item':
$obj = new RevSliderObjectLibrary();
$id = $this->get_val($data, 'id', '');
$type = $this->get_val($data, 'type', '');
$return = $obj->delete_custom_item($id, $type);
if($return !== true){
$this->ajax_response_error(__('Item could not be deleted', 'revslider'));
}else{
$this->ajax_response_success(__('Item successfully deleted', 'revslider'));
}
break;
case 'get_help_directory':
include_once(RS_PLUGIN_PATH . 'admin/includes/help.class.php');
if(class_exists('RevSliderHelp')){
$help_data = RevSliderHelp::getIndex();
$this->ajax_response_data(array('data' => $help_data));
}else{
$this->ajax_response_error(__('Error loading RevSliderHelp', 'revslider'));
}
break;
case 'get_tooltips':
include_once(RS_PLUGIN_PATH . 'admin/includes/tooltips.class.php');
if(class_exists('RevSliderTooltips')){
$tooltips = RevSliderTooltips::getTooltips();
$this->ajax_response_data(array('data' => $tooltips));
}else{
$this->ajax_response_error(__('Error loading RevSliderTooltips', 'revslider'));
}
break;
case 'set_tooltip_preference':
update_option('revslider_hide_tooltips', true);
$this->ajax_response_success(__('Preference Updated', 'revslider'));
break;
case 'save_color_preset':
$presets = $this->get_val($data, 'presets', array());
$color_presets = RSColorpicker::save_color_presets($presets);
$this->ajax_response_data(array('presets' => $color_presets));
break;
case 'get_facebook_photosets':
if(empty($data['app_id'])){
$this->ajax_response_error(__('Facebook API error: Empty Access Token', 'revslider'));
}
if(empty($data['page_id'])){
$this->ajax_response_error(__('Facebook API error: Empty Page ID', 'revslider'));
}
$facebook = RevSliderGlobals::instance()->get('RevSliderFacebook');
$return = $facebook->get_photo_set_photos_options($data['app_id'], $data['page_id']);
if(empty($return)){
$error = __('Could not fetch Facebook albums', 'revslider');
$this->ajax_response_error($error);
}
if(!empty($return['error'])){
$this->ajax_response_error(__('Facebook API error: ', 'revslider') . $return['message']);
}
$this->ajax_response_success(__('Successfully fetched Facebook albums', 'revslider'), array('html' => implode(' ', $return)));
break;
case 'get_flickr_photosets':
$error = __('Could not fetch flickr album', 'revslider');
if(!empty($data['url']) && !empty($data['key'])){
$flickr = new RevSliderFlickr($data['key']);
$user_id = $flickr->get_user_from_url($data['url']);
$return = $flickr->get_photo_sets($user_id, $data['count'], $data['set']);
if(!empty($return)){
$this->ajax_response_success(__('Successfully fetched flickr albums', 'revslider'), array('data' => array('html' => implode(' ', $return))));
}else{
$error = __('Could not fetch flickr albums', 'revslider');
}
}else{
if(empty($data['url']) && empty($data['key'])){
$this->ajax_response_success(__('Cleared Albums', 'revslider'), array('html' => implode(' ', $return)));
}elseif(empty($data['url'])){
$error = __('No User URL - Could not fetch flickr albums', 'revslider');
}else{
$error = __('No API KEY - Could not fetch flickr albums', 'revslider');
}
}
$this->ajax_response_error($error);
break;
case 'get_youtube_playlists':
if(!empty($data['id'])){
$youtube = new RevSliderYoutube(trim($data['api']), trim($data['id']));
$return = $youtube->get_playlist_options($data['playlist']);
$this->ajax_response_success(__('Successfully fetched YouTube playlists', 'revslider'), array('data' => array('html' => implode(' ', $return))));
}else{
$this->ajax_response_error(__('Could not fetch YouTube playlists', 'revslider'));
}
break;
case 'fix_database_issues':
update_option('revslider_table_version', '1.0.0');
RevSliderFront::create_tables(true);
$this->ajax_response_success(__('Slider Revolution database structure was updated', 'revslider'));
break;
case 'clear_internal_cache':
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_all_transients();
$this->ajax_response_success(__('Slider Revolution internal cache was fully cleared', 'revslider'));
break;
case 'get_same_aspect_ratio':
$images = $this->get_val($data, 'images', array());
$return = $sr_admin->get_same_aspect_ratio_images($images);
$this->ajax_response_data(array('images' => $return));
break;
case 'get_addons_sizes':
$addons = $this->get_val($data, 'addons', array());
$sizes = $sr_admin->get_addon_sizes($addons);
$this->ajax_response_data(array('addons' => $sizes));
break;
case 'save_custom_templates_slidetransitions':
$return = $this->save_custom_slidetransitions($data);
if ($return === false || intval($return) === 0) {
$this->ajax_response_success(__('Slide transition template could not be saved', 'revslider'));
} else {
$this->ajax_response_success(__('Slide transition template saved', 'revslider'), array('data' => array('id' => $return)));
}
break;
case 'delete_custom_templates_slidetransitions':
if ($this->delete_custom_slidetransitions($data)) {
$this->ajax_response_success(__('Slide transition template deleted', 'revslider'));
} else {
$this->ajax_response_error(__('Slide transition template could not be deleted', 'revslider'));
}
break;
case 'create_image_from_raw':
$mpeg = $this->get_val($data, 'mpeg', '');
$slideid = $this->get_val($data, 'slideid', 0);
$bitmap = $this->get_val($data, 'bitmap', '');
$mpeg = basename($mpeg);
if(empty($mpeg)) {
$this->ajax_response_error(__('mpeg not set', 'revslider'));
}
$return = $this->import_media_raw($mpeg, $slideid, $bitmap);
if(!is_array($return) && ($return === false || intval($return) === 0)){
if ($return === false) {
$this->ajax_response_error(__('Image could not be created', 'revslider'));
} else {
$this->ajax_response_error($return);
}
}
if(isset($return['id'])){
$return['path'] = wp_get_attachment_url($return['id']);
}
$this->ajax_response_data($return);
break;
default:
$return = ''; //''is not allowed to be added directly in apply_filters(), so its needed like this
$return = apply_filters('revslider_do_ajax', $return, $action, $data);
if($return){
if(is_array($return)){
if(isset($return['error'])){
$this->ajax_response_error($return['error']);
}
if(isset($return['message'])){
$this->ajax_response_data(array('message' => $return['message'], 'data' => $return['data']));
}
$this->ajax_response_data(array('data' => $return['data']));
}else{
$this->ajax_response_success($return);
}
}
break;
}
}catch(Exception $e){
$message = $e->getMessage();
if(in_array($action, array('preview_slide', 'preview_slider'))){
echo $message;
wp_die();
}
$this->ajax_response_error($message);
}
//it's an ajax action, so exit
$this->ajax_response_error(__('No response on action', 'revslider'));
wp_die();
}
/**
* Ajax handling for frontend, no privileges here
*/
public function do_front_ajax_action(){
global $SR_GLOBALS;
$error = false;
$action = $this->get_request_var('client_action', false);
$nonce = $this->get_request_var('nonce');
$nonce = (empty($nonce)) ? $this->get_request_var('rs-nonce') : $nonce;
//if($is_verified){
switch($action){
case 'get_full_slider_object':
$this->get_full_slider_object();
break;
case 'get_stream_data':
$this->get_stream_data();
break;
case 'get_modal_data':
$this->get_slider_modal_data();
break;
/**
* OLD CALLS
**/
case 'get_transitions':
$transitions = $this->get_base_transitions();
$this->ajax_response_data(array('transitions' => $transitions));
break;
case 'get_slider_html':
$alias = $this->get_post_var('alias', '');
$usage = $this->get_post_var('usage', '');
$modal = $this->get_post_var('modal', '');
$layout = $this->get_post_var('layout', '');
$offset = $this->get_post_var('offset', '');
$id = intval($this->get_post_var('id', 0));
//check if $alias exists in database, transform it to id
if($alias !== ''){
$sr = new RevSliderSlider();
$id = intval($sr->alias_exists($alias, true));
}
if($id > 0){
ob_start();
global $SR_GLOBALS;
if($SR_GLOBALS['front_version'] === 6){
$slider = new RevSliderOutput();
$slider->set_ajax_loaded();
$slider_class = $slider->add_slider_to_stage($id, $usage, $layout, $offset, $modal);
}else{
$slider = new RevSlider7Output();
$slider->set_ajax_loaded();
$slider_class = $slider->add_slider_to_stage($id);
}
$html = ob_get_contents();
ob_clean();
ob_end_clean();
$result = !empty($slider_class) && $html !== '';
if(!$result){
$error = __('Slider not found', 'revslider');
}else{
if($html !== false){
$htmlid = $slider->get_html_id();
$return = array('data' => $html, 'waiting' => array(), 'toload' => array(), 'htmlid' => $htmlid);
$return = apply_filters('revslider_get_slider_html_addition', $return, $slider);
$this->ajax_response_data($return);
}else{
$error = __('Slider not found', 'revslider');
}
}
}else{
$error = __('No Data Received', 'revslider');
}
break;
}
if($error !== false){
$show_error = ($error !== true) ? __('Loading Error', 'revslider') : __('Loading Error: ', 'revslider') . $error;
$this->ajax_response_error($show_error, false);
}
exit;
}
public function truncate_v7_tables(){
$this->check_nonce();
$this->truncate_v7();
$this->ajax_response_success(__('V7 Tables Cleared', 'revslider'));
}
public function save_slider($data = false){
global $SR_GLOBALS;
$this->check_nonce();
$slider = new RevSliderSlider();
$slide = new RevSliderSlide();
$data = $this->get_data($data);
$slider_id = $this->get_val($data, 'id');
$slides_data = $this->get_val($data, 'slides');
$slides_data = $this->json_decode_slashes($slides_data);
if($this->_truefalse($this->get_val($data, 'fromSR6')) === true){
$SR_GLOBALS['use_table_version'] = 7;
//$save = $this->get_val($data, 'save', 'database');
$title = $this->get_val($data, 'title');
$alias = $this->get_val($data, 'alias');
$slider_data = $this->get_val($data, 'settings');
$slider_id = $slider->save_slider_v7($slider_id, $slider_data, $title, $alias);
//probably kill all v7 slides here first
if(!empty($slides_data)){
foreach($slides_data as $id => $_slide){
$slide->save_slide_v7($id, $_slide, $slider_id);
}
}
$SR_GLOBALS['use_table_version'] = 6;
}else{
$slider_id = $slider->save_slider($slider_id, $data);
if(!empty($slides_data)){
foreach($slides_data as $id => $_slide){
$slide->save_slide($id, $_slide, $slider_id);
}
}
}
$cache = RevSliderGlobals::instance()->get('RevSliderCache');
$cache->clear_transients_by_slider($slider_id);
$this->ajax_response_success(__('Slider Saved as V7 Slider', 'revslider'));
}
public function set_v7_migration_failed($data = false){
global $SR_GLOBALS;
$this->check_nonce();
$data = $this->get_data($data);
$slider_id = $this->get_val($data, 'id');
$error_text = $this->get_val($data, 'text');
$this->update_v7_migration_failed_map($slider_id, $error_text);
$this->ajax_response_success(__('Saved', 'revslider'));
}
/**
* central function to either fill the $_data by REST API or by ajax requests
**/
public function get_data($data = false){
if($data instanceof WP_REST_Request){
$_data = $data->get_params('GET');
$this->set_rest_call();
}else{
$_data = $this->get_request_var('data', '', false);
$_data = ($_data == '') ? array() : $_data;
}
$this->set_use_db_version();
return $_data;
}
public function set_use_db_version(){
global $SR_GLOBALS;
$SR_GLOBALS['use_table_version'] = get_sr_current_engine();
}
public function get_stream_data($data = false){
$slider = new RevSliderSlider();
$slide = new RevSliderSlide();
$data = $this->get_data($data);
$slider_id = explode(',', $this->get_val($data, 'id'));
$lang = $this->get_val($data, 'srlang', 'all');
if(count($slider_id) > 1){
$slider->set_gallery_ids($slider_id);
$slider->set_param('sourcetype', 'specific_posts');
$slider->set_param(array('source'), array());
$slider->set_param(array('source', 'type'), 'specific_posts');
}else{
$slider_id = $slider_id[0];
$slider->init_by_id($slider_id, false);
if($slider->inited === false){ //try to get v6|v7 data then
global $SR_GLOBALS;
$SR_GLOBALS['use_table_version'] = ($SR_GLOBALS['use_table_version'] === 7) ? 6 : 7;
$slider->init_by_id($slider_id, false);
}
if($slider->inited === false){
$this->ajax_response_error(__('Slider could not be loaded', 'revslider'));
}
}
//set language if given
if($lang !== 'all'){
$slider->change_language($lang);
$SR_wpml = RevSliderGlobals::instance()->get('RevSliderWpml');
$SR_wpml->change_lang($lang, false, array(), $slider);
}
$stream_data = $slider->get_stream_data();
return $this->ajax_response_data(array('data' => $stream_data));
}
public function get_slider_modal_data($data = false){
global $SR_GLOBALS;
$slider = new RevSliderSlider();
$data = $this->get_data($data);
if($this->REST === true){
if(isset($data['slider'])){
if(intval($data['slider']) === 0){
$data['alias'] = $data['slider'];
}else{
$data['id'] = $data['slider'];
}
}
}
$slider_id = RevSliderFunctions::esc_attr_deep($this->get_val($data, 'id'));
$slider_alias = RevSliderFunctions::esc_attr_deep($this->get_val($data, 'alias', ''));
$obj = array(
'id' => '',
'bg' => '',
'sp' => '',
'addons' => array(),
'v6v7ids' => array(),
);
//allow a fallback to the v6 data here? I guess yes
if($SR_GLOBALS['use_table_version'] === 7){
if($slider_alias !== ''){
if(!$slider->check_alias($slider_alias)) $SR_GLOBALS['use_table_version'] = 6;
}else{
if(!$slider->check_slider_id($slider_id)) $SR_GLOBALS['use_table_version'] = 6;
}
}
if($slider_alias !== ''){
$slider->init_by_alias($slider_alias);
$slider_id = $slider->get_id();
}else{
$slider->init_by_id($slider_id);
}
if($SR_GLOBALS['use_table_version'] === 7){
if($slider->inited === false) $this->ajax_response_error(__('V7 Slider could not inited', 'revslider'));
if($slider->get_param(array('modal', 'cover'), true) === true){
$obj['bg'] = $slider->get_param(array('modal', 'bg'), 'rgba(0,0,0,0.5)');
$obj['sp'] = $slider->get_param(array('modal', 'sp'), 1);
}
}else{
if($slider->inited === false) $this->ajax_response_error(__('Modal data could not be loaded', 'revslider'));
if($slider->get_param(array('modal', 'cover'), true) === true){
$obj['bg'] = $slider->get_param(array('modal', 'coverColor'), 'rgba(0,0,0,0.5)');
$obj['sp'] = $slider->get_param(array('modal', 'coverSpeed'), 1);
}
}
$obj['id'] = $slider_id;
$obj['v6v7ids'] = $this->get_v7_slider_map($slider_id);
return $this->ajax_response_data($obj);
}
public function get_full_slider_object($data = false, $modify = true){
global $SR_GLOBALS;
$slider = new RevSliderSlider();
$slide = new RevSliderSlide();
$data = $this->get_data($data);
if($this->REST === true){
if(isset($data['slider'])){
if(intval($data['slider']) === 0){
$data['alias'] = $data['slider'];
}else{
$data['id'] = 'slider-'.$data['slider'];
}
}
}
$slide_id = RevSliderFunctions::esc_attr_deep($this->get_val($data, 'id'));
$slider_alias = RevSliderFunctions::esc_attr_deep($this->get_val($data, 'alias', ''));
$slide_ids = RevSliderFunctions::esc_attr_deep($this->get_val($data, 'slideid', array()));
$raw = RevSliderFunctions::esc_attr_deep($this->get_val($data, 'raw', false));
if($SR_GLOBALS['use_table_version'] === 7){
if($slider_alias !== ''){
if(!$slider->check_alias($slider_alias)) $SR_GLOBALS['use_table_version'] = 6;
}elseif(strpos($slide_id, 'slider-') !== false){
$slider_id = str_replace('slider-', '', $slide_id);
if(!$slider->check_slider_id($slider_id)) $SR_GLOBALS['use_table_version'] = 6;
}
}
if($SR_GLOBALS['use_table_version'] !== 7){
if($slider_alias !== ''){
$slider->init_by_alias($slider_alias);
$slider_id = $slider->get_id();
}else{
if(strpos($slide_id, 'slider-') !== false){
$slider_id = str_replace('slider-', '', $slide_id);
}else{
$slide->init_by_id($slide_id);
$slider_id = $slide->get_slider_id();
if(intval($slider_id) == 0){
$this->ajax_response_error(__('Slider could not be loaded', 'revslider'));
}
}
$slider->init_by_id($slider_id);
}
if($slider->inited === false) $this->ajax_response_error(__('Slider could not be loaded', 'revslider'));
}else{
if($slider_alias !== ''){
$slider->init_by_alias($slider_alias);
$slider_id = $slider->get_id();
}else{
if(strpos($slide_id, 'slider-') !== false){
$slider_id = str_replace('slider-', '', $slide_id);
}else{
$slide->init_by_id($slide_id);
$slider_id = $slide->get_slider_id();
if(intval($slider_id) == 0){
$this->ajax_response_error(__('V7 Slider could not be found', 'revslider'));
}
}
$slider->init_by_id($slider_id);
}
if($slider->inited === false) $this->ajax_response_error(__('V7 Slider could not inited', 'revslider'));
}
$JSON = $slider->get_full_slider_JSON(false, true, $slide_ids, $raw, $modify);
return $this->ajax_response_data(apply_filters('sr_get_full_slider_object', $JSON, $slider));
}
/**
* echo json ajax response as error
* @before: RevSliderBaseAdmin::ajaxResponseError();
*/
public function ajax_response_error($message, $data = null){
$this->ajax_response(false, $message, $data);
}
/**
* echo ajax success response with redirect instructions
* @before: RevSliderBaseAdmin::ajaxResponseSuccessRedirect();
*/
public function ajax_response_redirect($message, $url){
$data = array('is_redirect' => true, 'redirect_url' => $url);
$this->ajax_response(true, $message, $data);
}
/**
* echo json ajax response, without message, only data
* @before: RevSliderBaseAdmin::ajaxResponseData()
*/
public function ajax_response_data($data){
$data = (gettype($data) == 'string') ? array('data' => $data) : $data;
return $this->ajax_response(true, '', $data);
}
/**
* echo ajax success response
* @before: RevSliderBaseAdmin::ajaxResponseSuccess();
*/
public function ajax_response_success($message, $data = null){
$this->ajax_response(true, $message, $data);
}
/**
* echo json ajax response
* before: RevSliderBaseAdmin::ajaxResponse
* @param bool $success
* @param string $message
* @param mixed $data
*/
private function ajax_response($success, $message, $data = null){
$response = array(
'success' => $success,
'message' => $message,
);
if(!empty($data)){
if(gettype($data) == 'string'){
$data = array('data' => $data);
}
$response = array_merge($response, $data);
}
if($this->is_rest_call()){
echo json_encode($response);
exit;
return new WP_REST_Response($response);
}else{
echo json_encode($response);
wp_die();
}
}
}
?>
Run Command [Bypass]
Run Command