<?php

/**

* HybridAuth

* http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth

* (c) 2009-2014, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html

*/



/**

 * Errors manager

 * 

 * HybridAuth errors are stored in Hybrid::storage() and not displayed directly to the end user 

 */

class Hybrid_Error

{

	/**

	* Store error in session

	*

	* @param String $message

	* @param Number $code

	* @param String $trace

	* @param String $previous

	*/

	public static function setError( $message, $code = NULL, $trace = NULL, $previous = NULL )

	{

		Hybrid_Logger::info( "Enter Hybrid_Error::setError( $message )" );



		Hybrid_Auth::storage()->set( "hauth_session.error.status"  , 1         );

		Hybrid_Auth::storage()->set( "hauth_session.error.message" , $message  );

		Hybrid_Auth::storage()->set( "hauth_session.error.code"    , $code     );

		Hybrid_Auth::storage()->set( "hauth_session.error.trace"   , $trace    );

		Hybrid_Auth::storage()->set( "hauth_session.error.previous", $previous );

	}



	/**

	* Clear the last error

	*/

	public static function clearError()

	{ 

		Hybrid_Logger::info( "Enter Hybrid_Error::clearError()" );



		Hybrid_Auth::storage()->delete( "hauth_session.error.status"   );

		Hybrid_Auth::storage()->delete( "hauth_session.error.message"  );

		Hybrid_Auth::storage()->delete( "hauth_session.error.code"     );

		Hybrid_Auth::storage()->delete( "hauth_session.error.trace"    );

		Hybrid_Auth::storage()->delete( "hauth_session.error.previous" );

	}



	/**

	* Checks to see if there is a an error. 

	* 

	* @return boolean True if there is an error.

	*/

	public static function hasError()

	{ 

		return (bool) Hybrid_Auth::storage()->get( "hauth_session.error.status" );

	}



	/**

	* return error message 

	*/

	public static function getErrorMessage()

	{ 

		return Hybrid_Auth::storage()->get( "hauth_session.error.message" );

	}



	/**

	* return error code  

	*/

	public static function getErrorCode()

	{ 

		return Hybrid_Auth::storage()->get( "hauth_session.error.code" );

	}



	/**

	* return string detailed error backtrace as string.

	*/

	public static function getErrorTrace()

	{ 

		return Hybrid_Auth::storage()->get( "hauth_session.error.trace" );

	}



	/**

	* @return string detailed error backtrace as string.

	*/

	public static function getErrorPrevious()

	{ 

		return Hybrid_Auth::storage()->get( "hauth_session.error.previous" );

	}

}

