Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/zend/Zend/Amf/Parse/TypeLoader.php
Go to the documentation of this file.
00001 <?php
00026 require_once 'Zend/Amf/Value/Messaging/AcknowledgeMessage.php';
00030 require_once 'Zend/Amf/Value/Messaging/AsyncMessage.php';
00034 require_once 'Zend/Amf/Value/Messaging/CommandMessage.php';
00038 require_once 'Zend/Amf/Value/Messaging/ErrorMessage.php';
00042 require_once 'Zend/Amf/Value/Messaging/RemotingMessage.php';
00043 
00053 final class Zend_Amf_Parse_TypeLoader
00054 {
00058     public static $callbackClass;
00059 
00063     public static $classMap = array (
00064         'flex.messaging.messages.AcknowledgeMessage' => 'Zend_Amf_Value_Messaging_AcknowledgeMessage',
00065         'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_AsyncMessage',
00066         'flex.messaging.messages.CommandMessage'     => 'Zend_Amf_Value_Messaging_CommandMessage',
00067         'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_ErrorMessage',
00068         'flex.messaging.messages.RemotingMessage'    => 'Zend_Amf_Value_Messaging_RemotingMessage',
00069         'flex.messaging.io.ArrayCollection'          => 'Zend_Amf_Value_Messaging_ArrayCollection',
00070     );
00071 
00075     protected static $_defaultClassMap = array(
00076         'flex.messaging.messages.AcknowledgeMessage' => 'Zend_Amf_Value_Messaging_AcknowledgeMessage',
00077         'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_AsyncMessage',
00078         'flex.messaging.messages.CommandMessage'     => 'Zend_Amf_Value_Messaging_CommandMessage',
00079         'flex.messaging.messages.ErrorMessage'       => 'Zend_Amf_Value_Messaging_ErrorMessage',
00080         'flex.messaging.messages.RemotingMessage'    => 'Zend_Amf_Value_Messaging_RemotingMessage',
00081         'flex.messaging.io.ArrayCollection'          => 'Zend_Amf_Value_Messaging_ArrayCollection',
00082     );
00083 
00087     protected static $_resourceLoader = null;
00088 
00089 
00096     public static function loadType($className)
00097     {
00098         $class    = self::getMappedClassName($className);
00099         if(!$class) {
00100             $class = str_replace('.', '_', $className);
00101         }
00102         if (!class_exists($class)) {
00103             return "stdClass";
00104         }
00105         return $class;
00106     }
00107 
00114     public static function getMappedClassName($className)
00115     {
00116         $mappedName = array_search($className, self::$classMap);
00117 
00118         if ($mappedName) {
00119             return $mappedName;
00120         }
00121 
00122         $mappedName = array_search($className, array_flip(self::$classMap));
00123 
00124         if ($mappedName) {
00125             return $mappedName;
00126         }
00127 
00128         return false;
00129     }
00130 
00142     public static function setMapping($asClassName, $phpClassName)
00143     {
00144         self::$classMap[$asClassName] = $phpClassName;
00145     }
00146 
00152     public static function resetMap()
00153     {
00154         self::$classMap = self::$_defaultClassMap;
00155     }
00156 
00162     public static function setResourceLoader(Zend_Loader_PluginLoader_Interface $loader)
00163     {
00164         self::$_resourceLoader = $loader;
00165     }
00166 
00173     public static function addResourceDirectory($prefix, $dir)
00174     {
00175         if(self::$_resourceLoader) {
00176             self::$_resourceLoader->addPrefixPath($prefix, $dir);
00177         }
00178     }
00179 
00186     public static function getResourceParser($resource)
00187     {
00188         if(self::$_resourceLoader) {
00189             $type = preg_replace("/[^A-Za-z0-9_]/", " ", get_resource_type($resource));
00190             $type = str_replace(" ","", ucwords($type));
00191             return self::$_resourceLoader->load($type);
00192         }
00193         return false;
00194     }
00195 
00202     public static function handleResource($resource)
00203     {
00204         if(!self::$_resourceLoader) {
00205             require_once 'Zend/Amf/Exception.php';
00206             throw new Zend_Amf_Exception('Unable to handle resources - resource plugin loader not set');
00207         }
00208         try {
00209             while(is_resource($resource)) {
00210                 $resclass = self::getResourceParser($resource);
00211                 if(!$resclass) {
00212                     require_once 'Zend/Amf/Exception.php';
00213                     throw new Zend_Amf_Exception('Can not serialize resource type: '. get_resource_type($resource));
00214                 }
00215                 $parser = new $resclass();
00216                 if(is_callable(array($parser, 'parse'))) {
00217                     $resource = $parser->parse($resource);
00218                 } else {
00219                     require_once 'Zend/Amf/Exception.php';
00220                     throw new Zend_Amf_Exception("Could not call parse() method on class $resclass");
00221                 }
00222             }
00223             return $resource;
00224         } catch(Zend_Amf_Exception $e) {
00225             throw new Zend_Amf_Exception($e->getMessage(), $e->getCode(), $e);
00226         } catch(Exception $e) {
00227             require_once 'Zend/Amf/Exception.php';
00228             throw new Zend_Amf_Exception('Can not serialize resource type: '. get_resource_type($resource), 0, $e);
00229         }
00230     }
00231 }
 All Data Structures Namespaces Files Functions Variables Enumerations