Agora_Driver::moderate PHP Method

moderate() public method

Approves one or more ids.
public moderate ( string $action, array $ids )
$action string Whether to 'approve' or 'delete' messages.
$ids array Array of message IDs.
    public function moderate($action, $ids)
    {
        switch ($action) {
            case 'approve':
                /* Get message thread to expire cache */
                $sql = 'SELECT message_thread FROM ' . $this->_threads_table . ' WHERE message_id IN (' . implode(',', $ids) . ')';
                try {
                    $threads = $this->_db->selectValues($sql);
                } catch (Horde_Db_Exception $e) {
                    throw new Agora_Exception($e->getMessage());
                }
                $this->_updateCacheState($threads);
                $sql = 'UPDATE ' . $this->_threads_table . ' SET approved = 1' . ' WHERE message_id IN (' . implode(',', $ids) . ')';
                try {
                    $this->_db->execute($sql);
                } catch (Horde_Db_Exception $e) {
                    throw new Agora_Exception($e->getMessage());
                }
                /* Save original forum_id for later resetting */
                $orig_forum_id = $this->_forum_id;
                foreach ($ids as $message_id) {
                    /* Update cached message and thread counts */
                    $message = $this->getMessage($message_id);
                    $this->_forum_id = $message['forum_id'];
                    /* Update cached last poster */
                    $this->_lastInForum($this->_forum_id);
                    $this->_forumSequence($this->_forum_id, 'message', '+');
                    if (!empty($message['parents'])) {
                        $this->_sequence($message['message_thread'], '+');
                        $this->_lastInThread($message['message_thread'], $message_id, $message['message_author'], $_SERVER['REQUEST_TIME']);
                    } else {
                        $this->_forumSequence($this->_forum_id, 'thread', '+');
                    }
                    /* Send the new post to the distribution address */
                    Agora::distribute($message_id);
                }
                /* Restore original forum ID */
                $this->_forum_id = $orig_forum_id;
                break;
            case 'delete':
                foreach ($ids as $id) {
                    $this->deleteMessage($id);
                }
                break;
        }
    }