コード例 #1
0
 /**
  * Returns an array of domain fields created from given array of SPI fields
  *
  * @param \eZ\Publish\SPI\Persistence\Content\Field[] $spiFields
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
  *
  * @return array
  */
 public function buildDomainFields(array $spiFields, ContentType $contentType)
 {
     $fieldIdentifierMap = array();
     foreach ($contentType->getFieldDefinitions() as $fieldDefinitions) {
         $fieldIdentifierMap[$fieldDefinitions->id] = $fieldDefinitions->identifier;
     }
     /** @var \eZ\Publish\Core\Repository\FieldTypeService $fieldTypeService */
     $fieldTypeService = $this->repository->getFieldTypeService();
     $fields = array();
     foreach ($spiFields as $spiField) {
         $fields[] = new Field(array("id" => $spiField->id, "value" => $fieldTypeService->buildFieldType($spiField->type)->fromPersistenceValue($spiField->value), "languageCode" => $spiField->languageCode, "fieldDefIdentifier" => $fieldIdentifierMap[$spiField->fieldDefinitionId]));
     }
     return $fields;
 }
コード例 #2
0
 /**
  * This method returns the content type field definitions from this type
  *
  * @return \eZ\Publish\API\Repository\Values\ContentType\FieldDefinition[]
  */
 public function getFieldDefinitions()
 {
     return $this->innerContentType->getFieldDefinitions();
 }
コード例 #3
0
 /**
  * Checks if fields are given, if not - returns all of them.
  *
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
  * @param string $fields
  *
  * @return array|null
  */
 protected function prepareFields(ContentType $contentType, $fields = null)
 {
     if (null !== $fields) {
         return explode(',', $fields);
     }
     $fields = array();
     $contentFields = $contentType->getFieldDefinitions();
     foreach ($contentFields as $field) {
         $fields[] = $field->identifier;
     }
     return $fields;
 }
コード例 #4
0
 /**
  * Creates a list of all fields, while missing non-required fields are
  * completed
  *
  * @param ContentType $contentType
  * @param array $fields
  * @param array $languageCodes
  * @param string $mainLanguageCode
  *
  * @return \eZ\Publish\API\Repository\Values\Content\Field[]
  */
 private function createCompleteFields(ContentType $contentType, array $fields, array $languageCodes, $mainLanguageCode)
 {
     $allFields = array();
     foreach ($contentType->getFieldDefinitions() as $fieldDefinition) {
         if ($fieldDefinition->isTranslatable) {
             foreach ($languageCodes as $languageCode) {
                 if (isset($fields[$fieldDefinition->identifier][$languageCode])) {
                     $field = $fields[$fieldDefinition->identifier][$languageCode];
                     $fieldId = $this->getFieldId($field->id);
                     // Existing translatable field
                     $allFields[$fieldId] = $this->cloneField($field, array('id' => $fieldId));
                 } else {
                     $fieldId = $this->getFieldId();
                     // Missing translatable field
                     $allFields[$fieldId] = new FieldStub(array('id' => $fieldId, 'value' => 'Pseudo default value from memory stuff.', 'languageCode' => $languageCode, 'fieldDefIdentifier' => $fieldDefinition->identifier));
                 }
             }
         } else {
             if (isset($fields[$fieldDefinition->identifier][$mainLanguageCode])) {
                 $field = $fields[$fieldDefinition->identifier][$mainLanguageCode];
                 $fieldId = $this->getFieldId($field->id);
                 // Existing non-translatable field
                 $allFields[$fieldId] = $this->cloneField($field, array('id' => $fieldId));
             } else {
                 $fieldId = $this->getFieldId();
                 // Missing non-translatable field
                 $allFields[$fieldId] = new FieldStub(array('id' => $fieldId, 'value' => 'Pseudo default value from memory stuff.', 'languageCode' => null, 'fieldDefIdentifier' => $fieldDefinition->identifier));
             }
         }
     }
     return $allFields;
 }