Compare commits

...

16 Commits

181 changed files with 1864 additions and 2880 deletions

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
.env
.DS_Store
app/database.db

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018 Skylear
Copyright (c) 2018 Skylear Johnson
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@ -1,32 +0,0 @@
<footer>
<div class="box">
<div style="padding-top: 8px;">
<section class="splash">
<img src="Resources/Images/Logos/LogoV7B.png" style="width: 90%; display: block; margin: 0px auto; margin-bottom: -12px;" />
<a href="index.php?page=privacy">Privacy</a> | <a href="index.php?page=tandc">The T&amp;C</a> <br />
<p style="width: 200px; margin: 0px auto;">
Copyright &copy; 2014, Mad Splash. <br />
All trademarked stuff is the property of it's respective owner(s).
</p>
</section>
<section>
<h2>OTHER STUFFS</h2>
<ul>
<li><a href="#">Our staff</a></li>
<li><a href="#">Jobs here</a></li>
</ul>
</section>
<section>
<h2>PROJECTS</h2>
<ul>
<li><a href="index.php?page=projects&project=tbfa">Battles for Arthos</a></li>
<li><a href="index.php?page=projects&project=therpg">The RPG</a></li>
</ul>
</section>
</div>
</div>
</footer>
</body>
</html>

View File

@ -1,54 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Stuff, Community, Fun | Mad Splash!</title>
<link rel="stylesheet" href="Resources/CSS/MadSplash_v3.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/CustomFonts.css" type="text/css" />
<script src="Resources/Scripts/JavaScript/latestTweet.js"></script>
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if lte IE 7]>
<script src="js/IE8.js" type="text/javascript"></script><![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="all" href="Resources/CSS/ie6.css"/><![endif]-->
</head>
<body id="index" class="home">
<?php
include('Resources/Scripts/PHP/Library.php');
require_once('Resources/Scripts/PHP/SuperNav.php');
$display = new DisplayModule();
?>
<header>
<img class="Logo" src="Resources/Images/Logos/LogoV7.png" alt="Mad Splash" title="Mad Splash!" />
<nav>
<ul>
<li><a class="navLink" href="index.php">Home</a></li>
<li><a class="navLink" href="blog/blog.php">Blog</a></li>
<li><a class="navLink" href="http://forums.madsplash.net/">Forums</a></li>
<li class="dropdown">
<a class="dropLink" href="projects.php">Projects</a>
<div class="drop">
<section>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="projects.php?a=main&type=game">Games</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="projects.php?a=main&type=book">Books</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="projects.php?a=main&type=show">Shows</a>
</section>
<div class="clear"> </div>
</div>
</li>
</ul>
</nav>
</header>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/PerryCantTouch2.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,6 +0,0 @@
<section id="slider">
<div class="slide" style="background: url('Resources/Images/Covers/Slides/NewLogoSlide.jpg') no-repeat top center;">
<!--<a class="slideLink" href="http://the-rpg-makers.wikia.com/" target="_blank"
style="background: url('Resources/Images/Covers/SlideLinks/CIOButton.png') no-repeat top center;"></a>-->
</div>
</section>

View File

@ -1 +1,25 @@
# madsplash-tropical
# Mad Splash - Tropical
Aloha! This is a historical archive of Mad Splash in it's last Tropical iteration. The code is bad, there's no
framework, and there's very little convention. The `master` branch will remain an untouched record of the past,
and the `update` branch is being working on as a functional version of the site so you can interact with a
piece of history. 😁
## History
At the time a lot of people inspired me to make Mad Splash, and this site. This site is how I learned to code
and it was a project that took me a lot of time. I'm happy I'm able to preserve it and keep it going today.
## Known Issues
These are the known issues at the moment;
- Password hashing uses non-cryptographic salts and MD5 for hashing. It's a freakin' nightmare. This will
be updated to use argon2 going forward.
- No controllers! The site was made before I fully understood the MVC website model; there's a lot of weird
ways of handling requests and data that aren't normalized.
- Redundant code; I reimplemented a lot of default behaviors by mistake as I was following various books
and tutorials. This code will be cleaned up over time.
## Hosting
The `master` branch was built on early versions of PHP; I believe the primary being PHP 5.4 and then PHP 7.0
later on. Simply point your web server to the root folder and let it rip.
The `update` branch is being built on PHP 8.4 at the time of writing, and any deprecated code is being replaced
and I'm putting in gradual typing. Point your web server to the `public/` folder and you're good to go!

View File

@ -1,56 +0,0 @@
@font-face {
font-family: 'Bebas';
src: url('../Fonts/BebasNeue-webfont.eot');
src: url('../Fonts/BebasNeue-webfont.eot?#iefix') format('embedded-opentype'),
url('../Fonts/BebasNeue-webfont.woff') format('woff'),
url('../Fonts/BebasNeue-webfont.ttf') format('truetype'),
url('../Fonts/BebasNeue-webfont.svg#BebasNeueRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Minecraft";
src: url("../Fonts/Minecraft_font.eot?") format("eot"),
url("../Fonts/Minecraft_font.woff") format("woff"),
url("../Fonts/Minecraft_font.ttf") format("truetype"),
url("../Fonts/Minecraft_font.svg#Minecraft") format("svg");
font-weight:normal;
font-style:normal;
}
@font-face {
font-family: 'Candara';
src: url('../Fonts/candara-webfont.eot');
src: url('../Fonts/candara-webfont.eot?#iefix') format('embedded-opentype'),
url('../Fonts/candara-webfont.woff') format('woff'),
url('../Fonts/candara-webfont.ttf') format('truetype'),
url('../Fonts/candara-webfont.svg#CandaraRegular') format('svg');
}
@font-face {
font-family: 'CandaraB';
src: url('../Fonts/candarab-webfont.eot');
src: url('../Fonts/candarab-webfont.eot?#iefix') format('embedded-opentype'),
url('../Fonts/candarab-webfont.woff') format('woff'),
url('../Fonts/candarab-webfont.ttf') format('truetype'),
url('../Fonts/candarab-webfont.svg#CandaraBold') format('svg');
}
@font-face {
font-family: 'Handwriting';
src: url('../Fonts/SF_Arch_Rival-webfont.eot');
src: url('../Fonts/SF_Arch_Rival-webfont.eot?#iefix') format('embedded-opentype'),
url('../Fonts/SF_Arch_Rival-webfont.woff') format('woff'),
url('../Fonts/SF_Arch_Rival-webfont.ttf') format('truetype'),
url('../Fonts/SF_Arch_Rival-webfont.svg#sf_arch_rivalregular') format('svg');
}
@font-face {
font-family: 'ZeroNero';
src: url('../Fonts/zeronero-webfont.eot');
src: url('../Fonts/zeronero-webfont.eot?#iefix') format('embedded-opentype'),
url('../Fonts/zeronero-webfont.woff') format('woff'),
url('../Fonts/zeronero-webfont.ttf') format('truetype'),
url('../Fonts/zeronero-webfont.svg#zeroneroblack') format('svg');
}

View File

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/PerryCantTouch2.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,82 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
class Article {
private $ID;
private $Title;
private $Cover;
private $Author;
private $Content;
private $PostDate;
private $Comments;
private $Description;
public function __construct($id) {
$this->ID = $id;
$this->getArticle($id);
}
private function getArticle($id) {
$db = new DatabaseModule();
$getArticle = $db->Handle->prepare('SELECT * FROM ms_articles WHERE id = :id');
$getArticle->bindValue(':id', $id, PDO::PARAM_INT);
$getArticle->execute();
$ArticleInfo = $getArticle->fetch();
$getArticle->closeCursor();
$this->Title = $ArticleInfo['articleName'];
$this->Cover = $ArticleInfo['articleCover'];
$this->Author = $ArticleInfo['articleAuthor'];
$this->Content = $ArticleInfo['articleContent'];
$this->PostDate = betterDate($ArticleInfo['articleDate']);
$this->Comments = $ArticleInfo['articleComments'];
$this->Description = $ArticleInfo['articleDescription'];
}
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
public function update($what) {
}
}
?>

View File

@ -1,74 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
class ArticleComment {
private $ID;
private $Author;
private $Content;
private $PostDate;
private $ArticleID;
public function __construct($id) {
$this->ID = $id;
$this->getArticleComment($id);
}
private function getArticleComment($id) {
$db = new DatabaseModule();
$getArticle = $db->Handle->prepare('SELECT * FROM ms_articlecomments WHERE id = :id');
$getArticle->bindValue(':id', $id, PDO::PARAM_INT);
$getArticle->execute();
$ArticleInfo = $getArticle->fetch();
$getArticle->closeCursor();
$this->Author = $ArticleInfo['commentAuthor'];
$this->Content = $ArticleInfo['commentContent'];
$this->PostDate = betterDate($ArticleInfo['commentDate']);
$this->ArticleID = $ArticleInfo['articleID'];
}
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
public function update($what) {
}
}
?>

View File

@ -1,75 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
class EpisodeComment {
private $ID;
private $Author;
private $Content;
private $PostDate;
private $ShowID;
public function __construct($id) {
$this->ID = $id;
$this->getComment($id);
}
private function getComment($id) {
$db = new DatabaseModule();
$get = $db->Handle->prepare('SELECT * FROM episodecomments WHERE id = :id');
$get->bindValue(':id', $id, PDO::PARAM_INT);
$get->execute();
$data = $get->fetch();
$get->closeCursor();
$this->Author = $data['commentAuthor'];
$this->Content = $data['commentContent'];
$this->PostDate = betterDate($data['commentDate']);
$this->ArticleID = $data['showID'];
}
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
public function update($what) {
}
}
?>

View File

@ -1,71 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
class Project {
/* -- User info variables; used for the functions here -- */
private $ID;
private $Type;
private $Desc;
private $Title;
private $Cover;
private $LastUpdate;
/* -- User class constructor -- */
public function __construct($id) {
$this->ID = $id;
$this->getProject($id);
}
/* -- Used in the constructor to access the DB and get all the user's info and populate the variables -- */
private function getProject($id) {
// Open database connection
$db = new DatabaseModule();
// Get user information from the DB
$getProject = $db->Handle->prepare('SELECT * FROM ms_projects WHERE id = :id');
$getProject->bindValue(':id', $id, PDO::PARAM_INT); // bind $id to the placeholder
$getProject->execute();
$ProjectInfo = $getProject->fetch(); // get the results from the query
$getProject->closeCursor(); // close the SELECT query from continuing its search
// Populate the variables
$this->ID = $ProjectInfo["id"];
$this->Type = $ProjectInfo["type"];
$this->Desc = $ProjectInfo["desc"];
$this->Title = $ProjectInfo["title"];
$this->Cover = $ProjectInfo["cover"];
$this->lastUpdate = betterDate($ProjectInfo["lastUpdate"]);
}
/* -- Returns whatever info needed at the moment -- */
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
/* -- Updates a value in the DB belonging to the user -- */
public function update($what) {
}
}
?>

View File

@ -1,123 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
class Show {
private $ID;
private $Title;
private $ShowID;
private $Thumbnail;
private $Description;
private $EpisodeArray;
private $EpisodeComments;
private $db;
private $ThumbPath = "http://localhost:8888/Resources/Images/Thumbs/Show/";
public function __construct($id) {
$DBM = new DatabaseModule();
$this->db = $DBM->Handle;
$this->ShowID = $id;
$this->CommentBox = GetTemplate('comments/commentbox');
$this->CommentForm = GetTemplate('comments/commentform');
$this->getData();
$this->GetEpisodeList();
}
private function getData() {
$get = $this->db->prepare('SELECT * FROM ms_projects WHERE showid = :id');
$get->bindValue(':id', $this->ShowID, PDO::PARAM_INT); // bind $id to the placeholder
$get->execute();
$data = $get->fetch();
$get->closeCursor();
$this->ID = $data["id"];
$this->Title = $data["title"];
$this->Thumbnail = $this->ThumbPath . $data["thumbnail"];
$this->Description = $data["desc"];
}
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
public function GetEpisodeList() {
$get = $this->db->prepare("SELECT * FROM episodes WHERE `show` = :s ORDER BY id DESC");
$get->bindValue(':s', $this->ShowID, PDO::PARAM_INT);
$get->execute();
$episodes = $get->fetchAll();
$get->closeCursor();
$this->EpisodeArray = $episodes;
}
public function GetEpisodeComments($id) {
$get = $this->db->prepare('SELECT * FROM episodecomments WHERE showID = :id');
$get->bindValue(':id', $id, PDO::PARAM_INT);
$get->execute();
$data = $get->fetchAll();
$list = array();
foreach($data as $ID) {
$comment = new EpisodeComment($ID['id']);
$poster = new User($comment->Author);
$list[] = ParseTemplate($this->CommentBox, array('a' => $poster->Avatar, 'u' => $poster->Username, 'c' => BBCode(magicClean($comment->Content)), 'd' => $comment->PostDate));
}
return $list;
}
}
?>

View File

@ -1,110 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
class User {
/* -- User info variables; used for the functions here -- */
private $Email;
private $Title;
private $UserID;
private $Avatar;
private $Gender;
private $Badges;
private $AboutMe;
private $WhatsUp;
private $Username;
private $BirthDay;
private $JoinDate;
private $PostCount;
private $UserTitle;
private $Reputation;
private $isVerified;
private $MemberLevel;
/* User Database Handle */
private $DB = null;
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */
public function __construct($id) {
// Open database connection
$DM = new DatabaseModule();
$DM->createUserHandle();
$this->DB = $DM->userHandle;
$this->UserID = $id;
$this->getUser($id);
}
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */
private function getUser($id) {
$db = $this->DB;
// Get username and ID from the database
$getUser = $db->prepare('SELECT * FROM ms_users WHERE id = :id');
$getUser->bindValue(':id', $id, PDO::PARAM_INT); // bind $id to the placeholder
$getUser->execute();
$User = $getUser->fetch(); // get the results from the query
$getUser->closeCursor(); // close the SELECT query from continuing its search
// Populate the variable(s)
$this->Username = $User['username'];
$this->Title = $User['title'];
$this->Email = $User['email'];
$this->Gender = $User['gender'];
$this->Badges = $User['badges'];
$this->AboutMe = $User['blurb'];
$this->WhatsUp = $User['status'];
$this->BirthDay = $User['bday'];
$this->JoinDate = $User['joindate'];
$this->PostCount = $User['posts'];
$this->Avatar = $User['avatar'];
$this->Reputation = $User['reputation'];
$this->MemberLevel = $User['mlevel'];
}
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
public function update($what) {
}
}
?>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,124 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
/*
--- The Database Module
--- This module is for the general CRUD methods.
--- This module was crafted by Skylear. : )
--- Copyright (c) Mad Splash, 2014, all rights reserved.
*/
class DatabaseModule {
/* --- Variables - data the module needs to work with. --- */
private $Handle = null;
private $userHandle = null;
private $FHandle = null;
/* --- Constructor - creates the module's instance. --- */
public function __construct() {
$DBUsername = 'root';
$DBPassword = 'root';
$DBName = 'database';
try {
$DBHandle = new PDO('mysql: host=localhost; dbname=' . $DBName, $DBUsername, $DBPassword);
} catch(PDOException $ex) {
die("Oops, we failed to the connect to the database. The error: " . $ex->getMessage() . ".");
}
$DBHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DBHandle->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$this->Handle = $DBHandle;
}
public function createUserHandle() {
$DBUsername = 'root';
$DBPassword = 'root';
$DBName = 'database';
try {
$DBHandle = new PDO('mysql: host=localhost; dbname=' . $DBName, $DBUsername, $DBPassword);
} catch(PDOException $ex) {
die("Oops, we failed to the connect to the database. The error: " . $ex->getMessage() . ".");
}
$DBHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DBHandle->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$this->userHandle = $DBHandle;
}
public function createFHandle() {
$DBUsername = 'root';
$DBPassword = 'root';
$DBName = 'database';
try {
$DBHandle = new PDO('mysql: host=localhost; dbname=' . $DBName, $DBUsername, $DBPassword);
} catch(PDOException $ex) {
die("Oops, we failed to the connect to the database. The error: " . $ex->getMessage() . ".");
}
$DBHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DBHandle->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$this->FHandle = $DBHandle;
}
public function __get($what) {
if(property_exists($this, $what)) {
return $this->{$what};
} else {
return null;
}
}
/* --- Module Functions - the meat and purpose of the module. --- */
/* Create Table - for creating a table when need be.
* @param string $name - the name of the table to be created.
* @param string $columns - a long string containing the columns to be made.
*/
public function createTable($name, $columns) {
// No need for creating tables for the time being.
}
/* Select Data - used for getting data from the database.
* @return array $selectedRos - an array containing the data.
*/
public function getData($from, $retrieve, $condition, $limit, $orderby) {
$Handle = $this->Handle;
$query = 'SELECT ' . $retrieve . ' FROM ' . $from . ' ' . $condition . ' ' . $orderby . ' ' . $limit ;
$selectQuery = $Handle->prepare($query);
$selectQuery->execute();
$selectedRows = $selectQuery->fetchAll();
return $selectedRows;
}
public function countRows($which, $condition) {
$Handle = $this->Handle;
$query = 'SELECT COUNT(*) FROM ' . $which . ' ' . $condition;
$count = $Handle->query($query);
return $count->fetch();
}
}
?>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,104 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
if(!empty($_COOKIE['MadSplashUser'])) {
$user = explode(" ", $_COOKIE['MadSplashUser']);
echo <<<SUPERNAV
<section id="SuperNav">
<div class="left" style="padding-left: 12px;">
Heyas, <a href="#">{$user[1]}</a>! You can go to your <a href="#">User CP</a> or <a href="http://localhost:8888/Resources/Scripts/PHP/Hubs/CommunityHub.php?user={$user[0]}&action=logout">logout</a>.
</div>
<div class="right">
<a class="YouTube" href="http://youtube.com/User/MadSplashTV" target="_blank">&nbsp;</a>
<a class="Twitter" href="http://twitter.com/MadSplashStudio" target="_blank">&nbsp;</a>
<div class="CrossNav">
<img src="../Resources/Images/Icons/General/CrossNavDark.png" style="width: 28px; height: 28px;" />
<ul>
<a href="http://therpg.madsplash.net/" target="_blank">
<li class="RPG">
<img src="../Resources/Images/Logos/TheRPG.png" style="width: 38px; float: left; margin-right: 4px; margin-top: 4px;" />
<a class="RPGLink">The RPG</a> <br />
Our up-and-coming web-and-text-based RPG. Play!
</li>
</a>
<li class="footer">
<div style="padding: 4px 8px;">
Follow us here, too: <br />
<div class="right">
<a class="YouTube" href="http://youtube.com/User/MadSplashTV" target="_blank">&nbsp;</a>
<a class="Twitter" href="http://twitter.com/MadSplashStudio" target="_blank">&nbsp;</a>
</div>
<div class="clear"> </div>
</div>
</li>
</ul>
</div>
</div>
</section>
SUPERNAV;
} else {
echo <<<SUPERNAV
<section id="SuperNav">
<div class="left" style="padding-left: 12px;">
Hey there, Guest. You can <a href="http://localhost:8888/community/index.php?page=login">login</a>
or <a href="http://localhost:8888/community/index.php?page=register">register</a> here.
</div>
<div class="right">
<a class="YouTube" href="http://youtube.com/User/MadSplashTV" target="_blank">&nbsp;</a>
<a class="Twitter" href="http://twitter.com/MadSplashStudio" target="_blank">&nbsp;</a>
<div class="CrossNav">
<img src="../Resources/Images/Icons/General/CrossNavDark.png" style="width: 28px; height: 28px;" />
<ul>
<a href="http://therpg.madsplash.net/" target="_blank">
<li class="RPG">
<img src="../Resources/Images/Logos/TheRPG.png" style="width: 38px; float: left; margin-right: 4px; margin-top: 4px;" />
<a class="RPGLink">The RPG</a> <br />
Our up-and-coming web-and-text-based RPG. Play!
</li>
</a>
<li class="footer">
<div style="padding: 4px 8px;">
Follow us here, too: <br />
<div class="right">
<a class="YouTube" href="http://youtube.com/User/MadSplashTV" target="_blank">&nbsp;</a>
<a class="Twitter" href="http://twitter.com/MadSplashStudio" target="_blank">&nbsp;</a>
</div>
<div class="clear"> </div>
</div>
</li>
</ul>
</div>
</div>
</section>
SUPERNAV;
}
?>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,12 +0,0 @@
<?php
$template = <<<TMP
<form action="../Resources/Scripts/PHP/Hubs/CommunityHub.php?action=episodeComment&epID={{{epid}}}&show={{{id}}}" method="post" style="padding-left: 12px; margin-top: 36px; padding-top: 16px;">
<h3>Post a comment</h2>
<textarea name="theComment" style="width: 76%; min-height: 60px; margin-bottom: 8px; float: left;"></textarea>
<input class="blueButton" type="submit" name="postsubmit" value="POST" style="float: right;">
<div class="clear"> </div>
</form>
TMP;
?>

45
app/bootstrap.php Normal file
View File

@ -0,0 +1,45 @@
<?php
/*
///
// This is the bootstrap file; grabs all the important things the library
// used to but needed separated.
///
*/
ini_set('display_errors', 'On');
error_reporting(E_ALL);
session_start();
require_once '../app/library.php';
// ---------------------------------------------------------------------------- //
// ---------------------------------------------------------------------------- //
/// Autoloader to get all our classes.
const MAP = [
'Article' => 'models/Article.php',
'ArticleComment' => 'models/ArticleComment.php',
'EpisodeComment' => 'models/EpisodeComment.php',
'Project' => 'models/Project.php',
'Show' => 'models/Show.php',
'User' => 'models/User.php',
'Router' => 'router.php',
'Database' => 'modules/Database.php',
'CommunityModule' => 'modules/CommunityModule.php',
'DisplayModule' => 'modules/DisplayModule.php',
'ParserModule' => 'modules/ParserModule.php',
'CommunityHub' => 'hubs/CommunityHub.php'
];
spl_autoload_register(function ($class) {
if (!isset(MAP[$class])) return false;
require_once '../app/' . MAP[$class];
return true;
});
// Initialize the database handler
Database::init('../app/database.db');

View File

@ -1,20 +1,4 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
/*
///
// Author: Skylear Johnson Co-Author: None
@ -23,47 +7,6 @@ CANTTOUCH;
///
*/
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
/* This entire block here is a method to rid POST, GET and COOKIE of unwanted slashes.
// I have to give some thanks to Atli from Dream.In.Code for helping me come up with this.
// However, this should never really be used. If magic_slashes is a problem, it's time to switch servers; ASAP. */
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
function undo_magic_quotes_gpc(&$array) {
foreach($array as &$value) {
if(is_array($value)) {
undo_magic_quotes_gpc($value);
} else {
$value = stripslashes($value);
}
}
}
undo_magic_quotes_gpc($_POST);
undo_magic_quotes_gpc($_GET);
undo_magic_quotes_gpc($_COOKIE);
}
// ---------------------------------------------------------------------------- //
// ---------------------------------------------------------------------------- //
/// Includes, so we can use them elsewhere without having to call them each time.
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Classes/User.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Classes/Show.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Classes/Article.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Classes/Project.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Classes/ArticleComment.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Classes/EpisodeComment.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Modules/DisplayModule.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Modules/DatabaseModule.php");
include($_SERVER["DOCUMENT_ROOT"] . "/Resources/Scripts/PHP/Modules/CommunityModule.php");
// ---------------------------------------------------------------------------- //
// ---------------------------------------------------------------------------- //
/// Misc functions - used for who-knows-what and who-knows-when.
@ -122,69 +65,27 @@ CANTTOUCH;
// This function serves to prevent tags within HTML getting into things. It's basically a symbol cleaner.
// Kudos to Atli from Dream.In.Code for showing me htmlentities()!
function magicClean($text) {
$text = htmlentities($text, ENT_QUOTES, "UTF-8");
return $text;
return htmlentities($text, ENT_QUOTES, "UTF-8");
}
// Hash a password thousands of times using a random salt.
function hashPass($password, $salt, $username = "failure") {
for($round = 0; $round < 124363; $round++) {
$HashedPass = hash("sha512", $username . $salt . $password);
$HashedPass = hash("sha512", $username . $salt . $password);
}
return $HashedPass;
}
function generateSalt($max = 15) {
$characterList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*?";
$i = 0;
$salt = "";
while ($i < $max) {
$salt .= $characterList{mt_rand(0, (strlen($characterList) - 1))};
$i++;
}
return $salt;
function generateSalt(int $length = 15): string
{
return bin2hex(random_bytes($length));
}
// Validate the email address inputted!
function checkEmail($email) {
$isValid = true;
$atIndex = strrpos($email, "@");
if(is_bool($atIndex) && !$atIndex) {
$isValid = false;
} else {
$domain = substr($email, $atIndex + 1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if($localLen < 1 || $localLen > 64) {
$isValid = false;
} elseif($domainLen < 1 || $domainLen > 255) {
$isValid = false;
} elseif($local[0] == '.' || $local[$localLen - 1] == '.') {
$isValid = false;
} elseif(preg_match('/\\.\\./', $local)) {
$isValid = false;
} elseif(!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {
$isValid = false;
} elseif(preg_match('/\\.\\./', $domain)) {
$isValid = false;
} elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\", "", $local))) {
if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\", "", $local))) {
$isValid = false;
}
}
if ($isValid && !(checkdnsrr($domain, "MX") || checkdnsrr($domain, "A"))) {
$isValid = false;
}
}
return $isValid;
function checkEmail($email): bool
{
return filter_var($email, FILTER_VALIDATE_EMAIL) ? true : false;
}
// Simple BBCode parse function.
@ -227,18 +128,18 @@ CANTTOUCH;
'<ul>',
'</ul>',
'<li>$1</li>',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Smile.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Blank.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Bomb.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Grin.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/MegaSad.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Blank.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Huh.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Huh.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Huh.gif\' />',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Horror.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Smile.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Blank.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Bomb.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Grin.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/MegaSad.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Blank.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Huh.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Huh.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Huh.gif\' />',
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Horror.gif\' />',
'<pre class="forumCode"><span class="title"><span class="hdr">CODE</span> </span><p style="padding: 5px;">$1</p></pre>',
'<img class="Emote" src=\'../Resources/Images/Icons/Emotes/Tongue.gif\' />'
'<img class="Emote" src=\'/assets/images/Icons/Emotes/Tongue.gif\' />'
);
$rtrn = preg_replace($input, $output, $data);
@ -333,4 +234,25 @@ EDITOR;
return $template;
}
/**
* Return the path to the given template.
*/
function template(string $name): string
{
return "../app/templates/$name.php";
}
/**
* Render a template. Pass data to it - uses an output buffer to have PHP process the template instead of using
* a template engine. If you're including partials in the page, call render('partial', $data), as $data will still
* be available.
*/
function render(string $baseView, array $data = []): string
{
ob_start();
extract($data);
include template($baseView);
return ob_get_clean();
}
?>

35
app/models/Article.php Executable file
View File

@ -0,0 +1,35 @@
<?php
class Article
{
private $ID;
private $Title;
private $Cover;
private $Author;
private $Content;
private $PostDate;
private $Comments;
private $Description;
public function __construct(int $id)
{
$this->ID = $id;
$result = Database::select('articles', '*', 'WHERE id = :id', data: [':id' => $id]);
$ArticleInfo = $result->fetch();
$this->Title = $ArticleInfo['articleName'];
$this->Cover = $ArticleInfo['articleCover'];
$this->Author = $ArticleInfo['articleAuthor'];
$this->Content = $ArticleInfo['articleContent'];
$this->PostDate = betterDate($ArticleInfo['articleDate']);
$this->Comments = $ArticleInfo['articleComments'];
$this->Description = $ArticleInfo['articleDescription'];
}
public function __get($what)
{
return property_exists($this, $what) ? $this->{$what} : null;
}
}

29
app/models/ArticleComment.php Executable file
View File

@ -0,0 +1,29 @@
<?php
class ArticleComment
{
private $ID;
private $Author;
private $Content;
private $PostDate;
private $ArticleID;
public function __construct($id)
{
$this->ID = $id;
$result = Database::select('articlecomments', '*', 'WHERE id = :id', data: [':id' => $id]);
$ArticleInfo = $result->fetch();
$this->Author = $ArticleInfo['commentAuthor'];
$this->Content = $ArticleInfo['commentContent'];
$this->PostDate = betterDate($ArticleInfo['commentDate']);
$this->ArticleID = $ArticleInfo['articleID'];
}
public function __get($what)
{
return property_exists($this, $what) ? $this->{$what} : null;
}
}

29
app/models/EpisodeComment.php Executable file
View File

@ -0,0 +1,29 @@
<?php
class EpisodeComment
{
private $ID;
private $Author;
private $Content;
private $PostDate;
private $ShowID;
public function __construct($id)
{
$this->ID = $id;
$result = Database::select('episodecomments', '*', 'WHERE id = :id', data: [':id' => $id]);
$data = $result->fetch();
$this->Author = $data['commentAuthor'];
$this->Content = $data['commentContent'];
$this->PostDate = betterDate($data['commentDate']);
$this->ShowID = $data['showID'];
}
public function __get($what)
{
return property_exists($this, $what) ? $this->{$what} : null;
}
}

32
app/models/Project.php Executable file
View File

@ -0,0 +1,32 @@
<?php
class Project
{
private $ID;
private $Type;
private $Desc;
private $Title;
private $Cover;
private $LastUpdate;
public function __construct($id)
{
$this->ID = $id;
$result = Database::select('projects', '*', 'WHERE id = :id', data: [':id' => $id]);
$data = $result->fetch();
$this->ID = $data["id"];
$this->Type = $data["type"];
$this->Desc = $data["desc"];
$this->Title = $data["title"];
$this->Cover = $data["cover"];
$this->LastUpdate = betterDate($data["lastUpdate"]);
}
public function __get($what)
{
return property_exists($this, $what) ? $this->{$what} : null;
}
}

81
app/models/Show.php Executable file
View File

@ -0,0 +1,81 @@
<?php
class Show
{
private $ID;
private $Title;
private $ShowID;
private $Thumbnail;
private $Description;
private $EpisodeArray;
private $EpisodeComments;
private $ThumbPath = "/assets/images/Thumbs/Show/";
public string $CommentBox;
public string $CommentForm;
public function __construct($id)
{
$this->ShowID = $id;
$this->CommentForm = render('comments/commentform');
$this->getData();
$this->GetEpisodeList();
}
private function getData()
{
$get = Database::select('projects', '*', 'WHERE showid = :id', data: [':id' => $this->ShowID]);
$data = $get->fetch();
$this->ID = $data["id"];
$this->Title = $data["title"];
$this->Thumbnail = $this->ThumbPath . $data["thumbnail"];
$this->Description = $data["desc"];
}
public function __get($what)
{
return property_exists($this, $what) ? $this->{$what} : null;
}
public function GetEpisodeList()
{
$get = Database::select('episodes', '*', 'WHERE `show` = :s', 'id DESC', data: [':s' => $this->ShowID]);
$episodes = $get->fetchAll();
$this->EpisodeArray = $episodes;
}
public function GetEpisodeComments($id)
{
$get = Database::select('episodecomments', '*', 'WHERE showID = :id', data: [':id' => $id]);
$data = $get->fetchAll();
$list = [];
foreach ($data as $ID) {
$comment = new EpisodeComment($ID['id']);
$poster = new User($comment->Author);
$list[] = render('comments/commentbox', [
'a' => $poster->Avatar,
'u' => $poster->Username,
'c' => BBCode(magicClean($comment->Content)),
'd' => $comment->PostDate
]);
}
return $list;
}
}

48
app/models/User.php Executable file
View File

@ -0,0 +1,48 @@
<?php
class User
{
private $Email;
private $Title;
private $UserID;
private $Avatar;
private $Gender;
private $Badges;
private $AboutMe;
private $WhatsUp;
private $Username;
private $BirthDay;
private $JoinDate;
private $PostCount;
private $UserTitle;
private $Reputation;
private $isVerified;
private $MemberLevel;
public function __construct($id)
{
$this->UserID = $id;
$result = Database::select('users', '*', 'WHERE id = :id', data: [':id' => $id]);
$User = $result->fetch();
$this->Username = $User['username'];
$this->Title = $User['title'];
$this->Email = $User['email'];
$this->Gender = $User['gender'];
$this->Badges = $User['badges'];
$this->AboutMe = $User['blurb'];
$this->WhatsUp = $User['status'];
$this->BirthDay = $User['bday'];
$this->JoinDate = $User['joindate'];
$this->PostCount = $User['posts'];
$this->Avatar = $User['avatar'];
$this->Reputation = $User['reputation'];
$this->MemberLevel = $User['mlevel'];
}
public function __get($what)
{
return property_exists($this, $what) ? $this->{$what} : null;
}
}

View File

@ -1,19 +1,4 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
/*
--- The Community Module

135
app/modules/Database.php Executable file
View File

@ -0,0 +1,135 @@
<?php
/*
--- The Database Module
--- This module is for the general CRUD methods.
--- This module was crafted by Skylear. : )
--- Copyright (c) Mad Splash, 2014, all rights reserved.
*/
class Database
{
/* --- Variables - data the module needs to work with. --- */
private static PDO $c;
/* --- Constructor - creates the module's instance. --- */
public static function init(string $path, array $opts = [])
{
$opts = !empty($opts) ? $opts : [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
// Check to see if the database exists; if not, we have to build the tables
$new = !file_exists($path);
try {
self::$c = new PDO("sqlite:$path", null, null, $opts);
if ($new) { self::build(); }
} catch (PDOException $e) {
throw $e;
}
}
/* --- Module Functions - the meat and purpose of the module. --- */
/* Create Table - for creating a table when need be.
* @param string $name - the name of the table to be created.
* @param string $columns - a long string containing the columns to be made.
*/
public static function createTable($name, $columns) {
// No need for creating tables for the time being.
}
/* Select Data - used for getting data from the database.
* @return array $selectedRos - an array containing the data.
*/
public static function select(string $from, string $retrieve, string $condition, string $orderby = '', int $limit = 0, array $data = [])
{
$query = "SELECT $retrieve FROM $from $condition";
if (!empty($orderby)) { $query .= " ORDER BY $orderby"; }
if ($limit > 0) { $query .= " LIMIT $limit"; }
$selectQuery = self::$c->prepare($query);
$selectQuery->execute($data);
return $selectQuery;
}
public static function count(string $from, string $condition = ''): mixed
{
$query = "SELECT COUNT(*) FROM $from";
if (!empty($condition)) { $query .= " $condition"; }
return self::$c->query($query)->fetch();
}
private static function build()
{
// Create the users table
self::$c->exec("CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL,
email TEXT NOT NULL,
title TEXT NOT NULL DEFAULT 'Newbie',
gender INTEGER NOT NULL DEFAULT 0,
badges TEXT NOT NULL DEFAULT '',
blurb TEXT NOT NULL DEFAULT '',
status TEXT NOT NULL DEFAULT '',
bday DATE NOT NULL DEFAULT '0000-00-00',
posts INTEGER NOT NULL DEFAULT 0,
avatar TEXT NOT NULL DEFAULT '',
reputation INTEGER NOT NULL DEFAULT 0,
mlevel INTEGER NOT NULL DEFAULT 0,
joindate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);");
// Create the articles table
self::$c->exec("CREATE TABLE articles (
id INTEGER PRIMARY KEY AUTOINCREMENT,
articleName TEXT NOT NULL,
articleCover TEXT NOT NULL,
articleAuthor INTEGER NOT NULL DEFAULT 1,
articleContent TEXT NOT NULL,
articleDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
articleComments INTEGER NOT NULL DEFAULT 0,
articleDescription TEXT NOT NULL DEFAULT ''
);");
// Create the article comments table
self::$c->exec("CREATE TABLE articlecomments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
commentAuthor INTEGER NOT NULL,
commentContent TEXT NOT NULL,
commentDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
articleID INTEGER NOT NULL
);");
// Create the episode comments table
self::$c->exec("CREATE TABLE episodecomments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
commentAuthor INTEGER NOT NULL,
commentContent TEXT NOT NULL,
commentDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
showID INTEGER NOT NULL
);");
// Create the projects table
self::$c->exec("CREATE TABLE projects (
id INTEGER PRIMARY KEY AUTOINCREMENT,
type TEXT NOT NULL,
desc TEXT NOT NULL,
title TEXT NOT NULL,
cover TEXT NOT NULL,
lastUpdate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);");
// Create the shows table
self::$c->exec("CREATE TABLE shows (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
thumbnail TEXT NOT NULL,
desc TEXT NOT NULL,
showid INTEGER NOT NULL,
lastUpdate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);");
}
}

View File

@ -1,20 +1,4 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #888; padding-top: 18px;">
<center><img style="max-height: 600px;" src="../../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
/*
--- The Display Module
--- This module is for the general listing and displaying of things.
@ -24,8 +8,8 @@ CANTTOUCH;
class DisplayModule {
private $BlogCovers = 'http://localhost:8888/Resources/Images/Covers/BlogPosts/';
private $ProjectThumbnails = 'http://localhost:8888/Resources/Images/Thumbs/';
private $BlogCovers = '/assets/images/Covers/BlogPosts/';
private $ProjectThumbnails = '/assets/images/Thumbs/';
private $ListedArticle;
private $Article4Reading;
@ -39,7 +23,7 @@ CANTTOUCH;
/* --- Constructor - creates the module's instance. --- */
public function __construct() {
/*
$this->ListedArticle = GetTemplate('articles/listedarticle');
$this->Article4Reading = GetTemplate('articles/articlebody');
$this->FeaturedArticle = GetTemplate('articles/featured');
@ -48,7 +32,7 @@ CANTTOUCH;
$this->CommentBox = GetTemplate('comments/commentbox');
$this->CommentForm = GetTemplate('comments/commentform');
*/
}
/* ------------------------------------------------------------------------------------------------------- */
@ -56,27 +40,18 @@ CANTTOUCH;
/* --- Module Functions - the meat and purpose of the module. --- */
public function Articles($limit) {
$articles = Database::select('articles', 'id', '', 'articleDate DESC', $limit)->fetchAll();
$db = new DatabaseModule();
$articles = $db->getData('ms_articles', 'id', '', 'LIMIT ' . $limit, 'ORDER BY articleDate DESC');
if($db->countRows('ms_articles', '') > 0) {
if(count($articles)) {
foreach($articles as $articleID) {
$article = new Article($articleID['id']);
$author = new User($article->Author);
echo ParseTemplate($this->ListedArticle, array('t' => magicClean($article->Title), 'l' => "blog.php?do=read&article=" . $article->ID, 'd' => BBCode(magicClean($article->Description)), 'co' => $this->BlogCovers . $article->Cover, 'u' => $author->Username, 'pd' => $article->PostDate, 'c' => $article->Comments));
echo render('articles/listedarticle', ['t' => magicClean($article->Title), 'l' => "blog.php?do=read&article=" . $article->ID, 'd' => BBCode(magicClean($article->Description)), 'co' => $this->BlogCovers . $article->Cover, 'u' => $author->Username, 'pd' => $article->PostDate, 'c' => $article->Comments]);
}
} else {
echo '<span style="font-size: 26px;">Hmm. Strangely enough, we don\'t have any articles!</span>';
}
}
/* ------------------------------------------------------------------------------------------------------- */
@ -84,7 +59,7 @@ CANTTOUCH;
/* Display Articles - display a slider-like list of projects. */
public function Projects($type) {
/*
$db = new DatabaseModule();
$projects = $db->getData('ms_projects', 'id', 'WHERE type="' . $type . '"', '', 'ORDER BY id DESC');
@ -107,7 +82,7 @@ CANTTOUCH;
echo "<h3>It seems we have no " . strtolower($type) . "s.</h3>";
}
*/
}
/* ------------------------------------------------------------------------------------------------------- */
@ -115,6 +90,7 @@ CANTTOUCH;
/* Display Featured - display an assorted set of featured content in the sidebar. */
public function sideFeatured($what) {
/*
$db = new DatabaseModule;
// prepare SQL statements
@ -132,6 +108,7 @@ CANTTOUCH;
// display the article
echo ParseTemplate($this->FeaturedArticle, array('id' => $featured->ID, 'c' => $this->BlogCovers . $featured->Cover, 't' => $featured->Title));
}
*/
}
/* ------------------------------------------------------------------------------------------------------- */
@ -139,6 +116,7 @@ CANTTOUCH;
/* Display Front Page Articles - specially formatted for the front page */
public function frontPageArticles() {
/*
$db = new DatabaseModule();
$getArticles = $db->Handle->prepare('SELECT id FROM ms_articles ORDER BY articleDate DESC LIMIT 5');
@ -161,7 +139,7 @@ CANTTOUCH;
if($first) {
echo <<<FIRST
<a class="latestArticle" href="{$Link}">
<img src="Resources/Images/Covers/BlogPosts/{$article->Cover}.png" alt="{$article->Title}" title="{$article->Title}" />
<img src="/assets/images/Covers/BlogPosts/{$article->Cover}.png" alt="{$article->Title}" title="{$article->Title}" />
{$cBox}
@ -175,7 +153,7 @@ FIRST;
} else {
echo <<<ARTICLE
<a class="article" href="{$Link}">
<img src="Resources/Images/Covers/BlogPosts/{$article->Cover}.png" />
<img src="/assets/images/Covers/BlogPosts/{$article->Cover}.png" />
{$cBox}
@ -184,6 +162,7 @@ FIRST;
ARTICLE;
}
}
*/
}
/* ------------------------------------------------------------------------------------------------------- */
@ -191,15 +170,15 @@ ARTICLE;
/* Display an article for reading - when a user wants to read an article, we give it to them in this format. */
public function articleForReading($id) {
/*
$article = new Article($id);
$author = new User($article->Author);
echo ParseTemplate($this->Article4Reading, array('title' => $article->Title, 'date' => $article->PostDate, 'author' => $author->Username, 'cover' => $this->BlogCovers . $article->Cover, 'content' => BBCode(magicClean($article->Content))));
*/
/* ----------------------------------- */
/* -------- Article Comments --------- */
/*
echo "<a id=\"comments\">&nbsp;</a>";
if($article->Comments == 1) { $oneOrMore = $article->Comments . " Comment"; } else { $oneOrMore = $article->Comments . " Comments"; }
@ -234,7 +213,7 @@ ARTICLE;
if(!empty($_COOKIE['UserCookie'])) { echo ParseTemplate($this->CommentForm, array('aid' => $_GET['article'])); }
echo '</section>';
*/
}
/* ------------------------------------------------------------------------------------------------------- */

183
app/router.php Normal file
View File

@ -0,0 +1,183 @@
<?php
class Router
{
/**
* List of valid HTTP verbs.
*/
private const VALID_METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS'];
/**
* The tree of currently registered routes.
*/
private array $routes = [];
/**
* Store the last inserted node so we can register middleware and attributes to it.
*/
private array $last_inserted_node;
/**
* Add a route to the route tree. The route must be a URI path, and contain dynamic segments
* using a colon prefix. (:id, :slug, etc)
*
* Example:
* `$r->add($routes, 'GET', '/posts/:id', function($id) { echo "Viewing post $id"; });`
*/
public function add(string $method, string $route, callable $handler): Router
{
$this->validateMethod($method);
$this->validateRoute($route);
$segments = $route === '/' ? [''] : explode('/', trim($route, '/'));
$node = &$this->routes;
foreach ($segments as $segment) {
$segment = str_starts_with($segment, ':') ? ':x' : $segment;
if ($segment === '') continue;
$node = &$node[$segment];
}
$node[$method] = [
'handler' => $handler,
'middleware' => []
];
$this->last_inserted_node = &$node[$method];
return $this;
}
/**
* Perform a lookup in the route tree for a given method and URI. Returns an array with a result code,
* a handler if found, and any dynamic parameters. Codes are 200 for success, 404 for not found, and
* 405 for method not allowed.
*
* @return array ['code', 'handler', 'params']
*/
public function lookup(string $method, string $uri): array|int
{
$node = $this->routes;
$params = [];
if ($uri === '/') return $node[$method] ?? 405;
foreach (explode('/', trim($uri, '/')) as $segment) {
if (isset($node[$segment])) {
$node = $node[$segment];
continue;
}
if (isset($node[':x'])) {
$params[] = $segment;
$node = $node[':x'];
continue;
}
return 404;
}
$node[$method]['params'] = $params;
return $node[$method] ?? 405;
}
/**
* Add a middleware function to the last inserted node's stack.
*/
public function middleware(callable $middleware): Router
{
$this->last_inserted_node['middleware'][] = $middleware;
return $this;
}
/**
* Shorthand to register a GET route.
*/
public function get(string $route, callable $handler): Router
{
return $this->add('GET', $route, $handler);
}
/**
* Shorthand to register a POST route.
*/
public function post(string $route, callable $handler): Router
{
return $this->add('POST', $route, $handler);
}
/**
* Shorthand to register a PUT route.
*/
public function put(string $route, callable $handler): Router
{
return $this->add('PUT', $route, $handler);
}
/**
* Shorthand to register a DELETE route.
*/
public function delete(string $route, callable $handler): Router
{
return $this->add('DELETE', $route, $handler);
}
/**
* Shorthand to register a PATCH route.
*/
public function patch(string $route, callable $handler): Router
{
return $this->add('PATCH', $route, $handler);
}
/**
* Register multiple verbs to the same route.
*/
public function many(array $methods, string $route, callable $handler): Router
{
foreach ($methods as $method) $this->add($method, $route, $handler);
return $this;
}
/**
* Register all verbs to the same route.
*/
public function any(string $route, callable $handler): Router
{
foreach (SELF::VALID_METHODS as $method) $this->add($method, $route, $handler);
return $this;
}
/**
* Some pages function entirely as forms; thus we can shorthand a GET/POST route.
*/
public function form(string $route, callable $handler): Router
{
return $this->many(['GET', 'POST'], $route, $handler);
}
/**
* Validate the given method against valid HTTP verbs.
*/
private function validateMethod(string $method): void
{
if (!in_array($method, self::VALID_METHODS)) {
throw new InvalidArgumentException("Invalid HTTP method: $method");
}
}
/**
* Validate that a new route follows expected formatting.
*/
private function validateRoute(string $route): void
{
if ($route === '') {
throw new InvalidArgumentException("Route cannot be empty");
}
// Ensure route starts with a slash
if (!str_starts_with($route, '/')) {
throw new InvalidArgumentException("Route must start with a '/'");
}
}
}

View File

@ -5,9 +5,7 @@
<h1>Mad Splash Blog</h1>
<ul class="articleList">
<?php
$display->Articles(30);
?>
<?= $display->Articles(30); ?>
</ul>
</section>

View File

@ -6,12 +6,6 @@
<?php
if(!empty($_GET['article'])) {
$id = $_GET['article'];
} else {
$id = 1;
}
$display->articleForReading($id);
?>
</section>

View File

@ -2,7 +2,7 @@
$template = <<<TMP
<div id="articleComment">
<div class="left">
<img src="../Resources/Images/Avatars/{{{a}}}" alt="{{{u}}}" title="{{{u}}}" />
<img src="/assets/images/Avatars/{{{a}}}" alt="{{{u}}}" title="{{{u}}}" />
<a href="#">{{{u}}}</a>
</div>

View File

@ -0,0 +1,8 @@
<form action="Hubs/CommunityHub.php?action=episodeComment&epID=<?= $epid ?>&show=<?= $id ?>" method="post" style="padding-left: 12px; margin-top: 36px; padding-top: 16px;">
<h3>Post a comment</h2>
<textarea name="theComment" style="width: 76%; min-height: 60px; margin-bottom: 8px; float: left;"></textarea>
<input class="blueButton" type="submit" name="postsubmit" value="POST" style="float: right;">
<div class="clear"> </div>
</form>

View File

@ -5,9 +5,9 @@ $extra = <<<TMP
You're bona fide verified.
</h1>
<img src="../Resources/Images/General/SkyDrawn.png" style="float: right; position: absolute; right: 50px; bottom: 0px;" />
<img src="../Resources/Images/General/Batty1.png" style="float: left; position: absolute; left: 30px; top: 50px;" />
<img src="../Resources/Images/General/Car2.png" style="float: left; position: absolute; left: 80px; bottom: 20px; transform: rotate(24deg);
<img src="/assets/images/General/SkyDrawn.png" style="float: right; position: absolute; right: 50px; bottom: 0px;" />
<img src="/assets/images/General/Batty1.png" style="float: left; position: absolute; left: 30px; top: 50px;" />
<img src="/assets/images/General/Car2.png" style="float: left; position: absolute; left: 80px; bottom: 20px; transform: rotate(24deg);
-ms-transform: rotate(24deg);
-webkit-transform: rotate(24deg);" />

View File

@ -12,6 +12,6 @@ $extra = <<<TMP
Sorry about that...
</p>
<img src="../Resources/Images/General/TamakiSad.png" style="margin: 12px auto; display: block;" />
<img src="/assets/images/General/TamakiSad.png" style="margin: 12px auto; display: block;" />
TMP;
?>

View File

@ -5,7 +5,7 @@
<section id="HBIG">
<h1>LOGIN</h1>
<img src="../Resources/Images/General/Cookie.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
<img src="/assets/images/General/Cookie.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
</section>
<section id="body">
@ -41,7 +41,7 @@
<div class="right" style="width: 560px;">
<h1 class="H1-2">Don't Have an Account?</h1>
<img src="../Resources/Images/General/Cookie.png" style="display: block; height: 280px; margin: 6px auto; margin-bottom: 16px;" />
<img src="/assets/images/General/Cookie.png" style="display: block; height: 280px; margin: 6px auto; margin-bottom: 16px;" />
<input class="blueButton" type="button" value="CREATE AN ACCOUNT" onClick="window.location.href='community.php?page=register'">
</div>

View File

@ -5,7 +5,7 @@
<section id="HBIG">
<h1>VERIFY</h1>
<img src="../Resources/Images/General/Cookie.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
<img src="/assets/images/General/Cookie.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
</section>
<section id="body">

View File

@ -6,7 +6,7 @@ $template = <<<TMP
html { background-color: #cacbca; }
body { width: 800px; margin: 0px auto; background-color: #cacbca; }
div#head { width: 100%; height: 200px; background: #4aa1ef url('http://localhost:8888/Resources/Images/Backgrounds/EmailHead.jpg'); margin-bottom: -48px; box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.2); }
div#head { width: 100%; height: 200px; background: #4aa1ef url('http://localhost:8888//assets/images/Backgrounds/EmailHead.jpg'); margin-bottom: -48px; box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.2); }
div#body { width: 82%; min-height: 70px; margin: 0px auto; margin-bottom: 20px; background-color: #fffffe; padding-bottom: 16px; }
h1 { color: #666; font: bold 28px Arial, Helvetica, Geneva, sans-serif; padding: 8px 0px 0px 12px; height: 20px; }
@ -20,7 +20,7 @@ $template = <<<TMP
<body>
<div id="head">
<img class="logo" src="http://localhost:8888/Resources/Images/Logos/NewLogo.png" />
<img class="logo" src="http://localhost:8888//assets/images/Logos/NewLogo.png" />
</div>

View File

@ -6,7 +6,7 @@ $template = <<<TMP
html { background-color: #cacbca; }
body { width: 800px; margin: 0px auto; background-color: #cacbca; }
div#head { width: 100%; height: 200px; background: #4aa1ef url('http://localhost:8888/Resources/Images/Backgrounds/EmailHead.jpg'); margin-bottom: -48px; box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.2); }
div#head { width: 100%; height: 200px; background: #4aa1ef url('http://localhost:8888//assets/images/Backgrounds/EmailHead.jpg'); margin-bottom: -48px; box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.2); }
div#body { width: 82%; min-height: 70px; margin: 0px auto; margin-bottom: 20px; background-color: #fffffe; padding-bottom: 16px; }
h1 { color: #666; font: bold 28px Arial, Helvetica, Geneva, sans-serif; padding: 8px 0px 0px 12px; height: 20px; }
@ -20,7 +20,7 @@ $template = <<<TMP
<body>
<div id="head">
<img class="logo" src="http://localhost:8888/Resources/Images/Logos/NewLogo.png" />
<img class="logo" src="http://localhost:8888//assets/images/Logos/NewLogo.png" />
</div>

30
app/templates/footer.php Executable file
View File

@ -0,0 +1,30 @@
<footer>
<section>
<img class="logo" src="/assets/images/Logos/LogoV7B.png" style="width: 160px;">
<p class="copy">
Copyright &copy; 2025, madsplash.net <br>
All trademarked stuff is the property of its respective owner(s).
</p>
</section>
<section>
<h2>OTHER STUFFS</h2>
<ul>
<li><a href="#">Our staff</a></li>
<li><a href="#">Jobs here</a></li>
<li><a href="index.php?page=privacy">Privacy</a></li>
<li><a href="index.php?page=tandc">The T&amp;C</a></li>
</ul>
</section>
<section>
<h2>PROJECTS</h2>
<ul>
<li><a href="index.php?page=projects&project=tbfa">Battles for Arthos</a></li>
<li><a href="index.php?page=projects&project=therpg">The RPG</a></li>
</ul>
</section>
</footer>
</div>
</body>
</html>

42
app/templates/header.php Executable file
View File

@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Stuff, Community, Fun | Mad Splash!</title>
<link rel="stylesheet" href="/assets/css/MadSplash_v3.css" type="text/css" />
<link rel="stylesheet" href="/assets/css/CustomFonts.css" type="text/css" />
<script src="/assets/scripts/latestTweet.js"></script>
</head>
<body>
<div class="container">
<?= render('supernav') ?>
<header>
<img class="Logo" src="/assets/images/Logos/LogoV7.png" alt="Mad Splash" title="Mad Splash!" />
<nav>
<ul>
<li><a class="navLink" href="/">Home</a></li>
<li><a class="navLink" href="/blog">Blog</a></li>
<li><a class="navLink" href="http://forums.madsplash.net/">Forums</a></li>
<li class="dropdown">
<a class="dropLink" href="projects.php">Projects</a>
<div class="drop">
<section>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="projects.php?a=main&type=game">Games</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="projects.php?a=main&type=book">Books</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="projects.php?a=main&type=show">Shows</a>
</section>
<div class="clear"> </div>
</div>
</li>
</ul>
</nav>
</header>

View File

@ -6,7 +6,7 @@
<div>
<?php
$display->frontPageArticles();
//$display->frontPageArticles();
?>
</div>
@ -15,17 +15,6 @@
<section id="rightColumn">
<h1>Latest socials</h1>
<div id="tweets">
<a class="Twitter" style="background-color: #666; margin-right: 4px; float: left;">&nbsp;</a>
<div id="tweet" style="float: right;">
</div>
<div class="clear"> </div>
</div>
</section>
<div class="clear"> </div>

View File

@ -16,7 +16,7 @@
<br />
<ul style="padding-left: 16px; margin-lefts: 16px;">
<ul style="padding-left: 16px; margin-left: 16px;">
<li>
Before or at the time of collecting personal information, we will identify the purposes for which information is being collected.
</li>
@ -46,6 +46,4 @@
We are committed to conducting our business in accordance with these principles in order to ensure that the confidentiality of personal information is protected and maintained.
</p>
</div>
<div class="clear"> </div>
</section>

View File

@ -5,8 +5,8 @@
<section id="HBIG">
<h1>PROJECTS</h1>
<img src="../Resources/Images/General/CC3.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
<img src="../Resources/Images/General/Batty1.png" style="position: absolute; right: 200px; top: 4px; float: right;" />
<img src="/assets/images/General/CC3.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
<img src="/assets/images/General/Batty1.png" style="position: absolute; right: 200px; top: 4px; float: right;" />
</section>
<section id="body">

View File

@ -1,6 +1,3 @@
<?php
$template = <<<TMP
<script>
document.getElementsByTagName('title')[0].innerHTML = "{{{t}}} | Mad Splash!";
</script>
@ -63,6 +60,3 @@ $template = <<<TMP
<div class="clear"> </div>
</section>
TMP;
?>

6
app/templates/slider.php Executable file
View File

@ -0,0 +1,6 @@
<section id="slider">
<div class="slide" style="background: url('/assets/images/Covers/Slides/NewLogoSlide.jpg') no-repeat center center; background-size: cover;">
<!--<a class="slideLink" href="http://the-rpg-makers.wikia.com/" target="_blank"
style="background: url('/assets/images/Covers/SlideLinks/CIOButton.png') no-repeat top center;"></a>-->
</div>
</section>

34
app/templates/supernav.php Executable file
View File

@ -0,0 +1,34 @@
<section id="SuperNav">
<?php if (!empty($_COOKIE['MadSplashUser'])) { ?>
<div>
Heyas, <a href="#">{$user[1]}</a>! You can go to your <a href="#">User CP</a> or <a href="http://localhost:8888/Resources/Scripts/PHP/Hubs/CommunityHub.php?user={$user[0]}&action=logout">logout</a>.
</div>
<?php } else { ?>
<div>
Hey there, Guest. You can <a href="http://localhost:8888/community/index.php?page=login">login</a>
or <a href="http://localhost:8888/community/index.php?page=register">register</a> here.
</div>
<?php } ?>
<div class="socials">
<a class="YouTube" href="http://youtube.com/User/MadSplashTV" target="_blank">&nbsp;</a>
<a class="Twitter" href="http://twitter.com/MadSplashStudio" target="_blank">&nbsp;</a>
<div class="CrossNav">
<img src="/assets/images/Icons/General/CrossNavDark.png" style="width: 28px; height: 28px;" />
<ul>
<a href="http://therpg.madsplash.net/" target="_blank">
<li class="RPG">
<img src="/assets/images/Logos/TheRPG.jpg" style="width: 38px;">
<p>
<a class="RPGLink">The RPG</a> <br>
Our up-and-coming web-and-text-based RPG. Play!
</p>
</li>
</a>
</ul>
</div>
</div>
</section>

495
app/templates/tictactoe.php Normal file
View File

@ -0,0 +1,495 @@
<script>
if (document.all || document.getElementById) {
document.write('<style>.tictac{')
document.write('width:50px;height:50px;')
document.write('}</style>')
}
var sqr1
var sqr2
var sqr3
var sqr4
var sqr5
var sqr6
var sqr7
var sqr8
var sqr9
var sqr1T = 0
var sqr2T = 0
var sqr3T = 0
var sqr4T = 0
var sqr5T = 0
var sqr6T = 0
var sqr7T = 0
var sqr8T = 0
var sqr9T = 0
var moveCount = 0
var turn = 0
var mode = 1
function vari() {
sqr1 = document.tic.sqr1.value
sqr2 = document.tic.sqr2.value
sqr3 = document.tic.sqr3.value
sqr4 = document.tic.sqr4.value
sqr5 = document.tic.sqr5.value
sqr6 = document.tic.sqr6.value
sqr7 = document.tic.sqr7.value
sqr8 = document.tic.sqr8.value
sqr9 = document.tic.sqr9.value
}
function check() {
if (sqr1 == " X " && sqr2 == " X " && sqr3 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr4 == " X " && sqr5 == " X " && sqr6 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr7 == " X " && sqr8 == " X " && sqr9 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr1 == " X " && sqr5 == " X " && sqr9 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr1 == " X " && sqr4 == " X " && sqr7 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr2 == " X " && sqr5 == " X " && sqr8 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr3 == " X " && sqr6 == " X " && sqr9 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr1 == " X " && sqr5 == " X " && sqr9 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else if (sqr3 == " X " && sqr5 == " X " && sqr7 == " X ") {
alert("Congrats, you've beat the computer!")
reset()
} else {
winCheck()
check2()
drawCheck()
}
}
function check2() {
vari()
drawCheck()
if (sqr1 == " O " && sqr2 == " O " && sqr3 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr4 == " O " && sqr5 == " O " && sqr6 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr7 == " O " && sqr8 == " O " && sqr9 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr1 == " O " && sqr5 == " O " && sqr9 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr1 == " O " && sqr4 == " O " && sqr7 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr2 == " O " && sqr5 == " O " && sqr8 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr3 == " O " && sqr6 == " O " && sqr9 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr1 == " O " && sqr5 == " O " && sqr9 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
} else if (sqr3 == " O " && sqr5 == " O " && sqr7 == " O ") {
alert("Unfortunately, you've lost. Try again!")
reset()
}
}
function player1Check() {
if (sqr1 == " X " && sqr2 == " X " && sqr3 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr4 == " X " && sqr5 == " X " && sqr6 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr7 == " X " && sqr8 == " X " && sqr9 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr1 == " X " && sqr5 == " X " && sqr9 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr1 == " X " && sqr4 == " X " && sqr7 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr2 == " X " && sqr5 == " X " && sqr8 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr3 == " X " && sqr6 == " X " && sqr9 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr1 == " X " && sqr5 == " X " && sqr9 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else if (sqr3 == " X " && sqr5 == " X " && sqr7 == " X ") {
alert("Woot! Player 1 has won!")
reset()
} else {
player2Check()
drawCheck()
}
}
function player2Check() {
vari()
drawCheck()
if (sqr1 == " O " && sqr2 == " O " && sqr3 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr4 == " O " && sqr5 == " O " && sqr6 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr7 == " O " && sqr8 == " O " && sqr9 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr1 == " O " && sqr5 == " O " && sqr9 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr1 == " O " && sqr4 == " O " && sqr7 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr2 == " O " && sqr5 == " O " && sqr8 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr3 == " O " && sqr6 == " O " && sqr9 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr1 == " O " && sqr5 == " O " && sqr9 == " O ") {
alert("Blast. Player 2 has won.")
reset()
} else if (sqr3 == " O " && sqr5 == " O " && sqr7 == " O ") {
alert("Blast. Player 2 has won.")
reset()
}
}
function drawCheck() {
vari()
moveCount = sqr1T + sqr2T + sqr3T + sqr4T + sqr5T + sqr6T + sqr7T + sqr8T + sqr9T
if (moveCount == 9) {
reset()
alert("You tied with the computer. Try harder next time!")
}
}
function winCheck() {
check2()
if (sqr1 == " O " && sqr2 == " O " && sqr3T == 0 && turn == 1) {
document.tic.sqr3.value = " O "
sqr3T = 1;
turn = 0;
} else if (sqr2 == " O " && sqr3 == " O " && sqr1T == 0 && turn == 1) {
document.tic.sqr1.value = " O "
sqr1T = 1;
turn = 0;
} else if (sqr4 == " O " && sqr5 == " O " && sqr6T == 0 && turn == 1) {
document.tic.sqr6.value = " O "
sqr6T = 1;
turn = 0;
} else if (sqr5 == " O " && sqr6 == " O " && sqr4T == 0 && turn == 1) {
document.tic.sqr4.value = " O "
sqr4T = 1;
turn = 0;
} else if (sqr7 == " O " && sqr8 == " O " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr8 == " O " && sqr9 == " O " && sqr7T == 0 && turn == 1) {
document.tic.sqr7.value = " O "
sqr7T = 1;
turn = 0;
} else if (sqr1 == " O " && sqr5 == " O " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr5 == " O " && sqr9 == " O " && sqr1T == 0 && turn == 1) {
document.tic.sqr1.value = " O "
sqr1T = 1;
turn = 0;
} else if (sqr3 == " O " && sqr5 == " O " && sqr7T == 0 && turn == 1) {
document.tic.sqr7.value = " O "
sqr7T = 1;
turn = 0;
} else if (sqr7 == " O " && sqr5 == " O " && sqr3T == 0 && turn == 1) {
document.tic.sqr3.value = " O "
sqr3T = 1;
turn = 0;
} else if (sqr1 == " O " && sqr3 == " O " && sqr2T == 0 && turn == 1) {
document.tic.sqr2.value = " O "
sqr2T = 1;
turn = 0;
} else if (sqr4 == " O " && sqr6 == " O " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else if (sqr7 == " O " && sqr9 == " O " && sqr8T == 0 && turn == 1) {
document.tic.sqr8.value = " O "
sqr8T = 1;
turn = 0;
} else if (sqr1 == " O " && sqr7 == " O " && sqr4T == 0 && turn == 1) {
document.tic.sqr4.value = " O "
sqr4T = 1;
turn = 0;
} else if (sqr2 == " O " && sqr8 == " O " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else if (sqr3 == " O " && sqr9 == " O " && sqr6T == 0 && turn == 1) {
document.tic.sqr6.value = " O "
sqr6T = 1;
turn = 0;
} else if (sqr1 == " O " && sqr5 == " O " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr4 == " O " && sqr7 == " O " && sqr1T == 0 && turn == 1) {
document.tic.sqr1.value = " O "
sqr1T = 1;
turn = 0;
} else if (sqr5 == " O " && sqr8 == " O " && sqr2T == 0 && turn == 1) {
document.tic.sqr2.value = " O "
sqr2T = 1;
turn = 0;
} else if (sqr6 == " O " && sqr9 == " O " && sqr3T == 0 && turn == 1) {
document.tic.sqr3.value = " O "
sqr3T = 1;
turn = 0;
} else if (sqr1 == " O " && sqr4 == " O " && sqr7T == 0 && turn == 1) {
document.tic.sqr7.value = " O "
sqr7T = 1;
turn = 0;
} else if (sqr2 == " O " && sqr5 == " O " && sqr8T == 0 && turn == 1) {
document.tic.sqr8.value = " O "
sqr8T = 1;
turn = 0;
} else if (sqr3 == " O " && sqr6 == " O " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr1 == " O " && sqr9 == " O " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else if (sqr3 == " O " && sqr7 == " O " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else {
computer()
}
check2()
}
function computer() {
check2()
if (sqr1 == " X " && sqr2 == " X " && sqr3T == 0 && turn == 1) {
document.tic.sqr3.value = " O "
sqr3T = 1;
turn = 0;
} else if (sqr2 == " X " && sqr3 == " X " && sqr1T == 0 && turn == 1) {
document.tic.sqr1.value = " O "
sqr1T = 1;
turn = 0;
} else if (sqr4 == " X " && sqr5 == " X " && sqr6T == 0 && turn == 1) {
document.tic.sqr6.value = " O "
sqr6T = 1;
turn = 0;
} else if (sqr5 == " X " && sqr6 == " X " && sqr4T == 0 && turn == 1) {
document.tic.sqr4.value = " O "
sqr4T = 1;
turn = 0;
} else if (sqr7 == " X " && sqr8 == " X " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr8 == " X " && sqr9 == " X " && sqr7T == 0 && turn == 1) {
document.tic.sqr7.value = " O "
sqr7T = 1;
turn = 0;
} else if (sqr1 == " X " && sqr5 == " X " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr5 == " X " && sqr9 == " X " && sqr1T == 0 && turn == 1) {
document.tic.sqr1.value = " O "
sqr1T = 1;
turn = 0;
} else if (sqr3 == " X " && sqr5 == " X " && sqr7T == 0 && turn == 1) {
document.tic.sqr7.value = " O "
sqr7T = 1;
turn = 0;
} else if (sqr7 == " X " && sqr5 == " X " && sqr3T == 0 && turn == 1) {
document.tic.sqr3.value = " O "
sqr3T = 1;
turn = 0;
} else if (sqr1 == " X " && sqr3 == " X " && sqr2T == 0 && turn == 1) {
document.tic.sqr2.value = " O "
sqr2T = 1;
turn = 0;
} else if (sqr4 == " X " && sqr6 == " X " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else if (sqr7 == " X " && sqr9 == " X " && sqr8T == 0 && turn == 1) {
document.tic.sqr8.value = " O "
sqr8T = 1;
turn = 0;
} else if (sqr1 == " X " && sqr7 == " X " && sqr4T == 0 && turn == 1) {
document.tic.sqr4.value = " O "
sqr4T = 1;
turn = 0;
} else if (sqr2 == " X " && sqr8 == " X " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else if (sqr3 == " X " && sqr9 == " X " && sqr6T == 0 && turn == 1) {
document.tic.sqr6.value = " O "
sqr6T = 1;
turn = 0;
} else if (sqr1 == " X " && sqr5 == " X " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr4 == " X " && sqr7 == " X " && sqr1T == 0 && turn == 1) {
document.tic.sqr1.value = " O "
sqr1T = 1;
turn = 0;
} else if (sqr5 == " X " && sqr8 == " X " && sqr2T == 0 && turn == 1) {
document.tic.sqr2.value = " O "
sqr2T = 1;
turn = 0;
} else if (sqr6 == " X " && sqr9 == " X " && sqr3T == 0 && turn == 1) {
document.tic.sqr3.value = " O "
sqr3T = 1;
turn = 0;
} else if (sqr1 == " X " && sqr4 == " X " && sqr7T == 0 && turn == 1) {
document.tic.sqr7.value = " O "
sqr7T = 1;
turn = 0;
} else if (sqr2 == " X " && sqr5 == " X " && sqr8T == 0 && turn == 1) {
document.tic.sqr8.value = " O "
sqr8T = 1;
turn = 0;
} else if (sqr3 == " X " && sqr6 == " X " && sqr9T == 0 && turn == 1) {
document.tic.sqr9.value = " O "
sqr9T = 1;
turn = 0;
} else if (sqr1 == " X " && sqr9 == " X " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else if (sqr3 == " X " && sqr7 == " X " && sqr5T == 0 && turn == 1) {
document.tic.sqr5.value = " O "
sqr5T = 1;
turn = 0;
} else {
AI()
}
check2()
}
function AI() {
vari()
if (document.tic.sqr5.value == " " && turn == 1) {
document.tic.sqr5.value = " O "
turn = 0
sqr5T = 1
} else if (document.tic.sqr1.value == " " && turn == 1) {
document.tic.sqr1.value = " O "
turn = 0
sqr1T = 1
} else if (document.tic.sqr9.value == " " && turn == 1) {
document.tic.sqr9.value = " O "
turn = 0
sqr9T = 1
} else if (document.tic.sqr6.value == " " && turn == 1) {
document.tic.sqr6.value = " O "
turn = 0
sqr6T = 1
} else if (document.tic.sqr2.value == " " && turn == 1) {
document.tic.sqr2.value = " O "
turn = 0
sqr2T = 1
} else if (document.tic.sqr8.value == " " && turn == 1) {
document.tic.sqr8.value = " O "
turn = 0
sqr8T = 1
} else if (document.tic.sqr3.value == " " && turn == 1) {
document.tic.sqr3.value = " O "
turn = 0
sqr3T = 1
} else if (document.tic.sqr7.value == " " && turn == 1) {
document.tic.sqr7.value = " O "
turn = 0
sqr7T = 1
} else if (document.tic.sqr4.value == " " && turn == 1) {
document.tic.sqr4.value = " O "
turn = 0
sqr4T = 1
}
check2()
}
function reset() {
document.tic.sqr1.value = " "
document.tic.sqr2.value = " "
document.tic.sqr3.value = " "
document.tic.sqr4.value = " "
document.tic.sqr5.value = " "
document.tic.sqr6.value = " "
document.tic.sqr7.value = " "
document.tic.sqr8.value = " "
document.tic.sqr9.value = " "
sqr1T = 0
sqr2T = 0
sqr3T = 0
sqr4T = 0
sqr5T = 0
sqr6T = 0
sqr7T = 0
sqr8T = 0
sqr9T = 0
vari()
turn = 0
moveCount = 0
}
function resetter() {
reset()
}
</script>
<section id="cover">
<div class="cover" style="background-image: url('/assets/images/Covers/BlogPosts/BlueCheckers.png');"> </div>
</section>
<section id="body">
<div style="width: 100%; margin-bottom: 4px; height: 1px;">&nbsp;</div>
<h1>Set's Tic-Tac-Toe</h1>
<form name="tic" style="width: 50%; display: block; margin: 0px auto; padding: 12px 0px;">
<center>
<input type="button" name="sqr1" class="tictac" value=" " onClick="if(document.tic.sqr1.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr1.value = ' X '; sqr1T = 1; turn = 1; vari(); check();} else if(document.tic.sqr1.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr1.value = ' X '; sqr1T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr1.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr1.value = ' O '; sqr1T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
<input type="button" name="sqr2" class="tictac" value=" " onClick="if(document.tic.sqr2.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr2.value = ' X '; sqr2T = 1; turn = 1; vari(); check();} else if(document.tic.sqr2.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr2.value = ' X '; sqr2T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr2.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr2.value = ' O '; sqr2T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
<input type="button" name="sqr3" class="tictac" value=" " onClick="if(document.tic.sqr3.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr3.value = ' X '; sqr3T = 1; turn = 1; vari(); check();} else if(document.tic.sqr3.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr3.value = ' X '; sqr3T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr3.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr3.value = ' O '; sqr3T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT><br />
<input type="button" name="sqr4" class="tictac" value=" " onClick="if(document.tic.sqr4.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr4.value = ' X '; sqr4T = 1; turn = 1; vari(); check();} else if(document.tic.sqr4.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr4.value = ' X '; sqr4T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr4.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr4.value = ' O '; sqr4T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
<input type="button" name="sqr5" class="tictac" value=" " onClick="if(document.tic.sqr5.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr5.value = ' X '; sqr5T = 1; turn = 1; vari(); check();} else if(document.tic.sqr5.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr5.value = ' X '; sqr5T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr5.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr5.value = ' O '; sqr5T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
<input type="button" name="sqr6" class="tictac" value=" " onClick="if(document.tic.sqr6.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr6.value = ' X '; sqr6T = 1; turn = 1; vari(); check();} else if(document.tic.sqr6.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr6.value = ' X '; sqr6T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr6.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr6.value = ' O '; sqr6T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT><br />
<input type="button" name="sqr7" class="tictac" value=" " onClick="if(document.tic.sqr7.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr7.value = ' X '; sqr7T = 1; turn = 1; vari(); check();} else if(document.tic.sqr7.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr7.value = ' X '; sqr7T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr7.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr7.value = ' O '; sqr7T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
<input type="button" name="sqr8" class="tictac" value=" " onClick="if(document.tic.sqr8.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr8.value = ' X '; sqr8T = 1; turn = 1; vari(); check();} else if(document.tic.sqr8.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr8.value = ' X '; sqr8T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr8.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr8.value = ' O '; sqr8T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
<input type="button" name="sqr9" class="tictac" value=" " onClick="if(document.tic.sqr9.value == ' ' && turn == 0 && mode == 1) {document.tic.sqr9.value = ' X '; sqr9T = 1; turn = 1; vari(); check();} else if(document.tic.sqr9.value == ' ' && turn == 1 && mode == 2) {document.tic.sqr9.value = ' X '; sqr9T = 1; turn = 0; vari(); player1Check()} else if(document.tic.sqr9.value == ' ' && turn == 0 && mode == 2) {document.tic.sqr9.value = ' O '; sqr9T = 1; turn = 1; vari(); player1Check()} drawCheck()"></INPUT>
</center>
</form>
</section>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/PerryCantTouch2.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,32 +0,0 @@
<footer>
<div class="box">
<div style="padding-top: 8px;">
<section class="splash">
<img src="../Resources/Images/Logos/LogoV7B.png" style="width: 90%; display: block; margin: 0px auto; margin-bottom: -12px;" />
<a href="../index.php?page=privacy">Privacy</a> | <a href="../index.php?page=tandc">The T&amp;C</a> <br />
<p style="width: 200px; margin: 0px auto;">
Copyright &copy; 2014, Mad Splash. <br />
All trademarked stuff is the property of it's respective owner(s).
</p>
</section>
<section>
<h2>OTHER STUFFS</h2>
<ul>
<li><a href="#">Our staff</a></li>
<li><a href="#">Jobs here</a></li>
</ul>
</section>
<section>
<h2>PROJECTS</h2>
<ul>
<li><a href="../index.php?page=projects&project=tbfa">Battles for Arthos</a></li>
<li><a href="../index.php?page=projects&project=therpg">The RPG</a></li>
</ul>
</section>
</div>
</div>
</footer>
</body>
</html>

View File

@ -1,59 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Blog | Mad Splash!</title>
<link rel="stylesheet" href="../Resources/CSS/MadSplash_v3.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/FormStyles.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/CustomFonts.css" type="text/css" />
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if lte IE 7]>
<script src="js/IE8.js" type="text/javascript"></script><![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="all" href="../Resources/CSS/ie6.css"/><![endif]-->
</head>
<body id="index" class="home">
<?php
include('../Resources/Scripts/PHP/Library.php');
require_once('../Resources/Scripts/PHP/SuperNav.php');
$display = new DisplayModule();
?>
<header>
<img class="Logo" src="../Resources/Images/Logos/LogoV7.png" alt="Mad Splash" title="Mad Splash!" />
<nav>
<ul>
<li><a class="navLink" href="../index.php">Home</a></li>
<li><a class="navLink" href="blog.php">Blog</a></li>
<li><a class="navLink" href="http://forums.madsplash.net/">Forums</a></li>
<li class="dropdown">
<a class="dropLink" href="../projects.php">Projects</a>
<div class="drop">
<section>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="../projects.php?a=main&type=game">Games</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="../projects.php?a=main&type=book">Books</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="../projects.php?a=main&type=show">Shows</a>
</section>
<div class="clear"> </div>
</div>
</li>
</ul>
</nav>
</header>
<section id="HBIG">
<h1>THE BLOG</h1>
<img src="../Resources/Images/General/SkyDrawn.png" style="position: absolute; right: 22px; top: 16px; float: right;" />
</section>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,27 +0,0 @@
<?php
define('SAFE', true);
$LockedPages = array();
include("Pieces/header.htm");
if (!empty($_GET['do'])) {
$do = "list";
$TmpDo = basename($_GET['do']);
// If it's not a disallowed path, and if the file exists, update $do
if (!in_array($TmpDo, $LockedPages) && file_exists("Pieces/Blog/{$TmpDo}.htm")) {
$do = $TmpDo;
}
} else {
$do = "list";
}
// Include $page
include("Pieces/Blog/$do.htm");
include("Pieces/footer.htm");
?>

View File

@ -1,32 +0,0 @@
<footer>
<div class="box">
<div style="padding-top: 8px;">
<section class="splash">
<img src="../Resources/Images/Logos/LogoV7B.png" style="width: 90%; display: block; margin: 0px auto; margin-bottom: -12px;" />
<a href="../index.php?page=privacy">Privacy</a> | <a href="../index.php?page=tandc">The T&amp;C</a> <br />
<p style="width: 200px; margin: 0px auto;">
Copyright &copy; 2014, Mad Splash. <br />
All trademarked stuff is the property of it's respective owner(s).
</p>
</section>
<section>
<h2>OTHER STUFFS</h2>
<ul>
<li><a href="#">Our staff</a></li>
<li><a href="#">Jobs here</a></li>
</ul>
</section>
<section>
<h2>PROJECTS</h2>
<ul>
<li><a href="../index.php?page=projects&project=tbfa">Battles for Arthos</a></li>
<li><a href="../index.php?page=projects&project=therpg">The RPG</a></li>
</ul>
</section>
</div>
</div>
</footer>
</body>
</html>

View File

@ -1,67 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>The Community | Mad Splash!</title>
<link rel="stylesheet" href="../Resources/CSS/MadSplash_v3.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/FormStyles.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/CustomFonts.css" type="text/css" />
<!-- JavaScript -->
<script src="../Resources/Scripts/JavaScript/jQuery.js" type="text/javascript"></script>
<script src="../Resources/Scripts/JavaScript/TextEditor.js" type="text/javascript"></script>
<script src="../Resources/Scripts/JavaScript/passSecurityCheck.js" type="text/javascript"></script>
<!-- End of JavaScript -->
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if lte IE 7]>
<script src="js/IE8.js" type="text/javascript"></script><![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="all" href="../Resources/CSS/ie6.css"/><![endif]-->
</head>
<body id="index" class="home">
<?php
session_start();
include('../Resources/Scripts/PHP/Library.php');
require_once('../Resources/Scripts/PHP/SuperNav.php');
$display = new DisplayModule();
?>
<header>
<img class="Logo" src="../Resources/Images/Logos/LogoV7.png" alt="Mad Splash" title="Mad Splash!" />
<nav>
<ul>
<li><a class="navLink" href="../index.php">Home</a></li>
<li><a class="navLink" href="../blog/blog.php">Blog</a></li>
<li><a class="navLink" href="http://forums.madsplash.net/">Forums</a></li>
<li class="dropdown">
<a class="dropLink" href="../index.php?page=projects">Projects</a>
<div class="drop">
<section>
<h2>Books</h2>
<a href="#">Battles for Arthos</a>
<a href="#">The Organization</a>
</section>
<section>
<h2>Games</h2>
<a href="#">The RPG</a>
<a href="#">BattleMonsters</a>
</section>
<div class="clear"> </div>
</div>
</li>
</ul>
</nav>
</header>

View File

@ -1,17 +0,0 @@
<?php
if(!defined('SAFE')) {
$page = <<<CANTTOUCH
<html>
<head>
</head>
<body style="padding:0px; margin:0px; background-color: #425b5c;">
<center><img src="../../Images/General/CantTouchThis.png" /></center>
</body>
</html>
CANTTOUCH;
die($page);
}
?>

View File

@ -1,25 +0,0 @@
<?php
define('SAFE', true);
$LockedPages = array();
include("Pieces/header.htm");
if (!empty($_GET['page'])) {
$page = "index";
$TmpPage = basename($_GET['page']);
// If it's not a disallowed path, and if the file exists, update $page
if (!in_array($TmpPage, $LockedPages) && file_exists("Pieces/Community/{$TmpPage}.htm")) {
$page = $TmpPage;
}
} else {
$page = "index";
}
// Include $page
include("Pieces/Community/$page.htm");
include("Pieces/footer.htm");
?>

View File

@ -1,17 +0,0 @@
<?php
define('SAFE', true);
$LockedPages = array();
if(!empty($_GET['code']) && !empty($_GET['username'])) {
include("Pieces/header.htm");
include("Pieces/Community/verify.htm");
include("Pieces/footer.htm");
} else {
header('Location: http://localhost:8888/index.php');
}
?>

View File

@ -1,29 +0,0 @@
<?php
define('SAFE', true);
$LockedPages = array();
include("Pieces/header.htm");
if (!empty($_GET['page'])) {
$page = "home";
$TmpPage = basename($_GET['page']);
// If it's not a disallowed path, and if the file exists, update $page
if (!in_array($TmpPage, $LockedPages) && file_exists("Pieces/{$TmpPage}.htm")) {
$page = $TmpPage;
}
} else {
$page = "home";
}
if($page == "home") {
include("Pieces/slider.htm");
}
// Include $page
include("Pieces/$page.htm");
include("Pieces/footer.htm");
?>

View File

@ -1,32 +0,0 @@
<footer>
<div class="box">
<div style="padding-top: 8px;">
<section class="splash">
<img src="../Resources/Images/Logos/LogoV7B.png" style="width: 90%; display: block; margin: 0px auto; margin-bottom: -12px;" />
<a href="../index.php?page=privacy">Privacy</a> | <a href="../index.php?page=tandc">The T&amp;C</a> <br />
<p style="width: 200px; margin: 0px auto;">
Copyright &copy; 2014, Mad Splash. <br />
All trademarked stuff is the property of it's respective owner(s).
</p>
</section>
<section>
<h2>OTHER STUFFS</h2>
<ul>
<li><a href="#">Our staff</a></li>
<li><a href="#">Jobs here</a></li>
</ul>
</section>
<section>
<h2>PROJECTS</h2>
<ul>
<li><a href="../index.php?page=projects&project=tbfa">Battles for Arthos</a></li>
<li><a href="../index.php?page=projects&project=therpg">The RPG</a></li>
</ul>
</section>
</div>
</div>
</footer>
</body>
</html>

View File

@ -1,53 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Blog | Mad Splash!</title>
<link rel="stylesheet" href="../Resources/CSS/MadSplash_v3.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/FormStyles.css" type="text/css" />
<link rel="stylesheet" href="../Resources/CSS/CustomFonts.css" type="text/css" />
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<!--[if lte IE 7]>
<script src="js/IE8.js" type="text/javascript"></script><![endif]-->
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" media="all" href="../Resources/CSS/ie6.css"/><![endif]-->
</head>
<body id="index" class="home">
<?php
include('../Resources/Scripts/PHP/Library.php');
require_once('../Resources/Scripts/PHP/SuperNav.php');
$display = new DisplayModule();
?>
<header>
<img class="Logo" src="../Resources/Images/Logos/LogoV7.png" alt="Mad Splash" title="Mad Splash!" />
<nav>
<ul>
<li><a class="navLink" href="../index.php">Home</a></li>
<li><a class="navLink" href="blog.php">Blog</a></li>
<li><a class="navLink" href="http://forums.madsplash.net/">Forums</a></li>
<li class="dropdown">
<a class="dropLink" href="../projects.php">Projects</a>
<div class="drop">
<section>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="../projects.php?a=main&type=game">Games</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="../projects.php?a=main&type=book">Books</a>
<a style="font: bold 18px Arial, Geneva, sans-serif;" href="../projects.php?a=main&type=show">Shows</a>
</section>
<div class="clear"> </div>
</div>
</li>
</ul>
</nav>
</header>

View File

@ -1,60 +0,0 @@
<?php
define('SAFE', true);
include("Pieces/header.htm");
$CommentForm = GetTemplate('comments/episodeform');
if(!empty($_GET['show'])) { $showid = $_GET['show']; } else { $showid = 1; }
if(!empty($_GET['episode'])) { $epnum = $_GET['episode']; } else { $epnum = 1; }
$episode = new Show($showid);
$epdata = $episode->EpisodeArray[$epnum - 1];
if($epdata['comments'] == 1) { $oneOrMore = $epdata['comments'] . " Comment"; } else { $oneOrMore = $epdata['comments'] . " Comments"; }
if($epdata['comments'] == 0) {
$epComments = '<p style="padding: 4px 8px;">No comments? Be the first to comment on this video!</p>';
} else {
$epComments = $episode->GetEpisodeComments($_GET['episode']);
}
if(!empty($_COOKIE['MadSplashUser'])) { $form = ParseTemplate($CommentForm, array('epid' => $_GET['episode'], 'id' => $_GET['show'])); } else { $form = ''; }
$data = array(
't' => $epdata['title'],
'l' => $epdata['embed'],
'd' => $epdata['description'],
'thumb' => $episode->Thumbnail,
'comments' => $epComments,
'ccount' => $oneOrMore,
'form' => $form
);
include("Pieces/Templates/show.php");
foreach($data as $a => $b) {
$template = str_replace("{{{" . $a . "}}}", $b, $template);
}
echo $template;
include("Pieces/footer.htm");
?>

View File

@ -0,0 +1,56 @@
@font-face {
font-family: 'Bebas';
src: url('../fonts/BebasNeue-webfont.eot');
src: url('../fonts/BebasNeue-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/BebasNeue-webfont.woff') format('woff'),
url('../fonts/BebasNeue-webfont.ttf') format('truetype'),
url('../fonts/BebasNeue-webfont.svg#BebasNeueRegular') format('svg');
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Minecraft";
src: url("../fonts/Minecraft_font.eot?") format("eot"),
url("../fonts/Minecraft_font.woff") format("woff"),
url("../fonts/Minecraft_font.ttf") format("truetype"),
url("../fonts/Minecraft_font.svg#Minecraft") format("svg");
font-weight:normal;
font-style:normal;
}
@font-face {
font-family: 'Candara';
src: url('../fonts/candara-webfont.eot');
src: url('../fonts/candara-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/candara-webfont.woff') format('woff'),
url('../fonts/candara-webfont.ttf') format('truetype'),
url('../fonts/candara-webfont.svg#CandaraRegular') format('svg');
}
@font-face {
font-family: 'CandaraB';
src: url('../fonts/candarab-webfont.eot');
src: url('../fonts/candarab-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/candarab-webfont.woff') format('woff'),
url('../fonts/candarab-webfont.ttf') format('truetype'),
url('../fonts/candarab-webfont.svg#CandaraBold') format('svg');
}
@font-face {
font-family: 'Handwriting';
src: url('../fonts/SF_Arch_Rival-webfont.eot');
src: url('../fonts/SF_Arch_Rival-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/SF_Arch_Rival-webfont.woff') format('woff'),
url('../fonts/SF_Arch_Rival-webfont.ttf') format('truetype'),
url('../fonts/SF_Arch_Rival-webfont.svg#sf_arch_rivalregular') format('svg');
}
@font-face {
font-family: 'ZeroNero';
src: url('../fonts/zeronero-webfont.eot');
src: url('../fonts/zeronero-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/zeronero-webfont.woff') format('woff'),
url('../fonts/zeronero-webfont.ttf') format('truetype'),
url('../fonts/zeronero-webfont.svg#zeroneroblack') format('svg');
}

View File

@ -1,11 +1,19 @@
:root {
--std-box-shadow: rgba(0, 0, 0, 0.1);
}
/* @group High level */
* { margin: 0; padding: 0; border: none; }
* { margin: 0; padding: 0; border: none; box-sizing: border-box; }
*:focus { outline: none !important; }
html { background: #cacbca url('../Images/Backgrounds/NewOceanWave.jpg') fixed;
html { background: #cacbca url(/assets/images/Backgrounds/oceanwave.jpg) fixed;
-webkit-background-size: cover; -o-background-size: cover; background-size: cover; }
body { font: 14px Arial, Helvetica, Geneva, sans-serif; margin: 0px 0px 0px 0px; color: #444; line-height: 18px; }
body {
color: #333;
font-size: 16px;
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
a, a:visited { text-decoration: none; color: #4aa1ef; }
a:hover { text-decoration: none; color: #008be8; cursor: pointer; }
@ -16,32 +24,52 @@ img.Emote { position: relative; top: 3px; }
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */
/* @group Container */
.container {
width: 100%;
padding: 0 calc(var(--grid-gutter) / 2);
margin: 0 auto;
}
@media (min-width: 576px) { .container { max-width: 540px; } }
@media (min-width: 768px) { .container { max-width: 720px; } }
@media (min-width: 992px) { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1170px; } }
.container-fluid {
width: 100%;
padding: 0 calc(var(--grid-gutter) / 2);
margin: 0 auto;
}
/* @end */
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */
/* @group Header */
header {
width: 960px;
z-index: 100;
width: 100%;
height: 100px;
margin: 0px auto;
z-index: 1;
position: relative;
border-top: 4px solid #4aa1ef;
margin-top: 2rem;
border-radius: 4px;
background: #fffffe url('../Images/Backgrounds/Wave3.png') no-repeat right top;
background: #fffffe url('/assets/images/Backgrounds/Wave3.png') no-repeat center top;
background-size: cover;
box-shadow: 0px 2px 5px rgba(100, 100, 100, 0.5);
box-shadow: 0px 2px 5px var(--std-box-shadow);
}
img.Logo {
right: 24px;
float: left;
bottom: 10px;
z-index: 5000;
height: 130px;
position: relative;
margin-right: 24px;
display: inline-block;
transform: rotate(-2deg);
-ms-transform: rotate(-2deg); /* IE 9 */
-webkit-transform: rotate(-2deg); /* Safari and Chrome */
}
/* @end */
@ -53,7 +81,6 @@ nav {
top: 61px;
float: right;
position: relative;
display: inline-block;
}
nav ul { list-style: none; }
@ -78,7 +105,7 @@ nav ul li.dropdown:hover div.drop {
background-color: #666;
}
div.drop section { min-height: 100px; max-width: 210px; min-width: 120px; display: inline-block; float: left; }
div.drop section { min-height: 100px; max-width: 210px; min-width: 120px; float: left; }
div.drop h2 { font: bold 26px "Bebas", Arial, Geneva, sans-serif; color: white; margin-bottom: -2px; }
nav ul li a.navLink, nav ul li a.dropLink { color: inherit !important; }
@ -104,14 +131,14 @@ div.drop a:after { content: none !important; }
/* @group Slider */
section#slider {
width: 100%;
bottom: 48px;
height: 424px;
z-index: 1;
min-width: 960px;
width: 100%;
position: relative;
margin-bottom: -86px;
background-color: #666;
border-bottom: 2px solid #fffffe;
margin-top: 2rem;
border-radius: 4px;
overflow: hidden;
box-shadow: 0px 2px 5px var(--std-box-shadow);
}
section#slider div.slide {
@ -139,14 +166,15 @@ section#slider div.slide a.slideLink:hover {
/* ------------------------------------------------------------------------------------------------------- */
section#body {
width: 960px;
z-index: 100;
width: 100%;
z-index: 1;
min-height: 240px;
margin: 0px auto;
margin-top: 2rem;
border-radius: 4px;
overflow: hidden;
position: relative;
background-color: #fffffe;
border-top: 3px solid #4aa1ef;
box-shadow: 0px 2px 5px var(--std-box-shadow), inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
section#leftColumn { width: 600px; float: left; padding: 2px 8px 8px 8px; }
@ -456,89 +484,98 @@ a.projectThumb:hover { cursor: pointer; }
/* ------------------------------------------------------------------------------------------------------- */
footer {
margin: 2rem 0;
border-radius: 4px;
width: 100%;
height: 200px;
overflow: hidden;
background-color: #666;
z-index: 2;
display: flex;
justify-content: space-around;
padding: 2rem;
color: white;
background-color: #1b1b1b;
background-image: linear-gradient(to bottom, #222222, #111111);
box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1);
}
footer div.box {
width: 960px;
height: 180px;
footer ul {
list-style: none;
}
footer .logo {
display: block;
margin: 0px auto;
max-height: 180px;
background-color: #008be8;
}
footer div section { color: #666; display: inline-block; margin-right: 34px; margin-top: 16px; }
footer a { color: #333 !important; }
footer a:hover { color: #fffffe !important; }
footer h2 { color: #fffffe; font: bold 28px 'Bebas', Arial, Geneva, sans-serif; }
footer div section ul { list-style: none; }
footer div section.splash { width: 240px; float: left; text-align: center; color: #fffffe; font-size: 12px;
margin-right: 8px; margin-top: 4px; }
footer div section.splash a { border: none; color: #fffffe; padding-left: 0; font-size: 14px; font-weight: bold; }
footer div section.splash a:hover { border: none; color: orange; }
footer .copy {
margin-top: 1rem;
max-width: 300px;
text-align: center;
}
footer h2 {
color: white;
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
}
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */
section#SuperNav {
width: 960px;
color: #bbb;
height: 34px;
z-index: 4000;
font-size: 12px;
background: #666;
margin: 0px auto;
line-height: 32px;
font-weight: bold;
position: relative;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 40px;
padding: 0 1rem;
color: #999;
background-color: #1b1b1b;
background-image: linear-gradient(to bottom, #222222, #111111);
box-shadow: 0px 2px 5px var(--std-box-shadow);
border-bottom-left-radius: 4px;
border-bottom-right-radius: 4px;
}
section#SuperNav .socials {
display: flex;
align-items: center;
}
div.CrossNav {
height: 100%;
display: flex;
align-items: center;
color: #bbb;
margin: 3px;
width: 41px;
height: 28px;
float: right;
z-index: 1000;
font-size: 11px;
line-height: 11px;
padding: 0px 12px;
padding-left: 12px;
position: relative;
border-left: 1px solid #888;
padding-left: 0.75rem;
margin-left: 1rem;
border-left: 1px solid rgba(255, 255, 255, 0.2);
}
div.CrossNav:after { content: ' »'; color: #bbb; position: relative; bottom: 10px; left: 1px; font: bold 16px sans-serif; }
div.CrossNav:hover { cursor: pointer; }
div.CrossNav ul {
top: 28px;
padding: 0;
opacity: 0;
right: -3px;
padding: 1rem;
right: -1rem;
z-index: 999;
width: 240px;
min-width: 160px;
display: none;
position: absolute;
visibility: hidden;
background-color: #666;
color: #999;
background-color: #1b1b1b;
background-image: linear-gradient(to bottom, #222222, #111111);
border-radius: 4px;
box-shadow: 0px 2px 5px rgba(100, 100, 100, 0.5);
}
div.CrossNav ul:hover { cursor: default; }
div.CrossNav ul li {
width: 232px;
display: block;
margin: 0px auto;
padding: 6px 6px;
}
div.CrossNav ul li.footer {
margin: 0;
padding: 0;
color: #fff;
width: 240px;
font-size: 12px;
line-height: 12px;
font-weight: normal;
background-color: #888;
display: flex;
&:not(:last-child) {
margin-bottom: 1rem;
}
p {
min-width: 200px;
}
}
div.CrossNav:hover ul {
display: block;
@ -546,20 +583,19 @@ div.CrossNav:hover ul {
visibility: visible;
}
div.CrossNav ul li.RPG { padding-bottom: 8px; cursor: pointer; }
div.CrossNav ul li.RPG { cursor: pointer; }
div.CrossNav ul li.RPG img { margin-right: 1rem; }
div.CrossNav ul li.RPG:hover { color: white; }
div.CrossNav ul li.RPG a.RPGLink { color: #ff7e00; font-weight: bold; text-shadow: 0 1px 1px rgba(60, 60, 60, 0.3);
font-size: 14px; line-height: 16px; margin-bottom: 4px; }
div.CrossNav ul li.RPG:hover a.RPGLink { color: inherit; }
a.Twitter { height: 32px; width: 32px; display: inline-block;
background-image: url('../Images/Icons/Social/Twitter.png'); }
a.Twitter:hover { width: 32px; height: 32px;
background-image: url('../Images/Icons/Social/TwitterHOV.png'); }
a.YouTube { height: 32px; width: 32px; display: inline-block;
background-image: url('../Images/Icons/Social/YouTube.png'); }
a.YouTube:hover { width: 32px; height: 32px;
background-image: url('../Images/Icons/Social/YouTubeHOV.png');}
a.Twitter { height: 28px; width: 28px; display: inline-block;
background-image: url('../images/Icons/Social/Twitter.png'); background-size: cover; }
a.Twitter:hover { background-image: url('../images/Icons/Social/TwitterHOV.png'); }
a.YouTube { height: 28px; width: 28px; display: inline-block; margin-right: 0.5rem;
background-image: url('../images/Icons/Social/YouTube.png'); background-size: cover; }
a.YouTube:hover { background-image: url('../images/Icons/Social/YouTubeHOV.png');}
/* ------------------------------------------------------------------------------------------------------- */
/* ------------------------------------------------------------------------------------------------------- */

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Some files were not shown because too many files have changed in this diff Show More