Jaden
not so active
It's Moonshine with another Habbo Development. Hopefully, since I'm already deep into progress on this project i'll decide to release.
FAQ:
What is MoonPHP, when will it be released?
MoonPHP is a simple, yet advanced content management system written in PHP using no unofficial frameworks such as "xcache" etc. I focused on mainly on the simplicity and neatness of code and code structure while writing the main units which makes up MoonPHP's basic core infrastructure.
MoonPHP was written and has been active since July 16, 2015 and is now at version 3.0.3 BETA
What makes MoonPHP better than its competition?
To be frankly honest with you, I feel as though these CMS's that were written along time ago, such as Rev and Uber CMS, are not only deprecated-- they are obsolete, and can no longer be improved... just manipulated to the point where the CMS and its core classes aren't even needed anymore.
MoonPHP Security, Features, Enterprise.
MoonPHP has a variety of features a basic list of the most advanced features we have on said CMS. Here we have a brief explanation on how they work
- Multi Lingual system and Geo locator API class which detects your country code based on your IP Address then searches the array for the language code which is matched to said country code-- if nothing is found, your language is not compatible and the system will render the default language which is default English
- Forgot Password and email confirmation is another feature of MoonPHP, we've written our own SMTP Mailer class in PHP to send you emails from the hotel, this is an automated process but also can send mails to a user via Housekeeping.
- Password Hashing MoonPHP's hashing system was based off of blowfish as it uses a salt to encrypt the password and the password is never actually decrypted on authentication-- just re-encrypted and checked for similarity. We use computer-generated salts 1 salt per user (randomized).
- Compatibility MoonPHP will work with all mainstream emulators (and my own) such as Phoenix, Uber, Mango, Habbo (NodeJS), Kryptos (Java Emulator I'm working on), Plus, Azure, Mercury, etc.
- Minimail, Hotrooms, Groups, Homes is an asset of MoonPHP. However its not our first priority but we'll get to it sooner or later (Minimail and Hotrooms are already finished)
- News page is replicated to work exactly like ex.habbo.com
- Avatar Selection/Avatar Creation/Avatar Settings is a prime asset of MoonPHP and we have already developed these features on our CMS so no need to worry about this getting left behind.
- Quickregister, in-game Avatar Editor has been written and added to MoonPHP-- this took no time to be frank with you all.
- Housekeeping, Store the store has been started on, the housekeeping has not. Although I do have an admin dashboard which I paid for on themeforest so I will be using that as a base. Store payments are automated once payment is complete the purchase is automatically added to your account. (To prevent confusion we've added a page in which list all your payments and transactions)
MoonPHP Snippets? Credits?
Keep reading for credits, snippets will be posted soon...
NOTICE:
MoonPHP is a framework.
Please do not ruin my CMS like most of you do with RevCMS. Learn how to use the database class because believe it or not, the way the database class is structured it eliminates the need for bare MySQL queries. Yet, I've included a Query() function although labeled it as deprecated for the hard headed kids who don't want to learn how to use the database functions to their advantage.
Database Structure:
There is no need AT ALL for bare MySQL queries as MoonPHP has replicated every possible function you could need for a basic Habbo CMS.
Insert to database ->
PHP:
<?php
global $MySql;
$MySql->Insert('users', [ 'username' => 'hilol232' ]);
?>
Reassuring statements
I'll eventually write a guide on how to utilize this CMS and operate it to its best abilities on conclusion of release.
READ COMMENTED LINES
PHP:
// File name: EN.php because the system works by grabbing your language code by your country code
// If your language or country code is not recognized by MoonPHP than your language is not supported
// Unsupported languages would just render the default language file being EN.php
// MoonPHP Multi-lingual system (You will not actually see these comments in the real CMS)
// echo $Language->TypeMeIn; would return "Hey, you forgot to fill me!"
return (object)array(
'InvalidSecurityCode' => 'The security code was invalid, please try again.',
'TypeMeIn' => 'Hey, you forgot to fill me!',
'EnterMail' => 'Please enter a valid email address!',
'EnterPassword' => 'Please enter a valid email address',
'EnterBirthdate' => 'Please supply a valid birthdate',
'EnterTerms' => 'Please accept the terms of service',
'PasswordShort' => 'Your password needs be at least 6 characters long',
'MailInUse' => "The email you gave is already in use. If you're trying to create a new character, please <a href='{hotel_url}'>log in</a> with your Habbo account and click Add Character.",
'PasswordLabel' => 'Password',
'LoginSubmit' => 'Login',
'LoginErrorPassword' => '',
'RememberMe' => 'Keep me logged in',
'ForgotPassword' => 'Forgot your password?',
'FbButton' => 'Login with Facebook',
'WaysToLogin' => 'More ways to login',
'JoinButton' => 'Join Here',
'JoinButtonSmall' => "(It's free)",
...
PHP:
// Insert function for MoonPHP's Database Engine.[/SIZE]
// Basic understanding on how it works under the hood
/**
* Used for secure insert executions to the database.
* @param $table table name
* @param array $data an array of columns and values
* @return string
*/
final public function Insert($table, array $data)
{
ksort($data);
$fieldNames = implode(',', array_keys($data));
$fieldValues = ':' . implode(', :', array_keys($data));
$stmt = $this->sql->prepare("INSERT INTO $table ($fieldNames) VALUES ($fieldValues)");
foreach ($data as $key => $value) {
$stmt->bindValue(":$key", $value);
}
$stmt->execute();
$this->rowCount = $stmt->rowCount();
return $this->sql->lastInsertId();
}
PHP:
// MoonPHP's page rendering system.
// Route/URL -> Route to Page Name -> Page Name to Page.php
// Caching is turned on for pages with a certain statement at the top.
global $Users;
$this->Title = 'Home';
$this->AddCSS('{gallery_url}/web-gallery/static/styles/common.css');
$this->AddJS('{gallery_url}/web-gallery/static/js/libs2.js');
$this->AddJS('{gallery_url}/web-gallery/static/js/visual.js');
$this->AddJS('{gallery_url}/web-gallery/static/js/libs.js');
$this->AddJS('{gallery_url}/web-gallery/static/js/common.js');
$this->AddJS('{gallery_url}/web-gallery/static/js/fullcontent.js');
$this->AddCSS('//fonts.googleapis.com/css?family=Ubuntu:400,700,400italic,700italic|Ubuntu+Medium');
$this->DrawHead('Header-JS');
$this->AddCSS('{gallery_url}/web-gallery/static/styles/lightweightmepage.css');
$this->WriteHead('<meta name="build" content="PRODUCTION-BUILD4019 - 31.08.2015 22:08 - com" />');
$this->Body['id'] = 'home';
include(HABBO.'/Includes/Header.php');
$PageId = 1;
include(HABBO.'/Includes/Navigator.php');
$this->Write('<div id="container">');
$this->Write('<div id="content" style="position: relative" class="clearfix">');
$this->Draw('Me-Info');
$this->Write('</div>');
$this->Write('</div>');
$this->Write('<script type="text/javascript">if (!$(document.body).hasClassName(\'process-template\')) { Rounder.init(); }</script>');
You must be registered for see links
Quickregister JSon Error Parsing
You must be registered for see links
Quickregister Captcha
You must be registered for see links
Client Register [(User Selection) Wrote an API to generate smart usernames]
You must be registered for see links
Client Register (Room Selection)
You must be registered for see links
Me page
You must be registered for see links
Avatar Selection
You must be registered for see links
News page (Will be rewritten exactly like Habbo's)
You must be registered for see links
Store page using red coins as CMS currency (optional)
You must be registered for see links
Caching of Birthdate, Password Salt, etc.Developers & Credits
Jaden Moonshine (Only Developer)
Credits
azaidi as I used his QuickTPL as a guide to writing my template system.
@Kiss for encouragement while in development stages (I guess)
Last edited: