Ejemplo n.º 1
0
 public function create()
 {
     $data = $this->parameters['data'];
     // count attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $data['attachments'] = count($this->parameters['attachmentHandler']);
     }
     if (LOG_IP_ADDRESS) {
         // add ip address
         if (!isset($data['ipAddress'])) {
             $data['ipAddress'] = WCF::getSession()->ipAddress;
         }
     } else {
         // do not track ip address
         if (isset($data['ipAddress'])) {
             unset($data['ipAddress']);
         }
     }
     $news = call_user_func(array($this->className, 'create'), $data);
     $newsEditor = new NewsEditor($news);
     // update attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $this->parameters['attachmentHandler']->updateObjectID($news->newsID);
     }
     // handle categories
     $newsEditor->updateCategoryIDs($this->parameters['categoryIDs']);
     $newsEditor->setCategoryIDs($this->parameters['categoryIDs']);
     // langID != 0
     $languageID = !isset($this->parameters['data']['languageID']) || $this->parameters['data']['languageID'] === null ? LanguageFactory::getInstance()->getDefaultLanguageID() : $this->parameters['data']['languageID'];
     // tags
     if (!empty($this->parameters['tags'])) {
         TagEngine::getInstance()->addObjectTags('de.codequake.cms.news', $news->newsID, $this->parameters['tags'], $languageID);
     }
     if (!$news->isDisabled) {
         // recent
         if ($news->userID !== null && $news->userID != 0) {
             UserActivityEventHandler::getInstance()->fireEvent('de.codequake.cms.news.recentActivityEvent', $news->newsID, $languageID, $news->userID, $news->time);
             UserActivityPointHandler::getInstance()->fireEvent('de.codequake.cms.activityPointEvent.news', $news->newsID, $news->userID);
         }
         // update search index
         SearchIndexManager::getInstance()->add('de.codequake.cms.news', $news->newsID, $news->message, $news->subject, $news->time, $news->userID, $news->username, $languageID);
         // reset storage
         UserStorageHandler::getInstance()->resetAll('cmsUnreadNews');
     }
     return $news;
 }