/**
  * @param StrategyEvent $event
  */
 public function onProcessAfter(StrategyEvent $event)
 {
     $entity = $event->getEntity();
     /** @var OwnershipMetadataProvider $metadataProvider */
     $metadataProvider = $this->metadataProviderLink->getService();
     $organizationField = $metadataProvider->getMetadata(ClassUtils::getClass($entity))->getGlobalOwnerFieldName();
     if (!$organizationField) {
         return;
     }
     /** @var SecurityFacade $securityFacade */
     $securityFacade = $this->securityFacadeLink->getService();
     /**
      * We should allow to set organization for entity only in case of console import.
      * If import process was executed from UI (grid's import), current organization for entities should be set.
      */
     $organization = $this->getPropertyAccessor()->getValue($entity, $organizationField);
     if ($organization && $securityFacade->getOrganization() && $organization->getId() == $securityFacade->getOrganizationId()) {
         return;
     }
     $organization = $securityFacade->getOrganization();
     if (!$organization) {
         $organization = $this->getDefaultOrganization();
     }
     if (!$organization) {
         return;
     }
     $this->getPropertyAccessor()->setValue($entity, $organizationField, $organization);
 }
示例#2
0
 /**
  * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
  */
 protected function setUp()
 {
     $this->em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $this->doctrineHelper = $this->getMockBuilder('Oro\\Bundle\\EntityBundle\\ORM\\DoctrineHelper')->disableOriginalConstructor()->getMock();
     $this->mailer = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Mailer\\DirectMailer')->disableOriginalConstructor()->getMock();
     $this->mailerTransport = $this->getMockBuilder('\\Swift_Transport_EsmtpTransport')->disableOriginalConstructor()->getMock();
     $this->mailer->expects($this->any())->method('getTransport')->will($this->returnValue($this->mailerTransport));
     $this->emailEntityBuilder = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Builder\\EmailEntityBuilder')->disableOriginalConstructor()->getMock();
     $this->emailOwnerProvider = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Provider\\EmailOwnerProvider')->disableOriginalConstructor()->getMock();
     $this->dispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface')->disableOriginalConstructor()->getMock();
     $this->emailActivityManager = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Manager\\EmailActivityManager')->disableOriginalConstructor()->getMock();
     $this->securityFacade = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\SecurityFacade')->setMethods(['getLoggedUser', 'getOrganization'])->disableOriginalConstructor()->getMock();
     $this->userEmailOrigin = $this->getMockBuilder('Oro\\Bundle\\ImapBundle\\Entity\\UserEmailOrigin')->disableOriginalConstructor()->getMock();
     $this->userEmailOrigin->expects($this->any())->method('getSmtpHost')->will($this->returnValue('abc'));
     $this->userEmailOrigin->expects($this->any())->method('getSmtpPort')->will($this->returnValue(25));
     $this->securityFacadeLink = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\DependencyInjection\\Utils\\ServiceLink')->setMethods(['getService'])->disableOriginalConstructor()->getMock();
     $this->securityFacadeLink->expects($this->any())->method('getService')->will($this->returnValue($this->securityFacade));
     $this->securityFacade->expects($this->any())->method('getOrganization')->will($this->returnValue($this->getTestOrganization()));
     $this->doctrineHelper->expects($this->any())->method('getEntityManager')->with('OroEmailBundle:Email')->will($this->returnValue($this->em));
     $folder = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\EmailFolder')->disableOriginalConstructor()->getMock();
     $this->userEmailOrigin->expects($this->any())->method('getFolder')->with(FolderType::SENT)->will($this->returnValue($folder));
     $emailOriginRepo = $this->getMockBuilder('Doctrine\\ORM\\EntityRepository')->disableOriginalConstructor()->getMock();
     $emailOriginRepo->expects($this->any())->method('findOneBy')->with(['internalName' => InternalEmailOrigin::BAP])->will($this->returnValue($this->userEmailOrigin));
     $this->em->expects($this->any())->method('getRepository')->with('OroEmailBundle:InternalEmailOrigin')->will($this->returnValue($emailOriginRepo));
     $this->emailProcessor = new Processor($this->doctrineHelper, $this->mailer, new EmailAddressHelper(), $this->emailEntityBuilder, $this->emailOwnerProvider, $this->emailActivityManager, $this->securityFacadeLink, $this->dispatcher, new Mcrypt());
 }
 /**
  * @param OnClearEventArgs $event
  */
 public function onClear(OnClearEventArgs $event)
 {
     /** @var SecurityContextInterface $securityContext */
     $securityContext = $this->securityContextLink->getService();
     $className = $event->getEntityClass();
     $token = $securityContext->getToken();
     if (!$token) {
         return;
     }
     $user = $token->getUser();
     if (is_object($user) && (!$className || $className == ClassUtils::getRealClass($user))) {
         $user = $this->refreshEntity($user);
         if ($user) {
             $token->setUser($user);
         } else {
             $securityContext->setToken(null);
             $token = null;
         }
     }
     if ($token && $token instanceof OrganizationContextTokenInterface) {
         $organization = $token->getOrganizationContext();
         if (is_object($organization) && (!$className || $className == ClassUtils::getRealClass($organization))) {
             /** @var Organization $organization */
             $organization = $this->refreshEntity($organization);
             if ($organization) {
                 $token->setOrganizationContext($organization);
             }
         }
     }
 }
 /**
  * Gets context this strategy is working in
  *
  * @throws \RuntimeException
  * @return PermissionGrantingStrategyContextInterface
  */
 protected function getContext()
 {
     if ($this->contextLink === null) {
         throw new \RuntimeException('The context link is not set.');
     }
     return $this->contextLink->getService();
 }
示例#5
0
 /**
  * Update attachment entity before upload
  *
  * @param File $entity
  */
 public function preUpload(File $entity)
 {
     if ($entity->isEmptyFile()) {
         if ($this->filesystem->has($entity->getFilename())) {
             $this->filesystem->delete($entity->getFilename());
         }
         $entity->setFilename(null);
         $entity->setExtension(null);
         $entity->setOriginalFilename(null);
     }
     if ($entity->getFile() !== null && $entity->getFile()->isFile()) {
         $entity->setOwner($this->securityFacadeLink->getService()->getLoggedUser());
         $file = $entity->getFile();
         if ($entity->getFilename() !== null && $this->filesystem->has($entity->getFilename())) {
             $this->filesystem->delete($entity->getFilename());
         }
         $entity->setExtension($file->guessExtension());
         if ($file instanceof UploadedFile) {
             $entity->setOriginalFilename($file->getClientOriginalName());
             $entity->setMimeType($file->getClientMimeType());
             $entity->setFileSize($file->getClientSize());
         } else {
             $entity->setOriginalFilename($file->getFileName());
             $entity->setMimeType($file->getMimeType());
             $entity->setFileSize($file->getSize());
         }
         $entity->setFilename(uniqid() . '.' . $entity->getExtension());
         if ($this->filesystem->getAdapter() instanceof MetadataSupporter) {
             $this->filesystem->getAdapter()->setMetadata($entity->getFilename(), ['contentType' => $entity->getMimeType()]);
         }
     }
 }
 /**
  * {@inheritdoc}
  */
 public function convertToExportFormat(array $exportedRecord, $skipNullValues = true)
 {
     if ($this->context->getValue('columns')) {
         $columns = $this->context->getValue('columns');
     } elseif ($this->context->hasOption('gridName')) {
         $gridName = $this->context->getOption('gridName');
         $gridConfig = $this->gridManagerLink->getService()->getConfigurationForGrid($gridName);
         $columns = $gridConfig->offsetGet('columns');
     } else {
         throw new InvalidConfigurationException('Configuration of datagrid export processor must contain "gridName" or "columns" options.');
     }
     if ($this->context->hasOption('gridParameters')) {
         $gridParams = $this->context->getOption('gridParameters');
         if ($gridParams->has(ColumnsExtension::COLUMNS_PARAM)) {
             $columnsParams = $gridParams->get(ColumnsExtension::COLUMNS_PARAM);
             $columns = $this->columnsHelper->reorderColumns($columns, $columnsParams);
         }
     }
     $result = [];
     foreach ($columns as $columnName => $column) {
         if (isset($column['renderable']) && false === $column['renderable']) {
             continue;
         }
         $val = isset($exportedRecord[$columnName]) ? $exportedRecord[$columnName] : null;
         $val = $this->applyFrontendFormatting($val, $column);
         $result[$this->translator->trans($column['label'])] = $val;
     }
     return $result;
 }
示例#7
0
 protected function setUp()
 {
     $this->service = $this->getMockBuilder('Symfony\\Component\\Security\\Core\\SecurityContext')->disableOriginalConstructor()->getMock();
     $this->securityContextLink = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\DependencyInjection\\Utils\\ServiceLink')->disableOriginalConstructor()->getMock();
     $this->securityContextLink->expects($this->any())->method('getService')->willReturn($this->service);
     $this->flashBag = $this->getMock('Symfony\\Component\\HttpFoundation\\Session\\Flash\\FlashBagInterface');
     $this->userChecker = new UserChecker($this->securityContextLink, $this->flashBag);
 }
 /**
  * @param EntityManager $entityManager
  *
  * @return UserInterface|null
  */
 protected function getUser(EntityManager $entityManager)
 {
     $user = $this->securityFacadeLink->getService()->getLoggedUser();
     if ($user && $entityManager->getUnitOfWork()->getEntityState($user) == UnitOfWork::STATE_DETACHED) {
         $user = $entityManager->find('OroUserBundle:User', $user->getId());
     }
     return $user;
 }
 /**
  * {@inheritdoc}
  */
 public function isEnabled(Mailbox $mailbox = null)
 {
     if ($mailbox === null || null === ($organization = $mailbox->getOrganization())) {
         $organization = $this->securityLink->getService()->getOrganization();
     }
     $qb = $this->getChannelRepository()->createQueryBuilder('c');
     return (bool) $qb->select('COUNT(c.id)')->join('c.entities', 'e')->andWhere('e.name = :name')->andWhere('c.status = :status')->andWhere('c.owner = :owner')->setParameter('name', static::LEAD_CLASS)->setParameter('status', Channel::STATUS_ACTIVE)->setParameter('owner', $organization)->getQuery()->getSingleScalarResult();
 }
示例#10
0
 /**
  * @param EmailAttachmentManager $attachmentManager
  * @param ConfigProvider $configProvider
  * @param EmailActivityListProvider $activityListProvider
  * @param ServiceLink $securityFacadeLink
  * @param ActivityListChainProvider $chainProvider
  * @param EntityManager $entityManager
  */
 public function __construct(EmailAttachmentManager $attachmentManager, ConfigProvider $configProvider, EmailActivityListProvider $activityListProvider, ServiceLink $securityFacadeLink, ActivityListChainProvider $chainProvider, EntityManager $entityManager)
 {
     $this->attachmentManager = $attachmentManager;
     $this->configProvider = $configProvider;
     $this->activityListProvider = $activityListProvider;
     $this->securityFacade = $securityFacadeLink->getService();
     $this->chainProvider = $chainProvider;
     $this->entityManager = $entityManager;
 }
示例#11
0
 /**
  * {@inheritdoc}
  */
 public function getNameDQL($format, $locale, $className, $alias)
 {
     if ($format === self::FULL && $this->isFullFormatSupported($className)) {
         /** @var DQLNameFormatter $dqlNameFormatter */
         $dqlNameFormatter = $this->dqlNameFormatterLink->getService();
         return $dqlNameFormatter->getFormattedNameDQL($alias, $className, $locale);
     }
     return false;
 }
示例#12
0
 /**
  * @param EntityManager $entityManager
  * @param TranslatorInterface $translator
  * @param SecurityContext $securityContext
  * @param ServiceLink $securityFacadeLink
  * @param EmailManager $emailManager
  */
 public function __construct(EntityManager $entityManager, TranslatorInterface $translator, SecurityContext $securityContext, ServiceLink $securityFacadeLink, EmailManager $emailManager)
 {
     $this->entityManager = $entityManager;
     $this->translator = $translator;
     $this->securityContext = $securityContext;
     $this->user = $this->securityContext->getToken()->getUser();
     $this->securityFacade = $securityFacadeLink->getService();
     $this->emailManager = $emailManager;
 }
示例#13
0
 /**
  * @param PreUpdateEventArgs $eventArgs
  */
 public function preUpdate(PreUpdateEventArgs $eventArgs)
 {
     if ($eventArgs->getEntity() instanceof RoleInterface && $eventArgs->hasChangedField('role')) {
         $oldRoleName = $eventArgs->getOldValue('role');
         $newRoleName = $eventArgs->getNewValue('role');
         /** @var $aclSidManager AclSidManager */
         $aclSidManager = $this->aclSidManagerLink->getService();
         $aclSidManager->updateSid($aclSidManager->getSid($newRoleName), $oldRoleName);
     }
 }
示例#14
0
 /**
  * {@inheritdoc}
  */
 public function checkPreAuth(UserInterface $user)
 {
     parent::checkPreAuth($user);
     if ($user instanceof User && null !== $this->securityContextLink->getService()->getToken() && null !== $user->getPasswordChangedAt() && null !== $user->getLastLogin() && $user->getPasswordChangedAt() > $user->getLastLogin()) {
         $this->flashBag->add('error', $this->translator->trans('oro.user.security.password_changed.message'));
         $exception = new PasswordChangedException('Invalid password.');
         $exception->setUser($user);
         throw $exception;
     }
 }
示例#15
0
 /**
  * @param DoctrineHelper           $doctrineHelper
  * @param \Swift_Mailer            $mailer
  * @param EmailAddressHelper       $emailAddressHelper
  * @param EmailEntityBuilder       $emailEntityBuilder
  * @param EmailOwnerProvider       $emailOwnerProvider
  * @param EmailActivityManager     $emailActivityManager
  * @param ServiceLink              $serviceLink
  * @param EventDispatcherInterface $eventDispatcher
  */
 public function __construct(DoctrineHelper $doctrineHelper, \Swift_Mailer $mailer, EmailAddressHelper $emailAddressHelper, EmailEntityBuilder $emailEntityBuilder, EmailOwnerProvider $emailOwnerProvider, EmailActivityManager $emailActivityManager, ServiceLink $serviceLink, EventDispatcherInterface $eventDispatcher)
 {
     $this->doctrineHelper = $doctrineHelper;
     $this->mailer = $mailer;
     $this->emailAddressHelper = $emailAddressHelper;
     $this->emailEntityBuilder = $emailEntityBuilder;
     $this->emailOwnerProvider = $emailOwnerProvider;
     $this->emailActivityManager = $emailActivityManager;
     $this->securityFacade = $serviceLink->getService();
     $this->eventDispatcher = $eventDispatcher;
 }
示例#16
0
 /**
  * Set up specific environment for package manager
  *
  * @return PackageManager
  */
 protected function getPackageManager()
 {
     // avoid exception in Composer\Factory for creation service oro_distribution.composer
     if (!getenv('COMPOSER_HOME') && !getenv('HOME')) {
         putenv(sprintf('COMPOSER_HOME=%s', $this->composerCacheHome));
         // avoid change of current directory, just give correct vendor dir
         $rootPath = realpath($this->kernelRootDir . '/../') . DIRECTORY_SEPARATOR;
         Config::$defaultConfig['vendor-dir'] = $rootPath . Config::$defaultConfig['vendor-dir'];
     }
     return $this->pmLink->getService();
 }
示例#17
0
 /**
  * {@inheritdoc}
  */
 public function onFlush(OnFlushEventArgs $event)
 {
     // check for logged user is for confidence that data changes comes from UI, not from sync process.
     if ($this->securityFacadeLink->getService()->hasLoggedUser()) {
         $em = $event->getEntityManager();
         $this->processUpdates($em);
         $this->processDeletesAndCollections($em);
         while (null !== ($magentoCustomer = array_pop($this->processIds))) {
             $this->schedulerServiceLink->getService()->schedule($magentoCustomer->getChannel(), 'customer', ['id' => $magentoCustomer->getId()], false);
         }
     }
 }
示例#18
0
 /**
  * @param LoadClassMetadataEventArgs $event
  */
 public function loadClassMetadata(LoadClassMetadataEventArgs $event)
 {
     $classMetadata = $event->getClassMetadata();
     $className = $classMetadata->getName();
     /** @var ExtendMetadataBuilder $metadataBuilder */
     $metadataBuilder = $this->metadataBuilderServiceLink->getService();
     if ($metadataBuilder->supports($className)) {
         $classMetadataBuilder = new ClassMetadataBuilder($classMetadata);
         $metadataBuilder->build($classMetadataBuilder, $className);
         $event->getEntityManager()->getMetadataFactory()->setMetadataFor($className, $classMetadata);
     }
 }
 public function setUp()
 {
     $this->configProvider = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\Provider\\ConfigProvider')->disableOriginalConstructor()->getMock();
     $this->emailAttachmentManager = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Manager\\EmailAttachmentManager')->disableOriginalConstructor()->getMock();
     $this->activityListProvider = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Provider\\EmailActivityListProvider')->disableOriginalConstructor()->getMock();
     $this->securityFacadeLink = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\DependencyInjection\\Utils\\ServiceLink')->disableOriginalConstructor()->getMock();
     $this->securityFacade = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\SecurityFacade')->disableOriginalConstructor()->getMock();
     $this->securityFacadeLink->expects($this->once())->method('getService')->willReturn($this->securityFacade);
     $this->chainProvider = $this->getMockBuilder('Oro\\Bundle\\ActivityListBundle\\Provider\\ActivityListChainProvider')->disableOriginalConstructor()->getMock();
     $this->entityManager = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $this->listener = new EmailBodyAddListener($this->emailAttachmentManager, $this->configProvider, $this->activityListProvider, $this->securityFacadeLink, $this->chainProvider, $this->entityManager);
 }
 /**
  * @param ActivityListProviderInterface $provider
  * @param $mapFields
  *
  * @return Criteria
  */
 protected function getCriteriaByProvider(ActivityListProviderInterface $provider, $mapFields)
 {
     $activityClass = $provider->getActivityClass();
     $aclClass = $provider->getAclClass();
     $criteria = new Criteria();
     $appliedCriteria = $this->aclHelper->applyAclToCriteria($aclClass, $criteria, 'VIEW', $mapFields);
     $isGranted = $this->securityContextLink->getService()->isGranted('VIEW', 'entity:' . $aclClass);
     if ($isGranted) {
         $appliedCriteria->andWhere(Criteria::expr()->eq('relatedActivityClass', $activityClass));
     }
     return $appliedCriteria;
 }
示例#21
0
 /**
  * @ActivityListQueryDesigner $queryDesigner
  *
  * @return DatagridInterface
  */
 public function createGrid(ActivityListQueryDesigner $source)
 {
     $this->datagridConfigurationBuilder->setGridName('related-activity');
     $this->datagridConfigurationBuilder->setSource($source);
     $config = $this->datagridConfigurationBuilder->getConfiguration();
     $stopPropagationListener = function (Event $e) {
         $e->stopPropagation();
     };
     $this->eventDispatcher->addListener(BuildBefore::NAME, $stopPropagationListener, 255);
     $grid = $this->gridBuilderLink->getService()->build($config, new ParameterBag());
     $this->eventDispatcher->removeListener(BuildBefore::NAME, $stopPropagationListener);
     return $grid;
 }
示例#22
0
 /**
  * @param FormInterface     $form
  * @param Request           $request
  * @param UserManager       $manager
  * @param UserConfigManager $userConfigManager
  * @param ConfigManager     $cm
  * @param DelegatingEngine  $templating
  * @param \Swift_Mailer     $mailer
  * @param FlashBagInterface $flashBag
  * @param Translator        $translator
  * @param LoggerInterface   $logger
  * @param ServiceLink       $serviceLink
  */
 public function __construct(FormInterface $form, Request $request, UserManager $manager, UserConfigManager $userConfigManager = null, ConfigManager $cm = null, DelegatingEngine $templating = null, \Swift_Mailer $mailer = null, FlashBagInterface $flashBag = null, Translator $translator = null, LoggerInterface $logger = null, ServiceLink $serviceLink = null)
 {
     parent::__construct($form, $request, $manager);
     $this->userConfigManager = $userConfigManager;
     $this->templating = $templating;
     $this->cm = $cm;
     $this->mailer = $mailer;
     $this->flashBag = $flashBag;
     $this->translator = $translator;
     $this->logger = $logger;
     if ($serviceLink !== null) {
         $this->securityFacade = $serviceLink->getService();
     }
 }
 /**
  * {@inheritdoc}
  */
 public function search($query, $page, $perPage, $searchById = false)
 {
     $user = $this->securityContextLink->getService()->getToken()->getUser();
     $repository = $this->managerRegistry->getRepository($this->className);
     if (!$searchById) {
         $items = $repository->getEnabledUserOrganizationsByName($user, $query);
     } else {
         $items = $repository->getEnabledUserOrganizationById($user, $query);
     }
     $resultsData = [];
     foreach ($items as $organization) {
         $resultsData[] = $this->convertItem($organization);
     }
     return ['results' => $resultsData, 'more' => false];
 }
示例#24
0
 /**
  * Get cache ID for given organization id. If id was not set, get cache ID depending on the current organization
  *
  * @param int $organizationId
  * @return string
  */
 protected function getCacheId($organizationId = null)
 {
     if (!$organizationId) {
         $organizationId = $this->securityFacadeLink->getService()->getOrganizationId();
     }
     return self::CACHE_ID . '_' . $organizationId;
 }
示例#25
0
 protected function setUp()
 {
     $this->em = $this->getMockBuilder('Doctrine\\ORM\\EntityManager')->disableOriginalConstructor()->getMock();
     $this->doctrineHelper = $this->getMockBuilder('Oro\\Bundle\\EntityBundle\\ORM\\DoctrineHelper')->disableOriginalConstructor()->getMock();
     $this->mailer = $this->getMockBuilder('\\Swift_Mailer')->disableOriginalConstructor()->getMock();
     $this->emailEntityBuilder = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Builder\\EmailEntityBuilder')->disableOriginalConstructor()->getMock();
     $this->emailOwnerProvider = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Provider\\EmailOwnerProvider')->disableOriginalConstructor()->getMock();
     $this->dispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface')->disableOriginalConstructor()->getMock();
     $this->emailActivityManager = $this->getMockBuilder('Oro\\Bundle\\EmailBundle\\Entity\\Manager\\EmailActivityManager')->disableOriginalConstructor()->getMock();
     $this->securityFacade = $this->getMockBuilder('Oro\\Bundle\\SecurityBundle\\SecurityFacade')->setMethods(['getLoggedUser', 'getOrganization'])->disableOriginalConstructor()->getMock();
     $this->securityFacadeLink = $this->getMockBuilder('Oro\\Bundle\\EntityConfigBundle\\DependencyInjection\\Utils\\ServiceLink')->setMethods(['getService'])->disableOriginalConstructor()->getMock();
     $this->securityFacadeLink->expects($this->any())->method('getService')->will($this->returnValue($this->securityFacade));
     $this->securityFacade->expects($this->any())->method('getOrganization')->will($this->returnValue($this->getTestOrganization()));
     $this->doctrineHelper->expects($this->any())->method('getEntityManager')->with('OroEmailBundle:Email')->will($this->returnValue($this->em));
     $this->emailProcessor = new Processor($this->doctrineHelper, $this->mailer, new EmailAddressHelper(), $this->emailEntityBuilder, $this->emailOwnerProvider, $this->emailActivityManager, $this->securityFacadeLink, $this->dispatcher);
 }
示例#26
0
 /**
  * We should limit data with current organization
  *
  * @param string $entityName
  * @return bool
  */
 protected function shouldBeAddedOrganizationLimits($entityName)
 {
     if (!array_key_exists($entityName, $this->organizationLimitsByEntity)) {
         $this->organizationLimitsByEntity[$entityName] = $this->securityFacadeLink->getService()->getOrganization() && $this->ownershipMetadataProviderLink->getService()->getMetadata($entityName)->getOrganizationFieldName();
     }
     return $this->organizationLimitsByEntity[$entityName];
 }
示例#27
0
 /**
  * @return Organization|null
  */
 protected function getOrganization()
 {
     /** @var SecurityContextInterface $securityContext */
     $securityContext = $this->securityContextLink->getService();
     $token = $securityContext->getToken();
     return $token instanceof OrganizationContextTokenInterface ? $token->getOrganizationContext() : null;
 }
 /**
  * {@inheritdoc}
  */
 public function getGroupedEntities($email)
 {
     /** @var QueryBuilder $queryBuilder */
     $queryBuilder = $this->doctrineRegistryLink->getService()->getRepository('OroActivityListBundle:ActivityList')->createQueryBuilder('a');
     $queryBuilder->innerJoin('OroEmailBundle:Email', 'e', 'INNER', 'a.relatedActivityId = e.id and a.relatedActivityClass = :class')->setParameter('class', self::ACTIVITY_CLASS)->andWhere('e.thread = :thread')->setParameter('thread', $email->getThread());
     return $queryBuilder->getQuery()->getResult();
 }
 /**
  * {@inheritdoc}
  */
 public function getActivityOwners($entity, ActivityList $activityList)
 {
     $entity = $this->getEmailEntity($entity);
     $filter = ['email' => $entity];
     $targetEntities = $this->getTargetEntities($entity);
     $organizations = [$this->getOrganization($entity)];
     $propertyAccessor = PropertyAccess::createPropertyAccessor();
     foreach ($targetEntities as $target) {
         try {
             $organizations[] = $propertyAccessor->getValue($target, 'organization');
         } catch (\Exception $e) {
             // skipp target
         }
     }
     if (count($organizations) > 0) {
         $filter['organization'] = $organizations;
     }
     $activityArray = [];
     /** @var EmailUser[] $owners */
     $owners = $this->doctrineRegistryLink->getService()->getRepository('OroEmailBundle:EmailUser')->findBy($filter);
     if ($owners) {
         foreach ($owners as $owner) {
             if ($owner->getOrganization() && $owner->getOwner()) {
                 $activityOwner = new ActivityOwner();
                 $activityOwner->setActivity($activityList);
                 $activityOwner->setOrganization($owner->getOrganization());
                 $activityOwner->setUser($owner->getOwner());
                 $activityArray[] = $activityOwner;
             }
         }
     }
     return $activityArray;
 }
 /**
  * Schedules EmailBody for processing.
  *
  * @param EmailBody $emailBody
  */
 protected function scheduleProcess(EmailBody $emailBody)
 {
     /*
      * Retrieve all process definitions to trigger
      */
     $definitions = $this->processStorage->getService()->getProcessDefinitionNames();
     $definitions = $this->getDefinitionRepository()->findBy(['name' => $definitions]);
     /*
      * Trigger process definitions with provided data
      */
     foreach ($definitions as $definition) {
         $trigger = new ProcessTrigger();
         $trigger->setDefinition($definition);
         $data = new ProcessData();
         $data->set('data', $emailBody);
         $this->handler->handleTrigger($trigger, $data);
     }
 }