Advertisement
Guest User

Untitled

a guest
Jun 25th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.04 KB | None | 0 0
  1. <?php
  2. require_once(WCF_DIR.'lib/system/event/EventListener.class.php');
  3. require_once(WBB_DIR.'lib/form/PostEditForm.class.php');
  4.  
  5. class PostAuthorChangeListener implements EventListener {
  6.     public function  execute($eventObj, $className, $eventName) {
  7.         switch($eventName)
  8.         {
  9.             case "readFormParameters":
  10.                 if(WCF::getUser()->getPermission('mod.board.canChangeAuthor'))
  11.                     if(isset($_POST['postAuthor'])) $eventObj->formPostAuthor = escapeString($_POST["postAuthor"]);
  12.                 break;
  13.             case "save":
  14.                 // Check if author is changed& user has the permission to change
  15.                 if (!isset ($eventObj->formPostAuthor))
  16.                     break;
  17.  
  18.                 if ($eventObj->post->username == $eventObj->formPostAuthor || $eventObj->formPostAuthor == "")
  19.                     break;
  20.  
  21.                 if (!isset($eventObj->formPostAuthor))
  22.                     throw new UserInputException ('author', 'notValid');
  23.  
  24.                 $sql = "select
  25.                            userID from wcf".WCF_N."_user
  26.                        where username = '".$eventObj->formPostAuthor."'";
  27.                 $row = WCF::getDB()->getFirstRow($sql);
  28.                 // User exist, change author now.
  29.                 if ($row)
  30.                 {
  31.                     $eventObj->formPostAuthorId = $row['userID'];
  32.                     $sql = "update wbb".WBB_N."_post
  33.                                set userID = ".$eventObj->formPostAuthorId.", username = '".$eventObj->formPostAuthor."'
  34.                            where postID = ".$eventObj->postID."
  35.                            ";
  36.                     // Update post- Database entry
  37.                     WCF::getDB()->sendQuery($sql);
  38.  
  39.  
  40.                     $sql = "update wbb".WBB_N."_user
  41.                                set posts = posts + 1
  42.                            where userID = ".$eventObj->formPostAuthorId."
  43.                           ";
  44.                     WCF::getDB()->sendQuery($sql);
  45.  
  46.                     $sql = "update wbb".WBB_N."_user
  47.                                set posts = posts - 1
  48.                            where userID = ".$eventObj->post->userID."
  49.                           ";
  50.                     WCF::getDB()->sendQuery($sql);
  51.  
  52.  
  53.                     // Update last post author
  54.  
  55.                     // refresh thread
  56.                     $eventObj->thread->refresh(false);
  57.                     if ($eventObj->post->time >= $eventObj->thread->lastPostTime) {
  58.                             $eventObj->thread->setLastPost();
  59.                     }
  60.  
  61.                     // refresh board
  62.                     $eventObj->board->refresh();
  63.                     if ($eventObj->post->time >= $eventObj->board->getLastPostTime($eventObj->thread->languageID)) {
  64.                             $eventObj->board->setLastPosts();
  65.                     }
  66.                 }
  67.                 else
  68.                     throw new UserInputException ('postAuthor', 'notValid');
  69.                 break;
  70.         }
  71.     }
  72. }
  73. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement