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;
}