class ActivityDigestWorker in Open Social 10.0.x
Same name and namespace in other branches
- 8.9 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.2 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.3 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.4 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.5 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.6 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.7 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 8.8 modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 10.3.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 10.1.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
- 10.2.x modules/custom/activity_send/modules/activity_send_email/src/Plugin/QueueWorker/ActivityDigestWorker.php \Drupal\activity_send_email\Plugin\QueueWorker\ActivityDigestWorker
An activity send email worker.
@QueueWorker( id = "activity_digest_worker", title = @Translation("Process activity_digest_worker 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\ActivityDigestWorker implements ContainerFactoryPluginInterface
- class \Drupal\activity_send\Plugin\QueueWorker\ActivitySendWorkerBase
- class \Drupal\Core\Queue\QueueWorkerBase implements QueueWorkerInterface
Expanded class hierarchy of ActivityDigestWorker
File
- modules/
custom/ activity_send/ modules/ activity_send_email/ src/ Plugin/ QueueWorker/ ActivityDigestWorker.php, line 29
Namespace
Drupal\activity_send_email\Plugin\QueueWorkerView source
class ActivityDigestWorker extends ActivitySendWorkerBase implements ContainerFactoryPluginInterface {
/**
* The entity type manager.
*
* @var \Drupal\Core\Entity\EntityTypeManagerInterface
*/
protected $entityTypeManager;
/**
* The email frequency manager.
*
* @var \Drupal\activity_send_email\EmailFrequencyManager
*/
protected $emailFrequencyManager;
/**
* The mail manager.
*
* @var \Drupal\Core\Mail\MailManagerInterface
*/
protected $mailManager;
/**
* The renderer.
*
* @var \Drupal\Core\Render\RendererInterface
*/
protected $renderer;
/**
* The translation service.
*
* @var \Drupal\Core\StringTranslation\TranslationInterface
*/
protected $translation;
/**
* {@inheritdoc}
*/
public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager, EmailFrequencyManager $email_frequency_manager, MailManagerInterface $mail_manager, RendererInterface $renderer, TranslationInterface $translation) {
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->entityTypeManager = $entity_type_manager;
$this->emailFrequencyManager = $email_frequency_manager;
$this->mailManager = $mail_manager;
$this->renderer = $renderer;
$this->translation = $translation;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static($configuration, $plugin_id, $plugin_definition, $container
->get('entity_type.manager'), $container
->get('plugin.manager.emailfrequency'), $container
->get('plugin.manager.mail'), $container
->get('renderer'), $container
->get('string_translation'));
}
/**
* {@inheritdoc}
*/
public function processItem($data) {
if (!empty($data['uid']) && !empty($data['frequency']) && !empty($data['activities'])) {
$user_storage = $this->entityTypeManager
->getStorage('user');
$message_storage = $this->entityTypeManager
->getStorage('message');
// Get target account.
/** @var \Drupal\user\Entity\User $target */
$target = $user_storage
->load($data['uid']);
// Make sure we have an actual user account to work with.
if (is_object($target) && $target
->isActive()) {
$langcode = $target
->getPreferredLangcode();
$digest_notifications = [
'#theme' => 'digestmail',
];
$activity_storage = $this->entityTypeManager
->getStorage('activity');
foreach ($data['activities'] as $activity_id) {
/** @var \Drupal\activity_creator\Entity\Activity $activity */
$activity = $activity_storage
->load($activity_id);
// Only for users that have access to related content.
if ($activity instanceof Activity && $activity
->getRelatedEntity() !== NULL && !$activity
->getRelatedEntity()
->access('view', $target)) {
continue;
}
// Continue if we have text to send.
if (isset($activity->field_activity_output_text)) {
// Load the message.
/** @var \Drupal\message\Entity\Message $message */
$message = $message_storage
->load($activity->field_activity_message->target_id);
$body_text = EmailActivityDestination::getSendEmailOutputText($message, $langcode);
if ($langcode && !empty($body_text)) {
$digest_notifications['#notifications'][] = $body_text;
}
}
}
// If we have notification to send continue preparing the email.
if (!empty($digest_notifications['#notifications'])) {
$notification_count = count($digest_notifications['#notifications']);
// Get the notification count for the email template.
$digest_notifications['#notification_count'] = $this->translation
->formatPlural($notification_count, 'You have received <strong>:count</strong> notification', 'You have received <strong>:count</strong> notifications', [
':count' => $notification_count,
], [
'langcode' => $langcode,
]);
/** @var \Drupal\activity_send_email\EmailFrequencyInterface $instance */
$instance = $this->emailFrequencyManager
->createInstance($data['frequency']);
// Translating frequency instance in the language of the user.
// @codingStandardsIgnoreStart
$frequency_translated = t($instance
->getName()
->getUntranslatedString(), [], [
'langcode' => $langcode,
]);
// @codingStandardsIgnoreEnd
// Get the notification settings for the email template.
$digest_notifications['#notification_settings'] = $this->translation
->formatPlural($notification_count, 'Based on your @settings, the notification above is sent to you as a <strong>:frequency mail</strong>', 'Based on your @settings, the notifications above are sent to you as a <strong>:frequency mail</strong>', [
'@settings' => Link::fromTextAndUrl(t('email notification settings'), Url::fromRoute('activity_send_email.user_edit_page')
->setAbsolute())
->toString(),
':frequency' => $frequency_translated,
], [
'langcode' => $langcode,
]);
// Render the notifications using the digestmail.html.twig template.
$params['body'] = $this->renderer
->renderRoot($digest_notifications);
// Send the email.
$this->mailManager
->mail('activity_send_email', 'activity_send_email', $target
->getEmail(), $langcode, $params, NULL, TRUE);
}
}
}
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ActivityDigestWorker:: |
protected | property | The email frequency manager. | |
ActivityDigestWorker:: |
protected | property | The entity type manager. | |
ActivityDigestWorker:: |
protected | property | The mail manager. | |
ActivityDigestWorker:: |
protected | property | The renderer. | |
ActivityDigestWorker:: |
protected | property | The translation service. | |
ActivityDigestWorker:: |
public static | function |
Creates an instance of the plugin. Overrides ContainerFactoryPluginInterface:: |
|
ActivityDigestWorker:: |
public | function |
Works on a single queue item. Overrides QueueWorkerInterface:: |
|
ActivityDigestWorker:: |
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:: |
2 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. |