Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 34 |
| LocaleTranslation | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 34 |
| __construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
| create | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 8 |
|||
| processItem | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 22 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\locale\Plugin\QueueWorker\LocaleTranslation. | |
| */ | |
| namespace Drupal\locale\Plugin\QueueWorker; | |
| use Drupal\Core\Extension\ModuleHandlerInterface; | |
| use Drupal\Core\Plugin\ContainerFactoryPluginInterface; | |
| use Drupal\Core\Queue\QueueInterface; | |
| use Drupal\Core\Queue\QueueWorkerBase; | |
| use Symfony\Component\DependencyInjection\ContainerInterface; | |
| /** | |
| * Executes interface translation queue tasks. | |
| * | |
| * @QueueWorker( | |
| * id = "locale_translation", | |
| * title = @Translation("Update translations"), | |
| * cron = {"time" = 30} | |
| * ) | |
| */ | |
| class LocaleTranslation extends QueueWorkerBase implements ContainerFactoryPluginInterface { | |
| /** | |
| * The module handler. | |
| * | |
| * @var \Drupal\Core\Extension\ModuleHandlerInterface | |
| */ | |
| protected $moduleHandler; | |
| /** | |
| * The queue object. | |
| * | |
| * @var \Drupal\Core\Queue\QueueInterface | |
| */ | |
| protected $queue; | |
| /** | |
| * Constructs a new LocaleTranslation object. | |
| * | |
| * @param array $configuration | |
| * A configuration array containing information about the plugin instance. | |
| * @param string $plugin_id | |
| * The plugin_id for the plugin instance. | |
| * @param array $plugin_definition | |
| * The plugin implementation definition. | |
| * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler | |
| * The module handler. | |
| * @param \Drupal\Core\Queue\QueueInterface $queue | |
| * The queue object. | |
| */ | |
| public function __construct(array $configuration, $plugin_id, array $plugin_definition, ModuleHandlerInterface $module_handler, QueueInterface $queue) { | |
| parent::__construct($configuration, $plugin_id, $plugin_definition); | |
| $this->moduleHandler = $module_handler; | |
| $this->queue = $queue; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { | |
| return new static( | |
| $configuration, | |
| $plugin_id, | |
| $plugin_definition, | |
| $container->get('module_handler'), | |
| $container->get('queue')->get('locale_translation', TRUE) | |
| ); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| * | |
| * The translation update functions executed here are batch operations which | |
| * are also used in translation update batches. The batch functions may need | |
| * to be executed multiple times to complete their task, typically this is the | |
| * translation import function. When a batch function is not finished, a new | |
| * queue task is created and added to the end of the queue. The batch context | |
| * data is needed to continue the batch task is stored in the queue with the | |
| * queue data. | |
| */ | |
| public function processItem($data) { | |
| $this->moduleHandler->loadInclude('locale', 'batch.inc'); | |
| list($function, $args) = $data; | |
| // We execute batch operation functions here to check, download and import | |
| // the translation files. Batch functions use a context variable as last | |
| // argument which is passed by reference. When a batch operation is called | |
| // for the first time a default batch context is created. When called | |
| // iterative (usually the batch import function) the batch context is passed | |
| // through via the queue and is part of the $data. | |
| $last = count($args) - 1; | |
| if (!is_array($args[$last]) || !isset($args[$last]['finished'])) { | |
| $batch_context = [ | |
| 'sandbox' => [], | |
| 'results' => [], | |
| 'finished' => 1, | |
| 'message' => '', | |
| ]; | |
| } | |
| else { | |
| $batch_context = $args[$last]; | |
| unset ($args[$last]); | |
| } | |
| $args = array_merge($args, [&$batch_context]); | |
| // Call the batch operation function. | |
| call_user_func_array($function, $args); | |
| // If the batch operation is not finished we create a new queue task to | |
| // continue the task. This is typically the translation import task. | |
| if ($batch_context['finished'] < 1) { | |
| unset($batch_context['strings']); | |
| $this->queue->createItem([$function, $args]); | |
| } | |
| } | |
| } |