291 lines
6.5 KiB
PHP
291 lines
6.5 KiB
PHP
<?php
|
|
/**
|
|
* Master Slider Admin
|
|
*
|
|
* @package MasterSlider
|
|
* @author averta [averta.net]
|
|
* @license LICENSE.txt
|
|
* @link http://masterslider.com
|
|
* @copyright Copyright © 2014 averta
|
|
*/
|
|
|
|
// no direct access allowed
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
die();
|
|
}
|
|
|
|
|
|
/**
|
|
* This class is used to work with the
|
|
* administrative side of Masterslider
|
|
*/
|
|
class Master_Slider_Admin {
|
|
|
|
/**
|
|
* Instance of this class.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @var object
|
|
*/
|
|
protected static $instance = null;
|
|
|
|
/**
|
|
* Slug of the plugin screen.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $sliders_screen_hook_suffix = null;
|
|
|
|
|
|
|
|
/**
|
|
* Initialize the plugin by loading admin classes and functions
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
private function __construct() {
|
|
|
|
// include admin files
|
|
$this->includes();
|
|
|
|
add_action( 'init', array( $this, 'init' ) );
|
|
}
|
|
|
|
|
|
/**
|
|
* Include admin essential classes and functions
|
|
*
|
|
* @return void
|
|
*/
|
|
private function includes(){
|
|
include_once( MSWP_AVERTA_ADMIN_DIR . '/includes/index.php' );
|
|
include_once( MSWP_AVERTA_ADMIN_DIR . '/views/setting/class-msp-settings.php' );
|
|
}
|
|
|
|
|
|
public function init() {
|
|
|
|
// Before init action
|
|
do_action( 'before_masterslider_admin_init' );
|
|
|
|
// A filter hook to restrict access to plugin panel only for super admin on multiste
|
|
if( apply_filters( 'masterslider_access_only_for_super_admins' , 0 ) && ! is_super_admin() ) {
|
|
return;
|
|
}
|
|
|
|
// Assign masterslider custom capabilities
|
|
Master_Slider::assign_custom_caps();
|
|
// Inject default styles and effects
|
|
Master_Slider::set_default_options();
|
|
|
|
|
|
// Initial tasks on admin init
|
|
add_action( 'admin_init', array( $this, 'admin_init') );
|
|
|
|
// Initial tasks on admin footer
|
|
add_action( 'admin_footer', array( $this, 'admin_footer') );
|
|
|
|
// Load admin Stylesheet and JavaScript.
|
|
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts') );
|
|
|
|
// Add some essential content in admin page header
|
|
add_action( 'admin_head', array( $this, 'admin_header' ), 9 );
|
|
|
|
// Add the options page and menu item.
|
|
add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) );
|
|
|
|
// Add an action link pointing to the setting page.
|
|
add_filter( 'plugin_action_links_' . MSWP_AVERTA_BASE_NAME, array( $this, 'add_action_links' ) );
|
|
|
|
// Add an action link on plugin row meta in plugins page
|
|
add_filter( 'plugin_row_meta', array( $this, 'plugin_row_meta' ), 10, 4 );
|
|
|
|
// Admin init action
|
|
do_action( 'masterslider_admin_init' );
|
|
}
|
|
|
|
|
|
/**
|
|
* Triggers on admin init
|
|
*
|
|
* @return void
|
|
*/
|
|
public function admin_init(){
|
|
|
|
$this->after_plugin_update();
|
|
}
|
|
|
|
|
|
/**
|
|
* Triggers on admin footer
|
|
*
|
|
* @return void
|
|
*/
|
|
public function admin_footer(){
|
|
|
|
include_once( MSWP_AVERTA_ADMIN_DIR . '/views/global/gallery-templates.php' );
|
|
}
|
|
|
|
|
|
/**
|
|
* Regenerate and cache custom css codes for all slider after plugin update
|
|
*
|
|
* @return bool TRUE on success, FALSE otherwise
|
|
*/
|
|
public function after_plugin_update (){
|
|
|
|
if( get_option( 'masterslider_plugin_version', '0' ) == MSWP_AVERTA_VERSION )
|
|
return false;
|
|
|
|
msp_save_custom_styles();
|
|
//msp_flush_all_sliders_cache(); 2.9.7
|
|
update_option( 'masterslider_plugin_version', MSWP_AVERTA_VERSION );
|
|
do_action( 'masterslider_after_plugin_updated' );
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
/**
|
|
* Return an instance of this class.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return object A single instance of this class.
|
|
*/
|
|
public static function get_instance() {
|
|
|
|
if( apply_filters( 'masterslider_access_only_for_super_admins' , 0 ) && ! is_super_admin() ) {
|
|
return;
|
|
}
|
|
|
|
// If the single instance hasn't been set, set it now.
|
|
if ( null == self::$instance ) {
|
|
self::$instance = new self;
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
|
|
/**
|
|
* Register and enqueue admin-specific JavaScript & Stylesheet.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return null Return early if no settings page is registered.
|
|
*/
|
|
public function enqueue_admin_scripts() {
|
|
|
|
$admin_assets = new MSP_Admin_Assets();
|
|
$admin_assets->enqueue_global_assets();
|
|
|
|
if ( ! isset( $this->sliders_screen_hook_suffix ) )
|
|
return;
|
|
|
|
// load masterslider spesific assets only on it's admin page
|
|
$screen = get_current_screen();
|
|
if ( $this->sliders_screen_hook_suffix == $screen->id ) {
|
|
|
|
$admin_assets->enqueue_panel_assets();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Print essential content in admin page header
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @return void
|
|
*/
|
|
public function admin_header() {
|
|
|
|
if ( ! isset( $this->sliders_screen_hook_suffix ) ) {
|
|
return;
|
|
}
|
|
|
|
$screen = get_current_screen();
|
|
if ( $this->sliders_screen_hook_suffix == $screen->id ) {
|
|
|
|
if ( isset( $_REQUEST['slider_id'] ) ) {
|
|
|
|
$slider_id = $_REQUEST['slider_id'];
|
|
global $mspdb;
|
|
$custom_fonts = $mspdb->get_slider_field_val( $slider_id, 'custom_fonts' );
|
|
|
|
if ( ! empty( $custom_fonts ) )
|
|
printf( "<link rel='stylesheet' id='masterslider-admin-fonts' href='//fonts.googleapis.com/css?family=%s' type='text/css' />\n", $custom_fonts );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Register the administration menu for this plugin into the WordPress Dashboard menu.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function add_plugin_admin_menu() {
|
|
|
|
$ms_page_title = apply_filters( 'masterslider_admin_page_title', __( 'Master Sliders', MSWP_TEXT_DOMAIN ) );
|
|
$ms_menu_title = apply_filters( 'masterslider_admin_menu_title', __( 'Master Slider' , MSWP_TEXT_DOMAIN ) );
|
|
|
|
// Add a top-level menu for master slider
|
|
$this->sliders_screen_hook_suffix = add_menu_page(
|
|
$ms_page_title,
|
|
$ms_menu_title,
|
|
apply_filters( 'masterslider_access_capability', 'access_masterslider' ),
|
|
MSWP_SLUG,
|
|
array( $this, 'display_master_slider_panel_page' )
|
|
);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Render the panel page for this plugin.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function display_master_slider_panel_page() {
|
|
include_once( 'views/index.php' );
|
|
}
|
|
|
|
|
|
/**
|
|
* Add settings action link to the plugins page.
|
|
*
|
|
* @since 1.0.0
|
|
*/
|
|
public function add_action_links( $links ) {
|
|
|
|
return array_merge(
|
|
array(
|
|
'settings' => '<a href="' . admin_url( 'admin.php?page=' . MSWP_SLUG . '-setting' ) . '">' . __( 'Settings', MSWP_TEXT_DOMAIN ) . '</a>',
|
|
'docs' => '<a href="http://masterslider.com/doc/wp/?rf=cls" target="blank" >' . __( 'Docs', MSWP_TEXT_DOMAIN ) . '</a>'
|
|
),
|
|
$links
|
|
);
|
|
|
|
}
|
|
|
|
|
|
/**
|
|
* Add extra action link to the plugin meta on plugins page.
|
|
*
|
|
* @since 1.8.0
|
|
*/
|
|
public function plugin_row_meta( $plugin_meta, $plugin_file, $plugin_data, $status ){
|
|
if( $plugin_file == MSWP_AVERTA_BASE_NAME ) { }
|
|
return $plugin_meta;
|
|
}
|
|
|
|
|
|
}
|
|
|
|
return Master_Slider_Admin::get_instance();
|