Example #1
0
		/**
		 * 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();
		}