Current File : /home/pacjaorg/www/copwordpres/wp-content/plugins/optinmonster/OMAPI/Promos/Base.php |
<?php
/**
* Base Promos class.
*
* @since 2.10.0
*
* @package OMAPI
* @author Justin Sternberg
*/
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Base Promos class.
*
* @since 2.10.0
*/
abstract class OMAPI_Promos_Base {
/**
* Holds the class object.
*
* @since 2.10.0
*
* @var object
*/
public static $instance;
/**
* Holds the base class object.
*
* @since 2.10.0
*
* @var object
*/
public $base;
/**
* Holds the welcome slug.
*
* @since 2.10.0
*
* @var string
*/
public $hook;
/**
* SeedProd plugin data.
*
* @since 2.10.0
*
* @var array
*/
public $plugin_data = array();
/**
* The promo id.
*
* @since 2.10.0
*
* @var string
*/
protected $promo = '';
/**
* The plugin id (from OMAPI_Plugins).
*
* @since 2.10.0
*
* @var string
*/
protected $plugin_id = '';
/**
* OMAPI_Plugins_Plugin instance.
*
* @since 2.10.0
*
* @var OMAPI_Plugins_Plugin
*/
public $plugin;
/**
* Primary class constructor.
*
* @since 2.10.0
*/
public function __construct() {
// If we are not in admin or admin ajax, return.
if ( ! is_admin() ) {
return;
}
// If user is in admin ajax or doing cron, return.
if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX ) || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
return;
}
// If user is not logged in, return.
if ( ! is_user_logged_in() ) {
return;
}
// return;
// If user cannot manage_options, return.
if ( ! OMAPI::get_instance()->can_access( $this->promo ) ) {
return;
}
// Set our object.
$this->set();
// Register the menu item.
add_action( 'admin_menu', array( $this, '_register_page' ) );
}
/**
* Sets our object instance and base class instance.
*
* @since 2.10.0
*/
public function set() {
self::$instance = $this;
$this->base = OMAPI::get_instance();
$this->plugin = OMAPI_Plugins_Plugin::get( $this->plugin_id );
}
/**
* Loads the OptinMonster admin menu and page.
*
* @since 2.10.0
*/
abstract protected function register_page();
/**
* Loads the OptinMonster admin menu and page.
*
* @since 2.10.0
*/
public function _register_page() {
$hook = $this->register_page();
// If SeedProd is active, we want to redirect to its own landing page.
if ( ! empty( $this->plugin['active'] ) ) {
add_action( 'load-' . $hook, array( $this, 'redirect_plugin' ) );
}
// Load settings page assets.
add_action( 'load-' . $hook, array( $this, 'assets' ) );
}
/**
* Redirects to the seedprod admin page.
*
* @since 2.10.0
*/
abstract public function redirect_plugin();
/**
* Outputs the OptinMonster settings page.
*
* @since 2.10.0
*/
abstract public function display_page();
/**
* Loads assets for the settings page.
*
* @since 2.10.0
*/
public function assets() {
add_filter( 'admin_body_class', array( $this, 'add_body_classes' ) );
$this->base->menu->styles();
$this->base->menu->scripts();
}
/**
* Add body classes.
*
* @since 2.10.0
*/
public function add_body_classes( $classes ) {
$classes .= " omapi-{$this->promo} ";
return $classes;
}
}