HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.
Another way for most recent comment
Hello dear friends. Here is another way to get the plugin to display most recent comment, with minimal code changes:
// get last comment body $LastCommentBody = Gdn::SQL()->Select('Body')->From('Comment')->Where('CommentID', $Sender->EventArguments['Discussion']->LastCommentID)->Get()->ResultArray(); if (strlen($LastCommentBody[0]["Body"]) > 0) { // only assign if there's something to be assigned (otherwise, it is fine with original $FirstComment) $FirstComment = $LastCommentBody[0]["Body"]; }
The code is inserted in default.php in DiscussionsController_AfterDiscussionTitle_Handler(&$Sender)
Original function:
public function DiscussionsController_AfterDiscussionTitle_Handler(&$Sender) { $Number_of_words = Gdn::Config('DiscussionExcerpt2.Number_of_words', 15); $Show_announcements = Gdn::Config('DiscussionExcerpt2.Show_announcements', false); $Show_images = Gdn::Config('DiscussionExcerpt2.Show_images', false); $Discussion = $Sender->EventArguments['Discussion']; if($Show_images) { $FirstComment = strip_tags($Discussion->Body, '<img>'); } else { $FirstComment = strip_tags($Discussion->Body); } $Announce = $Discussion->Announce; $words = explode(' ', $FirstComment); if ( ($Announce != 1 ) || ( $Announce && $Show_announcements )) { if (count($words) > $Number_of_words) { echo '<div class="DiscussionExcerpt2">' . implode(' ', array_slice($words, 0, $Number_of_words)) . ' ...</div>'; } else { echo $FirstComment; } } return; }
Modified function:
public function DiscussionsController_AfterDiscussionTitle_Handler(&$Sender) { $Number_of_words = Gdn::Config('DiscussionExcerpt2.Number_of_words', 15); $Show_announcements = Gdn::Config('DiscussionExcerpt2.Show_announcements', false); $Show_images = Gdn::Config('DiscussionExcerpt2.Show_images', false); $Discussion = $Sender->EventArguments['Discussion']; if($Show_images) { $FirstComment = strip_tags($Discussion->Body, '<img>'); } else { $FirstComment = strip_tags($Discussion->Body); } $Announce = $Discussion->Announce; // get last comment body $LastCommentBody = Gdn::SQL()->Select('Body')->From('Comment')->Where('CommentID', $Sender->EventArguments['Discussion']->LastCommentID)->Get()->ResultArray(); if (strlen($LastCommentBody[0]["Body"]) > 0) { // only assign if there's something to be assigned (otherwise, it is fine with original $FirstComment) $FirstComment = $LastCommentBody[0]["Body"]; } $words = explode(' ', $FirstComment); if ( ($Announce != 1 ) || ( $Announce && $Show_announcements )) { if (count($words) > $Number_of_words) { echo '<div class="DiscussionExcerpt2">' . implode(' ', array_slice($words, 0, $Number_of_words)) . ' ...</div>'; } else { echo $FirstComment; } } return; }
Opinions/comments welcome.
Victor
0