Backup\Model\Content::importDocumentTypes PHP Метод

importDocumentTypes() защищенный Метод

Import Document types
protected importDocumentTypes ( &$ids, &$errors, array $children ) : void
$children array Children list
Результат void
    protected function importDocumentTypes(&$ids, &$errors, $children)
    {
        $documentTypes = array();
        foreach ($children['children'] as $child) {
            $attributes = $child->attributes();
            $id = (int) $attributes['id'];
            $model = DocumentType\Model::fromId($id);
            if (empty($model)) {
                $model = new DocumentType\Model();
            }
            $viewid = isset($ids['views'][(int) $child->default_view_id]) ? $ids['views'][(int) $child->default_view_id] : (int) $child->default_view_id;
            $name = (string) $child->name;
            $model->addData(array('name' => empty($name) ? $model->getName() : $name, 'description' => (string) $child->description, 'icon_id' => (int) $child->icon_id, 'default_view_id' => $viewid));
            if ($model->getUserId() === null) {
                $model->setUserId($this->serviceLocator->get('Auth')->getIdentity()->getId());
            }
            try {
                if (!empty($model)) {
                    $model->save();
                    $tabs = (array) $child->tabs;
                    if (isset($tabs['tab']) and is_array($tabs['tab'])) {
                        $tabs = $tabs['tab'];
                    }
                    foreach ($tabs as $tab) {
                        $tabAttributes = $tab->attributes();
                        $tabId = (int) $tabAttributes['id'];
                        $tabModel = Tab\Model::fromId($tabId);
                        if (empty($tabModel)) {
                            $tabModel = new Tab\Model();
                        }
                        $tabModel->addData(array('name' => (string) $tab->name, 'description' => (string) $tab->description, 'sort_order' => (int) $tab->sort_order, 'document_type_id' => $model->getId()));
                        $tabModel->save();
                        $properties = (array) $tab->properties;
                        if (isset($properties['property']) and is_array($properties['property'])) {
                            $properties = $properties['property'];
                        }
                        foreach ($properties as $property) {
                            $propAttributes = $property->attributes();
                            $propertyId = (int) $propAttributes['id'];
                            $propertyModel = Property\Model::fromId($propertyId);
                            if (empty($propertyModel)) {
                                $propertyModel = new Property\Model();
                            }
                            $datatypeId = isset($ids['datatypes'][(int) $property->datatype_id]) ? $ids['datatypes'][(int) $property->datatype_id] : (string) $property->datatype_id;
                            $propertyModel->addData(array('name' => (string) $property->name, 'description' => (string) $property->description, 'identifier' => (string) $property->identifier, 'sort_order' => (int) $property->sort_order, 'tab_id' => $tabModel->getId(), 'datatype_id' => $datatypeId));
                            $propertyModel->save();
                            $ids['properties'][$propertyId] = $propertyModel->getId();
                        }
                    }
                    $ids['document_types'][$id] = $model->getId();
                    $documentTypes[] = array('model' => $model, 'dependencies' => (array) $child->dependencies, 'views' => (array) $child->available_views);
                }
            } catch (Exception $e) {
                $errors[] = sprintf($this->serviceLocator->get('MvcTranslator')->translate('Cannot save document type with id (%d)'), $id);
            }
        }
        return $documentTypes;
    }