Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
- require_once(WBB_DIR.'lib/form/PostEditForm.class.php');
- class PostAuthorChangeListener implements EventListener {
- public function execute($eventObj, $className, $eventName) {
- switch($eventName)
- {
- case "readFormParameters":
- if(WCF::getUser()->getPermission('mod.board.canChangeAuthor'))
- if(isset($_POST['postAuthor'])) $eventObj->formPostAuthor = escapeString($_POST["postAuthor"]);
- break;
- case "save":
- // Check if author is changed& user has the permission to change
- if (!isset ($eventObj->formPostAuthor))
- break;
- if ($eventObj->post->username == $eventObj->formPostAuthor || $eventObj->formPostAuthor == "")
- break;
- if (!isset($eventObj->formPostAuthor))
- throw new UserInputException ('author', 'notValid');
- $sql = "select
- userID from wcf".WCF_N."_user
- where username = '".$eventObj->formPostAuthor."'";
- $row = WCF::getDB()->getFirstRow($sql);
- // User exist, change author now.
- if ($row)
- {
- $eventObj->formPostAuthorId = $row['userID'];
- $sql = "update wbb".WBB_N."_post
- set userID = ".$eventObj->formPostAuthorId.", username = '".$eventObj->formPostAuthor."'
- where postID = ".$eventObj->postID."
- ";
- // Update post- Database entry
- WCF::getDB()->sendQuery($sql);
- $sql = "update wbb".WBB_N."_user
- set posts = posts + 1
- where userID = ".$eventObj->formPostAuthorId."
- ";
- WCF::getDB()->sendQuery($sql);
- $sql = "update wbb".WBB_N."_user
- set posts = posts - 1
- where userID = ".$eventObj->post->userID."
- ";
- WCF::getDB()->sendQuery($sql);
- // Update last post author
- // refresh thread
- $eventObj->thread->refresh(false);
- if ($eventObj->post->time >= $eventObj->thread->lastPostTime) {
- $eventObj->thread->setLastPost();
- }
- // refresh board
- $eventObj->board->refresh();
- if ($eventObj->post->time >= $eventObj->board->getLastPostTime($eventObj->thread->languageID)) {
- $eventObj->board->setLastPosts();
- }
- }
- else
- throw new UserInputException ('postAuthor', 'notValid');
- break;
- }
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement