/** * Identify whether a PHPCR property is autocreated or not. * * @param ClassMetadata $class * @param string $fieldName * * @return boolean */ private function isAutocreatedProperty(ClassMetadata $class, $fieldName) { $field = $class->getField($fieldName); if ('jcr:uuid' === $field['property']) { // jackrabbit at least does not identify this as auto created // it is strictly speaking no property return true; } $ntm = $this->session->getWorkspace()->getNodeTypeManager(); $nodeType = $ntm->getNodeType($class->getNodeType()); $propertyDefinitions = $nodeType->getPropertyDefinitions(); foreach ($class->getMixins() as $mixinTypeName) { $nodeType = $ntm->getNodeType($mixinTypeName); $propertyDefinitions = array_merge($propertyDefinitions, $nodeType->getPropertyDefinitions()); } foreach ($propertyDefinitions as $property) { if ($class->mappings[$fieldName]['property'] === $property->getName() && $property->isAutoCreated()) { return true; } } return false; }
/** * Set the document level options of the parent class to the subclass. * * @param ClassMetadata $subClass * @param ClassMetadata $parentClass */ private function addInheritedDocumentOptions(ClassMetadata $subClass, ClassMetadata $parentClass) { $subClass->setCustomRepositoryClassName($parentClass->customRepositoryClassName); $subClass->setTranslator($parentClass->translator); $subClass->setVersioned($parentClass->versionable); $subClass->setReferenceable($parentClass->referenceable); $subClass->setNodeType($parentClass->getNodeType()); $subClass->setMixins($parentClass->getMixins()); }