You are here

class EntityShareAsyncWorker in Entity Share 8.3

Same name and namespace in other branches
  1. 8.2 modules/entity_share_async/src/Plugin/QueueWorker/EntityShareAsyncWorker.php \Drupal\entity_share_async\Plugin\QueueWorker\EntityShareAsyncWorker

Asynchronous import queue worker.

Plugin annotation


@QueueWorker(
  id = "entity_share_async_import",
  title = @Translation("Entity Share asynchronous import"),
  cron = {"time" = 30}
)

Hierarchy

Expanded class hierarchy of EntityShareAsyncWorker

File

modules/entity_share_async/src/Plugin/QueueWorker/EntityShareAsyncWorker.php, line 25

Namespace

Drupal\entity_share_async\Plugin\QueueWorker
View source
class EntityShareAsyncWorker extends QueueWorkerBase implements ContainerFactoryPluginInterface {

  /**
   * Logger.
   *
   * @var \Psr\Log\LoggerInterface
   */
  protected $logger;

  /**
   * The import service.
   *
   * @var \Drupal\entity_share_client\Service\ImportServiceInterface
   */
  private $importService;

  /**
   * The state storage.
   *
   * @var \Drupal\Core\State\StateInterface
   */
  private $stateStorage;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, LoggerInterface $logger, ImportServiceInterface $import_service, StateInterface $state_storage) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->logger = $logger;
    $this->importService = $import_service;
    $this->stateStorage = $state_storage;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static($configuration, $plugin_id, $plugin_definition, $container
      ->get('logger.channel.entity_share_async'), $container
      ->get('entity_share_client.import_service'), $container
      ->get('state'));
  }

  /**
   * {@inheritdoc}
   */
  public function processItem($item) {
    $async_states = $this->stateStorage
      ->get(QueueHelperInterface::STATE_ID, []);

    // Import the entity.
    $import_context = new ImportContext($item['remote_id'], $item['channel_id'], $item['import_config_id']);
    $ids = $this->importService
      ->importEntities($import_context, [
      $item['uuid'],
    ], FALSE);
    if (empty($ids)) {
      $this->logger
        ->warning("Cannot synchronize item @uuid from channel @channel_id of remote @remote_id with the import config @import_config_id", [
        '@uuid' => $item['uuid'],
        '@channel_id' => $item['channel_id'],
        '@remote_id' => $item['remote_id'],
        '@import_config_id' => $item['import_config_id'],
      ]);
    }
    if (isset($async_states[$item['remote_id']][$item['channel_id']][$item['uuid']])) {
      unset($async_states[$item['remote_id']][$item['channel_id']][$item['uuid']]);
    }

    // Update states.
    $this->stateStorage
      ->set(QueueHelperInterface::STATE_ID, $async_states);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
EntityShareAsyncWorker::$importService private property The import service.
EntityShareAsyncWorker::$logger protected property Logger.
EntityShareAsyncWorker::$stateStorage private property The state storage.
EntityShareAsyncWorker::create public static function Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface::create
EntityShareAsyncWorker::processItem public function Works on a single queue item. Overrides QueueWorkerInterface::processItem
EntityShareAsyncWorker::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase::__construct
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.