Пример #1
0
 /**
  * Populate owner to target entity based on integration configuration and entity's ownership type
  *
  * @param object      $entity
  * @param Integration $integration
  */
 public function populateChannelOwner($entity, Integration $integration)
 {
     $defaultUserOwner = $integration->getDefaultUserOwner();
     $className = ClassUtils::getClass($entity);
     $doctrineMetadata = $this->getEm()->getClassMetadata($className);
     $ownershipMetadata = $this->getMetadata($className);
     if ($defaultUserOwner && $ownershipMetadata->isBasicLevelOwned()) {
         $defaultUserOwner = $this->ensureNotDetached($defaultUserOwner);
         $doctrineMetadata->setFieldValue($entity, $ownershipMetadata->getOwnerFieldName(), $defaultUserOwner);
     }
     $defaultOrganization = $integration->getOrganization();
     if ($defaultOrganization && $ownershipMetadata->getGlobalOwnerFieldName()) {
         $defaultOrganization = $this->ensureNotDetached($defaultOrganization);
         $doctrineMetadata->setFieldValue($entity, $ownershipMetadata->getGlobalOwnerFieldName(), $defaultOrganization);
     }
 }
Пример #2
0
 /**
  * Process form
  *
  * @param Integration $entity
  *
  * @return bool
  */
 public function process(Integration $entity)
 {
     $userOwner = $entity->getDefaultUserOwner();
     $isNewEntity = !$entity->getId();
     $this->form->setData($entity);
     if (in_array($this->request->getMethod(), array('POST', 'PUT'))) {
         $oldState = $this->getIntegration($entity);
         $this->form->submit($this->request);
         if (!$this->request->get(self::UPDATE_MARKER, false) && $this->form->isValid()) {
             $this->em->persist($entity);
             $this->em->flush();
             if (!$isNewEntity && null === $userOwner && $userOwner !== $entity->getDefaultUserOwner()) {
                 $this->eventDispatcher->dispatch(DefaultOwnerSetEvent::NAME, new DefaultOwnerSetEvent($entity));
             }
             if (!$isNewEntity && $oldState) {
                 $this->eventDispatcher->dispatch(IntegrationUpdateEvent::NAME, new IntegrationUpdateEvent($entity, $oldState));
             }
             return true;
         }
     }
     return false;
 }
Пример #3
0
 /**
  * @dataProvider defaultIntegrationOwnerProvider
  *
  * @param Integration $integration
  * @param string      $ownerType
  * @param bool        $expectedReload
  * @param bool        $expectedSet
  * @param bool        $expectedSetOrganization
  */
 public function testPopulateChannelOwner(Integration $integration, $ownerType, $expectedReload, $expectedSet, $expectedSetOrganization = false)
 {
     $entity = new \stdClass();
     $owner = $integration->getDefaultUserOwner();
     $organization = $integration->getOrganization();
     $doctrineMetadata = $this->getMockBuilder('Doctrine\\ORM\\Mapping\\ClassMetadataInfo')->disableOriginalConstructor()->getMock();
     $this->em->expects($this->any())->method('getClassMetadata')->will($this->returnValue($doctrineMetadata));
     if ($expectedReload) {
         $this->uow->expects($this->once())->method('getEntityState')->with($this->identicalTo($owner))->will($this->returnValue(UnitOfWork::STATE_DETACHED));
         $this->em->expects($this->once())->method('find')->with($this->equalTo(get_class($owner)))->will($this->returnValue($owner));
     }
     $ownerMetadata = new OwnershipMetadata($ownerType, self::USER_OWNER_FIELD_NAME, self::USER_OWNER_COLUMN_NAME, self::ORGANIZATION_FIELD_NAME);
     $this->metadataProvider->expects($this->any())->method('getMetadata')->with(get_class($entity))->will($this->returnValue($ownerMetadata));
     if ($expectedSet) {
         $doctrineMetadata->expects($this->once())->method('setFieldValue')->with($this->identicalTo($entity), self::USER_OWNER_FIELD_NAME, $this->identicalTo($owner));
     } elseif ($expectedSetOrganization) {
         $doctrineMetadata->expects($this->once())->method('setFieldValue')->with($this->identicalTo($entity), self::ORGANIZATION_FIELD_NAME, $this->identicalTo($organization));
     } else {
         $doctrineMetadata->expects($this->never())->method('setFieldValue');
     }
     $this->helper->populateChannelOwner($entity, $integration);
 }
Пример #4
0
 /**
  * @return User
  */
 public function getDefaultUserOwner()
 {
     return $this->integration->getDefaultUserOwner();
 }