/** * Attempt to import a field layout. * * @param array $fieldLayoutDef * * @return FieldLayoutModel */ private function _importFieldLayout(array $fieldLayoutDef) { $layoutTabs = array(); $layoutFields = array(); if (array_key_exists('tabs', $fieldLayoutDef)) { $tabSortOrder = 0; foreach ($fieldLayoutDef['tabs'] as $tabName => $tabDef) { $layoutTabFields = array(); foreach ($tabDef as $fieldHandle => $required) { $fieldSortOrder = 0; $field = craft()->fields->getFieldByHandle($fieldHandle); if ($field) { $layoutField = new FieldLayoutFieldModel(); $layoutField->setAttributes(array('fieldId' => $field->id, 'required' => $required, 'sortOrder' => ++$fieldSortOrder)); $layoutTabFields[] = $layoutField; $layoutFields[] = $layoutField; } } $layoutTab = new FieldLayoutTabModel(); $layoutTab->setAttributes(array('name' => $tabName, 'sortOrder' => ++$tabSortOrder)); $layoutTab->setFields($layoutTabFields); $layoutTabs[] = $layoutTab; } } else { if (array_key_exists('fields', $fieldLayoutDef)) { $fieldSortOrder = 0; foreach ($fieldLayoutDef['fields'] as $fieldHandle => $required) { $field = craft()->fields->getFieldByHandle($fieldHandle); if ($field) { $layoutField = new FieldLayoutFieldModel(); $layoutField->setAttributes(array('fieldId' => $field->id, 'required' => $required, 'sortOrder' => ++$fieldSortOrder)); $layoutFields[] = $layoutField; } } } } $fieldLayout = new FieldLayoutModel(); $fieldLayout->type = ElementType::Entry; $fieldLayout->setTabs($layoutTabs); $fieldLayout->setFields($layoutFields); return $fieldLayout; }