class ActivitySendEmailWorker in Open Social 8.9
Same name and namespace in other branches
- 8 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.2 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.3 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.4 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.5 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.6 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.7 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 8.8 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 10.3.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 10.0.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 10.1.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
- 10.2.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivitySendEmailWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker
An activity send email worker.
@QueueWorker( id = "activity_send_email_worker", title = @Translation("Process activity_send_email queue."), cron = {"time" = 60} )
This QueueWorker is responsible for sending emails from the queue
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Queue\QueueWorkerBase implements QueueWorkerInterface
- class \Drupal\activity_send\Plugin\QueueWorker\ActivitySendWorkerBase
- class \Drupal\activity_send_email\Plugin\QueueWorker\ActivitySendEmailWorker implements ContainerFactoryPluginInterface
- class \Drupal\activity_send\Plugin\QueueWorker\ActivitySendWorkerBase
- class \Drupal\Core\Queue\QueueWorkerBase implements QueueWorkerInterface
Expanded class hierarchy of ActivitySendEmailWorker
File
- modules/
custom/ activity_send/ modules/ activity_send_email/ src/ Plugin/ QueueWorker/ ActivitySendEmailWorker.php, line 28
Namespace
Drupal\activity_send_email\Plugin\QueueWorkerView source
class ActivitySendEmailWorker extends ActivitySendWorkerBase implements ContainerFactoryPluginInterface {
/**
* The email frequency manager.
*
* @var \Drupal\activity_send_email\EmailFrequencyManager
*/
protected $frequencyManager;
/**
* Database services.
*
* @var \Drupal\Core\Database\Connection
*/
protected $database;
/**
* The activity notification service.
*
* @var \Drupal\activity_creator\ActivityNotifications
*/
protected $activityNotifications;
/**
* Social mail settings.
*
* @var \Drupal\Core\Config\ImmutableConfig
*/
protected $swiftmailSettings;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, EmailFrequencyManager $frequency_manager, Connection $connection, ActivityNotifications $activity_notifications, ConfigFactoryInterface $config_factory) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->frequencyManager = $frequency_manager;
$this->database = $connection;
$this->activityNotifications = $activity_notifications;
$this->swiftmailSettings = $config_factory
->get('social_swiftmail.settings');
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('plugin.manager.emailfrequency'), $container
->get('database'), $container
->get('activity_creator.activity_notifications'), $container
->get('config.factory'));
}
/**
* {@inheritdoc}
*/
public function processItem($data) {
// First make sure it's an actual Activity entity.
if (!empty($data['entity_id']) && ($activity = Activity::load($data['entity_id']))) {
// Check if activity related entity exist.
if (!$activity
->getRelatedEntity()) {
$activity
->delete();
$this->activityNotifications
->deleteNotificationsbyIds([
$activity
->id(),
]);
return;
}
// Get Message Template id.
$message = Message::load($activity->field_activity_message->target_id);
$message_template_id = $message
->getTemplate()
->id();
// Get target account.
if (empty($data['recipients'])) {
$recipients = array_column($activity->field_activity_recipient_user
->getValue(), 'target_id');
if (count($recipients) > 50) {
// Split up by 50.
$batches = array_chunk($recipients, 50);
foreach ($batches as $batch_recipients) {
// Create same queue item, but with IDs of just 50 users.
$batch_data = [
'entity_id' => $data['entity_id'],
'recipients' => $batch_recipients,
];
$queue = \Drupal::queue('activity_send_email_worker');
$queue
->createItem($batch_data);
}
// We split up in batches. We can stop processing this specific queue
// item.
return;
}
}
else {
$recipients = $data['recipients'];
}
// Load the user accounts.
$target_accounts = User::loadMultiple($recipients);
foreach ($target_accounts as $target_account) {
if ($target_account instanceof User) {
// Retrieve the users email settings.
$user_email_settings = EmailActivityDestination::getSendEmailUserSettings($target_account);
// Determine email frequency to use, defaults to immediately.
// @todo make these frequency constants?
$template_frequencies = $this->swiftmailSettings
->get('template_frequencies') ?: [];
$frequency = isset($template_frequencies[$message_template_id]) ? $template_frequencies[$message_template_id] : 'immediately';
if (!empty($user_email_settings[$message_template_id])) {
$frequency = $user_email_settings[$message_template_id];
}
// Send item to EmailFrequency instance.
$instance = $this->frequencyManager
->createInstance($frequency);
$instance
->processItem($activity, $message, $target_account);
}
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ActivitySendEmailWorker:: |
protected | property | The activity notification service. | |
ActivitySendEmailWorker:: |
protected | property | Database services. | |
ActivitySendEmailWorker:: |
protected | property | The email frequency manager. | |
ActivitySendEmailWorker:: |
protected | property | Social mail settings. | |
ActivitySendEmailWorker:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
ActivitySendEmailWorker:: |
public | function |
Works on a single queue item. Overrides QueueWorkerInterface:: |
|
ActivitySendEmailWorker:: |
public | function |
Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase:: |
|
ActivitySendWorkerBase:: |
protected | function | Create queue item. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
3 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. |