test_support-1.0.x-dev/tests/modules/test_support_queue/src/Plugin/QueueWorker/CreateNode.php
tests/modules/test_support_queue/src/Plugin/QueueWorker/CreateNode.php
<?php
namespace Drupal\test_support_queue\Plugin\QueueWorker;
use Drupal\Core\Entity\EntityTypeManager;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Queue\QueueWorkerBase;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* @QueueWorker(
* id = "create_node_worker",
* title = @Translation("Creates nodes based on the title data stored in the queue"),
* cron = {"time" = 10}
* )
*/
class CreateNode extends QueueWorkerBase implements ContainerFactoryPluginInterface
{
/** @var EntityTypeManager */
private $entityTypeManager;
/**
* @param array<mixed> $configuration
* @param string $pluginId
* @param mixed $pluginDefinition
*/
public static function create(ContainerInterface $container, array $configuration, $pluginId, $pluginDefinition)
{
return new static(
$configuration,
$pluginId,
$pluginDefinition,
$container->get('entity_type.manager')
);
}
/**
* @param array<mixed> $configuration
* @param string $pluginId
* @param mixed $pluginDefinition
*/
public function __construct(array $configuration, $pluginId, $pluginDefinition, EntityTypeManager $entityTypeManager)
{
parent::__construct($configuration, $pluginId, $pluginDefinition);
$this->entityTypeManager = $entityTypeManager;
}
/** @param array|mixed $data */
public function processItem($data): void
{
if (is_array($data) === false) {
return;
}
if (isset($data['title']) === false) {
return;
}
$this->entityTypeManager->getStorage('node')->create([
'title' => $data['title'],
'type' => 'page',
])->save();
}
}
