/**
  * @see	\wcf\system\importer\IImporter::import()
  */
 public function import($oldID, array $data, array $additionalData = array())
 {
     // get user id
     $data['userID'] = ImportHandler::getInstance()->getNewID('com.woltlab.wcf.user', $data['userID']);
     // get news id
     if (is_numeric($oldID)) {
         $news = new News($oldID);
         if (!$news->newsID) {
             $data['newsID'] = $oldID;
         }
     }
     // get news categories
     $categoryIDs = array();
     if (!empty($additionalData['categories'])) {
         foreach ($additionalData['categories'] as $oldCategoryID) {
             $newCategoryID = ImportHandler::getInstance()->getNewID('de.voolia.news.category', $oldCategoryID);
             if ($newCategoryID) {
                 $categoryIDs[] = $newCategoryID;
             }
         }
     }
     // work-around for unknown username
     if (empty($data['username'])) {
         $user = new User($data['userID']);
         $data['username'] = $user->username;
     }
     // get language by languageCode
     if (!empty($additionalData['languageCode'])) {
         if (($language = LanguageFactory::getInstance()->getLanguageByCode($additionalData['languageCode'])) !== null) {
             $data['languageID'] = $language->languageID;
         }
     }
     // create news
     $news = NewsEditor::create($data);
     $newsEditor = new NewsEditor($news);
     // save the tags from news entry
     if (!empty($additionalData['tags'])) {
         TagEngine::getInstance()->addObjectTags('de.voolia.news.entry', $news->newsID, $additionalData['tags'], $news->languageID ?: LanguageFactory::getInstance()->getDefaultLanguageID());
     }
     // update news categories
     $newsEditor->updateCategoryIDs($categoryIDs);
     ImportHandler::getInstance()->saveNewID('de.voolia.news.entry', $oldID, $news->newsID);
     return $news->newsID;
 }
 /**
  * @see	\wcf\data\AbstractDatabaseObjectAction::create()
  */
 public function create()
 {
     // count attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $this->parameters['data']['attachments'] = count($this->parameters['attachmentHandler']);
     }
     $object = call_user_func(array($this->className, 'create'), $this->parameters['data']);
     $newsEditor = new NewsEditor($object);
     // add search index
     SearchIndexManager::getInstance()->add('de.voolia.news.entry', $object->newsID, $object->text, $object->subject, $object->time, $object->userID, $object->username, $object->languageID);
     // handle the news categories
     $newsEditor->updateCategoryIDs($this->parameters['categoryIDs']);
     $newsEditor->setCategoryIDs($this->parameters['categoryIDs']);
     // handle language id
     $languageID = !isset($this->parameters['data']['languageID']) || $this->parameters['data']['languageID'] === null ? LanguageFactory::getInstance()->getDefaultLanguageID() : $this->parameters['data']['languageID'];
     // save the news tags
     if (!empty($this->parameters['tags'])) {
         TagEngine::getInstance()->addObjectTags('de.voolia.news.entry', $object->newsID, $this->parameters['tags'], $languageID);
     }
     // sources
     if (isset($this->parameters['sources'])) {
         $this->addSources($object->newsID, $this->parameters['sources']);
     }
     // update attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $this->parameters['attachmentHandler']->updateObjectID($object->newsID);
     }
     // news publication
     if (!$object->isDisabled && $object->isPublished) {
         $action = new NewsAction(array($newsEditor), 'triggerPublication');
         $action->executeAction();
     }
     // reset the news cache
     NewsEditor::resetNewsStatsCache();
     return $object;
 }