LLMS_Abstract_Notification_Processor
LifterLMS Notification Background Processor abstract class
Source Source
File: includes/abstracts/llms.abstract.notification.processor.php
abstract class LLMS_Abstract_Notification_Processor extends WP_Background_Process {
/**
* Enables event logging
*
* @var boolean
*/
private $enable_logging = true;
/**
* Constructor
*
* @since 3.8.0
* @version 3.8.0
*/
public function __construct() {
parent::__construct();
if ( ! defined( 'LLMS_NOTIFICATIONS_LOGGING' ) ) {
define( 'LLMS_NOTIFICATIONS_LOGGING', true );
}
$this->enable_logging = ( defined( 'LLMS_NOTIFICATIONS_LOGGING' ) && LLMS_NOTIFICATIONS_LOGGING );
}
/**
* Called when queue is emptied and action is complete
*
* @return void
* @since 3.8.0
* @version 3.8.0
*/
protected function complete() {
$this->log( sprintf( 'Processing for %s finished', $this->action ) );
parent::complete();
}
/**
* Starts the queue.
*
* @since 3.8.0
* @since 3.38.0 Added return from parent method.
* @since 6.10.1 Fixed malformed sprintf when logging dispatch errors.
*
* @return array|WP_Error Response from `wp_remote_post()`.
*/
public function dispatch() {
$this->log(
sprintf(
'Dispatching %s',
$this->action
)
);
$dispatched = parent::dispatch();
if ( is_wp_error( $dispatched ) ) {
$this->log(
sprintf(
'Unable to dispatch %1$s: %2$s',
$this->action,
$dispatched->get_error_message()
)
);
}
return $dispatched;
}
/**
* Handle cron healthcheck
*
* Restart the background process if not already running
* and data exists in the queue.
*
* Overridden to enable the "force" option to work, replaces "exit" with "return"
* so that we can redirect and manually call the cronjob
*
* @return void
* @since 3.8.0
* @version 3.8.0
*/
public function handle_cron_healthcheck() {
if ( $this->is_process_running() ) {
// Background process already running.
return;
}
if ( $this->is_queue_empty() ) {
// No data to process.
$this->clear_scheduled_event();
return;
}
$this->handle();
}
/**
* Returns true if the processor is running
*
* @return boolean
* @since 3.8.0
* @version 3.8.0
*/
public function is_processing() {
return ( false === $this->is_queue_empty() );
}
/**
* Log event data to an update file when logging enabled
*
* @param mixed $data data to log
* @return void
* @since 3.8.0
* @version 3.8.0
*/
public function log( $data ) {
if ( $this->enable_logging ) {
llms_log( $data, 'notifications' );
}
}
}
Expand full source code Collapse full source code View on GitHub
Methods Methods
- __construct — Constructor
- complete — Called when queue is emptied and action is complete
- dispatch — Starts the queue.
- handle_cron_healthcheck — Handle cron healthcheck
- is_processing — Returns true if the processor is running
- log — Log event data to an update file when logging enabled
Changelog Changelog
| Version | Description |
|---|---|
| 3.8.0 | |
| 3.38.0 | Introduced. |