public function import(\SimpleXMLElement $sx) { $em = \Database::connection()->getEntityManager(); $em->getClassMetadata('Concrete\\Core\\Entity\\Express\\Form')->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator()); if (isset($sx->expressentities)) { foreach ($sx->expressentities->entity as $entityNode) { if (isset($entityNode->forms)) { foreach ($entityNode->forms->form as $formNode) { $entity = $em->find('Concrete\\Core\\Entity\\Express\\Entity', (string) $entityNode['id']); $form = $em->find('Concrete\\Core\\Entity\\Express\\Form', (string) $formNode['id']); if (!is_object($form)) { $form = new Form(); $form->setId((string) $formNode['id']); } $form->setName((string) $formNode['name']); if (isset($formNode->fieldsets)) { $fieldSetPosition = 0; foreach ($formNode->fieldsets->fieldset as $fieldSetNode) { $fieldset = new FieldSet(); $fieldset->setDescription((string) $fieldSetNode['description']); $fieldset->setTitle((string) $fieldSetNode['title']); $fieldset->setPosition($fieldSetPosition); if (isset($fieldSetNode->controls)) { $manager = \Core::make('express/control/type/manager'); $controlPosition = 0; foreach ($fieldSetNode->controls->control as $controlNode) { $type = $manager->driver((string) $controlNode['type']); $control = $type->getImporter()->import($controlNode, $entity); $control->setFieldSet($fieldset); $control->setPosition($controlPosition); $fieldset->getControls()->add($control); $controlPosition++; } } $form->getFieldSets()->add($fieldset); $fieldset->setForm($form); $fieldSetPosition++; } } $entity->getForms()->add($form); $form->setEntity($entity); $em->persist($entity); $em->persist($form); } } } } $em->flush(); $em->getClassMetadata('Concrete\\Core\\Entity\\Express\\Form')->setIdGenerator(new UuidGenerator()); }