/**
  * @see	\wcf\data\AbstractDatabaseObjectAction::create()
  */
 public function create()
 {
     $data = $this->parameters['data'];
     if (!isset($data['lastChangeTime'])) {
         $data['lastChangeTime'] = $data['time'];
     }
     // count attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $data['attachments'] = count($this->parameters['attachmentHandler']);
         if ($data['attachments']) {
             $attachments = $this->parameters['attachmentHandler']->getAttachmentList()->getObjects();
             $attachment = reset($attachments);
             $data['coverID'] = $attachment->attachmentID;
         }
     }
     // handle ip address
     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']);
         }
     }
     // save entry
     $entry = call_user_func(array($this->className, 'create'), $data);
     $entryEditor = new EntryEditor($entry);
     // handle categories
     $entryEditor->updateCategoryIDs($this->parameters['categoryIDs']);
     $entryEditor->setCategoryIDs($this->parameters['categoryIDs']);
     // add entry file
     $fileData['entryID'] = $entry->entryID;
     $fileData['isDisabled'] = $entry->isDisabled;
     $fileData['subject'] = $this->parameters['fileSubject'];
     $action = new EntryFileAction(array(), 'create', array('data' => $fileData, 'entry' => $entry, 'isFirstFile' => true, 'fileUpload' => $this->parameters['fileUpload']));
     $resultValues = $action->executeAction();
     // update last file id
     $entryEditor->update(array('lastFileID' => $resultValues['returnValues']->fileID));
     // update search index
     SearchIndexManager::getInstance()->add('de.incendium.filebase.entry', $entry->entryID, $entry->message, $entry->subject, $entry->time, $entry->userID, $entry->username, $entry->languageID);
     // update attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $this->parameters['attachmentHandler']->updateObjectID($entry->entryID);
     }
     // set language id (cannot be zero)
     $languageID = !isset($this->parameters['data']['languageID']) || $this->parameters['data']['languageID'] === null ? LanguageFactory::getInstance()->getDefaultLanguageID() : $this->parameters['data']['languageID'];
     // save tags
     if (!empty($this->parameters['tags'])) {
         TagEngine::getInstance()->addObjectTags('de.incendium.filebase.entry', $entry->entryID, $this->parameters['tags'], $languageID);
     }
     // trigger publication
     if (!$entry->isDisabled) {
         $action = new EntryAction(array($entryEditor), 'triggerPublication');
         $action->executeAction();
     }
     return $entry;
 }