Agora_Driver::getModerateList PHP Method

getModerateList() public method

Fetches a list of messages awaiting moderation. Selects all messages, irrespective of the thread root, which have the 'moderate' flag set in the attributes.
public getModerateList ( string $sort_by, integer $sort_dir )
$sort_by string The column by which to sort.
$sort_dir integer The direction by which to sort: 0 - ascending 1 - descending
    public function getModerateList($sort_by, $sort_dir)
    {
        $sql = 'SELECT forum_id, forum_name FROM ' . $this->_forums_table . ' WHERE forum_moderated = ?';
        $values = array(1);
        /* Check permissions */
        if ($GLOBALS['registry']->isAdmin(array('permission' => 'agora:admin')) || $GLOBALS['injector']->getInstance('Horde_Perms')->exists('agora:forums:' . $this->_scope) && $GLOBALS['injector']->getInstance('Horde_Perms')->hasPermission('agora:forums:' . $this->_scope, $GLOBALS['registry']->getAuth(), Horde_Perms::DELETE)) {
            $sql .= ' AND scope = ? ';
            $values[] = $this->_scope;
        } else {
            // Get only author forums
            $sql .= ' AND scope = ? AND author = ?';
            $values[] = $this->_scope;
            $values[] = $GLOBALS['registry']->getAuth();
        }
        /* Get moderate forums and their names */
        try {
            $forums_list = $this->_db->selectAssoc($sql, $values);
        } catch (Horde_Db_Exception $e) {
            throw new Agora_Exception($e->getMessage());
        }
        if (empty($forums_list)) {
            return $forums_list;
        }
        /* Get message waiting for approval */
        $sql = 'SELECT message_id, forum_id, message_subject, message_author, ' . 'body, message_timestamp, attachments FROM ' . $this->_threads_table . ' WHERE forum_id IN (' . implode(',', array_keys($forums_list)) . ')' . ' AND approved = ? ORDER BY ' . $sort_by . ' ' . ($sort_dir ? 'DESC' : 'ASC');
        try {
            $messages = $this->_db->select($sql, array(0));
        } catch (Horde_Db_Exception $e) {
            throw new Agora_Exception($e->getMessage());
        }
        /* Loop through the messages and set up the array. */
        $approve_url = Horde::url('moderate.php')->add('approve', true);
        $del_url = Horde::url('messages/delete.php');
        foreach ($messages as &$message) {
            $message['forum_name'] = $this->convertFromDriver($forums_list[$message['forum_id']]);
            $message['message_author'] = htmlspecialchars($message['message_author']);
            $message['message_subject'] = htmlspecialchars($this->convertFromDriver($message['message_subject']));
            $message['message_body'] = $GLOBALS['injector']->getInstance('Horde_Core_Factory_TextFilter')->filter($this->convertFromDriver($message['body']), 'highlightquotes');
            if ($message['attachments']) {
                $message['message_attachment'] = $this->getAttachmentLink($message['message_id']);
            }
            $message['message_date'] = $this->dateFormat($message['message_timestamp']);
        }
        return $messages;
    }