/home/coolpkct/www/websites/cake3.cool.rocks/admin/classes/controller.php
<?php
defined('SK_ACCESS')||die('<h1>403: Forbidden</h1>');
$ds = DIRECTORY_SEPARATOR;
require_once "classes{$ds}skconfig.php";
require_once "classes{$ds}board.php";
require_once "classes{$ds}request.php";
require_once "classes{$ds}commandresolver.php";
require_once "classes{$ds}auth.php";
require_once "classes{$ds}filer.php";
require_once "classes{$ds}screen.php";
require_once "classes{$ds}loginscreen.php";
require_once "settings{$ds}constants.php";
require_once "classes{$ds}errorhandler.php";
require_once "classes{$ds}exceptionhandler.php";
require_once "classes{$ds}debug.php";
require_once "classes{$ds}helpers.php";
require_once "commands{$ds}showpages.php";
require_once "commands{$ds}setup.php";
class Controller
{
private $config;
private function __construct() {}
/**
* Setup new Controller instance
*/
public static function run()
{
if (version_compare(PHP_VERSION, '5.2.0', '<')) {
die('Your php version is '.PHP_VERSION.'. Showkase requires php version 5.2.0 or later. Contact your web host for how to upgrade.');
}
@ini_set('session.use_cookies', '1');
@ini_set('session.use_only_cookies', '1');
session_start();
$instance = new Controller();
$instance->init();
$instance->handleRequest();
}
/**
* Initialise Controller instance
*/
public function init() {
header('Content-Type: text/html; charset=utf-8');
//Collect unexpected error messages and show nicely in Screen::getHtml
ob_start();
error_reporting(DEBUG ? E_ALL : E_ERROR);
set_exception_handler(array('ExceptionHandler', 'handle'));
$errorHandler = new ErrorHandler();
if (
version_compare(phpversion(), '5.0', '>=' )
&& version_compare(phpversion(), '5.3', '<' )
) {
@ini_set('zend.ze1_compatibility_mode', '0');
}
if (DEBUG) @ini_set('display_errors', 1);
@ini_set('html_errors', 1);
$this->config = SkConfig::getInstance();
}
/**
* Handle new request
*/
public function handleRequest()
{
$request = new Request();
if (!$this->config->siteIsSetup()) {
$cmd = new Setup();
$cmd->execute($request);
return;
}
$this->checkLogin($request);
$this->postMessages($request);
$cmdResolver = new CommandResolver();
$cmd = $cmdResolver->getCommand($request);
$cmd->execute($request);
}
/**
* Post messages relating to passwords etc
*
* @param object request
* @return void
*/
private function postMessages(Request $request)
{
$cmd = $request->getProperty('cmd');
if (file_exists($this->config->getAuthResetPath())) {
Board::addMessage('Password reset file is active – delete the file immediatedly after changing your password.', 'error');
}
elseif (
$_SESSION[SESSION_DEFAULT_PASS]
&& ($cmd != 'setup')
&& ($cmd != 'account')
&& ($cmd != 'repair')
&& ($cmd != 'files')
&& ($cmd != 'publish')
&& (!DEMO_MODE)
) {
Board::addMessage('Installation password is still in use – please <a href="index.php?cmd=account" title="link to user admin screen">change your password</a>', 'warning');
}
if (
DEMO_MODE
&& ($cmd != 'publish')
) {
Board::addMessage('This is a demonstration version of Showkase. Some functions are disabled and changes will not be saved.', 'warning');
}
}
/**
* Checks login and creates login screen if necessary
* Bypasses normal command mechanism
*
* @access public
* @return void
*/
function checkLogin(Request $request)
{
$auth = new Auth();
$timeout = false;
$elapsedTimeout = (
isset($_SESSION[LOGIN_TIME])
&& (time() > ($_SESSION[LOGIN_TIME] + ELAPSED_TIMEOUT_SECONDS))
);
$inactivityTimeout = (
isset($_SESSION[INACTIVITY_TIMEOUT])
&& (INACTIVITY_SECONDS > 0)
&& (time() - $_SESSION[INACTIVITY_TIMEOUT]) > INACTIVITY_SECONDS
);
if (
$inactivityTimeout
|| (DEMO_MODE && $elapsedTimeout)
) {
$timeout = true;
Board::addMessage('Session timed out', 'warning');
}
$_SESSION[INACTIVITY_TIMEOUT] = time();
$logout = (
$request->propertyIsSet('cmd')
&& $request->getProperty('cmd') == 'logout'
);
if ($logout || !$auth->login() || $timeout) {
$auth->logout();
$screen = new loginScreen('Showkase – log-in', 'login');
print $screen->getHtmlHead();
print $screen->getContentHtml(array());
print $screen->getFooter();
exit;
}
}
}