• File: Base.php
  • Full Path: /home/matthif/www/wp-content/plugins/optinmonster/OMAPI/Promos/Base.php
  • Date Modified: 01/24/2025 1:58 PM
  • File size: 3.12 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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;
    }

}