Subversion Repositories taios

Compare Revisions

Ignore whitespace Rev 1 → Rev 171

/blog/edit-post.php
0,0 → 1,93
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Blog Posts', '../');
 
if (isset($_GET['id']))
{
$id = $_GET['id'];
}
else if (isset($_POST['id']))
{
$id = $_POST['id'];
}
else
{
$page->drawError('No ID set.');
}
 
$page->checkLoggedIn();
 
$post = $page->getBlogPost($id);
if (!$page->isUserAdmin($page->getLoggedInUser()) && $page->getLoggedInUser()->ID != $post->author->ID)
{
$page->drawError('You do not have permission to access this page.');
}
 
$error = '';
 
if (isset($_POST['id']))
{
$title = $_POST['title'];
$content = $_POST['content'];
$category = $_POST['category'];
 
if (empty($title))
{
$error = "No Title Specified";
}
else if (empty($content))
{
$error = "No Content Specified";
}
else
{
$page->query('UPDATE BlogPosts SET Content = "' . $content . '", Title = "' . $title . '", Category = "' . $category . '" WHERE ID = ' . $id);
$page->redirect('index.php');
}
}
 
$page->drawHeader();
$page->drawBlogCategoriesMenu();
$page->drawMiddle();
 
if (!empty($error))
{
$page->drawError($error, false);
}
 
?>
 
<form action="edit-post.php" method="post">
<table>
<tr>
<td class="bold">Title: </td>
<td><input type="text" name="title" value="<?php echo $post->title; ?>"/></td>
</tr>
<tr>
<td class="bold">Content: </td>
<td><textarea name="content" style="width: 500px; height: 300px;"><?php echo $post->content; ?></textarea></td>
</tr>
<tr>
<td class="bold">Catagory: </td>
<td><input type="text" name="category" /><?php echo $post->category; ?></td>
</tr>
 
<?php
write('<input type="hidden" name="id" value="' . $id . '" />');
?>
 
<tr>
<td class="bold"></td>
<td><input type="submit" value="Post" /></td>
</tr>
</table>
</form>
 
<?php
 
$page->drawFooter();
 
?>
 
/blog/add-post.php
0,0 → 1,96
<?php
 
function getParentID()
{
if (isset($_GET['id']))
{
return $_GET['id'];
}
else
{
return -1;
}
}
 
require '../_taios.php';
 
$page = new Taios_Page('Blog Posts', '../');
$page->checkLoggedIn();
 
$error = '';
 
if (isset($_POST['post']))
{
$title = $_POST['title'];
$content = $_POST['content'];
$parentID = $_POST['parentID'];
$category = $_POST['category'];
 
if (empty($title))
{
$error = "No Title Specified";
}
else if (empty($content))
{
$error = "No Content Specified";
}
else if (empty($parentID))
{
$error = "No Parent ID Specified";
}
else
{
if ($page->isUserNormal($page->getLoggedInUser()) && $parentID == -1)
{
$page->drawError('You do not have permission to access this page.');
}
$page->query('INSERT INTO BlogPosts VALUES(0, ' . $parentID . ', "' . $page->getLoggedInUser()->ID . '", "' . $title . '", "' . $content . '", NOW(), "' . $category . '", 0)');
$page->redirect('post.php?id=' . $parentID);
}
}
 
$page->drawHeader();
$page->drawBlogCategoriesMenu();
$page->drawMiddle();
 
if (!empty($error))
{
$page->drawError($error, false);
}
 
?>
 
<form action="add-post.php?id=<?php echo getParentID(); ?>" method="post">
<table>
<tr>
<td class="bold">Title: </td>
<td><input type="text" name="title" /></td>
</tr>
<tr>
<td class="bold">Content: </td>
<td><textarea name="content" style="width: 500px; height: 300px;"></textarea></td>
</tr>
<tr>
<td class="bold">Catagory: </td>
<td><input type="text" name="category" /></td>
</tr>
 
<input type="hidden" name="post" value="yes" />
 
<?php
write('<input type="hidden" name="parentID" value="' . getParentID() . '" />');
?>
 
<tr>
<td class="bold"></td>
<td><input type="submit" value="Post" /></td>
</tr>
</table>
</form>
 
<?php
 
$page->drawFooter();
 
?>
/blog/index.php
1,30 → 1,40
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Blog Posts', '../');
$page->drawHeader();
write('<h3>Blog</h3>');
$page->drawMenuItem('Computing', 'index.php?cat=Computing');
$page->drawMiddle();
 
if ($page->isUserGM($page->getLoggedInUser()))
{
write('<p class="bold"><a href="add-post.php">Add Post</a></p>');
write('<br />');
}
 
$ids = $page->findIDs('BlogPosts');
for ($i = 0; $i < count($ids); $i++)
{
$id = $ids[$i];
$post = $page->getBlogPost($id);
write('<h3>' . $post->title. '</h3>');
write('<h5 style="color: #666666;">Posted On ' . date('l j F Y', $post->datePosted) . ' by ' . $post->user->name . ' (' . $post->user->username . ')</h5>');
write('<p>' . $post->content . '</p>');
}
 
$page->drawFooter();
 
?>
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Blog Posts', '../');
$page->drawHeader();
$page->drawBlogCategoriesMenu();
$page->drawMiddle();
 
if ($page->isUserGM($page->getLoggedInUser()))
{
write('<p class="bold"><a href="add-post.php?id=-1">Add Post</a></p>');
write('<br />');
}
 
$query = 'WHERE ParentID = -1';
 
if (isset($_GET['cat']))
{
$query = $query . ' AND Category = "' . $_GET['cat'] . '"';
write('<p>Only showing blog posts from the ' . $_GET['cat'] . ' category. <a href="index.php">Reset Filtering</a></p><br />');
}
 
$query = $query . " ORDER BY DatePosted DESC";
 
$ids = $page->findIDs('BlogPosts', $query);
for ($i = 0; $i < count($ids); $i++)
{
$id = $ids[$i];
$post = $page->getBlogPost($id);
write('<a href="post.php?id=' . $id . '"><h3>' . $post->title. '</h3></a>');
write('<h5 style="color: #666666;">Posted On ' . date('l j F Y', $post->datePosted) . ' by ' . $post->user->name . ' (' . $post->user->username . ')</h5>');
write('<p>' . $post->content . '</p>');
write('<br />');
}
 
$page->drawFooter();
 
?>
/blog/post.php
0,0 → 1,21
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Blog Posts', '../');
 
if (empty($_GET['id']))
{
$page->redirect('index.php');
}
 
$page->drawHeader();
$page->drawBlogCategoriesMenu();
$page->drawMiddle();
 
$page->drawBlogPostTree($page->getGetID(), true);
 
$page->drawFooter();
 
?>
 
/blog/del-post.php
0,0 → 1,27
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Delete Blog Post', '../');
 
$id = $_GET['id'];
if ($id)
{
if ($page->isUserAdmin($page->getLoggedInUser()) || $page->getLoggedInUser()->ID == $page->getBlogPost($id)->author->ID)
{
$page->delBlogPost($id);
}
else
{
$page->drawError('You do not have permission to access this page.');
}
}
else
{
$page->drawError('No ID Specified');
}
 
$page->redirect('index.php');
 
?>
 
/data/smilies/face-laugh.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/data/smilies/face-laugh.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-plain.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-plain.png
===================================================================
--- data/smilies/face-plain.png (nonexistent)
+++ data/smilies/face-plain.png (revision 171)
/data/smilies/face-plain.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-sad.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-sad.png
===================================================================
--- data/smilies/face-sad.png (nonexistent)
+++ data/smilies/face-sad.png (revision 171)
/data/smilies/face-sad.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-uncertain.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-uncertain.png
===================================================================
--- data/smilies/face-uncertain.png (nonexistent)
+++ data/smilies/face-uncertain.png (revision 171)
/data/smilies/face-uncertain.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-wink.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-wink.png
===================================================================
--- data/smilies/face-wink.png (nonexistent)
+++ data/smilies/face-wink.png (revision 171)
/data/smilies/face-wink.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-raspberry.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-raspberry.png
===================================================================
--- data/smilies/face-raspberry.png (nonexistent)
+++ data/smilies/face-raspberry.png (revision 171)
/data/smilies/face-raspberry.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-surprise.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-surprise.png
===================================================================
--- data/smilies/face-surprise.png (nonexistent)
+++ data/smilies/face-surprise.png (revision 171)
/data/smilies/face-surprise.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-smile.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-smile.png
===================================================================
--- data/smilies/face-smile.png (nonexistent)
+++ data/smilies/face-smile.png (revision 171)
/data/smilies/face-smile.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: admin/account-do.php
===================================================================
--- admin/account-do.php (nonexistent)
+++ admin/account-do.php (revision 171)
@@ -0,0 +1,53 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Update Account', '../');
+$userID = $page->getPostID();
+
+$page->checkLoggedIn();
+
+$accessID = $_POST['accessID'];
+$password = $_POST['password'];
+$email = $_POST['email'];
+$name = $_POST['name'];
+
+$user = $page->getUserByID($userID);
+if (($page->getLoggedInUser()->ID == $userID || $page->isUserAdmin($page->getLoggedInUser())) && $user)
+{
+ if (isset($accessID) && $page->isUserAdmin($page->getLoggedInUser()))
+ {
+ $page->query('UPDATE Users SET AccessID = "' . $accessID . '" WHERE ID = ' . $userID);
+ }
+
+ if (!empty($password))
+ {
+ $page->query('UPDATE Users SET Password = "' . sha1($password) . '" WHERE ID = ' . $userID);
+ }
+
+ if (!empty($email))
+ {
+ $page->query('UPDATE Users SET EmailAddress = "' . $email . '" WHERE ID = ' . $userID);
+ }
+
+ if (!empty($name))
+ {
+ $page->query('UPDATE Users SET Name = "' . $name . '" WHERE ID = ' . $userID);
+ }
+}
+else
+{
+ if (!$user)
+ {
+ drawError('No such user, #' . $userID);
+ }
+ else
+ {
+ drawError('You do not have permission to access this page.');
+ }
+}
+
+$page->redirect('account.php?id=' . $userID);
+
+?>
+
Index: admin/account.php
===================================================================
--- admin/account.php (nonexistent)
+++ admin/account.php (revision 171)
@@ -0,0 +1,60 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Manage Account', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+$userID = $page->getGetID();
+$user = $page->getUserByID($userID);
+
+if (($page->getLoggedInUser()->ID == $userID || $page->isUserAdmin($page->getLoggedInUser())) && $user)
+{
+?>
+
+

Here you can edit your account.

+

Only change the password value if you want to change your password.

+
+
+
+');');
+
ID: ID; ?>
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ write('
AccessID:
+}
+else
+{
+ write('
AccessID: ' . $user->accessID . '
+}
+?>
+
Username: username; ?>
+
Password:
+
Email Address:
+
Name:
+
+
+
+
+
+}
+else
+{
+ if (!$user)
+ {
+ drawError('No such user, #' . $userID);
+ }
+ else
+ {
+ drawError('You do not have permission to access this page.');
+ }
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/all-blog-posts.php
===================================================================
--- admin/all-blog-posts.php (nonexistent)
+++ admin/all-blog-posts.php (revision 171)
@@ -0,0 +1,60 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Manage All Blog Posts', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ write('

Use this to manage all the blog posts on the Tim32 Website.


');
+
+ write('');');');');');');');');');');');');');');');');');');');');');');
+ write('
+ write('ID
+ write('Parent
+ write('Author
+ write('Title
+ write('Content
+ write('Date Posted
+ write('Category
+ write('Spam
+ write('
+
+ $ids = $page->findIDs('BlogPosts');
+ for ($i = 0; $i < count($ids); $i++)
+ {
+ $post = $page->getBlogPost($ids[$i]);
+ write('
+ write('' . $post->ID . '
+ if ($post->parent == -1)
+ {
+ write('No Parent
+ }
+ else
+ {
+ write('' . $post->parent->title . '
+ }
+ write('' . $post->author->name . '
+ write('' . $post->title . '
+ write('' . $post->content . '
+ write('' . date('j/m/Y H:i', $post->datePosted) . '
+ write('' . $post->category . '
+ write('' . $post->spam . '
+ write('
+ }
+
+ write('
');
+}
+else
+{
+ drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/all-accounts.php
===================================================================
--- admin/all-accounts.php (nonexistent)
+++ admin/all-accounts.php (revision 171)
@@ -0,0 +1,51 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Manage All Accounts', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ write('

Use this to manage all the accounts on the Tim32 Website.


');
+
+ write('');');');');');');');');');');');');');');');');');');');
+ write('
+ write('ID
+ write('AccessID
+ write('Username
+ write('Password
+ write('Name
+ write('Email Address
+ write('Challenge ID
+ write('
+
+ $ids = $page->findIDs('Users');
+ for ($i = 0; $i < count($ids); $i++)
+ {
+ $user = $page->getUserByID($ids[$i]);
+ write('
+ write('' . $user->ID . '
+ write('' . $user->accessID . '
+ write('' . $user->username . '
+ write('' . $user->password . '
+ write('' . $user->name . '
+ write('' . $user->emailAddress . '
+ write('' . $user->challengeID . '
+ write('
+ }
+
+ write('
');
+}
+else
+{
+ drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/index.php
===================================================================
--- admin/index.php (nonexistent)
+++ admin/index.php (revision 171)
@@ -0,0 +1,27 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Administration', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+$user = $page->getLoggedInUser();
+
+write('

Manage Account

');
+
+if ($page->isUserAdmin($user))
+{
+ write('

Manage All Accounts

');
+ write('

Manage All Blog Posts

');
+ write('

Manage All Projects

');
+ write('

Manage All Forum Categories

');
+ write('

Manage All Forum Topics

');
+ write('

Manage All Forum Posts

');
+}
+
+$page->drawFooter();
+
+?>
+
Index: projects/index.php
===================================================================
--- projects/index.php (nonexistent)
+++ projects/index.php (revision 171)
@@ -0,0 +1,14 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Projects', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+write('

This page is currently under construction.

');
+
+$page->drawFooter();
+
+?>
+
Index: 404.php
===================================================================
--- 404.php (nonexistent)
+++ 404.php (revision 171)
@@ -0,0 +1,28 @@
+
+
+require '_taios.php';
+
+$page = new Taios_Page('404');
+$page->drawHeader();
+write('

Pages

');
+$page->drawMenuItem('Biggles', '/~biggles/');
+$page->drawMenuItem('Freddie', '/~freddie/');
+$page->drawMenuItem('Muzer', '/~muzer/');
+$page->drawMenuItem('Sh4rk', '/~szabot/');
+$page->drawMenuItem('Tom', '/~tom/');
+$page->drawMiddle();
+
+?>
+
+

404 - Page not found

+

The page you requested could not be found.

+
+

Useful Links

+
+
+
+$page->drawMenuItem('Tim32 Homepage', 'index.php');
+
+$page->drawFooter();
+
+?>
Index: index.php
===================================================================
--- index.php (revision 1)
+++ index.php (revision 171)
@@ -1,45 +1,39 @@
-
-
-require '_taios.php';
-
-$page = new Taios_Page('Home');
-$page->drawHeader();
-write('

Pages

');
-$page->drawMenuItem('Biggles', '/~biggles/');
-$page->drawMenuItem('Freddie', '/~freddie/');
-$page->drawMenuItem('Muzer', '/~muzer/');
-$page->drawMenuItem('Sh4rk', '/~szabot/');
-$page->drawMenuItem('Tom', '/~tom/');
-$page->drawMiddle();
-
-?>
-
-

Welcome to Tim32!

-

Tim32 is a 10 year-old laptop running Ubuntu Server Edition 10.04.

-
-
-

Latest Blog Posts

-
-
-
-$ids = $page->findIDs('BlogPosts');
-for ($i = 0; $i < 5 && $i < count($ids); $i++)
-{
- $id = $ids[$i];
- $post = $page->getBlogPost($id);
-
- write('

' . $post->title. '

');
- write('
Posted On ' . date('l j F Y', $post->datePosted) . ' by ' . $post->user->name . ' (' . $post->user->username . ')
');
- write('

' . $post->content . '

');
- write('
');
-}
-
-if ($page->isLoggedIn())
-{
- write('

Actions

');
- write('

Manage Account

');
-}
-
-$page->drawFooter();
-
-?>
+
+
+require '_taios.php';
+
+$page = new Taios_Page('Home');
+$page->drawHeader();
+write('

Pages

');
+$page->drawMenuItem('Biggles', '/~biggles/');
+$page->drawMenuItem('Freddie', '/~freddie/');
+$page->drawMenuItem('Muzer', '/~muzer/');
+$page->drawMenuItem('Sh4rk', '/~szabot/');
+$page->drawMenuItem('Tom', '/~tom/');
+$page->drawMiddle();
+
+?>
+
+

Welcome to Tim32!

+

Tim32 is a 10 year-old laptop running Ubuntu Server Edition 10.04.

+
+
+

Latest Blog Posts

+
+
+
+$ids = $page->findIDs('BlogPosts', 'WHERE ParentID = -1 ORDER BY DatePosted DESC');
+for ($i = 0; $i < 5 && $i < count($ids); $i++)
+{
+ $id = $ids[$i];
+ $post = $page->getBlogPost($id);
+
+ write('

' . $post->title. '

');
+ write('
Posted On ' . date('l j F Y', $post->datePosted) . ' by ' . $post->user->name . ' (' . $post->user->username . ')
');
+ write('

' . $post->content . '

');
+ write('
');
+}
+
+$page->drawFooter();
+
+?>
Index: login-do.php
===================================================================
--- login-do.php (revision 1)
+++ login-do.php (revision 171)
@@ -1,37 +1,37 @@
-
-
-require '_taios.php';
-
-$page = new Taios_Page('Login');
-
-$username = $_POST['username'];
-$password = $_POST['password'];
-$remember = $_POST['remember'] == 'yes';
-
-if (empty($username))
-{
- $page->redirect('login.php?error=No Username Specified');
-}
-if (empty($password))
-{
- $page->redirect('login.php?error=No Password Specified');
-}
-
-$user = $page->getUserByUsername($username);
-if (!$user || $user->password != sha1($password))
-{
- $page->redirect('login.php?error=Incorrect Username or Password');
-}
-
-$expires = -1;
-
-if ($remember)
-{
- $expires = time() + 60 * 60 * 24 * 30;
-}
-
-setcookie('Tim32_Login', $user->username . '|~|' . $user->password, $expires, '/');
-
-$page->redirect('index.php');
-
-?>
+
+
+require '_taios.php';
+
+$page = new Taios_Page('Login');
+
+$username = $_POST['username'];
+$password = $_POST['password'];
+$remember = $_POST['remember'] == 'yes';
+
+if (empty($username))
+{
+ $page->redirect('login.php?error=No Username Specified');
+}
+if (empty($password))
+{
+ $page->redirect('login.php?error=No Password Specified');
+}
+
+$user = $page->getUserByUsername($username);
+if (!$user || $user->password != sha1($password))
+{
+ $page->redirect('login.php?error=Incorrect Username or Password');
+}
+
+$expires = -1;
+
+if ($remember)
+{
+ $expires = time() + 60 * 60 * 24 * 30;
+}
+
+setcookie('Tim32_Login', $user->username . '|~|' . $user->password, $expires, '/');
+
+$page->redirect('index.php');
+
+?>
Index: login.php
===================================================================
--- login.php (revision 1)
+++ login.php (revision 171)
@@ -1,48 +1,48 @@
-
-
-require '_taios.php';
-
-$page = new Taios_Page('Login');
-$page->drawHeader();
-$page->drawMiddle();
-
-?>
-
-

Here you can login to Tim32 using your Tim32 account.

-
-
-
-
-if (isset($_GET['error']))
-{
- $page->drawError($_GET['error'], false);
-}
-
-?>
-
-
-
-
-Username:
-
-
-
-Password:
-
-
-
-Remember Me:
-
-
-
-
-
-
-
-
-
-
-
-$page->drawFooter();
-
-?>
+
+
+require '_taios.php';
+
+$page = new Taios_Page('Login');
+$page->drawHeader();
+$page->drawMiddle();
+
+?>
+
+

Here you can login to Tim32 using your Tim32 account.

+
+
+
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+?>
+
+
+
+
+Username:
+
+
+
+Password:
+
+
+
+Remember Me:
+
+
+
+
+
+
+
+
+
+
+
+$page->drawFooter();
+
+?>
Index: logout-do.php
===================================================================
--- logout-do.php (revision 1)
+++ logout-do.php (revision 171)
@@ -1,6 +1,6 @@
-
-
-setcookie('Tim32_Login', '', -1, '/');
-header('Location: index.php');
-
-?>
+
+
+setcookie('Tim32_Login', '', -1, '/');
+header('Location: index.php');
+
+?>
Index: wiki/index.php
===================================================================
--- wiki/index.php (nonexistent)
+++ wiki/index.php (revision 171)
@@ -0,0 +1,14 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Wiki', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+write('

This page is currently under construction.

');
+
+$page->drawFooter();
+
+?>
+
Index: _taios.php
===================================================================
--- _taios.php (revision 1)
+++ _taios.php (revision 171)
@@ -1,5 +1,7 @@
+require '_config.php';
+
class Taios_Page
{
function __construct($title, $url = "")
@@ -11,7 +13,7 @@
$this->drawnMiddle = false;
$this->drawnFooter = false;
- $this->db = mysql_connect('localhost', 'root', 'puppylinux');
+ $this->db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD);
if (!$this->db)
{
$this->drawError('Failed to connect to database: ' . mysql_error());
@@ -49,7 +51,7 @@
write('
');
if ($this->isLoggedIn())
{
- $this->drawMenuItem('Manage Account', 'admim/?id=' . $this->getLoggedInUser()->ID);
+ $this->drawMenuItem('Administration', 'admin/');
$this->drawMenuItem('Logout', 'logout-do.php');
}
else
@@ -65,7 +67,7 @@
function drawMenuItem($t, $u)
{
- write('

' . $t . '

');
+ write('

' . $t . '

');
}
function drawMiddle()
@@ -110,9 +112,97 @@
}
}
- function redirect($url)
+ function drawBlogPostTree($id, $first = false)
{
- header('Location: ' . $url);
+ $post = $this->getBlogPost($id);
+ if ($first)
+ write('

' . $post->title. ' ^

');
+ else
+ write('

' . $post->title. '

');
+ write('
Posted On ' . date('l j F Y', $post->datePosted) . ' by ' . $post->user->name . ' (' . $post->user->username . ')
');
+ write('

' . $post->content . '

');
+ write('
');
+ if ($this->isUserNormal($this->getLoggedInUser()))
+ {
+ echo '

Add Comment';

+ if ($this->isUserAdmin($this->getLoggedInUser()) || $this->getLoggedInUser() == $post->author->ID)
+ echo ' · Delete Post';
+ write('


');
+ }
+
+ $ids = $this->findIDs('BlogPosts', 'WHERE ParentID=' . $id);
+ for ($i = 0; $i < count($ids); $i++)
+ {
+ write('
');
+ $this->drawBlogPostTree($ids[$i]);
+ write('');
+ }
+ }
+
+ function drawBlogCategoriesMenu()
+ {
+ $cats = array();
+
+ $ids = $this->findIDs('BlogPosts', 'WHERE ParentID = -1');
+ for ($i = 0; $i < count($ids); $i++)
+ {
+ $cat = $this->getBlogPost($ids[$i])->category;
+ if (!in_array($cat, $cats))
+ {
+ array_push($cats, $cat);
+ }
+ }
+
+ write('

Categories

');
+ for ($i = 0; $i < count($cats); $i++)
+ {
+ $this->drawMenuItem($cats[$i], 'blog/index.php?cat=' . $cats[$i]);
+ }
+ }
+
+ function replaceBBCode($str)
+ {
+ $newstr = str_replace("\n", '

', $str);

+ $newstr = str_replace(' ', '  ', $newstr);
+ $newstr = str_replace(' :)', ' ', $newstr);
+ $newstr = str_replace(' :p', ' ', $newstr);
+ $newstr = str_replace(' :P', ' ',$newstr);
+ $newstr = str_replace(' :|', ' ',$newstr);
+ $newstr = str_replace(' :D', ' ',$newstr);
+ $newstr = str_replace(' =D', ' ',$newstr);
+ $newstr = str_replace(' :(', ' ',$newstr);
+ $newstr = str_replace(' :0', ' ',$newstr);
+ $newstr = str_replace(' :o', ' ',$newstr);
+ $newstr = str_replace(' :O', ' ',$newstr);
+ $newstr = str_replace(' :/', ' ',$newstr);
+ $newstr = str_replace(' ;)', ' ',$newstr);
+
+ $bbcode = array(
+ '/\[b\](.+?)\[\/b\]/is',
+ '/\[i\](.+?)\[\/i\]/is',
+ '/\[u\](.+?)\[\/u\]/is',
+ '/\[url\](.+?)\[\/url\]/is',
+ '/\[code\](.+?)\[\/code\]/is',
+ '/\[img\](.+?)\[\/img\]/is'
+ );
+
+ $html = array(
+ '$1',
+ '$1',
+ '$1',
+ '$1',
+ '
$1
',
+ ''
+ );
+
+ $newstr = preg_replace($bbcode, $html, $newstr);
+
+ return $newstr;
+ }
+
+ function redirect($u)
+ {
+ header('Location: ' . $u);
die();
}
@@ -174,6 +264,14 @@
return false;
}
+ function checkLoggedIn()
+ {
+ if (!$this->isLoggedIn())
+ {
+ $this->drawError('You need to be logged in.');
+ }
+ }
+
function query($query)
{
$result = mysql_query($query);
@@ -247,11 +345,21 @@
{
$post = new BlogPost;
$post->ID = $row['ID'];
- $post->user = $this->getUserByID($row['AuthorID']);
+ if ($row['ParentID'] == -1)
+ {
+ $post->parent = -1;
+ }
+ else
+ {
+ $post->parent = $this->getBlogPost($row['ParentID']);
+ }
+ $post->author = $this->getUserByID($row['AuthorID']);
+ $post->user = $this->getUserByID($row['AuthorID']); // For some older pages
$post->title = $row['Title'];
- $post->content = $row['Content'];
+ $post->content = $this->replaceBBCode($row['Content']);
$post->datePosted = strtotime($row['DatePosted']);
$post->category = $row['Category'];
+ $post->spam = $row['Spam'];
return $post;
}
@@ -258,6 +366,38 @@
$this->drawError('Cannot find blog post, #' . $id);
}
+
+ function delBlogPost($id)
+ {
+ $ids = $this->findIDs('BlogPosts', 'WHERE ParentID=' . $id);
+ for ($i = 0; $i < count($ids); $i++)
+ $this->delBlogPost($ids[$i]);
+
+ $this->query('delete from BlogPosts where ID=' . $id);
+ }
+
+ function getGetID()
+ {
+ $id = $_GET['id'];
+ if (empty($id))
+ {
+ $id = 1;
+ }
+
+ return $id;
+ }
+
+ function getPostID()
+ {
+ $id = $_POST['id'];
+ if (empty($id))
+ {
+ $id = 1;
+ }
+
+ return $id;
+ }
+
}
class User
@@ -274,11 +414,13 @@
class BlogPost
{
public $ID;
+ public $parent;
public $author;
public $title;
public $content;
public $datePosted;
public $category;
+ public $spam;
}
function write($str)
/install.sql
1,30 → 1,75
DROP DATABASE Tim32;
CREATE DATABASE Tim32;
 
USE Tim32;
 
CREATE TABLE Users
(
ID INT NOT NULL AUTO_INCREMENT,
AccessID INT,
Username TEXT,
Password TEXT,
EmailAddress TEXT,
Name TEXT,
ChallengeID INT,
PRIMARY KEY(ID)
);
 
CREATE TABLE BlogPosts
(
ID INT NOT NUll AUTO_INCREMENT,
AuthorID INT,
Title TEXT,
Content TEXT,
DatePosted DATETIME,
Category TEXT,
PRIMARY KEY(ID)
);
 
INSERT INTO Users VALUES (1, 0, "admin", SHA1("password"), "admins@tim32.org", "Tim32 Admin", 0);
INSERT INTO BlogPosts VALUES(1, 1, "Welcome to Tim32!", "Welcome to the new Tim32 website! It has had a complete design re-think to make it simpler and easier to use!", NOW(), "Tim32");
DROP DATABASE Tim32;
CREATE DATABASE Tim32;
 
USE Tim32;
 
CREATE TABLE Users
(
ID INT NOT NULL AUTO_INCREMENT,
AccessID INT,
Username TEXT,
Password TEXT,
EmailAddress TEXT,
Name TEXT,
ChallengeID INT,
PRIMARY KEY(ID)
);
 
CREATE TABLE BlogPosts
(
ID INT NOT NUll AUTO_INCREMENT,
ParentID INT,
AuthorID INT,
Title TEXT,
Content TEXT,
DatePosted DATETIME,
Category TEXT,
Spam BOOLEAN,
PRIMARY KEY(ID)
);
 
CREATE TABLE Projects
(
ID INT NOT NUll AUTO_INCREMENT,
AuthorID INT,
Title TEXT,
Description TEXT,
LogoURL TEXT,
WebsiteURL TEXT,
LatestVersion TEXT,
PRIMARY KEY(ID)
);
 
CREATE TABLE ForumCategories
(
ID INT NOT NUll AUTO_INCREMENT,
ParentID INT,
Title TEXT,
Description TEXT,
PRIMARY KEY(ID)
);
 
CREATE TABLE ForumTopics
(
ID INT NOT NUll AUTO_INCREMENT,
AuthorID INT,
CategoryID INT,
Title TEXT,
DatePosted DATETIME,
PRIMARY KEY(ID)
);
 
CREATE TABLE ForumPosts
(
ID INT NOT NUll AUTO_INCREMENT,
AuthorID INT,
TopicID INT,
Title TEXT,
Content TEXT,
DatePosted DATETIME,
Spam BOOLEAN,
PRIMARY KEY(ID)
);
 
INSERT INTO Users VALUES (1, 0, "admin", SHA1("password"), "admins@tim32.org", "Tim32 Admin", 0);
INSERT INTO BlogPosts VALUES(1, -1, 1, "Welcome to Tim32!", "Welcome to the new Tim32 website! It has had a complete design re-think to make it simpler and easier to use!", NOW(), "Tim32", FALSE);
/register-do.php
1,34 → 1,34
<?php
 
require '_taios.php';
 
$page = new Taios_Page('Login');
 
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
$name = $_POST['name'];
 
if (empty($username))
{
$page->redirect('register.php?error=No Username Specified');
}
if (empty($password))
{
$page->redirect('register.php?error=No Password Specified');
}
if (empty($password2))
{
$page->redirect('register.php?error=No Repeat Password Specified');
}
if ($password != $password2)
{
$page->redirect('register.php?error=Passwords do not match');
}
 
$page->query('INSERT INTO Users (AccessID, Username, Password, EmailAddress, Name, ChallengeID) VALUES (2, "' . $username . '", "' . sha1($password) . '", "' . $email . '", "' . $name . '", 0)');
 
$page->redirect('login.php');
 
?>
<?php
 
require '_taios.php';
 
$page = new Taios_Page('Login');
 
$username = $_POST['username'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
$name = $_POST['name'];
 
if (empty($username))
{
$page->redirect('register.php?error=No Username Specified');
}
if (empty($password))
{
$page->redirect('register.php?error=No Password Specified');
}
if (empty($password2))
{
$page->redirect('register.php?error=No Repeat Password Specified');
}
if ($password != $password2)
{
$page->redirect('register.php?error=Passwords do not match');
}
 
$page->query('INSERT INTO Users (AccessID, Username, Password, EmailAddress, Name, ChallengeID) VALUES (2, "' . $username . '", "' . sha1($password) . '", "' . $email . '", "' . $name . '", 0)');
 
$page->redirect('login.php');
 
?>
/register.php
1,56 → 1,56
<?php
 
require '_taios.php';
 
$page = new Taios_Page('Register');
$page->drawHeader();
$page->drawMiddle();
 
?>
 
<p class="bold">Here you can create an account with Tim32.</p>
<br />
 
<?php
 
if (isset($_GET['error']))
{
$page->drawError($_GET['error'], false);
}
 
?>
 
<form action="register-do.php" method="POST">
<table>
<tr>
<td class="bold">Username: </td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td class="bold">Password: </td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td class="bold">Repeat Password: </td>
<td><input type="password" name="password2" /></td>
</tr>
<tr>
<td class="bold">Email Address</td>: </td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td class="bold">Name</td>: </td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td class="bold"></td>
<td><input type="submit" value="Register" /></td>
</tr>
</table>
</form>
 
<?php
 
$page->drawFooter();
 
?>
<?php
 
require '_taios.php';
 
$page = new Taios_Page('Register');
$page->drawHeader();
$page->drawMiddle();
 
?>
 
<p class="bold">Here you can create an account with Tim32.</p>
<br />
 
<?php
 
if (isset($_GET['error']))
{
$page->drawError($_GET['error'], false);
}
 
?>
 
<form action="register-do.php" method="POST">
<table>
<tr>
<td class="bold">Username: </td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td class="bold">Password: </td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td class="bold">Repeat Password: </td>
<td><input type="password" name="password2" /></td>
</tr>
<tr>
<td class="bold">Email Address</td>: </td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td class="bold">Name</td>: </td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td class="bold"></td>
<td><input type="submit" value="Register" /></td>
</tr>
</table>
</form>
 
<?php
 
$page->drawFooter();
 
?>
/styles.css
63,6 → 63,24
background-color: #B5D7FF;
}
 
table {
border: 1px solid #222222;
}
 
td {
padding: 3px;
border: 1px solid #888888;
}
 
img {
border: 2px solid #333333;
}
 
.smiley {
border: 0px;
vertical-align: middle;
}
 
.sidebar {
left: 0px;
top: 0px;
102,7 → 120,6
left: 200px;
top: 0px;
position: absolute;
width: 720px;
margin-right: 32px;
}
 
109,3 → 126,15
.bold {
font-weight: bold;
}
 
.indent {
margin-left: 14px;
border-left: 1px solid #BBBBBB;
}
 
.code {
border: 1px solid #333333;
background-color: #DDDDDD;
font-family: Droid Sans Mono, Monospace, Fixed;
}
 
/forums/index.php
0,0 → 1,14
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Forums', '../');
$page->drawHeader();
$page->drawMiddle();
 
write('<br /><p class="bold">This page is currently under construction.</p>');
 
$page->drawFooter();
 
?>
 
/photos/index.php
0,0 → 1,14
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Photos', '../');
$page->drawHeader();
$page->drawMiddle();
 
write('<br /><p class="bold">This page is currently under construction.</p>');
 
$page->drawFooter();
 
?>