/** * @param EntityMetadata $metadata * @param array $entities */ public function __construct(EntityMetadata $metadata, array $entities) { $this->metadata = $metadata; $this->setEntities($entities); foreach ($metadata->getFieldsMetadata() as $fieldMetadata) { $this->addNewField($fieldMetadata); } }
/** * @param EntityMetadata $entityMetadata */ protected function applyEntityMetadataConfig(EntityMetadata $entityMetadata) { $className = $entityMetadata->getClassName(); $mergeConfig = $this->entityConfigHelper->getConfig(self::CONFIG_MERGE_SCOPE, $className, null); if ($mergeConfig) { $entityMetadata->merge($mergeConfig->all()); } }
public function testNotTaggable() { $this->helper->expects($this->once())->method('isTaggable')->willReturn(false); $this->entityMetadata = $this->getMockBuilder('Oro\\Bundle\\EntityMergeBundle\\Metadata\\EntityMetadata')->setMethods(['getClassName', 'addFieldMetadata'])->disableOriginalConstructor()->getMock(); $this->entityMetadata->expects($this->any())->method('getClassName')->will($this->returnValue(get_class($this->createNotTaggableEntity()))); $this->entityMetadata->expects($this->never())->method('addFieldMetadata'); $event = new EntityMetadataEvent($this->entityMetadata); $this->listener->onBuildMetadata($event); }
/** * @param EntityMetadata $entityMetadata * @return bool */ private function isTaggable(EntityMetadata $entityMetadata) { $className = $entityMetadata->getClassName(); $classInterfaces = class_implements($className); if (isset($classInterfaces['Oro\\Bundle\\TagBundle\\Entity\\Taggable'])) { return true; } return false; }
/** * @param EntityMetadata $entityMetadata * * @return string */ protected function getNoteFieldName($entityMetadata) { $fieldsMetadata = $entityMetadata->getFieldsMetadata(); foreach ($fieldsMetadata as $fieldName => $fieldMetadata) { //if there is Metadata field already exists, //it should be changed to custom Metadata field(with appropriate logic and Strategy) if ($fieldMetadata->getSourceClassName() === Note::ENTITY_NAME) { return $fieldName; } } //or generate default name return strtolower(str_replace('\\', '_', Note::ENTITY_NAME)); }
public function testOnBuildMetadata() { $entity = Note::ENTITY_NAME; $alias = 'oro_bundle_notebundle_entity_note'; $calls = 1; $config = $this->getMock('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface'); $this->configProvider->expects($this->any())->method('getConfig')->willReturn($config); $config->expects($this->exactly($calls))->method('get')->willReturn('label'); $fieldMetadataOptions = ['display' => true, 'activity' => true, 'type' => $entity, 'field_name' => $alias, 'is_collection' => true, 'template' => 'OroActivityListBundle:Merge:value.html.twig', 'label' => 'Items', 'merge_modes' => [MergeModes::NOTES_UNITE, MergeModes::NOTES_REPLACE]]; $fieldMetadata = new FieldMetadata($fieldMetadataOptions); $this->entityMetadata->expects($this->at(1))->method('addFieldMetadata')->with($this->equalTo($fieldMetadata)); $this->activityListChainProvider->expects($this->exactly($calls))->method('isApplicableTarget')->willReturn(true); $event = new EntityMetadataEvent($this->entityMetadata); $this->listener->onBuildMetadata($event); }
/** * @param EntityMetadata $entityMetadata * @param ClassMetadata $classMetadata * @param string $className */ protected function addDoctrineInverseAssociations(EntityMetadata $entityMetadata, ClassMetadata $classMetadata, $className) { $allMetadata = $this->doctrineHelper->getAllMetadata(); foreach ($allMetadata as $metadata) { if ($metadata == $classMetadata) { // Skip own class metadata continue; } $currentClassName = $metadata->getName(); $associationMappings = $metadata->getAssociationsByTargetClass($className); foreach ($associationMappings as $fieldName => $associationMapping) { if (isset($associationMapping['type']) && $associationMapping['type'] === ClassMetadataInfo::MANY_TO_MANY || isset($associationMapping['mappedBy'])) { // Skip "mapped by" and many-to-many as it's included on other side. continue; } $associationMapping['mappedBySourceEntity'] = false; $mergeModes = [MergeModes::UNITE]; if ($associationMapping['type'] === ClassMetadataInfo::ONE_TO_ONE) { // for fields with ONE_TO_ONE relation Unite strategy is impossible, so Replace is used $mergeModes = [MergeModes::REPLACE]; } $fieldMetadata = $this->metadataFactory->createFieldMetadata(array('field_name' => $this->createInverseAssociationFieldName($currentClassName, $fieldName), 'merge_modes' => $mergeModes, 'source_field_name' => $fieldName, 'source_class_name' => $currentClassName), $associationMapping); $entityMetadata->addFieldMetadata($fieldMetadata); } } }
/** * @dataProvider getDataProvider */ public function testOnBuildMetadata($keys, $calls) { $config = $this->getMock('Oro\\Bundle\\EntityConfigBundle\\Config\\ConfigInterface'); $this->configProvider->expects($this->any())->method('getConfig')->willReturn($config); $config->expects($this->exactly($calls))->method('get')->willReturn('label'); $i = 0; $k = array_keys($keys); foreach ($k as $key) { $i++; $fieldMetadataOptions = ['display' => true, 'activity' => true, 'type' => $key, 'field_name' => $key, 'is_collection' => true, 'template' => 'OroActivityListBundle:Merge:value.html.twig', 'label' => 'Items', 'merge_modes' => [MergeModes::ACTIVITY_UNITE, MergeModes::ACTIVITY_REPLACE]]; $fieldMetadata = new FieldMetadata($fieldMetadataOptions); $this->entityMetadata->expects($this->at($i))->method('addFieldMetadata')->with($this->equalTo($fieldMetadata)); } $this->activityManager->expects($this->once())->method('getActivities')->willReturn($keys); $event = new EntityMetadataEvent($this->entityMetadata); $this->listener->onBuildMetadata($event); }
/** * @param EntityMetadata $entityMetadata * * @return array */ protected function getAvailableActivityTypes(EntityMetadata $entityMetadata) { $className = $entityMetadata->getClassName(); $types = $this->activityManager->getActivities($className); return array_keys($types); }
/** * @param EntityMetadata $entityMetadata * * @return bool */ private function isTaggable(EntityMetadata $entityMetadata) { $className = $entityMetadata->getClassName(); return $this->taggableHelper->isTaggable($className); }
/** * Render entity label * * @param mixed $entity * @param EntityMetadata $metadata * @return string */ public function renderEntityLabel($entity, EntityMetadata $metadata) { $template = $metadata->get('template') ?: $this->defaultTemplate; $stringValue = $this->convertToString($entity, $metadata); return $this->environment->render($template, array('metadata' => $metadata, 'entity' => $entity, 'convertedValue' => $stringValue, 'isListValue' => false)); }
/** * @expectedException \Oro\Bundle\EntityMergeBundle\Exception\InvalidArgumentException * @expectedExceptionMessage Cannot get class name from merge entity metadata. */ public function testGetClassNameFails() { $this->doctrineMetadata->expects($this->once())->method('has')->with('name')->will($this->returnValue(false)); $this->metadata->getClassName(); }