LLMS_Admin_Tool_Batch_Eraser
Source Source
File: includes/admin/tools/class-llms-admin-tool-batch-eraser.php
class LLMS_Admin_Tool_Batch_Eraser extends LLMS_Abstract_Admin_Tool {
/**
* Tool ID.
*
* @var string
*/
protected $id = 'batch-eraser';
/**
* Retrieve a description of the tool
*
* This is displayed on the right side of the tool's list before the button.
*
* @since 3.37.19
*
* @return string
*/
protected function get_description() {
$count = $this->get_pending_batches();
$desc = __( 'Deletes pending batches generated by LifterLMS background processors.', 'lifterlms' );
$desc .= ' ';
// Translators: %d = the number of pending batches.
$desc .= sprintf(
_n(
'There is currently %d pending batch that will be deleted.',
'There are currently %d pending batches that will be deleted.',
$count,
'lifterlms'
),
$count
);
return $desc;
}
/**
* Retrieve the tool's label
*
* The label is the tool's title. It's displayed in the left column on the tool's list.
*
* @since 3.37.19
*
* @return string
*/
protected function get_label() {
return __( 'Delete processor batches', 'lifterlms' );
}
/**
* Retrieve the tool's button text
*
* @since 3.37.19
*
* @return string
*/
protected function get_text() {
return __( 'Delete batches', 'lifterlms' );
}
/**
* Retrieve the number of pending batches.
*
* @since 3.37.19
*
* @return int
*/
protected function get_pending_batches() {
$count = wp_cache_get( $this->id, 'llms_tool_data' );
if ( false === $count ) {
global $wpdb;
$count = absint( $wpdb->get_var( "SELECT COUNT(*) FROM {$wpdb->options} WHERE option_name LIKE '%llms_%_batch_%';" ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery
wp_cache_set( $this->id, $count, 'llms_tool_data' );
}
return $count;
}
/**
* Process the tool.
*
* This method should do whatever the tool actually does.
*
* By the time this tool is called a nonce and the user's capabilities have already been checked.
*
* @since 3.37.19
*
* @return mixed
*/
protected function handle() {
global $wpdb;
$res = $wpdb->query( "DELETE FROM {$wpdb->options} WHERE option_name LIKE '%llms_%_batch_%';" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
wp_cache_delete( $this->id, 'llms_tool_data' );
return $res > 0;
}
/**
* Conditionally load the tool
*
* This tool should only load if there's batches in the database.
*
* @since 3.37.19
*
* @return boolean Return `true` to load the tool and `false` to not load it.
*/
protected function should_load() {
return $this->get_pending_batches() > 0;
}
}
Expand full source code Collapse full source code View on GitHub
Methods Methods
- get_description — Retrieve a description of the tool
- get_label — Retrieve the tool's label
- get_pending_batches — Retrieve the number of pending batches.
- get_text — Retrieve the tool's button text
- handle — Process the tool.
- should_load — Conditionally load the tool
Changelog Changelog
| Version | Description |
|---|---|
| 3.37.19 | Introduced. |