eZ\Publish\Core\Repository\ObjectStateService::buildCreateInputStruct PHP Method

buildCreateInputStruct() protected method

Validates input for creating object states/groups and builds the InputStruct object.
protected buildCreateInputStruct ( string $identifier, string $defaultLanguageCode, string[] $names, string[] $descriptions ) : eZ\Publish\SPI\Persistence\Content\ObjectState\InputStruct
$identifier string
$defaultLanguageCode string
$names string[]
$descriptions string[]
return eZ\Publish\SPI\Persistence\Content\ObjectState\InputStruct
    protected function buildCreateInputStruct($identifier, $defaultLanguageCode, $names, $descriptions)
    {
        if (!is_string($identifier) || empty($identifier)) {
            throw new InvalidArgumentValue('identifier', $identifier);
        }
        if (!is_string($defaultLanguageCode) || empty($defaultLanguageCode)) {
            throw new InvalidArgumentValue('defaultLanguageCode', $defaultLanguageCode);
        }
        if (!is_array($names) || empty($names)) {
            throw new InvalidArgumentValue('names', $names);
        }
        if (!isset($names[$defaultLanguageCode])) {
            throw new InvalidArgumentValue('names', $names);
        }
        foreach ($names as $languageCode => $name) {
            try {
                $this->repository->getContentLanguageService()->loadLanguage($languageCode);
            } catch (NotFoundException $e) {
                throw new InvalidArgumentValue('names', $names);
            }
            if (!is_string($name) || empty($name)) {
                throw new InvalidArgumentValue('names', $names);
            }
        }
        if ($descriptions !== null && !is_array($descriptions)) {
            throw new InvalidArgumentValue('descriptions', $descriptions);
        }
        $descriptions = $descriptions !== null ? $descriptions : array();
        $inputStruct = new InputStruct();
        $inputStruct->identifier = $identifier;
        $inputStruct->defaultLanguage = $defaultLanguageCode;
        $inputStruct->name = $names;
        $inputStruct->description = array();
        foreach ($names as $languageCode => $name) {
            if (isset($descriptions[$languageCode]) && !empty($descriptions[$languageCode])) {
                $inputStruct->description[$languageCode] = $descriptions[$languageCode];
            } else {
                $inputStruct->description[$languageCode] = '';
            }
        }
        return $inputStruct;
    }