This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
oliverdavies.uk-old-sculpin/source/_posts/2018-02-27-queuing-private-messages-in-drupal-8.md
2018-02-27 08:08:31 +00:00

1.6 KiB

title tags draft
Queuing Private Messages in Drupal 8
drupal
drupal-8
drupal-modules
drupal-planet
true

Private Message.

Queuing a Message

The module provices a PrivateMessageQueuer service (private_message_queue.queuer) which queues the items via the queue() method.

The method accepts an array of User objects as the messsage recipients, the message body text and another user as the message owner.

Here is an example:

$recipients = $this->getRecipients(); // An array of User objects.
$message = 'Some message text';
$owner = \Drupal::currentUser();

$queuer = \Drupal::service('private_message_queue.queuer');
$queuer->queue($recipients, $message, $owner);

These three pieces of data are then saved as part of the queued item.

Add screenshot of queue.

Processing the Queue

The module also provides a PrivateMessageQueue queue worker, which processes the queued items. For each item, it creates a new private message setting the owner and the message body.

It uses the PrivateMessageThread class from the Private Message module to find for an existing thread for the specified recipients, or creates a new thread if one isn't found. The new message is then added to the thread.

The queue is processed on each cron run, so I recommend adding a module like Ultimate Cron so that you can process the queued items frequently (e.g. every 15 minutes) and run the heavier tasks like checking for updates etc less frequently (e.g. once a day).