/** * @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; }