Subversion Repositories taios

Compare Revisions

Ignore whitespace Rev 145 → Rev 462

/_taios.php
34,7 → 34,8
write('<head>');
write('<meta http-equiv="Content-Type" content="text/html;charset=utf-8">');
write('<title>Tim32 &middot; ' . $this->title . '</title>');
write('<link href="' . $this->url . 'styles.css" rel="stylesheet" type="text/css" media="screen">');
write('<link href="' . $this->url . 'styles.css" rel="stylesheet" type="text/css" media="screen" />');
write('<link rel="shortcut icon" href="data/favicon.png" />');
write('</head>');
write('<body>');
write('<div class="sidebar">');
88,6 → 89,7
{
if (!$this->drawnFooter)
{
write('<br /><p class="copyright">&copy; 2011 Tim32</p>');
write('</div>');
write('</body>');
write('</html>');
116,17 → 118,24
{
$post = $this->getBlogPost($id);
if ($first)
{
write('<h3><a href="post.php?id=' . $id . '">' . $post->title. '</a> <a href="post.php?id=' . $post->parent->ID . '">^</a></h3>');
}
else
{
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 />');
write('<p>' . $this->replaceBBCode($post->content) . '</p>');
 
if ($this->isUserNormal($this->getLoggedInUser()))
{
echo '<p class="bold"><a href="add-post.php?id=' . $id . '">Add Comment</a>';
if ($this->isUserAdmin($this->getLoggedInUser()) || $this->getLoggedInUser() == $post->author->ID)
echo ' &middot <a href="del-post.php?id=' . $id . '">Delete Post</a>';
if ($this->isUserAdmin($this->getLoggedInUser()) || $this->getLoggedInUser()->ID == $post->author->ID)
{
echo ' &nbsp; &middot &nbsp; <a href="edit-post.php?id=' . $id . '">Edit Post</a>';
echo ' &nbsp; &middot &nbsp; <a href="del-post.php?id=' . $id . '">Delete Post</a>';
}
write('</p><br />');
}
 
162,9 → 171,37
function replaceBBCode($str)
{
$newstr = str_replace("\n", '</p><p>', $str);
/*$newstrarray = explode("\n", $str);
$newstr = "";
foreach ($newstrarray as $line)
{
if ($line == "\n" || $line == " \n" || $line == "\n " || $line == "\n\r")
{
$line = "</p><p>";
}
$newstr .= ($line . "\n");
}*/
$newstr = $str;
$newstr = str_replace("<", "[", $newstr);
$newstr = str_replace(">", "]", $newstr);
$newstr = str_replace("\n", "</p><p>", $newstr);
$newstr = str_replace("\\'", "'", $newstr);
$newstr = str_replace("\\\"",'"', $newstr);
$newstr = str_replace(' ', '&nbsp;&nbsp;', $newstr);
$newstr = str_replace(':)'. '<img src="' . $this->url . 'data/smilies/face-smile.png" style="vertical-align: center;" />');
$newstr = str_replace(' :)', ' <img src="' . $this->url . 'data/smilies/face-smile.png" class="smiley" />', $newstr);
$newstr = str_replace(' :p', ' <img src="' . $this->url . 'data/smilies/face-raspberry.png" class="smiley" />', $newstr);
$newstr = str_replace(' :P', ' <img src="' . $this->url . 'data/smilies/face-raspberry.png" class="smiley" />',$newstr);
$newstr = str_replace(' :|', ' <img src="' . $this->url . 'data/smilies/face-plain.png" class="smiley" />',$newstr);
$newstr = str_replace(' :D', ' <img src="' . $this->url . 'data/smilies/face-laugh.png" class="smiley" />',$newstr);
$newstr = str_replace(' =D', ' <img src="' . $this->url . 'data/smilies/face-laugh.png" class="smiley" />',$newstr);
$newstr = str_replace(' :(', ' <img src="' . $this->url . 'data/smilies/face-sad.png" class="smiley" />',$newstr);
$newstr = str_replace(' :0', ' <img src="' . $this->url . 'data/smilies/face-surprise.png" class="smiley" />',$newstr);
$newstr = str_replace(' :o', ' <img src="' . $this->url . 'data/smilies/face-surprise.png" class="smiley" />',$newstr);
$newstr = str_replace(' :O', ' <img src="' . $this->url . 'data/smilies/face-surprise.png" class="smiley" />',$newstr);
$newstr = str_replace(' :/', ' <img src="' . $this->url . 'data/smilies/face-uncertain.png" class="smiley" />',$newstr);
$newstr = str_replace(' ;)', ' <img src="' . $this->url . 'data/smilies/face-wink.png" class="smiley" />',$newstr);
$bbcode = array(
'/\[b\](.+?)\[\/b\]/is',
171,7 → 208,13
'/\[i\](.+?)\[\/i\]/is',
'/\[u\](.+?)\[\/u\]/is',
'/\[url\](.+?)\[\/url\]/is',
'/\[code\](.+?)\[\/code\]/is'
'/\[url=(.+?)\](.+?)\[\/url\]/is',
'/\[code\](.+?)\[\/code\]/is',
'/\[img\](.+?)\[\/img\]/is',
'/\[ul\](.+?)\[\/ul\]/is',
'/\[ol\](.+?)\[\/ol\]/is',
'/\[li\](.+?)\[\/li\]/is',
'/\[mono\](.+?)\[\/mono\]/is'
);
 
$html = array(
179,7 → 222,13
'<i>$1</i>',
'<u>$1</u>',
'<a href="$1">$1</a>',
'<div class="code">$1</div>'
'<a href="$1">$2</a>',
'<div class="code">$1</div>',
'<img src="$1" />',
'<ul>$1</ul>',
'<ol>$1</ol>',
'<li>$1</li>',
'<span style="font-family: Droid Sans Mono, monospace, fixed; margin-left: 1em; margin-right: 1em;">$1</span>',
);
 
$newstr = preg_replace($bbcode, $html, $newstr);
251,6 → 300,24
return false;
}
function checkChallengeStatus($challengeID, $previous, $next)
{
$currentChallengeID = $this->getLoggedInUser()->challengeID;
if (!$this->isLoggedIn())
{
$this->redirect('index.php');
}
else if ($currentChallengeID > $challengeID)
{
$this->redirect($next . '.php');
}
else if ($currentChallengeID < $challengeID)
{
$this->redirect($previous . '.php');
}
}
function checkLoggedIn()
{
if (!$this->isLoggedIn())
264,7 → 331,7
$result = mysql_query($query);
if (!$result)
{
$this->drawError('MySQL Error: ' . mysql_error());
$this->drawError('Query Failed: ' . $query . "\n" . 'MySQL Error: ' . mysql_error());
}
return $result;
343,7 → 410,7
$post->author = $this->getUserByID($row['AuthorID']);
$post->user = $this->getUserByID($row['AuthorID']); // For some older pages
$post->title = $row['Title'];
$post->content = $this->replaceBBCode($row['Content']);
$post->content = $row['Content'];
$post->datePosted = strtotime($row['DatePosted']);
$post->category = $row['Category'];
$post->spam = $row['Spam'];
354,13 → 421,78
$this->drawError('Cannot find blog post, #' . $id);
}
function getProject($id)
{
$result = $this->query('SELECT * FROM Projects WHERE ID = ' . $id);
while ($row = mysql_fetch_array($result))
{
$project = new Project;
$project->ID = $row['ID'];
$project->author = $this->getUserByID($row['AuthorID']);
$project->title = $row['Title'];
$project->description = $row['Description'];
$project->logoURL = $row['LogoURL'];
$project->downloadURL = $row['DownloadURL'];
$project->websiteURL = $row['WebsiteURL'];
$project->latestVersion = $row['LatestVersion'];
$project->lastUpdate = strtotime($row['LastUpdate']);
return $project;
}
return false;
}
function getForumCategory($id)
{
$result = $this->query('SELECT * FROM ForumCategories WHERE ID = ' . $id);
while ($row = mysql_fetch_array($result))
{
$f = new ForumCategory;
$f->ID = $row['ID'];
$f->parent = $this->getForumCategory($row['ParentID']);
$f->title = $row['Title'];
$f->description = $row['Description'];
return $f;
}
return false;
}
function getForumPost($id)
{
$result = $this->query('SELECT * FROM ForumPosts WHERE ID = ' . $id);
while ($row = mysql_fetch_array($result))
{
$f = new ForumPost;
$f->ID = $row['ID'];
$f->author = $this->getUserByID($row['AuthorID']);
$f->category = $this->getForumCategory($row['CategoryID']);
$f->parent = $this->getForumPost($row['ParentID']);
$f->title = $row['Title'];
$f->content = $row['Content'];
$f->datePosted = strtotime($row['DatePosted']);
$f->spam = $row['Spam'];
return $f;
}
return false;
}
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);
$this->query('DELETE FROM BlogPosts WHERE ID=' . $id);
}
 
function getGetID()
395,6 → 527,7
public $password;
public $emailAddress;
public $name;
 
public $challengeID;
}
 
410,6 → 543,42
public $spam;
}
 
class Project
{
public $ID;
public $author;
public $title;
public $description;
 
 
public $logoURL;
public $downloadURL;
public $websiteURL;
public $latestVersion;
public $lastUpdate;
}
 
class ForumCategory
{
public $ID;
public $parent;
public $title;
public $description;
 
}
 
class ForumPost
{
public $id;
public $author;
public $category;
public $parent;
public $title;
public $content;
public $datePosted;
public $spam;
}
 
function write($str)
{
echo $str;
/data/favicon.png
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/data/favicon.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: data/smilies/face-laugh.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: data/smilies/face-laugh.png
===================================================================
--- data/smilies/face-laugh.png (nonexistent)
+++ data/smilies/face-laugh.png (revision 462)
/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 462)
/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 462)
/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 462)
/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 462)
/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 462)
/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 462)
/data/smilies/face-surprise.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: styles.css
===================================================================
--- styles.css (revision 145)
+++ styles.css (revision 462)
@@ -1,132 +1,185 @@
-body {
- background-color: #FFFFFF;
- color: #000000;
-
- font-family: Droid Sans, Tahoma, sans-serif;
- font-size: 11pt;
-}
-
-h1 {
- font-size: 28pt;
- margin: 6px;
- margin-top: 0px;
- color: #000089;
- border-bottom: 1px solid #000000;
-}
-
-h2 {
- font-size: 20pt;
- margin: 6px;
- margin-left: 8px;
- color: #00004B;
-}
-
-h3 {
- font-size: 16pt;
- margin: 6px;
- margin-left: 10px;
- color: #000055;
-}
-
-h4 {
- font-size: 12pt;
- margin: 6px;
- margin-left: 12px;
- color: #00005F;
-}
-
-h5 {
- font-size: 10pt;
- margin: 6px;
- margin-left: 14px;
- color: #000069;
-}
-
-p, table, span {
- font-size: 11pt;
- margin: 6px;
- margin-left: 16px;
-}
-
-a {
- text-decoration: none;
- color: #000050;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-input {
- border: 1px solid #000000;
- color: #000000;
- background-color: #B5D7FF;
-}
-
-table {
- border: 1px solid #222222;
-}
-
-td {
- padding: 3px;
- border: 1px solid #888888;
-}
-
-.sidebar {
- left: 0px;
- top: 0px;
- position: fixed;
- padding: 0px;
- padding-left: 32px;
- border-right: 1px solid #000089;
- background-color: #FFFF73;
- background-image: url('data/sidebar-gradient.png');
- background-repeat: repeat-x;
- background-position: center bottom;
-
-}
-
-.sidebar-header {
- left: 0px;
- width: 140px;
- padding: 6px;
- text-align: right;
-}
-
-.sidebar-menu {
- text-align: right;
- padding: 6px;
-}
-
-.sidebar-menu h3 {
- margin: 6px;
-}
-
-.sidebar-menu p {
- font-size: 12pt;
- margin: 4px;
-}
-
-.content {
- left: 200px;
- top: 0px;
- position: absolute;
- margin-right: 32px;
-}
-
-.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;
- font-size: 10pt;
-}
-
+body {
+ background-color: #FFFFFF;
+ color: #000000;
+
+ font-family: Droid Sans, Tahoma, sans-serif;
+ font-size: 10pt;
+
+ margin: 0px;
+ padding: 0px;
+}
+
+h1 {
+ font-size: 28pt;
+ margin: 8px;
+ margin-top: 0px;
+ color: #FFFFFF;
+ border-bottom: 1px solid #FFFFFF;
+}
+
+h2 {
+ font-size: 20pt;
+ margin: 8px;
+ margin-left: 8px;
+ color: #00004B;
+}
+
+h3 {
+ font-size: 16pt;
+ margin: 8px;
+ margin-left: 10px;
+ color: #000055;
+}
+
+h4 {
+ font-size: 12pt;
+ margin: 8px;
+ margin-left: 12px;
+ color: #00005F;
+}
+
+h5 {
+ font-size: 10pt;
+ margin: 8px;
+ margin-left: 14px;
+ color: #000069;
+}
+
+p, table, span {
+ font-size: 10pt;
+ margin: 8px;
+ margin-left: 16px;
+}
+
+a {
+ text-decoration: none;
+ color: #000050;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+input {
+ border: 1px solid #000000;
+ color: #000000;
+ background-color: #B5D7FF;
+ width: 500px;
+}
+
+table {
+ border: 1px solid #222222;
+}
+
+td {
+ padding: 3px;
+ border: 1px solid #888888;
+}
+
+img {
+ border: 2px solid #333333;
+}
+
+textarea {
+ width: 500px;
+ height: 300px;
+}
+
+.smiley {
+ border: 0px;
+ vertical-align: middle;
+}
+
+.sidebar {
+ top: 0px;
+ left: 0px;
+ position: fixed;
+ float: left;
+ width: 156px;
+ padding: 0px;
+ padding-left: 32px;
+ border-right: 2px solid #000049;
+ background-color: #032865;
+ color: #FFFFFF;
+ height: 100%;
+}
+
+.sidebar-header {
+ width: 140px;
+ padding: 6px;
+ text-align: right;
+}
+
+.sidebar-menu {
+ text-align: right;
+ padding: 6px;
+ color: #FFFFFF;
+}
+
+.sidebar-menu h3 {
+ margin: 6px;
+ color: #FFFFFF;
+}
+
+.sidebar-menu p {
+ font-size: 12pt;
+ margin: 4px;
+}
+
+.sidebar-menu a {
+ color: #FFFFFF;
+}
+
+.content {
+ top: 0px;
+ left: 190px;
+ position: absolute;
+ margin-right: 32px;
+}
+
+.bold {
+ font-weight: bold;
+}
+
+.italic {
+ font-style: italic;
+}
+
+.indent {
+ margin-left: 14px;
+ border-left: 1px solid #BBBBBB;
+}
+
+.code {
+ border-top: 2px solid #999999;
+ border-bottom: 2px solid #999999;
+ margin: 14px;
+ background-color: #DDDDDD;
+ font-family: Droid Sans Mono, Monospace, Fixed;
+ font-size: 9px;
+ line-height: 80%;
+}
+
+.copyright {
+ color: #BBBBBB;
+ text-align: left;
+ font-size: 9pt;
+}
+
+.copyright a {
+ color: #BBBBBB;
+}
+
+.recaptchatable .recaptcha_image_cell, #recaptcha_table {
+ background-color: #4B9DE0 !important; //reCaptcha widget background color
+}
+
+#recaptcha_table {
+ border-color: #3874A4 !important; //reCaptcha widget border color
+}
+
+#recaptcha_response_field {
+ border-color: #000000 !important; //Text input field border color
+ background-color:#FFFFFF !important; //Text input field background color
+}
+
Index: index.php
===================================================================
--- index.php (revision 145)
+++ index.php (revision 462)
@@ -1,39 +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', '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();
-
-?>
+
+
+require '_taios.php';
+
+$page = new Taios_Page('Home');
+$page->drawHeader();
+write('

Pages

');
+$page->drawMenuItem('Biggles', '/~biggles/');
+$page->drawMenuItem('FredFace', '/~freddie/');
+$page->drawMenuItem('Muzer', '/~muzer/');
+$page->drawMenuItem('TomMan', '/~tom/');
+$page->drawMiddle();
+
+?>
+
+

Welcome to Tim32!

+

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

+
+
+

Latest Blog Posts

+

Rss Feed

+
+
+
+$ids = $page->findIDs('BlogPosts', 'WHERE ParentID = -1 ORDER BY DatePosted DESC');
+for ($i = 0; $i < 4 && $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('

' . $page->replaceBBCode($post->content) . '

');
+ write('
');
+}
+
+$page->drawFooter();
+
+?>
Index: register.php
===================================================================
--- register.php (revision 145)
+++ register.php (revision 462)
@@ -1,56 +1,73 @@
-
-
-require '_taios.php';
-
-$page = new Taios_Page('Register');
-$page->drawHeader();
-$page->drawMiddle();
-
-?>
-
-

Here you can create an account with Tim32.

-
-
-
-
-if (isset($_GET['error']))
-{
- $page->drawError($_GET['error'], false);
-}
-
-?>
-
-
-: :
-
-Username:
-
-
-
-Password:
-
-
-
-Repeat Password:
-
-
-
-Email Address
-
-
-
-Name
-
-
-
-
-
-
-
-
-
-
-
-$page->drawFooter();
-
-?>
+
+
+require '_taios.php';
+require_once '_recaptchalib.php';
+
+$page = new Taios_Page('Register');
+$page->drawHeader();
+$page->drawMiddle();
+
+?>
+
+

Here you can create an account with Tim32.

+
+
+
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+?>
+
+
+
+
+
+
+Username:
+
+
+
+Password:
+
+
+
+Repeat Password:
+
+
+
+Email Address:
+
+
+
+Name:
+
+
+
+
+
+
+
+3 + 9 * 8
+
+
+
+
+
+
+
+
+

By registering to Tim32, you agree to be reasonable in all your suggestion/accusations and advoid subjectivity. Suvbjective posts/comments are subject to removal by a Subject of the Tim32 Admins.

+
+
+
+
+$page->drawFooter();
+
+?>
Index: register-do.php
===================================================================
--- register-do.php (revision 145)
+++ register-do.php (revision 462)
@@ -1,34 +1,49 @@
-
-
-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');
-
-?>
+
+
+require '_taios.php';
+require_once '_recaptchalib.php';
+
+$page = new Taios_Page('Login');
+
+$username = $_POST['username'];
+$password = $_POST['password'];
+$password2 = $_POST['password2'];
+$email = $_POST['email'];
+$name = $_POST['name'];
+$maths = $_POST['maths'];
+
+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');
+}
+if ($maths != '75')
+{
+ $page->redirect('register.php?error=Incorrect maths answer');
+}
+
+$resp = recaptcha_check_answer(RECAPTCHA_PRIVATEKEY, $_SERVER["REMOTE_ADDR"],
+ $_POST["recaptcha_challenge_field"],
+ $_POST["recaptcha_response_field"]);
+
+if (!$resp->is_valid)
+{
+ $page->redirect('register.php?error=Incorrect reCAPTCHA response');
+}
+
+$page->query('INSERT INTO Users (AccessID, Username, Password, EmailAddress, Name, ChallengeID) VALUES (2, "' . $username . '", "' . sha1($password) . '", "' . $email . '", "' . $name . '", 0)');
+
+$page->redirect('login.php');
+
+?>
Index: photos/album.php
===================================================================
--- photos/album.php (nonexistent)
+++ photos/album.php (revision 462)
@@ -0,0 +1,115 @@
+
+
+require '../_taios.php';
+
+function getImageSizes($sourceImageFilePath, $maxResizeWidth, $maxResizeHeight) {
+
+ $size = getimagesize($sourceImageFilePath);
+ $origWidth = $size[0];
+ $origHeight = $size[1];
+
+ $resizedWidth = $origWidth;
+ $resizedHeight = $origHeight;
+
+ if ($resizedWidth > $maxResizeWidth)
+ {
+ $aspectRatio = $maxResizeWidth / $resizedWidth;
+ $resizedWidth = round($aspectRatio * $resizedWidth);
+ $resizedHeight = round($aspectRatio * $resizedHeight);
+ }
+ if ($resizedHeight > $maxResizeHeight)
+ {
+ $aspectRatio = $maxResizeHeight / $resizedHeight;
+ $resizedWidth = round($aspectRatio * $resizedWidth);
+ $resizedHeight = round($aspectRatio * $resizedHeight);
+ }
+
+ return array($resizedWidth, $resizedHeight);
+}
+
+$page = new Taios_Page('Photo Albums', '../');
+
+$dirName = $_GET['dir'];
+if (empty($dirName))
+{
+ $page->redirect('index.php');
+}
+
+$page->drawHeader();
+write('

RSS

');
+$page->drawMenuItem('RSS Feed', 'photos/rss.php?dir=' . $dirName);
+$page->drawMiddle();
+
+write('

Back to Photos


');
+
+if (file_exists("albums/" . $dirName . "/description.txt"))
+{
+ write('

' . $page->replaceBBCode(file_get_contents("albums/" . $dirName . "/description.txt")) . '


');
+}
+
+write('');');');');');
+write('
+
+$directory = "albums/" . $dirName . "/";
+$sortOrder = "newestFirst";
+
+$results = array();
+$handler = opendir($directory);
+
+while ($file = readdir($handler))
+{
+ if ($file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess" && getimagesize($directory . $file))
+ {
+ $currentModified = filectime($directory . $file);
+ $file_names[] = $file;
+ $file_dates[] = $currentModified;
+ }
+}
+
+closedir($handler);
+
+if ($sortOrder == "newestFirst")
+{
+ arsort($file_dates);
+}
+else
+{
+ asort($file_dates);
+}
+
+$file_names_Array = array_keys($file_dates);
+foreach ($file_names_Array as $idx => $name) $name=$file_names[$name];
+$file_dates = array_merge($file_dates);
+
+$i = 0;
+
+$indexInArray = 0;
+$i = 0;
+
+foreach ($file_dates as $$file_dates)
+{
+ $j = $file_names_Array[$indexInArray];
+ $file = $file_names[$j];
+
+ if ($i >= 3)
+ {
+ write('
+ $i = 0;
+ }
+
+ $filename = $directory . $file;
+ $size = getImageSizes($filename, 280, 260);
+
+ write('
+
+ $i++;
+ $indexInArray++;
+}
+
+write('
+write('
');
+
+$page->drawFooter();
+
+?>
+
Index: photos/rss.php
===================================================================
--- photos/rss.php (nonexistent)
+++ photos/rss.php (revision 462)
@@ -0,0 +1,76 @@
+
+
+require '../_taios.php';
+
+header("Content-type: application/rss+xml");
+
+$page = new Taios_Page('Photos RSS Feed', '../');
+
+$dirName = $_GET['dir'];
+if (empty($dirName))
+{
+ $dirName = "Lassitor";
+}
+
+write('');
+write('');
+write('');
+write('Tim32 Photo RSS - ' . $dirName . '');
+write('This is the RSS feed for the Tim32 Photos.');
+write('http://tim32.org/photos/album.php?dir=' . $dirName . '');
+
+$directory = "albums/" . $dirName . "/";
+$sortOrder = "newestFirst";
+
+$results = array();
+$handler = opendir($directory);
+
+while ($file = readdir($handler))
+{
+ if ($file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess" && getimagesize($directory . $file))
+ {
+ $currentModified = filectime($directory . $file);
+ $file_names[] = $file;
+ $file_dates[] = $currentModified;
+ }
+}
+
+closedir($handler);
+
+if ($sortOrder == "newestFirst")
+{
+ arsort($file_dates);
+}
+else
+{
+ asort($file_dates);
+}
+
+$file_names_Array = array_keys($file_dates);
+foreach ($file_names_Array as $idx => $name) $name=$file_names[$name];
+$file_dates = array_merge($file_dates);
+
+$indexInArray = 0;
+
+foreach ($file_dates as $date)
+{
+ $j = $file_names_Array[$indexInArray];
+ $file = $file_names[$j];
+
+ $filename = $directory . $file;
+
+ write('');
+ write('' . $file . '');
+ write('http://tim32.org/photos/' . str_replace(" ", "%20", $filename) . '');
+ write('id_' . $file . '');
+ write('' . date('D, d M Y H:i:s O', $date). '');
+ write(']]>');
+ write('');
+
+ $indexInArray++;
+}
+
+write('');
+write('');
+
+?>
Index: photos/index.php
===================================================================
--- photos/index.php (revision 145)
+++ photos/index.php (revision 462)
@@ -1,14 +1,31 @@
-
-
-require '../_taios.php';
-
-$page = new Taios_Page('Photos', '../');
-$page->drawHeader();
-$page->drawMiddle();
-
-write('

This page is currently under construction.

');
-
-$page->drawFooter();
-
-?>
-
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Photo Albums', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+write('

Here we have all sorts of photos from Tim32.


');
+
+$dirs = array();
+$dir = dir('albums/');
+while (($file = $dir->read()) !== false)
+{
+ array_push($dirs, $file);
+}
+
+asort($dirs);
+
+foreach ($dirs as $file)
+{
+ if ($file[0] != '.')
+ {
+ write('

' . $file . '

');
+ }
+}
+
+$page->drawFooter();
+
+?>
+
Index: photos/albums/Lassitor/Lassitor.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: photos/albums/Lassitor/Lassitor.png
===================================================================
--- photos/albums/Lassitor/Lassitor.png (nonexistent)
+++ photos/albums/Lassitor/Lassitor.png (revision 462)
/photos/albums/Lassitor/Lassitor.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: photos/albums/Lassitor/Lassitor-3d.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: photos/albums/Lassitor/Lassitor-3d.png
===================================================================
--- photos/albums/Lassitor/Lassitor-3d.png (nonexistent)
+++ photos/albums/Lassitor/Lassitor-3d.png (revision 462)
/photos/albums/Lassitor/Lassitor-3d.png
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 404.php
===================================================================
--- 404.php (revision 145)
+++ 404.php (revision 462)
@@ -1,22 +1,31 @@
-
-
-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.

-
-$page->drawFooter();
-
-?>
+
+
+header('Status: 404 Not Found');
+
+require '_taios.php';
+
+$page = new Taios_Page('404 - Page not found', '/');
+$page->drawHeader();
+write('

Pages

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

404 - Page not found

+

The page you requested could not be found.

+
+
+

Useful Links

+
+
+
+$page->drawMenuItem('Tim32 Homepage', 'index.php');
+$page->drawMenuItem('Youfail.org', 'http://youfail.org');
+
+$page->drawFooter();
+
+?>
Index: blog/rss.php
===================================================================
--- blog/rss.php (nonexistent)
+++ blog/rss.php (revision 462)
@@ -0,0 +1,34 @@
+
+
+require '../_taios.php';
+
+header("Content-type: application/rss+xml");
+
+$page = new Taios_Page('Blog RSS Feed', '../');
+
+write('');
+write('');
+write('');
+write('Tim32 Blog RSS');
+write('This is the RSS feed for the Tim32 Blog.');
+write('http://tim32.org/blog/');
+
+$ids = $page->findIDs('BlogPosts', 'WHERE ParentID = -1 ORDER BY DatePosted DESC');
+for ($i = 0; $i < count($ids); $i++)
+{
+ $id = $ids[$i];
+ $post = $page->getBlogPost($id);
+
+ write('');
+ write('' . $post->title . '');
+ write('http://tim32.org/blog/post.php?id=' . $id . '');
+ write('' . $id . '');
+ write('' . date('D, d M Y H:i:s O', $post->datePosted). '');
+ write('replaceBBCode($post->content) . ']]>');
+ write('');
+}
+
+write('');
+write('');
+
+?>
Index: blog/index.php
===================================================================
--- blog/index.php (revision 145)
+++ blog/index.php (revision 462)
@@ -5,6 +5,8 @@
$page = new Taios_Page('Blog Posts', '../');
$page->drawHeader();
$page->drawBlogCategoriesMenu();
+write('

RSS

');
+$page->drawMenuItem('RSS Feed', 'blog/rss.php');
$page->drawMiddle();
if ($page->isUserGM($page->getLoggedInUser()))
@@ -31,7 +33,7 @@
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->replaceBBCode($post->content) . '

');
write('
');
}
/blog/edit-post.php
0,0 → 1,93
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Edit Post', '../');
 
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('post.php?id=' . $id);
}
}
 
$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"><?php echo $post->content; ?></textarea></td>
</tr>
<tr>
<td class="bold">Catagory: </td>
<td><input type="text" name="category" value="<?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="Edit" /></td>
</tr>
</table>
</form>
 
<?php
 
$page->drawFooter();
 
?>
 
/blog/post.php
4,7 → 4,7
 
$page = new Taios_Page('Blog Posts', '../');
 
if (empty($_GET['id']))
if (empty($_GET['id']) || $_GET['id'] == -1)
{
$page->redirect('index.php');
}
/blog/add-post.php
1,91 → 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
{
$page->query('INSERT INTO BlogPosts VALUES(0, ' . $parentID . ', "' . $page->getLoggedInUser()->ID . '", "' . $title . '", "' . $content . '", NOW(), "' . $category . '", 0)');
$page->redirect('index.php');
}
}
 
$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();
 
?>
<?php
 
function getParentID()
{
if (isset($_GET['id']))
{
return $_GET['id'];
}
else
{
return -1;
}
}
 
require '../_taios.php';
 
$page = new Taios_Page('Add Post', '../');
$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->getLoggedInUser()->accessID >= 2 && $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();
 
?>
/wiki/index.php
1,14 → 1,64
<?php
 
require '../_taios.php';
 
$page = new Taios_Page('Wiki', '../');
$page->drawHeader();
$page->drawMiddle();
 
write('<br /><p class="bold">This page is currently under construction.</p>');
 
$page->drawFooter();
 
?>
 
<?php
 
function endswith($string, $test) {
$strlen = strlen($string);
$testlen = strlen($test);
if ($testlen > $strlen) return false;
return substr_compare($string, $test, -$testlen) === 0;
}
 
require '../_taios.php';
 
$pageName = $_GET['page'];
if (empty($pageName))
{
$pageName = 'Index';
}
 
$page = new Taios_Page('Wiki - ' . $pageName, '../');
 
if (isset($_GET['random']))
{
$results = array();
$handler = opendir('pages/');
while ($file = readdir($handler))
{
if ($file != '.' && $file != '..' && endswith($file, ".txt"))
{
$results[] = substr($file, 0, count($file) - 5);
}
}
$index = rand() % count($results);
$result = $results[$index];
$page->redirect('index.php?page=' . $result);
}
 
$page->drawHeader();
write('<h3>Wiki</h3>');
$page->drawMenuItem('Index', 'wiki/index.php');
$page->drawMenuItem('Random Page', 'wiki/index.php?random');
$page->drawMiddle();
 
if ($page->isUserGM($page->getLoggedInUser()))
{
write('<p class="bold"><a href="edit.php?page=' . $pageName . '">Edit Page</a></p><br />');
}
 
$filename = 'pages/' . $pageName . '.txt';
 
$fp = @fopen($filename, 'r');
if ($fp)
{
write('<p>' . $page->replaceBBCode(fread($fp, filesize($filename))) . '</p>');
fclose($fp);
}
else
{
write('<p>This page is empty.</p>');
}
 
$page->drawFooter();
 
?>
 
/wiki/edit-do.php
0,0 → 1,40
<?php
 
require '../_taios.php';
 
$pageName = $_POST['page'];
if (empty($pageName))
{
$pageName = 'Index';
}
 
$page = new Taios_Page('Edit Page - ' . $pageName, '../');
 
$page->checkLoggedIn();
 
if ($page->isUserGM($page->getLoggedInUser()))
{
$filename = 'pages/' . $pageName . '.txt';
$fp = @fopen($filename, 'w');
if ($fp)
{
fwrite($fp, $_POST['content']);
fclose($fp);
$page->redirect('index.php?page=' . $pageName);
}
else
{
$page->drawError('Failed to write file.');
}
}
else
{
$page->drawError('You do not have permission to access this page.');
}
 
$page->drawFooter();
 
?>
 
/wiki/edit.php
0,0 → 1,54
<?php
 
require '../_taios.php';
 
$pageName = $_GET['page'];
if (empty($pageName))
{
$pageName = 'Index';
}
 
$page = new Taios_Page('Edit Page - ' . $pageName, '../');
$page->drawHeader();
$page->drawMiddle();
 
$page->checkLoggedIn();
 
if ($page->isUserGM($page->getLoggedInUser()))
{
$filename = 'pages/' . $pageName . '.txt';
$content = "";
 
$fp = @fopen($filename, 'r');
if ($fp)
{
$content = fread($fp, filesize($filename));
fclose($fp);
}
?>
 
<form action="edit-do.php" method="POST">
<input type="hidden" name="page" value="<?php echo $pageName; ?>" />
<table>
<tr>
<td><textarea name="content"><?php echo $content; ?></textarea></td>
</tr>
<tr>
<td><input type="submit" value="Edit" /></td>
</tr>
</table>
</form>
 
<?php
}
else
{
$page->drawError('You do not have permission to access this page.');
}
 
$page->drawFooter();
 
?>
 
/wiki/pages/Index.txt
0,0 → 1,4
[b]Welcome to the Tim32 Wiki![/b]
 
Here you can talk about pretty much anything!
 
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: challenge/index.php
===================================================================
--- challenge/index.php (nonexistent)
+++ challenge/index.php (revision 462)
@@ -0,0 +1,23 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Tim32 Challenge', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+if ($page->isLoggedIn())
+{
+ write('

Take the Tim32 challenge here!

');
+ write('

Once you\'ve passed a challenge, your progress will automatically be saved.

');
+ write('

Enter!

');
+}
+else
+{
+ write('

You need to be logged in to take the Tim32 challenge.

');
+}
+
+$page->drawFooter();
+
+?>
+
Index: challenge/00.php
===================================================================
--- challenge/00.php (nonexistent)
+++ challenge/00.php (revision 462)
@@ -0,0 +1,37 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Challenge - 00', '../');
+$page->checkChallengeStatus(0, "index", "01");
+
+$page->drawHeader();
+write('

Challenge

');
+$page->drawMenuItem('Index', 'challenge/index.php');
+$page->drawMiddle();
+
+?>
+
+
+
+
+Morse:
+.. .-.. .. -.- . -- --- --- ... .
+
+
+Moose:
+
+
+
+
+
+
+
+
+
+
+
+$page->drawFooter();
+
+?>
+
Index: challenge/01.php
===================================================================
--- challenge/01.php (nonexistent)
+++ challenge/01.php (revision 462)
@@ -0,0 +1,18 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Challenge - 01', '../');
+$page->checkChallengeStatus(1, "index", "02");
+
+$page->drawHeader();
+write('

Challenge

');
+$page->drawMenuItem('Index', 'challenge/index.php');
+$page->drawMiddle();
+
+
+
+$page->drawFooter();
+
+?>
+
Index: challenge/00-do.php
===================================================================
--- challenge/00-do.php (nonexistent)
+++ challenge/00-do.php (revision 462)
@@ -0,0 +1,19 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Challenge - 00', '../');
+$page->checkChallengeStatus(0, "index", "01");
+
+if ($_POST['moose'] == 'i like moose')
+{
+ $page->query('UPDATE Users SET ChallengeID = 1 WHERE ID = ' . $page->getLoggedInUser()->ID);
+ $page->redirect('01.php');
+}
+else
+{
+ $page->redirect('index.php');
+}
+
+?>
+
Index: _recaptchalib.php
===================================================================
--- _recaptchalib.php (nonexistent)
+++ _recaptchalib.php (revision 462)
@@ -0,0 +1,277 @@
+
+/*
+ * This is a PHP library that handles calling reCAPTCHA.
+ * - Documentation and latest version
+ * http://recaptcha.net/plugins/php/
+ * - Get a reCAPTCHA API Key
+ * https://www.google.com/recaptcha/admin/create
+ * - Discussion group
+ * http://groups.google.com/group/recaptcha
+ *
+ * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * AUTHORS:
+ * Mike Crawford
+ * Ben Maurer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * The reCAPTCHA server URL's
+ */
+define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
+define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
+define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
+
+/**
+ * Encodes the given data into a query string format
+ * @param $data - array of string elements to be encoded
+ * @return string - encoded request
+ */
+function _recaptcha_qsencode ($data) {
+ $req = "";
+ foreach ( $data as $key => $value )
+ $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
+
+ // Cut the last '&'
+ $req=substr($req,0,strlen($req)-1);
+ return $req;
+}
+
+
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post($host, $path, $data, $port = 80) {
+
+ $req = _recaptcha_qsencode ($data);
+
+ $http_request = "POST $path HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+ $http_request .= "Content-Length: " . strlen($req) . "\r\n";
+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+ $http_request .= "\r\n";
+ $http_request .= $req;
+
+ $response = '';
+ if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
+ die ('Could not open socket');
+ }
+
+ fwrite($fs, $http_request);
+
+ while ( !feof($fs) )
+ $response .= fgets($fs, 1160); // One TCP-IP packet
+ fclose($fs);
+ $response = explode("\r\n\r\n", $response, 2);
+
+ return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
+{
+ if ($pubkey == null || $pubkey == '') {
+ die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create");
+ }
+
+ if ($use_ssl) {
+ $server = RECAPTCHA_API_SECURE_SERVER;
+ } else {
+ $server = RECAPTCHA_API_SERVER;
+ }
+
+ $errorpart = "";
+ if ($error) {
+ $errorpart = "&error=" . $error;
+ }
+ return '
+
+
+
+
+
+ ';
+}
+
+
+
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+ var $is_valid;
+ var $error;
+}
+
+
+/**
+ * Calls an HTTP POST function to verify if the user's guess was correct
+ * @param string $privkey
+ * @param string $remoteip
+ * @param string $challenge
+ * @param string $response
+ * @param array $extra_params an array of extra variables to post to the server
+ * @return ReCaptchaResponse
+ */
+function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
+{
+ if ($privkey == null || $privkey == '') {
+ die ("To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create");
+ }
+
+ if ($remoteip == null || $remoteip == '') {
+ die ("For security reasons, you must pass the remote ip to reCAPTCHA");
+ }
+
+
+
+ //discard spam submissions
+ if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
+ $recaptcha_response = new ReCaptchaResponse();
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = 'incorrect-captcha-sol';
+ return $recaptcha_response;
+ }
+
+ $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
+ array (
+ 'privatekey' => $privkey,
+ 'remoteip' => $remoteip,
+ 'challenge' => $challenge,
+ 'response' => $response
+ ) + $extra_params
+ );
+
+ $answers = explode ("\n", $response [1]);
+ $recaptcha_response = new ReCaptchaResponse();
+
+ if (trim ($answers [0]) == 'true') {
+ $recaptcha_response->is_valid = true;
+ }
+ else {
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = $answers [1];
+ }
+ return $recaptcha_response;
+
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url ($domain = null, $appname = null) {
+ return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
+}
+
+function _recaptcha_aes_pad($val) {
+ $block_size = 16;
+ $numpad = $block_size - (strlen ($val) % $block_size);
+ return str_pad($val, strlen ($val) + $numpad, chr($numpad));
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt($val,$ky) {
+ if (! function_exists ("mcrypt_encrypt")) {
+ die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
+ }
+ $mode=MCRYPT_MODE_CBC;
+ $enc=MCRYPT_RIJNDAEL_128;
+ $val=_recaptcha_aes_pad($val);
+ return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
+}
+
+
+function _recaptcha_mailhide_urlbase64 ($x) {
+ return strtr(base64_encode ($x), '+/', '-_');
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url($pubkey, $privkey, $email) {
+ if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
+ die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+ "you can do so at http://www.google.com/recaptcha/mailhide/apikey");
+ }
+
+
+ $ky = pack('H*', $privkey);
+ $cryptmail = _recaptcha_aes_encrypt ($email, $ky);
+
+ return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts ($email) {
+ $arr = preg_split("/@/", $email );
+
+ if (strlen ($arr[0]) <= 4) {
+ $arr[0] = substr ($arr[0], 0, 1);
+ } else if (strlen ($arr[0]) <= 6) {
+ $arr[0] = substr ($arr[0], 0, 3);
+ } else {
+ $arr[0] = substr ($arr[0], 0, 4);
+ }
+ return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://www.google.com/recaptcha/mailhide/apikey
+ */
+function recaptcha_mailhide_html($pubkey, $privkey, $email) {
+ $emailparts = _recaptcha_mailhide_email_parts ($email);
+ $url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
+
+ return htmlentities($emailparts[0]) . "...@" . htmlentities ($emailparts [1]);
+
+}
+
+
+?>
Index: admin/all-accounts.php
===================================================================
--- admin/all-accounts.php (revision 145)
+++ admin/all-accounts.php (revision 462)
@@ -1,51 +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();
-
-?>
-
+
+
+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('SHA1 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
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/all-forum-posts.php
===================================================================
--- admin/all-forum-posts.php (nonexistent)
+++ admin/all-forum-posts.php (revision 462)
@@ -0,0 +1,67 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Manage All Forum Posts', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ write('

Use this to manage all the forum categories on the Tim32 Website.


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

Use this to manage all the forum categories on the Tim32 Website.


');
+
+ write('');');');');');');');');');');');');');');
+ write('
+ write('ID
+ write('Parent
+ write('Title
+ write('Description
+ write('
+
+ $ids = $page->findIDs('ForumCategories');
+ for ($i = 0; $i < count($ids); $i++)
+ {
+ $cat = $page->getForumCategory($ids[$i]);
+ write('
+ write('' . $cat->ID . '
+ if (!$cat->parent)
+ {
+ write('No Parent
+ }
+ else
+ {
+ write('' . $cat->parent->title . '
+ }
+ write('' . $cat->title . '
+ write('' . $cat->description . '
+ write('
+ }
+
+ write('
');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/index.php
===================================================================
--- admin/index.php (revision 145)
+++ admin/index.php (revision 462)
@@ -1,27 +1,26 @@
-
-
-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();
-
-?>
-
+
+
+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 Posts

');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/all-projects.php
===================================================================
--- admin/all-projects.php (nonexistent)
+++ admin/all-projects.php (revision 462)
@@ -0,0 +1,55 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Manage All Projects', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ write('

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


');
+
+ write('');');');');');');');');');');');');');');');');');');');');');');');
+ write('
+ write('ID
+ write('Author
+ write('Title
+ write('Description
+ write('Logo
+ write('Download
+ write('Website
+ write('Latest Version
+ write('Last Update
+ write('
+
+ $ids = $page->findIDs('Projects');
+ for ($i = 0; $i < count($ids); $i++)
+ {
+ $project = $page->getProject($ids[$i]);
+ write('
+ write('' . $project->ID . '
+ write('' . $project->author->name . '
+ write('' . $project->title . '
+ write('' . str_replace("\n", '
', $project->description) . '
+ write('
+ write('Link
+ write('Link
+ write('' . $project->latestVersion . '
+ write('' . date('j/m/Y H:i', $project->lastUpdate) . '
+ write('
+ }
+
+ write('
');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/all-blog-posts.php
===================================================================
--- admin/all-blog-posts.php (revision 145)
+++ admin/all-blog-posts.php (revision 462)
@@ -1,60 +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();
-
-?>
-
+
+
+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', 'ORDER BY DatePosted DESC');
+ 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('' . str_replace("\n", '
', $post->content) . '
+ write('' . date('j/m/Y H:i', $post->datePosted) . '
+ write('' . $post->category . '
+ write('' . $post->spam . '
+ write('
+ }
+
+ write('
');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/account.php
===================================================================
--- admin/account.php (revision 145)
+++ admin/account.php (revision 462)
@@ -1,60 +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();
-
-?>
-
+
+
+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)
+ {
+ $page->drawError('No such user, #' . $userID);
+ }
+ else
+ {
+ $page->drawError('You do not have permission to access this page.');
+ }
+}
+
+$page->drawFooter();
+
+?>
+
Index: admin/account-do.php
===================================================================
--- admin/account-do.php (revision 145)
+++ admin/account-do.php (revision 462)
@@ -1,53 +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);
-
-?>
-
+
+
+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)
+ {
+ $page->drawError('No such user, #' . $userID);
+ }
+ else
+ {
+ $page->drawError('You do not have permission to access this page.');
+ }
+}
+
+$page->redirect('account.php?id=' . $userID);
+
+?>
+
Index: forums/index.php
===================================================================
--- forums/index.php (revision 145)
+++ forums/index.php (revision 462)
@@ -1,14 +1,81 @@
-
-
-require '../_taios.php';
-
-$page = new Taios_Page('Forums', '../');
-$page->drawHeader();
-$page->drawMiddle();
-
-write('

This page is currently under construction.

');
-
-$page->drawFooter();
-
-?>
-
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Forums', '../');
+
+$parentID = $_GET['parentID'];
+if (empty($parentID))
+{
+ $parentID = -1;
+}
+else if ($parentID != -1)
+{
+ $page->title = $page->getForumCategory($parentID)->title;
+}
+
+$page->drawHeader();
+$page->drawMiddle();
+
+write('

The forums are still under construction.

');
+
+write('

');

+if ($parentID != -1)
+{
+ write('Back to root');
+}
+if ($page->isLoggedIn())
+{
+ if ($parentID != -1)
+ {
+ write(' · ');
+ }
+ write('Add Post');
+}
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ if ($page->isLoggedIn())
+ {
+ write(' · ');
+ }
+ write('Add Category');
+}
+write('


');
+
+$ids = $page->findIDs('ForumCategories', 'WHERE ParentID = ' . $parentID . ' ORDER BY Title ASC');
+
+if (count($ids) >= 1)
+{
+ write('

Categories

');
+}
+
+for ($i = 0; $i < count($ids); $i++)
+{
+ $forumCategory = $page->getForumCategory($ids[$i]);
+ write('

' . $forumCategory->title . '

');
+ write('

' . $forumCategory->description . '

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

Edit Category   ·   Delete Category

');
+ }
+ write('
');
+}
+
+$ids = $page->findIDs('ForumPosts', 'WHERE CategoryID = ' . $parentID . ' AND ParentID = -1 ORDER BY Title ASC');
+
+if (count($ids) >= 1)
+{
+ write('

Topics

');
+}
+
+for ($i = 0; $i < count($ids); $i++)
+{
+ $forumPost = $page->getForumPost($ids[$i]);
+ write('

' . $forumPost->title . '

');
+ write('
');
+}
+
+$page->drawFooter();
+
+?>
+
Index: forums/post.php
===================================================================
--- forums/post.php (nonexistent)
+++ forums/post.php (revision 462)
@@ -0,0 +1,45 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Forum Post', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$id = $page->getGetID();
+$forumPost = $page->getForumPost($id);
+write('

Back to Topics


');
+write('

' . $forumPost->title . '

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

' . $page->replaceBBCode($forumPost->content) . '

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

Post Reply');

+ if ($page->isUserAdmin($page->getLoggedInUser()) || $forumPost->author->ID == $page->getLoggedInUser()->ID)
+ {
+ write('   ·   Edit Post');
+ write('   ·   Delete Post');
+ }
+ write('

');
+}
+write('
');
+
+$ids = $page->findIDs('ForumPosts', 'WHERE ParentID = ' . $id . ' ORDER BY DatePosted ASC');
+for ($i = 0; $i < count($ids); $i++)
+{
+ $forumPost = $page->getForumPost($ids[$i]);
+ write('

' . $forumPost->title . '

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

' . $page->replaceBBCode($forumPost->content) . '

');
+ if ($page->isUserAdmin($page->getLoggedInUser()) || $forumPost->author->ID == $page->getLoggedInUser()->ID)
+ {
+ write('

Edit Post');

+ write('   ·   Delete Post

');
+ }
+ write('
');
+}
+
+$page->drawFooter();
+
+?>
+
Index: forums/delete-post-do.php
===================================================================
--- forums/delete-post-do.php (nonexistent)
+++ forums/delete-post-do.php (revision 462)
@@ -0,0 +1,30 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Delete Post', '../');
+
+$page->checkLoggedIn();
+
+$id = $page->getGetID();
+$post = $page->getForumPost($id);
+
+if (($page->isUserAdmin($page->getLoggedInUser()) || $post->author->ID == $page->getLoggedInUser()->ID) && $post)
+{
+ $page->query('DELETE FROM ForumPosts WHERE ID = ' . $id);
+ $page->redirect('index.php');
+}
+else
+{
+ if (!$post)
+ {
+ $page->drawError('No such forum post, #' . $id);
+ }
+ else
+ {
+ $page->drawError('You do not have permission to access this page.');
+ }
+}
+
+?>
+
Index: forums/add-post-do.php
===================================================================
--- forums/add-post-do.php (nonexistent)
+++ forums/add-post-do.php (revision 462)
@@ -0,0 +1,36 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Add Category', '../');
+
+$page->checkLoggedIn();
+
+$parentID = $_POST['parentID'];
+if (empty($parentID))
+{
+ $parentID = -1;
+}
+$categoryID = $_POST['categoryID'];
+if (empty($categoryID))
+{
+ $parentID = -1;
+}
+
+$title = $_POST['title'];
+$content = $_POST['content'];
+
+if (empty($title))
+{
+ $page->redirect('add-post.php?error=No Title Specified');
+}
+if (empty($title))
+{
+ $page->redirect('add-post.php?error=No Content Specified');
+}
+
+$page->query('INSERT INTO ForumPosts VALUES (0, ' .$page->getLoggedInUser()->ID . ', ' . $categoryID . ', ' . $parentID . ', "' . $title . '", "' . $content . '", NOW(), FALSE)');
+$page->redirect('index.php?parentID=' . $categoryID);
+
+?>
+
Index: forums/add-post.php
===================================================================
--- forums/add-post.php (nonexistent)
+++ forums/add-post.php (revision 462)
@@ -0,0 +1,62 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Add Post', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+$parentID = $_GET['parentID'];
+if (empty($parentID))
+{
+ $parentID = -1;
+}
+
+$categoryID = $_GET['categoryID'];
+if (empty($categoryID))
+{
+ $categoryID = -1;
+}
+
+if ($page->isLoggedIn())
+{
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+?>
+
+
+
+
+
+
+Title:
+
+
+
+Content:
+
+
+
+
+
+
+
+
+
+
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: forums/edit-category.php
===================================================================
--- forums/edit-category.php (nonexistent)
+++ forums/edit-category.php (revision 462)
@@ -0,0 +1,59 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Edit Category', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+$id = $page->getGetID();
+$cat = $page->getForumCategory($id);
+
+if ($page->isUserAdmin($page->getLoggedInUser()) && $cat)
+{
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+?>
+
+
+
+
+
+Title:
+
+
+
+Description:
+
+
+
+
+
+
+
+
+
+
+}
+else
+{
+ if (!$cat)
+ {
+ $page->drawError('No such Forum Category, #' . $id);
+ }
+ else
+ {
+ $page->drawError('You do not have permission to access this page.');
+ }
+}
+
+$page->drawFooter();
+
+?>
+
Index: forums/edit-category-do.php
===================================================================
--- forums/edit-category-do.php (nonexistent)
+++ forums/edit-category-do.php (revision 462)
@@ -0,0 +1,30 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Edit Category', '../');
+
+$page->checkLoggedIn();
+
+$id = $page->getPostID();
+
+$title = $_POST['title'];
+$description = $_POST['description'];
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ if (empty($title))
+ {
+ $page->redirect('edit-category.php?error=No Title Specified');
+ }
+
+ $page->query('UPDATE ForumCategories SET Title = "' . $title . '", Description = "' . $description . '" WHERE ID = ' . $id);
+ $page->redirect('index.php');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+?>
+
Index: forums/delete-category-do.php
===================================================================
--- forums/delete-category-do.php (nonexistent)
+++ forums/delete-category-do.php (revision 462)
@@ -0,0 +1,22 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Delete Category', '../');
+
+$page->checkLoggedIn();
+
+$id = $page->getGetID();
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ $page->query('DELETE FROM ForumCategories WHERE ID = ' . $id);
+ $page->redirect('index.php');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+?>
+
Index: forums/add-category-do.php
===================================================================
--- forums/add-category-do.php (nonexistent)
+++ forums/add-category-do.php (revision 462)
@@ -0,0 +1,34 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Add Category', '../');
+
+$page->checkLoggedIn();
+
+$parentID = $_POST['parentID'];
+if (empty($parentID))
+{
+ $parentID = -1;
+}
+
+$title = $_POST['title'];
+$description = $_POST['description'];
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+ if (empty($title))
+ {
+ $page->redirect('add-category.php?error=No Title Specified');
+ }
+
+ $page->query('INSERT INTO ForumCategories VALUES (0, ' . $parentID . ', "' . $title . '", "' . $description . '")');
+ $page->redirect('index.php?parentID=' . $parentID);
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+?>
+
Index: forums/add-category.php
===================================================================
--- forums/add-category.php (nonexistent)
+++ forums/add-category.php (revision 462)
@@ -0,0 +1,55 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Add Category', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+$parentID = $_GET['parentID'];
+if (empty($parentID))
+{
+ $parentID = -1;
+}
+
+if ($page->isUserAdmin($page->getLoggedInUser()))
+{
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+?>
+
+
+
+
+
+Title:
+
+
+
+Description:
+
+
+
+
+
+
+
+
+
+
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
+
Index: projects/edit-project.php
===================================================================
--- projects/edit-project.php (nonexistent)
+++ projects/edit-project.php (revision 462)
@@ -0,0 +1,77 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Edit Project', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+$page->checkLoggedIn();
+
+$project = $page->getProject($page->getGetID());
+if (!$project)
+{
+ $page->drawError('No such project, #' . $page->getGetID());
+}
+
+?>
+
+

Here you can edit a project from the Tim32 database.

+

Leave an input blank to keep it as it is.

+
+
+
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+if ($page->isUserAdmin($page->getLoggedInUser()) || $page->getLoggedInUser()->ID == $project->author->ID)
+{
+?>
+
+
+
+
+
+Title:
+
+
+
+Description:
+
+
+
+Logo URL:
+
+
+
+Website URL:
+
+
+
+DownloadURL:
+
+
+
+Latest Version:
+
+
+
+
+
+
+
+
+
+
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
Index: projects/index.php
===================================================================
--- projects/index.php (revision 145)
+++ projects/index.php (revision 462)
@@ -1,14 +1,60 @@
-
-
-require '../_taios.php';
-
-$page = new Taios_Page('Projects', '../');
-$page->drawHeader();
-$page->drawMiddle();
-
-write('

This page is currently under construction.

');
-
-$page->drawFooter();
-
-?>
-
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Projects', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+write('

Here you can find all the projects that are created by members of Tim32!


');
+if ($page->isUserGM($page->getLoggedInUser()))
+{
+ write('

Add Project

');
+ write('
');
+}
+
+$ids = $page->findIDs('Projects', 'ORDER BY LastUpdate DESC');
+for ($i = 0; $i < count($ids); $i++)
+{
+ $id = $ids[$i];
+ $project = $page->getProject($id);
+
+ write('

' . $project->title . '

');
+ write('');');');');
+ write('
+ write('
+ write('');
+ if (empty($project->latestVersion))
+ {
+ write('

No Releases

');
+ }
+ else
+ {
+ write('

Latest Version: ' . $project->latestVersion . '

');
+ }
+ write('

Project Author: ' . $project->author->name . '

');
+ write('

' . $page->replaceBBCode($project->description) . '

');
+ write('

');

+ if (!empty($project->websiteURL))
+ {
+ write('Website');
+ }
+ if (!empty($project->downloadURL))
+ {
+ write(' · Download');
+ }
+ write('

');
+ write('');
+ write('
+ write('
');
+ if ($page->isUserAdmin($page->getLoggedInUser()) || $user->ID == $project->author->ID)
+ {
+ write('

Edit Project    ·    Delete Project

');
+ }
+ write('
');
+}
+
+$page->drawFooter();
+
+?>
+
Index: projects/edit-project-do.php
===================================================================
--- projects/edit-project-do.php (nonexistent)
+++ projects/edit-project-do.php (revision 462)
@@ -0,0 +1,59 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Edit Project', '../');
+
+$project = $page->getProject($page->getPostID());
+if (!$project)
+{
+ $page->drawError('No such project, #' . $page->getPostID());
+}
+
+$title = $_POST['title'];
+$description = $_POST['description'];
+$logoURL = $_POST['logourl'];
+$websiteURL = $_POST['websiteurl'];
+$downloadURL = $_POST['downloadurl'];
+$latestVersion = $_POST['latestversion'];
+
+$page->checkLoggedIn();
+$user = $page->getLoggedInUser();
+
+if ($page->isUserAdmin($page->getLoggedInUser()) || $page->getLoggedInUser()->ID == $project->author->ID)
+{
+ if (!empty($title))
+ {
+ $page->query('UPDATE Projects SET Title = "' . $title . '" WHERE ID = ' . $project->ID);
+ }
+ if (!empty($description))
+ {
+ $page->query('UPDATE Projects SET Description = "' . $description . '" WHERE ID = ' . $project->ID);
+ }
+ if (!empty($logoURL))
+ {
+ $page->query('UPDATE Projects SET LogoURL = "' . $logoURL . '" WHERE ID = ' . $project->ID);
+ }
+ if (!empty($websiteURL))
+ {
+ $page->query('UPDATE Projects SET WebsiteURL = "' . $websiteURL . '" WHERE ID = ' . $project->ID);
+ }
+ if (!empty($downloadURL))
+ {
+ $page->query('UPDATE Projects SET DownloadURL = "' . $downloadURL . '" WHERE ID = ' . $project->ID);
+ }
+ if (!empty($latestVersion))
+ {
+ $page->query('UPDATE Projects SET LatestVersion = "' . $latestVersion . '" WHERE ID = ' . $project->ID);
+ }
+
+ $page->query('UPDATE Projects SET LastUpdate = NOW() WHERE ID = ' . $project->ID);
+
+ $page->redirect('index.php');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+?>
Index: projects/delete-project-do.php
===================================================================
--- projects/delete-project-do.php (nonexistent)
+++ projects/delete-project-do.php (revision 462)
@@ -0,0 +1,28 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Delete Project', '../');
+
+$page->checkLoggedIn();
+$id = $page->getGetID();
+$project = $page->getProject($id);
+
+if (($page->isUserAdmin($page->getLoggedInUser()) || $page->getLoggedInUser()->ID == $project->author->ID) && $project)
+{
+ $page->query('DELETE FROM Projects WHERE ID = ' . $id);
+ $page->redirect('index.php');
+}
+else
+{
+ if (!$project)
+ {
+ $page->drawError('No such project, #' . $id);
+ }
+ else
+ {
+ $page->drawError('You do not have permission to access this page.');
+ }
+}
+
+?>
Index: projects/add-project-do.php
===================================================================
--- projects/add-project-do.php (nonexistent)
+++ projects/add-project-do.php (revision 462)
@@ -0,0 +1,36 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Add Project', '../');
+
+$title = $_POST['title'];
+$description = $_POST['description'];
+$logoURL = $_POST['logourl'];
+$websiteURL = $_POST['websiteurl'];
+$downloadURL = $_POST['downloadurl'];
+$latestVersion = $_POST['latestversion'];
+
+$page->checkLoggedIn();
+$user = $page->getLoggedInUser();
+
+if (empty($title))
+{
+ $page->redirect('add-project.php?error=No Title Specified');
+}
+if (empty($description))
+{
+ $page->redirect('add-project.php?error=No Title Specified');
+}
+
+if ($page->isUserGM($user))
+{
+ $page->query('INSERT INTO Projects VALUES (0, ' . $user->ID . ', "' . $title . '", "' . $description . '", "' . $logoURL . '", "' . $downloadURL . '", "' . $websiteURL . '", "' . $latestVersion . '", NOW())');
+ $page->redirect('index.php');
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+?>
Index: projects/add-project.php
===================================================================
--- projects/add-project.php (nonexistent)
+++ projects/add-project.php (revision 462)
@@ -0,0 +1,69 @@
+
+
+require '../_taios.php';
+
+$page = new Taios_Page('Add Project', '../');
+$page->drawHeader();
+$page->drawMiddle();
+
+?>
+
+

Here you can add a project to the Tim32 database.

+
+
+
+
+if (isset($_GET['error']))
+{
+ $page->drawError($_GET['error'], false);
+}
+
+$page->checkLoggedIn();
+
+if ($page->isUserGM($page->getLoggedInUser()))
+{
+?>
+
+
+
+
+Title:
+
+
+
+Description:
+
+
+
+Logo URL:
+
+
+
+Website URL:
+
+
+
+DownloadURL:
+
+
+
+Latest Version:
+
+
+
+
+
+
+
+
+
+
+}
+else
+{
+ $page->drawError('You do not have permission to access this page.');
+}
+
+$page->drawFooter();
+
+?>
Index: install.sql
===================================================================
--- install.sql (revision 145)
+++ install.sql (revision 462)
@@ -1,75 +1,72 @@
-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);
+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,
+ DownloadURL TEXT,
+ WebsiteURL TEXT,
+ LatestVersion TEXT,
+ LastUpdate DATETIME,
+ PRIMARY KEY(ID)
+);
+
+CREATE TABLE ForumCategories
+(
+ ID INT NOT NUll AUTO_INCREMENT,
+ ParentID INT,
+ Title TEXT,
+ Description TEXT,
+ PRIMARY KEY(ID)
+);
+
+CREATE TABLE ForumPosts
+(
+ ID INT NOT NUll AUTO_INCREMENT,
+ AuthorID INT,
+ CategoryID INT,
+ ParentID 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);
+INSERT INTO Projects VALUES (1, 1, "TAIOS", "TAIOS (The All In One System) is a PHP based system to make the Tim32 website very self contained and altogether.", "http://websvn.kde.org/*checkout*/trunk/kdesupport/oxygen-icons/64x64/categories/applications-internet.png", "", "http://tim32.org/~tom/taios/", "SVN", NOW());
+INSERT INTO ForumCategories VALUES (1, -1, "Tim32", "Talk about Tim32 in here");
+INSERT INTO ForumCategories VALUES (2, 1, "TAIOS", "Talk about TAIOS in here");
+INSERT INTO ForumPosts VALUES (1, 1, 2, -1, "TAIOS Almost Finished", "As I speak we are currently in the process of finilising TAIOS so it works perfectly! I'm pleased to accounce that TAIOS should be ready within the next week or so! :D", NOW(), FALSE);
Index: login-do.php
===================================================================
--- login-do.php (revision 145)
+++ login-do.php (revision 462)
@@ -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 145)
+++ login.php (revision 462)
@@ -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 145)
+++ logout-do.php (revision 462)
@@ -1,6 +1,6 @@
-
-
-setcookie('Tim32_Login', '', -1, '/');
-header('Location: index.php');
-
-?>
+
+
+setcookie('Tim32_Login', '', -1, '/');
+header('Location: index.php');
+
+?>