public function post($aSubject, $aMessage) { $Connector = $this->getConnector(); $Timestamp = time(); $FormattedMessage = HTMLToBBCode($aMessage); try { do { $Connector->beginTransaction(); $UserQuery = $Connector->prepare('SELECT username FROM `' . MYBB_TABLE_PREFIX . 'users` WHERE uid=:UserId LIMIT 1'); $UserQuery->BindValue(':UserId', MYBB_POSTAS, PDO::PARAM_INT); $UserData = $UserQuery->fetchFirst(); // Create thread $ThreadQuery = $Connector->prepare('INSERT INTO `' . MYBB_TABLE_PREFIX . 'threads` ' . '(fid, uid, subject, username, dateline, lastpost, lastposter, lastposteruid, visible) VALUES ' . '(:ForumId, :UserId, :Subject, :Username, :Now, :Now, :Username, :UserId, 1)'); $ThreadQuery->BindValue(':ForumId', MYBB_POSTTO, PDO::PARAM_INT); $ThreadQuery->BindValue(':UserId', MYBB_POSTAS, PDO::PARAM_INT); $ThreadQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $ThreadQuery->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $ThreadQuery->BindValue(':Subject', $aSubject, PDO::PARAM_STR); $ThreadQuery->execute(true); $ThreadId = $Connector->lastInsertId(); // Create post $PostQuery = $Connector->prepare('INSERT INTO `' . MYBB_TABLE_PREFIX . 'posts` ' . '(tid, fid, uid, username, dateline, subject, message, visible) VALUES ' . '(:ThreadId, :ForumId, :UserId, :Username, :Now, :Subject, :Text, 1)'); $PostQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $PostQuery->BindValue(':ForumId', MYBB_POSTTO, PDO::PARAM_INT); $PostQuery->BindValue(':UserId', MYBB_POSTAS, PDO::PARAM_INT); $PostQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $PostQuery->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $PostQuery->BindValue(':Subject', $aSubject, PDO::PARAM_STR); $PostQuery->BindValue(':Text', $FormattedMessage, PDO::PARAM_STR); $PostQuery->execute(true); $PostId = $Connector->lastInsertId(); // Update forum $ForumUpdate = $Connector->prepare('UPDATE `' . MYBB_TABLE_PREFIX . 'forums` ' . 'SET posts=posts+1, threads=threads+1, lastpost=:Now, ' . 'lastposteruid=:UserId, lastposttid=:ThreadId, lastposter=:Username, lastpostsubject=:Subject ' . 'WHERE fid=:ForumId LIMIT 1'); $ForumUpdate->BindValue(':ForumId', MYBB_POSTTO, PDO::PARAM_INT); $ForumUpdate->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $ForumUpdate->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $ForumUpdate->BindValue(':UserId', MYBB_POSTAS, PDO::PARAM_INT); $ForumUpdate->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $ForumUpdate->BindValue(':Subject', $aSubject, PDO::PARAM_STR); $ForumUpdate->execute(true); // Finish thread $ThreadFinishQuery = $Connector->prepare('UPDATE `' . MYBB_TABLE_PREFIX . 'threads` ' . 'SET firstpost = :PostId ' . 'WHERE tid = :ThreadId LIMIT 1'); $ThreadFinishQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $ThreadFinishQuery->BindValue(':PostId', $PostId, PDO::PARAM_INT); $ThreadFinishQuery->execute(true); } while (!$Connector->commit()); } catch (PDOException $Exception) { $Connector->rollBack(); throw $Exception; } }
public function post($aSubject, $aMessage) { $Connector = $this->getConnector(); $Timestamp = time(); // Fetch user try { do { $Connector->beginTransaction(); $UserQuery = $Connector->prepare('SELECT username FROM `wcf' . WBB_TABLE_PREFIX . '_user` ' . 'WHERE userID=:UserId LIMIT 1'); $UserQuery->BindValue(':UserId', WBB_POSTAS, PDO::PARAM_INT); $UserData = $UserQuery->fetchFirst(); // Create topic $ThreadQuery = $Connector->prepare('INSERT INTO `wbb' . WBB_TABLE_PREFIX . '_thread` ' . '(boardId, userId, topic, time, username, lastPostTime, lastPoster, lastPosterID) VALUES ' . '(:BoardId, :UserId, :Subject, :Now, :Username, :Now, :Username, :UserId)'); $ThreadQuery->BindValue(':BoardId', WBB_POSTTO, PDO::PARAM_INT); $ThreadQuery->BindValue(':UserId', WBB_POSTAS, PDO::PARAM_INT); $ThreadQuery->BindValue(':Subject', xmlToUTF8($aSubject), PDO::PARAM_STR); $ThreadQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $ThreadQuery->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $ThreadQuery->execute(true); $ThreadId = $Connector->lastInsertId(); // Create post $FormattedMessage = HTMLToBBCode($aMessage); $PostQuery = $Connector->prepare('INSERT INTO `wbb' . WBB_TABLE_PREFIX . '_post` ' . '(threadId, time, username, userId, message) VALUES ' . '(:ThreadId, :Now, :Username, :UserId, :Text)'); $PostQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $PostQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $PostQuery->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $PostQuery->BindValue(':UserId', WBB_POSTAS, PDO::PARAM_INT); $PostQuery->BindValue(':Text', $FormattedMessage, PDO::PARAM_STR); $PostQuery->execute(true); $PostId = $Connector->lastInsertId(); // Finish topic $TopicFinishQuery = $Connector->prepare('UPDATE `wbb' . WBB_TABLE_PREFIX . '_thread` ' . 'SET firstPostID = :PostId, lastPostID = :PostId ' . 'WHERE threadID = :ThreadId LIMIT 1'); $TopicFinishQuery->BindValue(':PostId', $PostId, PDO::PARAM_INT); $TopicFinishQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $TopicFinishQuery->execute(true); // Update board $BoardQuery = $Connector->prepare('UPDATE `wbb' . WBB_TABLE_PREFIX . '_board_last_post` ' . 'SET threadID = :ThreadId ' . 'WHERE boardId = :BoardId LIMIT 1'); $BoardQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $BoardQuery->BindValue(':BoardId', WBB_POSTTO, PDO::PARAM_INT); $BoardQuery->execute(true); } while (!$Connector->commit()); } catch (PDOException $Exception) { $Connector->rollBack(); throw $Exception; } }
public function post($aSubject, $aMessage) { $Connector = $this->getConnector(); $Timestamp = time(); $FormattedMessage = HTMLToBBCode($aMessage); // Fetch user try { do { $Connector->beginTransaction(); $UserQuery = $Connector->prepare('SELECT username FROM `' . VB3_TABLE_PREFIX . 'user` WHERE userid=:UserId LIMIT 1'); $UserQuery->BindValue(':UserId', VB3_POSTAS, PDO::PARAM_INT); $UserData = $UserQuery->fetchFirst(); // Create thread $ThreadQuery = $Connector->prepare('INSERT INTO `' . VB3_TABLE_PREFIX . 'thread` ' . '(forumid, postuserid, title, postusername, dateline, lastpost, lastposter, open, visible) VALUES ' . '(:ForumId, :UserId, :Subject, :Username, :Now, :Now, :Username, 1, 1)'); $ThreadQuery->BindValue(':ForumId', VB3_POSTTO, PDO::PARAM_INT); $ThreadQuery->BindValue(':UserId', VB3_POSTAS, PDO::PARAM_INT); $ThreadQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $ThreadQuery->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $ThreadQuery->BindValue(':Subject', $aSubject, PDO::PARAM_STR); $ThreadQuery->execute(true); $ThreadId = $Connector->lastInsertId(); // Create post $PostQuery = $Connector->prepare('INSERT INTO `' . VB3_TABLE_PREFIX . 'post` ' . '(threadid, userid, username, dateline, title, pagetext, allowsmilie, visible) VALUES ' . '(:ThreadId, :UserId, :Username, :Now, :Subject, :Text, 1, 1)'); $PostQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $PostQuery->BindValue(':UserId', VB3_POSTAS, PDO::PARAM_INT); $PostQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $PostQuery->BindValue(':Username', $UserData['username'], PDO::PARAM_STR); $PostQuery->BindValue(':Subject', $aSubject, PDO::PARAM_STR); $PostQuery->BindValue(':Text', $FormattedMessage, PDO::PARAM_STR); $PostQuery->execute(true); $PostId = $Connector->lastInsertId(); // Create parsed post $PostQuery = $Connector->prepare('INSERT INTO `' . VB3_TABLE_PREFIX . 'postparsed` ' . '(postid, dateline, styleid, languageid, pagetext_html) VALUES ' . '(:PostId, :Now, 1, 1, :Text)'); $PostQuery->BindValue(':PostId', $PostId, PDO::PARAM_INT); $PostQuery->BindValue(':Now', $Timestamp, PDO::PARAM_INT); $PostQuery->BindValue(':Text', $aMessage, PDO::PARAM_STR); $PostQuery->execute(true); // Finish thread $ThreadFinishQuery = $Connector->prepare('UPDATE `' . VB3_TABLE_PREFIX . 'thread` ' . 'SET firstpostid = :PostId, lastpostid = :PostId ' . 'WHERE threadid = :ThreadId LIMIT 1'); $ThreadFinishQuery->BindValue(':ThreadId', $ThreadId, PDO::PARAM_INT); $ThreadFinishQuery->BindValue(':PostId', $PostId, PDO::PARAM_INT); $ThreadFinishQuery->execute(true); } while (!$Connector->commit()); } catch (PDOException $Exception) { $Connector->rollBack(); throw $Exception; } }