/** * Finds the field with id $fieldId in $content. * * @param int $fieldId * @param Content $content * * @return Field */ protected function findFieldInContent($fieldId, Content $content) { foreach ($content->getFields() as $field) { if ($field->id == $fieldId) { return $field; } } throw new InvalidArgumentException("Field with id {$fieldId} not found in Content with id {$content->id}"); }
public function castContent(Content $content, array $a, Stub $stub, $isNested, $filter = 0) { $info = $content->contentInfo; $a = [Caster::PREFIX_VIRTUAL . 'id' => $info->id, Caster::PREFIX_VIRTUAL . 'name' => $info->name] + $a; if (!$filter & Caster::EXCLUDE_VERBOSE) { $groupedFields = []; foreach ($content->getFields() as $field) { $groupedFields[$field->languageCode][$field->fieldDefIdentifier] = $field->value; } $a += [Caster::PREFIX_VIRTUAL . 'names' => $content->versionInfo->getNames(), Caster::PREFIX_VIRTUAL . 'contentInfo' => $info, Caster::PREFIX_VIRTUAL . 'fields' => $groupedFields]; } return $a; }
/** * This method returns the complete fields collection * * @return \eZ\Publish\API\Repository\Values\Content\Field[] */ public function getFields() { return $this->content->getFields(); }
/** * Asserts that $copiedContent is valid copy of $originalContent. * * @param \eZ\Publish\API\Repository\Values\Content\Content $originalContent * @param \eZ\Publish\API\Repository\Values\Content\Content $copiedContent */ protected function assertCopyContentValues(APIContent $originalContent, APIContent $copiedContent) { $this->assertNotEquals($originalContent->id, $copiedContent->id, 'Id of content copy is equal to id od original content'); $this->assertSameClassPropertiesCorrect(array('contentTypeId', 'sectionId', 'published', 'ownerId', 'alwaysAvailable', 'mainLanguageCode'), $originalContent->contentInfo, $copiedContent->contentInfo); $this->assertNotEquals($originalContent->contentInfo->id, $copiedContent->contentInfo->id); $this->assertNotEquals($originalContent->contentInfo->remoteId, $copiedContent->contentInfo->remoteId); $this->assertSameClassPropertiesCorrect(array('versionNo', 'names', 'creatorId', 'initialLanguageCode', 'languageCodes'), $originalContent->versionInfo, $copiedContent->versionInfo); $this->assertNotEquals($originalContent->versionInfo->id, $copiedContent->versionInfo->id); $originalFields = $originalContent->getFields(); $copiedFields = $copiedContent->getFields(); $this->assertCount(count($originalFields), $copiedFields, 'Count of fields copied does not match the count of original fields'); foreach ($originalFields as $fieldIndex => $originalField) { $this->assertSameClassPropertiesCorrect(array('fieldDefIdentifier', 'value', 'languageCode'), $originalField, $copiedFields[$fieldIndex]); $this->assertNotEquals($originalField->id, $copiedFields[$fieldIndex]->id); } }
protected function assertFieldIds(Content $content1, Content $content2) { $fields1 = $this->mapFields($content1->getFields()); $fields2 = $this->mapFields($content2->getFields()); foreach ($fields1 as $fieldDefinitionIdentifier => $languageFieldIds) { foreach ($languageFieldIds as $languageCode => $fieldId) { $this->assertEquals($fields2[$fieldDefinitionIdentifier][$languageCode], $fieldId); } } }
/** * Test for the updateContent() method. * * @param \eZ\Publish\API\Repository\Values\Content\Content $content * * @return void * @see \eZ\Publish\API\Repository\ContentService::updateContent() * @depends eZ\Publish\API\Repository\Tests\ContentServiceTest::testUpdateContent */ public function testUpdateContentSetsExpectedFields($content) { $actual = $this->normalizeFields($content->getFields()); $expected = array(new Field(array('id' => 0, 'value' => true, 'languageCode' => 'eng-GB', 'fieldDefIdentifier' => 'description')), new Field(array('id' => 0, 'value' => true, 'languageCode' => 'eng-US', 'fieldDefIdentifier' => 'description')), new Field(array('id' => 0, 'value' => true, 'languageCode' => 'eng-GB', 'fieldDefIdentifier' => 'name')), new Field(array('id' => 0, 'value' => true, 'languageCode' => 'eng-US', 'fieldDefIdentifier' => 'name'))); $this->assertEquals($expected, $actual); }
/** * Asserts that $copiedContent is valid copy of $originalContent * * @param \eZ\Publish\API\Repository\Values\Content\Content $originalContent * @param \eZ\Publish\API\Repository\Values\Content\Content $copiedContent */ protected function assertCopyContentValues(APIContent $originalContent, APIContent $copiedContent) { $this->assertNotEquals($originalContent->id, $copiedContent->id, "Id of content copy is equal to id od original content"); $this->assertSameClassPropertiesCorrect(array("contentTypeId", "sectionId", "published", "ownerId", "alwaysAvailable", "mainLanguageCode"), $originalContent->contentInfo, $copiedContent->contentInfo); $this->assertNotEquals($originalContent->contentInfo->id, $copiedContent->contentInfo->id); $this->assertNotEquals($originalContent->contentInfo->remoteId, $copiedContent->contentInfo->remoteId); $this->assertSameClassPropertiesCorrect(array("versionNo", "names", "creatorId", "initialLanguageCode", "languageCodes"), $originalContent->versionInfo, $copiedContent->versionInfo); $this->assertNotEquals($originalContent->versionInfo->id, $copiedContent->versionInfo->id); $originalFields = $originalContent->getFields(); $copiedFields = $copiedContent->getFields(); $this->assertCount(count($originalFields), $copiedFields, "Count of fields copied does not match the count of original fields"); foreach ($originalFields as $fieldIndex => $originalField) { $this->assertSameClassPropertiesCorrect(array("fieldDefIdentifier", "value", "languageCode"), $originalField, $copiedFields[$fieldIndex]); $this->assertNotEquals($originalField->id, $copiedFields[$fieldIndex]->id); } }
/** * Creates a filtered version of <b>$content</b> when the given <b>$languages</b> * is not <b>NULL</b> and not empty. The returned Content instance will only * contain fields for the given language codes. * * @param \eZ\Publish\API\Repository\Values\Content\Content $content * @param string[] $languageCodes * * @return \eZ\Publish\API\Repository\Values\Content\Content */ private function filterFieldsByLanguages(Content $content, array $languageCodes = null) { $contentType = $this->repository->getContentTypeService()->loadContentType($content->contentTypeId); $fieldDefinitions = $contentType->getFieldDefinitions(); foreach ($content->getFields() as $field) { foreach ($fieldDefinitions as $fieldDefinition) { if ($fieldDefinition->identifier === $field->fieldDefIdentifier) { // @todo: Refactor out of here for clarity! $this->pseudoExternalStorage->handleLoad($fieldDefinition, $field, $content); } } } if (empty($languageCodes)) { return $content; } $fields = array(); foreach ($content->getFields() as $field) { if (false === $contentType->getFieldDefinition($field->fieldDefIdentifier)->isTranslatable) { $fields[] = $field; } else { if (in_array($field->languageCode, $languageCodes)) { $fields[] = $field; } } } return $this->copyContentObject($content, array('fields' => $fields)); }