From fcc1dcdf1fc5dc24562277dfdc4abb110a06d69b Mon Sep 17 00:00:00 2001 From: flashwave Date: Fri, 6 Nov 2015 23:30:37 +0100 Subject: [PATCH] r20151106 Signed-off-by: Flashwave --- _sakura/components/Comments.php | 4 +- .../{Configuration.php => Config.php} | 4 +- _sakura/components/{Upload.php => File.php} | 6 +- _sakura/components/Forums.php | 2 +- _sakura/components/Main.php | 36 +++--- _sakura/components/Payments.php | 4 +- _sakura/components/Session.php | 2 +- _sakura/components/Template.php | 9 +- _sakura/components/Templates.php | 81 ------------ _sakura/components/Urls.php | 2 +- _sakura/components/User.php | 27 +--- _sakura/components/Users.php | 108 ++++++++-------- _sakura/components/database/mysql.php | 30 ++--- _sakura/sakura.php | 119 +++++++++--------- public/404.php | 11 +- public/authenticate.php | 36 ++++-- public/faq.php | 11 +- public/group.php | 11 +- public/imageserve.php | 16 +-- public/index.php | 21 ++-- public/manage.php | 11 +- public/members.php | 20 ++- public/news.php | 27 ++-- public/posting.php | 67 +++++++--- public/profile.php | 11 +- public/report.php | 12 +- public/search.php | 11 +- public/settings.php | 79 ++++++------ public/support.php | 49 +++++--- public/viewforum.php | 25 +++- public/viewtopic.php | 18 ++- 31 files changed, 460 insertions(+), 410 deletions(-) rename _sakura/components/{Configuration.php => Config.php} (98%) mode change 100755 => 100644 rename _sakura/components/{Upload.php => File.php} (54%) mode change 100755 => 100644 delete mode 100755 _sakura/components/Templates.php diff --git a/_sakura/components/Comments.php b/_sakura/components/Comments.php index b25aa1e..835e5f9 100755 --- a/_sakura/components/Comments.php +++ b/_sakura/components/Comments.php @@ -117,12 +117,12 @@ class Comments { // Check if the comment is long enough - if (strlen($content) < Configuration::getConfig('comment_min_length')) { + if (strlen($content) < Config::getConfig('comment_min_length')) { return [0, 'TOO_SHORT']; } // Check if the comment isn't too long - if (strlen($content) > Configuration::getConfig('comment_max_length')) { + if (strlen($content) > Config::getConfig('comment_max_length')) { return [0, 'TOO_LONG']; } diff --git a/_sakura/components/Configuration.php b/_sakura/components/Config.php old mode 100755 new mode 100644 similarity index 98% rename from _sakura/components/Configuration.php rename to _sakura/components/Config.php index 035aebf..e935db1 --- a/_sakura/components/Configuration.php +++ b/_sakura/components/Config.php @@ -6,10 +6,10 @@ namespace Sakura; /** - * Class Configuration + * Class Config * @package Sakura */ -class Configuration +class Config { // Configuration data private static $local = []; diff --git a/_sakura/components/Upload.php b/_sakura/components/File.php old mode 100755 new mode 100644 similarity index 54% rename from _sakura/components/Upload.php rename to _sakura/components/File.php index b2301ed..e751a5c --- a/_sakura/components/Upload.php +++ b/_sakura/components/File.php @@ -1,14 +1,14 @@ isSMTP(); // Set the SMTP server host - $mail->Host = Configuration::getConfig('smtp_server'); + $mail->Host = Config::getConfig('smtp_server'); // Do we require authentication? - $mail->SMTPAuth = Configuration::getConfig('smtp_auth'); + $mail->SMTPAuth = Config::getConfig('smtp_auth'); // Do we encrypt as well? - $mail->SMTPSecure = Configuration::getConfig('smtp_secure'); + $mail->SMTPSecure = Config::getConfig('smtp_secure'); // Set the port to the SMTP server - $mail->Port = Configuration::getConfig('smtp_port'); + $mail->Port = Config::getConfig('smtp_port'); // If authentication is required log in as well - if (Configuration::getConfig('smtp_auth')) { - $mail->Username = Configuration::getConfig('smtp_username'); - $mail->Password = base64_decode(Configuration::getConfig('smtp_password')); + if (Config::getConfig('smtp_auth')) { + $mail->Username = Config::getConfig('smtp_username'); + $mail->Password = base64_decode(Config::getConfig('smtp_password')); } // Add a reply-to header - $mail->addReplyTo(Configuration::getConfig('smtp_replyto_mail'), Configuration::getConfig('smtp_replyto_name')); + $mail->addReplyTo(Config::getConfig('smtp_replyto_mail'), Config::getConfig('smtp_replyto_name')); // Set a from address as well - $mail->setFrom(Configuration::getConfig('smtp_from_email'), Configuration::getConfig('smtp_from_name')); + $mail->setFrom(Config::getConfig('smtp_from_email'), Config::getConfig('smtp_from_name')); // Set the addressee foreach ($to as $email => $name) { @@ -315,8 +315,8 @@ class Main $htmlMail = file_get_contents(ROOT . '_sakura/templates/htmlEmail.tpl'); // Replace template tags - $htmlMail = str_replace('{{ sitename }}', Configuration::getConfig('sitename'), $htmlMail); - $htmlMail = str_replace('{{ siteurl }}', '//' . Configuration::getConfig('url_main'), $htmlMail); + $htmlMail = str_replace('{{ sitename }}', Config::getConfig('sitename'), $htmlMail); + $htmlMail = str_replace('{{ siteurl }}', '//' . Config::getConfig('url_main'), $htmlMail); $htmlMail = str_replace('{{ contents }}', self::mdParse($body), $htmlMail); // Set HTML body @@ -345,7 +345,7 @@ class Main { // Run common sanitisation function over string - $string = htmlentities($string, ENT_NOQUOTES | ENT_HTML401, Configuration::getConfig('charset')); + $string = htmlentities($string, ENT_NOQUOTES | ENT_HTML401, Config::getConfig('charset')); $string = stripslashes($string); $string = strip_tags($string); @@ -482,7 +482,7 @@ class Main // Get CloudFlare Subnet list $cfhosts = file_get_contents( - ROOT . '_sakura/' . Configuration::getLocalConfig('data', 'cfipv' . (self::ipVersion($ip))) + ROOT . '_sakura/' . Config::getLocalConfig('data', 'cfipv' . (self::ipVersion($ip))) ); // Replace \r\n with \n @@ -617,7 +617,7 @@ class Main $iso3166 = json_decode( utf8_encode( file_get_contents( - ROOT . '_sakura/' . Configuration::getLocalConfig('data', 'iso3166') + ROOT . '_sakura/' . Config::getLocalConfig('data', 'iso3166') ) ), true diff --git a/_sakura/components/Payments.php b/_sakura/components/Payments.php index 157cb42..6dffa41 100755 --- a/_sakura/components/Payments.php +++ b/_sakura/components/Payments.php @@ -32,8 +32,8 @@ class Payments try { self::$paypal = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( - Configuration::getConfig('paypal_client_id'), - Configuration::getConfig('paypal_secret') + Config::getConfig('paypal_client_id'), + Config::getConfig('paypal_secret') ) ); } catch (\Exception $e) { diff --git a/_sakura/components/Session.php b/_sakura/components/Session.php index 70c718c..8bb0027 100755 --- a/_sakura/components/Session.php +++ b/_sakura/components/Session.php @@ -93,7 +93,7 @@ class Session } // IP Check - $ipCheck = Configuration::getConfig('session_check'); + $ipCheck = Config::getConfig('session_check'); // Origin checking if ($ipCheck) { diff --git a/_sakura/components/Template.php b/_sakura/components/Template.php index 22da82d..a30aee8 100644 --- a/_sakura/components/Template.php +++ b/_sakura/components/Template.php @@ -25,7 +25,7 @@ class Template public function __construct() { // Set template to default - $this->setTemplate(Configuration::getConfig('site_style')); + $this->setTemplate(Config::getConfig('site_style')); } // Set a template name @@ -42,11 +42,6 @@ class Template // Parse and store the configuration $this->templateOptions = parse_ini_file($confPath, true); - // Make sure we're not using a manage template for the main site or the other way around - if (defined('SAKURA_MANAGE') && (bool) $this->templateOptions['manage']['mode'] != (bool) SAKURA_MANAGE) { - trigger_error('Incorrect template type', E_USER_ERROR); - } - // Set variables $this->templateName = $name; @@ -64,7 +59,7 @@ class Template $twigEnv = []; // Enable caching - if (Configuration::getConfig('enable_tpl_cache')) { + if (Config::getConfig('enable_tpl_cache')) { $twigEnv['cache'] = ROOT . 'cache'; } diff --git a/_sakura/components/Templates.php b/_sakura/components/Templates.php deleted file mode 100755 index 9a489b3..0000000 --- a/_sakura/components/Templates.php +++ /dev/null @@ -1,81 +0,0 @@ -addExtension(new Twig_Extension_StringLoader()); - } - - // Render template - public static function render($file, $tags) - { - try { - return self::$engine->render($file, $tags); - } catch (\Exception $e) { - trigger_error($e->getMessage(), E_USER_ERROR); - } - } -} diff --git a/_sakura/components/Urls.php b/_sakura/components/Urls.php index 7552ffa..1fc7ced 100755 --- a/_sakura/components/Urls.php +++ b/_sakura/components/Urls.php @@ -284,7 +284,7 @@ class Urls } // Check if mod_rewrite is enabled - $rewrite = ($rewrite === null ? Configuration::getConfig('url_rewrite') : $rewrite) ? 1 : 0; + $rewrite = ($rewrite === null ? Config::getConfig('url_rewrite') : $rewrite) ? 1 : 0; // Format urls $formatted = vsprintf($this->urls[$lid][$rewrite], $args); diff --git a/_sakura/components/User.php b/_sakura/components/User.php index 0fca361..2100f3a 100755 --- a/_sakura/components/User.php +++ b/_sakura/components/User.php @@ -19,7 +19,6 @@ class User // Initialise the user object public function __construct($uid) { - // Get the user database row $this->data = Database::fetch( 'users', @@ -65,7 +64,6 @@ class User // Check if the user has the specified ranks public function checkIfUserHasRanks($ranks) { - // Check if the main rank is the specified rank if ($this->mainRank->id() === $ranks) { return true; @@ -99,29 +97,26 @@ class User public function country() { return [ - 'long' => Main::getCountryName($this->data['user_country']), 'short' => $this->data['user_country'], - ]; } // Check if a user is online public function checkOnline() { - return $this->data['user_last_online'] > (time() - Configuration::getConfig('max_online_time')); + return $this->data['user_last_online'] > (time() - Config::getConfig('max_online_time')); } // Get user's forum statistics public function forumStats() { - return Forum::getUserStats($this->data['user_id']); + return Forums::getUserStats($this->data['user_id']); } // Add a new friend public function addFriend($uid) { - // Create the foreign object $user = new User($uid); @@ -152,7 +147,6 @@ class User // Remove a friend public function removeFriend($uid, $deleteRequest = false) { - // Create the foreign object $user = new User($uid); @@ -187,7 +181,6 @@ class User // Check if the user is friends with the currently authenticated public function checkFriends($with) { - // Get the friend's friends $friend = in_array($this->data['user_id'], (new User($with))->getFriends()); @@ -236,18 +229,15 @@ class User public function elapsed($append = ' ago', $none = 'Just now') { return [ - 'joined' => Main::timeElapsed($this->data['user_registered'], $append, $none), 'lastOnline' => Main::timeElapsed($this->data['user_last_online'], $append, $none), 'birth' => Main::timeElapsed(strtotime($this->data['user_birthday']), $append, $none), - ]; } // Get the user's profile fields public function profileFields() { - // Get profile fields $profileFields = Database::fetch('profilefields'); @@ -314,7 +304,6 @@ class User // Get the user's option fields public function optionFields() { - // Get option fields $optionFields = Database::fetch('optionfields'); @@ -384,7 +373,6 @@ class User // Get all warnings issued to the user public function getWarnings() { - // Do the database query $getWarnings = Database::fetch('warnings', true, [ 'user_id' => [$this->data['user_id'], '='], @@ -462,7 +450,6 @@ class User // Get username change history public function getUsernameHistory() { - // Do the database query $changes = Database::fetch('username_history', true, [ 'user_id' => [$this->data['user_id'], '='], @@ -475,24 +462,23 @@ class User // Set a new username public function setUsername($username) { - // Create a cleaned version $username_clean = Main::cleanString($username, true); // Check if the username is too short - if (strlen($username_clean) < Configuration::getConfig('username_min_length')) { + if (strlen($username_clean) < Config::getConfig('username_min_length')) { return [0, 'TOO_SHORT']; } // Check if the username is too long - if (strlen($username_clean) > Configuration::getConfig('username_max_length')) { + if (strlen($username_clean) > Config::getConfig('username_max_length')) { return [0, 'TOO_LONG']; } // Check if this username hasn't been used in the last amount of days set in the config $getOld = Database::fetch('username_history', false, [ 'username_old_clean' => [$username_clean, '='], - 'change_time' => [(Configuration::getConfig('old_username_reserve') * 24 * 60 * 60), '>'], + 'change_time' => [(Config::getConfig('old_username_reserve') * 24 * 60 * 60), '>'], ], ['change_id', true]); // Check if anything was returned @@ -538,7 +524,6 @@ class User // Set a new e-mail address public function setEMailAddress($email) { - // Validate e-mail address if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { return [0, 'INVALID']; @@ -591,7 +576,7 @@ class User } // Check password entropy - if (Main::pwdEntropy($new) < Configuration::getConfig('min_entropy')) { + if (Main::pwdEntropy($new) < Config::getConfig('min_entropy')) { return [0, 'PASS_TOO_SHIT']; } diff --git a/_sakura/components/Users.php b/_sakura/components/Users.php index 1b7b04d..224108f 100755 --- a/_sakura/components/Users.php +++ b/_sakura/components/Users.php @@ -53,11 +53,11 @@ class Users { // Assign $uid and $sid - $uid = $uid ? $uid : (isset($_COOKIE[Configuration::getConfig('cookie_prefix') . 'id']) - ? $_COOKIE[Configuration::getConfig('cookie_prefix') . 'id'] + $uid = $uid ? $uid : (isset($_COOKIE[Config::getConfig('cookie_prefix') . 'id']) + ? $_COOKIE[Config::getConfig('cookie_prefix') . 'id'] : 0); - $sid = $sid ? $sid : (isset($_COOKIE[Configuration::getConfig('cookie_prefix') . 'session']) - ? $_COOKIE[Configuration::getConfig('cookie_prefix') . 'session'] + $sid = $sid ? $sid : (isset($_COOKIE[Config::getConfig('cookie_prefix') . 'session']) + ? $_COOKIE[Config::getConfig('cookie_prefix') . 'session'] : 0); // Get session @@ -70,20 +70,20 @@ class Users if ($sessionValid == 0 || Permissions::check('SITE', 'DEACTIVATED', $uid, 1)) { // Unset User ID setcookie( - Configuration::getConfig('cookie_prefix') . 'id', + Config::getConfig('cookie_prefix') . 'id', 0, time() - 60, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); // Unset Session ID setcookie( - Configuration::getConfig('cookie_prefix') . 'session', + Config::getConfig('cookie_prefix') . 'session', '', time() - 60, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); return false; @@ -93,20 +93,20 @@ class Users if ($sessionValid == 2) { // User ID cookie setcookie( - Configuration::getConfig('cookie_prefix') . 'id', + Config::getConfig('cookie_prefix') . 'id', $uid, time() + 604800, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); // Session ID cookie setcookie( - Configuration::getConfig('cookie_prefix') . 'session', + Config::getConfig('cookie_prefix') . 'session', $sid, time() + 604800, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); } @@ -132,7 +132,7 @@ class Users { // Check if authentication is disallowed - if (Configuration::getConfig('lock_authentication')) { + if (Config::getConfig('lock_authentication')) { return [0, 'AUTH_LOCKED']; } @@ -189,20 +189,20 @@ class Users if ($cookies) { // User ID cookie setcookie( - Configuration::getConfig('cookie_prefix') . 'id', + Config::getConfig('cookie_prefix') . 'id', $user['user_id'], time() + 604800, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); // Session ID cookie setcookie( - Configuration::getConfig('cookie_prefix') . 'session', + Config::getConfig('cookie_prefix') . 'session', $sessionKey, time() + 604800, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); } @@ -224,20 +224,20 @@ class Users // Unset User ID setcookie( - Configuration::getConfig('cookie_prefix') . 'id', + Config::getConfig('cookie_prefix') . 'id', 0, time() - 60, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); // Unset Session ID setcookie( - Configuration::getConfig('cookie_prefix') . 'session', + Config::getConfig('cookie_prefix') . 'session', '', time() - 60, - Configuration::getConfig('cookie_path'), - Configuration::getConfig('cookie_domain') + Config::getConfig('cookie_path'), + Config::getConfig('cookie_domain') ); // Return true indicating a successful logout @@ -249,17 +249,17 @@ class Users { // Check if authentication is disallowed - if (Configuration::getConfig('lock_authentication')) { + if (Config::getConfig('lock_authentication')) { return [0, 'AUTH_LOCKED']; } // Check if registration is even enabled - if (Configuration::getConfig('disable_registration')) { + if (Config::getConfig('disable_registration')) { return [0, 'DISABLED']; } // Check if registration codes are required - if (Configuration::getConfig('require_registration_code')) { + if (Config::getConfig('require_registration_code')) { // Check if the code is valid if (!self::checkRegistrationCode($regkey)) { return [0, 'INVALID_REG_KEY']; @@ -272,7 +272,7 @@ class Users } // Verify the captcha if it's enabled - if (Configuration::getConfig('recaptcha')) { + if (Config::getConfig('recaptcha')) { if (!Main::verifyCaptcha($captcha)['success']) { return [0, 'CAPTCHA_FAIL']; } @@ -284,12 +284,12 @@ class Users } // Username too short - if (strlen($username) < Configuration::getConfig('username_min_length')) { + if (strlen($username) < Config::getConfig('username_min_length')) { return [0, 'NAME_TOO_SHORT']; } // Username too long - if (strlen($username) > Configuration::getConfig('username_max_length')) { + if (strlen($username) > Config::getConfig('username_max_length')) { return [0, 'NAME_TOO_LONG']; } @@ -304,7 +304,7 @@ class Users } // Check password entropy - if (Main::pwdEntropy($password) < Configuration::getConfig('min_entropy')) { + if (Main::pwdEntropy($password) < Config::getConfig('min_entropy')) { return [0, 'PASS_TOO_SHIT']; } @@ -317,7 +317,7 @@ class Users $usernameClean = Main::cleanString($username, true); $emailClean = Main::cleanString($email, true); $password = Hashing::createHash($password); - $requireActive = Configuration::getConfig('require_activation'); + $requireActive = Config::getConfig('require_activation'); $userRank = $requireActive ? [1] : [2]; $userRankJson = json_encode($userRank); @@ -350,7 +350,7 @@ class Users } // Check if registration codes are required - if (Configuration::getConfig('require_registration_code')) { + if (Config::getConfig('require_registration_code')) { // If we do mark the registration code that was used as used self::markRegistrationCodeUsed($regkey, $uid); } @@ -364,7 +364,7 @@ class Users { // Check if authentication is disallowed - if (Configuration::getConfig('lock_authentication')) { + if (Config::getConfig('lock_authentication')) { return [0, 'AUTH_LOCKED']; } @@ -400,17 +400,17 @@ class Users // Build the e-mail $message = "Hello " . $user['username'] . ",\r\n\r\n"; - $message .= "You are receiving this notification because you have (or someone pretending to be you has) requested a password reset link to be sent for your account on \"" . Configuration::getConfig('sitename') . "\". If you did not request this notification then please ignore it, if you keep receiving it please contact the site administrator.\r\n\r\n"; + $message .= "You are receiving this notification because you have (or someone pretending to be you has) requested a password reset link to be sent for your account on \"" . Config::getConfig('sitename') . "\". If you did not request this notification then please ignore it, if you keep receiving it please contact the site administrator.\r\n\r\n"; $message .= "To use this password reset key you need to go to a special page. To do this click the link provided below.\r\n\r\n"; - $message .= "http://" . Configuration::getConfig('url_main') . $urls->format('SITE_FORGOT_PASSWORD') . "?pw=true&uid=" . $user['user_id'] . "&key=" . $verk . "\r\n\r\n"; + $message .= "http://" . Config::getConfig('url_main') . $urls->format('SITE_FORGOT_PASSWORD') . "?pw=true&uid=" . $user['user_id'] . "&key=" . $verk . "\r\n\r\n"; $message .= "If successful you should be able to change your password here.\r\n\r\n"; - $message .= "Alternatively if the above method fails for some reason you can go to http://" . Configuration::getConfig('url_main') . $urls->format('SITE_FORGOT_PASSWORD') . "?pw=true&uid=" . $user['user_id'] . " and use the key listed below:\r\n\r\n"; + $message .= "Alternatively if the above method fails for some reason you can go to http://" . Config::getConfig('url_main') . $urls->format('SITE_FORGOT_PASSWORD') . "?pw=true&uid=" . $user['user_id'] . " and use the key listed below:\r\n\r\n"; $message .= "Verification key: " . $verk . "\r\n\r\n"; $message .= "You can of course change this password yourself via the profile page. If you have any difficulties please contact the site administrator.\r\n\r\n"; - $message .= "--\r\n\r\nThanks\r\n\r\n" . Configuration::getConfig('mail_signature'); + $message .= "--\r\n\r\nThanks\r\n\r\n" . Config::getConfig('mail_signature'); // Send the message - Main::sendMail([$user['email'] => $user['username']], Configuration::getConfig('sitename') . ' password restoration', $message); + Main::sendMail([$user['email'] => $user['username']], Config::getConfig('sitename') . ' password restoration', $message); // Return success return [1, 'SUCCESS']; @@ -421,12 +421,12 @@ class Users { // Check if authentication is disallowed - if (Configuration::getConfig('lock_authentication')) { + if (Config::getConfig('lock_authentication')) { return [0, 'AUTH_LOCKED']; } // Check password entropy - if (Main::pwdEntropy($newpass) < Configuration::getConfig('min_entropy')) { + if (Main::pwdEntropy($newpass) < Config::getConfig('min_entropy')) { return [0, 'PASS_TOO_SHIT']; } @@ -470,7 +470,7 @@ class Users { // Check if authentication is disallowed - if (Configuration::getConfig('lock_authentication')) { + if (Config::getConfig('lock_authentication')) { return [0, 'AUTH_LOCKED']; } @@ -525,25 +525,25 @@ class Users $urls = new Urls(); // Build the e-mail - $message = "Welcome to " . Configuration::getConfig('sitename') . "!\r\n\r\n"; + $message = "Welcome to " . Config::getConfig('sitename') . "!\r\n\r\n"; $message .= "Please keep this e-mail for your records. Your account intormation is as follows:\r\n\r\n"; $message .= "----------------------------\r\n\r\n"; $message .= "Username: " . $user['username'] . "\r\n\r\n"; - $message .= "Your profile: http://" . Configuration::getConfig('url_main') . $urls->format('USER_PROFILE', [$user['user_id']]) . "\r\n\r\n"; + $message .= "Your profile: http://" . Config::getConfig('url_main') . $urls->format('USER_PROFILE', [$user['user_id']]) . "\r\n\r\n"; $message .= "----------------------------\r\n\r\n"; $message .= "Please visit the following link in order to activate your account:\r\n\r\n"; - $message .= "http://" . Configuration::getConfig('url_main') . $urls->format('SITE_ACTIVATE') . "?mode=activate&u=" . $user['user_id'] . "&k=" . $activate . "\r\n\r\n"; + $message .= "http://" . Config::getConfig('url_main') . $urls->format('SITE_ACTIVATE') . "?mode=activate&u=" . $user['user_id'] . "&k=" . $activate . "\r\n\r\n"; $message .= "Your password has been securely stored in our database and cannot be retrieved. "; $message .= "In the event that it is forgotten, you will be able to reset it using the email address associated with your account.\r\n\r\n"; $message .= "Thank you for registering.\r\n\r\n"; - $message .= "--\r\n\r\nThanks\r\n\r\n" . Configuration::getConfig('mail_signature'); + $message .= "--\r\n\r\nThanks\r\n\r\n" . Config::getConfig('mail_signature'); // Send the message Main::sendMail( [ $user['email'] => $user['username'], ], - Configuration::getConfig('sitename') . ' Activation Mail', + Config::getConfig('sitename') . ' Activation Mail', $message ); @@ -685,7 +685,7 @@ class Users 'regcodes', true, ['uid' => [$userId, '=']] - )[0] >= Configuration::getConfig('max_reg_keys')) { + )[0] >= Config::getConfig('max_reg_keys')) { return false; } @@ -1078,7 +1078,7 @@ class Users { // Get the ID for the premium user rank from the database - $premiumRank = Configuration::getConfig('premium_rank_id'); + $premiumRank = Config::getConfig('premium_rank_id'); // Run the check $check = self::checkUserPremium($id); diff --git a/_sakura/components/database/mysql.php b/_sakura/components/database/mysql.php index 25d6100..fed6ecd 100755 --- a/_sakura/components/database/mysql.php +++ b/_sakura/components/database/mysql.php @@ -7,7 +7,7 @@ namespace Sakura\DBWrapper; use PDO; use PDOException; -use \Sakura\Configuration; +use \Sakura\Config; /** * Class MySQL @@ -31,23 +31,23 @@ class mysql // Initialise connection $this->initConnect( ( - Configuration::getLocalConfig('database', 'unixsocket') ? + Config::getLocalConfig('database', 'unixsocket') ? $this->prepareSock( - Configuration::getLocalConfig('database', 'host'), - Configuration::getLocalConfig('database', 'database') + Config::getLocalConfig('database', 'host'), + Config::getLocalConfig('database', 'database') ) : $this->prepareHost( - Configuration::getLocalConfig('database', 'host'), - Configuration::getLocalConfig('database', 'database'), + Config::getLocalConfig('database', 'host'), + Config::getLocalConfig('database', 'database'), ( - Configuration::getLocalConfig('database', 'port') !== null ? - Configuration::getLocalConfig('database', 'port') : + Config::getLocalConfig('database', 'port') !== null ? + Config::getLocalConfig('database', 'port') : 3306 ) ) ), - Configuration::getLocalConfig('database', 'username'), - Configuration::getLocalConfig('database', 'password') + Config::getLocalConfig('database', 'username'), + Config::getLocalConfig('database', 'password') ); } @@ -88,7 +88,7 @@ class mysql { // Begin preparation of the statement - $prepare = 'SELECT ' . ($distinct ? 'DISTINCT ' : '') . ($column == '*' ? '' : '`') . $column . ($column == '*' ? '' : '`') . ' FROM `' . ($prefix ? $prefix : Configuration::getLocalConfig('database', 'prefix')) . $table . '`'; + $prepare = 'SELECT ' . ($distinct ? 'DISTINCT ' : '') . ($column == '*' ? '' : '`') . $column . ($column == '*' ? '' : '`') . ' FROM `' . ($prefix ? $prefix : Config::getLocalConfig('database', 'prefix')) . $table . '`'; // If $data is set and is an array continue if (is_array($data)) { @@ -200,7 +200,7 @@ class mysql { // Begin preparation of the statement - $prepare = 'INSERT INTO `' . ($prefix ? $prefix : Configuration::getLocalConfig('database', 'prefix')) . $table . '` '; + $prepare = 'INSERT INTO `' . ($prefix ? $prefix : Config::getLocalConfig('database', 'prefix')) . $table . '` '; // Run the foreach statement twice for (`stuff`) VALUES (:stuff) for ($i = 0; $i < 2; $i++) { @@ -241,7 +241,7 @@ class mysql { // Begin preparation of the statement - $prepare = 'UPDATE `' . ($prefix ? $prefix : Configuration::getLocalConfig('database', 'prefix')) . $table . '`'; + $prepare = 'UPDATE `' . ($prefix ? $prefix : Config::getLocalConfig('database', 'prefix')) . $table . '`'; // Run a foreach on $data and complete the statement foreach ($data as $key => $values) { @@ -294,7 +294,7 @@ class mysql { // Begin preparation of the statement - $prepare = 'DELETE FROM `' . ($prefix ? $prefix : Configuration::getLocalConfig('database', 'prefix')) . $table . '`'; + $prepare = 'DELETE FROM `' . ($prefix ? $prefix : Config::getLocalConfig('database', 'prefix')) . $table . '`'; // If $data is set and is an array continue if (is_array($data)) { @@ -333,7 +333,7 @@ class mysql { // Begin preparation of the statement - $prepare = 'SELECT COUNT(*) FROM `' . ($prefix ? $prefix : Configuration::getLocalConfig('database', 'prefix')) . $table . '`'; + $prepare = 'SELECT COUNT(*) FROM `' . ($prefix ? $prefix : Config::getLocalConfig('database', 'prefix')) . $table . '`'; // If $data is set and is an array continue if (is_array($data)) { diff --git a/_sakura/sakura.php b/_sakura/sakura.php index 509affc..b34f0e4 100755 --- a/_sakura/sakura.php +++ b/_sakura/sakura.php @@ -8,7 +8,7 @@ namespace Sakura; // Define Sakura version -define('SAKURA_VERSION', '20151104'); +define('SAKURA_VERSION', '20151106'); define('SAKURA_VLABEL', 'Eminence'); define('SAKURA_COLOUR', '#6C3082'); define('SAKURA_STABLE', false); @@ -31,17 +31,16 @@ if (version_compare(phpversion(), '5.4.0', '<')) { require_once ROOT . '_sakura/vendor/autoload.php'; require_once ROOT . '_sakura/components/Main.php'; require_once ROOT . '_sakura/components/Hashing.php'; -require_once ROOT . '_sakura/components/Configuration.php'; +require_once ROOT . '_sakura/components/Config.php'; require_once ROOT . '_sakura/components/Database.php'; require_once ROOT . '_sakura/components/Urls.php'; require_once ROOT . '_sakura/components/Template.php'; -require_once ROOT . '_sakura/components/Templates.php'; require_once ROOT . '_sakura/components/Permissions.php'; require_once ROOT . '_sakura/components/Session.php'; require_once ROOT . '_sakura/components/User.php'; require_once ROOT . '_sakura/components/Rank.php'; -require_once ROOT . '_sakura/components/Users.php'; -require_once ROOT . '_sakura/components/Forums.php'; +require_once ROOT . '_sakura/components/Users.php'; //< +require_once ROOT . '_sakura/components/Forums.php'; //< require_once ROOT . '_sakura/components/News.php'; require_once ROOT . '_sakura/components/Comments.php'; require_once ROOT . '_sakura/components/Manage.php'; @@ -62,12 +61,12 @@ set_error_handler(['Sakura\Main', 'errorHandler']); Main::init(ROOT . '_sakura/config/config.ini'); // Assign servers file to whois class -Whois::setServers(ROOT . '_sakura/' . Configuration::getLocalConfig('data', 'whoisservers')); +Whois::setServers(ROOT . '_sakura/' . Config::getLocalConfig('data', 'whoisservers')); // Check if we the system has a cron service -if (Configuration::getConfig('no_cron_service')) { +if (Config::getConfig('no_cron_service')) { // If not do an "asynchronous" call to the cron.php script - if (Configuration::getConfig('no_cron_last') < (time() - Configuration::getConfig('no_cron_interval'))) { + if (Config::getConfig('no_cron_last') < (time() - Config::getConfig('no_cron_interval'))) { // Check OS if (substr(strtolower(PHP_OS), 0, 3) == 'win') { pclose(popen('start /B ' . PHP_BINDIR . '\php.exe ' . addslashes(ROOT . '_sakura\cron.php'), 'r')); @@ -88,7 +87,7 @@ if (Configuration::getConfig('no_cron_service')) { } // Start output buffering -ob_start(Configuration::getConfig('use_gzip') ? 'ob_gzhandler' : null); +ob_start(Config::getConfig('use_gzip') ? 'ob_gzhandler' : null); // Auth check $authCheck = Users::checkLogin(); @@ -102,7 +101,7 @@ $urls = new Urls(); // Prepare the name of the template to load (outside of SAKURA_NO_TPL because it's used in imageserve.php) $templateName = defined('SAKURA_MANAGE') ? -Configuration::getConfig('manage_style') : +Config::getConfig('manage_style') : ( ( isset($currentUser->data['user_data']['userOptions']['useMisaki']) && @@ -110,105 +109,90 @@ Configuration::getConfig('manage_style') : $currentUser->checkPermission('SITE', 'ALTER_PROFILE') ) ? 'misaki' : - Configuration::getConfig('site_style') + Config::getConfig('site_style') ); if (!defined('SAKURA_NO_TPL')) { - // Initialise templating engine - Templates::init($templateName); - // Set base page rendering data $renderData = [ - - /* - * Idea for flexibility in templates and to reduce redundancy; - * Attempt to use a class instead of an assoc. array for the - * template variables since twig supports this to make accessing - * certain functions, like the time elapsed function easier. - * Update 2015-09-08: Apparently this will be added in PHP 7 so - * we'll be looking out for that. - */ - 'sakura' => [ - 'versionInfo' => [ - 'version' => SAKURA_VERSION, 'label' => SAKURA_VLABEL, 'colour' => SAKURA_COLOUR, 'stable' => SAKURA_STABLE, - ], 'cookie' => [ - - 'prefix' => Configuration::getConfig('cookie_prefix'), - 'domain' => Configuration::getConfig('cookie_domain'), - 'path' => Configuration::getConfig('cookie_path'), - + 'prefix' => Config::getConfig('cookie_prefix'), + 'domain' => Config::getConfig('cookie_domain'), + 'path' => Config::getConfig('cookie_path'), ], - 'urlMain' => Configuration::getConfig('url_main'), - 'urlApi' => Configuration::getConfig('url_api'), + 'urlMain' => Config::getConfig('url_main'), + 'urlApi' => Config::getConfig('url_api'), - 'contentPath' => Configuration::getConfig('content_path'), - 'resources' => Configuration::getConfig('content_path') . '/data/' . strtolower(Templates::$template), + 'contentPath' => Config::getConfig('content_path'), + 'resources' => Config::getConfig('content_path') . '/data/' . $templateName, - 'charset' => Configuration::getConfig('charset'), - 'siteName' => Configuration::getConfig('sitename'), - 'siteLogo' => Configuration::getConfig('sitelogo'), - 'siteDesc' => Configuration::getConfig('sitedesc'), - 'siteTags' => implode(", ", json_decode(Configuration::getConfig('sitetags'), true)), - 'dateFormat' => Configuration::getConfig('date_format'), + 'charset' => Config::getConfig('charset'), + 'siteName' => Config::getConfig('sitename'), + 'siteLogo' => Config::getConfig('sitelogo'), + 'siteDesc' => Config::getConfig('sitedesc'), + 'siteTags' => implode(", ", json_decode(Config::getConfig('sitetags'), true)), + 'dateFormat' => Config::getConfig('date_format'), 'currentPage' => '//' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'referrer' => (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null), - 'recaptchaPublic' => Configuration::getConfig('recaptcha_public'), - 'recaptchaEnabled' => Configuration::getConfig('recaptcha'), - - 'disableRegistration' => Configuration::getConfig('disable_registration'), - 'lockAuth' => Configuration::getConfig('lock_authentication'), - 'requireRegCodes' => Configuration::getConfig('require_registration_code'), - 'requireActivation' => Configuration::getConfig('require_activation'), - 'minPwdEntropy' => Configuration::getConfig('min_entropy'), - 'minUsernameLength' => Configuration::getConfig('username_min_length'), - 'maxUsernameLength' => Configuration::getConfig('username_max_length'), + 'recaptchaPublic' => Config::getConfig('recaptcha_public'), + 'recaptchaEnabled' => Config::getConfig('recaptcha'), + 'disableRegistration' => Config::getConfig('disable_registration'), + 'lockAuth' => Config::getConfig('lock_authentication'), + 'requireRegCodes' => Config::getConfig('require_registration_code'), + 'requireActivation' => Config::getConfig('require_activation'), + 'minPwdEntropy' => Config::getConfig('min_entropy'), + 'minUsernameLength' => Config::getConfig('username_min_length'), + 'maxUsernameLength' => Config::getConfig('username_max_length'), ], - 'php' => [ - 'sessionid' => \session_id(), 'time' => \time(), 'self' => $_SERVER['PHP_SELF'], - ], 'session' => [ - 'checkLogin' => $authCheck, 'sessionId' => $authCheck[1], 'userId' => $authCheck[0], - ], 'user' => $currentUser, 'urls' => $urls, - ]; // Site closing - if (Configuration::getConfig('site_closed')) { + if (Config::getConfig('site_closed')) { // Additional render data $renderData = array_merge($renderData, [ 'page' => [ - 'message' => Configuration::getConfig('site_closed_reason'), + 'message' => Config::getConfig('site_closed_reason'), ], ]); - print Templates::render('global/information.tpl', $renderData); + // Initialise templating engine + $template = new Template(); + + // Change templating engine + $template->setTemplate($templateName); + + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -227,7 +211,18 @@ if (!defined('SAKURA_NO_TPL')) { ]); Users::logout(); - print Templates::render('main/banned.tpl', $renderData); + + // Initialise templating engine + $template = new Template(); + + // Change templating engine + $template->setTemplate($templateName); + + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('main/banned.tpl'); exit; } } diff --git a/public/404.php b/public/404.php index 31848c6..9db522a 100755 --- a/public/404.php +++ b/public/404.php @@ -12,5 +12,14 @@ require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sa // Set 404 header header('HTTP/1.0 404 Not Found'); +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('global/notfound.tpl', $renderData); +echo $template->render('global/notfound.tpl'); diff --git a/public/authenticate.php b/public/authenticate.php index c16b26a..83acede 100755 --- a/public/authenticate.php +++ b/public/authenticate.php @@ -9,6 +9,12 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Page actions if (isset($_REQUEST['mode'])) { // Continue @@ -214,12 +220,12 @@ if (isset($_REQUEST['mode'])) { $_REQUEST['email'], isset($_REQUEST['tos']), ( - Configuration::getConfig('recaptcha') ? + Config::getConfig('recaptcha') ? $_REQUEST['g-recaptcha-response'] : null ), ( - Configuration::getConfig('require_registration_code') ? + Config::getConfig('require_registration_code') ? $_REQUEST['registercode'] : null ) @@ -241,7 +247,7 @@ if (isset($_REQUEST['mode'])) { 'INVALID_EMAIL' => 'Your e-mail address is formatted incorrectly.', 'INVALID_MX' => 'No valid MX-Record found on the e-mail address you supplied.', 'EMAILSENT' => 'Your registration went through! An activation e-mail has been sent.', - 'SUCCESS' => 'Your registration went through! Welcome to ' . Configuration::getConfig('sitename') . '!', + 'SUCCESS' => 'Your registration went through! Welcome to ' . Config::getConfig('sitename') . '!', ]; @@ -284,13 +290,14 @@ if (isset($_REQUEST['mode'])) { } // Print page contents or if the AJAX request is set only display the render data - print isset($_REQUEST['ajax']) ? - ( - $renderData['page']['message'] . '|' . - $renderData['page']['success'] . '|' . - $renderData['page']['redirect'] - ) : - Templates::render('global/information.tpl', $renderData); + if (isset($_REQUEST['ajax'])) { + echo $renderData['page']['message'] . '|' . + $renderData['page']['success'] . '|' . + $renderData['page']['redirect']; + } else { + $template->setVariables($renderData); + echo $template->render('global/information.tpl'); + } exit; } @@ -316,7 +323,8 @@ if (Users::checkLogin()) { ]; - print Templates::render('global/information.tpl', $renderData); + $template->setVariables($renderData); + echo $template->render('global/information.tpl'); exit; } @@ -339,9 +347,11 @@ if (isset($_REQUEST['pw']) && $_REQUEST['pw']) { $renderData['auth']['forgotKey'] = $_REQUEST['key']; } - print Templates::render('main/forgotpassword.tpl', $renderData); + $template->setVariables($renderData); + echo $template->render('main/forgotpassword.tpl'); exit; } // Print page contents -print Templates::render('main/authenticate.tpl', $renderData); +$template->setVariables($renderData); +echo $template->render('main/authenticate.tpl'); diff --git a/public/faq.php b/public/faq.php index 2edd3cf..57bc78e 100755 --- a/public/faq.php +++ b/public/faq.php @@ -17,5 +17,14 @@ $renderData['page'] = [ ]; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('main/faq.tpl', $renderData); +echo $template->render('main/faq.tpl'); diff --git a/public/group.php b/public/group.php index 4e9e770..241a15a 100755 --- a/public/group.php +++ b/public/group.php @@ -9,5 +9,14 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('group/index.tpl', $renderData); +echo $template->render('group/index.tpl'); diff --git a/public/imageserve.php b/public/imageserve.php index afd276c..f664ae4 100755 --- a/public/imageserve.php +++ b/public/imageserve.php @@ -16,7 +16,7 @@ require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sa header('Content-Type: application/octet-stream'); // Path to user uploads -$userDirPath = ROOT . Configuration::getConfig('user_uploads') . '/'; +$userDirPath = ROOT . Config::getConfig('user_uploads') . '/'; // Check if the m(ode) GET request is set if (isset($_GET['m'])) { @@ -26,17 +26,17 @@ if (isset($_GET['m'])) { $noAvatar = ROOT . str_replace( '{{ TPL }}', $templateName, - Configuration::getConfig('no_avatar_img') + Config::getConfig('no_avatar_img') ); $deactiveAvatar = ROOT . str_replace( '{{ TPL }}', $templateName, - Configuration::getConfig('deactivated_avatar_img') + Config::getConfig('deactivated_avatar_img') ); $bannedAvatar = ROOT . str_replace( '{{ TPL }}', $templateName, - Configuration::getConfig('banned_avatar_img') + Config::getConfig('banned_avatar_img') ); // If ?u= isn't set or if it isn't numeric @@ -72,7 +72,7 @@ if (isset($_GET['m'])) { case 'background': // Set paths - $noBackground = ROOT . Configuration::getConfig('no_background_img'); + $noBackground = ROOT . Config::getConfig('no_background_img'); // If ?u= isn't set or if it isn't numeric if (!isset($_GET['u']) || !is_numeric($_GET['u'])) { @@ -108,7 +108,7 @@ if (isset($_GET['m'])) { case 'header': // Set paths - $noHeader = ROOT . Configuration::getConfig('no_header_img'); + $noHeader = ROOT . Config::getConfig('no_header_img'); // If ?u= isn't set or if it isn't numeric if (!isset($_GET['u']) || !is_numeric($_GET['u'])) { @@ -143,11 +143,11 @@ if (isset($_GET['m'])) { break; default: - $serveImage = ROOT . Configuration::getConfig('pixel_img'); + $serveImage = ROOT . Config::getConfig('pixel_img'); } } else { - $serveImage = ROOT . Configuration::getConfig('pixel_img'); + $serveImage = ROOT . Config::getConfig('pixel_img'); } $serveImage = file_get_contents($serveImage); diff --git a/public/index.php b/public/index.php index 250696e..2a877dd 100755 --- a/public/index.php +++ b/public/index.php @@ -9,6 +9,12 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Info pages if (isset($_GET['p'])) { // Set default variables @@ -33,17 +39,20 @@ if (isset($_GET['p'])) { ]; } + // Set parse variables + $template->setVariables($renderData); + // Print page contents - print Templates::render('main/infopage.tpl', $renderData); + echo $template->render('main/infopage.tpl'); exit; } // Are we in forum mode? $forumMode = isset($_GET['forum']) ? ($_GET['forum'] == true) : false; -$renderData['news'] = ($forumMode ? null : (new News(Configuration::getConfig('site_news_category')))); +$renderData['news'] = ($forumMode ? null : (new News(Config::getConfig('site_news_category')))); -$renderData['newsCount'] = Configuration::getConfig('front_page_news_posts'); +$renderData['newsCount'] = Config::getConfig('front_page_news_posts'); $renderData['page'] = [ 'friend_req' => Users::getPendingFriends(), @@ -74,12 +83,6 @@ $renderData['stats'] = [ 'onlineUsers' => Users::checkAllOnline(), ]; -// Initialise templating engine -$template = new Template(); - -// Change templating engine -$template->setTemplate($templateName); - // Set parse variables $template->setVariables($renderData); diff --git a/public/manage.php b/public/manage.php index 559666a..0e37f4d 100755 --- a/public/manage.php +++ b/public/manage.php @@ -81,5 +81,14 @@ switch ($category . '.' . $mode) { break; } +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('pages/' . $mode . '.' . $category . '.tpl', $renderData); +echo $template->render('pages/' . $mode . '.' . $category . '.tpl'); diff --git a/public/members.php b/public/members.php index fcf3878..569d6f8 100755 --- a/public/members.php +++ b/public/members.php @@ -9,6 +9,12 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // CHeck if the user is logged in if (Users::checkLogin()) { // Add page specific things @@ -31,13 +37,19 @@ if (Users::checkLogin()) { 'page' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0, 'users' => array_chunk($_MEMBERLIST_ACTIVE && !$_MEMBERLIST_NFOUND ? Users::getUsersInRank($_MEMBERLIST_ACTIVE, null, true) : - Users::getAllUsers(), Configuration::getConfig('members_per_page'), true), + Users::getAllUsers(), Config::getConfig('members_per_page'), true), ]; + // Set parse variables + $template->setVariables($renderData); + // Print page contents - print Templates::render('main/memberlist.tpl', $renderData); + echo $template->render('main/memberlist.tpl'); } else { - // Else return the restricted page - print Templates::render('global/restricted.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/restricted.tpl'); } diff --git a/public/news.php b/public/news.php index a51162b..51fb689 100755 --- a/public/news.php +++ b/public/news.php @@ -13,7 +13,7 @@ use DOMDocument; require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; // Create a new News object -$news = new News(isset($_GET['cat']) ? $_GET['cat'] : Configuration::getConfig('site_news_category')); +$news = new News(isset($_GET['cat']) ? $_GET['cat'] : Config::getConfig('site_news_category')); // News XML feed if (isset($_GET['xml'])) { @@ -22,27 +22,23 @@ if (isset($_GET['xml'])) { // Meta data attributes $metaData = [ - - 'title' => ($_FEED_TITLE = Configuration::getConfig('sitename')) . ' News', - 'link' => ($_FEED_URL = 'http://' . Configuration::getConfig('url_main')), + 'title' => ($_FEED_TITLE = Config::getConfig('sitename')) . ' News', + 'link' => ($_FEED_URL = 'http://' . Config::getConfig('url_main')), 'description' => 'News about ' . $_FEED_TITLE, 'language' => 'en-gb', - 'webMaster' => Configuration::getConfig('admin_email') . ' (' . $_FEED_TITLE . ' Webmaster)', + 'webMaster' => Config::getConfig('admin_email') . ' (' . $_FEED_TITLE . ' Webmaster)', 'pubDate' => ($_FEED_DATE = date('r', $posts[array_keys($posts)[0]]['news_timestamp'])), 'lastBuildDate' => $_FEED_DATE, - ]; // Item attributes $itemData = [ - 'title' => ['text' => '0', 'eval' => '$post["news_title"]'], 'link' => ['text' => $_FEED_URL . (new Urls())->format('SITE_NEWS_POST', ['0']), 'eval' => '$post["news_id"]'], 'guid' => ['text' => $_FEED_URL . (new Urls())->format('SITE_NEWS_POST', ['0']), 'eval' => '$post["news_id"]'], 'pubDate' => ['text' => '{EVAL}', 'eval' => 'date("D, d M Y G:i:s O", $post["news_timestamp"])'], 'dc:publisher' => ['text' => '0', 'eval' => '$post["news_poster"]->data["username"]'], 'description' => ['cdata' => '0', 'eval' => '$post["news_content_parsed"]'], - ]; // Create a new DOM document @@ -123,14 +119,21 @@ if (isset($_GET['xml'])) { } $renderData = array_merge($renderData, [ - 'news' => $news, - 'postsPerPage' => Configuration::getConfig('news_posts_per_page'), + 'postsPerPage' => Config::getConfig('news_posts_per_page'), 'viewPost' => isset($_GET['id']), 'postExists' => $news->postExists(isset($_GET['id']) ? $_GET['id'] : 0), 'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0, - ]); +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('main/news.tpl', $renderData); +echo $template->render('main/news.tpl'); diff --git a/public/posting.php b/public/posting.php index fb6d3c0..73c25c6 100755 --- a/public/posting.php +++ b/public/posting.php @@ -9,6 +9,12 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Set location $topicId = isset($_GET['t']) ? $_GET['t'] : @@ -33,7 +39,7 @@ $posting = [ // Check if we're in reply mode if ($mode != 'f') { // Attempt to get the topic - $topic = Forum::getTopic($topicId, true); + $topic = Forums::getTopic($topicId, true); // Prompt an error if the topic doesn't exist if (!$topic) { @@ -43,8 +49,11 @@ if ($mode != 'f') { 'message' => 'The requested post does not exist.', ]; - // Render information page - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -66,8 +75,11 @@ if ($mode != 'f') { 'message' => 'You can only edit your own posts!', ]; - // Render information page - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -90,8 +102,11 @@ if ($mode != 'f') { 'message' => 'You can only delete your own posts!', ]; - // Render information page - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -120,8 +135,11 @@ if ($mode != 'f') { 'message' => 'Your post has been deleted!', ]; - // Render information page - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; // Return to previous page } else { @@ -138,8 +156,11 @@ if ($mode != 'f') { ], ]); - // Render confirmation form - print Templates::render('global/confirm.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/confirm.tpl'); exit; } @@ -177,13 +198,17 @@ if (isset($_POST['post'])) { ]; // Print page contents or if the AJAX request is set only display the render data - print isset($_REQUEST['ajax']) ? - ( - $renderData['page']['message'] . '|' . - $renderData['page']['success'] . '|' . - $renderData['page']['redirect'] - ) : - Templates::render('global/information.tpl', $renderData); + if (isset($_REQUEST['ajax'])) { + echo $renderData['page']['message'] . '|' . + $renderData['page']['success'] . '|' . + $renderData['page']['redirect']; + } else { + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); + } exit; } @@ -192,4 +217,8 @@ $renderData = array_merge($renderData, [ 'posting' => $posting, ]); -print Templates::render('forum/posting.tpl', $renderData); +// Set parse variables +$template->setVariables($renderData); + +// Print page contents +echo $template->render('forum/posting.tpl'); diff --git a/public/profile.php b/public/profile.php index 3bead38..0e58063 100755 --- a/public/profile.php +++ b/public/profile.php @@ -9,6 +9,12 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Get the user's context $profile = new User(isset($_GET['u']) ? $_GET['u'] : 0); @@ -25,5 +31,8 @@ $views = [ $renderData['profile'] = $profile; $renderData['profileView'] = isset($_GET['view']) && in_array($_GET['view'], $views) ? $_GET['view'] : $views[0]; +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('main/profile.tpl', $renderData); +echo $template->render('main/profile.tpl'); diff --git a/public/report.php b/public/report.php index bbc30be..0154b89 100755 --- a/public/report.php +++ b/public/report.php @@ -9,4 +9,14 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; -print Templates::render('main/report.tpl', $renderData); +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + +// Print page contents +echo $template->render('main/report.tpl'); diff --git a/public/search.php b/public/search.php index 26360e0..885213b 100755 --- a/public/search.php +++ b/public/search.php @@ -16,5 +16,14 @@ $renderData['page'] = [ ]; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('main/search.tpl', $renderData); +echo $template->render('main/search.tpl'); diff --git a/public/settings.php b/public/settings.php index 7105d0e..726d257 100755 --- a/public/settings.php +++ b/public/settings.php @@ -14,6 +14,14 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +if (!defined('SAKURA_NO_TPL')) { + // Initialise templating engine + $template = new Template(); + + // Change templating engine + $template->setTemplate($templateName); +} + // Notifications if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notifications']) { // Create the notification container array @@ -57,11 +65,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Match session ids for the same reason if (!Users::checkLogin()) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'You must be logged in to do that!', 'success' => 0, - ]; // Prevent @@ -71,11 +77,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Match session ids for the same reason if (!isset($_REQUEST['session']) || $_REQUEST['session'] != session_id()) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'Invalid session, please try again.', 'success' => 0, - ]; // Prevent @@ -85,11 +89,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Match session ids for the same reason if (!isset($_REQUEST['category'])) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'No category was set.', 'success' => 0, - ]; // Prevent @@ -107,11 +109,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Check if the comment was actually made by the current user if (!$comment) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'The requested comment does not exist.', 'success' => 0, - ]; break; } @@ -119,11 +119,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Check if the user can delete comments if (!$currentUser->checkPermission('SITE', 'VOTE_COMMENTS')) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'You aren\'t allowed to vote on comments.', 'success' => 0, - ]; break; } @@ -135,11 +133,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification ); $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'Your vote has been cast!', 'success' => 1, - ]; break; @@ -149,11 +145,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Check if the comment was actually made by the current user if (!$comment) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'The requested comment does not exist.', 'success' => 0, - ]; break; } @@ -161,11 +155,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Check if the user can delete comments if (!$currentUser->checkPermission('SITE', 'DELETE_COMMENTS')) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'You aren\'t allowed to delete comments.', 'success' => 0, - ]; break; } @@ -173,11 +165,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Check if the comment was actually made by the current user if ($comment['comment_poster'] !== $currentUser->data['id']) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'You can\'t delete the comments of others.', 'success' => 0, - ]; break; } @@ -185,11 +175,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification $comments->removeComment(isset($_REQUEST['id']) ? $_REQUEST['id'] : 0); $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'The comment has been deleted!', 'success' => 1, - ]; break; @@ -197,11 +185,9 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification // Check if the user can delete comments if (!$currentUser->checkPermission('SITE', 'CREATE_COMMENTS')) { $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'You aren\'t allowed to comment.', 'success' => 0, - ]; break; } @@ -217,21 +203,17 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification ]; $renderData['page'] = [ - 'redirect' => $redirect, 'message' => $messages[$comment[1]], 'success' => $comment[0], - ]; break; default: $renderData['page'] = [ - 'redirect' => $redirect, 'message' => 'Unknown action.', 'success' => 0, - ]; } } @@ -360,8 +342,8 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification sprintf($notifStrings[$action[1]][0], $user->data['username']), $notifStrings[$action[1]][1], 60000, - '//' . Configuration::getConfig('url_main') . '/a/' . $user->data['user_id'], - '//' . Configuration::getConfig('url_main') . '/u/' . $user->data['user_id'], + '//' . Config::getConfig('url_main') . '/a/' . $user->data['user_id'], + '//' . Config::getConfig('url_main') . '/u/' . $user->data['user_id'], '1' ); } @@ -455,7 +437,7 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification } // Set path variables - $filepath = ROOT . Configuration::getConfig('user_uploads') . '/'; + $filepath = ROOT . Config::getConfig('user_uploads') . '/'; $filename = $filepath . $mode . '_' . $currentUser->data['user_id']; $currfile = isset($currentUser->data['user_data'][$userDataKey]) && !empty($_OLDFILE = $currentUser->data['user_data'][$userDataKey]) ? $_OLDFILE : null; @@ -544,8 +526,8 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification } // Check if the image is too large - if (($metadata[0] > Configuration::getConfig($mode . '_max_width') - || $metadata[1] > Configuration::getConfig($mode . '_max_height'))) { + if (($metadata[0] > Config::getConfig($mode . '_max_width') + || $metadata[1] > Config::getConfig($mode . '_max_height'))) { // Set render data $renderData['page'] = [ @@ -559,8 +541,8 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification } // Check if the image is too small - if (($metadata[0] < Configuration::getConfig($mode . '_min_width') - || $metadata[1] < Configuration::getConfig($mode . '_min_height'))) { + if (($metadata[0] < Config::getConfig($mode . '_min_width') + || $metadata[1] < Config::getConfig($mode . '_min_height'))) { // Set render data $renderData['page'] = [ @@ -574,7 +556,7 @@ if (isset($_REQUEST['request-notifications']) && $_REQUEST['request-notification } // Check if the file is too large - if ((filesize($_FILES[$mode]['tmp_name']) > Configuration::getConfig($mode . '_max_fsize'))) { + if ((filesize($_FILES[$mode]['tmp_name']) > Config::getConfig($mode . '_max_fsize'))) { // Set render data $renderData['page'] = [ @@ -1403,7 +1385,12 @@ if (Users::checkLogin()) { || empty($mode) || !$pages[$category]['modes'][$mode]['access']) { header('HTTP/1.0 404 Not Found'); - print Templates::render('global/notfound.tpl', $renderData); + + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/notfound.tpl'); exit; } @@ -1484,12 +1471,12 @@ if (Users::checkLogin()) { case 'appearance.background': $renderData[$mode] = [ - 'max_width' => Configuration::getConfig($mode . '_max_width'), - 'max_height' => Configuration::getConfig($mode . '_max_height'), - 'min_width' => Configuration::getConfig($mode . '_min_width'), - 'min_height' => Configuration::getConfig($mode . '_min_height'), - 'max_size' => Configuration::getConfig($mode . '_max_fsize'), - 'max_size_view' => Main::getByteSymbol(Configuration::getConfig($mode . '_max_fsize')), + 'max_width' => Config::getConfig($mode . '_max_width'), + 'max_height' => Config::getConfig($mode . '_max_height'), + 'min_width' => Config::getConfig($mode . '_min_width'), + 'min_height' => Config::getConfig($mode . '_min_height'), + 'max_size' => Config::getConfig($mode . '_max_fsize'), + 'max_size_view' => Main::getByteSymbol(Config::getConfig($mode . '_max_fsize')), ]; break; @@ -1510,9 +1497,15 @@ if (Users::checkLogin()) { break; } + // Set parse variables + $template->setVariables($renderData); + // Print page contents - print Templates::render('main/settings.tpl', $renderData); + echo $template->render('main/settings.tpl'); } else { // If not allowed print the restricted page - print Templates::render('global/restricted.tpl', $renderData); + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/restricted.tpl'); } diff --git a/public/support.php b/public/support.php index a6b9628..0fe7d53 100755 --- a/public/support.php +++ b/public/support.php @@ -9,6 +9,12 @@ namespace Sakura; // Include components require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sakura.php'; +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Switch between modes (we only allow this to be used by logged in user) if (isset($_REQUEST['mode']) && Users::checkLogin() @@ -38,26 +44,26 @@ if (isset($_REQUEST['mode']) if (!isset($_POST['months']) || !is_numeric($_POST['months']) || (int) $_POST['months'] < 1 - || (int) $_POST['months'] > Configuration::getConfig('premium_amount_max')) { + || (int) $_POST['months'] > Config::getConfig('premium_amount_max')) { header('Location: ' . $urls->format('SITE_PREMIUM') . '?fail=true'); } else { // Calculate the total - $total = (float) Configuration::getConfig('premium_price_per_month') * (int) $_POST['months']; + $total = (float) Config::getConfig('premium_price_per_month') * (int) $_POST['months']; $total = number_format($total, 2, '.', ''); // Generate item name - $itemName = Configuration::getConfig('sitename') + $itemName = Config::getConfig('sitename') . ' Premium - ' . (string) $_POST['months'] - . ' month' - . ((int) $_POST['months'] == 1 ? '' : 's'); + . ' month' + . ((int) $_POST['months'] == 1 ? '' : 's'); // Attempt to create a transaction if ($transaction = Payments::createTransaction( $total, $itemName, - Configuration::getConfig('sitename') . ' Premium Purchase', - 'http://' . Configuration::getConfig('url_main') . $urls->format('SITE_PREMIUM') + Config::getConfig('sitename') . ' Premium Purchase', + 'http://' . Config::getConfig('url_main') . $urls->format('SITE_PREMIUM') )) { // Store the amount of months in the global session array $_SESSION['premiumMonths'] = (int) $_POST['months']; @@ -92,7 +98,7 @@ if (isset($_REQUEST['mode']) Users::updatePremiumMeta($currentUser->data['user_id']); Main::updatePremiumTracker( $currentUser->data['user_id'], - ((float) Configuration::getConfig('premium_price_per_month') * $_SESSION['premiumMonths']), + ((float) Config::getConfig('premium_price_per_month') * $_SESSION['premiumMonths']), $currentUser->data['username'] . ' bought premium for ' . $_SESSION['premiumMonths'] @@ -111,15 +117,17 @@ if (isset($_REQUEST['mode']) break; case 'complete': - print Templates::render('main/premiumcomplete.tpl', array_merge([ - + $renderData = array_merge([ 'page' => [ - 'expiration' => ($prem = Users::checkUserPremium($currentUser->data['user_id'])[2]) !== null ? $prem : 0, - ], + ], $renderData); - ], $renderData)); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('main/premiumcomplete.tpl'); break; default: @@ -142,7 +150,11 @@ if (isset($_GET['tracker'])) { ]; - print Templates::render('main/supporttracker.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('main/supporttracker.tpl'); exit; } @@ -150,11 +162,14 @@ if (isset($_GET['tracker'])) { $renderData['page'] = [ 'fail' => isset($_GET['fail']), - 'price' => Configuration::getConfig('premium_price_per_month'), + 'price' => Config::getConfig('premium_price_per_month'), 'current' => $currentUser->checkPremium(), - 'amount_max' => Configuration::getConfig('premium_amount_max'), + 'amount_max' => Config::getConfig('premium_amount_max'), ]; +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('main/support.tpl', $renderData); +echo $template->render('main/support.tpl'); diff --git a/public/viewforum.php b/public/viewforum.php index 55b4614..e4913e8 100755 --- a/public/viewforum.php +++ b/public/viewforum.php @@ -12,6 +12,12 @@ require_once str_replace(basename(__DIR__), '', dirname(__FILE__)) . '_sakura/sa // Get the forum's data $forum = Forums::getForum(isset($_GET['f']) ? $_GET['f'] : 0); +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Check if the forum exists if (!$forum) { // Set render data @@ -20,8 +26,11 @@ if (!$forum) { 'message' => 'The subforum you tried to access does not exist.', ]; - // Print template - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -34,8 +43,11 @@ if ($forum['forum']['forum_type'] === 2) { 'redirect' => $forum['forum']['forum_link'], ]; - // Print template - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -49,5 +61,8 @@ $renderData['board'] = [ ]; $renderData['currentPage'] = isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0; +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('forum/viewforum.tpl', $renderData); +echo $template->render('forum/viewforum.tpl'); diff --git a/public/viewtopic.php b/public/viewtopic.php index 30b5e31..5618466 100755 --- a/public/viewtopic.php +++ b/public/viewtopic.php @@ -16,6 +16,12 @@ $topic = Forums::getTopic( : (isset($_GET['t']) ? $_GET['t'] : 0) ); +// Initialise templating engine +$template = new Template(); + +// Change templating engine +$template->setTemplate($templateName); + // Check if the forum exists if (!$topic) { // Set render data @@ -23,8 +29,11 @@ if (!$topic) { 'message' => 'The topic you tried to access does not exist.', ]; - // Print template - print Templates::render('global/information.tpl', $renderData); + // Set parse variables + $template->setVariables($renderData); + + // Print page contents + echo $template->render('global/information.tpl'); exit; } @@ -38,5 +47,8 @@ $renderData = array_merge($renderData, $topic, [ 'currentPage' => isset($_GET['page']) && ($_GET['page'] - 1) >= 0 ? $_GET['page'] - 1 : 0, ]); +// Set parse variables +$template->setVariables($renderData); + // Print page contents -print Templates::render('forum/viewtopic.tpl', $renderData); +echo $template->render('forum/viewtopic.tpl');