* @link http://nwdthemes.com/
* @copyright Copyright (c) 2015. Nwdthemes
* @license http://themeforest.net/licenses/terms/regular
*/
//include frameword files
require_once(RS_PLUGIN_PATH . 'includes/framework/include-framework.php');
//include bases
require_once($folderIncludes . 'base.class.php');
require_once($folderIncludes . 'elements-base.class.php');
require_once($folderIncludes . 'base-admin.class.php');
require_once($folderIncludes . 'base-front.class.php');
//include product files
require_once(RS_PLUGIN_PATH . 'includes/globals.class.php');
require_once(RS_PLUGIN_PATH . 'includes/operations.class.php');
require_once(RS_PLUGIN_PATH . 'includes/slider.class.php');
require_once(RS_PLUGIN_PATH . 'includes/output.class.php');
require_once(RS_PLUGIN_PATH . 'includes/slide.class.php');
require_once(RS_PLUGIN_PATH . 'includes/navigation.class.php');
require_once(RS_PLUGIN_PATH . 'includes/object-library.class.php');
require_once(RS_PLUGIN_PATH . 'includes/template.class.php');
require_once(RS_PLUGIN_PATH . 'includes/external-sources.class.php');
require_once(RS_PLUGIN_PATH . 'includes/tinybox.class.php');
require_once(RS_PLUGIN_PATH . 'includes/extension.class.php');
//load front part
require_once(RS_PLUGIN_PATH . 'public/revslider-front.class.php');
// load admin part
require_once(RS_PLUGIN_PATH . 'includes/framework/update.class.php');
require_once(RS_PLUGIN_PATH . 'includes/framework/newsletter.class.php');
require_once(RS_PLUGIN_PATH . 'admin/revslider-admin.class.php');
// slider version
$revSliderVersion = RevSliderGlobals::SLIDER_REVISION;
$wp_version = 'NA';
$revslider_screens = array();
$revslider_fonts = array();
class Admin extends RS_Controller {
private $_revSliderAdmin;
/**
* Constructor
*/
public function __construct() {
global $wpdb;
parent::__construct();
force_config_ssl();
$this->load->model('wpdb_model', 'WPDB');
$wpdb = $this->WPDB;
// refresh servers list
$rslb = new RevSliderLoadBalancer();
$rslb->refresh_server_list($this->input->get('rs_refresh_server'));
$this->_revSliderAdmin = new RevSliderAdmin();
add_action('plugins_loaded', array( 'RevSliderFront', 'createDBTables' )); //add update checks
add_action('plugins_loaded', array( 'RevSliderPluginUpdate', 'do_update_checks' )); //add update checks
// temporary force no admin to load plugins as for frontend
if ($this->input->get('client_action') == 'preview_slider' && $this->input->get('only_markup') == 'true') {
forceNoAdmin(true);
}
do_action('plugins_loaded');
forceNoAdmin(false);
/**
* Fires before the administration menu loads in the admin.
* Added for compatibility with WP plugins that use this action
* to add admin menu items and to register its own pages
*/
do_action('admin_menu');
}
/**
* Admin pages
*/
public function index() {
$revSliderAdmin = $this->_revSliderAdmin;
$revSliderAdmin->onAddScripts();
ob_start();
$page = $this->input->get('page');
switch ($page) {
case 'rev_addon' :
$addon_admin = new Rev_addon_Admin( 'rev_addon', RevSliderGlobals::SLIDER_REVISION );
$addon_admin->display_plugin_admin_page();
break;
default :
//check if we are plugin
$page_hook = '';
$plugin_file = $page.'/'.$page.'.php';
if ( is_plugin_active( $plugin_file ) ) {
$page_hook = get_plugin_page_hook($page, $page);
}
if ( $page_hook ) {
do_action( $page_hook );
} else {
$revSliderAdmin::adminPages();
}
break;
}
$adminPage = ob_get_contents();
ob_end_clean();
do_action('admin_enqueue_scripts', 'toplevel_page_revslider');
$headerData = array(
'cssIncludes' => array(
base_url() . 'assets/css/admin/wp-admin.min.css',
base_url() . 'assets/css/admin/color-picker.min.css',
base_url() . 'assets/css/admin/farbtastic.css',
base_url() . 'assets/css/includes/dashicons.min.css',
base_url() . 'assets/css/includes/admin-bar.min.css',
base_url() . 'assets/css/includes/buttons.min.css',
base_url() . 'assets/css/includes/wp-auth-check.min.css',
base_url() . 'assets/css/includes/media-views.min.css',
base_url() . 'assets/css/includes/jquery-ui-dialog.min.css',
base_url() . 'assets/css/rs-separate.css',
base_url() . 'assets/image_crud/css/fineuploader.css',
base_url() . 'assets/image_crud/css/photogallery.css',
base_url() . 'assets/image_crud/css/colorbox.css',
base_url() . 'assets/js/includes/mediaelement/mediaelementplayer.min.css',
base_url() . 'assets/js/includes/mediaelement/wp-mediaelement.css',
base_url() . 'assets/js/includes/imgareaselect/imgareaselect.css'
),
'jsIncludes' => array(
base_url() . 'assets/js/includes/jquery/jquery.js',
base_url() . 'assets/js/includes/jquery/jquery-migrate.min.js',
base_url() . 'assets/js/includes/utils.min.js',
base_url() . 'assets/js/includes/plupload/plupload.full.min.js',
base_url() . 'assets/js/includes/json2.min.js',
'//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js',
base_url() . 'assets/js/farbtastic/my-farbtastic.js',
base_url() . 'assets/js/dropdownchecklist/ui.dropdownchecklist-1.4-min.js',
base_url() . 'assets/js/gallery.js',
base_url() . 'assets/js/language.js',
base_url() . 'assets/js/edit_account.js',
base_url() . 'assets/js/navigation.js',
base_url() . 'assets/js/updater.js',
base_url() . 'assets/image_crud/js/fineuploader-3.2.min.js',
base_url() . 'assets/image_crud/js/jquery.colorbox-min.js',
base_url() . 'assets/js/includes/underscore.min.js',
base_url() . 'assets/js/includes/wp-util.min.js',
base_url() . 'assets/js/includes/iris.min.js',
base_url() . 'assets/js/includes/color-picker.min.js'
),
'adminHead' => do_action('admin_head'),
'localizeScripts' => $this->data->get('localize_scripts'),
'inlineStyles' => $this->data->get('inline_styles', array())
);
foreach ($this->data->get('styles', array()) as $style) {
if ( ! check_for_jquery_addon() && strpos($style, 'revslider/public/assets') !== false) {
$style = str_replace('revslider/public/assets', 'assets', $style);
}
$headerData['cssIncludes'][] = $style;
}
foreach ($this->data->get('scripts', array()) as $script) {
if ( ! check_for_jquery_addon() && strpos($script, 'revslider/public/assets') !== false) {
$script = str_replace('revslider/public/assets', 'assets', $script);
}
$headerData['jsIncludes'][] = $script;
}
$this->load->model('user_model', 'User');
$navigationData = array(
'user' => $this->User->get( $this->session->userdata('user_id') ),
'export_button' => false
);
if ($this->input->get('view') == 'slider' || $this->input->get('view') == 'slide')
{
$headerData['jsIncludes'][] = base_url() . 'assets/js/navigation.js';
$navigationData['export_button'] = true;
}
echo $this->load->view('admin/header', $headerData, TRUE);
echo $this->load->view('admin/navigation', $navigationData, TRUE);
echo $adminPage;
echo $this->load->view('admin/footer', array(), TRUE);
}
/**
* Ajax calls
*/
public function ajax(){
$ajaxAction = $this->input->post('action');
if ($ajaxAction && $ajaxAction !== 'revslider_ajax_action') {
$this->admin_ajax($ajaxAction);
} else {
$action = $this->input->post('client_action');
if(RS_DEMO){
switch($action){
case 'update_account':
case 'download_addon':
case 'deactivate_addon':
$action = 'demomode';
break;
}
}
switch ($action) {
case 'update_account' :
$this->_update_account_action();
break;
case 'download_addon' :
$this->_download_addon();
break;
case 'deactivate_addon' :
$this->_deactivate_addon();
break;
default:
$revSliderAdmin = $this->_revSliderAdmin;
$revSliderAdmin::onAjaxAction();
break;
}
}
}
/**
* Admin ajax actions
*
* @param $action string
*/
public function admin_ajax($action = '') {
$action = 'wp_ajax_' . ($action ? $action : $this->input->get('action'));
echo do_action($action);
}
/**
* Edit account dialog
*/
public function edit_account() {
$this->load->model('user_model', 'User');
$data = array('user' => $this->User->get( $this->session->userdata('user_id') ));
$this->load->view('admin/edit_account_dialog', $data);
}
/**
* Update account action
*/
private function _update_account_action() {
$data = $this->input->post('data');
$this->load->model('user_model', 'User');
$response = $this->User->update($data);
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo json_encode($response);
die();
}
/**
* Update application
*/
public function update() {
$revSliderAdmin = $this->_revSliderAdmin;
global $wp_version;
dmp(__('Checking for new version...'));
$upgrade = new RevSliderUpdate( GlobalsRevSlider::SLIDER_REVISION );
$update = $upgrade->_retrieve_update_info();
if (isset($update->full->version) && version_compare(RevSliderGlobals::SLIDER_REVISION, $update->full->version, '<')) {
dmp(__('New version found!'));
$upload_dir = wp_upload_dir();
$upload_path = DIRECTORY_SEPARATOR . 'update' . DIRECTORY_SEPARATOR;
if(wp_mkdir_p($upload_dir['basedir'].$upload_path)) {
dmp(__('Downloading updates...'));
$request = wp_remote_post($update->full->download_link, array(
'timeout' => 45,
'method' => 'GET'
));
if( ! is_wp_error($request)) {
if($response = $request['body']) {
if($response !== 'invalid'){
dmp(__('Updates downloaded!'));
//add stream as a zip file
$file = $upload_dir['basedir'] . $upload_path . $update->full->file_name;
wp_mkdir_p(dirname($file));
$ret = @file_put_contents( $file, $response );
if($ret !== false) {
dmp(__('Installing updates...'));
// Lets extract
if (unzip_file($file, $upload_dir['basedir'] . $upload_path) === true) {
unlink($file);
$file_info = pathinfo($update->full->file_name);
$update_path = basename($update->full->file_name,'.'.$file_info['extension']);
recurse_move($upload_dir['basedir'] . $upload_path . $update_path, FCPATH);
rmdir($upload_dir['basedir'] . $upload_path);
$message = __('Updates are installed! Redirecting...');
} else {
$error = __('Invalid ZIP archive or no library installed');
}
} else {
$error = __('Not possible to save updates to updates folder. Please check permissions.');
}
} else {
$error = __('Invalid updates response.');
}
} else {
$error = __('Problem with getting update response.');
}
} else {
$error = __('Failed to download updates.');
}
} else {
$error = __('Not possible to write to updates folder. Please check permissions.');
}
} else {
$error = __('No updates found to download');
}
$viewBack = RevSliderAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDERS);
if (isset($error)) {
dmp("Error: ".$error."");
echo RevSliderFunctions::getHtmlLink($viewBack, __("Go Back",'revslider'));
} else {
dmp(__($message, 'revslider'));
echo "";
}
}
/**
* Upload and install addon
*/
public function upload_addon() {
$this->load->library('updater');
$response = $this->updater->upload_addon();
//handle error
$viewBack = RevSliderAdmin::getViewUrl(RevSliderAdmin::VIEW_SLIDERS);
if($response["success"] == false){
$message = $response["error"];
dmp("Error: ".$message."");
echo RevSliderFunctions::getHtmlLink($viewBack, __("Go Back",'revslider'));
}
else{ //handle success, js redirect.
dmp(__("Addon Install Success, redirecting...",'revslider'));
echo "";
}
exit();
}
/**
* Download and install addon
*/
private function _download_addon() {
$this->load->library('updater');
$response = $this->updater->download_addon();
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo json_encode($response);
die();
}
/**
* Deactivate addon
*/
private function _deactivate_addon() {
$this->load->library('updater');
$response = $this->updater->deactivate_addon();
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
echo json_encode($response);
die();
}
/**
* Update addon
*/
public function update_addon() {
$addonAdmin = new Rev_addon_Admin('rev_addon', RevSliderGlobals::SLIDER_REVISION);
$addonMessage = $addonAdmin->update_plugin();
dmp($addonMessage . ' ' . __("Redirecting...",'revslider'));
echo "";
exit();
}
}