<?php
/**
* Jet Dashboard Module
*
* Version: 2.0.5
*/
namespace Jet_Dashboard;
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
class Dashboard {
/**
* A reference to an instance of this class.
*
* @since 1.0.0
* @access private
* @var object
*/
private static $instance = null;
/**
* Module directory path.
*
* @since 1.0.0
* @access protected
* @var srting.
*/
protected $path;
/**
* Module directory URL.
*
* @since 1.0.0
* @access protected
* @var srting.
*/
protected $url;
/**
* Module version
*
* @var string
*/
protected $version = '2.0.5';
/**
* [$dashboard_slug description]
* @var string
*/
public $dashboard_slug = 'jet-dashboard';
/**
* [$module_manager description]
* @var null
*/
public $module_manager = null;
/**
* [$data_manager description]
* @var null
*/
public $data_manager = null;
/**
* [$license_manager description]
* @var null
*/
public $license_manager = null;
/**
* [$plugin_updater description]
* @var null
*/
public $plugin_manager = null;
/**
* [$notice_manager description]
* @var null
*/
public $notice_manager = null;
/**
* [$compat_manager description]
* @var null
*/
public $compat_manager = null;
/**
* [$subpage description]
* @var null
*/
private $page = null;
/**
* [$subpage description]
* @var null
*/
private $subpage = null;
/**
* [$default_args description]
* @var [type]
*/
public $default_args = array(
'path' => '',
'url' => '',
'cx_ui_instance' => false,
'plugin_data' => array(
'slug' => false,
'file' => '',
'version' => '',
'plugin_links' => array()
),
);
/**
* [$args description]
* @var array
*/
public $args = array();
/**
* [$cx_ui_instance description]
* @var boolean
*/
public $cx_ui_instance = false;
/**
* [$plugin_slug description]
* @var boolean
*/
public $plugin_data = false;
/**
* [$assets_enqueued description]
* @var boolean
*/
protected $assets_enqueued = false;
/**
* [$registered_plugins description]
* @var array
*/
public $registered_plugins = array();
/**
* Jet_Dashboard constructor.
*
* @since 1.0.0
* @access public
* @return void
*/
public function __construct() {
$this->load_files();
add_action( 'init', array( $this, 'init_managers' ), -998 );
add_action( 'admin_menu', array( $this, 'register_page' ), -999 );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_dashboard_assets' ) );
}
/**
* [load_files description]
* @return [type] [description]
*/
public function load_files() {
/**
* Modules
*/
require $this->path . 'inc/modules/manager.php';
require $this->path . 'inc/modules/page-base.php';
require $this->path . 'inc/modules/welcome/module.php';
require $this->path . 'inc/modules/welcome/dev-test.php';
require $this->path . 'inc/modules/license/module.php';
require $this->path . 'inc/modules/settings/module.php';
require $this->path . 'inc/modules/upsale/module.php';
require $this->path . 'inc/utils.php';
require $this->path . 'inc/license-manager.php';
require $this->path . 'inc/plugin-manager.php';
require $this->path . 'inc/data-manager.php';
require $this->path . 'inc/notice-manager.php';
/**
* Compatibility
*/
require $this->path . 'inc/compatibility/manager.php';
require $this->path . 'inc/compatibility/base-theme.php';
require $this->path . 'inc/compatibility/themes/hello.php';
}
/**
* [init_managers description]
* @param array $args [description]
* @return [type] [description]
*/
public function init_managers() {
$this->module_manager = new Modules\Manager();
$this->notice_manager = new Notice_Manager();
$this->data_manager = new Data_Manager();
$this->license_manager = new License_Manager();
$this->plugin_manager = new Plugin_Manager();
$this->compat_manager = new Compatibility\Manager();
}
/**
* [init description]
* @return [type] [description]
*/
public function init( $args = [] ) {
$this->args = wp_parse_args( $args, $this->default_args );
$this->path = ! empty( $this->args['path'] ) ? $this->args['path'] : false;
$this->url = ! empty( $this->args['url'] ) ? $this->args['url'] : false;
if ( ! $this->path || ! $this->url || ! $this->args['cx_ui_instance'] ) {
wp_die(
'Jet_Dashboard not initialized. Module URL, Path, UI instance and plugin data should be passed into constructor',
'Jet_Dashboard Error'
);
}
$plugin_data = wp_parse_args( $this->args['plugin_data'], $this->default_args['plugin_data'] );
$this->register_plugin( $this->args['plugin_data']['file'], $plugin_data );
}
/**
* Register add/edit page
*
* @return void
*/
public function register_page() {
add_menu_page(
esc_html__( 'Crocoblock', 'jet-dashboard' ),
esc_html__( 'Crocoblock', 'jet-dashboard' ),
'manage_options',
$this->dashboard_slug,
function() {
include $this->get_view( 'common/dashboard' );
},
"data:image/svg+xml,%3Csvg width='11' height='18' viewBox='0 0 11 18' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M8.8 4.50004C10.0152 4.50004 11 3.49259 11 2.25002C11 1.00744 10.0152 0 8.8 0C8.79799 0 8.79612 0.00029408 8.79411 0.00029408C3.9368 0.00352919 0 4.03154 0 9.00007C0 13.9707 3.93997 18 8.8 18C10.0152 18 11 16.9926 11 15.75C11 14.5074 10.0152 13.5 8.8 13.5L8.79799 13.5001C6.3689 13.4989 4.39993 11.4846 4.39993 9.00007C4.39993 6.51478 6.36991 4.50004 8.8 4.50004Z' fill='white'/%3E%3C/svg%3E%0A",
59
);
add_submenu_page(
$this->dashboard_slug,
esc_html__( 'Dashboard', 'jet-dashboard' ),
esc_html__( 'Dashboard', 'jet-dashboard' ),
'manage_options',
$this->dashboard_slug
);
do_action( 'jet-dashboard/after-page-registration', $this );
}
/**
* [maybe_modify_subpages_links description]
* @return [type] [description]
*/
public function maybe_modify_subpages_links() {
global $submenu;
$submenu['jet-dashboard'][3][2] = 'admin.php?page=jet-dashboard-license-page&subpage=license-manager';
}
/**
* [render_dashboard description]
* @return [type] [description]
*/
public function render_dashboard() {
include $this->get_view( 'common/dashboard' );
}
/**
* [get_dashboard_version description]
* @return [type] [description]
*/
public function get_dashboard_path() {
return $this->path;
}
/**
* [get_dashboard_version description]
* @return [type] [description]
*/
public function get_dashboard_url() {
return $this->url;
}
/**
* [get_dashboard_version description]
* @return [type] [description]
*/
public function get_dashboard_version() {
return $this->version;
}
/**
* [get_registered_plugins description]
* @return [type] [description]
*/
public function get_registered_plugins() {
return $this->registered_plugins;
}
/**
* [get_registered_plugins description]
* @return [type] [description]
*/
public function register_plugin( $plugin_slug = false, $plugin_data = array() ) {
if ( ! array_key_exists( $plugin_slug, $this->registered_plugins ) ) {
$this->registered_plugins[ $plugin_slug ] = $plugin_data;
}
return false;
}
/**
* Returns path to view file
*
* @param [type] $path [description]
* @return [type] [description]
*/
public function get_view( $path ) {
return apply_filters( 'jet-dashboard/get-view', $this->path . 'views/' . $path . '.php' );
}
/**
* Returns wizard initial subpage
*
* @return string
*/
public function get_initial_page() {
return 'welcome-page';
Loading ...