'Error', E_WARNING => 'Warning', E_PARSE => 'Parsing Error', E_NOTICE => 'Notice', E_CORE_ERROR => 'Core Error', E_CORE_WARNING => 'Core Warning', E_COMPILE_ERROR => 'Compile Error', E_COMPILE_WARNING => 'Compile Warning', E_USER_ERROR => 'User Error', E_USER_WARNING => 'User Warning', E_USER_NOTICE => 'User Notice', E_STRICT => 'Strict Error' ); $severity = (isset($levels[$severity])) ? $levels[$severity] : $severity; // Contain the content for buffering ob_start(); include(APP_PATH.'/errors/error_php.php'); $buffer = ob_get_contents(); ob_end_clean(); echo $buffer; } // -------------------------------------------------------------------------- /** * Custom exception handler */ function on_exception($exception) { // these are our templates $traceline = "#%s %s(%s): %s(%s)"; $msg = "PHP Fatal error: Uncaught exception '%s' with message '%s' in %s:%s
Stack trace:
%s
thrown in %s on line %s"; // alter your trace as you please, here $trace = $exception->getTrace(); // build your tracelines $result = array(); foreach ($trace as $key => $stackPoint) { $result[] = sprintf( $traceline, $key, $stackPoint['file'], $stackPoint['line'], $stackPoint['function'], implode(', ', $stackPoint['args']) ); } // trace always ends with {main} $result[] = '#' . ++$key . ' {main}'; // write tracelines into main template $msg = sprintf( $msg, get_class($exception), $exception->getMessage(), $exception->getFile(), $exception->getLine(), implode("
", $result), $exception->getFile(), $exception->getLine() ); echo $msg; } function show_404() { @header('HTTP/1.1 404 Not Found', TRUE, 404); die('

404 Not Found

'); } function show_error() { } // -------------------------------------------------------------------------- /** * Returns routable methods for the specified controller class * * @param string $controller * @return array */ function controller_methods($controller) { $methods = get_class_methods($controller); $num = count($methods); for($i=0; $i < $num; $i++) { $skip_methods = array( 'load_file', 'on_error', 'on_exception', 'show_404', 'show_error', 'controller_methods', 'route', 'site_url', 'load_view', 'get_instance', ); // If the method starts with an underscore, or // is in the blacklist of methods, it is not callable if($methods[$i]{0} === "_" || in_array($methods[$i], $skip_methods)) { unset($methods[$i]); } } return $methods; } // -------------------------------------------------------------------------- /** * Calls the appropriate module/controller/function based on the url */ function route() { $pi = $_SERVER['PATH_INFO']; // Load the routes config file $routes = require_once(APP_PATH.'config/routes.php'); // Set the default route $module = $routes['default_module']; $controller = $routes['default_controller']; $func = "index"; $route_set = FALSE; // If it isn't the index page if( ! empty($pi) && $pi !== "/") { //Remove trailing slash and begining slash $pi = trim($pi, '/'); // URL matches the route exactly? Cool, that was easy if(isset($routes[$pi])) { list($module, $controller, $func) = explode("/", $routes[$pi]); $route_set = TRUE; } else { $custom_routes = $routes; // Skip required routes unset($custom_routes['default_module']); unset($custom_routes['default_controller']); unset($custom_routes['404_handler']); foreach($custom_routes as $uri => $map) { if(preg_match("`{$uri}`i", $pi)) { list($module, $controller, $func) = explode("/", $map); $route_set = TRUE; break; } } } // Doesn't match a predefined route? // Match on module/controller/method, controller/method, or method if( ! $route_set) { $num_segments = 0; if(strpos($pi, '/') === FALSE && ! empty($pi)) { $num_segments = 1; } else { $segments = explode('/', $pi); $num_segments = count($segments); } if($num_segments === 1) { $func = $pi; } if($num_segments === 2) { list($controller, $func) = $segments; } if($num_segments >= 3) { list($module, $controller, $func) = $segments; } } } $path = MOD_PATH."{$module}/controllers/{$controller}.php"; if(is_file($path)) { require_once($path); // Get the list of valid methods for that controller $methods = controller_methods($controller); if(in_array($func, $methods)) { $class = new $controller; //echo "Found class"; call_user_func(array($class, $func)); return; } // Function doesn't exist...404 show_404(); die(); } // If it gets here, it's still a 404 show_404(); } // -------------------------------------------------------------------------- /** * Returns a full url from a url segment * * @param string $segment * @return string */ function site_url($segment) { return $url = BASEURL . URL_INDEX_FILE . $segment; } // -------------------------------------------------------------------------- //Set error handlers set_error_handler('on_error'); set_exception_handler('on_exception'); // Load Most Common libraries require_once('miniMVC.php'); require_once('output.php'); require_once('page.php'); require_once('db.php'); //Route to the appropriate function route(); // End of common.php