LLMS_Processors
LLMS_Processors class
Description Description
Load, access, and manage LifterLMS Processors
Source Source
File: includes/processors/class.llms.processors.php
class LLMS_Processors { use LLMS_Trait_Singleton; /** * Processor classes that should be loaded * * This should match the classname of a processor. * * @var array */ private $classes = array( 'achievement_sync', 'certificate_sync', 'course_data', 'membership_bulk_enroll', ); /** * Array of available processors loaded via $this->load_all() * * @var LLMS_Abstract_Processor[] */ private $processors = array(); /** * Constructor. * * @since 3.15.0 * @since 5.0.0 Remove call to removed method `includes()`. * @since 6.0.0 Made sure the admin notices file is required. * * @return void */ private function __construct() { // Processors may trigger a notice during a cron and notices might not be available. require_once LLMS_PLUGIN_DIR . 'includes/admin/class.llms.admin.notices.php'; $this->load_all(); } /** * Access a single loaded processor instance * * @since 3.15.0 * * @param string $name Name of the processor. * @return LLMS_Abstract_Processor|false Instance of the processor if found, otherwise false. */ public function get( $name ) { if ( isset( $this->processors[ $name ] ) ) { return $this->processors[ $name ]; } return false; } /** * Load all processors. * * @since 3.15.0 * @since 5.8.0 Use the value from the `llms_load_processors` filter. * * @return void */ private function load_all() { /** * Filter the list of available processors to be loaded. * * Third parties can use this filter to load custom processors. * * @since 5.0.0 * * @see llms_load_processor_path To add a custom load path for the loaded processor. * * @param string[] $classes A list of processor class ids/slugs. */ $classes = apply_filters( 'llms_load_processors', $this->classes ); foreach ( $classes as $name ) { $class = $this->load_processor( $name ); if ( $class ) { $this->processors[ $name ] = $class; } } } /** * Load a single processor * * @since 3.15.0 * @since 6.0.0 Added the ability to load processor class files with dashes in their file name. * * @param string $name Name of the processor. * @return LLMS_Abstract_Processor|boolean Instance of the processor if found and not yet included, `false` if * the processor can't be found, and `true` if it has already been included. */ public function load_processor( $name ) { /** * Filter the path of a processor class. * * If the returned path isn't the full path to a PHP file the file will be attempted to be * loaded from the LifterLMS core's processor directory by replacing underscores with dashes * and prepending `class-llms-processor-` and appending `.php`. * * @since 5.0.0 * * @see LLMS_Processors::load_all() For the `llms_load_processors` filter used to register custom processors. * * @param string $name Processor class name ID/slug. */ $path = apply_filters( 'llms_load_processor_path', $name ); // Try loading the filtered processor path. if ( $path !== $name ) { return file_exists( $name ) ? require_once $name : false; } $file = 'class-llms-processor-' . str_replace( '_', '-', $name ) . '.php'; $path = LLMS_PLUGIN_DIR . 'includes/processors/'; // Try loading a LifterLMS processor with a dashed file name. if ( file_exists( $path . $file ) ) { return require_once $path . $file; } // Try loading a LifterLMS processor with a dotted file name. $file = str_replace( '-', '.', $file ); if ( file_exists( $path . $file ) ) { return require_once $path . $file; } return false; } }
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor.
- get — Access a single loaded processor instance
- includes — Include classes required by processors
- instance — Main instance
- load_all — Load all processors.
- load_processor — Load a single processor
Changelog Changelog
Version | Description |
---|---|
6.0.0 | Added the awarded certificates bulk sync processor. Removed the deprecated LLMS_Processors::$_instance property. |
5.3.0 | Replace singleton code with LLMS_Trait_Singleton . |
5.0.0 | Removed private method includes() . Stop loading removed processor "table_to_csv". |
3.15.0 | Introduced. |