/**
  * Bulk reverts changes made to history saving objects.
  */
 public function bulkRevert()
 {
     $this->readInteger('timeframe', true);
     if (!$this->parameters['timeframe']) {
         $this->parameters['timeframe'] = 86400 * 7;
     }
     EditHistoryManager::getInstance()->bulkRevert($this->objectIDs, $this->parameters['timeframe']);
 }
 /**
  * @see	\wcf\form\IForm::save()
  */
 public function save()
 {
     parent::save();
     EditHistoryManager::getInstance()->bulkRevert($this->userIDs, $this->timeframe * 86400);
     // reset clipboard
     ClipboardHandler::getInstance()->removeItems($this->objectTypeID);
     $this->saved();
     // show success message
     WCF::getTPL()->assign('message', 'wcf.global.success');
     WCF::getTPL()->display('success');
     exit;
 }
 /**
  * @see	\wcf\data\AbstractDatabaseObjectAction::update()
  */
 public function update()
 {
     // count attachments
     if (isset($this->parameters['attachmentHandler']) && $this->parameters['attachmentHandler'] !== null) {
         $this->parameters['data']['attachments'] = count($this->parameters['attachmentHandler']);
     }
     // update lastVersionTime for edit history
     if (MODULE_EDIT_HISTORY && isset($this->parameters['isEdit']) && isset($this->parameters['data']['text'])) {
         $this->parameters['data']['lastVersionTime'] = TIME_NOW;
     }
     parent::update();
     // get ids
     $objectIDs = array();
     foreach ($this->objects as $entry) {
         $objectIDs[] = $entry->entryID;
     }
     if (!empty($objectIDs)) {
         // delete old search index entries
         SearchIndexManager::getInstance()->delete('de.incendium.cms.news.entry', $objectIDs);
     }
     $publicationEntryIDs = array();
     foreach ($this->objects as $entry) {
         // handle the news categories
         if (isset($this->parameters['categoryIDs'])) {
             $entry->updateCategoryIDs($this->parameters['categoryIDs']);
         }
         // update tags
         if (!empty($this->parameters['tags'])) {
             // set language id (cannot be zero)
             $languageID = !isset($this->parameters['data']['languageID']) || $this->parameters['data']['languageID'] === null ? LanguageFactory::getInstance()->getDefaultLanguageID() : $this->parameters['data']['languageID'];
             TagEngine::getInstance()->addObjectTags('de.incendium.cms.news.entry', $entry->entryID, $this->parameters['tags'], $languageID);
         }
         // create new search index entry
         SearchIndexManager::getInstance()->add('de.incendium.cms.news.entry', $entry->entryID, isset($this->parameters['data']['message']) ? $this->parameters['data']['message'] : $entry->message, isset($this->parameters['data']['subject']) ? $this->parameters['data']['subject'] : $entry->subject, $entry->time, $entry->userID, $entry->username, $entry->languageID);
         // handle publication
         if (!$entry->isPublished && !empty($this->parameters['data']['isPublished'])) {
             $publicationEntryIDs[] = $entry->entryID;
         }
         // edit
         if (isset($this->parameters['isEdit']) && isset($this->parameters['data']['message'])) {
             $historySavingEntry = new HistorySavingEntry($entry->getDecoratedObject());
             EditHistoryManager::getInstance()->add('de.incendium.cms.news.entry', $entry->entryID, $entry->message, $historySavingEntry->getTime(), $historySavingEntry->getUserID(), $historySavingEntry->getUsername(), isset($this->parameters['editReason']) ? $this->parameters['editReason'] : '', WCF::getUser()->userID);
         }
         NewsEntryModificationLogHandler::getInstance()->edit($entry->getDecoratedObject(), isset($this->parameters['reason']) ? $this->parameters['reason'] : '');
         // update embedded objects
         if (isset($this->parameters['data']['message'])) {
             if ($entry->hasEmbeddedObjects != MessageEmbeddedObjectManager::getInstance()->registerObjects('de.incendium.cms.news.entry', $entry->entryID, $this->parameters['data']['message'])) {
                 $entry->update(array('hasEmbeddedObjects' => $entry->hasEmbeddedObjects ? 0 : 1));
             }
         }
         // trigger publication
         if (!empty($publicationEntryIDs)) {
             $action = new EntryAction($publicationEntryIDs, 'triggerPublication');
             $action->executeAction();
         }
     }
 }