187 lines
4.0 KiB
PHP
187 lines
4.0 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* WPOS Recommended Plugins
|
||
|
*
|
||
|
* @author WP Online Support
|
||
|
* @package Essential Plugins Bundle
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
|
||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||
|
exit; // Exit if accessed directly
|
||
|
}
|
||
|
|
||
|
if ( ! class_exists( 'WPOS_ESPBW' ) ) :
|
||
|
|
||
|
/**
|
||
|
* Main Recommended Plugins Class By WP Online Support.
|
||
|
*
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
final class WPOS_ESPBW {
|
||
|
|
||
|
/**
|
||
|
* @var Instance
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
protected static $instance = null;
|
||
|
|
||
|
/**
|
||
|
* Main Instance.
|
||
|
*
|
||
|
* Insures that only one instance of Analytics exists in memory at any one time.
|
||
|
* Also prevents needing to define globals all over the place.
|
||
|
*
|
||
|
* @since 1.0
|
||
|
* @uses WPOS_ESPBW::setup_constants() Setup the constants needed.
|
||
|
* @uses WPOS_ESPBW::includes() Include the required files.
|
||
|
* @uses WPOS_ESPBW::wpos_espbw_plugins_loaded() load the language files.
|
||
|
* @see WPOS_ESPBW()
|
||
|
* @return object the one true instance
|
||
|
*/
|
||
|
public static function instance() {
|
||
|
if ( is_null( self::$instance ) ) {
|
||
|
self::$instance = new self();
|
||
|
}
|
||
|
return self::$instance;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Throw error on object clone.
|
||
|
*
|
||
|
* The whole idea of the singleton design pattern is that there is a single object therefore, we don't want the object to be cloned.
|
||
|
*
|
||
|
* @since 1.0
|
||
|
* @access protected
|
||
|
* @return void
|
||
|
*/
|
||
|
public function __clone() {
|
||
|
// Cloning instances of the class is forbidden.
|
||
|
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?' ), '1.0' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Disable unserializing of the class.
|
||
|
*
|
||
|
* @since 1.0
|
||
|
* @access protected
|
||
|
* @return void
|
||
|
*/
|
||
|
public function __wakeup() {
|
||
|
// Unserializing instances of the class is forbidden.
|
||
|
_doing_it_wrong( __FUNCTION__, __( 'Cheatin’ huh?' ), '1.0' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Plugin Constructor.
|
||
|
*/
|
||
|
public function __construct() {
|
||
|
$this->setup_constants();
|
||
|
$this->includes();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Define constant if not already set.
|
||
|
*
|
||
|
* @param string $name
|
||
|
* @param string|bool $value
|
||
|
*/
|
||
|
public function define( $name, $value ) {
|
||
|
if ( ! defined( $name ) ) {
|
||
|
define( $name, $value );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Setup plugin constants. Basic plugin definitions
|
||
|
*
|
||
|
* @access private
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
private function setup_constants() {
|
||
|
$this->define( 'WPOS_ESPBW_VERSION', '1.0' );
|
||
|
$this->define( 'WPOS_ESPBW_DIR', plugin_dir_path( __FILE__ ) );
|
||
|
$this->define( 'WPOS_ESPBW_URL', plugin_dir_url( __FILE__ ) );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Include required files.
|
||
|
*
|
||
|
* @access private
|
||
|
* @since 1.0
|
||
|
*/
|
||
|
private function includes() {
|
||
|
|
||
|
// Functions file
|
||
|
require_once WPOS_ESPBW_DIR .'/includes/espbw-functions.php';
|
||
|
|
||
|
// Script Class
|
||
|
require_once WPOS_ESPBW_DIR .'/includes/class-espbw-script.php';
|
||
|
|
||
|
// Admin Class
|
||
|
require_once WPOS_ESPBW_DIR .'/includes/admin/class-espbw-admin.php';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* The main function responsible for returning the one true
|
||
|
* Instance to functions everywhere.
|
||
|
*
|
||
|
* Use this function like you would a global variable, except without needing
|
||
|
* to declare the global.
|
||
|
*
|
||
|
* Example: <?php $wpos_espbw = WPOS_ESPBW(); ?>
|
||
|
*
|
||
|
* @since 1.0
|
||
|
* @return object The one true Analytics Instance.
|
||
|
*/
|
||
|
function WPOS_ESPBW_RECOMMEND() {
|
||
|
return WPOS_ESPBW::instance();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* Initialize Analytics Module
|
||
|
*
|
||
|
* @since 1.0
|
||
|
* @return object The one true Analytics Instance.
|
||
|
*/
|
||
|
function wpos_espbw_init_module( $args = array() ) {
|
||
|
|
||
|
global $wpos_espbw_module;
|
||
|
|
||
|
$defaul_args = array(
|
||
|
'prefix' => '',
|
||
|
'menu' => false,
|
||
|
'position' => 4,
|
||
|
);
|
||
|
|
||
|
$args = wp_parse_args( $args, $defaul_args );
|
||
|
|
||
|
// If required data is not there then simply return
|
||
|
if( empty( $args['menu'] ) ) {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
// Taking some variables
|
||
|
$wpos_espbw_module = ! empty( $wpos_espbw_module ) ? $wpos_espbw_module : array();
|
||
|
$wpos_espbw_module[] = $args;
|
||
|
|
||
|
return $wpos_espbw_module;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* Initialize Analytics Class Once all stuff has been loaded
|
||
|
*
|
||
|
* @since 1.0
|
||
|
* @return object The one true Analytics Instance.
|
||
|
*/
|
||
|
function wpos_espbw_plugins_loaded() {
|
||
|
|
||
|
// Get Analytics Running.
|
||
|
WPOS_ESPBW_RECOMMEND();
|
||
|
}
|
||
|
add_action( 'plugins_loaded', 'wpos_espbw_plugins_loaded', 12 );
|
||
|
|
||
|
endif; // End if class_exists check
|