/** * Updates denormalized counters. Used after a message has been deleted. * * @param XenForo_DataWriter_DiscussionMessage $messageDw * @param boolean $deleteIfFirstMessage If true and message if first, delete discussion * * @return string State changes to discussion: delete means remove discussion; firstDelete means first message was removed but still valid */ public function updateCountersAfterMessageDelete(XenForo_DataWriter_DiscussionMessage $messageDw, $deleteIfFirstMessage = true) { $messageId = $messageDw->getDiscussionMessageId(); if ($messageId == $this->get('first_post_id')) { if (!$deleteIfFirstMessage && $this->rebuildDiscussion()) { return 'firstDelete'; } else { return 'delete'; } } if ($messageId == $this->get('last_post_id')) { $this->updateLastPost(); } if ($messageDw->get('message_state') == 'visible') { $this->set('reply_count', $this->get('reply_count') - 1); } return ''; }