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(); } } ?>