/**
  * Test for the updateContent() method.
  *
  * @see \eZ\Publish\API\Repository\ContentService::updateContent()
  * @depends eZ\Publish\API\Repository\Tests\NonRedundantFieldSetTest::testUpdateContentWithTwoLanguagesInitialLanguageTranslationNotCreated
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Content $content
  */
 public function testUpdateContentWithTwoLanguagesInitialLanguageTranslationNotCreatedFields(Content $content)
 {
     $emptyValue = $this->getRepository()->getFieldTypeService()->getFieldType("ezstring")->getEmptyValue();
     $this->assertCount(3, $content->versionInfo->languageCodes);
     $this->assertContains("ger-DE", $content->versionInfo->languageCodes);
     $this->assertContains("eng-US", $content->versionInfo->languageCodes);
     $this->assertContains("eng-GB", $content->versionInfo->languageCodes);
     $this->assertCount(12, $content->getFields());
     // eng-US
     $this->assertEquals($emptyValue, $content->getFieldValue("field1", "eng-US"));
     $this->assertEquals($emptyValue, $content->getFieldValue("field2", "eng-US"));
     $this->assertEquals("value 3", $content->getFieldValue("field3", "eng-US"));
     $this->assertEquals("value 4", $content->getFieldValue("field4", "eng-US"));
     // eng-GB
     $this->assertEquals($emptyValue, $content->getFieldValue("field1", "eng-GB"));
     $this->assertEquals($emptyValue, $content->getFieldValue("field2", "eng-GB"));
     $this->assertEquals("value 3 eng-GB", $content->getFieldValue("field3", "eng-GB"));
     $this->assertEquals("value 4 eng-GB", $content->getFieldValue("field4", "eng-GB"));
     // ger-DE
     $this->assertEquals($emptyValue, $content->getFieldValue("field1", "ger-DE"));
     $this->assertEquals($emptyValue, $content->getFieldValue("field2", "ger-DE"));
     $this->assertEquals($emptyValue, $content->getFieldValue("field3", "ger-DE"));
     $this->assertEquals($emptyValue, $content->getFieldValue("field4", "ger-DE"));
 }
 /**
  * Returns a field value for the given value
  * $version->fields[$fieldDefId][$languageCode] is an equivalent call
  * if no language is given on a translatable field this method returns
  * the value of the initial language of the version if present, otherwise null.
  * On non translatable fields this method ignores the languageCode parameter.
  *
  * @param string $fieldDefIdentifier
  * @param string $languageCode
  *
  * @return mixed a primitive type or a field type Value object depending on the field type.
  */
 public function getFieldValue($fieldDefIdentifier, $languageCode = null)
 {
     return $this->content->getFieldValue($fieldDefIdentifier, $languageCode);
 }
 /**
  * @depends testPublishContent
  */
 public function testPublishedName(Content $content)
 {
     $this->assertEquals($content->getFieldValue('name') . ' ' . $this->getFieldName(), $content->contentInfo->name);
 }
 /**
  * Test for the updateContent() method.
  *
  * @see \eZ\Publish\API\Repository\ContentService::updateContent()
  * @depends eZ\Publish\API\Repository\Tests\NonRedundantFieldSetTest::testUpdateContentWithTwoLanguagesInitialLanguageTranslationNotCreated
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Content $content
  */
 public function testUpdateContentWithTwoLanguagesInitialLanguageTranslationNotCreatedFields(Content $content)
 {
     $emptyValue = $this->getRepository()->getFieldTypeService()->getFieldType('ezstring')->getEmptyValue();
     $this->assertCount(3, $content->versionInfo->languageCodes);
     $this->assertContains('ger-DE', $content->versionInfo->languageCodes);
     $this->assertContains('eng-US', $content->versionInfo->languageCodes);
     $this->assertContains('eng-GB', $content->versionInfo->languageCodes);
     $this->assertCount(12, $content->getFields());
     // eng-US
     $this->assertEquals($emptyValue, $content->getFieldValue('field1', 'eng-US'));
     $this->assertEquals($emptyValue, $content->getFieldValue('field2', 'eng-US'));
     $this->assertEquals('value 3', $content->getFieldValue('field3', 'eng-US'));
     $this->assertEquals('value 4', $content->getFieldValue('field4', 'eng-US'));
     // eng-GB
     $this->assertEquals($emptyValue, $content->getFieldValue('field1', 'eng-GB'));
     $this->assertEquals($emptyValue, $content->getFieldValue('field2', 'eng-GB'));
     $this->assertEquals('value 3 eng-GB', $content->getFieldValue('field3', 'eng-GB'));
     $this->assertEquals('value 4 eng-GB', $content->getFieldValue('field4', 'eng-GB'));
     // ger-DE
     $this->assertEquals($emptyValue, $content->getFieldValue('field1', 'ger-DE'));
     $this->assertEquals($emptyValue, $content->getFieldValue('field2', 'ger-DE'));
     $this->assertEquals($emptyValue, $content->getFieldValue('field3', 'ger-DE'));
     $this->assertEquals($emptyValue, $content->getFieldValue('field4', 'ger-DE'));
 }
 /**
  * Returns author of the content.
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Content $contentValue
  * @param \eZ\Publish\API\Repository\Values\ContentType\ContentType $contentType
  *
  * @return string
  */
 private function getAuthor(Content $contentValue, ContentType $contentType)
 {
     $author = $contentValue->getFieldValue($this->value->getConfiguredFieldIdentifier('author', $contentType));
     if (null === $author) {
         $ownerId = empty($contentValue->contentInfo->ownerId) ? $this->defaultAuthorId : $contentValue->contentInfo->ownerId;
         $userContentInfo = $this->contentService->loadContentInfo($ownerId);
         $author = $userContentInfo->name;
     }
     return (string) $author;
 }
 /**
  * Checks if content has image relation field, returns its ID if true.
  *
  * @param \eZ\Publish\API\Repository\Values\Content\Content $content
  * @param string $field
  * @param string $language
  *
  * @return int|null
  */
 private function getRelation(Content $content, $field, $language)
 {
     $fieldDefinitions = $this->getFieldDefinitionList();
     $fieldNames = array_flip($fieldDefinitions);
     $isRelation = in_array('ezobjectrelation', $fieldDefinitions) && $field == $fieldNames['ezobjectrelation'];
     if ($isRelation && $field == $fieldNames['ezobjectrelation']) {
         $fieldValue = $content->getFieldValue($fieldNames['ezobjectrelation'], $language);
         if (isset($fieldValue->destinationContentId)) {
             return $fieldValue->destinationContentId;
         }
     }
     return null;
 }
 /**
  * reimp this function!
  *
  * Get and builds a form schema / entity from an content object with fields
  *
  * @param string $contentType
  * @param string $languageCode
  * @param \eZ\Publish\API\Repository\Values\Content\Content $content
  * @param bool $isCollector
  *
  * @return array $formSchemaArr,$formValueArr
  */
 public function getFormSchemaFromContentObjectFields($contentType, $languageCode = 'eng-GB', $content = false, $isCollector = false)
 {
     $formValueArr = array();
     $formSchemaArr = array();
     $contentTypeConfig = false;
     if (isset($this->config['frontendediting_config']['types'][$contentType->identifier])) {
         $contentTypeConfig = $this->config['frontendediting_config']['types'][$contentType->identifier];
     }
     foreach ($contentType->getFieldDefinitions() as $field) {
         if ($isCollector !== true || $isCollector === true && $field->isInfoCollector) {
             if (!isset($contentTypeConfig['fields']) || in_array($field->identifier, $contentTypeConfig['fields'])) {
                 $fieldArr = array();
                 $fieldArr1 = false;
                 $fieldArr2 = false;
                 //                $fieldArr['position'] = $field->position;
                 // TODO check if the name for a language code is set otherwise fall back
                 // maybe use ez
                 //var_dump( $field->names );
                 $fieldArr['label'] = $field->names[$languageCode];
                 $fieldArr['required'] = $field->isRequired;
                 $fieldArr['choices'] = false;
                 // map ez types to symfony types
                 // http://symfony.com/doc/current/reference/forms/types.html
                 // ToDo: to many
                 switch ($field->fieldTypeIdentifier) {
                     case 'ezstring':
                         $formFieldIdentifier = 'ezstring' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'text';
                         $fieldArr['value'] = $field->defaultValue->text;
                         break;
                     case 'eztext':
                         $formFieldIdentifier = 'eztext' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'textarea';
                         $fieldArr['value'] = $field->defaultValue->text;
                         break;
                     case 'ezxmltext':
                         $formFieldIdentifier = 'ezxmltext' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'textarea';
                         // ToDo
                         //                            $fieldArr['value'] = $this->ezXmltextToHtml( $content, $field );
                         $fieldArr['value'] = '';
                         break;
                     case 'ezemail':
                         $formFieldIdentifier = 'ezemail' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'email';
                         $fieldArr['value'] = $field->defaultValue->email;
                         break;
                     case 'ezboolean':
                         $formFieldIdentifier = 'ezxmltext' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'checkbox';
                         $fieldArr['value'] = $field->defaultValue->bool;
                         break;
                     case 'ezuser':
                         // ToDo: many
                         $formFieldIdentifier = 'ezuser' . FormHandlerService::separator . $field->identifier . FormHandlerService::separator . 'login';
                         $fieldArr['type'] = 'text';
                         $fieldArr['label'] = 'cjw_publishtools.formbuilder.user.login';
                         $fieldArr['value'] = '';
                         $fieldArr1 = array();
                         $fieldArr1['type'] = 'email';
                         $fieldArr1['label'] = 'cjw_publishtools.formbuilder.user.email';
                         $fieldArr1['required'] = true;
                         $formFieldIdentifier1 = 'ezuser' . FormHandlerService::separator . $field->identifier . FormHandlerService::separator . 'email';
                         $fieldArr1['value'] = '';
                         $fieldArr1['choices'] = false;
                         $fieldArr2 = array();
                         $fieldArr2['type'] = 'password';
                         $fieldArr2['label'] = 'cjw_publishtools.formbuilder.user.password';
                         $fieldArr2['required'] = true;
                         $formFieldIdentifier2 = 'ezuser' . FormHandlerService::separator . $field->identifier . FormHandlerService::separator . 'password';
                         $fieldArr2['value'] = '';
                         $fieldArr2['choices'] = false;
                         break;
                         // ToDo: multiple / single, select / radio / checkbox, etc.
                     // ToDo: multiple / single, select / radio / checkbox, etc.
                     case 'ezselection':
                         $formFieldIdentifier = 'ezselection' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'choice';
                         $fieldArr['choices'] = array();
                         // Translate choices, which aren't translatable in eZ BackEnd
                         foreach ($field->fieldSettings['options'] as $fieldChoiceKey => $fieldChoice) {
                             $fieldArr['choices'][$fieldChoiceKey] = $this->container->get('translator')->trans($fieldChoice);
                         }
                         // http://stackoverflow.com/questions/17314996/symfony2-array-to-string-conversion-error
                         if ($field->fieldSettings['isMultiple']) {
                             $fieldArr['multiple'] = true;
                             $fieldArr['value'] = $field->defaultValue->selection;
                         } else {
                             $fieldArr['multiple'] = false;
                             $fieldArr['value'] = false;
                             if (isset($field->defaultValue->selection['0'])) {
                                 $fieldArr['value'] = $field->defaultValue->selection['0'];
                             }
                         }
                         break;
                     default:
                         $formFieldIdentifier = 'default' . FormHandlerService::separator . $field->identifier;
                         $fieldArr['type'] = 'text';
                         $fieldArr['value'] = '';
                 }
                 // build / set entity array dynamicaly from fieldtype
                 if ($content) {
                     $formFieldIdentifierArr = explode(':', $formFieldIdentifier);
                     switch ($formFieldIdentifierArr['0']) {
                         case 'ezuser':
                             $userValue = $content->getFieldValue($field->identifier);
                             $fieldArr['value'] = $userValue->login;
                             $fieldArr1['value'] = $userValue->email;
                             break;
                         default:
                             switch ($fieldArr['type']) {
                                 case 'choice':
                                     // http://stackoverflow.com/questions/17314996/symfony2-array-to-string-conversion-error
                                     if ($fieldArr['multiple']) {
                                         $fieldArr['value'] = $content->getFieldValue($field->identifier)->selection;
                                     } else {
                                         $fieldArr['value'] = $content->getFieldValue($field->identifier)->selection['0'];
                                     }
                                     break;
                                 default:
                                     if (isset($content->getFieldValue($field->identifier)->text)) {
                                         $fieldArr['value'] = $content->getFieldValue($field->identifier)->text;
                                     }
                             }
                     }
                 }
                 $formValueArr[$formFieldIdentifier] = $fieldArr['value'];
                 $formSchemaArr[$formFieldIdentifier] = $fieldArr;
                 if ($fieldArr1 !== false) {
                     $formValueArr[$formFieldIdentifier1] = $fieldArr1['value'];
                     $formSchemaArr[$formFieldIdentifier1] = $fieldArr1;
                 }
                 if ($fieldArr2 !== false) {
                     $formValueArr[$formFieldIdentifier2] = $fieldArr2['value'];
                     $formSchemaArr[$formFieldIdentifier2] = $fieldArr2;
                 }
             }
         }
     }
     return array($formSchemaArr, $formValueArr);
 }