public function deleteMessage($message_id)
{
/* Check delete permissions. */
if (!$this->hasPermission(Horde_Perms::DELETE)) {
return PEAR::raiseError(sprintf(_("You don't have permission to delete messages in forum %s."), $this->_forum_id));
}
$sql = 'SELECT message_thread FROM ' . $this->_threads_table . ' WHERE message_id = ?';
try {
$thread_id = $this->_db->selectValue($sql, array($message_id));
} catch (Horde_Db_Exception $e) {
throw new Agora_Exception($e->getMessage());
}
$sql = 'DELETE FROM ' . $this->_threads_table . ' WHERE message_id = ' . (int) $message_id;
if ($thread_id == 0) {
$sql .= ' OR message_thread = ' . (int) $message_id;
}
try {
$this->_db->execute($sql);
} catch (Horde_Db_Exception $e) {
throw new Agora_Exception($e->getMessage());
}
/* Update counts */
// TODO message count is not correctly decreased after deleting more than one message.
$this->_forumSequence($this->_forum_id, 'message', '-');
if ($thread_id) {
$this->_sequence($thread_id, '-');
} else {
$this->_forumSequence($this->_forum_id, 'thread', '-');
}
$this->_lastInForum($this->_forum_id);
$this->_lastInThread($thread_id);
/* Update cache */
$this->_updateCacheState($thread_id);
return $thread_id;
}