/**
  * @param RecipientList $recipientList
  * @param $entity
  * @return array
  */
 public function getRecipientEmails(RecipientList $recipientList, $entity)
 {
     // get user emails
     $emails = $recipientList->getUsers()->map(function (EmailHolderInterface $user) {
         return $user->getEmail();
     });
     $groupIds = $recipientList->getGroups()->map(function ($group) {
         return $group->getId();
     })->toArray();
     if ($groupIds) {
         $groupUsers = $this->_em->createQueryBuilder()->select('u.email')->from('OroUserBundle:User', 'u')->leftJoin('u.groups', 'groups')->where('groups.id IN (:groupIds)')->setParameter('groupIds', $groupIds)->getQuery()->getResult();
         // add group users emails
         array_map(function ($groupEmail) use($emails) {
             $emails[] = $groupEmail['email'];
         }, $groupUsers);
     }
     // add owner email
     if ($recipientList->getOwner() && $entity instanceof ContainAuthorInterface) {
         $emails[] = $entity->getCreatedBy()->getEmail();
     }
     // add custom email
     if ($recipientList->getEmail()) {
         $emails[] = $recipientList->getEmail();
     }
     return array_unique($emails->toArray());
 }
 public function testValidData()
 {
     $group = $this->getMock('Oro\\Bundle\\UserBundle\\Entity\\Group');
     $user = $this->getMock('Oro\\Bundle\\UserBundle\\Entity\\User');
     $context = $this->getMockBuilder('Symfony\\Component\\Validator\\ExecutionContext')->disableOriginalConstructor()->getMock();
     $context->expects($this->never())->method('getPropertyPath');
     $context->expects($this->never())->method('addViolationAt');
     //only users
     $this->entity->addUser($user);
     $this->entity->isValid($context);
     // clear users
     $this->entity->getUsers()->clear();
     //only groups
     $this->entity->addGroup($group);
     $this->entity->isValid($context);
     // clear groups
     $this->entity->getGroups()->clear();
     // only email
     $this->entity->setEmail('test Email');
     $this->entity->isValid($context);
     $this->entity->setEmail(null);
     // only owner
     $this->entity->setOwner(true);
     $this->entity->isValid($context);
     $this->entity->setEmail(null);
 }
Ejemplo n.º 3
0
 /**
  * @param RecipientList $recipientList
  * @param mixed         $entity
  * @param string        $ownerPropertyName
  *
  * @return array
  */
 public function getRecipientEmails(RecipientList $recipientList, $entity, $ownerPropertyName = null)
 {
     // get user emails
     $emails = $recipientList->getUsers()->map(function (EmailHolderInterface $user) {
         return $user->getEmail();
     });
     $this->addGroupUsersEmails($emails, $recipientList);
     $this->addOwnerEmails($emails, $recipientList, $entity, $ownerPropertyName);
     // add custom email
     if ($recipientList->getEmail()) {
         $emails[] = $recipientList->getEmail();
     }
     return array_unique($emails->toArray());
 }
Ejemplo n.º 4
0
 /**
  * Get recipient users list
  *
  * @return ArrayCollection
  */
 public function getRecipientUsersList()
 {
     return $this->recipientList ? $this->recipientList->getUsers() : new ArrayCollection();
 }