triggerError($errorNumber, $errorMessage, $errorFile, $errorLine, debug_backtrace());
// Don't execute PHP internal error handler
return true;
}
// This function will show the errorMessage
function showError($errorMessage = 'none', $arguments = null, $level = E_ERROR)
{
// Let get a backtrace for deep debugging
$backtrace = debug_backtrace();
$calling = $backtrace[0];
$language = system\SuperSmash\SuperSmash::language();
$message = $language->get($errorMessage);
// Allow custom messages
if(!$message)
{
$message = $errorMessage;
}
// check if there are any arguments
if(is_array($arguments))
{
// Add the arguments to the message
$message = vsprintf($message, $arguments);
}
// Get the debug instance
$debug = loadClass('Debug');
// Add a break to the errorMessage
$message = "
" . $message;
// Trigger the error
$debug->triggerError($level, $message, $calling['file'], $calling['line'], $backtrace);
}
// This function will show an 404 error page
function show_404()
{
// Get the debug instance
$debug = loadClass('Debug');
// Show the error
$debug->showError(404);
}
// This function will log a message to a specified filename log
function logMessage($message, $filename = DEBUG)
{
// Get the debug instance
$debug = loadClass('Debug');
// Log the error
$debug->log($message, $filename);
}
// This function returns an item of the configuration file
function configuration($item, $type = 'SuperSmash')
{
// Get the config instance
$configuration = loadClass('Configuration');
// Return the specific item
return $configuration->get($item, $type);
}
// This function will set an item in the configuration file
function configurationSet($item, $value, $name = 'SuperSmash')
{
// Get the config instance
$configuration = loadClass('Configuration');
// Set the specific configuration item in the configuration file
$configuration->set($item, $value, $name);
}
// This function will save a configuration to the configuration.php file
function configurationSave($name)
{
// Get the config instance
$configuration = loadClass('Configuration');
// Save the configuration to the configuration.php file
return $configuration->save($name);
}
// This function will load the specific configuration in the configuration.php
function configurationLoad($file, $name, $array = false)
{
$configuration = loadClass('Configuration');
$configuration->load($file, $name, $array);
}
// This function will get an instance of the controller
function getInstance()
{
if (class_exists('application\\SuperSmash\\Controller', false))
{
return application\SuperSmash\Controller::getInstance();
}
elseif (class_exists('system\\SuperSmash\\Controller', false))
{
return system\SuperSmash\Controller::getInstance();
}
else
{
return false;
}
}
// This function will return the website URL and the URL information
function getUrlInformation()
{
return loadClass('Router')->getUrlInformation();
}
// This function will load a specific className
function loadClass($className, $type = 'SuperSmash', $parameters = array())
{
// We need to create a className path for the correct class
if(strpos($className, '\\') === false)
{
$className = $type . DS . $className;
}
// We will need to lowercase everything
$class = strtolower($className);
// We will need to change the SuperSmash directory to its capital case
$class = str_replace('supersmash', 'SuperSmash', $class);
// Create a storageName for the class
$store_name = str_replace('\\', '_', $class);
// Check if the class exists in the registry
$loaded = \system\SuperSmash\Registry::singleton()->load($store_name);
if($loaded !== null)
{
return $loaded;
}
// The class was not found in the registry so we need to look for the classFile ourself
// Split the class path in parts
$parts = explode('\\', $class);
// Build our filepath
$file = str_replace('\\', DS, implode('\\', $parts));
// If we dont have the full path, we need to create it
if($parts[0] !== 'system' && $parts[0] !== 'application')
{
// Check for needed classes in the Application library folder
if(file_exists(settings::getFilePath() . DS . settings::getApp() . DS . $file . '.php'))
{
$file = settings::getFilePath() . DS . settings::getApp() . DS . $file .'.php';
$className = DS . 'application' . DS . $className;
}
else
{
$file = SYSTEM . DS . $file .'.php';
$className = DS .'system' . DS . $className;
}
}
else
{
$file = ROOT . $file .'.php';
}
require_once ($file);
if (!class_exists($className))
{
// We only want the className and dont need the parent paths
if (strlen(strstr($className, DS . "system" . DS . "SuperSmash" . DS))>0) $className = str_replace(DS . "system" . DS . "SuperSmash" . DS, "", $className);
// Check if the class needs parameters
if (!empty($parameters))
{
try
{
$newClass = new ReflectionClass($className);
$newClass = $newClass->newInstanceArgs($parameters);
}
catch (Exception $exception)
{
die("The class $className could not be loaded >>>
$exception");
}
}
else
{
// Create an object of the new class
$newClass = '\system\\SuperSmash\\' . $className;
$newClass = new $newClass;
}
}
// Store the new object in the registry
\system\SuperSmash\Registry::singleton()->store($store_name, $newClass);
// return the new class.
return $newClass;
}
// This function will redirect you to a specified URL after a specified waiting time
function redirect($url, $wait = 0)
{
// Check if the URL is valid. If not then add our current websiteURL to it.
if(!preg_match('@^(mailto|ftp|http(s)?)://@i', $url))
{
$websiteURL = getUrlInformation();
$url = $websiteURL['websiteURL'] .'/'. $url;
}
// Check if we need to wait a few seconds before we can redirect the user
if($wait >= 1)
{
header("Refresh:". $wait .";url=". $url);
}
else
{
header("Location: ".$url);
die();
}
}
?>