public createContentType ( eZ\Publish\API\Repository\Values\ContentType\ContentTypeCreateStruct $contentTypeCreateStruct, array $contentTypeGroups ) : eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft | ||
$contentTypeCreateStruct | eZ\Publish\API\Repository\Values\ContentType\ContentTypeCreateStruct | |
$contentTypeGroups | array | Required array of {@link ContentTypeGroup} to link type with (must contain one) |
return | eZ\Publish\API\Repository\Values\ContentType\ContentTypeDraft |
public function createContentType(APIContentTypeCreateStruct $contentTypeCreateStruct, array $contentTypeGroups)
{
$inputMessage = $this->outputVisitor->visit($contentTypeCreateStruct);
$inputMessage->headers['Accept'] = $this->outputVisitor->getMediaType('ContentType');
if (empty($contentTypeGroups)) {
throw new InvalidArgumentException("Argument '\$contentTypeGroups' is invalid: Argument must contain at least one ContentTypeGroup");
}
/** @var $firstGroup \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup */
/* @var $contentTypeGroups \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup[] */
$firstGroup = array_pop($contentTypeGroups);
$response = $this->client->request('POST', $this->requestParser->generate('grouptypes', $this->requestParser->parse('typegroup', $firstGroup->id)), $inputMessage);
try {
$contentType = $this->inputDispatcher->parse($response);
} catch (ForbiddenException $e) {
throw new InvalidArgumentException($e->getMessage(), $e->getCode());
}
foreach ($contentTypeGroups as $contentTypeGroup) {
$this->assignContentTypeGroup($contentType, $contentTypeGroup);
}
return $this->completeContentType($contentType);
}