Please upgrade here. These earlier versions are no longer being updated and have security issues.
HackerOne users: Testing against this community violates our program's Terms of Service and will result in your bounty being denied.
Deleting last comment does not update LastCommentUserID, DateLastComment
I noticed that when removing a comment from a discussion and it is the most recent one the LastCommentUserID and DateLastComment fields in the Discussion table were not being properly updated. I fixed this as below and added a statement to set it back to look like a new discussion if the removed comment was the only comment.
Original from Delete() on line 494 in class.commentmodel.php:
My edits:
Original from Delete() on line 494 in class.commentmodel.php:
// Check to see if this is the last comment in the discussion
$Data = $this->SQL
->Select('d.DiscussionID, d.LastCommentID, c.InsertUserID')
->From('Discussion d')
->Join('Comment c', 'd.DiscussionID = c.DiscussionID')
->Where('c.CommentID', $CommentID)
->Get()
->FirstRow();
if ($Data) {
// If this is the last comment, get the one before and update the LastCommentID field
if ($Data->LastCommentID == $CommentID) {
$OldData = $this->SQL
->Select('c.CommentID')
->From('Comment c')
->Where('c.DiscussionID', $Data->DiscussionID)
->OrderBy('c.DateInserted', 'desc')
->Limit(1, 1)
->Get()
->FirstRow();
if (is_object($OldData)) {
$this->SQL->Update('Discussion')
->Set('LastCommentID', $OldData->CommentID)
->Where('DiscussionID', $Data->DiscussionID)
->Put();
}
}
My edits:
// Check to see if this is the last comment in the discussion
$Data = $this->SQL
->Select('d.DiscussionID, d.LastCommentID, d.DateUpdated, c.InsertUserID')
->From('Discussion d')
->Join('Comment c', 'd.DiscussionID = c.DiscussionID')
->Where('c.CommentID', $CommentID)
->Get()
->FirstRow();
if ($Data) {
// If this is the last comment, get the one before and update the LastCommentID field
if ($Data->LastCommentID == $CommentID) {
$OldData = $this->SQL
->Select('c.CommentID, c.InsertUserID, c.DateInserted')
->From('Comment c')
->Where('c.DiscussionID', $Data->DiscussionID)
->OrderBy('c.DateInserted', 'desc')
->Limit(1, 1)
->Get()
->FirstRow();
if (is_object($OldData)) {
$this->SQL->Update('Discussion')
->Set('LastCommentID', $OldData->CommentID)
->Set('LastCommentUserID', $OldData->InsertUserID)
->Set('DateLastComment', $OldData->DateInserted)
->Where('DiscussionID', $Data->DiscussionID)
->Put();
}
else {
$this->SQL->Update('Discussion')
->Set('LastCommentID', NULL)
->Set('LastCommentUserID', NULL)
->Set('DateLastComment', $Data->DateUpdated)
->Where('DiscussionID', $Data->DiscussionID)
->Put();
}
}
Tagged:
0