From efa06c270e69e012c43368dfa05e51970762e59b Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Sat, 19 Feb 2011 19:45:54 +1100 Subject: [PATCH] Increased `filehash` length and made the reject-post-if-image-already-exists-in-active-content thing --- inc/functions.php | 15 ++++++++++++++- install.sql | 2 +- post.php | 17 ++++++++++++++++- templates/posts.sql | 2 +- 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,