From be860577a9ef34915577145ef830bbfab525484a Mon Sep 17 00:00:00 2001 From: Savetheinternet Date: Sun, 18 Dec 2011 08:48:16 +1100 Subject: [PATCH] optionally disable image requirement for new threads --- inc/config.php | 138 +++++++++++++++++++++++++------------------------ post.php | 4 +- 2 files changed, 72 insertions(+), 70 deletions(-) diff --git a/inc/config.php b/inc/config.php index 9a6219bc..7cebafdd 100644 --- a/inc/config.php +++ b/inc/config.php @@ -8,10 +8,10 @@ * If you would like to make instance-specific changes to your own setup, please use instance-config.php. * * This is the default configuration. You can copy values from here and use them in - * your instance-config.php + * your instance-config.php * * You can also create per-board configuration files. Once a board is created, locate its directory and - * create a new file named config.php (eg. b/config.php). Like instance-config.php, you can copy values + * create a new file named config.php (eg. b/config.php). Like instance-config.php, you can copy values * from here and use them in your per-board configuration files. * * Some directives are commented out. This is either because they are optional and examples, or because @@ -58,7 +58,7 @@ // Also experimental. $config['debug'] = false; // For development purposes. Turns 'display_errors' on. Not recommended for production. - $config['verbose_errors'] = true; + $config['verbose_errors'] = true; // Directory where temporary files will be created. Not really used much yet except for some experimental stuff. $config['tmp'] = '/tmp'; @@ -66,7 +66,7 @@ // The HTTP status code to use when redirecting. // Should be 3xx (redirection). http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html // "302" is strongly recommended. (This shouldn't even be configurable... It's not like it's going to change or anything.) - $config['redirect_http'] = 302; + $config['redirect_http'] = 302; // A small file in the main directory indicating that the script has been ran and the board(s) have been generated. // This keeps the script from querying the database and causing strain when not needed. @@ -243,59 +243,61 @@ */ // Do you need a body for your reply posts? - $config['force_body'] = false; + $config['force_body'] = false; // Do you need a body for new threads? - $config['force_body_op'] = true; + $config['force_body_op'] = true; // Strip superfluous new lines at the end of a post $config['strip_superfluous_returns'] = true; + // Require an image for threads? + $config['force_image_op'] = true; // Max body length - $config['max_body'] = 1800; + $config['max_body'] = 1800; // Amount of post lines to show on the index page - $config['body_truncate'] = 15; + $config['body_truncate'] = 15; // Amount of characters to show on the index page $config['body_truncate_char'] = 2500; // Typically spambots try to post a lot of links. Refuse a post with X standalone links? - $config['max_links'] = 20; + $config['max_links'] = 20; // Maximum number of cites per post (protects against abuse) - $config['max_cites'] = 45; + $config['max_cites'] = 45; // Maximum number of cross-board links/cites per post - $config['max_cross'] = $config['max_cites']; + $config['max_cross'] = $config['max_cites']; // Track post citations (>>XX). Rebuilds posts after a cited post is deleted, removing broken links. // A little more database load. - $config['track_cites'] = true; + $config['track_cites'] = true; // Maximum filename length (will be truncated) - $config['max_filename_len'] = 255; + $config['max_filename_len'] = 255; // Maximum filename length to display (the rest can be viewed upon mouseover) $config['max_filename_display'] = 30; // How long before you can delete a post after posting, in seconds. - $config['delete_time'] = 10; + $config['delete_time'] = 10; // Reply limit (stops bumping thread when this is reached) - $config['reply_limit'] = 250; + $config['reply_limit'] = 250; // Strip repeating characters when making hashes - $config['robot_enable'] = false; - $config['robot_strip_repeating'] = true; + $config['robot_enable'] = false; + $config['robot_strip_repeating'] = true; // Enable mutes // Tinyboard uses ROBOT9000's original 2^x implementation - $config['robot_mute'] = true; + $config['robot_mute'] = true; // How many mutes x hours ago to include in the algorithm - $config['robot_mute_hour'] = 336; // 2 weeks + $config['robot_mute_hour'] = 336; // 2 weeks // If you want to alter the algorithm a bit. Default value is 2. n^x - $config['robot_mute_multiplier'] = 2; - $config['robot_mute_descritpion'] = 'You have been muted for unoriginal content.'; + $config['robot_mute_multiplier'] = 2; + $config['robot_mute_descritpion'] = 'You have been muted for unoriginal content.'; // Automatically convert things like "..." to Unicode characters ("…") - $config['auto_unicode'] = true; + $config['auto_unicode'] = true; // Use some Wiki-like syntax (''em'', '''strong''', ==Heading==, etc) - $config['wiki_markup'] = true; + $config['wiki_markup'] = true; // Whether to turn URLs into functional links - $config['markup_urls'] = true; + $config['markup_urls'] = true; // Wordfilters are used to automatically replace certain words/phrases with something else. // For a normal string replacement: @@ -305,7 +307,7 @@ // $config['wordfilters'][] = Array('/cat/', 'dog', true); // 'true' means it's a regular expression // Always act as if they had typed "noko" in the email field no mattter what - $config['always_noko'] = false; + $config['always_noko'] = false; // Custom tripcodes. The below example makes a tripcode // of "#test123" evaluate to "!HelloWorld" @@ -332,7 +334,7 @@ */ // For resizing, max values - $config['thumb_width'] = 255; + $config['thumb_width'] = 255; $config['thumb_height'] = 255; // Thumbnail extension, empty for inherited (png recommended) @@ -362,13 +364,13 @@ // $config['filename_func'] = 'some_function_you_have_created'; // Non-image file icons - $config['file_icons']['default'] = 'file.png'; - $config['file_icons']['zip'] = 'zip.png'; + $config['file_icons']['default'] = 'file.png'; + $config['file_icons']['zip'] = 'zip.png'; // Thumbnail to use for the downloadable files (not images) - $config['file_thumb'] = 'static/%s'; + $config['file_thumb'] = 'static/%s'; // Thumbnail to use for spoiler images - $config['spoiler_image'] = 'static/spoiler.png'; + $config['spoiler_image'] = 'static/spoiler.png'; // Thumbnail quality (compression level), from 0 to 9 $config['thumb_quality'] = 7; @@ -384,13 +386,13 @@ // Maximum image upload size in bytes $config['max_filesize'] = 10*1024*1024; // 10MB // Maximum image dimensions - $config['max_width'] = 10000; - $config['max_height'] = $config['max_width']; // 1:1 + $config['max_width'] = 10000; + $config['max_height'] = $config['max_width']; // 1:1 // Reject dupliate image uploads - $config['image_reject_repost'] = true; + $config['image_reject_repost'] = true; // Display the aspect ratio in a post's file info - $config['show_ratio'] = false; + $config['show_ratio'] = false; // Display the file's original filename $config['show_filename']= true; @@ -400,9 +402,9 @@ Note: Currently not implemented anymore. Will be added back at a later date. **/ - $config['redraw_image'] = false; + $config['redraw_image'] = false; // Temporary fix for the animation-stripping bug - $config['redraw_gifs'] = false; + $config['redraw_gifs'] = false; // Redrawing configuration $config['jpeg_quality'] = 100; @@ -414,11 +416,11 @@ */ // Maximum amount of threads to display on a given page. - $config['threads_per_page'] = 10; + $config['threads_per_page'] = 10; // Maximum number of pages. Content past the last page is automatically purged. - $config['max_pages'] = 10; + $config['max_pages'] = 10; // Replies to show per thread on the board index page. - $config['threads_preview'] = 5; + $config['threads_preview'] = 5; // Same as above, but for stickied threads. $config['threads_preview_sticky'] = 1; @@ -427,10 +429,10 @@ $config['board_abbreviation'] = '/%s/'; // The default name (ie. Anonymous) - $config['anonymous'] = 'Anonymous'; + $config['anonymous'] = 'Anonymous'; // How many reports you can create in the same request. - $config['report_limit'] = 3; + $config['report_limit'] = 3; /* * ==================== @@ -449,14 +451,14 @@ // The format string passed to strftime() for post times // http://www.php.net/manual/en/function.strftime.php - $config['post_date'] = '%m/%d/%y (%a) %H:%M:%S'; + $config['post_date'] = '%m/%d/%y (%a) %H:%M:%S'; // Same as above, but used for "you are banned' pages. - $config['ban_date'] = '%A %e %B, %Y'; + $config['ban_date'] = '%A %e %B, %Y'; // The names on the post buttons. (On most imageboards, these are both "Post") - $config['button_newtopic'] = 'New Topic'; - $config['button_reply'] = 'New Reply'; + $config['button_newtopic'] = 'New Topic'; + $config['button_reply'] = 'New Reply'; // Assign each poster in a thread a unique ID, shown by "ID: {id}" before the post number. $config['poster_ids'] = false; @@ -556,25 +558,25 @@ */ // Error messages - $config['error']['lurk'] = 'Lurk some more before posting.'; - $config['error']['bot'] = 'You look like a bot.'; - $config['error']['referer'] = 'Your browser sent an invalid or no HTTP referer.'; - $config['error']['toolong'] = 'The %s field was too long.'; + $config['error']['lurk'] = 'Lurk some more before posting.'; + $config['error']['bot'] = 'You look like a bot.'; + $config['error']['referer'] = 'Your browser sent an invalid or no HTTP referer.'; + $config['error']['toolong'] = 'The %s field was too long.'; $config['error']['toolong_body'] = 'The body was too long.'; $config['error']['tooshort_body'] = 'The body was too short or empty.'; - $config['error']['noimage'] = 'You must upload an image.'; - $config['error']['nomove'] = 'The server failed to handle your upload.'; - $config['error']['fileext'] = 'Unsupported image format.'; - $config['error']['noboard'] = 'Invalid board!'; + $config['error']['noimage'] = 'You must upload an image.'; + $config['error']['nomove'] = 'The server failed to handle your upload.'; + $config['error']['fileext'] = 'Unsupported image format.'; + $config['error']['noboard'] = 'Invalid board!'; $config['error']['nonexistant'] = 'Thread specified does not exist.'; - $config['error']['locked'] = 'Thread locked. You may not reply at this time.'; - $config['error']['nopost'] = 'You didn\'t make a post.'; - $config['error']['flood'] = 'Flood detected; Post discarded.'; - $config['error']['spam'] = 'Your request looks automated; Post discarded.'; + $config['error']['locked'] = 'Thread locked. You may not reply at this time.'; + $config['error']['nopost'] = 'You didn\'t make a post.'; + $config['error']['flood'] = 'Flood detected; Post discarded.'; + $config['error']['spam'] = 'Your request looks automated; Post discarded.'; $config['error']['unoriginal'] = 'Unoriginal content!'; - $config['error']['muted'] = 'Unoriginal content! You have been muted for %d seconds.'; + $config['error']['muted'] = 'Unoriginal content! You have been muted for %d seconds.'; $config['error']['youaremuted'] = 'You are muted! Expires in %d seconds.'; - $config['error']['dnsbl'] = 'Your IP address is listed in %s.'; + $config['error']['dnsbl'] = 'Your IP address is listed in %s.'; $config['error']['toomanylinks'] = 'Too many links; flood detected.'; $config['error']['toomanycites'] = 'Too many cites; post discarded.'; $config['error']['toomanycross'] = 'Too many cross-board links; post discarded.'; @@ -585,17 +587,17 @@ $config['error']['invalidimg'] = 'Invalid image.'; $config['error']['unknownext'] = 'Unknown file extension.'; $config['error']['filesize'] = 'Maximum file size: %maxsz% bytes
Your file\'s size: %filesz% bytes'; - $config['error']['maxsize'] = 'The file was too big.'; + $config['error']['maxsize'] = 'The file was too big.'; $config['error']['invalidzip'] = 'Invalid archive!'; $config['error']['fileexists'] = 'That file already exists!'; $config['error']['delete_too_soon'] = 'You\'ll have to wait another %s before deleting that.'; $config['error']['mime_exploit'] = 'MIME type detection XSS exploit (IE) detected; post discarded.'; $config['error']['invalid_embed'] = 'Couldn\'t make sense of the URL of the video you tried to embed.'; - $config['error']['captcha'] = 'You seem to have mistyped the verification.'; + $config['error']['captcha'] = 'You seem to have mistyped the verification.'; // Moderator errors - $config['error']['invalid'] = 'Invalid username and/or password.'; - $config['error']['notamod'] = 'You are not a mod…'; + $config['error']['invalid'] = 'Invalid username and/or password.'; + $config['error']['notamod'] = 'You are not a mod…'; $config['error']['invalidafter'] = 'Invalid username and/or password. Your user may have been deleted or changed.'; $config['error']['malformed'] = 'Invalid/malformed cookies.'; $config['error']['missedafield'] = 'Your browser didn\'t submit an input when it should have.'; @@ -604,7 +606,7 @@ $config['error']['boardexists'] = 'There is already a %s board.'; $config['error']['noaccess'] = 'You don\'t have permission to do that.'; $config['error']['invalidpost'] = 'That post doesn\'t exist…'; - $config['error']['404'] = 'Page not found.'; + $config['error']['404'] = 'Page not found.'; $config['error']['modexists'] = 'That mod already exists!'; $config['error']['invalidtheme'] = 'That theme doesn\'t exist!'; @@ -638,13 +640,13 @@ // This can either be a directory or a URL (eg. http://static.example.org/) //$config['dir']['static'] = $config['root'] . 'static/'; // Where to store the .html templates. This folder and templates must exist or fatal errors will be thrown. - $config['dir']['template'] = getcwd() . '/templates'; + $config['dir']['template'] = getcwd() . '/templates'; // For the themes (homepages, etc.) - $config['dir']['themes'] = getcwd() . '/templates/themes'; + $config['dir']['themes'] = getcwd() . '/templates/themes'; // Same as above, but a URI (accessable by web interface, not locally) - $config['dir']['themes_uri'] = 'templates/themes'; + $config['dir']['themes_uri'] = 'templates/themes'; // Homepage directory - $config['dir']['home'] = ''; + $config['dir']['home'] = ''; // Static images // These can be URLs OR base64 (data URI scheme) diff --git a/post.php b/post.php index c76f1f78..ec1457c3 100644 --- a/post.php +++ b/post.php @@ -235,7 +235,7 @@ // Check for a file if($OP && !isset($post['no_longer_require_an_image_for_op'])) { - if(!isset($_FILES['file']['tmp_name']) || empty($_FILES['file']['tmp_name'])) + if(!isset($_FILES['file']['tmp_name']) || empty($_FILES['file']['tmp_name']) && $config['force_image_op']) error($config['error']['noimage']); } @@ -244,7 +244,7 @@ $post['email'] = utf8tohtml($_POST['email']); $post['body'] = $_POST['body']; $post['password'] = $_POST['password']; - $post['has_file'] = !isset($post['embed']) && (($OP && !isset($post['no_longer_require_an_image_for_op'])) || (isset($_FILES['file']) && !empty($_FILES['file']['tmp_name']))); + $post['has_file'] = !isset($post['embed']) && (($OP && !isset($post['no_longer_require_an_image_for_op']) && $config['force_image_op']) || (isset($_FILES['file']) && !empty($_FILES['file']['tmp_name']))); $post['mod'] = isset($_POST['mod']) && $_POST['mod']; if($post['has_file'])