/** * @see \wcf\system\like\IViewableLikeProvider::prepare() */ public function prepare(array $likes) { $entryIDs = array(); foreach ($likes as $like) { $entryIDs[] = $like->objectID; } // fetch entries $entryList = new EntryList(); $entryList->setObjectIDs($entryIDs); $entryList->readObjects(); $entries = $entryList->getObjects(); // set message foreach ($likes as $like) { if (isset($entries[$like->objectID])) { $entry = $entries[$like->objectID]; // check permissions if (!$entry->canRead()) { continue; } $like->setIsAccessible(); // short output $text = WCF::getLanguage()->getDynamicVariable('wcf.like.title.de.incendium.cms.like.likeableNews', array('entry' => $entry, 'like' => $like)); $like->setTitle($text); // output $like->setDescription($entry->getExcerpt()); } } }
/** * @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; }
/** * @see \wcf\data\DatabaseObjectList::readObjects() */ public function readObjects() { parent::readObjects(); // get attachments if ($this->attachmentLoading) { foreach ($this->objects as $entry) { if ($entry->attachments) { $this->attachmentObjectIDs[] = $entry->entryID; } } $this->readAttachments(); } if ($this->loadDeleteNote) { $objectIDs = array(); foreach ($this->objects as $object) { if ($object->isDeleted) { $objectIDs[] = $object->entryID; } } // load deletion data if (!empty($objectIDs)) { $this->logList = new NewsEntryListModificationLogList(); $this->logList->setEntryData($objectIDs, 'trash'); $this->logList->readObjects(); foreach ($this->logList as $logEntry) { foreach ($this->objects as $object) { if ($object->entryID == $logEntry->objectID) { $object->setLogEntry($logEntry); } } } } } }
/** * 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(); } } }
/** * @see \wcf\system\moderation\queue\IModerationQueueHandler::populate() */ public function populate(array $queues) { $objectIDs = array(); foreach ($queues as $object) { $objectIDs[] = $object->objectID; } // fetch news entries $entryList = new EntryList(); $entryList->setObjectIDs($objectIDs); $entryList->readObjects(); $entry = $entryList->getObjects(); foreach ($queues as $object) { if (isset($entry[$object->objectID])) { $object->setAffectedObject($entry[$object->objectID]); } } }
/** * @see \wcf\system\like\IViewableLikeProvider::prepare() */ public function prepare(array $likes) { if (!WCF::getSession()->getPermission('user.news.canReadEntry')) { return; } $commentLikeObjectType = ObjectTypeCache::getInstance()->getObjectTypeByName('com.woltlab.wcf.like.likeableObject', 'com.woltlab.wcf.comment'); $commentIDs = $responseIDs = array(); foreach ($likes as $like) { if ($like->objectTypeID == $commentLikeObjectType->objectTypeID) { $commentIDs[] = $like->objectID; } else { $responseIDs[] = $like->objectID; } } // fetch response $userIDs = $responses = array(); if (!empty($responseIDs)) { $responseList = new CommentResponseList(); $responseList->getConditionBuilder()->add("comment_response.responseID IN (?)", array($responseIDs)); $responseList->readObjects(); $responses = $responseList->getObjects(); foreach ($responses as $response) { $commentIDs[] = $response->commentID; if ($response->userID) { $userIDs[] = $response->userID; } } } // fetch comments $commentList = new CommentList(); $commentList->getConditionBuilder()->add("comment.commentID IN (?)", array($commentIDs)); $commentList->readObjects(); $comments = $commentList->getObjects(); // fetch users $users = array(); $entryIDs = array(); foreach ($comments as $comment) { $entryIDs[] = $comment->objectID; if ($comment->userID) { $userIDs[] = $comment->userID; } } if (!empty($userIDs)) { $users = UserProfile::getUserProfiles(array_unique($userIDs)); } $entries = array(); if (!empty($entryIDs)) { $entryList = new EntryList(); $entryList->setObjectIDs($entryIDs); $entryList->readObjects(); $entries = $entryList->getObjects(); } // set message foreach ($likes as $like) { if ($like->objectTypeID == $commentLikeObjectType->objectTypeID) { // comment like if (isset($comments[$like->objectID])) { $comment = $comments[$like->objectID]; if (isset($entries[$comment->objectID]) && $entries[$comment->objectID]->canRead()) { $like->setIsAccessible(); // short output $text = WCF::getLanguage()->getDynamicVariable('wcf.like.title.de.incendium.cms.news.comment', array('commentAuthor' => $comment->userID ? $users[$comment->userID] : null, 'entry' => $entries[$comment->objectID], 'like' => $like)); $like->setTitle($text); // output $like->setDescription($comment->getExcerpt()); } } } else { // response like if (isset($responses[$like->objectID])) { $response = $responses[$like->objectID]; $comment = $comments[$response->commentID]; if (isset($entries[$comment->objectID]) && $entries[$comment->objectID]->canRead()) { $like->setIsAccessible(); // short output $text = WCF::getLanguage()->getDynamicVariable('wcf.like.title.de.incendium.cms.news.comment.response', array('responseAuthor' => $comment->userID ? $users[$response->userID] : null, 'commentAuthor' => $comment->userID ? $users[$comment->userID] : null, 'entry' => $entries[$comment->objectID], 'like' => $like)); $like->setTitle($text); // output $like->setDescription($response->getExcerpt()); } } } } }