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