You are here

protected function ActivityFactory::getAggregationRelatedActivities in Open Social 8.8

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

Get related activities for activity aggregation.

1 call to ActivityFactory::getAggregationRelatedActivities()
ActivityFactory::buildAggregatedActivites in modules/custom/activity_creator/src/ActivityFactory.php
Build the aggregated activities based on a data array.

File

modules/custom/activity_creator/src/ActivityFactory.php, line 243

Class

ActivityFactory
Class ActivityFactory to create Activity items based on ActivityLogs.

Namespace

Drupal\activity_creator

Code

protected function getAggregationRelatedActivities($data) {
  $activities = [];
  $related_object = $data['related_object'][0];
  if (!empty($related_object['target_id']) && !empty($related_object['target_type'])) {
    if ($related_object['target_type'] === 'comment') {

      // Get commented entity.
      $comment_storage = \Drupal::entityTypeManager()
        ->getStorage('comment');
      $comment = $comment_storage
        ->load($related_object['target_id']);
      $commented_entity = $comment
        ->getCommentedEntity();

      // Get all comments of commented entity.
      $comment_query = \Drupal::entityQuery('comment');
      $comment_query
        ->condition('entity_id', $commented_entity
        ->id(), '=');
      $comment_query
        ->condition('entity_type', $commented_entity
        ->getEntityTypeId(), '=');
      $comment_ids = $comment_query
        ->execute();

      // Get all activities provided by comments of commented entity.
      if (!empty($comment_ids)) {
        $activity_query = \Drupal::entityQuery('activity');
        $activity_query
          ->condition('field_activity_entity.target_id', $comment_ids, 'IN');
        $activity_query
          ->condition('field_activity_entity.target_type', $related_object['target_type'], '=');

        // We exclude activities with email, platform_email and notifications
        // destinations from aggregation.
        $aggregatable_destinations = $this->activityDestinationManager
          ->getListByProperties('isAggregatable', TRUE);
        $activity_query
          ->condition('field_activity_destinations.value', $aggregatable_destinations, 'IN');
        $activity_ids = $activity_query
          ->execute();
        if (!empty($activity_ids)) {
          $activities = Activity::loadMultiple($activity_ids);
        }
      }
    }
  }
  return $activities;
}