public function deleteThread($thread_id = 0)
{
/* 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));
}
if ($thread_id > 0) {
$sql = 'DELETE FROM ' . $this->_threads_table . ' WHERE message_thread = ' . (int) $thread_id;
try {
$this->_db->execute($sql);
} catch (Horde_Db_Exception $e) {
throw new Agora_Exception($e->getMessage());
}
$sql = 'SELECT COUNT(*) FROM ' . $this->_threads_table . ' WHERE forum_id = ' . (int) $this->_forum_id;
$messages = $this->_db->selectValue($sql);
$this->_forumSequence($this->_forum_id, 'thread', '-');
$this->_forumSequence($this->_forum_id, 'message', $messages);
/* Update cache */
$this->_updateCacheState($thread_id);
} else {
$sql = 'DELETE FROM ' . $this->_threads_table . ' WHERE forum_id = ' . (int) $this->_forum_id;
try {
$this->_db->execute($sql);
} catch (Horde_Db_Exception $e) {
throw new Agora_Exception($e->getMessage());
}
$this->_forumSequence($this->_forum_id, 'thread', '0');
$this->_forumSequence($this->_forum_id, 'message', '0');
}
/* Update last message */
$this->_lastInForum($this->_forum_id);
return true;
}