ActivityWorkerLogger.php in Open Social 8.7
Same filename and directory in other branches
- 8.9 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8.2 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8.3 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8.4 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8.5 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8.6 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 8.8 modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 10.3.x modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 10.0.x modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 10.1.x modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
- 10.2.x modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.php
File
modules/custom/activity_creator/src/Plugin/QueueWorker/ActivityWorkerLogger.phpView source
<?php
namespace Drupal\activity_creator\Plugin\QueueWorker;
/**
* A report worker.
*
* @QueueWorker(
* id = "activity_creator_logger",
* title = @Translation("Process activity loggers."),
* cron = {"time" = 60}
* )
*
* This QueueWorker is responsible for processing ActivityLog items and will
* retrieve recipients batched and then create new queue items for processing in
* QueueWorker ActivityWorkerActivities.
*/
class ActivityWorkerLogger extends ActivityWorkerBase {
/**
* The ActivityContext manager.
*
* @var \Drupal\activity_creator\Plugin\ActivityContextManager
*/
protected $contextPluginManager;
/**
* The state.
*
* @var \Drupal\Core\State\
*/
protected $state;
/**
* {@inheritdoc}
*/
public function processItem($data) {
// Get 100 Recipients at a time.
$limit = 0;
// TODO: Move all this logic to a service.
// TODO: Change this to use dependency injection.
$context_plugin_manager = \Drupal::service('plugin.manager.activity_context.processor');
/* @var $plugin \Drupal\activity_creator\Plugin\ActivityContextBase */
// @TODO Do we need multiple context plugins? If so should we call Manager?
$plugin = $context_plugin_manager
->createInstance($data['context']);
$recipients = $plugin
->getRecipients($data, $data['last_uid'], $limit);
if (!empty($recipients)) {
foreach ($recipients as $recipient) {
// Create a queue item for activity creation.
$activity_creator_data = [
'mid' => $data['mid'],
'message_template' => $data['message_template'],
'actor' => $data['actor'],
'context' => $data['context'],
'destination' => $data['destination'],
'related_object' => $data['related_object'],
'recipient' => $recipient,
];
$this
->createQueueItem('activity_creator_activities', $activity_creator_data);
$last_uid = $recipient;
}
// Now create new queue item for activity_creator_logger if necessary.
if ($limit != 0 && count($recipients) >= $limit && isset($last_uid)) {
$data['last_uid'] = $last_uid;
$data['status'] = 'processing';
$this
->createQueueItem('activity_creator_logger', $data);
}
}
else {
$activity_creator_data = [
'mid' => $data['mid'],
'message_template' => $data['message_template'],
'actor' => $data['actor'],
// Not necessary?
'context' => $data['context'],
'destination' => $data['destination'],
'related_object' => $data['related_object'],
];
$this
->createQueueItem('activity_creator_activities', $activity_creator_data);
}
}
}
Classes
Name | Description |
---|---|
ActivityWorkerLogger | A report worker. |