Exemplo n.º 1
0
 /**
  * Adds a translation in language $newLanguageCode for object
  *
  * @param string $newLanguageCode
  * @param mixed $translationData array( attribute identifier => attribute value )
  * @return void
  */
 public function addTranslation($newLanguageCode, $translationData)
 {
     // Make sure to refresh the objects data.
     $this->refresh();
     $this->object->cleanupInternalDrafts();
     $version = $this->object->createNewVersionIn($newLanguageCode);
     $version->setAttribute('status', eZContentObjectVersion::STATUS_INTERNAL_DRAFT);
     $version->store();
     $newVersion = $this->object->version($version->attribute('version'));
     $newVersionAttributes = $newVersion->contentObjectAttributes($newLanguageCode);
     $versionDataMap = self::createDataMap($newVersionAttributes);
     // Start updating new version
     $version->setAttribute('modified', time());
     $version->setAttribute('status', eZContentObjectVersion::STATUS_DRAFT);
     $db = eZDB::instance();
     $db->begin();
     $version->store();
     // @TODO: Add generic datatype support here
     foreach ($translationData as $attr => $value) {
         if ($versionDataMap[$attr]->attribute('data_type_string') == "ezxmltext") {
             $value = $this->processXmlTextData($value, $versionDataMap[$attr]);
         }
         $versionDataMap[$attr]->setAttribute('data_text', $value);
         $versionDataMap[$attr]->store();
     }
     $db->commit();
     //Update the content object name
     $db->begin();
     $this->object->setName($this->class->contentObjectName($this->object, $version->attribute('version'), $newLanguageCode), $version->attribute('version'), $newLanguageCode);
     $db->commit();
     // Finally publish object
     self::publishContentObject($this->object, $version);
 }