/** * @see \wcf\system\message\quote\AbstractMessageQuoteHandler::getMessages() */ protected function getMessages(array $data) { // read entries $entryList = new EntryList(); $entryList->getConditionBuilder()->add("news_entry.entryID IN (?)", array(array_keys($data))); $entryList->readObjects(); $entries = $entryList->getObjects(); $quotedMessages = $validEntryIDs = array(); // create QuotedMessage objects foreach ($entries as $entry) { $validEntryIDs[] = $entry->entryID; $message = new QuotedMessage($entry); foreach (array_keys($data[$entry->entryID]) as $quoteID) { $message->addQuote($quoteID, MessageQuoteManager::getInstance()->getQuote($quoteID, false), MessageQuoteManager::getInstance()->getQuote($quoteID, true)); } $quotedMessages[] = $message; } // check for orphaned quotes if (count($validEntryIDs) != count($data)) { $orphanedQuoteIDs = array(); foreach ($data as $entryID => $quoteIDs) { if (!in_array($entryID, $validEntryIDs)) { foreach (array_keys($quoteIDs) as $quoteID) { $orphanedQuoteIDs[] = $quoteID; } } } MessageQuoteManager::getInstance()->removeOrphanedQuotes($orphanedQuoteIDs); } return $quotedMessages; }
/** * Loads the news entries. */ protected function loadEntries() { $this->entry = array(); if (empty($this->entryIDs)) { return; } $this->entryIDs = array_unique($this->entryIDs); $categoryIDs = NewsCategory::getAccessibleCategoryIDs(); if (empty($categoryIDs)) { return; } $entryList = new EntryList(); $entryList->getConditionBuilder()->add('news_entry.entryID IN (?)', array($this->entryIDs)); $entryList->getConditionBuilder()->add('news_entry.entryID IN (SELECT entryID FROM cms' . WCF_N . '_news_entry_to_category WHERE categoryID IN (?))', array($categoryIDs)); $entryList->getConditionBuilder()->add('news_entry.isDisabled = 0 AND news_entry.isDeleted = 0 AND news_entry.isPublished = 1'); $entryList->readObjects(); $this->entry = $entryList->getObjects(); }
/** * @see wcf\system\cronjob\ICronjob::execute() */ public function execute(Cronjob $cronjob) { parent::execute($cronjob); // get delayed news $entryList = new EntryList(); $entryList->getConditionBuilder()->add('news_entry.isPublished = 0'); $entryList->getConditionBuilder()->add('news_entry.publicationDate <= ?', array(TIME_NOW)); $entryList->readObjects(); if (count($entryList->getObjects())) { // publish news $action = new EntryAction($entryList->getObjects(), 'publish'); $action->executeAction(); } // get outdated news $entryList = new EntryList(); $entryList->getConditionBuilder()->add('news_entry.isArchived = 0'); $entryList->getConditionBuilder()->add('news_entry.time <= ?', array(TIME_NOW - CMS_NEWS_DAYS_TO_ARCHIVE * 86400)); $entryList->readObjects(); if (count($entryList->getObjects())) { // archivate news $action = new EntryAction($entryList->getObjects(), 'archive'); $action->executeAction(); } // get outdated news in archive if (CMS_NEWS_DAYS_TO_DELETE_ARCHIVE) { $entryList = new NewsList(); $entryList->getConditionBuilder()->add('news_entry.isArchived = 1'); $entryList->getConditionBuilder()->add('news_entry.time <= ?', array(TIME_NOW - CMS_NEWS_DAYS_TO_ARCHIVE * 86400 - CMS_NEWS_DAYS_TO_DELETE_ARCHIVE * 86400)); $entryList->readObjects(); if (count($entryList->getObjects())) { // delete news $action = new EntryAction($entryList->getObjects(), 'delete'); $action->executeAction(); } } }