You are here

public function ActivityNotifications::getActivityIdsByEntity in Open Social 10.3.x

Same name and namespace in other branches
  1. 8.9 modules/custom/activity_creator/src/ActivityNotifications.php \Drupal\activity_creator\ActivityNotifications::getActivityIdsByEntity()
  2. 8.8 modules/custom/activity_creator/src/ActivityNotifications.php \Drupal\activity_creator\ActivityNotifications::getActivityIdsByEntity()
  3. 10.0.x modules/custom/activity_creator/src/ActivityNotifications.php \Drupal\activity_creator\ActivityNotifications::getActivityIdsByEntity()
  4. 10.1.x modules/custom/activity_creator/src/ActivityNotifications.php \Drupal\activity_creator\ActivityNotifications::getActivityIdsByEntity()
  5. 10.2.x modules/custom/activity_creator/src/ActivityNotifications.php \Drupal\activity_creator\ActivityNotifications::getActivityIdsByEntity()

Gets all activity IDs by given entity.

Parameters

\Drupal\Core\Entity\EntityInterface $entity: The entity object.

Return value

array Return array of activity IDs or an empty array.

Throws

\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException

\Drupal\Component\Plugin\Exception\PluginNotFoundException

File

modules/custom/activity_creator/src/ActivityNotifications.php, line 95

Class

ActivityNotifications
Class ActivityNotifications to get Personalised activity items for account.

Namespace

Drupal\activity_creator

Code

public function getActivityIdsByEntity(EntityInterface $entity) : array {
  $ids = [];
  $entity_id = $entity
    ->id();
  $entity_type = $entity
    ->getEntityTypeId();
  switch ($entity_type) {
    case 'user':
    case 'group':
      $entity_query = $this
        ->entityTypeManager()
        ->getStorage('activity')
        ->getQuery();
      $entity_query
        ->condition('field_activity_recipient_' . $entity_type, $entity_id, '=');
      $ids = $entity_query
        ->execute();
      break;
    case 'group_content':

      /** @var \Drupal\group\Entity\GroupContent $entity */
      $group_content = $entity;
      $linked_entity = $entity
        ->getEntity();
      $group = $entity
        ->getGroup();
      if ($linked_entity && $linked_entity
        ->getEntityTypeId() === 'node' && $group
        ->id()) {
        $entity_query = $this
          ->entityTypeManager()
          ->getStorage('activity')
          ->getQuery();
        $entity_query
          ->condition('field_activity_entity.target_id', $linked_entity
          ->id(), '=');
        $entity_query
          ->condition('field_activity_entity.target_type', $linked_entity
          ->getEntityTypeId(), '=');
        $entity_query
          ->condition('field_activity_recipient_group', $group
          ->id(), '=');
        $ids = $entity_query
          ->execute();
      }
      break;
    default:
      if ($entity_type !== 'activity') {
        $entity_query = $this
          ->entityTypeManager()
          ->getStorage('activity')
          ->getQuery();
        $entity_query
          ->condition('field_activity_entity.target_id', $entity_id, '=');
        $entity_query
          ->condition('field_activity_entity.target_type', $entity_type, '=');
        $ids = $entity_query
          ->execute();
      }
      break;
  }
  return $ids;
}