Fatal Error: {$error['message']}

File: {$file}

Line: {$error['line']} TXT; show_error($err_msg); } } /** * Function to search through the tree to find the necessary file * * @param string $file * @param string $curr_path * @return void */ function load_file($file, $curr_path="") { $path = ""; if($curr_path === "app") { $path = APP_PATH."{$file}.php"; } else if($curr_path === "sys") { $path = SYS_PATH."{$file}.php"; } else { $path = MOD_PATH."{$curr_path}/{$file}.php"; } if(is_file($path)) { require_once($path); } } // -------------------------------------------------------------------------- /** * Custom error handler */ function on_error($severity, $message, $filepath, $line, $context) { $levels = array( E_ERROR => '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' ); //Make it prettier $message = highlight_string($message, TRUE); $filepath = str_replace(BASE_PATH, "", $filepath); $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 handlererror_get_last */ 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; } // -------------------------------------------------------------------------- /** * General 404 function */ function show_404() { @header('HTTP/1.1 404 Not Found', TRUE, 404); die('

404 Not Found

'); } // -------------------------------------------------------------------------- /** * Fatal Error page function * * @param string $message * @param int $status_code */ function show_error($message, $status_code=null) { if( ! is_null($status_code)) { @header("HTTP/1.1 {$status_code}", TRUE, (int)$status_code); } // Contain the content for buffering ob_start(); include(APP_PATH.'/errors/error_general.php'); $buffer = ob_get_contents(); ob_end_clean(); die($buffer); } // -------------------------------------------------------------------------- /** * 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 = (isset($_SERVER['PATH_INFO'])) ? $_SERVER['PATH_INFO'] : null; // 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; return call_user_func(array($class, $func)); } // 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; } // -------------------------------------------------------------------------- /** * Wrapper function to simplify using curl * * @param string $url * @param array $options * @return mixed */ function do_curl($url, $options=array()) { $cookie = tempnam ("/tmp", "CURLCOOKIE"); $ch = curl_init($url); //Use the user's User Agent and Cookies $opts= array( CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT'], CURLOPT_COOKIEJAR => $cookie, CURLOPT_FOLLOWLOCATION => TRUE, CURLOPT_ENCODING => "", CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_AUTOREFERER => TRUE, CURLOPT_SSL_VERIFYPEER => FALSE, CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 10, CURLOPT_MAXREDIRS => 10, CURLOPT_PROTOCOLS => array(CURLPROTO_HTTP,CURLPROTO_HTTPS) ); //Set default options curl_setopt_array($ch, $opts); //Set additional options curl_setopt_array($ch, $options); return curl_exec($ch); } // -------------------------------------------------------------------------- //Set error handlers register_shutdown_function('shutdown'); 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