Agora_Driver::deleteMessage PHP Method

deleteMessage() public method

Deletes a message and all replies.
public deleteMessage ( integer $message_id ) : string
$message_id integer The ID of the message to delete.
return string Thread ID on success.
    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;
    }