summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/functions.php15
-rw-r--r--install.sql2
-rw-r--r--post.php17
-rw-r--r--templates/posts.sql2
4 files changed, 32 insertions, 4 deletions
diff --git a/inc/functions.php b/inc/functions.php
index 535defb5..2cb55016 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -1121,7 +1121,20 @@
return $res;
}
-
+
+ function getPostByHash($hash) {
+ global $board;
+ $query = prepare(sprintf("SELECT `id`,`thread` FROM `posts_%s` WHERE `filehash` = :hash", $board['uri']));
+ $query->bindValue(':hash', $hash, PDO::PARAM_STR);
+ $query->execute() or error(db_error($query));
+
+ if($post = $query->fetch()) {
+ return $post;
+ }
+
+ return false;
+ }
+
function undoImage($post) {
unlink($post['file']);
unlink($post['thumb']);
diff --git a/install.sql b/install.sql
index 43bf2867..d2831a02 100644
--- a/install.sql
+++ b/install.sql
@@ -135,7 +135,7 @@ CREATE TABLE IF NOT EXISTS `posts_b` (
`fileheight` int(11) DEFAULT NULL,
`filesize` int(11) DEFAULT NULL,
`filename` varchar(30) DEFAULT NULL,
- `filehash` varchar(32) DEFAULT NULL,
+ `filehash` varchar(40) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`ip` varchar(45) NOT NULL,
`sticky` int(1) NOT NULL,
diff --git a/post.php b/post.php
index f15545bb..5ec63032 100644
--- a/post.php
+++ b/post.php
@@ -155,7 +155,7 @@
$post['mod'] = isset($_POST['mod']) && $_POST['mod'];
if(empty($post['body']) && $config['force_body'])
- error($config['error']['tooshortbody']);
+ error($config['error']['tooshort_body']);
if($post['mod']) {
require 'inc/mod.php';
@@ -277,6 +277,21 @@
}
}
+ if($config['image_reject_repost'] && $p = getPostByHash($post['filehash'])) {
+ undoImage($post);
+ error(sprintf($config['error']['fileexists'],
+ $post['mod'] ? $config['root'] . $config['file_mod'] . '?/' : $config['root'] .
+ $board['dir'] . $config['dir']['res'] .
+ ($p->thread ?
+ $p->thread . '.html#' . $p->id
+ :
+ $p->id . '.html'
+ )
+ ));
+ }
+
+ exit;
+
// Remove DIR_* before inserting them into the database.
if($post['has_file']) {
$post['file'] = substr_replace($post['file'], '', 0, strlen($board['dir'] . $config['dir']['img']));
diff --git a/templates/posts.sql b/templates/posts.sql
index bf24f325..50a0d616 100644
--- a/templates/posts.sql
+++ b/templates/posts.sql
@@ -16,7 +16,7 @@ CREATE TABLE IF NOT EXISTS `posts_{board}` (
`fileheight` int(11) DEFAULT NULL,
`filesize` int(11) DEFAULT NULL,
`filename` varchar(30) DEFAULT NULL,
- `filehash` varchar(32) DEFAULT NULL,
+ `filehash` varchar(40) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL,
`ip` varchar(15) NOT NULL,
`sticky` int(1) NOT NULL,