/** * Marks a thread as undone. */ public function markAsUndone() { // check permission $this->board->checkModeratorPermission('canMarkAsDoneThread'); if ($this->thread == null) { throw new IllegalLinkException(); } $this->thread->markAsUndone(); exit; }
/** * Merges posts. */ public function merge() { if ($this->post === null || empty($this->postIDs)) { throw new IllegalLinkException(); } // remove target post from source $postIDArray = explode(',', $this->postIDs); if (($key = array_search($this->post->postID, $postIDArray)) !== false) { unset($postIDArray[$key]); $this->postIDs = implode(',', $postIDArray); } // get thread ids $threadIDs = PostEditor::getThreadIDs($this->postIDs); // get boards list($boards, $boardIDs) = ThreadEditor::getBoards($threadIDs); // check permissions $this->board->checkModeratorPermission('canMergePost'); foreach ($boards as $board) { $board->checkModeratorPermission('canMergePost'); } // remove user stats ThreadEditor::updateUserStats($threadIDs, 'delete'); PostEditor::updateUserStats(ThreadEditor::getAllPostIDs($threadIDs), 'delete'); // merge posts PostEditor::mergeAll($this->postIDs, $this->post->postID); PostEditor::unmarkAll(); // handle threads (check for empty, deleted and hidden threads) ThreadEditor::checkVisibilityAll($threadIDs); // refresh last post, replies, attachments, polls in threads ThreadEditor::refreshAll($threadIDs); // re-add user stats ThreadEditor::updateUserStats($threadIDs, 'enable'); PostEditor::updateUserStats(ThreadEditor::getAllPostIDs($threadIDs), 'enable'); // refresh counts BoardEditor::refreshAll($boardIDs); // refresh last post in boards $this->board->setLastPosts(); foreach ($boards as $board) { $board->setLastPosts(); } HeaderUtil::redirect($this->url); exit; }