diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/File/Transfer.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/File/Transfer.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,125 @@ +setAdapter($adapter, $direction, $options); + } + + /** + * Sets a new adapter + * + * @param string $adapter Adapter to use + * @param boolean $direction OPTIONAL False means Download, true means upload + * @param array $options OPTIONAL Options to set for this adapter + * @throws Zend_File_Transfer_Exception + */ + public function setAdapter($adapter, $direction = false, $options = array()) + { + if (Zend_Loader::isReadable('Zend/File/Transfer/Adapter/' . ucfirst($adapter). '.php')) { + $adapter = 'Zend_File_Transfer_Adapter_' . ucfirst($adapter); + } + + if (!class_exists($adapter)) { + Zend_Loader::loadClass($adapter); + } + + $direction = (integer) $direction; + $this->_adapter[$direction] = new $adapter($options); + if (!$this->_adapter[$direction] instanceof Zend_File_Transfer_Adapter_Abstract) { + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("Adapter " . $adapter . " does not extend Zend_File_Transfer_Adapter_Abstract"); + } + + return $this; + } + + /** + * Returns all set adapters + * + * @param boolean $direction On null, all directions are returned + * On false, download direction is returned + * On true, upload direction is returned + * @return array|Zend_File_Transfer_Adapter + */ + public function getAdapter($direction = null) + { + if ($direction === null) { + return $this->_adapter; + } + + $direction = (integer) $direction; + return $this->_adapter[$direction]; + } + + /** + * Calls all methods from the adapter + * + * @param string $method Method to call + * @param array $options Options for this method + * @return mixed + */ + public function __call($method, array $options) + { + if (array_key_exists('direction', $options)) { + $direction = (integer) $options['direction']; + } else { + $direction = 0; + } + + if (method_exists($this->_adapter[$direction], $method)) { + return call_user_func_array(array($this->_adapter[$direction], $method), $options); + } + + require_once 'Zend/File/Transfer/Exception.php'; + throw new Zend_File_Transfer_Exception("Unknown method '" . $method . "' called!"); + } +}