HookImplementations.php in Warmer 8
File
src/HookImplementations.php
View source
<?php
namespace Drupal\warmer;
use Drupal\Component\Plugin\Exception\PluginException;
use Drupal\warmer\Plugin\WarmerPluginBase;
class HookImplementations {
public static function enqueueWarmers() {
$warmer_manager = \Drupal::service('plugin.manager.warmer');
$warmer_definitions = $warmer_manager
->getDefinitions();
$warmers = array_map(function ($warmer_definition) use ($warmer_manager) {
try {
return $warmer_manager
->createInstance($warmer_definition['id']);
} catch (PluginException $exception) {
return NULL;
}
}, $warmer_definitions);
$warmers = array_filter($warmers, function ($warmer) {
return $warmer instanceof WarmerPluginBase;
});
$warmers = array_filter($warmers, function (WarmerPluginBase $warmer) {
return $warmer
->isActive();
});
$queue_manager = \Drupal::service('warmer.queue_manager');
array_map(function (WarmerPluginBase $warmer) use ($queue_manager) {
static::singleWarmer($warmer, $queue_manager);
}, $warmers);
}
private static function singleWarmer(WarmerPluginBase $warmer, QueueManager $queue_manager) {
$ids = [
NULL,
];
while ($ids = $warmer
->buildIdsBatch(end($ids))) {
$queue_manager
->enqueueBatch(static::class . '::warmBatch', $ids, $warmer);
}
}
public static function warmBatch(array $ids, $warmer_id) {
$warmer_manager = \Drupal::service('plugin.manager.warmer');
$warmer = $warmer_manager
->createInstance($warmer_id);
$items = $warmer
->loadMultiple($ids);
return $warmer
->warmMultiple($items);
}
}