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