summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSavetheinternet <savetheinternet@n0v4.com>2010-11-05 01:35:53 +1100
committerSavetheinternet <savetheinternet@n0v4.com>2010-11-05 01:35:53 +1100
commit599530e935ac85978ced7198b52212308a6b0f88 (patch)
tree5e78f53b7ffd8a504913d0bb39d6c813b505de7c
parent664dce496a9259cc60ec39c31e47023f3c3eb788 (diff)
parent6cdaed486e6c373b52f639d3e92d7365242f6a89 (diff)
Merge branch 'master' of github.com:savetheinternet/Tinyboard
Conflicts: inc/config.php inc/functions.php post.php
-rw-r--r--.gitignore10
-rw-r--r--README.md91
-rw-r--r--inc/config.php113
-rw-r--r--inc/display.php18
-rw-r--r--inc/functions.php10
-rw-r--r--inc/instance-config.php19
-rw-r--r--post.php7
-rw-r--r--test.php3
8 files changed, 185 insertions, 86 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..8108863c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+# static html
+*.html
+
+# directories
+res/
+src/
+thumb/
+
+# instance-config
+inc/instance-config.php \ No newline at end of file
diff --git a/README.md b/README.md
index 3c9a6bf3..815e3a4a 100644
--- a/README.md
+++ b/README.md
@@ -1,45 +1,46 @@
-# Tinyboard - A lightweight PHP imageboard.
-
-## About
-Tinyboard is an imageboard software package written in PHP. It aims to maintain a stable, fast, clean and user-friendly engine for imageboards. Development for Tinyboard started in October 2010 and the project is being lead by [OmegaSDG][o] ("Omega Software Develop Group"). You can contact the development team over IRC at irc.n0v4.com #tinyboard.
-
-Tinyboard is not currently at a stable state.
-
-[o]: http://omegadev.org/
-
-## Installation
- 1. Tinyboard requires a MySQL database and a user to work. Create one.
- 2. Import 'install.sql' into the database. There are several ways to do this.
- - using phpMyAdmin
- - `mysql -uUSERNAME -pPASSWORD DATABASE < install.sql`
- 3. Edit '[inc/config.php][c]' to suit your installation
- 4. Make sure that the directories used by Tinyboard are writable. Depending on your setup, you may need to `chmod` the directories to 777.
- The default directories are:
- - ./res
- - ./src
- - ./thumb
- - . (document root)
- 5. Ensure everything is okay by running [test.php][t] in a browser. The script will try and help you correct your errors.
- 6. Run the [post.php][p] script. It should create an index.html and redirect you to it if everything is okay.
- 7. Optional (highly recommended): Either delete or chmod as unreadable the following files: [test.php][t], [install.sql][i], and this [README][r].
-
-[t]: http://github.com/savetheinternet/Tinyboard/blob/master/test.php
-[p]: http://github.com/savetheinternet/Tinyboard/blob/master/post.php
-[c]: http://github.com/savetheinternet/Tinyboard/blob/master/inc/config.php
-[i]: http://github.com/savetheinternet/Tinyboard/blob/master/install.sql
-[r]: http://github.com/savetheinternet/Tinyboard/blob/master/README.md
-
-## License
-Copyright (c) 2010 by Omega Software Development Group
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted, provided that the above copyright
-notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. \ No newline at end of file
+# Tinyboard - A lightweight PHP imageboard.
+
+## About
+Tinyboard is an imageboard software package written in PHP. It aims to maintain a stable, fast, clean and user-friendly engine for imageboards. Development for Tinyboard started in October 2010 and the project is being lead by [OmegaSDG][o] ("Omega Software Develop Group"). You can contact the development team over IRC at irc.n0v4.com #tinyboard.
+
+Tinyboard is not currently at a stable state.
+
+[o]: http://omegadev.org/
+
+## Installation
+ 1. Tinyboard requires a MySQL database and a user to work. Create one.
+ 2. Import 'install.sql' into the database. There are several ways to do this.
+ - using phpMyAdmin
+ - `mysql -uUSERNAME -pPASSWORD DATABASE < install.sql`
+ 3. Edit 'instance-config.php' to suit your installation. You should copy some values from '[inc/config.php][c]' to redefine them in the instance-config.
+ 4. Make sure that the directories used by Tinyboard are writable. Depending on your setup, you may need to `chmod` the directories to 777.
+ The default directories are:
+ - ./res
+ - ./src
+ - ./thumb
+ - . (document root)
+ 5. Ensure everything is okay by running [test.php][t] in a browser. The script will try and help you correct your errors.
+ 6. Run the [post.php][p] script. It should create an index.html and redirect you to it if everything is okay.
+ 7. Optional (highly recommended): Either delete or chmod as unreadable the following files: [test.php][t], [install.sql][i], and this [README][r].
+
+[t]: http://github.com/savetheinternet/Tinyboard/blob/master/test.php
+[p]: http://github.com/savetheinternet/Tinyboard/blob/master/post.php
+[c]: http://github.com/savetheinternet/Tinyboard/blob/master/inc/config.php
+[i]: http://github.com/savetheinternet/Tinyboard/blob/master/install.sql
+[r]: http://github.com/savetheinternet/Tinyboard/blob/master/README.md
+
+## License
+Copyright (c) 2010 by Omega Software Development Group
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
diff --git a/inc/config.php b/inc/config.php
index 24c84fbb..6f07e640 100644
--- a/inc/config.php
+++ b/inc/config.php
@@ -1,36 +1,46 @@
<?php
+
+/*
+ * WARNING: This is a project-wide configuration file shared by all Tinyboard users around the globe.
+ * 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
+ *
+ */
// Database stuff
- define('MY_SERVER', 'localhost');
- define('MY_USER', '');
- define('MY_PASSWORD', '');
- define('MY_DATABASE', '');
+ define('MY_SERVER', 'localhost', true);
+ define('MY_USER', '', true);
+ define('MY_PASSWORD', '', true);
+ define('MY_DATABASE', '', true);
// The name of the session cookie (PHP's $_SESSION)
- define('SESS_COOKIE', 'imgboard');
+ define('SESS_COOKIE', 'imgboard', true);
// Used to safely determine when the user was first seen, to prevent floods.
// time()
- define('TIME_COOKIE', 'arrived');
+ define('TIME_COOKIE', 'arrived', true);
// HASH_COOKIE contains an MD5 hash of TIME_COOKIE+SALT for verification.
- define('HASH_COOKIE', 'hash');
+ define('HASH_COOKIE', 'hash', true);
// How long should the cookies last (in seconds)
- define('COOKIE_EXPIRE', 15778463); //6 months
+ define('COOKIE_EXPIRE', 15778463, true); //6 months
- define('SALT', 'wefaw98YHEWUFuo');
+ define('SALT', 'wefaw98YHEWUFuo', true);
// How many seconds before you can post, after the first visit
- define('LURKTIME', 30);
+ define('LURKTIME', 30, true);
// Max body length
- define('MAX_BODY', 1800);
+ define('MAX_BODY', 1800, true);
- define('THREADS_PER_PAGE', 10);
- define('MAX_PAGES', 5);
- define('THREADS_PREVIEW', 5);
+ define('THREADS_PER_PAGE', 10, true);
+ define('MAX_PAGES', 5, true);
+ define('THREADS_PREVIEW', 5, true);
// Error messages
+<<<<<<< HEAD
define('ERROR_LURK', 'Lurk some more before posting.');
define('ERROR_BOT', 'You look like a bot.');
define('ERROR_TOOLONG', 'The %s field was too long.');
@@ -42,16 +52,33 @@
define('ERR_INVALIDIMG','Invalid image.');
define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes<br>Your file\'s size: %filesz% bytes');
define('ERR_MAXSIZE', 'The file was too big.');
+=======
+ define('ERROR_LURK', 'Lurk some more before posting.', true);
+ define('ERROR_BOT', 'You look like a bot.', true);
+ define('ERROR_TOOLONG', 'The %s field was too long.', true);
+ define('ERROR_TOOLONGBODY', 'The body was too long.', true);
+ define('ERROR_TOOSHORTBODY', 'The body was too short or empty.', true);
+ define('ERROR_NOIMAGE', 'You must upload an image.', true);
+ define('ERROR_NOMOVE', 'The server failed to handle your upload.', true);
+ define('ERROR_FILEEXT', 'Unsupported image format.', true);
+ define('ERR_INVALIDIMG','Invalid image.', true);
+ define('ERR_FILESIZE', 'Maximum file size: %maxsz% bytes<br>Your file\'s size: %filesz% bytes', true);
+ define('ERR_MAXSIZE', 'The file was too big.', true);
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89
// For resizing, max values
- define('THUMB_WIDTH', 200);
- define('THUMB_HEIGHT', 200);
+ define('THUMB_WIDTH', 200, true);
+ define('THUMB_HEIGHT', 200, true);
// Maximum image upload size in bytes
- define('MAX_FILESIZE', 1048576); // 10MB
+ define('MAX_FILESIZE', 10*1024*1024, true); // 10MB
// Maximum image dimensions
- define('MAX_WIDTH', 10000);
- define('MAX_HEIGHT', MAX_WIDTH);
+ define('MAX_WIDTH', 10000, true);
+ define('MAX_HEIGHT', MAX_WIDTH, true);
+
+ define('ALLOW_ZIP', true, true);
+ define('ZIP_IMAGE', 'src/zip.png', true);
+
define('ALLOW_ZIP', true);
define('ZIP_IMAGE', 'src/zip.png');
@@ -61,44 +88,54 @@
Redraw the image using GD functions to strip any excess data (commonly ZIP archives)
WARNING: Very beta. Currently strips animated GIFs too :(
**/
- define('REDRAW_IMAGE', true);
+ define('REDRAW_IMAGE', false, true);
// Redrawing configuration
- define('JPEG_QUALITY', 100);
- define('REDRAW_GIF', false);
+ define('JPEG_QUALITY', 100, true);
+ define('REDRAW_GIF', false, true);
// Display the aspect ratio in a post's file info
+<<<<<<< HEAD
define('SHOW_RATIO', true);
+=======
+ define('SHOW_RATIO', true, true);
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89
- define('DIR_IMG', 'src/');
- define('DIR_THUMB', 'thumb/');
- define('DIR_RES', 'res/');
+ define('DIR_IMG', 'src/', true);
+ define('DIR_THUMB', 'thumb/', true);
+ define('DIR_RES', 'res/', true);
// The root directory, including the trailing slash, for Tinyboard.
// examples: '/', '/board/', '/chan/'
- define('ROOT', '/');
- define('POST_URL', ROOT . 'post.php');
- define('FILE_INDEX', 'index.html');
- define('FILE_PAGE', '%d.html');
+ define('ROOT', '/', true);
+ define('POST_URL', ROOT . 'post.php', true);
+ define('FILE_INDEX', 'index.html', true);
+ define('FILE_PAGE', '%d.html', true);
// Automatically convert things like "..." to Unicode characters ("�")
- define('AUTO_UNICODE', true);
+ define('AUTO_UNICODE', true, true);
// Whether to turn URLs into functional links
- define('MARKUP_URLS', true);
- define('URL_REGEX', '/' . '(https?|ftp):\/\/' . '([\w\-]+\.)+[a-zA-Z]{2,6}' . '(\/([\w\-~\.#\/?=&;:+%]+))?' . '/');
+ define('MARKUP_URLS', true, true);
+ define('URL_REGEX', '/' . '(https?|ftp):\/\/' . '([\w\-]+\.)+[a-zA-Z]{2,6}' . '(\/([\w\-~\.#\/?=&;:+%]+))?' . '/', true);
// Allowed file extensions
- $allowed_ext = Array('jpg', 'jpeg', 'bmp', 'gif', 'png');
+ $allowed_ext = Array('jpg', 'jpeg', 'bmp', 'gif', 'png', true);
- define('BUTTON_NEWTOPIC', 'New Topic');
- define('BUTTON_REPLY', 'New Reply');
+ define('BUTTON_NEWTOPIC', 'New Topic', true);
+ define('BUTTON_REPLY', 'New Reply', true);
- define('ALWAYS_NOKO', false);
+ define('ALWAYS_NOKO', false, true);
- define('URL_MATCH', '/^' . (@$_SERVER['HTTPS']?'https':'http').':\/\/'.$_SERVER['HTTP_HOST'] . '(' . preg_quote(ROOT, '/') . '|' . preg_quote(ROOT, '/') . '' . preg_quote(FILE_INDEX, '/') . '|' . preg_quote(ROOT, '/') . '' . str_replace('%d', '\d+', preg_quote(FILE_PAGE, '/')) . ')$/');
+ define('URL_MATCH', '/^' . (@$_SERVER['HTTPS']?'https':'http').':\/\/'.$_SERVER['HTTP_HOST'] . '(' . preg_quote(ROOT, '/') . '|' . preg_quote(ROOT, '/') . '' . preg_quote(FILE_INDEX, '/') . '|' . preg_quote(ROOT, '/') . '' . str_replace('%d', '\d+', preg_quote(FILE_PAGE, '/')) . ')$/', true);
if(!defined('IS_INSTALLATION')) {
+<<<<<<< HEAD
if(!file_exists(DIR_IMG)) @mkdir(DIR_IMG) or error("Couldn't create " . DIR_IMG . ". Install manually.");
if(!file_exists(DIR_THUMB)) @mkdir(DIR_THUMB) or error("Couldn't create " . DIR_IMG . ". Install manually.");
if(!file_exists(DIR_RES)) @mkdir(DIR_RES) or error("Couldn't create " . DIR_IMG . ". Install manually.");
+=======
+ if(!file_exists(DIR_IMG)) @mkdir(DIR_IMG) or error("Couldn't create " . DIR_IMG . ". Install manually.", true);
+ if(!file_exists(DIR_THUMB)) @mkdir(DIR_THUMB) or error("Couldn't create " . DIR_IMG . ". Install manually.", true);
+ if(!file_exists(DIR_RES)) @mkdir(DIR_RES) or error("Couldn't create " . DIR_IMG . ". Install manually.", true);
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89
}
-?> \ No newline at end of file
+?>
diff --git a/inc/display.php b/inc/display.php
index b988e3bc..132dcac5 100644
--- a/inc/display.php
+++ b/inc/display.php
@@ -14,8 +14,21 @@
return round($size, 2).$units[$i];
}
+ function commaize($n) {
+ $n = strval($n);
+ return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3);
+ }
+
function error($message) {
- die(Element('page.html', Array('index' => ROOT, 'title'=>'Error', 'subtitle'=>'An error has occured.', 'body'=>"<h1>$message</h1><p style=\"text-align:center;\"><a href=\"" . ROOT . FILE_INDEX . "\">Go back</a>.</p>")));
+ die(Element('page.html', Array(
+ 'index'=>ROOT,
+ 'title'=>'Error',
+ 'subtitle'=>'An error has occured.',
+ 'body'=>"<center>" .
+ "<h2>$message</h2>" .
+ "<p><a href=\"" . ROOT . FILE_INDEX . "\">Go back</a>.</p>" .
+ "</center>"
+ )));
}
class Post {
@@ -180,4 +193,5 @@
return $built;
}
};
-?> \ No newline at end of file
+?>
+
diff --git a/inc/functions.php b/inc/functions.php
index 237a7724..58a88e0b 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -3,16 +3,23 @@
$replaces = array();
foreach($vars as $k => $v) {
$replaces[$delim . $k . $delim] = $v;
+<<<<<<< HEAD
}
+=======
+ }
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89
return str_replace(array_keys($replaces),
array_values($replaces), $str);
}
+<<<<<<< HEAD
function commaize($n) {
$n = strval($n);
return (intval($n) < 1000) ? $n : commaize(substr($n, 0, -3)) . ',' . substr($n, -3);
}
+=======
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89
function sql_open() {
global $sql;
$sql = @mysql_connect(MY_SERVER, MY_USER, MY_PASSWORD) or error('Database error.');
@@ -568,4 +575,5 @@
function int_to_word($n) {
return chr($n & 255).chr(($n >> 8) & 255);
}
-?> \ No newline at end of file
+?>
+
diff --git a/inc/instance-config.php b/inc/instance-config.php
new file mode 100644
index 00000000..7655d344
--- /dev/null
+++ b/inc/instance-config.php
@@ -0,0 +1,19 @@
+<?php
+/*
+ * Instance Configuration
+ * ----------------------
+ * Edit this file and not config.php for imageboard configuration.
+ *
+ * You can copy values from config.php (defaults) and paste them here.
+ */
+
+ /*
+
+ define('MY_SERVER', 'localhost', true);
+ define('MY_USER', '', true);
+ define('MY_PASSWORD', '', true);
+ define('MY_DATABASE', '', true);
+
+// define('FOO', 'bar');
+ */
+?> \ No newline at end of file
diff --git a/post.php b/post.php
index e4303fca..a69c7c8e 100644
--- a/post.php
+++ b/post.php
@@ -2,6 +2,9 @@
require 'inc/functions.php';
require 'inc/display.php';
require 'inc/template.php';
+ if (file_exists('inc/instance-config.php')) {
+ require 'inc/instance-config.php';
+ }
require 'inc/config.php';
require 'inc/user.php';
@@ -78,7 +81,11 @@
$size = $_FILES['file']['size'];
if($size > MAX_FILESIZE)
error(sprintf3(ERR_FILESIZE, array(
+<<<<<<< HEAD
'sz'=>commaize($size),
+=======
+ 'filesz'=>commaize($size),
+>>>>>>> 6cdaed486e6c373b52f639d3e92d7365242f6a89
'maxsz'=>commaize(MAX_FILESIZE))));
}
diff --git a/test.php b/test.php
index 0cab3ac6..73a4a0d8 100644
--- a/test.php
+++ b/test.php
@@ -4,6 +4,9 @@
require 'inc/functions.php';
require 'inc/display.php';
require 'inc/template.php';
+ if (file_exists('inc/instance-config.php')) {
+ require 'inc/instance-config.php';
+ }
require 'inc/config.php';
require 'inc/user.php';