/** * Add mapping to translatable entities. * * @param LoadClassMetadataEventArgs $eventArgs */ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { $classMetadata = $eventArgs->getClassMetadata(); $reflClass = $classMetadata->reflClass; if (!$reflClass || $reflClass->isAbstract()) { return; } $cubicheClassMetadata = $this->getMetadataFactory($eventArgs->getDocumentManager(), $eventArgs->getDocumentManager()->getEventManager())->getMetadataForClass($classMetadata->getName()); foreach ($classMetadata->fieldMappings as $fieldName => &$mapping) { if (isset($cubicheClassMetadata->propertyMetadata[$fieldName])) { /** @var PropertyMetadata $propertyMetadata */ $propertyMetadata = $cubicheClassMetadata->propertyMetadata[$fieldName]; $mapping['cubiche:' . $propertyMetadata->namespace] = $propertyMetadata->toArray(); } } }
/** * @param LoadClassMetadataEventArgs $eventArgs */ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { $metadata = $eventArgs->getClassMetadata(); $this->convertToDocumentIfNeeded($metadata); if (!$metadata->isMappedSuperclass) { $this->setAssociationMappings($metadata, $eventArgs->getDocumentManager()->getConfiguration()); } else { $this->unsetAssociationMappings($metadata); } }
/** * @param LoadClassMetadataEventArgs $eventArgs */ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { /** @var ClassMetadata $metadata */ $metadata = $eventArgs->getClassMetadata(); $this->setCustomRepositoryClasses($metadata); if (!$metadata->isMappedSuperclass) { $this->setAssociationMappings($metadata, $eventArgs->getDocumentManager()->getConfiguration()); } else { $this->unsetAssociationMappings($metadata); } }
/** * * @param \Doctrine\ODM\MongoDB\Event\LoadClassMetadataEventArgs $eventArgs */ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { $metadata = $eventArgs->getClassMetadata(); $documentManager = $eventArgs->getDocumentManager(); $eventManager = $documentManager->getEventManager(); if (!isset($this->annotationReader)) { $this->annotationReader = new AnnotationReader(); $this->annotationReader = new CachedReader($this->annotationReader, $documentManager->getConfiguration()->getMetadataCacheImpl()); } //Inherit document annotations from parent classes $parentMetadata = []; if (count($metadata->parentClasses) > 0) { foreach ($metadata->parentClasses as $parentClass) { $parentMetadata[] = $documentManager->getClassMetadata($parentClass); } } $eventManager->dispatchEvent(CoreEvents::LOAD_METADATA, new LoadMetadataEventArgs($metadata, $parentMetadata, $this->annotationReader, $eventManager)); }
/** * * @param \Doctrine\ODM\MongoDB\Event\LoadClassMetadataEventArgs $eventArgs */ public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs) { $metadata = $eventArgs->getClassMetadata(); $documentManager = $eventArgs->getDocumentManager(); $eventManager = $documentManager->getEventManager(); if (!isset($this->annotationReader)) { $this->annotationReader = new Annotations\AnnotationReader(); $this->annotationReader = new Annotations\CachedReader($this->annotationReader, $documentManager->getConfiguration()->getMetadataCacheImpl()); } //Inherit document annotations from parent classes if (count($metadata->parentClasses) > 0) { foreach ($metadata->parentClasses as $parentClass) { $this->buildMetadata($documentManager->getClassMetadata($parentClass), $metadata, $eventManager); } } $this->buildMetadata($metadata, $metadata, $eventManager); // Raise post build metadata event if ($eventManager->hasListeners(Events::postBuildMetadata)) { $eventManager->dispatchEvent(Events::postBuildMetadata, $eventArgs); } }
public function postBuildMetadata(LoadClassMetadataEventArgs $eventArgs) { $metadata = $eventArgs->getClassMetadata(); if (!isset($metadata->generator)) { return; } //Add implied generatable inputs if (array_key_exists(Generator\Form::getResourceName($metadata->name), $metadata->generator)) { foreach ($this->getSerializer()->fieldListForUnserialize($metadata) as $field) { if (!array_key_exists(Generator\Input::getResourceName($metadata->name, $field), $metadata->generator)) { $this->annotationDojoInput(new AnnotationEventArgs($metadata, EventType::field, new Sds\Dojo\Input([]), $metadata->reflFields[$field], $eventArgs->getDocumentManager()->getEventManager())); } } } //Add implied generatable validators foreach ($this->getSerializer()->fieldListForUnserialize($metadata) as $field) { if (array_key_exists(Generator\Input::getResourceName($metadata->name, $field), $metadata->generator) && array_key_exists($field, $metadata->validator['fields']) && !array_key_exists(Generator\Validator::getResourceName($metadata->name, $field), $metadata->generator)) { $this->annotationDojoValidator(new AnnotationEventArgs($metadata, EventType::field, new Sds\Dojo\Validator([]), $metadata->reflFields[$field], $eventArgs->getDocumentManager()->getEventManager())); } } //Add implied multifieldvalidator if ((array_key_exists(Generator\Form::getResourceName($metadata->name), $metadata->generator) || array_key_exists(Generator\ModelValidator::getResourceName($metadata->name), $metadata->generator)) && array_key_exists('document', $metadata->validator) && !array_key_exists(Generator\MultiFieldValidator::getResourceName($metadata->name), $metadata->generator)) { $this->annotationDojoMultiFieldValidator(new AnnotationEventArgs($metadata, EventType::document, new Sds\Dojo\MultiFieldValidator([]), $metadata->reflClass, $eventArgs->getDocumentManager()->getEventManager())); } }