summaryrefslogtreecommitdiff
path: root/mod.php
diff options
context:
space:
mode:
authorSavetheinternet <savetheinternet@n0v4.com>2010-12-02 20:55:56 +1100
committerSavetheinternet <savetheinternet@n0v4.com>2010-12-02 20:55:56 +1100
commitcb0912754f826e468b32c178e1abc7739463c494 (patch)
tree001c0561761b2f996af0c07e77548d0ecab0118b /mod.php
parent3679f2c78b4ad4c4204738ab0739c9aaad88f751 (diff)
"Create board" page
Diffstat (limited to 'mod.php')
-rw-r--r--mod.php73
1 files changed, 68 insertions, 5 deletions
diff --git a/mod.php b/mod.php
index cbcddfb1..3390d180 100644
--- a/mod.php
+++ b/mod.php
@@ -38,27 +38,90 @@
loginForm();
}
} else {
- $query = $_SERVER['QUERY_STRING'];
+ $query = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '';
$regex = Array(
'board' => str_replace('%s', '(\w{1,8})', preg_quote(BOARD_PATH, '/'))
);
if(preg_match('/^\/?$/', $query)) {
// Dashboard
-
- // Body
$body = '';
$body .= '<fieldset><legend>Boards</legend>' .
ulBoards() .
'</fieldset>';
- die(Element('page.html', Array(
+ // TODO: Statistics, etc, in the dashboard.
+
+ echo Element('page.html', Array(
'index'=>ROOT,
'title'=>'Dashboard',
'body'=>$body
)
- ));
+ );
+ } elseif(preg_match('/^\/new$/', $query)) {
+ // New board
+ $body = '';
+
+ if(isset($_POST['new_board'])) {
+ // Create new board
+ if( !isset($_POST['uri']) ||
+ !isset($_POST['title']) ||
+ !isset($_POST['subtitle'])
+ ) error(ERROR_MISSEDAFIELD);
+
+ $b = Array(
+ 'uri' => $_POST['uri'],
+ 'title' => $_POST['title'],
+ 'subtitle' => $_POST['subtitle']
+ );
+
+ // Check required fields
+ if(empty($b['uri']))
+ error(sprintf(ERROR_REQUIRED, 'URI'));
+ if(empty($b['title']))
+ error(sprintf(ERROR_REQUIRED, 'title'));
+
+ // Check string lengths
+ if(strlen($b['uri']) > 8)
+ error(sprintf(ERROR_TOOLONG, 'URI'));
+ if(strlen($b['title']) > 20)
+ error(sprintf(ERROR_TOOLONG, 'title'));
+ if(strlen($b['subtitle']) > 40)
+ error(sprintf(ERROR_TOOLONG, 'subtitle'));
+
+ if(!preg_match('/^\w+$/', $b['uri']))
+ error(sprintf(ERROR_INVALIDFIELD, 'URI'));
+
+ mysql_query(sprintf(
+ "INSERT INTO `boards` VALUES (NULL, '%s', '%s', " .
+ (empty($b['subtitle']) ? 'NULL' : "'%s'" ) .
+ ")",
+ mysql_real_escape_string($b['uri']),
+ mysql_real_escape_string($b['title']),
+ mysql_real_escape_string($b['subtitle'])
+ ), $sql) or error(mysql_error($sql));
+
+ // Open the board
+ openBoard($b['uri']) or error("Couldn't open board after creation.");
+
+ // Create the posts table
+ mysql_query(Element('posts.sql', Array('board' => $board['uri'])), $sql) or error(mysql_error($sql));
+
+ // Build the board
+ buildIndex();
+ }
+
+ $body .= form_newBoard();
+
+ // TODO: Statistics, etc, in the dashboard.
+
+ echo Element('page.html', Array(
+ 'index'=>ROOT,
+ 'title'=>'New board',
+ 'body'=>$body
+ )
+ );
} elseif(preg_match('/^\/' . $regex['board'] . '(' . preg_quote(FILE_INDEX, '/') . ')?$/', $query, $matches)) {
// Board index