/** * Create a message. * * @param int $p_forumId * The forum ID that this message belongs to. * * @param string $p_subject * The subject of the message. * * @param string $p_body * The body of the message * * @param int $p_threadId * Set this to zero if it is the first message in the thread * * @param int $p_parentId * The message you are replying to. * * @param string $p_author * Human readable string for the name of the author. * * @param string $p_email * Author's email. * * @param int $p_userId * User ID that is stored in the phorum_users table. * * @return boolean */ public function create($p_forumId, $p_subject ='', $p_body = '', $p_threadId = 0, $p_parentId = 0, $p_author = '', $p_email = '', $p_userId = 0) { global $PHORUM; global $g_ado_db; if (!is_numeric($p_forumId)) { return null; } // Fetch the settings and pretend they were returned to // us instead of setting a global variable. phorum_db_load_settings(); $settings = $PHORUM['SETTINGS']; // Required Input $message['forum_id'] = $p_forumId; // Optional input $message['body'] = $p_body; $message['subject'] = $p_subject; $message['thread'] = $p_threadId; $message['parent_id'] = $p_parentId; $message['author'] = $p_author; $message['email'] = $p_email; $message['user_id'] = $p_userId; // Defaults $message['sort'] = PHORUM_SORT_DEFAULT; $message['closed'] = 0; // ??? Whats that suffix for? // $suffix = preg_replace("/[^a-z0-9]/i", "", $PHORUM["name"]); // $message['msgid'] = md5(uniqid(rand())) . ".$suffix"; $message['msgid'] = md5(uniqid(rand())); $message['moderator_post'] = '0'; $message['datestamp'] = time(); // Fetch the forum object - // we need it for the config values. $forumObj = new Phorum_forum($p_forumId); if (!$forumObj->exists()) { return false; } // Set message workflow based on forum config. if ($forumObj->isModerated()) { $message['status'] = PHORUM_STATUS_HOLD; } else { $message['status'] = PHORUM_STATUS_APPROVED; } // Set user IP. $user_ip = $_SERVER["REMOTE_ADDR"]; if ($settings["dns_lookup"]) { $resolved = @gethostbyaddr($_SERVER["REMOTE_ADDR"]); if (!empty($resolved)) { $user_ip = $resolved; } } $message["ip"] = $user_ip; $lockTables = array($PHORUM['message_table'], $PHORUM['search_table'], $PHORUM['subscribers_table']); $this->lockTables($lockTables); phorum_db_post_message($message); $this->mod_emailcomments($message); // Update the thread count. $sql = "SELECT COUNT(*) as thread_count FROM ".$PHORUM['message_table'] ." WHERE forum_id=".$p_forumId ." AND thread=".$message['thread'] ." AND status > 0"; $threadCount = $g_ado_db->GetOne($sql); $sql = "UPDATE ".$PHORUM['message_table'] ." SET thread_count=".$threadCount; $g_ado_db->Execute($sql); // Retrieve the message again because the database sets // some values. $message = phorum_db_get_message($message["message_id"], "message_id", true); $this->m_data = $message; // Set the thread depth $this->__initThreadDepth(); // Set the thread order. $this->__initThreadOrder(); $this->__updateThreadInfo(); if (isset($PHORUM['user']['user_id'])) { // Mark own message read. phorum_db_newflag_add_read(array(0=>array( "id" => $message["message_id"], "forum" => $message["forum_id"], ))); // Update the number of messages the user has posted. phorum_db_user_addpost(); } // Actions for messages which are approved. if ($message["status"] > 0) { // Update forum statistics, // ??? Note: phorum_db_update_forum_stats requires global parameter-passing. $PHORUM['forum_id'] = $p_forumId; phorum_db_update_forum_stats(false, 1, $message["datestamp"]); // Mail subscribed users. //phorum_email_notice($message); } // Mail moderators. if ($forumObj->emailModeratorsEnabled()) { //phorum_email_moderators($message); } $this->unlockTables(); return true; } // fn create
function phorum_user_addpost() { return phorum_db_user_addpost(); }