protected function validateInputContentTypeCreateStruct(APIContentTypeCreateStruct $contentTypeCreateStruct)
{
// Required properties
if ($contentTypeCreateStruct->identifier === null) {
throw new InvalidArgumentException('$contentTypeCreateStruct', "Property 'identifier' is required");
}
if (!is_string($contentTypeCreateStruct->identifier)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->identifier', 'string', $contentTypeCreateStruct->identifier);
}
if ($contentTypeCreateStruct->identifier === '') {
throw new InvalidArgumentValue('$contentTypeCreateStruct->identifier', $contentTypeCreateStruct->identifier);
}
if ($contentTypeCreateStruct->mainLanguageCode === null) {
throw new InvalidArgumentException('$contentTypeCreateStruct', "Property 'mainLanguageCode' is required");
}
if (!is_string($contentTypeCreateStruct->mainLanguageCode)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->mainLanguageCode', 'string', $contentTypeCreateStruct->mainLanguageCode);
}
if ($contentTypeCreateStruct->mainLanguageCode === '') {
throw new InvalidArgumentValue('$contentTypeCreateStruct->mainLanguageCode', $contentTypeCreateStruct->mainLanguageCode);
}
if ($contentTypeCreateStruct->names !== null) {
$this->domainMapper->validateTranslatedList($contentTypeCreateStruct->names, '$contentTypeCreateStruct->names');
}
if (!isset($contentTypeCreateStruct->names[$contentTypeCreateStruct->mainLanguageCode]) || $contentTypeCreateStruct->names[$contentTypeCreateStruct->mainLanguageCode] === '') {
throw new InvalidArgumentException('$contentTypeCreateStruct->names', 'At least one name in the main language is required');
}
// Optional properties
if ($contentTypeCreateStruct->descriptions !== null) {
$this->domainMapper->validateTranslatedList($contentTypeCreateStruct->descriptions, '$contentTypeCreateStruct->descriptions');
}
if ($contentTypeCreateStruct->defaultSortField !== null && !$this->domainMapper->isValidLocationSortField($contentTypeCreateStruct->defaultSortField)) {
throw new InvalidArgumentValue('$contentTypeCreateStruct->defaultSortField', $contentTypeCreateStruct->defaultSortField);
}
if ($contentTypeCreateStruct->defaultSortOrder !== null && !$this->domainMapper->isValidLocationSortOrder($contentTypeCreateStruct->defaultSortOrder)) {
throw new InvalidArgumentValue('$contentTypeCreateStruct->defaultSortOrder', $contentTypeCreateStruct->defaultSortOrder);
}
if ($contentTypeCreateStruct->creatorId !== null) {
$this->repository->getUserService()->loadUser($contentTypeCreateStruct->creatorId);
}
if ($contentTypeCreateStruct->creationDate !== null && !$contentTypeCreateStruct->creationDate instanceof DateTime) {
throw new InvalidArgumentType('$contentTypeCreateStruct->creationDate', 'DateTime', $contentTypeCreateStruct->creationDate);
}
if ($contentTypeCreateStruct->defaultAlwaysAvailable !== null && !is_bool($contentTypeCreateStruct->defaultAlwaysAvailable)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->defaultAlwaysAvailable', 'boolean', $contentTypeCreateStruct->defaultAlwaysAvailable);
}
if ($contentTypeCreateStruct->isContainer !== null && !is_bool($contentTypeCreateStruct->isContainer)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->isContainer', 'boolean', $contentTypeCreateStruct->isContainer);
}
if ($contentTypeCreateStruct->remoteId !== null && !is_string($contentTypeCreateStruct->remoteId)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->remoteId', 'string', $contentTypeCreateStruct->remoteId);
}
if ($contentTypeCreateStruct->nameSchema !== null && !is_string($contentTypeCreateStruct->nameSchema)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->nameSchema', 'string', $contentTypeCreateStruct->nameSchema);
}
if ($contentTypeCreateStruct->urlAliasSchema !== null && !is_string($contentTypeCreateStruct->urlAliasSchema)) {
throw new InvalidArgumentType('$contentTypeCreateStruct->urlAliasSchema', 'string', $contentTypeCreateStruct->urlAliasSchema);
}
foreach ($contentTypeCreateStruct->fieldDefinitions as $key => $fieldDefinitionCreateStruct) {
if (!$fieldDefinitionCreateStruct instanceof FieldDefinitionCreateStruct) {
throw new InvalidArgumentType("\$contentTypeCreateStruct->fieldDefinitions[{$key}]", 'eZ\\Publish\\API\\Repository\\Values\\ContentType\\FieldDefinitionCreateStruct', $fieldDefinitionCreateStruct);
}
$this->validateInputFieldDefinitionCreateStruct($fieldDefinitionCreateStruct, "\$contentTypeCreateStruct->fieldDefinitions[{$key}]");
}
}