Craft\NeoFieldType::prepSettings PHP Method

prepSettings() public method

Handles preparing block types, field layouts and groups.
public prepSettings ( array $settings ) : Neo_SettingsModel
$settings array
return Neo_SettingsModel
    public function prepSettings($settings)
    {
        if ($settings instanceof Neo_SettingsModel) {
            return $settings;
        }
        $neoSettings = new Neo_SettingsModel();
        $neoSettings->setField($this->model);
        $blockTypes = [];
        $groups = [];
        if (!empty($settings['blockTypes'])) {
            foreach ($settings['blockTypes'] as $blockTypeId => $blockTypeSettings) {
                $blockType = new Neo_BlockTypeModel();
                $blockType->id = $blockTypeId;
                $blockType->fieldId = $this->model->id;
                $blockType->name = $blockTypeSettings['name'];
                $blockType->handle = $blockTypeSettings['handle'];
                $blockType->maxBlocks = $blockTypeSettings['maxBlocks'];
                $blockType->sortOrder = $blockTypeSettings['sortOrder'];
                $blockType->childBlocks = $blockTypeSettings['childBlocks'];
                $blockType->topLevel = (bool) $blockTypeSettings['topLevel'];
                if (!empty($blockTypeSettings['fieldLayout'])) {
                    $fieldLayoutPost = $blockTypeSettings['fieldLayout'];
                    $requiredFieldPost = empty($blockTypeSettings['requiredFields']) ? [] : $blockTypeSettings['requiredFields'];
                    // Add support for blank tabs
                    foreach ($fieldLayoutPost as $tabName => $fieldIds) {
                        if (!is_array($fieldIds)) {
                            $fieldLayoutPost[$tabName] = [];
                        }
                    }
                    $fieldLayout = craft()->fields->assembleLayout($fieldLayoutPost, $requiredFieldPost);
                    $fieldLayout->type = Neo_ElementType::NeoBlock;
                    $blockType->setFieldLayout($fieldLayout);
                }
                $blockTypes[] = $blockType;
            }
        }
        if (!empty($settings['groups'])) {
            $names = $settings['groups']['name'];
            $sortOrders = $settings['groups']['sortOrder'];
            for ($i = 0; $i < count($names); $i++) {
                $group = new Neo_GroupModel();
                $group->name = $names[$i];
                $group->sortOrder = $sortOrders[$i];
                $groups[] = $group;
            }
        }
        $neoSettings->setBlockTypes($blockTypes);
        $neoSettings->setGroups($groups);
        if (!empty($settings['maxBlocks'])) {
            $neoSettings->maxBlocks = $settings['maxBlocks'];
        }
        return $neoSettings;
    }