예제 #1
0
 /**
  * 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);
     }
 }
예제 #3
0
 /**
  * @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);
     }
 }
예제 #4
0
 /**
  *
  * @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()));
     }
 }