eZ\Publish\Core\Persistence\Legacy\Content\Type\Mapper::createUpdateStructFromType PHP Method

createUpdateStructFromType() public method

Creates an update struct from an existing $type.
public createUpdateStructFromType ( eZ\Publish\SPI\Persistence\Content\Type $type ) : eZ\Publish\SPI\Persistence\Content\Type\UpdateStruct
$type eZ\Publish\SPI\Persistence\Content\Type
return eZ\Publish\SPI\Persistence\Content\Type\UpdateStruct
    public function createUpdateStructFromType(Type $type)
    {
        $updateStruct = new UpdateStruct();
        $updateStruct->name = $type->name;
        $updateStruct->description = $type->description;
        $updateStruct->identifier = $type->identifier;
        $updateStruct->modified = $type->modified;
        $updateStruct->modifierId = $type->modifierId;
        $updateStruct->remoteId = $type->remoteId;
        $updateStruct->urlAliasSchema = $type->urlAliasSchema;
        $updateStruct->nameSchema = $type->nameSchema;
        $updateStruct->isContainer = $type->isContainer;
        $updateStruct->initialLanguageId = $type->initialLanguageId;
        $updateStruct->defaultAlwaysAvailable = $type->defaultAlwaysAvailable;
        $updateStruct->sortField = $type->sortField;
        $updateStruct->sortOrder = $type->sortOrder;
        return $updateStruct;
    }

Usage Example

Example #1
0
 /**
  * @param mixed $userId
  * @param mixed $contentTypeId
  * @param int $status One of Type::STATUS_DEFINED|Type::STATUS_DRAFT|Type::STATUS_MODIFIED
  *
  * @return Type
  */
 public function copy($userId, $contentTypeId, $status)
 {
     $createStruct = $this->mapper->createCreateStructFromType($this->load($contentTypeId, $status));
     $createStruct->modifierId = $userId;
     $createStruct->created = $createStruct->modified = time();
     $createStruct->creatorId = $userId;
     $createStruct->remoteId = md5(uniqid(get_class($createStruct), true));
     // extract actual identifier name, without "copy_of_" and number
     $originalIdentifier = preg_replace('/^copy_of_(.+)_\\d+$/', '$1', $createStruct->identifier);
     // set temporary identifier
     $createStruct->identifier = $createStruct->remoteId;
     // Set FieldDefinition ids to null to trigger creating new id
     foreach ($createStruct->fieldDefinitions as $fieldDefinition) {
         $fieldDefinition->id = null;
     }
     $contentTypeCopy = $this->internalCreate($createStruct);
     $updateStruct = $this->mapper->createUpdateStructFromType($contentTypeCopy);
     $updateStruct->identifier = 'copy_of_' . $originalIdentifier . '_' . $contentTypeCopy->id;
     return $this->update($contentTypeCopy->id, $contentTypeCopy->status, $updateStruct);
 }