TrackManiaControl/application/ManiaControl.php

109 lines
3.1 KiB
PHP
Raw Normal View History

2013-11-09 11:19:21 +01:00
<?php
// Run configuration
define('LOG_WRITE_CURRENT_FILE', 'ManiaControl.log'); // Write current log to extra file in base dir
define('LOG_NAME_USE_DATE', true); // Use current date as suffix for log file name in logs folder
define('LOG_NAME_USE_PID', true); // Use current process id as suffix for log file name in logs folder
// Define base dir
2013-11-09 11:19:21 +01:00
define('ManiaControlDir', __DIR__);
// Set process settings
ini_set('memory_limit', '64M');
2013-11-09 11:19:21 +01:00
if (function_exists('date_default_timezone_get') && function_exists('date_default_timezone_set')) {
date_default_timezone_set(@date_default_timezone_get());
}
// Build log file name
$logFileName = ManiaControlDir . '/logs/';
if (!is_dir($logFileName)) {
mkdir($logFileName);
}
$logFileName .= '/ManiaControl';
if (LOG_NAME_USE_DATE) $logFileName .= '_' . date('Y-m-d');
if (LOG_NAME_USE_PID) $logFileName .= '_' . getmypid();
$logFileName .= '.log';
define('LOG_FILE', $logFileName);
2013-11-09 11:19:21 +01:00
// Delete old current log file
if (LOG_WRITE_CURRENT_FILE) {
$currentLogFileName = ManiaControlDir . '/' . LOG_WRITE_CURRENT_FILE;
if (file_exists($currentLogFileName) && is_writable($currentLogFileName)) {
unlink($currentLogFileName);
}
define('LOG_CURRENT_FILE', $currentLogFileName);
}
2013-12-14 23:30:51 +01:00
/**
* Log and echo the given text
*
* @param string $message
*/
function logMessage($message) {
$message .= PHP_EOL;
2013-12-09 15:44:28 +01:00
if (defined('LOG_CURRENT_FILE')) file_put_contents(LOG_CURRENT_FILE, $message, FILE_APPEND);
file_put_contents(LOG_FILE, $message, FILE_APPEND);
echo $message;
}
2013-11-09 11:19:21 +01:00
2013-12-14 23:30:51 +01:00
/**
* Get the prefix for the given error level
2014-01-27 09:07:25 +01:00
*
2013-12-14 23:30:51 +01:00
* @param int $errorLevel
* @return string
*/
function getErrorTag($errorLevel) {
if ($errorLevel == E_NOTICE) {
return '[PHP NOTICE]';
}
if ($errorLevel == E_WARNING) {
return '[PHP WARNING]';
}
if ($errorLevel == E_ERROR) {
return '[PHP ERROR]';
}
if ($errorLevel == E_USER_NOTICE) {
return '[ManiaControl NOTICE]';
}
if ($errorLevel == E_USER_WARNING) {
return '[ManiaControl WARNING]';
}
if ($errorLevel == E_USER_ERROR) {
return '[ManiaControl ERROR]';
}
return "[PHP {$errorLevel}]";
}
// Register error handler
set_error_handler(
function ($errorNumber, $errorString, $errorFile, $errorLine) {
if (error_reporting() == 0) {
// Error suppressed
return false;
}
// Log error
$errorTag = getErrorTag($errorNumber);
$message = "{$errorTag}: {$errorString} in File '{$errorFile}' on Line {$errorLine}!";
logMessage($message);
if ($errorNumber == E_ERROR || $errorNumber == E_USER_ERROR) {
logMessage('Stopping execution...');
exit();
}
return false;
}, -1);
2014-01-27 09:07:25 +01:00
// Autoload Function that loads ManiaControl Class Files on Demand
spl_autoload_register(
function ($className) {
$classPath = str_replace('\\', DIRECTORY_SEPARATOR, $className);
$classPath = preg_replace('/ManiaControl/', 'core', $classPath, 1);
$filePath = ManiaControlDir . DIRECTORY_SEPARATOR . $classPath . '.php';
if (file_exists($filePath)) {
require_once $filePath;
}
});
// Start ManiaControl
2014-01-27 09:07:25 +01:00
$maniaControl = new \ManiaControl\ManiaControl();
$maniaControl->run();