Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/zend/Zend/XmlRpc/Server/Fault.php
Go to the documentation of this file.
00001 <?php
00026 require_once 'Zend/XmlRpc/Fault.php';
00027 
00028 
00050 class Zend_XmlRpc_Server_Fault extends Zend_XmlRpc_Fault
00051 {
00055     protected $_exception;
00056 
00060     protected static $_faultExceptionClasses = array('Zend_XmlRpc_Server_Exception' => true);
00061 
00065     protected static $_observers = array();
00066 
00073     public function __construct(Exception $e)
00074     {
00075         $this->_exception = $e;
00076         $code             = 404;
00077         $message          = 'Unknown error';
00078         $exceptionClass   = get_class($e);
00079 
00080         foreach (array_keys(self::$_faultExceptionClasses) as $class) {
00081             if ($e instanceof $class) {
00082                 $code    = $e->getCode();
00083                 $message = $e->getMessage();
00084                 break;
00085             }
00086         }
00087 
00088         parent::__construct($code, $message);
00089 
00090         // Notify exception observers, if present
00091         if (!empty(self::$_observers)) {
00092             foreach (array_keys(self::$_observers) as $observer) {
00093                 call_user_func(array($observer, 'observe'), $this);
00094             }
00095         }
00096     }
00097 
00104     public static function getInstance(Exception $e)
00105     {
00106         return new self($e);
00107     }
00108 
00115     public static function attachFaultException($classes)
00116     {
00117         if (!is_array($classes)) {
00118             $classes = (array) $classes;
00119         }
00120 
00121         foreach ($classes as $class) {
00122             if (is_string($class) && class_exists($class)) {
00123                 self::$_faultExceptionClasses[$class] = true;
00124             }
00125         }
00126     }
00127 
00134     public static function detachFaultException($classes)
00135     {
00136         if (!is_array($classes)) {
00137             $classes = (array) $classes;
00138         }
00139 
00140         foreach ($classes as $class) {
00141             if (is_string($class) && isset(self::$_faultExceptionClasses[$class])) {
00142                 unset(self::$_faultExceptionClasses[$class]);
00143             }
00144         }
00145     }
00146 
00159     public static function attachObserver($class)
00160     {
00161         if (!is_string($class)
00162             || !class_exists($class)
00163             || !is_callable(array($class, 'observe')))
00164         {
00165             return false;
00166         }
00167 
00168         if (!isset(self::$_observers[$class])) {
00169             self::$_observers[$class] = true;
00170         }
00171 
00172         return true;
00173     }
00174 
00181     public static function detachObserver($class)
00182     {
00183         if (!isset(self::$_observers[$class])) {
00184             return false;
00185         }
00186 
00187         unset(self::$_observers[$class]);
00188         return true;
00189     }
00190 
00197     public function getException()
00198     {
00199         return $this->_exception;
00200     }
00201 }
 All Data Structures Namespaces Files Functions Variables Enumerations