/**
  * @see	\wcf\system\user\activity\event\IUserActivityEvent::prepare()
  */
 public function prepare(array $events)
 {
     $entryIDs = array();
     foreach ($events as $event) {
         $entryIDs[] = $event->objectID;
     }
     $entryList = new ViewableEntryList();
     $entryList->getConditionBuilder()->add("news_entry.entryID IN (?)", array($entryIDs));
     $entryList->readObjects();
     $newsEntries = $entryList->getObjects();
     foreach ($events as $event) {
         if (isset($newsEntries[$event->objectID])) {
             $entry = $newsEntries[$event->objectID];
             if (!$entry->canRead()) {
                 continue;
             }
             $event->setIsAccessible();
             $text = WCF::getLanguage()->getDynamicVariable('cms.recentActivity.likedNews', array('entry' => $entry));
             $event->setTitle($text);
             $event->setDescription($entry->getExcerpt());
         } else {
             $event->setIsOrphaned();
         }
     }
 }
 /**
  * @see	\wcf\system\user\activity\event\IUserActivityEvent::prepare()
  */
 public function prepare(array $events)
 {
     $responseIDs = array();
     foreach ($events as $event) {
         $responseIDs[] = $event->objectID;
     }
     $responseList = new CommentResponseList();
     $responseList->getConditionBuilder()->add("comment_response.responseID IN (?)", array($responseIDs));
     $responseList->readObjects();
     $responses = $responseList->getObjects();
     $commentIDs = $comments = array();
     foreach ($responses as $response) {
         $commentIDs[] = $response->commentID;
     }
     if (!empty($commentIDs)) {
         $commentList = new CommentList();
         $commentList->getConditionBuilder()->add("comment.commentID IN (?)", array($commentIDs));
         $commentList->readObjects();
         $comments = $commentList->getObjects();
     }
     // fetch news entries
     $entryIDs = $entry = array();
     foreach ($comments as $comment) {
         $entryIDs[] = $comment->objectID;
     }
     if (!empty($entryIDs)) {
         $entryList = new ViewableEntryList();
         $entryList->getConditionBuilder()->add("news_entry.entryID IN (?)", array($entryIDs));
         $entryList->readObjects();
         $entry = $entryList->getObjects();
     }
     $userIDs = $user = array();
     foreach ($comments as $comment) {
         $userIDs[] = $comment->userID;
     }
     if (!empty($userIDs)) {
         $userList = new UserList();
         $userList->getConditionBuilder()->add("user_table.userID IN (?)", array($userIDs));
         $userList->readObjects();
         $users = $userList->getObjects();
     }
     foreach ($events as $event) {
         if (isset($responses[$event->objectID])) {
             $response = $responses[$event->objectID];
             $comment = $comments[$response->commentID];
             if (isset($entry[$comment->objectID]) && isset($users[$comment->userID])) {
                 $newsEntry = $entry[$comment->objectID];
                 if (!$newsEntry->canRead()) {
                     continue;
                 }
                 $event->setIsAccessible();
                 $text = WCF::getLanguage()->getDynamicVariable('cms.recentActivity.newsCommentResponse', array('commentAuthor' => $users[$comment->userID], 'entry' => $newsEntry));
                 $event->setTitle($text);
                 $event->setDescription($response->getExcerpt());
                 continue;
             }
         }
         $event->setIsOrphaned();
     }
 }
 /**
  * Gets a specific entry decorated as viewable entry.
  * 
  * @param    integer        $entryID
  * @return    \cms\data\news\ViewableEntry
  */
 public static function getEntry($entryID)
 {
     $list = new ViewableEntryList();
     $list->setObjectIDs(array($entryID));
     $list->readObjects();
     $objects = $list->getObjects();
     if (isset($objects[$entryID])) {
         return $objects[$entryID];
     }
     return null;
 }