eZ\Publish\Core\Repository\Helper\ContentTypeDomainMapper::buildContentTypeDomainObject PHP Method

buildContentTypeDomainObject() public method

Builds a ContentType domain object from value object returned by persistence.
public buildContentTypeDomainObject ( eZ\Publish\SPI\Persistence\Content\Type $spiContentType, array $spiContentTypeGroups ) : eZ\Publish\API\Repository\Values\ContentType\ContentType
$spiContentType eZ\Publish\SPI\Persistence\Content\Type
$spiContentTypeGroups array
return eZ\Publish\API\Repository\Values\ContentType\ContentType
    public function buildContentTypeDomainObject(SPIContentType $spiContentType, array $spiContentTypeGroups)
    {
        $mainLanguageCode = $this->contentLanguageHandler->load($spiContentType->initialLanguageId)->languageCode;
        $contentTypeGroups = array();
        foreach ($spiContentTypeGroups as $spiContentTypeGroup) {
            $contentTypeGroups[] = $this->buildContentTypeGroupDomainObject($spiContentTypeGroup);
        }
        $fieldDefinitions = array();
        foreach ($spiContentType->fieldDefinitions as $spiFieldDefinition) {
            $fieldDefinitions[] = $this->buildFieldDefinitionDomainObject($spiFieldDefinition);
        }
        return new ContentType(array('names' => $spiContentType->name, 'descriptions' => $spiContentType->description, 'contentTypeGroups' => $contentTypeGroups, 'fieldDefinitions' => $fieldDefinitions, 'id' => $spiContentType->id, 'status' => $spiContentType->status, 'identifier' => $spiContentType->identifier, 'creationDate' => $this->getDateTime($spiContentType->created), 'modificationDate' => $this->getDateTime($spiContentType->modified), 'creatorId' => $spiContentType->creatorId, 'modifierId' => $spiContentType->modifierId, 'remoteId' => $spiContentType->remoteId, 'urlAliasSchema' => $spiContentType->urlAliasSchema, 'nameSchema' => $spiContentType->nameSchema, 'isContainer' => $spiContentType->isContainer, 'mainLanguageCode' => $mainLanguageCode, 'defaultAlwaysAvailable' => $spiContentType->defaultAlwaysAvailable, 'defaultSortField' => $spiContentType->sortField, 'defaultSortOrder' => $spiContentType->sortOrder));
    }

Usage Example

 /**
  * Get Content Type objects which belong to the given content type group.
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentTypeGroup $contentTypeGroup
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\ContentType[] Which have status DEFINED
  */
 public function loadContentTypes(APIContentTypeGroup $contentTypeGroup)
 {
     $spiContentTypes = $this->contentTypeHandler->loadContentTypes($contentTypeGroup->id, SPIContentType::STATUS_DEFINED);
     $contentTypes = array();
     foreach ($spiContentTypes as $spiContentType) {
         $contentTypes[] = $this->contentTypeDomainMapper->buildContentTypeDomainObject($spiContentType, array_map(function ($id) {
             return $this->contentTypeHandler->loadGroup($id);
         }, $spiContentType->groupIds));
     }
     return $contentTypes;
 }