From cb4ebae191db86ab8bdb4414af9b0ea340a61caf Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Mon, 3 Jan 2011 02:00:30 +1100 Subject: [PATCH] Unlock/lock operations --- mod.php | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/mod.php b/mod.php index a06c424a..150ab6a5 100644 --- a/mod.php +++ b/mod.php @@ -285,7 +285,7 @@ header('Location: ?/' . sprintf(BOARD_PATH, $boardName) . FILE_INDEX, true, REDIRECT_HTTP); } elseif(preg_match('/^\/' . $regex['board'] . '(un)?sticky\/(\d+)$/', $query, $matches)) { if($mod['type'] < MOD_STICKY) error(ERROR_NOACCESS); - // Ban by post + // Add/remove sticky $boardName = $matches[1]; $post = $matches[3]; @@ -308,6 +308,36 @@ buildThread($post); + // Redirect + if(isset($_SERVER['HTTP_REFERER'])) + header('Location: ' . $_SERVER['HTTP_REFERER'], true, REDIRECT_HTTP); + else + header('Location: ?/' . sprintf(BOARD_PATH, $boardName) . FILE_INDEX, true, REDIRECT_HTTP); + } elseif(preg_match('/^\/' . $regex['board'] . '(un)?lock\/(\d+)$/', $query, $matches)) { + if($mod['type'] < MOD_LOCK) error(ERROR_NOACCESS); + // Lock/Unlock + + $boardName = $matches[1]; + $post = $matches[3]; + // Open board + if(!openBoard($boardName)) + error(ERROR_NOBOARD); + + $query = prepare(sprintf("UPDATE `posts_%s` SET `locked` = :locked WHERE `id` = :id AND `thread` IS NULL", $board['uri'])); + $query->bindValue(':id', $post, PDO::PARAM_INT); + + if($matches[2] == 'un') { + $query->bindValue(':locked', 0, PDO::PARAM_INT); + } else { + $query->bindValue(':locked', 1, PDO::PARAM_INT); + } + + $query->execute() or error(db_error($query)); + + buildIndex(); + buildThread($post); + + // Redirect if(isset($_SERVER['HTTP_REFERER'])) header('Location: ' . $_SERVER['HTTP_REFERER'], true, REDIRECT_HTTP);