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