This repository has been archived on 2024-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
sakura/_sakura/sakura.php

193 lines
6.5 KiB
PHP
Raw Normal View History

2015-04-01 15:35:27 +00:00
<?php
/*
2015-05-24 22:06:53 +00:00
* Sakura Community Management System
2015-05-29 19:27:45 +00:00
* (c) 2013-2015 Flashwave <http://flash.moe> & Circlestorm <http://circlestorm.net>
2015-04-01 15:35:27 +00:00
*/
// Declare namespace
namespace Sakura;
// Define Sakura version
define('SAKURA_VERSION', '20150907');
2015-05-09 00:56:55 +00:00
define('SAKURA_VLABEL', 'Eminence');
define('SAKURA_COLOUR', '#6C3082');
2015-07-31 21:18:14 +00:00
define('SAKURA_STABLE', false);
2015-04-01 15:35:27 +00:00
// Define Sakura Path
2015-04-06 16:15:20 +00:00
define('ROOT', str_replace(basename(__DIR__), '', dirname(__FILE__)));
2015-04-01 15:35:27 +00:00
// Error Reporting: 0 for production and -1 for testing
2015-06-29 00:36:37 +00:00
error_reporting(SAKURA_STABLE ? 0 : -1);
2015-04-01 15:35:27 +00:00
2015-07-05 00:03:15 +00:00
// Set internal encoding method
mb_internal_encoding('utf-8');
2015-08-23 22:08:36 +00:00
// Stop the execution if the PHP Version is older than 5.4.0
if(version_compare(phpversion(), '5.4.0', '<')) {
2015-08-29 13:25:57 +00:00
die('<h3>Sakura requires at least PHP 5.4.0, please upgrade to a newer PHP version.</h3>');
2015-08-23 22:08:36 +00:00
}
2015-04-01 15:35:27 +00:00
// Include libraries
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';
2015-05-29 19:27:45 +00:00
require_once ROOT .'_sakura/components/Database.php';
require_once ROOT .'_sakura/components/Urls.php';
2015-04-01 15:35:27 +00:00
require_once ROOT .'_sakura/components/Templates.php';
2015-05-29 19:27:45 +00:00
require_once ROOT .'_sakura/components/Permissions.php';
2015-04-01 15:35:27 +00:00
require_once ROOT .'_sakura/components/Sessions.php';
2015-08-18 23:29:45 +00:00
require_once ROOT .'_sakura/components/User.php';
2015-04-01 15:35:27 +00:00
require_once ROOT .'_sakura/components/Users.php';
2015-05-03 16:25:57 +00:00
require_once ROOT .'_sakura/components/Forum.php';
require_once ROOT .'_sakura/components/News.php';
require_once ROOT .'_sakura/components/Comments.php';
2015-04-30 23:01:01 +00:00
require_once ROOT .'_sakura/components/Manage.php';
2015-07-30 01:12:53 +00:00
require_once ROOT .'_sakura/components/Bans.php';
2015-04-18 18:26:52 +00:00
require_once ROOT .'_sakura/components/Whois.php';
2015-06-29 12:40:00 +00:00
require_once ROOT .'_sakura/components/Payments.php';
2015-04-01 15:35:27 +00:00
2015-05-29 19:27:45 +00:00
// Include database extensions
2015-07-30 01:12:53 +00:00
foreach(glob(ROOT .'_sakura/components/database/*.php') as $driver) {
require_once $driver;
}
2015-04-01 15:35:27 +00:00
// Set Error handler
2015-04-30 23:01:01 +00:00
set_error_handler(array('Sakura\Main', 'errorHandler'));
2015-04-01 15:35:27 +00:00
2015-07-30 01:12:53 +00:00
// Initialise Main Class
2015-05-29 19:27:45 +00:00
Main::init(ROOT .'_sakura/config/config.ini');
2015-08-23 22:08:36 +00:00
// Assign servers file to whois class
Whois::setServers(ROOT .'_sakura/'. Configuration::getLocalConfig('data', 'whoisservers'));
2015-05-29 19:27:45 +00:00
// Start output buffering
ob_start(Configuration::getConfig('use_gzip') ? 'ob_gzhandler' : null);
2015-04-01 15:35:27 +00:00
2015-08-21 22:07:45 +00:00
// Create a user object for the current logged in user
$currentUser = new User(Session::$userId);
// Create the Urls object
$urls = new Urls();
2015-08-29 13:25:57 +00:00
// 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') : (
(
isset($currentUser->data['userData']['userOptions']['useMisaki']) &&
$currentUser->data['userData']['userOptions']['useMisaki'] &&
$currentUser->checkPermission('SITE', 'ALTER_PROFILE')
) ?
'misaki' :
Configuration::getConfig('site_style')
);
2015-07-30 01:12:53 +00:00
if(!defined('SAKURA_NO_TPL')) {
2015-08-23 22:08:36 +00:00
// Initialise templating engine
2015-08-29 13:25:57 +00:00
Templates::init($templateName);
2015-08-23 22:08:36 +00:00
2015-07-30 01:12:53 +00:00
// Set base page rendering data
$renderData = [
2015-09-02 17:51:03 +00:00
/*
* 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.
*/
2015-07-30 01:12:53 +00:00
'sakura' => [
2015-08-20 23:17:27 +00:00
'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'),
],
'urlMain' => Configuration::getConfig('url_main'),
'urlApi' => Configuration::getConfig('url_api'),
'contentPath' => Configuration::getConfig('content_path'),
'resources' => Configuration::getConfig('content_path') .'/data/'. strtolower(Templates::$_TPL),
'charset' => Configuration::getConfig('charset'),
'siteName' => Configuration::getConfig('sitename'),
'siteDesc' => Configuration::getConfig('sitedesc'),
'siteTags' => implode(", ", json_decode(Configuration::getConfig('sitetags'), true)),
'dateFormat' => Configuration::getConfig('date_format'),
'currentPage' => '//'. $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'],
'recaptchaPublic' => Configuration::getConfig('recaptcha_public'),
'recaptchaEnabled' => Configuration::getConfig('recaptcha'),
'disableRegistration' => Configuration::getConfig('disable_registration'),
'lockSite' => Configuration::getConfig('lock_site'),
'lockSiteReason' => Configuration::getConfig('lock_site_reason'),
'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')
2015-07-30 01:12:53 +00:00
],
'php' => [
'sessionid' => \session_id(),
'time' => \time(),
'self' => $_SERVER['PHP_SELF']
],
2015-08-19 19:44:01 +00:00
'session' => [
2015-07-30 01:12:53 +00:00
2015-08-19 19:44:01 +00:00
'checkLogin' => Users::checkLogin(),
'sessionId' => Session::$sessionId,
'userId' => Session::$userId
2015-07-30 01:12:53 +00:00
2015-08-19 19:44:01 +00:00
],
'user' => $currentUser,
'urls' => $urls
2015-07-30 01:12:53 +00:00
];
// Ban checking
if(Users::checkLogin() && $ban = Bans::checkBan(Session::$userId)) {
// Additional render data
$renderData = array_merge($renderData, [
2015-07-30 01:12:53 +00:00
'ban' => [
'reason' => $ban['reason'],
'issued' => $ban['issued'],
'expires' => $ban['expires'],
'issuer' => Users::getUser($ban['issuer'])
]
2015-07-30 01:12:53 +00:00
]);
2015-07-30 17:07:23 +00:00
Users::logout();
print Templates::render('main/banned.tpl', $renderData);
2015-07-30 01:12:53 +00:00
exit;
}
}