Merge branch 'master' of github.com:savetheinternet/Tinyboard

Conflicts:
	inc/config.php
	inc/functions.php
	post.php
This commit is contained in:
Savetheinternet 2010-11-05 01:35:53 +11:00
commit 599530e935
8 changed files with 185 additions and 86 deletions

10
.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
# static html
*.html
# directories
res/
src/
thumb/
# instance-config
inc/instance-config.php

View File

@ -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.
# 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.

View File

@ -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 ("<22>")
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
}
?>
?>

View File

@ -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;
}
};
?>
?>

View File

@ -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);
}
?>
?>

19
inc/instance-config.php Normal file
View File

@ -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');
*/
?>

View File

@ -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))));
}

View File

@ -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';