2017-03-01 19:51:34 -05:00
< ? php
class Genesis_Simple_Sidebars {
/**
* Plugin version
*/
public $plugin_version = '2.1.0' ;
/**
* Minimum WordPress version.
*/
public $min_wp_version = '4.7.2' ;
/**
* Minimum Genesis version.
*/
public $min_genesis_version = '2.4.2' ;
/**
* The plugin textdomain, for translations.
*/
public $plugin_textdomain = 'genesis-simple-sidebars' ;
/**
* The url to the plugin directory.
*/
public $plugin_dir_url ;
/**
* The path to the plugin directory.
*/
public $plugin_dir_path ;
/**
* The main settings field for this plugin.
*/
public $settings_field = 'ss-settings' ;
/**
* Core functions of sidebar registration and output.
*/
public $core ;
/**
* Admin menu and settings page.
*/
public $admin ;
/**
* Entry settings and metadata.
*/
public $entry ;
/**
* Constructor.
*
* @since 2.1.0
*/
public function __construct () {
$this -> plugin_dir_url = plugin_dir_url ( __FILE__ );
$this -> plugin_dir_path = plugin_dir_path ( __FILE__ );
// For backward compatibility
define ( 'SS_PLUGIN_DIR' , $this -> plugin_dir_path );
}
/**
* Initialize.
*
* @since 2.1.0
*/
public function init () {
2017-03-07 15:18:28 -05:00
$this -> load_plugin_textdomain ();
2017-03-01 19:51:34 -05:00
2017-03-07 15:18:28 -05:00
add_action ( 'admin_notices' , array ( $this , 'requirements_notice' ) );
2017-03-06 11:36:53 -05:00
2017-03-01 19:51:34 -05:00
$this -> includes ();
$this -> instantiate ();
}
/**
2017-03-06 11:01:36 -05:00
* Show admin notice if minimum requirements aren't met.
2017-03-01 19:51:34 -05:00
*
2017-03-07 15:21:21 -05:00
* @since 2.1.0
2017-03-01 19:51:34 -05:00
*/
2017-03-06 11:01:36 -05:00
public function requirements_notice () {
2017-03-01 19:51:34 -05:00
if ( ! defined ( 'PARENT_THEME_VERSION' ) || ! version_compare ( PARENT_THEME_VERSION , $this -> min_genesis_version , '>=' ) ) {
2017-03-06 12:29:22 -05:00
$action = defined ( 'PARENT_THEME_VERSION' ) ? __ ( 'upgrade to' , 'genesis-simple-sidebars' ) : __ ( 'install and activate' , 'genesis-simple-sidebars' );
2017-03-06 15:41:58 -05:00
$message = sprintf ( __ ( 'Genesis Simple Sidebars requires WordPress %s and Genesis %s, or greater. Please %s the latest version of <a href="%s" target="_blank">Genesis</a> to use this plugin.' , 'genesis-simple-sidebars' ), $this -> min_wp_version , $this -> min_genesis_version , $action , 'http://my.studiopress.com/?download_id=91046d629e74d525b3f2978e404e7ffa' );
2017-03-06 11:01:36 -05:00
echo '<div class="notice notice-warning"><p>' . $message . '</p></div>' ;
2017-03-01 19:51:34 -05:00
}
}
/**
* Load the plugin textdomain, for translation.
*
* @since 2.1.0
*/
public function load_plugin_textdomain () {
2017-03-06 11:36:53 -05:00
load_plugin_textdomain ( $this -> plugin_textdomain , false , dirname ( plugin_basename ( __FILE__ ) ) . '/languages/' );
2017-03-01 19:51:34 -05:00
}
/**
* All general includes.
*
* @since 2.1.0
*/
public function includes () {
2017-03-10 14:27:11 -05:00
require_once ( $this -> plugin_dir_path . 'includes/functions.php' );
2017-03-01 20:01:43 -05:00
require_once ( $this -> plugin_dir_path . 'includes/deprecated.php' );
2017-03-01 19:51:34 -05:00
}
/**
* Include the class file, instantiate the classes, create objects.
*
* @since 2.1.0
*/
public function instantiate () {
add_action ( 'genesis_setup' , array ( $this , 'genesis_dependencies' ) );
}
/**
* Load and instantiate any Genesis dependencies.
*
* @since 2.1.0
*/
public function genesis_dependencies () {
require_once ( $this -> plugin_dir_path . 'includes/class-genesis-simple-sidebars-core.php' );
$this -> core = new Genesis_Simple_Sidebars_Core ;
$this -> core -> init ();
// Anything beyond this point should only be loaded if in the admin.
if ( ! is_admin () ) {
return ;
}
require_once ( $this -> plugin_dir_path . 'includes/class-genesis-simple-sidebars-entry.php' );
$this -> entry = new Genesis_Simple_Sidebars_Entry ;
$this -> entry -> init ();
require_once ( $this -> plugin_dir_path . 'includes/class-genesis-simple-sidebars-term.php' );
$this -> term = new Genesis_Simple_Sidebars_Term ;
$this -> term -> init ();
require_once ( $this -> plugin_dir_path . 'includes/class-genesis-simple-sidebars-admin.php' );
$this -> admin = new Genesis_Simple_Sidebars_Admin ;
$this -> admin -> admin_menu ();
// For backward compatibility
global $_genesis_simple_sidebars ;
$_genesis_simple_sidebars = $this -> admin ;
}
}
/**
* Helper function to retrieve the static object without using globals.
*
* @since 2.1.0
*/
function Genesis_Simple_Sidebars () {
static $object ;
if ( null == $object ) {
$object = new Genesis_Simple_Sidebars ;
}
return $object ;
}
/**
* Initialize the object on `plugins_loaded`.
*/
add_action ( 'plugins_loaded' , array ( Genesis_Simple_Sidebars (), 'init' ) );