class LayoutBuilderBlockSanitizerBatch in Layout Builder Block Sanitizer 8
Class LayoutBuilderBlockSanitizerBatch.
Provides batch functionality for processing.
Hierarchy
- class \Drupal\layout_builder_block_sanitizer\LayoutBuilderBlockSanitizerBatch implements ContainerInjectionInterface uses StringTranslationTrait
Expanded class hierarchy of LayoutBuilderBlockSanitizerBatch
1 file declares its use of LayoutBuilderBlockSanitizerBatch
- SanitizerForm.php in src/
Form/ SanitizerForm.php
1 string reference to 'LayoutBuilderBlockSanitizerBatch'
1 service uses LayoutBuilderBlockSanitizerBatch
File
- src/
LayoutBuilderBlockSanitizerBatch.php, line 14
Namespace
Drupal\layout_builder_block_sanitizerView source
class LayoutBuilderBlockSanitizerBatch implements ContainerInjectionInterface {
use StringTranslationTrait;
/**
* The layout builder block sanitizer manager.
*
* @var Drupal\layout_builder_block_sanitizer\LayoutBuilderBlockSanitizerManager
*/
protected $layoutBuilderBlockSanitizerManager;
/**
* The layout builder block sanitizer batch class.
*
* @var Drupal\layout_builder_block_sanitizer\LayoutBuilderBlockSanitizerBatch
*/
protected $layoutBuilderBlockSanitizerBatch;
/**
* Constructs a new SanitizerForm object.
*/
public function __construct(LayoutBuilderBlockSanitizerManager $layout_builder_block_sanitizer_manager) {
$this->layoutBuilderBlockSanitizerManager = $layout_builder_block_sanitizer_manager;
}
/**
* Create method.
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('layout_builder_block_sanitizer.manager'));
}
/**
* Kick off batch process to sanitize all nodes on site.
*/
public function batchSanitizeAllNodesStart() {
$nodes = $this->layoutBuilderBlockSanitizerManager
->getNodes();
$nids = array_keys($nodes);
batch_set([
'title' => $this
->t('Sanitizing nodes'),
'init_message' => $this
->t('Beginning node sanitize'),
'operations' => [
[
[
'Drupal\\layout_builder_block_sanitizer\\LayoutBuilderBlockSanitizerBatch',
'batchSanitizeAllNodes',
],
[
$nids,
],
],
],
'finished' => [
'Drupal\\layout_builder_block_sanitizer\\LayoutBuilderBlockSanitizerBatch',
'batchCompleted',
],
]);
}
/**
* Load nodes in batch process progressively to sanitize.
*/
public static function batchSanitizeAllNodes($nids, &$context) {
// Use the $context['sandbox'] at your convenience to store the
// information needed to track progression between successive calls.
if (empty($context['sandbox'])) {
// Flush caches to avoid false positives looking for block UUID.
drupal_flush_all_caches();
$context['sandbox'] = [];
$context['sandbox']['progress'] = 0;
$context['sandbox']['current_node'] = 0;
// Save node count for the termination message.
$context['sandbox']['max'] = count($nids);
}
$limit = 5;
// Retrieve the next group.
$current_node = $context['sandbox']['current_node'];
$limit_node = $context['sandbox']['current_node'] + $limit;
$result = range($current_node, $limit_node);
foreach ($result as $row) {
\Drupal::service('layout_builder_block_sanitizer.manager')
->sanitizeNode($nids[$row]);
$operation_details = t('Sanitizing NIDs :current to :limit', [
':current' => $current_node,
':limit' => $limit_node,
]);
// Store some results for post-processing in the 'finished' callback.
// The contents of 'results' will be available as $results in the
// 'finished' function (in this example, batch_example_finished()).
$context['results'][] = $row;
// Update our progress information.
$context['sandbox']['progress']++;
$context['sandbox']['current_node'] = $row;
$context['message'] = t('@details', [
'@details' => $operation_details,
]);
}
// Inform the batch engine that we are not finished,
// and provide an estimation of the completion level we reached.
if ($context['sandbox']['progress'] != $context['sandbox']['max']) {
$context['finished'] = $context['sandbox']['progress'] >= $context['sandbox']['max'];
}
}
/**
* Callback for batch processing completed.
*/
public static function batchCompleted($success, $results, $operations) {
$messenger = \Drupal::messenger();
if ($success == TRUE) {
$messenger
->addMessage(t('@count nodes were sanitized.', [
'@count' => count($results),
]));
}
else {
// An error occurred.
$messenger
->addMessage(t('An error occurred while processing.'));
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
LayoutBuilderBlockSanitizerBatch:: |
protected | property | The layout builder block sanitizer batch class. | |
LayoutBuilderBlockSanitizerBatch:: |
protected | property | The layout builder block sanitizer manager. | |
LayoutBuilderBlockSanitizerBatch:: |
public static | function | Callback for batch processing completed. | |
LayoutBuilderBlockSanitizerBatch:: |
public static | function | Load nodes in batch process progressively to sanitize. | |
LayoutBuilderBlockSanitizerBatch:: |
public | function | Kick off batch process to sanitize all nodes on site. | |
LayoutBuilderBlockSanitizerBatch:: |
public static | function |
Create method. Overrides ContainerInjectionInterface:: |
|
LayoutBuilderBlockSanitizerBatch:: |
public | function | Constructs a new SanitizerForm object. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |