/** * Display error on screen * * @param unknown_type $message * @param int $code One of PHP's error codes. */ public static function DisplayException(Exception $e) { restore_error_handler(); $code = $e->getCode(); $message = $e instanceof ErrorList ? "Multiple errors: " . join("; ", $e->GetAllMessages()) : $e->getMessage(); // Defaultize $code. Not sure if we can place a constant in param default, since constants are kind of late-binded $code = ($code == null) ? E_USER_ERROR : $code; // Generate backtrace if debug mode flag set if (CONFIG::$DEV_DEBUG) $bt = Debug::Backtrace($e); // Log exception if ( class_exists("Log") && Log::HasLogger("EPPDRSLogger")) { //TODO: this is not needed anymore? Log::$DoRaiseExceptions = false; Log::Log($message, E_USER_ERROR, array("backtrace" => $bt), "EPPDRSLogger"); } // Display switch (CONTEXTS::$APPCONTEXT) { case APPCONTEXT::ORDERWIZARD : if (!defined("NO_TEMPLATES")) { // Display error $Smarty = Core::GetSmartyInstance("SmartyExt"); $Smarty->assign(array("backtrace" => $bt, "message" => $message, "lang" => LOCALE)); $Smarty->display("exception.tpl"); } break; case APPCONTEXT::CRONJOB : die($message); // Exception in Registrant/Registrar panel case APPCONTEXT::REGISTRANT_CP: case APPCONTEXT::REGISTRAR_CP: if (!defined("NO_TEMPLATES")) { try { if ($GLOBALS['enable_json']) { // AJAX request, show error text and 500 status header('HTTP/1.0 500 Internal Server Error'); die($e->getMessage()); } else { // Display error $Smarty = Core::GetSmartyInstance("SmartyExt"); $Smarty->assign(array("backtrace" => $bt, "message" => $message, "lang" => LOCALE)); $sub_src_dir = realpath(dirname($_SERVER["SCRIPT_FILENAME"]). "/src"); // // Load menu // Core::load("XMLNavigation", $sub_src_dir); require("{$sub_src_dir}/navigation.inc.php"); $post_serialized = self::SerializePOST($_POST); $Smarty->assign(array( "dmenu" => $XMLNav->DMenu, "post_serialized" => $post_serialized, "get_url" => $_SERVER['REQUEST_URI'], ) ); $Smarty->display( (CONTEXTS::$APPCONTEXT == APPCONTEXT::REGISTRANT_CP ? "client" : "admin") . "/exception.tpl" ); } } catch (Exception $e2) { Log::Log($e2->getMessage(), E_USER_ERROR); } } break; // Default to show regular exception default: if (!defined("NO_TEMPLATES")) { // Display error $Smarty = Core::GetSmartyInstance("SmartyExt"); $Smarty->assign(array("backtrace" => $bt, "message" => $message, "lang" => LOCALE)); $Smarty->display("exception.tpl"); } break; } exit(); }