You are here

public function OwnerActivityContext::getRecipientOwnerFromEntity in Open Social 10.2.x

Same name and namespace in other branches
  1. 8.9 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  2. 8 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  3. 8.2 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  4. 8.3 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  5. 8.4 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  6. 8.5 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  7. 8.6 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  8. 8.7 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  9. 8.8 modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  10. 10.3.x modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  11. 10.0.x modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()
  12. 10.1.x modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php \Drupal\activity_basics\Plugin\ActivityContext\OwnerActivityContext::getRecipientOwnerFromEntity()

Returns owner recipient from entity.

Parameters

array $related_entity: The related entity.

array $data: The data.

Return value

array An associative array of recipients, containing the following key-value pairs:

  • target_type: The entity type ID.
  • target_id: The entity ID.
1 call to OwnerActivityContext::getRecipientOwnerFromEntity()
OwnerActivityContext::getRecipients in modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php
Returns a batched list of recipients for this context.

File

modules/custom/activity_basics/src/Plugin/ActivityContext/OwnerActivityContext.php, line 57

Class

OwnerActivityContext
Provides a 'OwnerActivityContext' activity context.

Namespace

Drupal\activity_basics\Plugin\ActivityContext

Code

public function getRecipientOwnerFromEntity(array $related_entity, array $data) {
  $recipients = [];
  $entity_storage = $this->entityTypeManager
    ->getStorage($related_entity['target_type']);
  $entity = $entity_storage
    ->load($related_entity['target_id']);

  // It could happen that a notification has been queued but the content
  // has since been deleted. In that case we can find no additional
  // recipients.
  if (!$entity) {
    return $recipients;
  }

  // Don't return recipients if user comments on own content.
  $original_related_object = $data['related_object'][0];
  if (isset($original_related_object['target_type']) && $original_related_object['target_type'] === 'comment') {
    $storage = $this->entityTypeManager
      ->getStorage($original_related_object['target_type']);
    $original_related_entity = $storage
      ->load($original_related_object['target_id']);
    if (!empty($original_related_entity) && $original_related_entity
      ->getOwnerId() === $entity
      ->getOwnerId()) {
      return $recipients;
    }
  }
  if (isset($original_related_object['target_type']) && $original_related_object['target_type'] === 'event_enrollment') {
    $storage = $this->entityTypeManager
      ->getStorage($original_related_object['target_type']);
    $original_related_entity = $storage
      ->load($original_related_object['target_id']);

    // In the case where a user is added by an event manager we'll need to
    // check on the enrollment status. If the user is not really enrolled we
    // should skip sending the notification.
    if ($original_related_entity
      ->get('field_enrollment_status')->value === '0') {
      return $recipients;
    }
    if (!empty($original_related_entity) && $original_related_entity
      ->getAccount() !== NULL) {
      $recipients[] = [
        'target_type' => 'user',
        'target_id' => $original_related_entity
          ->getAccount(),
      ];
      return $recipients;
    }
  }
  $recipients[] = [
    'target_type' => 'user',
    'target_id' => $entity
      ->getOwnerId(),
  ];
  return $recipients;
}