コード例 #1
0
 /**
  * {@inheritdoc}
  */
 public function getRecipients(EmailRecipientsProviderArgs $args)
 {
     if (!$args->getRelatedEntity()) {
         return [];
     }
     $relatedEntity = $args->getRelatedEntity();
     $relatedEntityClass = ClassUtils::getClass($relatedEntity);
     $em = $this->registry->getManagerForClass($relatedEntityClass);
     $metadata = $em->getClassMetadata($relatedEntityClass);
     $idNames = $metadata->getIdentifierFieldNames();
     if (count($idNames) !== 1) {
         return [];
     }
     $propertyAccessor = PropertyAccess::createPropertyAccessor();
     $relatedEntityId = $propertyAccessor->getValue($relatedEntity, $idNames[0]);
     $recipients = [];
     $activities = $this->activityManager->getActivities($relatedEntityClass);
     $activityListQb = $this->createActivityListQb($relatedEntityClass, $relatedEntityId);
     $activityListDql = $activityListQb->getQuery()->getDQL();
     $limit = $args->getLimit();
     $activityKeys = array_keys($activities);
     foreach ($activityKeys as $class) {
         $qb = $this->getRepository($class)->createQueryBuilder('e');
         $qb->andWhere($qb->expr()->exists($activityListDql))->setParameter('related_activity_class', $class);
         foreach ($activityListQb->getParameters() as $param) {
             $qb->setParameter($param->getName(), $param->getValue(), $param->getType());
         }
         $iterator = new BufferedQueryResultIterator($qb);
         $iterator->setBufferSize($limit);
         foreach ($iterator as $entity) {
             $recipients = array_merge($recipients, EmailRecipientsHelper::filterRecipients($args, $this->relatedEmailsProvider->getRecipients($entity, 2, false, $args->getOrganization())));
             $limit -= count($recipients);
             if ($limit <= 0) {
                 break 2;
             }
         }
     }
     return $recipients;
 }
コード例 #2
0
ファイル: MergeListener.php プロジェクト: Maksold/platform
 /**
  * @param EntityMetadata $entityMetadata
  *
  * @return array
  */
 protected function getAvailableActivityTypes(EntityMetadata $entityMetadata)
 {
     $className = $entityMetadata->getClassName();
     $types = $this->activityManager->getActivities($className);
     return array_keys($types);
 }