Send new posts to a distribution email address for a wider audience
public distribute ( integer $message_id ) | ||
$message_id | integer | Identifier of message to be distributed |
/** * Approves one or more ids. * * @param string $action Whether to 'approve' or 'delete' messages. * @param array $ids Array of message IDs. * * @throws Agora_Exception */ 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; } }