summaryrefslogtreecommitdiffstats
path: root/library/vendor/Zend/Server
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:39:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 12:39:39 +0000
commit8ca6cc32b2c789a3149861159ad258f2cb9491e3 (patch)
tree2492de6f1528dd44eaa169a5c1555026d9cb75ec /library/vendor/Zend/Server
parentInitial commit. (diff)
downloadicingaweb2-a598b28402ead15d3701df32e198513e7b1f299c.tar.xz
icingaweb2-a598b28402ead15d3701df32e198513e7b1f299c.zip
Adding upstream version 2.11.4.upstream/2.11.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'library/vendor/Zend/Server')
-rw-r--r--library/vendor/Zend/Server/Abstract.php235
-rw-r--r--library/vendor/Zend/Server/Cache.php147
-rw-r--r--library/vendor/Zend/Server/Definition.php263
-rw-r--r--library/vendor/Zend/Server/Exception.php34
-rw-r--r--library/vendor/Zend/Server/Interface.php118
-rw-r--r--library/vendor/Zend/Server/Method/Callback.php204
-rw-r--r--library/vendor/Zend/Server/Method/Definition.php288
-rw-r--r--library/vendor/Zend/Server/Method/Parameter.php214
-rw-r--r--library/vendor/Zend/Server/Method/Prototype.php207
-rw-r--r--library/vendor/Zend/Server/Reflection.php105
-rw-r--r--library/vendor/Zend/Server/Reflection/Class.php195
-rw-r--r--library/vendor/Zend/Server/Reflection/Exception.php37
-rw-r--r--library/vendor/Zend/Server/Reflection/Function.php38
-rw-r--r--library/vendor/Zend/Server/Reflection/Function/Abstract.php506
-rw-r--r--library/vendor/Zend/Server/Reflection/Method.php109
-rw-r--r--library/vendor/Zend/Server/Reflection/Node.php201
-rw-r--r--library/vendor/Zend/Server/Reflection/Parameter.php158
-rw-r--r--library/vendor/Zend/Server/Reflection/Prototype.php99
-rw-r--r--library/vendor/Zend/Server/Reflection/ReturnValue.php108
19 files changed, 3266 insertions, 0 deletions
diff --git a/library/vendor/Zend/Server/Abstract.php b/library/vendor/Zend/Server/Abstract.php
new file mode 100644
index 0000000..7f3d1eb
--- /dev/null
+++ b/library/vendor/Zend/Server/Abstract.php
@@ -0,0 +1,235 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/** Zend_Server_Interface */
+
+/**
+ * Zend_Server_Definition
+ */
+
+/**
+ * Zend_Server_Method_Definition
+ */
+
+/**
+ * Zend_Server_Method_Callback
+ */
+
+/**
+ * Zend_Server_Method_Prototype
+ */
+
+/**
+ * Zend_Server_Method_Parameter
+ */
+
+/**
+ * Zend_Server_Abstract
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+abstract class Zend_Server_Abstract implements Zend_Server_Interface
+{
+ /**
+ * @deprecated
+ * @var array List of PHP magic methods (lowercased)
+ */
+ protected static $magic_methods = array(
+ '__call',
+ '__clone',
+ '__construct',
+ '__destruct',
+ '__get',
+ '__isset',
+ '__set',
+ '__set_state',
+ '__sleep',
+ '__tostring',
+ '__unset',
+ '__wakeup',
+ );
+
+ /**
+ * @var bool Flag; whether or not overwriting existing methods is allowed
+ */
+ protected $_overwriteExistingMethods = false;
+
+ /**
+ * @var Zend_Server_Definition
+ */
+ protected $_table;
+
+ /**
+ * Constructor
+ *
+ * Setup server description
+ *
+ * @return void
+ */
+ public function __construct()
+ {
+ $this->_table = new Zend_Server_Definition();
+ $this->_table->setOverwriteExistingMethods($this->_overwriteExistingMethods);
+ }
+
+ /**
+ * Returns a list of registered methods
+ *
+ * Returns an array of method definitions.
+ *
+ * @return Zend_Server_Definition
+ */
+ public function getFunctions()
+ {
+ return $this->_table;
+ }
+
+ /**
+ * Lowercase a string
+ *
+ * Lowercase's a string by reference
+ *
+ * @deprecated
+ * @param string $string value
+ * @param string $key
+ * @return string Lower cased string
+ */
+ public static function lowerCase(&$value, &$key)
+ {
+ trigger_error(__CLASS__ . '::' . __METHOD__ . '() is deprecated and will be removed in a future version', E_USER_NOTICE);
+ return $value = strtolower($value);
+ }
+
+ /**
+ * Build callback for method signature
+ *
+ * @param Zend_Server_Reflection_Function_Abstract $reflection
+ * @return Zend_Server_Method_Callback
+ */
+ protected function _buildCallback(Zend_Server_Reflection_Function_Abstract $reflection)
+ {
+ $callback = new Zend_Server_Method_Callback();
+ if ($reflection instanceof Zend_Server_Reflection_Method) {
+ $callback->setType($reflection->isStatic() ? 'static' : 'instance')
+ ->setClass($reflection->getDeclaringClass()->getName())
+ ->setMethod($reflection->getName());
+ } elseif ($reflection instanceof Zend_Server_Reflection_Function) {
+ $callback->setType('function')
+ ->setFunction($reflection->getName());
+ }
+ return $callback;
+ }
+
+ /**
+ * Build a method signature
+ *
+ * @param Zend_Server_Reflection_Function_Abstract $reflection
+ * @param null|string|object $class
+ * @return Zend_Server_Method_Definition
+ * @throws Zend_Server_Exception on duplicate entry
+ */
+ protected function _buildSignature(Zend_Server_Reflection_Function_Abstract $reflection, $class = null)
+ {
+ $ns = $reflection->getNamespace();
+ $name = $reflection->getName();
+ $method = empty($ns) ? $name : $ns . '.' . $name;
+
+ if (!$this->_overwriteExistingMethods && $this->_table->hasMethod($method)) {
+ throw new Zend_Server_Exception('Duplicate method registered: ' . $method);
+ }
+
+ $definition = new Zend_Server_Method_Definition();
+ $definition->setName($method)
+ ->setCallback($this->_buildCallback($reflection))
+ ->setMethodHelp($reflection->getDescription())
+ ->setInvokeArguments($reflection->getInvokeArguments());
+
+ foreach ($reflection->getPrototypes() as $proto) {
+ $prototype = new Zend_Server_Method_Prototype();
+ $prototype->setReturnType($this->_fixType($proto->getReturnType()));
+ foreach ($proto->getParameters() as $parameter) {
+ $param = new Zend_Server_Method_Parameter(array(
+ 'type' => $this->_fixType($parameter->getType()),
+ 'name' => $parameter->getName(),
+ 'optional' => $parameter->isOptional(),
+ ));
+ if ($parameter->isDefaultValueAvailable()) {
+ $param->setDefaultValue($parameter->getDefaultValue());
+ }
+ $prototype->addParameter($param);
+ }
+ $definition->addPrototype($prototype);
+ }
+ if (is_object($class)) {
+ $definition->setObject($class);
+ }
+ $this->_table->addMethod($definition);
+ return $definition;
+ }
+
+ /**
+ * Dispatch method
+ *
+ * @param Zend_Server_Method_Definition $invocable
+ * @param array $params
+ * @return mixed
+ */
+ protected function _dispatch(Zend_Server_Method_Definition $invocable, array $params)
+ {
+ $callback = $invocable->getCallback();
+ $type = $callback->getType();
+
+ if ('function' == $type) {
+ $function = $callback->getFunction();
+ return call_user_func_array($function, $params);
+ }
+
+ $class = $callback->getClass();
+ $method = $callback->getMethod();
+
+ if ('static' == $type) {
+ return call_user_func_array(array($class, $method), $params);
+ }
+
+ $object = $invocable->getObject();
+ if (!is_object($object)) {
+ $invokeArgs = $invocable->getInvokeArguments();
+ if (!empty($invokeArgs)) {
+ $reflection = new ReflectionClass($class);
+ $object = $reflection->newInstanceArgs(array_values($invokeArgs));
+ } else {
+ $object = new $class;
+ }
+ }
+ return call_user_func_array(array($object, $method), $params);
+ }
+
+ /**
+ * Map PHP type to protocol type
+ *
+ * @param string $type
+ * @return string
+ */
+ abstract protected function _fixType($type);
+}
diff --git a/library/vendor/Zend/Server/Cache.php b/library/vendor/Zend/Server/Cache.php
new file mode 100644
index 0000000..97264df
--- /dev/null
+++ b/library/vendor/Zend/Server/Cache.php
@@ -0,0 +1,147 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Zend_Server_Cache: cache server definitions
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Cache
+{
+ /**
+ * @var array Methods to skip when caching server
+ */
+ protected static $_skipMethods = array();
+
+ /**
+ * Cache a file containing the dispatch list.
+ *
+ * Serializes the server definition stores the information
+ * in $filename.
+ *
+ * Returns false on any error (typically, inability to write to file), true
+ * on success.
+ *
+ * @param string $filename
+ * @param Zend_Server_Interface $server
+ * @return bool
+ */
+ public static function save($filename, Zend_Server_Interface $server)
+ {
+ if (!is_string($filename)
+ || (!file_exists($filename) && !is_writable(dirname($filename))))
+ {
+ return false;
+ }
+
+ $methods = $server->getFunctions();
+
+ if ($methods instanceof Zend_Server_Definition) {
+ $definition = new Zend_Server_Definition();
+ foreach ($methods as $method) {
+ if (in_array($method->getName(), self::$_skipMethods)) {
+ continue;
+ }
+ $definition->addMethod($method);
+ }
+ $methods = $definition;
+ }
+
+ if (0 === @file_put_contents($filename, serialize($methods))) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Load server definition from a file
+ *
+ * Unserializes a stored server definition from $filename. Returns false if
+ * it fails in any way, true on success.
+ *
+ * Useful to prevent needing to build the server definition on each
+ * request. Sample usage:
+ *
+ * <code>
+ * if (!Zend_Server_Cache::get($filename, $server)) {
+ * require_once 'Some/Service/Class.php';
+ * require_once 'Another/Service/Class.php';
+ *
+ * // Attach Some_Service_Class with namespace 'some'
+ * $server->attach('Some_Service_Class', 'some');
+ *
+ * // Attach Another_Service_Class with namespace 'another'
+ * $server->attach('Another_Service_Class', 'another');
+ *
+ * Zend_Server_Cache::save($filename, $server);
+ * }
+ *
+ * $response = $server->handle();
+ * echo $response;
+ * </code>
+ *
+ * @param string $filename
+ * @param Zend_Server_Interface $server
+ * @return bool
+ */
+ public static function get($filename, Zend_Server_Interface $server)
+ {
+ if (!is_string($filename)
+ || !file_exists($filename)
+ || !is_readable($filename))
+ {
+ return false;
+ }
+
+
+ if (false === ($dispatch = @file_get_contents($filename))) {
+ return false;
+ }
+
+ if (false === ($dispatchArray = @unserialize($dispatch))) {
+ return false;
+ }
+
+ $server->loadFunctions($dispatchArray);
+
+ return true;
+ }
+
+ /**
+ * Remove a cache file
+ *
+ * @param string $filename
+ * @return boolean
+ */
+ public static function delete($filename)
+ {
+ if (is_string($filename) && file_exists($filename)) {
+ unlink($filename);
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/library/vendor/Zend/Server/Definition.php b/library/vendor/Zend/Server/Definition.php
new file mode 100644
index 0000000..fb8d24a
--- /dev/null
+++ b/library/vendor/Zend/Server/Definition.php
@@ -0,0 +1,263 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Server methods metadata
+ *
+ * @todo Implement iterator
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Definition implements Countable, Iterator
+{
+ /**
+ * @var array Array of Zend_Server_Method_Definition objects
+ */
+ protected $_methods = array();
+
+ /**
+ * @var bool Whether or not overwriting existing methods is allowed
+ */
+ protected $_overwriteExistingMethods = false;
+
+ /**
+ * Constructor
+ *
+ * @param null|array $methods
+ * @return void
+ */
+ public function __construct($methods = null)
+ {
+ if (is_array($methods)) {
+ $this->setMethods($methods);
+ }
+ }
+
+ /**
+ * Set flag indicating whether or not overwriting existing methods is allowed
+ *
+ * @param mixed $flag
+ * @return void
+ */
+ public function setOverwriteExistingMethods($flag)
+ {
+ $this->_overwriteExistingMethods = (bool) $flag;
+ return $this;
+ }
+
+ /**
+ * Add method to definition
+ *
+ * @param array|Zend_Server_Method_Definition $method
+ * @param null|string $name
+ * @return Zend_Server_Definition
+ * @throws Zend_Server_Exception if duplicate or invalid method provided
+ */
+ public function addMethod($method, $name = null)
+ {
+ if (is_array($method)) {
+ $method = new Zend_Server_Method_Definition($method);
+ } elseif (!$method instanceof Zend_Server_Method_Definition) {
+ throw new Zend_Server_Exception('Invalid method provided');
+ }
+
+ if (is_numeric($name)) {
+ $name = null;
+ }
+ if (null !== $name) {
+ $method->setName($name);
+ } else {
+ $name = $method->getName();
+ }
+ if (null === $name) {
+ throw new Zend_Server_Exception('No method name provided');
+ }
+
+ if (!$this->_overwriteExistingMethods && array_key_exists($name, $this->_methods)) {
+ throw new Zend_Server_Exception(sprintf('Method by name of "%s" already exists', $name));
+ }
+ $this->_methods[$name] = $method;
+ return $this;
+ }
+
+ /**
+ * Add multiple methods
+ *
+ * @param array $methods Array of Zend_Server_Method_Definition objects or arrays
+ * @return Zend_Server_Definition
+ */
+ public function addMethods(array $methods)
+ {
+ foreach ($methods as $key => $method) {
+ $this->addMethod($method, $key);
+ }
+ return $this;
+ }
+
+ /**
+ * Set all methods at once (overwrite)
+ *
+ * @param array $methods Array of Zend_Server_Method_Definition objects or arrays
+ * @return Zend_Server_Definition
+ */
+ public function setMethods(array $methods)
+ {
+ $this->clearMethods();
+ $this->addMethods($methods);
+ return $this;
+ }
+
+ /**
+ * Does the definition have the given method?
+ *
+ * @param string $method
+ * @return bool
+ */
+ public function hasMethod($method)
+ {
+ return array_key_exists($method, $this->_methods);
+ }
+
+ /**
+ * Get a given method definition
+ *
+ * @param string $method
+ * @return null|Zend_Server_Method_Definition
+ */
+ public function getMethod($method)
+ {
+ if ($this->hasMethod($method)) {
+ return $this->_methods[$method];
+ }
+ return false;
+ }
+
+ /**
+ * Get all method definitions
+ *
+ * @return array Array of Zend_Server_Method_Definition objects
+ */
+ public function getMethods()
+ {
+ return $this->_methods;
+ }
+
+ /**
+ * Remove a method definition
+ *
+ * @param string $method
+ * @return Zend_Server_Definition
+ */
+ public function removeMethod($method)
+ {
+ if ($this->hasMethod($method)) {
+ unset($this->_methods[$method]);
+ }
+ return $this;
+ }
+
+ /**
+ * Clear all method definitions
+ *
+ * @return Zend_Server_Definition
+ */
+ public function clearMethods()
+ {
+ $this->_methods = array();
+ return $this;
+ }
+
+ /**
+ * Cast definition to an array
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ $methods = array();
+ foreach ($this->getMethods() as $key => $method) {
+ $methods[$key] = $method->toArray();
+ }
+ return $methods;
+ }
+
+ /**
+ * Countable: count of methods
+ *
+ * @return int
+ */
+ public function count()
+ {
+ return count($this->_methods);
+ }
+
+ /**
+ * Iterator: current item
+ *
+ * @return mixed
+ */
+ public function current()
+ {
+ return current($this->_methods);
+ }
+
+ /**
+ * Iterator: current item key
+ *
+ * @return int|string
+ */
+ public function key()
+ {
+ return key($this->_methods);
+ }
+
+ /**
+ * Iterator: advance to next method
+ *
+ * @return void
+ */
+ public function next()
+ {
+ return next($this->_methods);
+ }
+
+ /**
+ * Iterator: return to first method
+ *
+ * @return void
+ */
+ public function rewind()
+ {
+ return reset($this->_methods);
+ }
+
+ /**
+ * Iterator: is the current index valid?
+ *
+ * @return bool
+ */
+ public function valid()
+ {
+ return (bool) $this->current();
+ }
+}
diff --git a/library/vendor/Zend/Server/Exception.php b/library/vendor/Zend/Server/Exception.php
new file mode 100644
index 0000000..c3b9c9f
--- /dev/null
+++ b/library/vendor/Zend/Server/Exception.php
@@ -0,0 +1,34 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Exception
+ */
+
+/**
+ * Zend_Server_Reflection exceptions
+ *
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @version $Id$
+ */
+class Zend_Server_Exception extends Zend_Exception
+{
+}
diff --git a/library/vendor/Zend/Server/Interface.php b/library/vendor/Zend/Server/Interface.php
new file mode 100644
index 0000000..cc60bc5
--- /dev/null
+++ b/library/vendor/Zend/Server/Interface.php
@@ -0,0 +1,118 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Interface
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+interface Zend_Server_Interface
+{
+ /**
+ * Attach a function as a server method
+ *
+ * Namespacing is primarily for xmlrpc, but may be used with other
+ * implementations to prevent naming collisions.
+ *
+ * @param string $function
+ * @param string $namespace
+ * @param null|array Optional array of arguments to pass to callbacks at
+ * dispatch.
+ * @return void
+ */
+ public function addFunction($function, $namespace = '');
+
+ /**
+ * Attach a class to a server
+ *
+ * The individual implementations should probably allow passing a variable
+ * number of arguments in, so that developers may define custom runtime
+ * arguments to pass to server methods.
+ *
+ * Namespacing is primarily for xmlrpc, but could be used for other
+ * implementations as well.
+ *
+ * @param mixed $class Class name or object instance to examine and attach
+ * to the server.
+ * @param string $namespace Optional namespace with which to prepend method
+ * names in the dispatch table.
+ * methods in the class will be valid callbacks.
+ * @param null|array Optional array of arguments to pass to callbacks at
+ * dispatch.
+ * @return void
+ */
+ public function setClass($class, $namespace = '', $argv = null);
+
+ /**
+ * Generate a server fault
+ *
+ * @param mixed $fault
+ * @param int $code
+ * @return mixed
+ */
+ public function fault($fault = null, $code = 404);
+
+ /**
+ * Handle a request
+ *
+ * Requests may be passed in, or the server may automagically determine the
+ * request based on defaults. Dispatches server request to appropriate
+ * method and returns a response
+ *
+ * @param mixed $request
+ * @return mixed
+ */
+ public function handle($request = false);
+
+ /**
+ * Return a server definition array
+ *
+ * Returns a server definition array as created using
+ * {@link * Zend_Server_Reflection}. Can be used for server introspection,
+ * documentation, or persistence.
+ *
+ * @access public
+ * @return array
+ */
+ public function getFunctions();
+
+ /**
+ * Load server definition
+ *
+ * Used for persistence; loads a construct as returned by {@link getFunctions()}.
+ *
+ * @param array $array
+ * @return void
+ */
+ public function loadFunctions($definition);
+
+ /**
+ * Set server persistence
+ *
+ * @todo Determine how to implement this
+ * @param int $mode
+ * @return void
+ */
+ public function setPersistence($mode);
+}
diff --git a/library/vendor/Zend/Server/Method/Callback.php b/library/vendor/Zend/Server/Method/Callback.php
new file mode 100644
index 0000000..3f81197
--- /dev/null
+++ b/library/vendor/Zend/Server/Method/Callback.php
@@ -0,0 +1,204 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Method callback metadata
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Method_Callback
+{
+ /**
+ * @var string Class name for class method callback
+ */
+ protected $_class;
+
+ /**
+ * @var string Function name for function callback
+ */
+ protected $_function;
+
+ /**
+ * @var string Method name for class method callback
+ */
+ protected $_method;
+
+ /**
+ * @var string Callback type
+ */
+ protected $_type;
+
+ /**
+ * @var array Valid callback types
+ */
+ protected $_types = array('function', 'static', 'instance');
+
+ /**
+ * Constructor
+ *
+ * @param null|array $options
+ * @return void
+ */
+ public function __construct($options = null)
+ {
+ if ((null !== $options) && is_array($options)) {
+ $this->setOptions($options);
+ }
+ }
+
+ /**
+ * Set object state from array of options
+ *
+ * @param array $options
+ * @return Zend_Server_Method_Callback
+ */
+ public function setOptions(array $options)
+ {
+ foreach ($options as $key => $value) {
+ $method = 'set' . ucfirst($key);
+ if (method_exists($this, $method)) {
+ $this->$method($value);
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Set callback class
+ *
+ * @param string $class
+ * @return Zend_Server_Method_Callback
+ */
+ public function setClass($class)
+ {
+ if (is_object($class)) {
+ $class = get_class($class);
+ }
+ $this->_class = $class;
+ return $this;
+ }
+
+ /**
+ * Get callback class
+ *
+ * @return string|null
+ */
+ public function getClass()
+ {
+ return $this->_class;
+ }
+
+ /**
+ * Set callback function
+ *
+ * @param string $function
+ * @return Zend_Server_Method_Callback
+ */
+ public function setFunction($function)
+ {
+ $this->_function = (string) $function;
+ $this->setType('function');
+ return $this;
+ }
+
+ /**
+ * Get callback function
+ *
+ * @return null|string
+ */
+ public function getFunction()
+ {
+ return $this->_function;
+ }
+
+ /**
+ * Set callback class method
+ *
+ * @param string $method
+ * @return Zend_Server_Method_Callback
+ */
+ public function setMethod($method)
+ {
+ $this->_method = $method;
+ return $this;
+ }
+
+ /**
+ * Get callback class method
+ *
+ * @return null|string
+ */
+ public function getMethod()
+ {
+ return $this->_method;
+ }
+
+ /**
+ * Set callback type
+ *
+ * @param string $type
+ * @return Zend_Server_Method_Callback
+ * @throws Zend_Server_Exception
+ */
+ public function setType($type)
+ {
+ if (!in_array($type, $this->_types)) {
+ throw new Zend_Server_Exception('Invalid method callback type passed to ' . __CLASS__ . '::' . __METHOD__);
+ }
+ $this->_type = $type;
+ return $this;
+ }
+
+ /**
+ * Get callback type
+ *
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->_type;
+ }
+
+ /**
+ * Cast callback to array
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ $type = $this->getType();
+ $array = array(
+ 'type' => $type,
+ );
+ if ('function' == $type) {
+ $array['function'] = $this->getFunction();
+ } else {
+ $array['class'] = $this->getClass();
+ $array['method'] = $this->getMethod();
+ }
+ return $array;
+ }
+}
diff --git a/library/vendor/Zend/Server/Method/Definition.php b/library/vendor/Zend/Server/Method/Definition.php
new file mode 100644
index 0000000..5635ae6
--- /dev/null
+++ b/library/vendor/Zend/Server/Method/Definition.php
@@ -0,0 +1,288 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Method definition metadata
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Method_Definition
+{
+ /**
+ * @var Zend_Server_Method_Callback
+ */
+ protected $_callback;
+
+ /**
+ * @var array
+ */
+ protected $_invokeArguments = array();
+
+ /**
+ * @var string
+ */
+ protected $_methodHelp = '';
+
+ /**
+ * @var string
+ */
+ protected $_name;
+
+ /**
+ * @var null|object
+ */
+ protected $_object;
+
+ /**
+ * @var array Array of Zend_Server_Method_Prototype objects
+ */
+ protected $_prototypes = array();
+
+ /**
+ * Constructor
+ *
+ * @param null|array $options
+ * @return void
+ */
+ public function __construct($options = null)
+ {
+ if ((null !== $options) && is_array($options)) {
+ $this->setOptions($options);
+ }
+ }
+
+ /**
+ * Set object state from options
+ *
+ * @param array $options
+ * @return Zend_Server_Method_Definition
+ */
+ public function setOptions(array $options)
+ {
+ foreach ($options as $key => $value) {
+ $method = 'set' . ucfirst($key);
+ if (method_exists($this, $method)) {
+ $this->$method($value);
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Set method name
+ *
+ * @param string $name
+ * @return Zend_Server_Method_Definition
+ */
+ public function setName($name)
+ {
+ $this->_name = (string) $name;
+ return $this;
+ }
+
+ /**
+ * Get method name
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->_name;
+ }
+
+ /**
+ * Set method callback
+ *
+ * @param array|Zend_Server_Method_Callback $callback
+ * @return Zend_Server_Method_Definition
+ */
+ public function setCallback($callback)
+ {
+ if (is_array($callback)) {
+ $callback = new Zend_Server_Method_Callback($callback);
+ } elseif (!$callback instanceof Zend_Server_Method_Callback) {
+ throw new Zend_Server_Exception('Invalid method callback provided');
+ }
+ $this->_callback = $callback;
+ return $this;
+ }
+
+ /**
+ * Get method callback
+ *
+ * @return Zend_Server_Method_Callback
+ */
+ public function getCallback()
+ {
+ return $this->_callback;
+ }
+
+ /**
+ * Add prototype to method definition
+ *
+ * @param array|Zend_Server_Method_Prototype $prototype
+ * @return Zend_Server_Method_Definition
+ */
+ public function addPrototype($prototype)
+ {
+ if (is_array($prototype)) {
+ $prototype = new Zend_Server_Method_Prototype($prototype);
+ } elseif (!$prototype instanceof Zend_Server_Method_Prototype) {
+ throw new Zend_Server_Exception('Invalid method prototype provided');
+ }
+ $this->_prototypes[] = $prototype;
+ return $this;
+ }
+
+ /**
+ * Add multiple prototypes at once
+ *
+ * @param array $prototypes Array of Zend_Server_Method_Prototype objects or arrays
+ * @return Zend_Server_Method_Definition
+ */
+ public function addPrototypes(array $prototypes)
+ {
+ foreach ($prototypes as $prototype) {
+ $this->addPrototype($prototype);
+ }
+ return $this;
+ }
+
+ /**
+ * Set all prototypes at once (overwrites)
+ *
+ * @param array $prototypes Array of Zend_Server_Method_Prototype objects or arrays
+ * @return Zend_Server_Method_Definition
+ */
+ public function setPrototypes(array $prototypes)
+ {
+ $this->_prototypes = array();
+ $this->addPrototypes($prototypes);
+ return $this;
+ }
+
+ /**
+ * Get all prototypes
+ *
+ * @return array $prototypes Array of Zend_Server_Method_Prototype objects or arrays
+ */
+ public function getPrototypes()
+ {
+ return $this->_prototypes;
+ }
+
+ /**
+ * Set method help
+ *
+ * @param string $methodHelp
+ * @return Zend_Server_Method_Definition
+ */
+ public function setMethodHelp($methodHelp)
+ {
+ $this->_methodHelp = (string) $methodHelp;
+ return $this;
+ }
+
+ /**
+ * Get method help
+ *
+ * @return string
+ */
+ public function getMethodHelp()
+ {
+ return $this->_methodHelp;
+ }
+
+ /**
+ * Set object to use with method calls
+ *
+ * @param object $object
+ * @return Zend_Server_Method_Definition
+ */
+ public function setObject($object)
+ {
+ if (!is_object($object) && (null !== $object)) {
+ throw new Zend_Server_Exception('Invalid object passed to ' . __CLASS__ . '::' . __METHOD__);
+ }
+ $this->_object = $object;
+ return $this;
+ }
+
+ /**
+ * Get object to use with method calls
+ *
+ * @return null|object
+ */
+ public function getObject()
+ {
+ return $this->_object;
+ }
+
+ /**
+ * Set invoke arguments
+ *
+ * @param array $invokeArguments
+ * @return Zend_Server_Method_Definition
+ */
+ public function setInvokeArguments(array $invokeArguments)
+ {
+ $this->_invokeArguments = $invokeArguments;
+ return $this;
+ }
+
+ /**
+ * Retrieve invoke arguments
+ *
+ * @return array
+ */
+ public function getInvokeArguments()
+ {
+ return $this->_invokeArguments;
+ }
+
+ /**
+ * Serialize to array
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ $prototypes = $this->getPrototypes();
+ $signatures = array();
+ foreach ($prototypes as $prototype) {
+ $signatures[] = $prototype->toArray();
+ }
+
+ return array(
+ 'name' => $this->getName(),
+ 'callback' => $this->getCallback()->toArray(),
+ 'prototypes' => $signatures,
+ 'methodHelp' => $this->getMethodHelp(),
+ 'invokeArguments' => $this->getInvokeArguments(),
+ 'object' => $this->getObject(),
+ );
+ }
+}
diff --git a/library/vendor/Zend/Server/Method/Parameter.php b/library/vendor/Zend/Server/Method/Parameter.php
new file mode 100644
index 0000000..63e14a4
--- /dev/null
+++ b/library/vendor/Zend/Server/Method/Parameter.php
@@ -0,0 +1,214 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Method parameter metadata
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Method_Parameter
+{
+ /**
+ * @var mixed Default parameter value
+ */
+ protected $_defaultValue;
+
+ /**
+ * @var string Parameter description
+ */
+ protected $_description = '';
+
+ /**
+ * @var string Parameter variable name
+ */
+ protected $_name;
+
+ /**
+ * @var bool Is parameter optional?
+ */
+ protected $_optional = false;
+
+ /**
+ * @var string Parameter type
+ */
+ protected $_type = 'mixed';
+
+ /**
+ * Constructor
+ *
+ * @param null|array $options
+ * @return void
+ */
+ public function __construct($options = null)
+ {
+ if (is_array($options)) {
+ $this->setOptions($options);
+ }
+ }
+
+ /**
+ * Set object state from array of options
+ *
+ * @param array $options
+ * @return Zend_Server_Method_Parameter
+ */
+ public function setOptions(array $options)
+ {
+ foreach ($options as $key => $value) {
+ $method = 'set' . ucfirst($key);
+ if (method_exists($this, $method)) {
+ $this->$method($value);
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Set default value
+ *
+ * @param mixed $defaultValue
+ * @return Zend_Server_Method_Parameter
+ */
+ public function setDefaultValue($defaultValue)
+ {
+ $this->_defaultValue = $defaultValue;
+ return $this;
+ }
+
+ /**
+ * Retrieve default value
+ *
+ * @return mixed
+ */
+ public function getDefaultValue()
+ {
+ return $this->_defaultValue;
+ }
+
+ /**
+ * Set description
+ *
+ * @param string $description
+ * @return Zend_Server_Method_Parameter
+ */
+ public function setDescription($description)
+ {
+ $this->_description = (string) $description;
+ return $this;
+ }
+
+ /**
+ * Retrieve description
+ *
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->_description;
+ }
+
+ /**
+ * Set name
+ *
+ * @param string $name
+ * @return Zend_Server_Method_Parameter
+ */
+ public function setName($name)
+ {
+ $this->_name = (string) $name;
+ return $this;
+ }
+
+ /**
+ * Retrieve name
+ *
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->_name;
+ }
+
+ /**
+ * Set optional flag
+ *
+ * @param bool $flag
+ * @return Zend_Server_Method_Parameter
+ */
+ public function setOptional($flag)
+ {
+ $this->_optional = (bool) $flag;
+ return $this;
+ }
+
+ /**
+ * Is the parameter optional?
+ *
+ * @return bool
+ */
+ public function isOptional()
+ {
+ return $this->_optional;
+ }
+
+ /**
+ * Set parameter type
+ *
+ * @param string $type
+ * @return Zend_Server_Method_Parameter
+ */
+ public function setType($type)
+ {
+ $this->_type = (string) $type;
+ return $this;
+ }
+
+ /**
+ * Retrieve parameter type
+ *
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->_type;
+ }
+
+ /**
+ * Cast to array
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ return array(
+ 'type' => $this->getType(),
+ 'name' => $this->getName(),
+ 'optional' => $this->isOptional(),
+ 'defaultValue' => $this->getDefaultValue(),
+ 'description' => $this->getDescription(),
+ );
+ }
+}
diff --git a/library/vendor/Zend/Server/Method/Prototype.php b/library/vendor/Zend/Server/Method/Prototype.php
new file mode 100644
index 0000000..33c5a14
--- /dev/null
+++ b/library/vendor/Zend/Server/Method/Prototype.php
@@ -0,0 +1,207 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+
+/**
+ * Method prototype metadata
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Method
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Method_Prototype
+{
+ /**
+ * @var string Return type
+ */
+ protected $_returnType = 'void';
+
+ /**
+ * @var array Map parameter names to parameter index
+ */
+ protected $_parameterNameMap = array();
+
+ /**
+ * @var array Method parameters
+ */
+ protected $_parameters = array();
+
+ /**
+ * Constructor
+ *
+ * @param null|array $options
+ * @return void
+ */
+ public function __construct($options = null)
+ {
+ if ((null !== $options) && is_array($options)) {
+ $this->setOptions($options);
+ }
+ }
+
+ /**
+ * Set return value
+ *
+ * @param string $returnType
+ * @return Zend_Server_Method_Prototype
+ */
+ public function setReturnType($returnType)
+ {
+ $this->_returnType = $returnType;
+ return $this;
+ }
+
+ /**
+ * Retrieve return type
+ *
+ * @return string
+ */
+ public function getReturnType()
+ {
+ return $this->_returnType;
+ }
+
+ /**
+ * Add a parameter
+ *
+ * @param string $parameter
+ * @return Zend_Server_Method_Prototype
+ */
+ public function addParameter($parameter)
+ {
+ if ($parameter instanceof Zend_Server_Method_Parameter) {
+ $this->_parameters[] = $parameter;
+ if (null !== ($name = $parameter->getName())) {
+ $this->_parameterNameMap[$name] = count($this->_parameters) - 1;
+ }
+ } else {
+ $parameter = new Zend_Server_Method_Parameter(array(
+ 'type' => (string) $parameter,
+ ));
+ $this->_parameters[] = $parameter;
+ }
+ return $this;
+ }
+
+ /**
+ * Add parameters
+ *
+ * @param array $parameter
+ * @return Zend_Server_Method_Prototype
+ */
+ public function addParameters(array $parameters)
+ {
+ foreach ($parameters as $parameter) {
+ $this->addParameter($parameter);
+ }
+ return $this;
+ }
+
+ /**
+ * Set parameters
+ *
+ * @param array $parameters
+ * @return Zend_Server_Method_Prototype
+ */
+ public function setParameters(array $parameters)
+ {
+ $this->_parameters = array();
+ $this->_parameterNameMap = array();
+ $this->addParameters($parameters);
+ return $this;
+ }
+
+ /**
+ * Retrieve parameters as list of types
+ *
+ * @return array
+ */
+ public function getParameters()
+ {
+ $types = array();
+ foreach ($this->_parameters as $parameter) {
+ $types[] = $parameter->getType();
+ }
+ return $types;
+ }
+
+ /**
+ * Get parameter objects
+ *
+ * @return array
+ */
+ public function getParameterObjects()
+ {
+ return $this->_parameters;
+ }
+
+ /**
+ * Retrieve a single parameter by name or index
+ *
+ * @param string|int $index
+ * @return null|Zend_Server_Method_Parameter
+ */
+ public function getParameter($index)
+ {
+ if (!is_string($index) && !is_numeric($index)) {
+ return null;
+ }
+ if (array_key_exists($index, $this->_parameterNameMap)) {
+ $index = $this->_parameterNameMap[$index];
+ }
+ if (array_key_exists($index, $this->_parameters)) {
+ return $this->_parameters[$index];
+ }
+ return null;
+ }
+
+ /**
+ * Set object state from array
+ *
+ * @param array $options
+ * @return Zend_Server_Method_Prototype
+ */
+ public function setOptions(array $options)
+ {
+ foreach ($options as $key => $value) {
+ $method = 'set' . ucfirst($key);
+ if (method_exists($this, $method)) {
+ $this->$method($value);
+ }
+ }
+ return $this;
+ }
+
+ /**
+ * Serialize to array
+ *
+ * @return array
+ */
+ public function toArray()
+ {
+ return array(
+ 'returnType' => $this->getReturnType(),
+ 'parameters' => $this->getParameters(),
+ );
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection.php b/library/vendor/Zend/Server/Reflection.php
new file mode 100644
index 0000000..5d95c64
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection.php
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Reflection_Function
+ */
+
+/**
+ * Zend_Server_Reflection_Class
+ */
+
+/**
+ * Reflection for determining method signatures to use with server classes
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection
+{
+ /**
+ * Perform class reflection to create dispatch signatures
+ *
+ * Creates a {@link Zend_Server_Reflection_Class} object for the class or
+ * object provided.
+ *
+ * If extra arguments should be passed to dispatchable methods, these may
+ * be provided as an array to $argv.
+ *
+ * @param string|object $class Class name or object
+ * @param null|array $argv Optional arguments to be used during the method call
+ * @param string $namespace Optional namespace with which to prefix the
+ * method name (used for the signature key). Primarily to avoid collisions,
+ * also for XmlRpc namespacing
+ * @return Zend_Server_Reflection_Class
+ * @throws Zend_Server_Reflection_Exception
+ */
+ public static function reflectClass($class, $argv = false, $namespace = '')
+ {
+ if (is_object($class)) {
+ $reflection = new ReflectionObject($class);
+ } elseif (class_exists($class)) {
+ $reflection = new ReflectionClass($class);
+ } else {
+ throw new Zend_Server_Reflection_Exception('Invalid class or object passed to attachClass()');
+ }
+
+ if ($argv && !is_array($argv)) {
+ throw new Zend_Server_Reflection_Exception('Invalid argv argument passed to reflectClass');
+ }
+
+ return new Zend_Server_Reflection_Class($reflection, $namespace, $argv);
+ }
+
+ /**
+ * Perform function reflection to create dispatch signatures
+ *
+ * Creates dispatch prototypes for a function. It returns a
+ * {@link Zend_Server_Reflection_Function} object.
+ *
+ * If extra arguments should be passed to the dispatchable function, these
+ * may be provided as an array to $argv.
+ *
+ * @param string $function Function name
+ * @param null|array $argv Optional arguments to be used during the method call
+ * @param string $namespace Optional namespace with which to prefix the
+ * function name (used for the signature key). Primarily to avoid
+ * collisions, also for XmlRpc namespacing
+ * @return Zend_Server_Reflection_Function
+ * @throws Zend_Server_Reflection_Exception
+ */
+ public static function reflectFunction($function, $argv = false, $namespace = '')
+ {
+ if (!is_string($function) || !function_exists($function)) {
+ throw new Zend_Server_Reflection_Exception('Invalid function "' . $function . '" passed to reflectFunction');
+ }
+
+
+ if ($argv && !is_array($argv)) {
+ throw new Zend_Server_Reflection_Exception('Invalid argv argument passed to reflectClass');
+ }
+
+ return new Zend_Server_Reflection_Function(new ReflectionFunction($function), $namespace, $argv);
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection/Class.php b/library/vendor/Zend/Server/Reflection/Class.php
new file mode 100644
index 0000000..9456f0a
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Class.php
@@ -0,0 +1,195 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Reflection_Method
+ */
+
+/**
+ * Class/Object reflection
+ *
+ * Proxies calls to a ReflectionClass object, and decorates getMethods() by
+ * creating its own list of {@link Zend_Server_Reflection_Method}s.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_Class
+{
+ /**
+ * Optional configuration parameters; accessible via {@link __get} and
+ * {@link __set()}
+ * @var array
+ */
+ protected $_config = array();
+
+ /**
+ * Array of {@link Zend_Server_Reflection_Method}s
+ * @var array
+ */
+ protected $_methods = array();
+
+ /**
+ * Namespace
+ * @var string
+ */
+ protected $_namespace = null;
+
+ /**
+ * ReflectionClass object
+ * @var ReflectionClass
+ */
+ protected $_reflection;
+
+ /**
+ * Constructor
+ *
+ * Create array of dispatchable methods, each a
+ * {@link Zend_Server_Reflection_Method}. Sets reflection object property.
+ *
+ * @param ReflectionClass $reflection
+ * @param string $namespace
+ * @param mixed $argv
+ * @return void
+ */
+ public function __construct(ReflectionClass $reflection, $namespace = null, $argv = false)
+ {
+ $this->_reflection = $reflection;
+ $this->setNamespace($namespace);
+
+ foreach ($reflection->getMethods() as $method) {
+ // Don't aggregate magic methods
+ if ('__' == substr($method->getName(), 0, 2)) {
+ continue;
+ }
+
+ if ($method->isPublic()) {
+ // Get signatures and description
+ $this->_methods[] = new Zend_Server_Reflection_Method($this, $method, $this->getNamespace(), $argv);
+ }
+ }
+ }
+
+ /**
+ * Proxy reflection calls
+ *
+ * @param string $method
+ * @param array $args
+ * @return mixed
+ */
+ public function __call($method, $args)
+ {
+ if (method_exists($this->_reflection, $method)) {
+ return call_user_func_array(array($this->_reflection, $method), $args);
+ }
+
+ throw new Zend_Server_Reflection_Exception('Invalid reflection method');
+ }
+
+ /**
+ * Retrieve configuration parameters
+ *
+ * Values are retrieved by key from {@link $_config}. Returns null if no
+ * value found.
+ *
+ * @param string $key
+ * @return mixed
+ */
+ public function __get($key)
+ {
+ if (isset($this->_config[$key])) {
+ return $this->_config[$key];
+ }
+
+ return null;
+ }
+
+ /**
+ * Set configuration parameters
+ *
+ * Values are stored by $key in {@link $_config}.
+ *
+ * @param string $key
+ * @param mixed $value
+ * @return void
+ */
+ public function __set($key, $value)
+ {
+ $this->_config[$key] = $value;
+ }
+
+ /**
+ * Return array of dispatchable {@link Zend_Server_Reflection_Method}s.
+ *
+ * @access public
+ * @return array
+ */
+ public function getMethods()
+ {
+ return $this->_methods;
+ }
+
+ /**
+ * Get namespace for this class
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ return $this->_namespace;
+ }
+
+ /**
+ * Set namespace for this class
+ *
+ * @param string $namespace
+ * @return void
+ */
+ public function setNamespace($namespace)
+ {
+ if (empty($namespace)) {
+ $this->_namespace = '';
+ return;
+ }
+
+ if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) {
+ throw new Zend_Server_Reflection_Exception('Invalid namespace');
+ }
+
+ $this->_namespace = $namespace;
+ }
+
+ /**
+ * Wakeup from serialization
+ *
+ * Reflection needs explicit instantiation to work correctly. Re-instantiate
+ * reflection object on wakeup.
+ *
+ * @return void
+ */
+ public function __wakeup()
+ {
+ $this->_reflection = new ReflectionClass($this->getName());
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection/Exception.php b/library/vendor/Zend/Server/Reflection/Exception.php
new file mode 100644
index 0000000..e264768
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Exception.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * @see Zend_Server_Exception
+ */
+
+/**
+ * Zend_Server_Reflection exceptions
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_Exception extends Zend_Server_Exception
+{
+}
diff --git a/library/vendor/Zend/Server/Reflection/Function.php b/library/vendor/Zend/Server/Reflection/Function.php
new file mode 100644
index 0000000..cd76afa
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Function.php
@@ -0,0 +1,38 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Reflection_Function_Abstract
+ */
+
+/**
+ * Function Reflection
+ *
+ * @uses Zend_Server_Reflection_Function_Abstract
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_Function extends Zend_Server_Reflection_Function_Abstract
+{
+}
diff --git a/library/vendor/Zend/Server/Reflection/Function/Abstract.php b/library/vendor/Zend/Server/Reflection/Function/Abstract.php
new file mode 100644
index 0000000..f0557f8
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Function/Abstract.php
@@ -0,0 +1,506 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Reflection_Node
+ */
+
+/**
+ * Zend_Server_Reflection_Parameter
+ */
+
+/**
+ * Zend_Server_Reflection_Prototype
+ */
+
+/**
+ * Function/Method Reflection
+ *
+ * Decorates a ReflectionFunction. Allows setting and retrieving an alternate
+ * 'service' name (i.e., the name to be used when calling via a service),
+ * setting and retrieving the description (originally set using the docblock
+ * contents), retrieving the callback and callback type, retrieving additional
+ * method invocation arguments, and retrieving the
+ * method {@link Zend_Server_Reflection_Prototype prototypes}.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+abstract class Zend_Server_Reflection_Function_Abstract
+{
+ /**
+ * @var ReflectionFunction
+ */
+ protected $_reflection;
+
+ /**
+ * Additional arguments to pass to method on invocation
+ * @var array
+ */
+ protected $_argv = array();
+
+ /**
+ * Used to store extra configuration for the method (typically done by the
+ * server class, e.g., to indicate whether or not to instantiate a class).
+ * Associative array; access is as properties via {@link __get()} and
+ * {@link __set()}
+ * @var array
+ */
+ protected $_config = array();
+
+ /**
+ * Declaring class (needed for when serialization occurs)
+ * @var string
+ */
+ protected $_class;
+
+ /**
+ * Function/method description
+ * @var string
+ */
+ protected $_description = '';
+
+ /**
+ * Namespace with which to prefix function/method name
+ * @var string
+ */
+ protected $_namespace;
+
+ /**
+ * Prototypes
+ * @var array
+ */
+ protected $_prototypes = array();
+
+ private $_return;
+ private $_returnDesc;
+ private $_paramDesc;
+ private $_sigParams;
+ private $_sigParamsDepth;
+
+ /**
+ * Constructor
+ *
+ * @param ReflectionFunction $r
+ */
+ public function __construct(Reflector $r, $namespace = null, $argv = array())
+ {
+ // In PHP 5.1.x, ReflectionMethod extends ReflectionFunction. In 5.2.x,
+ // both extend ReflectionFunctionAbstract. So, we can't do normal type
+ // hinting in the prototype, but instead need to do some explicit
+ // testing here.
+ if ((!$r instanceof ReflectionFunction)
+ && (!$r instanceof ReflectionMethod)) {
+ throw new Zend_Server_Reflection_Exception('Invalid reflection class');
+ }
+ $this->_reflection = $r;
+
+ // Determine namespace
+ if (null !== $namespace){
+ $this->setNamespace($namespace);
+ }
+
+ // Determine arguments
+ if (is_array($argv)) {
+ $this->_argv = $argv;
+ }
+
+ // If method call, need to store some info on the class
+ if ($r instanceof ReflectionMethod) {
+ $this->_class = $r->getDeclaringClass()->getName();
+ }
+
+ // Perform some introspection
+ $this->_reflect();
+ }
+
+ /**
+ * Create signature node tree
+ *
+ * Recursive method to build the signature node tree. Increments through
+ * each array in {@link $_sigParams}, adding every value of the next level
+ * to the current value (unless the current value is null).
+ *
+ * @param Zend_Server_Reflection_Node $parent
+ * @param int $level
+ * @return void
+ */
+ protected function _addTree(Zend_Server_Reflection_Node $parent, $level = 0)
+ {
+ if ($level >= $this->_sigParamsDepth) {
+ return;
+ }
+
+ foreach ($this->_sigParams[$level] as $value) {
+ $node = new Zend_Server_Reflection_Node($value, $parent);
+ if ((null !== $value) && ($this->_sigParamsDepth > $level + 1)) {
+ $this->_addTree($node, $level + 1);
+ }
+ }
+ }
+
+ /**
+ * Build the signature tree
+ *
+ * Builds a signature tree starting at the return values and descending
+ * through each method argument. Returns an array of
+ * {@link Zend_Server_Reflection_Node}s.
+ *
+ * @return array
+ */
+ protected function _buildTree()
+ {
+ $returnTree = array();
+ foreach ((array) $this->_return as $value) {
+ $node = new Zend_Server_Reflection_Node($value);
+ $this->_addTree($node);
+ $returnTree[] = $node;
+ }
+
+ return $returnTree;
+ }
+
+ /**
+ * Build method signatures
+ *
+ * Builds method signatures using the array of return types and the array of
+ * parameters types
+ *
+ * @param array $return Array of return types
+ * @param string $returnDesc Return value description
+ * @param array $params Array of arguments (each an array of types)
+ * @param array $paramDesc Array of parameter descriptions
+ * @return array
+ */
+ protected function _buildSignatures($return, $returnDesc, $paramTypes, $paramDesc)
+ {
+ $this->_return = $return;
+ $this->_returnDesc = $returnDesc;
+ $this->_paramDesc = $paramDesc;
+ $this->_sigParams = $paramTypes;
+ $this->_sigParamsDepth = count($paramTypes);
+ $signatureTrees = $this->_buildTree();
+ $signatures = array();
+
+ $endPoints = array();
+ foreach ($signatureTrees as $root) {
+ $tmp = $root->getEndPoints();
+ if (empty($tmp)) {
+ $endPoints = array_merge($endPoints, array($root));
+ } else {
+ $endPoints = array_merge($endPoints, $tmp);
+ }
+ }
+
+ foreach ($endPoints as $node) {
+ if (!$node instanceof Zend_Server_Reflection_Node) {
+ continue;
+ }
+
+ $signature = array();
+ do {
+ array_unshift($signature, $node->getValue());
+ $node = $node->getParent();
+ } while ($node instanceof Zend_Server_Reflection_Node);
+
+ $signatures[] = $signature;
+ }
+
+ // Build prototypes
+ $params = $this->_reflection->getParameters();
+ foreach ($signatures as $signature) {
+ $return = new Zend_Server_Reflection_ReturnValue(array_shift($signature), $this->_returnDesc);
+ $tmp = array();
+ foreach ($signature as $key => $type) {
+ $param = new Zend_Server_Reflection_Parameter($params[$key], $type, (isset($this->_paramDesc[$key]) ? $this->_paramDesc[$key] : null));
+ $param->setPosition($key);
+ $tmp[] = $param;
+ }
+
+ $this->_prototypes[] = new Zend_Server_Reflection_Prototype($return, $tmp);
+ }
+ }
+
+ /**
+ * Use code reflection to create method signatures
+ *
+ * Determines the method help/description text from the function DocBlock
+ * comment. Determines method signatures using a combination of
+ * ReflectionFunction and parsing of DocBlock @param and @return values.
+ *
+ * @param ReflectionFunction $function
+ * @return array
+ */
+ protected function _reflect()
+ {
+ $function = $this->_reflection;
+ $helpText = '';
+ $signatures = array();
+ $returnDesc = '';
+ $paramCount = $function->getNumberOfParameters();
+ $paramCountRequired = $function->getNumberOfRequiredParameters();
+ $parameters = $function->getParameters();
+ $docBlock = $function->getDocComment();
+
+ if (!empty($docBlock)) {
+ // Get help text
+ if (preg_match(':/\*\*\s*\r?\n\s*\*\s(.*?)\r?\n\s*\*(\s@|/):s', $docBlock, $matches))
+ {
+ $helpText = $matches[1];
+ $helpText = preg_replace('/(^\s*\*\s)/m', '', $helpText);
+ $helpText = preg_replace('/\r?\n\s*\*\s*(\r?\n)*/s', "\n", $helpText);
+ $helpText = trim($helpText);
+ }
+
+ // Get return type(s) and description
+ $return = 'void';
+ if (preg_match('/@return\s+(\S+)/', $docBlock, $matches)) {
+ $return = explode('|', $matches[1]);
+ if (preg_match('/@return\s+\S+\s+(.*?)(@|\*\/)/s', $docBlock, $matches))
+ {
+ $value = $matches[1];
+ $value = preg_replace('/\s?\*\s/m', '', $value);
+ $value = preg_replace('/\s{2,}/', ' ', $value);
+ $returnDesc = trim($value);
+ }
+ }
+
+ // Get param types and description
+ if (preg_match_all('/@param\s+([^\s]+)/m', $docBlock, $matches)) {
+ $paramTypesTmp = $matches[1];
+ if (preg_match_all('/@param\s+\S+\s+(\$\S+)\s+(.*?)(?=@|\*\/)/s', $docBlock, $matches))
+ {
+ $paramDesc = $matches[2];
+ foreach ($paramDesc as $key => $value) {
+ $value = preg_replace('/\s?\*\s/m', '', $value);
+ $value = preg_replace('/\s{2,}/', ' ', $value);
+ $paramDesc[$key] = trim($value);
+ }
+ }
+ }
+ } else {
+ $helpText = $function->getName();
+ $return = 'void';
+
+ // Try and auto-determine type, based on reflection
+ $paramTypesTmp = array();
+ foreach ($parameters as $i => $param) {
+ $paramType = 'mixed';
+ if ($param->isArray()) {
+ $paramType = 'array';
+ }
+ $paramTypesTmp[$i] = $paramType;
+ }
+ }
+
+ // Set method description
+ $this->setDescription($helpText);
+
+ // Get all param types as arrays
+ if (!isset($paramTypesTmp) && (0 < $paramCount)) {
+ $paramTypesTmp = array_fill(0, $paramCount, 'mixed');
+ } elseif (!isset($paramTypesTmp)) {
+ $paramTypesTmp = array();
+ } elseif (count($paramTypesTmp) < $paramCount) {
+ $start = $paramCount - count($paramTypesTmp);
+ for ($i = $start; $i < $paramCount; ++$i) {
+ $paramTypesTmp[$i] = 'mixed';
+ }
+ }
+
+ // Get all param descriptions as arrays
+ if (!isset($paramDesc) && (0 < $paramCount)) {
+ $paramDesc = array_fill(0, $paramCount, '');
+ } elseif (!isset($paramDesc)) {
+ $paramDesc = array();
+ } elseif (count($paramDesc) < $paramCount) {
+ $start = $paramCount - count($paramDesc);
+ for ($i = $start; $i < $paramCount; ++$i) {
+ $paramDesc[$i] = '';
+ }
+ }
+
+ if (count($paramTypesTmp) != $paramCount) {
+ throw new Zend_Server_Reflection_Exception(
+ 'Variable number of arguments is not supported for services (except optional parameters). '
+ . 'Number of function arguments in ' . $function->getDeclaringClass()->getName() . '::'
+ . $function->getName() . '() must correspond to actual number of arguments described in the '
+ . 'docblock.');
+ }
+
+ $paramTypes = array();
+ foreach ($paramTypesTmp as $i => $param) {
+ $tmp = explode('|', $param);
+ if ($parameters[$i]->isOptional()) {
+ array_unshift($tmp, null);
+ }
+ $paramTypes[] = $tmp;
+ }
+
+ $this->_buildSignatures($return, $returnDesc, $paramTypes, $paramDesc);
+ }
+
+
+ /**
+ * Proxy reflection calls
+ *
+ * @param string $method
+ * @param array $args
+ * @return mixed
+ */
+ public function __call($method, $args)
+ {
+ if (method_exists($this->_reflection, $method)) {
+ return call_user_func_array(array($this->_reflection, $method), $args);
+ }
+
+ throw new Zend_Server_Reflection_Exception('Invalid reflection method ("' .$method. '")');
+ }
+
+ /**
+ * Retrieve configuration parameters
+ *
+ * Values are retrieved by key from {@link $_config}. Returns null if no
+ * value found.
+ *
+ * @param string $key
+ * @return mixed
+ */
+ public function __get($key)
+ {
+ if (isset($this->_config[$key])) {
+ return $this->_config[$key];
+ }
+
+ return null;
+ }
+
+ /**
+ * Set configuration parameters
+ *
+ * Values are stored by $key in {@link $_config}.
+ *
+ * @param string $key
+ * @param mixed $value
+ * @return void
+ */
+ public function __set($key, $value)
+ {
+ $this->_config[$key] = $value;
+ }
+
+ /**
+ * Set method's namespace
+ *
+ * @param string $namespace
+ * @return void
+ */
+ public function setNamespace($namespace)
+ {
+ if (empty($namespace)) {
+ $this->_namespace = '';
+ return;
+ }
+
+ if (!is_string($namespace) || !preg_match('/[a-z0-9_\.]+/i', $namespace)) {
+ throw new Zend_Server_Reflection_Exception('Invalid namespace');
+ }
+
+ $this->_namespace = $namespace;
+ }
+
+ /**
+ * Return method's namespace
+ *
+ * @return string
+ */
+ public function getNamespace()
+ {
+ return $this->_namespace;
+ }
+
+ /**
+ * Set the description
+ *
+ * @param string $string
+ * @return void
+ */
+ public function setDescription($string)
+ {
+ if (!is_string($string)) {
+ throw new Zend_Server_Reflection_Exception('Invalid description');
+ }
+
+ $this->_description = $string;
+ }
+
+ /**
+ * Retrieve the description
+ *
+ * @return void
+ */
+ public function getDescription()
+ {
+ return $this->_description;
+ }
+
+ /**
+ * Retrieve all prototypes as array of
+ * {@link Zend_Server_Reflection_Prototype Zend_Server_Reflection_Prototypes}
+ *
+ * @return array
+ */
+ public function getPrototypes()
+ {
+ return $this->_prototypes;
+ }
+
+ /**
+ * Retrieve additional invocation arguments
+ *
+ * @return array
+ */
+ public function getInvokeArguments()
+ {
+ return $this->_argv;
+ }
+
+ /**
+ * Wakeup from serialization
+ *
+ * Reflection needs explicit instantiation to work correctly. Re-instantiate
+ * reflection object on wakeup.
+ *
+ * @return void
+ */
+ public function __wakeup()
+ {
+ if ($this->_reflection instanceof ReflectionMethod) {
+ $class = new ReflectionClass($this->_class);
+ $this->_reflection = new ReflectionMethod($class->newInstance(), $this->getName());
+ } else {
+ $this->_reflection = new ReflectionFunction($this->getName());
+ }
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection/Method.php b/library/vendor/Zend/Server/Reflection/Method.php
new file mode 100644
index 0000000..305b783
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Method.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Reflection_Function_Abstract
+ */
+
+/**
+ * Method Reflection
+ *
+ * @uses Zend_Server_Reflection_Function_Abstract
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_Method extends Zend_Server_Reflection_Function_Abstract
+{
+ /**
+ * Parent class name
+ * @var string
+ */
+ protected $_class;
+
+ /**
+ * Parent class reflection
+ * @var Zend_Server_Reflection_Class
+ */
+ protected $_classReflection;
+
+ /**
+ * Constructor
+ *
+ * @param Zend_Server_Reflection_Class $class
+ * @param ReflectionMethod $r
+ * @param string $namespace
+ * @param array $argv
+ * @return void
+ */
+ public function __construct(Zend_Server_Reflection_Class $class, ReflectionMethod $r, $namespace = null, $argv = array())
+ {
+ $this->_classReflection = $class;
+ $this->_reflection = $r;
+
+ $classNamespace = $class->getNamespace();
+
+ // Determine namespace
+ if (!empty($namespace)) {
+ $this->setNamespace($namespace);
+ } elseif (!empty($classNamespace)) {
+ $this->setNamespace($classNamespace);
+ }
+
+ // Determine arguments
+ if (is_array($argv)) {
+ $this->_argv = $argv;
+ }
+
+ // If method call, need to store some info on the class
+ $this->_class = $class->getName();
+
+ // Perform some introspection
+ $this->_reflect();
+ }
+
+ /**
+ * Return the reflection for the class that defines this method
+ *
+ * @return Zend_Server_Reflection_Class
+ */
+ public function getDeclaringClass()
+ {
+ return $this->_classReflection;
+ }
+
+ /**
+ * Wakeup from serialization
+ *
+ * Reflection needs explicit instantiation to work correctly. Re-instantiate
+ * reflection object on wakeup.
+ *
+ * @return void
+ */
+ public function __wakeup()
+ {
+ $this->_classReflection = new Zend_Server_Reflection_Class(new ReflectionClass($this->_class), $this->getNamespace(), $this->getInvokeArguments());
+ $this->_reflection = new ReflectionMethod($this->_classReflection->getName(), $this->getName());
+ }
+
+}
diff --git a/library/vendor/Zend/Server/Reflection/Node.php b/library/vendor/Zend/Server/Reflection/Node.php
new file mode 100644
index 0000000..d80abf3
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Node.php
@@ -0,0 +1,201 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Node Tree class for Zend_Server reflection operations
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @version $Id$
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+class Zend_Server_Reflection_Node
+{
+ /**
+ * Node value
+ * @var mixed
+ */
+ protected $_value = null;
+
+ /**
+ * Array of child nodes (if any)
+ * @var array
+ */
+ protected $_children = array();
+
+ /**
+ * Parent node (if any)
+ * @var Zend_Server_Reflection_Node
+ */
+ protected $_parent = null;
+
+ /**
+ * Constructor
+ *
+ * @param mixed $value
+ * @param Zend_Server_Reflection_Node $parent Optional
+ * @return Zend_Server_Reflection_Node
+ */
+ public function __construct($value, Zend_Server_Reflection_Node $parent = null)
+ {
+ $this->_value = $value;
+ if (null !== $parent) {
+ $this->setParent($parent, true);
+ }
+
+ return $this;
+ }
+
+ /**
+ * Set parent node
+ *
+ * @param Zend_Server_Reflection_Node $node
+ * @param boolean $new Whether or not the child node is newly created
+ * and should always be attached
+ * @return void
+ */
+ public function setParent(Zend_Server_Reflection_Node $node, $new = false)
+ {
+ $this->_parent = $node;
+
+ if ($new) {
+ $node->attachChild($this);
+ return;
+ }
+ }
+
+ /**
+ * Create and attach a new child node
+ *
+ * @param mixed $value
+ * @access public
+ * @return Zend_Server_Reflection_Node New child node
+ */
+ public function createChild($value)
+ {
+ $child = new self($value, $this);
+
+ return $child;
+ }
+
+ /**
+ * Attach a child node
+ *
+ * @param Zend_Server_Reflection_Node $node
+ * @return void
+ */
+ public function attachChild(Zend_Server_Reflection_Node $node)
+ {
+ $this->_children[] = $node;
+
+ if ($node->getParent() !== $this) {
+ $node->setParent($this);
+ }
+ }
+
+ /**
+ * Return an array of all child nodes
+ *
+ * @return array
+ */
+ public function getChildren()
+ {
+ return $this->_children;
+ }
+
+ /**
+ * Does this node have children?
+ *
+ * @return boolean
+ */
+ public function hasChildren()
+ {
+ return count($this->_children) > 0;
+ }
+
+ /**
+ * Return the parent node
+ *
+ * @return null|Zend_Server_Reflection_Node
+ */
+ public function getParent()
+ {
+ return $this->_parent;
+ }
+
+ /**
+ * Return the node's current value
+ *
+ * @return mixed
+ */
+ public function getValue()
+ {
+ return $this->_value;
+ }
+
+ /**
+ * Set the node value
+ *
+ * @param mixed $value
+ * @return void
+ */
+ public function setValue($value)
+ {
+ $this->_value = $value;
+ }
+
+ /**
+ * Retrieve the bottommost nodes of this node's tree
+ *
+ * Retrieves the bottommost nodes of the tree by recursively calling
+ * getEndPoints() on all children. If a child is null, it returns the parent
+ * as an end point.
+ *
+ * @return array
+ */
+ public function getEndPoints()
+ {
+ $endPoints = array();
+ if (!$this->hasChildren()) {
+ return $endPoints;
+ }
+
+ foreach ($this->_children as $child) {
+ $value = $child->getValue();
+
+ if (null === $value) {
+ $endPoints[] = $this;
+ } elseif ((null !== $value)
+ && $child->hasChildren())
+ {
+ $childEndPoints = $child->getEndPoints();
+ if (!empty($childEndPoints)) {
+ $endPoints = array_merge($endPoints, $childEndPoints);
+ }
+ } elseif ((null !== $value) && !$child->hasChildren()) {
+ $endPoints[] = $child;
+ }
+ }
+
+ return $endPoints;
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection/Parameter.php b/library/vendor/Zend/Server/Reflection/Parameter.php
new file mode 100644
index 0000000..681824a
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Parameter.php
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Parameter Reflection
+ *
+ * Decorates a ReflectionParameter to allow setting the parameter type
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_Parameter
+{
+ /**
+ * @var ReflectionParameter
+ */
+ protected $_reflection;
+
+ /**
+ * Parameter position
+ * @var int
+ */
+ protected $_position;
+
+ /**
+ * Parameter type
+ * @var string
+ */
+ protected $_type;
+
+ /**
+ * Parameter description
+ * @var string
+ */
+ protected $_description;
+
+ /**
+ * Constructor
+ *
+ * @param ReflectionParameter $r
+ * @param string $type Parameter type
+ * @param string $description Parameter description
+ */
+ public function __construct(ReflectionParameter $r, $type = 'mixed', $description = '')
+ {
+ $this->_reflection = $r;
+ $this->setType($type);
+ $this->setDescription($description);
+ }
+
+ /**
+ * Proxy reflection calls
+ *
+ * @param string $method
+ * @param array $args
+ * @return mixed
+ */
+ public function __call($method, $args)
+ {
+ if (method_exists($this->_reflection, $method)) {
+ return call_user_func_array(array($this->_reflection, $method), $args);
+ }
+
+ throw new Zend_Server_Reflection_Exception('Invalid reflection method');
+ }
+
+ /**
+ * Retrieve parameter type
+ *
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->_type;
+ }
+
+ /**
+ * Set parameter type
+ *
+ * @param string|null $type
+ * @return void
+ */
+ public function setType($type)
+ {
+ if (!is_string($type) && (null !== $type)) {
+ throw new Zend_Server_Reflection_Exception('Invalid parameter type');
+ }
+
+ $this->_type = $type;
+ }
+
+ /**
+ * Retrieve parameter description
+ *
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->_description;
+ }
+
+ /**
+ * Set parameter description
+ *
+ * @param string|null $description
+ * @return void
+ */
+ public function setDescription($description)
+ {
+ if (!is_string($description) && (null !== $description)) {
+ throw new Zend_Server_Reflection_Exception('Invalid parameter description');
+ }
+
+ $this->_description = $description;
+ }
+
+ /**
+ * Set parameter position
+ *
+ * @param int $index
+ * @return void
+ */
+ public function setPosition($index)
+ {
+ $this->_position = (int) $index;
+ }
+
+ /**
+ * Return parameter position
+ *
+ * @return int
+ */
+ public function getPosition()
+ {
+ return $this->_position;
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection/Prototype.php b/library/vendor/Zend/Server/Reflection/Prototype.php
new file mode 100644
index 0000000..e780623
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/Prototype.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Zend_Server_Reflection_ReturnValue
+ */
+
+/**
+ * Zend_Server_Reflection_Parameter
+ */
+
+/**
+ * Method/Function prototypes
+ *
+ * Contains accessors for the return value and all method arguments.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_Prototype
+{
+ /**
+ * Constructor
+ *
+ * @param Zend_Server_Reflection_ReturnValue $return
+ * @param array $params
+ * @return void
+ */
+ public function __construct(Zend_Server_Reflection_ReturnValue $return, $params = null)
+ {
+ $this->_return = $return;
+
+ if (!is_array($params) && (null !== $params)) {
+ throw new Zend_Server_Reflection_Exception('Invalid parameters');
+ }
+
+ if (is_array($params)) {
+ foreach ($params as $param) {
+ if (!$param instanceof Zend_Server_Reflection_Parameter) {
+ throw new Zend_Server_Reflection_Exception('One or more params are invalid');
+ }
+ }
+ }
+
+ $this->_params = $params;
+ }
+
+ /**
+ * Retrieve return type
+ *
+ * @return string
+ */
+ public function getReturnType()
+ {
+ return $this->_return->getType();
+ }
+
+ /**
+ * Retrieve the return value object
+ *
+ * @access public
+ * @return Zend_Server_Reflection_ReturnValue
+ */
+ public function getReturnValue()
+ {
+ return $this->_return;
+ }
+
+ /**
+ * Retrieve method parameters
+ *
+ * @return array Array of {@link Zend_Server_Reflection_Parameter}s
+ */
+ public function getParameters()
+ {
+ return $this->_params;
+ }
+}
diff --git a/library/vendor/Zend/Server/Reflection/ReturnValue.php b/library/vendor/Zend/Server/Reflection/ReturnValue.php
new file mode 100644
index 0000000..dcc5132
--- /dev/null
+++ b/library/vendor/Zend/Server/Reflection/ReturnValue.php
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Zend Framework
+ *
+ * LICENSE
+ *
+ * This source file is subject to the new BSD license that is bundled
+ * with this package in the file LICENSE.txt.
+ * It is also available through the world-wide-web at this URL:
+ * http://framework.zend.com/license/new-bsd
+ * If you did not receive a copy of the license and are unable to
+ * obtain it through the world-wide-web, please send an email
+ * to license@zend.com so we can send you a copy immediately.
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ */
+
+/**
+ * Return value reflection
+ *
+ * Stores the return value type and description
+ *
+ * @category Zend
+ * @package Zend_Server
+ * @subpackage Reflection
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license http://framework.zend.com/license/new-bsd New BSD License
+ * @version $Id$
+ */
+class Zend_Server_Reflection_ReturnValue
+{
+ /**
+ * Return value type
+ * @var string
+ */
+ protected $_type;
+
+ /**
+ * Return value description
+ * @var string
+ */
+ protected $_description;
+
+ /**
+ * Constructor
+ *
+ * @param string $type Return value type
+ * @param string $description Return value type
+ */
+ public function __construct($type = 'mixed', $description = '')
+ {
+ $this->setType($type);
+ $this->setDescription($description);
+ }
+
+ /**
+ * Retrieve parameter type
+ *
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->_type;
+ }
+
+ /**
+ * Set parameter type
+ *
+ * @param string|null $type
+ * @return void
+ */
+ public function setType($type)
+ {
+ if (!is_string($type) && (null !== $type)) {
+ throw new Zend_Server_Reflection_Exception('Invalid parameter type');
+ }
+
+ $this->_type = $type;
+ }
+
+ /**
+ * Retrieve parameter description
+ *
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->_description;
+ }
+
+ /**
+ * Set parameter description
+ *
+ * @param string|null $description
+ * @return void
+ */
+ public function setDescription($description)
+ {
+ if (!is_string($description) && (null !== $description)) {
+ throw new Zend_Server_Reflection_Exception('Invalid parameter description');
+ }
+
+ $this->_description = $description;
+ }
+}