summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSavetheinternet <savetheinternet@n0v4.com>2011-01-03 01:23:34 +1100
committerSavetheinternet <savetheinternet@n0v4.com>2011-01-03 01:23:34 +1100
commit5df6f85854f25581df787241773b8b39e23e8f00 (patch)
tree066f1ef0fd730574bb3f73e70e6f1cb2c32cb2c0
parent567d37c62ee30ed1f94e4e73659c96cea94afcf0 (diff)
Don't allow users to post in locked threads'
-rw-r--r--inc/config.php3
-rw-r--r--inc/functions.php15
-rw-r--r--post.php3
3 files changed, 21 insertions, 0 deletions
diff --git a/inc/config.php b/inc/config.php
index 0347846c..26607d25 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -66,6 +66,7 @@
define('ERROR_FILEEXT', 'Unsupported image format.', true);
define('ERROR_NOBOARD', 'Invalid board!', true);
define('ERROR_NONEXISTANT', 'Thread specified does not exist.', true);
+ define('ERROR_LOCKED', 'Thread locked. You may not reply at this time.', true);
define('ERROR_NOPOST', 'You didn\'t make a post.', true);
define('ERR_INVALIDIMG','Invalid image.', true);
define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes<br>Your file\'s size: %filesz% bytes', true);
@@ -186,6 +187,8 @@
define('MOD_DELETEBYIP', MOD_BAN, true);
// Sticky a thread
define('MOD_STICKY', MOD_MOD, true);
+ // Lock a thread
+ define('MOD_LOCK', MOD_MOD, true);
/* Administration */
// Display the contents of instant-config.php
diff --git a/inc/functions.php b/inc/functions.php
index e5a8023d..a5ec0093 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -118,6 +118,21 @@
}
}
+ function threadLocked($id) {
+ global $board;
+
+ $query = prepare(sprintf("SELECT `locked` FROM `posts_%s` WHERE `id` = :id AND `thread` IS NULL LIMIT 1", $board['uri']));
+ $query->bindValue(':id', $id, PDO::PARAM_INT);
+ $query->execute() or error(db_error());
+
+ if(!$post = $query->fetch()) {
+ // Non-existant, so it can't be locked...
+ return false;
+ }
+
+ return (bool) $post['locked'];
+ }
+
function threadExists($id) {
global $board;
diff --git a/post.php b/post.php
index cdc51ffd..452aa054 100644
--- a/post.php
+++ b/post.php
@@ -70,6 +70,9 @@
if(!$OP && !threadExists($post['thread']))
error(ERROR_NONEXISTANT);
+ if(!$OP && threadLocked($post['thread']))
+ error(ERROR_LOCKED);
+
// Check for a file
if($OP) {
if(!isset($_FILES['file']['tmp_name']) || empty($_FILES['file']['tmp_name']))