LifterLMS
Main LifterLMS Class
Contents
Source Source
File: class-lifterlms.php
final class LifterLMS { use LLMS_Trait_Singleton; /** * LifterLMS Plugin Version. * * @var string */ public $version = '7.5.0'; /** * LLMS_Assets instance * * @var LLMS_Assets */ public $assets = null; /** * LLMS_Query instance * * @var LLMS_Query */ public $query = null; /** * Session instance * * @var LLMS_Session */ public $session = null; /** * LifterLMS Constructor. * * @since 1.0.0 * @since 3.21.1 Unknown * @since 4.0.0 Load `$this->session` at `plugins_loaded` in favor of during class construction. * Remove deprecated `__autoload()` & initialize new file loader class. * @since 4.13.0 Check site duplicate status on `admin_init`. * @since 5.3.0 Move the loading of the LifterLMS autoloader to the main `lifterlms.php` file. * @since 6.1.0 Automatically load payment gateways. * @since 6.4.0 Moved registration of `LLMS_Shortcodes::init()` with the 'init' hook to `LLMS_Shortcodes::__construct()`. * * @return void */ private function __construct() { /** * Localize as early as possible. * * Since 4.6 the "just_in_time" l10n will load the default (not custom) file first * so we must localize before any l10n functions (like `__()`) are used * so that our custom "safe" location will always load first. */ $this->localize(); $this->define_constants(); $this->init_assets(); $this->query = new LLMS_Query(); // Hooks. register_activation_hook( __FILE__, array( 'LLMS_Install', 'install' ) ); add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'add_action_links' ), 10, 1 ); add_action( 'init', array( $this, 'init' ), 0 ); add_action( 'init', array( $this, 'integrations' ), 1 ); add_action( 'init', array( $this, 'processors' ), 5 ); add_action( 'init', array( $this, 'events' ), 5 ); add_action( 'init', array( $this, 'init_session' ), 6 ); // After table installation which happens at init 5. add_action( 'init', array( $this, 'payment_gateways' ) ); add_action( 'init', array( $this, 'include_template_functions' ) ); add_action( 'admin_init', array( 'LLMS_Site', 'check_status' ) ); // Tracking. if ( defined( 'DOING_CRON' ) && DOING_CRON && 'yes' === get_option( 'llms_allow_tracking', 'no' ) ) { LLMS_Tracker::init(); } /** * Action fired after LifterLMS is fully loaded. * * @since Unknown */ do_action( 'lifterlms_loaded' ); } /** * Define LifterLMS Constants * * @since 1.0.0 * @since 3.17.8 Added `LLMS_PLUGIN_URL` && `LLMS_ASSETS_SUFFIX`. * @since 4.0.0 Moved definitions of `LLMS_PLUGIN_FILE` and `LLMS_PLUGIN_DIR` to the main `lifterlms.php` file. * Use `llms_maybe_define_constant()` to reduce code complexity. * @since 7.2.0 Added `LLMS_ASSETS_VERSION` constant. * * @return void */ private function define_constants() { llms_maybe_define_constant( 'LLMS_VERSION', $this->version ); llms_maybe_define_constant( 'LLMS_TEMPLATE_PATH', $this->template_path() ); llms_maybe_define_constant( 'LLMS_PLUGIN_URL', plugin_dir_url( LLMS_PLUGIN_FILE ) ); $upload_dir = wp_upload_dir(); llms_maybe_define_constant( 'LLMS_LOG_DIR', $upload_dir['basedir'] . '/llms-logs/' ); llms_maybe_define_constant( 'LLMS_TMP_DIR', $upload_dir['basedir'] . '/llms-tmp/' ); // If we're loading in debug mode. $script_debug = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG; $wp_debug = defined( 'WP_DEBUG' ) && WP_DEBUG; // If debugging, load the unminified version otherwise load minified. if ( ! defined( 'LLMS_ASSETS_SUFFIX' ) ) { define( 'LLMS_ASSETS_SUFFIX', $script_debug ? '' : '.min' ); } // If debugging, use time for asset version otherwise use plugin version. if ( ! defined( 'LLMS_ASSETS_VERSION' ) ) { define( 'LLMS_ASSETS_VERSION', ( $script_debug || $wp_debug ) ? time() : $this->version ); } } /** * Load Hooks * * @since Unknown * * @return void */ public function include_template_functions() { include_once 'includes/llms.template.functions.php'; } /** * Init LifterLMS when WordPress Initialises. * * @since 1.0.0 * @since 3.21.1 Unknown. * @since 4.0.0 Don't initialize removed `LLMS_Person()` class. * @since 4.12.0 Check site staging/duplicate status & trigger associated actions. * @since 4.13.0 Remove site staging/duplicate check and run only on `admin_init`. * @since 5.8.0 Initialize block templates. * * @return void */ public function init() { do_action( 'before_lifterlms_init' ); $this->block_templates(); $this->engagements(); $this->notifications(); do_action( 'lifterlms_init' ); } /** * Initialize the core asset handler class. * * @since 4.4.0 * * @return LLMS_Assets */ private function init_assets() { $this->assets = new LLMS_Assets( 'llms-core' ); $this->assets->define( 'scripts', require LLMS_PLUGIN_DIR . 'includes/assets/llms-assets-scripts.php' ); $this->assets->define( 'styles', require LLMS_PLUGIN_DIR . 'includes/assets/llms-assets-styles.php' ); return $this->assets; } /** * Initializes an LLMS_Session() into the $session variable * * @since 4.0.0 * * @return LLMS_Session */ public function init_session() { if ( is_null( $this->session ) ) { $this->session = new LLMS_Session(); } return $this->session; } /** * Get the plugin url. * * @return string */ public function plugin_url() { return untrailingslashit( plugins_url( '/', __FILE__ ) ); } /** * Get the plugin path. * * @return string */ public function plugin_path() { return untrailingslashit( plugin_dir_path( __FILE__ ) ); } /** * Get the template path. * * @return string */ public function template_path() { return apply_filters( 'llms_template_path', 'lifterlms/' ); } /** * Retrieve the LLMS_Emails singleton. * * @since Unknown * * @return LLMS_Emails */ public function mailer() { return LLMS_Emails::instance(); } /** * Retrieve the LLMS_Achievements singleton. * * @since Unknown * * @return LLMS_Achievements */ public function achievements() { return LLMS_Achievements::instance(); } /** * Retrieve the LLMS_Certificates singleton. * * @since Unknown * * @return LLMS_Certificates */ public function certificates() { return LLMS_Certificates::instance(); } /** * Retrieve the LLMS_Engagements singleton. * * @since Unknown * * @return LLMS_Engagements */ public function engagements() { return LLMS_Engagements::instance(); } /** * Block templates instance. * * @since 5.8.0 * * @return LLMS_Block_Templates */ public function block_templates() { return LLMS_Block_Templates::instance(); } /** * Events instance. * * @since 3.36.0 * * @return LLMS_Events */ public function events() { return LLMS_Events::instance(); } /** * Grading instance * * @since 3.24.0 * * @return LLMS_Grades */ public function grades() { return LLMS_Grades::instance(); } /** * Get integrations * * @return LLMS_Integrations instance */ public function integrations() { return LLMS_Integrations::instance(); } /** * Retrieve an instance of the notifications class * * @return LLMS_Notifications * @since 3.8.0 * @version 3.8.0 */ public function notifications() { return LLMS_Notifications::instance(); } /** * Get payment gateways. * * @return LLMS_Payment_Gateways */ public function payment_gateways() { return LLMS_Payment_Gateways::instance(); } /** * Load all background processors. * * @since 3.15.0 * * @return LLMS_Processors */ public function processors() { return LLMS_Processors::instance(); } /** * Add plugin settings Action Links * * @since Unknown * * @param string[] $links Existing action links. * @return string[] */ public function add_action_links( $links ) { $lifter_links = array( '<a href="' . admin_url( 'admin.php?page=llms-settings' ) . '">' . __( 'Settings', 'lifterlms' ) . '</a>', ); if ( 3 === count( $links ) ) { return $links; } return array_merge( $links, $lifter_links ); } /** * Localize the plugin * * Language files can be found in the following locations (The first loaded file takes priority): * * 1. wp-content/languages/lifterlms/lifterlms-{LOCALE}.mo * * This is recommended "safe" location where custom language files can be stored. A file * stored in this directory will never be automatically overwritten. * * 2. wp-content/languages/plugins/lifterlms-{LOCALE}.mo * * This is the default directory where WordPress will download language files from the * WordPress GlotPress server during updates. If you store a custom language file in this * directory it will be overwritten during updates. * * 3. wp-content/plugins/lifterlms/languages/lifterlms-{LOCALE}.mo * * This is the the LifterLMS plugin directory. A language file stored in this directory will * be removed from the server during a LifterLMS plugin update. * * @since Unknown * @since 4.9.0 Use `llms_load_textdomain()`. * * @return void */ public function localize() { require_once LLMS_PLUGIN_DIR . 'includes/functions/llms-functions-l10n.php'; llms_load_textdomain( 'lifterlms' ); }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — LifterLMS Constructor.
- achievements — Retrieve the LLMS_Achievements singleton.
- add_action_links — Add plugin settings Action Links
- autoload — Auto-load LLMS classes.
- block_templates — Block templates instance.
- certificates — Retrieve the LLMS_Certificates singleton.
- define_constants — Define LifterLMS Constants
- engagements — Retrieve the LLMS_Engagements singleton.
- events — Events instance.
- grades — Grading instance
- include_template_functions — Load Hooks
- includes — Include required core classes
- includes_theme_support — Conditionally require additional theme support classes.
- init — Init LifterLMS when WordPress Initialises.
- init_assets — Initialize the core asset handler class.
- init_session — Initializes an LLMS_Session() into the $session variable
- instance — Main Instance of LifterLMS Ensures only one instance of LifterLMS is loaded or can be loaded.
- integrations — Get integrations
- localize — Localize the plugin
- mailer — Retrieve the LLMS_Emails singleton.
- notifications — Retrieve an instance of the notifications class
- payment_gateways — Get payment gateways.
- plugin_path — Get the plugin path.
- plugin_url — Get the plugin url.
- processors — Load all background processors.
- template_path — Get the template path.
Changelog Changelog
Version | Description |
---|---|
5.3.0 | Replace singleton code with LLMS_Trait_Singleton . |
4.0.0 | Update session management. Remove deprecated class files and variables. Move includes (file loading) into the LLMS_Loader class. |
3.38.1 | Include LLMS_Mime_Type_Extractor class. |
3.37.0 | Move theme support methods to LLMS_Theme_Support. |
3.36.1 | Include SendWP Connector. |
3.36.0 | Added events classes and methods. |
3.34.0 | Include the LLMS_Admin_Users_Table class. |
3.32.0 | Update action-scheduler to latest version; load staging class on the admin panel. |
1.0.0 | Introduced. |