Agora_Driver::deleteThread PHP Method

deleteThread() public method

Deletes an entire message thread.
public deleteThread ( integer $thread_id )
$thread_id integer The ID of the thread to delete. If not specified will delete all the threads for the current forum.
    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;
    }