/** * Process form after data is set and remove/disable owner field depending on permissions * * @param FormEvent $event */ public function preSetData(FormEvent $event) { $form = $event->getForm(); if ($form->getParent()) { return; } $entity = $event->getData(); if (is_object($entity) && $entity->getId()) { $permission = 'ASSIGN'; $this->checkIsGranted($permission, $entity); $owner = $this->entityOwnerAccessor->getOwner($entity); $dataClassName = ClassUtils::getClass($entity); $metadata = $this->getMetadata($dataClassName); if ($metadata) { if ($form->has($this->fieldName)) { $form->remove($this->fieldName); } if ($this->isAssignGranted) { if ($metadata->isBasicLevelOwned()) { $this->addUserOwnerField($form, $dataClassName, $permission, $owner, $entity->getId()); } elseif ($metadata->isLocalLevelOwned()) { $this->addBusinessUnitOwnerField($form, $this->getCurrentUser(), $dataClassName); } } } } }
/** * @expectedException \Oro\Bundle\EntityBundle\Exception\InvalidEntityException */ public function testGetOwnerNoGetOwnerAndNoOwnerField() { $metadataProvider = new OwnershipMetadataProviderStub($this); $accessor = new EntityOwnerAccessor($metadataProvider); $obj = new \stdClass(); $metadataProvider->setMetadata(get_class($obj), new OwnershipMetadata('ORGANIZATION', 'owner', 'owner_id')); $accessor->getOwner($obj); }
/** * Gets owner of the given domain object * * @param object $domainObject * @return object * @throws InvalidDomainObjectException */ protected function getOwner($domainObject) { try { return $this->entityOwnerAccessor->getOwner($domainObject); } catch (InvalidEntityException $ex) { throw new InvalidDomainObjectException($ex->getMessage(), 0, $ex); } }
/** * @param object $entity * * @return null|object */ public function getEntityOwner($entity) { return $this->ownerAccessor->getOwner($entity); }