public function FileLinkMetadataUpdate::processItem in File Link 2.0.x
Works on a single queue item.
Parameters
mixed $data: The data that was passed to \Drupal\Core\Queue\QueueInterface::createItem() when the item was queued.
Throws
\Drupal\Core\Queue\RequeueException Processing is not yet finished. This will allow another process to claim the item immediately.
\Exception A QueueWorker plugin may throw an exception to indicate there was a problem. The cron process will log the exception, and leave the item in the queue to be processed again later.
\Drupal\Core\Queue\SuspendQueueException More specifically, a SuspendQueueException should be thrown when a QueueWorker plugin is aware that the problem will affect all subsequent workers of its queue. For example, a callback that makes HTTP requests may find that the remote server is not responding. The cron process will behave as with a normal Exception, and in addition will not attempt to process further items from the current item's queue during the current cron run.
Overrides QueueWorkerInterface::processItem
See also
\Drupal\Core\Cron::processQueues()
File
- src/
Plugin/ QueueWorker/ FileLinkMetadataUpdate.php, line 69
Class
- FileLinkMetadataUpdate
- Defines 'file_link_metadata_update' queue worker.
Namespace
Drupal\file_link\Plugin\QueueWorkerCode
public function processItem($data) {
if ($data instanceof FileLinkQueueItem) {
$storage = $this->entityTypeManager
->getStorage($data
->getType());
/** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
if ($data
->getRevisionId() !== NULL) {
$entity = $storage
->loadRevision($data
->getRevisionId());
}
else {
$entity = $storage
->load($data
->getId());
}
if ($entity === NULL) {
// The entity must have been removed.
return;
}
if ($entity
->hasTranslation($data
->getLang())) {
$entity = $entity
->getTranslation($data
->getLang());
}
// Do not create a revision but re-save the revision.
if ($entity
->getEntityType()
->isRevisionable()) {
$entity
->setNewRevision(FALSE);
}
if ($entity instanceof EntityChangedInterface) {
if ($entity
->getChangedTime() > $data
->getTime()) {
// The entity has been changed since.
return;
}
// Do not update the changed time here.
$entity
->setChangedTime($entity
->getChangedTime());
}
// Set the static property to be processing.
static::$processing++;
try {
$entity
->save();
} catch (\Exception $exception) {
// Decrease the counter and re-throw the exception.
static::$processing--;
throw $exception;
}
static::$processing--;
}
}