You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by nd...@apache.org on 2015/05/01 23:33:08 UTC
[21/57] [partial] airavata-php-gateway git commit: AIRAVATA 1632 +
Job Description for Admin Dashboard
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Container/Container.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Container/Container.php b/vendor/laravel/framework/src/Illuminate/Container/Container.php
new file mode 100755
index 0000000..84b606e
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Container/Container.php
@@ -0,0 +1,866 @@
+<?php namespace Illuminate\Container;
+
+use Closure;
+use ArrayAccess;
+use ReflectionClass;
+use ReflectionParameter;
+
+class Container implements ArrayAccess {
+
+ /**
+ * An array of the types that have been resolved.
+ *
+ * @var array
+ */
+ protected $resolved = array();
+
+ /**
+ * The container's bindings.
+ *
+ * @var array
+ */
+ protected $bindings = array();
+
+ /**
+ * The container's shared instances.
+ *
+ * @var array
+ */
+ protected $instances = array();
+
+ /**
+ * The registered type aliases.
+ *
+ * @var array
+ */
+ protected $aliases = array();
+
+ /**
+ * All of the registered rebound callbacks.
+ *
+ * @var array
+ */
+ protected $reboundCallbacks = array();
+
+ /**
+ * All of the registered resolving callbacks.
+ *
+ * @var array
+ */
+ protected $resolvingCallbacks = array();
+
+ /**
+ * All of the global resolving callbacks.
+ *
+ * @var array
+ */
+ protected $globalResolvingCallbacks = array();
+
+ /**
+ * Determine if a given string is resolvable.
+ *
+ * @param string $abstract
+ * @return bool
+ */
+ protected function resolvable($abstract)
+ {
+ return $this->bound($abstract) || $this->isAlias($abstract);
+ }
+
+ /**
+ * Determine if the given abstract type has been bound.
+ *
+ * @param string $abstract
+ * @return bool
+ */
+ public function bound($abstract)
+ {
+ return isset($this->bindings[$abstract]) || isset($this->instances[$abstract]);
+ }
+
+ /**
+ * Determine if the given abstract type has been resolved.
+ *
+ * @param string $abstract
+ * @return bool
+ */
+ public function resolved($abstract)
+ {
+ return isset($this->resolved[$abstract]) || isset($this->instances[$abstract]);
+ }
+
+ /**
+ * Determine if a given string is an alias.
+ *
+ * @param string $name
+ * @return bool
+ */
+ public function isAlias($name)
+ {
+ return isset($this->aliases[$name]);
+ }
+
+ /**
+ * Register a binding with the container.
+ *
+ * @param string|array $abstract
+ * @param \Closure|string|null $concrete
+ * @param bool $shared
+ * @return void
+ */
+ public function bind($abstract, $concrete = null, $shared = false)
+ {
+ // If the given types are actually an array, we will assume an alias is being
+ // defined and will grab this "real" abstract class name and register this
+ // alias with the container so that it can be used as a shortcut for it.
+ if (is_array($abstract))
+ {
+ list($abstract, $alias) = $this->extractAlias($abstract);
+
+ $this->alias($abstract, $alias);
+ }
+
+ // If no concrete type was given, we will simply set the concrete type to the
+ // abstract type. This will allow concrete type to be registered as shared
+ // without being forced to state their classes in both of the parameter.
+ $this->dropStaleInstances($abstract);
+
+ if (is_null($concrete))
+ {
+ $concrete = $abstract;
+ }
+
+ // If the factory is not a Closure, it means it is just a class name which is
+ // is bound into this container to the abstract type and we will just wrap
+ // it up inside a Closure to make things more convenient when extending.
+ if ( ! $concrete instanceof Closure)
+ {
+ $concrete = $this->getClosure($abstract, $concrete);
+ }
+
+ $this->bindings[$abstract] = compact('concrete', 'shared');
+
+ // If the abstract type was already resolved in this container we'll fire the
+ // rebound listener so that any objects which have already gotten resolved
+ // can have their copy of the object updated via the listener callbacks.
+ if ($this->resolved($abstract))
+ {
+ $this->rebound($abstract);
+ }
+ }
+
+ /**
+ * Get the Closure to be used when building a type.
+ *
+ * @param string $abstract
+ * @param string $concrete
+ * @return \Closure
+ */
+ protected function getClosure($abstract, $concrete)
+ {
+ return function($c, $parameters = array()) use ($abstract, $concrete)
+ {
+ $method = ($abstract == $concrete) ? 'build' : 'make';
+
+ return $c->$method($concrete, $parameters);
+ };
+ }
+
+ /**
+ * Register a binding if it hasn't already been registered.
+ *
+ * @param string $abstract
+ * @param \Closure|string|null $concrete
+ * @param bool $shared
+ * @return void
+ */
+ public function bindIf($abstract, $concrete = null, $shared = false)
+ {
+ if ( ! $this->bound($abstract))
+ {
+ $this->bind($abstract, $concrete, $shared);
+ }
+ }
+
+ /**
+ * Register a shared binding in the container.
+ *
+ * @param string $abstract
+ * @param \Closure|string|null $concrete
+ * @return void
+ */
+ public function singleton($abstract, $concrete = null)
+ {
+ $this->bind($abstract, $concrete, true);
+ }
+
+ /**
+ * Wrap a Closure such that it is shared.
+ *
+ * @param \Closure $closure
+ * @return \Closure
+ */
+ public function share(Closure $closure)
+ {
+ return function($container) use ($closure)
+ {
+ // We'll simply declare a static variable within the Closures and if it has
+ // not been set we will execute the given Closures to resolve this value
+ // and return it back to these consumers of the method as an instance.
+ static $object;
+
+ if (is_null($object))
+ {
+ $object = $closure($container);
+ }
+
+ return $object;
+ };
+ }
+
+ /**
+ * Bind a shared Closure into the container.
+ *
+ * @param string $abstract
+ * @param \Closure $closure
+ * @return void
+ */
+ public function bindShared($abstract, Closure $closure)
+ {
+ $this->bind($abstract, $this->share($closure), true);
+ }
+
+ /**
+ * "Extend" an abstract type in the container.
+ *
+ * @param string $abstract
+ * @param \Closure $closure
+ * @return void
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function extend($abstract, Closure $closure)
+ {
+ if ( ! isset($this->bindings[$abstract]))
+ {
+ throw new \InvalidArgumentException("Type {$abstract} is not bound.");
+ }
+
+ if (isset($this->instances[$abstract]))
+ {
+ $this->instances[$abstract] = $closure($this->instances[$abstract], $this);
+
+ $this->rebound($abstract);
+ }
+ else
+ {
+ $extender = $this->getExtender($abstract, $closure);
+
+ $this->bind($abstract, $extender, $this->isShared($abstract));
+ }
+ }
+
+ /**
+ * Get an extender Closure for resolving a type.
+ *
+ * @param string $abstract
+ * @param \Closure $closure
+ * @return \Closure
+ */
+ protected function getExtender($abstract, Closure $closure)
+ {
+ // To "extend" a binding, we will grab the old "resolver" Closure and pass it
+ // into a new one. The old resolver will be called first and the result is
+ // handed off to the "new" resolver, along with this container instance.
+ $resolver = $this->bindings[$abstract]['concrete'];
+
+ return function($container) use ($resolver, $closure)
+ {
+ return $closure($resolver($container), $container);
+ };
+ }
+
+ /**
+ * Register an existing instance as shared in the container.
+ *
+ * @param string $abstract
+ * @param mixed $instance
+ * @return void
+ */
+ public function instance($abstract, $instance)
+ {
+ // First, we will extract the alias from the abstract if it is an array so we
+ // are using the correct name when binding the type. If we get an alias it
+ // will be registered with the container so we can resolve it out later.
+ if (is_array($abstract))
+ {
+ list($abstract, $alias) = $this->extractAlias($abstract);
+
+ $this->alias($abstract, $alias);
+ }
+
+ unset($this->aliases[$abstract]);
+
+ // We'll check to determine if this type has been bound before, and if it has
+ // we will fire the rebound callbacks registered with the container and it
+ // can be updated with consuming classes that have gotten resolved here.
+ $bound = $this->bound($abstract);
+
+ $this->instances[$abstract] = $instance;
+
+ if ($bound)
+ {
+ $this->rebound($abstract);
+ }
+ }
+
+ /**
+ * Alias a type to a shorter name.
+ *
+ * @param string $abstract
+ * @param string $alias
+ * @return void
+ */
+ public function alias($abstract, $alias)
+ {
+ $this->aliases[$alias] = $abstract;
+ }
+
+ /**
+ * Extract the type and alias from a given definition.
+ *
+ * @param array $definition
+ * @return array
+ */
+ protected function extractAlias(array $definition)
+ {
+ return array(key($definition), current($definition));
+ }
+
+ /**
+ * Bind a new callback to an abstract's rebind event.
+ *
+ * @param string $abstract
+ * @param \Closure $callback
+ * @return mixed
+ */
+ public function rebinding($abstract, Closure $callback)
+ {
+ $this->reboundCallbacks[$abstract][] = $callback;
+
+ if ($this->bound($abstract)) return $this->make($abstract);
+ }
+
+ /**
+ * Refresh an instance on the given target and method.
+ *
+ * @param string $abstract
+ * @param mixed $target
+ * @param string $method
+ * @return mixed
+ */
+ public function refresh($abstract, $target, $method)
+ {
+ return $this->rebinding($abstract, function($app, $instance) use ($target, $method)
+ {
+ $target->{$method}($instance);
+ });
+ }
+
+ /**
+ * Fire the "rebound" callbacks for the given abstract type.
+ *
+ * @param string $abstract
+ * @return void
+ */
+ protected function rebound($abstract)
+ {
+ $instance = $this->make($abstract);
+
+ foreach ($this->getReboundCallbacks($abstract) as $callback)
+ {
+ call_user_func($callback, $this, $instance);
+ }
+ }
+
+ /**
+ * Get the rebound callbacks for a given type.
+ *
+ * @param string $abstract
+ * @return array
+ */
+ protected function getReboundCallbacks($abstract)
+ {
+ if (isset($this->reboundCallbacks[$abstract]))
+ {
+ return $this->reboundCallbacks[$abstract];
+ }
+
+ return array();
+ }
+
+ /**
+ * Resolve the given type from the container.
+ *
+ * @param string $abstract
+ * @param array $parameters
+ * @return mixed
+ */
+ public function make($abstract, $parameters = array())
+ {
+ $abstract = $this->getAlias($abstract);
+
+ // If an instance of the type is currently being managed as a singleton we'll
+ // just return an existing instance instead of instantiating new instances
+ // so the developer can keep using the same objects instance every time.
+ if (isset($this->instances[$abstract]))
+ {
+ return $this->instances[$abstract];
+ }
+
+ $concrete = $this->getConcrete($abstract);
+
+ // We're ready to instantiate an instance of the concrete type registered for
+ // the binding. This will instantiate the types, as well as resolve any of
+ // its "nested" dependencies recursively until all have gotten resolved.
+ if ($this->isBuildable($concrete, $abstract))
+ {
+ $object = $this->build($concrete, $parameters);
+ }
+ else
+ {
+ $object = $this->make($concrete, $parameters);
+ }
+
+ // If the requested type is registered as a singleton we'll want to cache off
+ // the instances in "memory" so we can return it later without creating an
+ // entirely new instance of an object on each subsequent request for it.
+ if ($this->isShared($abstract))
+ {
+ $this->instances[$abstract] = $object;
+ }
+
+ $this->fireResolvingCallbacks($abstract, $object);
+
+ $this->resolved[$abstract] = true;
+
+ return $object;
+ }
+
+ /**
+ * Get the concrete type for a given abstract.
+ *
+ * @param string $abstract
+ * @return mixed $concrete
+ */
+ protected function getConcrete($abstract)
+ {
+ // If we don't have a registered resolver or concrete for the type, we'll just
+ // assume each type is a concrete name and will attempt to resolve it as is
+ // since the container should be able to resolve concretes automatically.
+ if ( ! isset($this->bindings[$abstract]))
+ {
+ if ($this->missingLeadingSlash($abstract) && isset($this->bindings['\\'.$abstract]))
+ {
+ $abstract = '\\'.$abstract;
+ }
+
+ return $abstract;
+ }
+
+ return $this->bindings[$abstract]['concrete'];
+ }
+
+ /**
+ * Determine if the given abstract has a leading slash.
+ *
+ * @param string $abstract
+ * @return bool
+ */
+ protected function missingLeadingSlash($abstract)
+ {
+ return is_string($abstract) && strpos($abstract, '\\') !== 0;
+ }
+
+ /**
+ * Instantiate a concrete instance of the given type.
+ *
+ * @param string $concrete
+ * @param array $parameters
+ * @return mixed
+ *
+ * @throws BindingResolutionException
+ */
+ public function build($concrete, $parameters = array())
+ {
+ // If the concrete type is actually a Closure, we will just execute it and
+ // hand back the results of the functions, which allows functions to be
+ // used as resolvers for more fine-tuned resolution of these objects.
+ if ($concrete instanceof Closure)
+ {
+ return $concrete($this, $parameters);
+ }
+
+ $reflector = new ReflectionClass($concrete);
+
+ // If the type is not instantiable, the developer is attempting to resolve
+ // an abstract type such as an Interface of Abstract Class and there is
+ // no binding registered for the abstractions so we need to bail out.
+ if ( ! $reflector->isInstantiable())
+ {
+ $message = "Target [$concrete] is not instantiable.";
+
+ throw new BindingResolutionException($message);
+ }
+
+ $constructor = $reflector->getConstructor();
+
+ // If there are no constructors, that means there are no dependencies then
+ // we can just resolve the instances of the objects right away, without
+ // resolving any other types or dependencies out of these containers.
+ if (is_null($constructor))
+ {
+ return new $concrete;
+ }
+
+ $dependencies = $constructor->getParameters();
+
+ // Once we have all the constructor's parameters we can create each of the
+ // dependency instances and then use the reflection instances to make a
+ // new instance of this class, injecting the created dependencies in.
+ $parameters = $this->keyParametersByArgument(
+ $dependencies, $parameters
+ );
+
+ $instances = $this->getDependencies(
+ $dependencies, $parameters
+ );
+
+ return $reflector->newInstanceArgs($instances);
+ }
+
+ /**
+ * Resolve all of the dependencies from the ReflectionParameters.
+ *
+ * @param array $parameters
+ * @param array $primitives
+ * @return array
+ */
+ protected function getDependencies($parameters, array $primitives = array())
+ {
+ $dependencies = array();
+
+ foreach ($parameters as $parameter)
+ {
+ $dependency = $parameter->getClass();
+
+ // If the class is null, it means the dependency is a string or some other
+ // primitive type which we can not resolve since it is not a class and
+ // we will just bomb out with an error since we have no-where to go.
+ if (array_key_exists($parameter->name, $primitives))
+ {
+ $dependencies[] = $primitives[$parameter->name];
+ }
+ elseif (is_null($dependency))
+ {
+ $dependencies[] = $this->resolveNonClass($parameter);
+ }
+ else
+ {
+ $dependencies[] = $this->resolveClass($parameter);
+ }
+ }
+
+ return (array) $dependencies;
+ }
+
+ /**
+ * Resolve a non-class hinted dependency.
+ *
+ * @param \ReflectionParameter $parameter
+ * @return mixed
+ *
+ * @throws BindingResolutionException
+ */
+ protected function resolveNonClass(ReflectionParameter $parameter)
+ {
+ if ($parameter->isDefaultValueAvailable())
+ {
+ return $parameter->getDefaultValue();
+ }
+
+ $message = "Unresolvable dependency resolving [$parameter] in class {$parameter->getDeclaringClass()->getName()}";
+
+ throw new BindingResolutionException($message);
+ }
+
+ /**
+ * Resolve a class based dependency from the container.
+ *
+ * @param \ReflectionParameter $parameter
+ * @return mixed
+ *
+ * @throws BindingResolutionException
+ */
+ protected function resolveClass(ReflectionParameter $parameter)
+ {
+ try
+ {
+ return $this->make($parameter->getClass()->name);
+ }
+
+ // If we can not resolve the class instance, we will check to see if the value
+ // is optional, and if it is we will return the optional parameter value as
+ // the value of the dependency, similarly to how we do this with scalars.
+ catch (BindingResolutionException $e)
+ {
+ if ($parameter->isOptional())
+ {
+ return $parameter->getDefaultValue();
+ }
+
+ throw $e;
+ }
+ }
+
+ /**
+ * If extra parameters are passed by numeric ID, rekey them by argument name.
+ *
+ * @param array $dependencies
+ * @param array $parameters
+ * @return array
+ */
+ protected function keyParametersByArgument(array $dependencies, array $parameters)
+ {
+ foreach ($parameters as $key => $value)
+ {
+ if (is_numeric($key))
+ {
+ unset($parameters[$key]);
+
+ $parameters[$dependencies[$key]->name] = $value;
+ }
+ }
+
+ return $parameters;
+ }
+
+ /**
+ * Register a new resolving callback.
+ *
+ * @param string $abstract
+ * @param \Closure $callback
+ * @return void
+ */
+ public function resolving($abstract, Closure $callback)
+ {
+ $this->resolvingCallbacks[$abstract][] = $callback;
+ }
+
+ /**
+ * Register a new resolving callback for all types.
+ *
+ * @param \Closure $callback
+ * @return void
+ */
+ public function resolvingAny(Closure $callback)
+ {
+ $this->globalResolvingCallbacks[] = $callback;
+ }
+
+ /**
+ * Fire all of the resolving callbacks.
+ *
+ * @param string $abstract
+ * @param mixed $object
+ * @return void
+ */
+ protected function fireResolvingCallbacks($abstract, $object)
+ {
+ if (isset($this->resolvingCallbacks[$abstract]))
+ {
+ $this->fireCallbackArray($object, $this->resolvingCallbacks[$abstract]);
+ }
+
+ $this->fireCallbackArray($object, $this->globalResolvingCallbacks);
+ }
+
+ /**
+ * Fire an array of callbacks with an object.
+ *
+ * @param mixed $object
+ * @param array $callbacks
+ */
+ protected function fireCallbackArray($object, array $callbacks)
+ {
+ foreach ($callbacks as $callback)
+ {
+ call_user_func($callback, $object, $this);
+ }
+ }
+
+ /**
+ * Determine if a given type is shared.
+ *
+ * @param string $abstract
+ * @return bool
+ */
+ public function isShared($abstract)
+ {
+ if (isset($this->bindings[$abstract]['shared']))
+ {
+ $shared = $this->bindings[$abstract]['shared'];
+ }
+ else
+ {
+ $shared = false;
+ }
+
+ return isset($this->instances[$abstract]) || $shared === true;
+ }
+
+ /**
+ * Determine if the given concrete is buildable.
+ *
+ * @param mixed $concrete
+ * @param string $abstract
+ * @return bool
+ */
+ protected function isBuildable($concrete, $abstract)
+ {
+ return $concrete === $abstract || $concrete instanceof Closure;
+ }
+
+ /**
+ * Get the alias for an abstract if available.
+ *
+ * @param string $abstract
+ * @return string
+ */
+ protected function getAlias($abstract)
+ {
+ return isset($this->aliases[$abstract]) ? $this->aliases[$abstract] : $abstract;
+ }
+
+ /**
+ * Get the container's bindings.
+ *
+ * @return array
+ */
+ public function getBindings()
+ {
+ return $this->bindings;
+ }
+
+ /**
+ * Drop all of the stale instances and aliases.
+ *
+ * @param string $abstract
+ * @return void
+ */
+ protected function dropStaleInstances($abstract)
+ {
+ unset($this->instances[$abstract], $this->aliases[$abstract]);
+ }
+
+ /**
+ * Remove a resolved instance from the instance cache.
+ *
+ * @param string $abstract
+ * @return void
+ */
+ public function forgetInstance($abstract)
+ {
+ unset($this->instances[$abstract]);
+ }
+
+ /**
+ * Clear all of the instances from the container.
+ *
+ * @return void
+ */
+ public function forgetInstances()
+ {
+ $this->instances = array();
+ }
+
+ /**
+ * Determine if a given offset exists.
+ *
+ * @param string $key
+ * @return bool
+ */
+ public function offsetExists($key)
+ {
+ return isset($this->bindings[$key]);
+ }
+
+ /**
+ * Get the value at a given offset.
+ *
+ * @param string $key
+ * @return mixed
+ */
+ public function offsetGet($key)
+ {
+ return $this->make($key);
+ }
+
+ /**
+ * Set the value at a given offset.
+ *
+ * @param string $key
+ * @param mixed $value
+ * @return void
+ */
+ public function offsetSet($key, $value)
+ {
+ // If the value is not a Closure, we will make it one. This simply gives
+ // more "drop-in" replacement functionality for the Pimple which this
+ // container's simplest functions are base modeled and built after.
+ if ( ! $value instanceof Closure)
+ {
+ $value = function() use ($value)
+ {
+ return $value;
+ };
+ }
+
+ $this->bind($key, $value);
+ }
+
+ /**
+ * Unset the value at a given offset.
+ *
+ * @param string $key
+ * @return void
+ */
+ public function offsetUnset($key)
+ {
+ unset($this->bindings[$key], $this->instances[$key], $this->resolved[$key]);
+ }
+
+ /**
+ * Dynamically access container services.
+ *
+ * @param string $key
+ * @return mixed
+ */
+ public function __get($key)
+ {
+ return $this[$key];
+ }
+
+ /**
+ * Dynamically set container services.
+ *
+ * @param string $key
+ * @param mixed $value
+ * @return void
+ */
+ public function __set($key, $value)
+ {
+ $this[$key] = $value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Container/composer.json
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Container/composer.json b/vendor/laravel/framework/src/Illuminate/Container/composer.json
new file mode 100755
index 0000000..a2445f1
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Container/composer.json
@@ -0,0 +1,25 @@
+{
+ "name": "illuminate/container",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylorotwell@gmail.com"
+ }
+ ],
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "autoload": {
+ "psr-0": {
+ "Illuminate\\Container": ""
+ }
+ },
+ "target-dir": "Illuminate/Container",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "minimum-stability": "dev"
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Cookie/CookieJar.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Cookie/CookieJar.php b/vendor/laravel/framework/src/Illuminate/Cookie/CookieJar.php
new file mode 100755
index 0000000..56e531a
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Cookie/CookieJar.php
@@ -0,0 +1,167 @@
+<?php namespace Illuminate\Cookie;
+
+use Symfony\Component\HttpFoundation\Cookie;
+
+class CookieJar {
+
+ /**
+ * The default path (if specified).
+ *
+ * @var string
+ */
+ protected $path = '/';
+
+ /**
+ * The default domain (if specified).
+ *
+ * @var string
+ */
+ protected $domain = null;
+
+ /**
+ * All of the cookies queued for sending.
+ *
+ * @var array
+ */
+ protected $queued = array();
+
+ /**
+ * Create a new cookie instance.
+ *
+ * @param string $name
+ * @param string $value
+ * @param int $minutes
+ * @param string $path
+ * @param string $domain
+ * @param bool $secure
+ * @param bool $httpOnly
+ * @return \Symfony\Component\HttpFoundation\Cookie
+ */
+ public function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = false, $httpOnly = true)
+ {
+ list($path, $domain) = $this->getPathAndDomain($path, $domain);
+
+ $time = ($minutes == 0) ? 0 : time() + ($minutes * 60);
+
+ return new Cookie($name, $value, $time, $path, $domain, $secure, $httpOnly);
+ }
+
+ /**
+ * Create a cookie that lasts "forever" (five years).
+ *
+ * @param string $name
+ * @param string $value
+ * @param string $path
+ * @param string $domain
+ * @param bool $secure
+ * @param bool $httpOnly
+ * @return \Symfony\Component\HttpFoundation\Cookie
+ */
+ public function forever($name, $value, $path = null, $domain = null, $secure = false, $httpOnly = true)
+ {
+ return $this->make($name, $value, 2628000, $path, $domain, $secure, $httpOnly);
+ }
+
+ /**
+ * Expire the given cookie.
+ *
+ * @param string $name
+ * @param string $path
+ * @param string $domain
+ * @return \Symfony\Component\HttpFoundation\Cookie
+ */
+ public function forget($name, $path = null, $domain = null)
+ {
+ return $this->make($name, null, -2628000, $path, $domain);
+ }
+
+ /**
+ * Determine if a cookie has been queued.
+ *
+ * @param string $key
+ * @return bool
+ */
+ public function hasQueued($key)
+ {
+ return ! is_null($this->queued($key));
+ }
+
+ /**
+ * Get a queued cookie instance.
+ *
+ * @param string $key
+ * @param mixed $default
+ * @return \Symfony\Component\HttpFoundation\Cookie
+ */
+ public function queued($key, $default = null)
+ {
+ return array_get($this->queued, $key, $default);
+ }
+
+ /**
+ * Queue a cookie to send with the next response.
+ *
+ * @param mixed
+ * @return void
+ */
+ public function queue()
+ {
+ if (head(func_get_args()) instanceof Cookie)
+ {
+ $cookie = head(func_get_args());
+ }
+ else
+ {
+ $cookie = call_user_func_array(array($this, 'make'), func_get_args());
+ }
+
+ $this->queued[$cookie->getName()] = $cookie;
+ }
+
+ /**
+ * Remove a cookie from the queue.
+ *
+ * @param string $name
+ */
+ public function unqueue($name)
+ {
+ unset($this->queued[$name]);
+ }
+
+ /**
+ * Get the path and domain, or the default values.
+ *
+ * @param string $path
+ * @param string $domain
+ * @return array
+ */
+ protected function getPathAndDomain($path, $domain)
+ {
+ return array($path ?: $this->path, $domain ?: $this->domain);
+ }
+
+ /**
+ * Set the default path and domain for the jar.
+ *
+ * @param string $path
+ * @param string $domain
+ * @return $this
+ */
+ public function setDefaultPathAndDomain($path, $domain)
+ {
+ list($this->path, $this->domain) = array($path, $domain);
+
+ return $this;
+ }
+
+ /**
+ * Get the cookies which have been queued for the next request
+ *
+ * @return array
+ */
+ public function getQueuedCookies()
+ {
+ return $this->queued;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php b/vendor/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php
new file mode 100755
index 0000000..1c7b9d0
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Cookie/CookieServiceProvider.php
@@ -0,0 +1,22 @@
+<?php namespace Illuminate\Cookie;
+
+use Illuminate\Support\ServiceProvider;
+
+class CookieServiceProvider extends ServiceProvider {
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ $this->app->bindShared('cookie', function($app)
+ {
+ $config = $app['config']['session'];
+
+ return (new CookieJar)->setDefaultPathAndDomain($config['path'], $config['domain']);
+ });
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Cookie/Guard.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Cookie/Guard.php b/vendor/laravel/framework/src/Illuminate/Cookie/Guard.php
new file mode 100644
index 0000000..1aafbef
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Cookie/Guard.php
@@ -0,0 +1,141 @@
+<?php namespace Illuminate\Cookie;
+
+use Illuminate\Encryption\Encrypter;
+use Illuminate\Encryption\DecryptException;
+use Symfony\Component\HttpFoundation\Cookie;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\Response;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+class Guard implements HttpKernelInterface {
+
+ /**
+ * The wrapped kernel implementation.
+ *
+ * @var \Symfony\Component\HttpKernel\HttpKernelInterface
+ */
+ protected $app;
+
+ /**
+ * The encrypter instance.
+ *
+ * @var \Illuminate\Encryption\Encrypter
+ */
+ protected $encrypter;
+
+ /**
+ * Create a new CookieGuard instance.
+ *
+ * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
+ * @param \Illuminate\Encryption\Encrypter $encrypter
+ * @return void
+ */
+ public function __construct(HttpKernelInterface $app, Encrypter $encrypter)
+ {
+ $this->app = $app;
+ $this->encrypter = $encrypter;
+ }
+
+ /**
+ * Handle the given request and get the response.
+ *
+ * @implements HttpKernelInterface::handle
+ *
+ * @param \Symfony\Component\HttpFoundation\Request $request
+ * @param int $type
+ * @param bool $catch
+ * @return \Symfony\Component\HttpFoundation\Response
+ */
+ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+ {
+ return $this->encrypt($this->app->handle($this->decrypt($request), $type, $catch));
+ }
+
+ /**
+ * Decrypt the cookies on the request.
+ *
+ * @param \Symfony\Component\HttpFoundation\Request $request
+ * @return \Symfony\Component\HttpFoundation\Request
+ */
+ protected function decrypt(Request $request)
+ {
+ foreach ($request->cookies as $key => $c)
+ {
+ try
+ {
+ $request->cookies->set($key, $this->decryptCookie($c));
+ }
+ catch (DecryptException $e)
+ {
+ $request->cookies->set($key, null);
+ }
+ }
+
+ return $request;
+ }
+
+ /**
+ * Decrypt the given cookie and return the value.
+ *
+ * @param string|array $cookie
+ * @return string|array
+ */
+ protected function decryptCookie($cookie)
+ {
+ return is_array($cookie)
+ ? $this->decryptArray($cookie)
+ : $this->encrypter->decrypt($cookie);
+ }
+
+ /**
+ * Decrypt an array based cookie.
+ *
+ * @param array $cookie
+ * @return array
+ */
+ protected function decryptArray(array $cookie)
+ {
+ $decrypted = array();
+
+ foreach ($cookie as $key => $value)
+ {
+ $decrypted[$key] = $this->encrypter->decrypt($value);
+ }
+
+ return $decrypted;
+ }
+
+ /**
+ * Encrypt the cookies on an outgoing response.
+ *
+ * @param \Symfony\Component\HttpFoundation\Response $response
+ * @return \Symfony\Component\HttpFoundation\Response
+ */
+ protected function encrypt(Response $response)
+ {
+ foreach ($response->headers->getCookies() as $key => $c)
+ {
+ $encrypted = $this->encrypter->encrypt($c->getValue());
+
+ $response->headers->setCookie($this->duplicate($c, $encrypted));
+ }
+
+ return $response;
+ }
+
+ /**
+ * Duplicate a cookie with a new value.
+ *
+ * @param \Symfony\Component\HttpFoundation\Cookie $c
+ * @param mixed $value
+ * @return \Symfony\Component\HttpFoundation\Cookie
+ */
+ protected function duplicate(Cookie $c, $value)
+ {
+ return new Cookie(
+ $c->getName(), $value, $c->getExpiresTime(), $c->getPath(),
+ $c->getDomain(), $c->isSecure(), $c->isHttpOnly()
+ );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Cookie/Queue.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Cookie/Queue.php b/vendor/laravel/framework/src/Illuminate/Cookie/Queue.php
new file mode 100644
index 0000000..65354cb
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Cookie/Queue.php
@@ -0,0 +1,57 @@
+<?php namespace Illuminate\Cookie;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+class Queue implements HttpKernelInterface {
+
+ /**
+ * The wrapped kernel implementation.
+ *
+ * @var \Symfony\Component\HttpKernel\HttpKernelInterface
+ */
+ protected $app;
+
+ /**
+ * The cookie jar instance.
+ *
+ * @var \Illuminate\Cookie\CookieJar
+ */
+ protected $cookies;
+
+ /**
+ * Create a new CookieQueue instance.
+ *
+ * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
+ * @param \Illuminate\Cookie\CookieJar $cookies
+ * @return void
+ */
+ public function __construct(HttpKernelInterface $app, CookieJar $cookies)
+ {
+ $this->app = $app;
+ $this->cookies = $cookies;
+ }
+
+ /**
+ * Handle the given request and get the response.
+ *
+ * @implements HttpKernelInterface::handle
+ *
+ * @param \Symfony\Component\HttpFoundation\Request $request
+ * @param int $type
+ * @param bool $catch
+ * @return \Symfony\Component\HttpFoundation\Response
+ */
+ public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)
+ {
+ $response = $this->app->handle($request, $type, $catch);
+
+ foreach ($this->cookies->getQueuedCookies() as $cookie)
+ {
+ $response->headers->setCookie($cookie);
+ }
+
+ return $response;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Cookie/composer.json
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Cookie/composer.json b/vendor/laravel/framework/src/Illuminate/Cookie/composer.json
new file mode 100755
index 0000000..aa9559d
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Cookie/composer.json
@@ -0,0 +1,29 @@
+{
+ "name": "illuminate/cookie",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Taylor Otwell",
+ "email": "taylorotwell@gmail.com"
+ }
+ ],
+ "require": {
+ "php": ">=5.4.0",
+ "illuminate/encryption": "4.2.*",
+ "illuminate/support": "4.2.*",
+ "symfony/http-kernel": "2.5.*",
+ "symfony/http-foundation": "2.5.*"
+ },
+ "autoload": {
+ "psr-0": {
+ "Illuminate\\Cookie": ""
+ }
+ },
+ "target-dir": "Illuminate/Cookie",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.2-dev"
+ }
+ },
+ "minimum-stability": "dev"
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Capsule/Manager.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Capsule/Manager.php b/vendor/laravel/framework/src/Illuminate/Database/Capsule/Manager.php
new file mode 100755
index 0000000..408e563
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Capsule/Manager.php
@@ -0,0 +1,227 @@
+<?php namespace Illuminate\Database\Capsule;
+
+use PDO;
+use Illuminate\Events\Dispatcher;
+use Illuminate\Cache\CacheManager;
+use Illuminate\Container\Container;
+use Illuminate\Database\DatabaseManager;
+use Illuminate\Database\Eloquent\Model as Eloquent;
+use Illuminate\Database\Connectors\ConnectionFactory;
+use Illuminate\Support\Traits\CapsuleManagerTrait;
+
+class Manager {
+
+ use CapsuleManagerTrait;
+
+ /**
+ * The database manager instance.
+ *
+ * @var \Illuminate\Database\DatabaseManager
+ */
+ protected $manager;
+
+ /**
+ * Create a new database capsule manager.
+ *
+ * @param \Illuminate\Container\Container|null $container
+ * @return void
+ */
+ public function __construct(Container $container = null)
+ {
+ $this->setupContainer($container);
+
+ // Once we have the container setup, we will setup the default configuration
+ // options in the container "config" binding. This will make the database
+ // manager behave correctly since all the correct binding are in place.
+ $this->setupDefaultConfiguration();
+
+ $this->setupManager();
+ }
+
+ /**
+ * Setup the default database configuration options.
+ *
+ * @return void
+ */
+ protected function setupDefaultConfiguration()
+ {
+ $this->container['config']['database.fetch'] = PDO::FETCH_ASSOC;
+
+ $this->container['config']['database.default'] = 'default';
+ }
+
+ /**
+ * Build the database manager instance.
+ *
+ * @return void
+ */
+ protected function setupManager()
+ {
+ $factory = new ConnectionFactory($this->container);
+
+ $this->manager = new DatabaseManager($this->container, $factory);
+ }
+
+ /**
+ * Get a connection instance from the global manager.
+ *
+ * @param string $connection
+ * @return \Illuminate\Database\Connection
+ */
+ public static function connection($connection = null)
+ {
+ return static::$instance->getConnection($connection);
+ }
+
+ /**
+ * Get a fluent query builder instance.
+ *
+ * @param string $table
+ * @param string $connection
+ * @return \Illuminate\Database\Query\Builder
+ */
+ public static function table($table, $connection = null)
+ {
+ return static::$instance->connection($connection)->table($table);
+ }
+
+ /**
+ * Get a schema builder instance.
+ *
+ * @param string $connection
+ * @return \Illuminate\Database\Schema\Builder
+ */
+ public static function schema($connection = null)
+ {
+ return static::$instance->connection($connection)->getSchemaBuilder();
+ }
+
+ /**
+ * Get a registered connection instance.
+ *
+ * @param string $name
+ * @return \Illuminate\Database\Connection
+ */
+ public function getConnection($name = null)
+ {
+ return $this->manager->connection($name);
+ }
+
+ /**
+ * Register a connection with the manager.
+ *
+ * @param array $config
+ * @param string $name
+ * @return void
+ */
+ public function addConnection(array $config, $name = 'default')
+ {
+ $connections = $this->container['config']['database.connections'];
+
+ $connections[$name] = $config;
+
+ $this->container['config']['database.connections'] = $connections;
+ }
+
+ /**
+ * Bootstrap Eloquent so it is ready for usage.
+ *
+ * @return void
+ */
+ public function bootEloquent()
+ {
+ Eloquent::setConnectionResolver($this->manager);
+
+ // If we have an event dispatcher instance, we will go ahead and register it
+ // with the Eloquent ORM, allowing for model callbacks while creating and
+ // updating "model" instances; however, if it not necessary to operate.
+ if ($dispatcher = $this->getEventDispatcher())
+ {
+ Eloquent::setEventDispatcher($dispatcher);
+ }
+ }
+
+ /**
+ * Set the fetch mode for the database connections.
+ *
+ * @param int $fetchMode
+ * @return $this
+ */
+ public function setFetchMode($fetchMode)
+ {
+ $this->container['config']['database.fetch'] = $fetchMode;
+
+ return $this;
+ }
+
+ /**
+ * Get the database manager instance.
+ *
+ * @return \Illuminate\Database\DatabaseManager
+ */
+ public function getDatabaseManager()
+ {
+ return $this->manager;
+ }
+
+ /**
+ * Get the current event dispatcher instance.
+ *
+ * @return \Illuminate\Events\Dispatcher
+ */
+ public function getEventDispatcher()
+ {
+ if ($this->container->bound('events'))
+ {
+ return $this->container['events'];
+ }
+ }
+
+ /**
+ * Set the event dispatcher instance to be used by connections.
+ *
+ * @param \Illuminate\Events\Dispatcher $dispatcher
+ * @return void
+ */
+ public function setEventDispatcher(Dispatcher $dispatcher)
+ {
+ $this->container->instance('events', $dispatcher);
+ }
+
+ /**
+ * Get the current cache manager instance.
+ *
+ * @return \Illuminate\Cache\CacheManager
+ */
+ public function getCacheManager()
+ {
+ if ($this->container->bound('cache'))
+ {
+ return $this->container['cache'];
+ }
+ }
+
+ /**
+ * Set the cache manager to be used by connections.
+ *
+ * @param \Illuminate\Cache\CacheManager $cache
+ * @return void
+ */
+ public function setCacheManager(CacheManager $cache)
+ {
+ $this->container->instance('cache', $cache);
+ }
+
+ /**
+ * Dynamically pass methods to the default connection.
+ *
+ * @param string $method
+ * @param array $parameters
+ * @return mixed
+ */
+ public static function __callStatic($method, $parameters)
+ {
+ return call_user_func_array(array(static::connection(), $method), $parameters);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Connection.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connection.php b/vendor/laravel/framework/src/Illuminate/Database/Connection.php
new file mode 100755
index 0000000..fd09205
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Connection.php
@@ -0,0 +1,1173 @@
+<?php namespace Illuminate\Database;
+
+use PDO;
+use Closure;
+use DateTime;
+use Illuminate\Events\Dispatcher;
+use Illuminate\Database\Query\Processors\Processor;
+use Doctrine\DBAL\Connection as DoctrineConnection;
+
+class Connection implements ConnectionInterface {
+
+ /**
+ * The active PDO connection.
+ *
+ * @var PDO
+ */
+ protected $pdo;
+
+ /**
+ * The active PDO connection used for reads.
+ *
+ * @var PDO
+ */
+ protected $readPdo;
+
+ /**
+ * The reconnector instance for the connection.
+ *
+ * @var callable
+ */
+ protected $reconnector;
+
+ /**
+ * The query grammar implementation.
+ *
+ * @var \Illuminate\Database\Query\Grammars\Grammar
+ */
+ protected $queryGrammar;
+
+ /**
+ * The schema grammar implementation.
+ *
+ * @var \Illuminate\Database\Schema\Grammars\Grammar
+ */
+ protected $schemaGrammar;
+
+ /**
+ * The query post processor implementation.
+ *
+ * @var \Illuminate\Database\Query\Processors\Processor
+ */
+ protected $postProcessor;
+
+ /**
+ * The event dispatcher instance.
+ *
+ * @var \Illuminate\Events\Dispatcher
+ */
+ protected $events;
+
+ /**
+ * The paginator environment instance.
+ *
+ * @var \Illuminate\Pagination\Paginator
+ */
+ protected $paginator;
+
+ /**
+ * The cache manager instance.
+ *
+ * @var \Illuminate\Cache\CacheManager
+ */
+ protected $cache;
+
+ /**
+ * The default fetch mode of the connection.
+ *
+ * @var int
+ */
+ protected $fetchMode = PDO::FETCH_ASSOC;
+
+ /**
+ * The number of active transactions.
+ *
+ * @var int
+ */
+ protected $transactions = 0;
+
+ /**
+ * All of the queries run against the connection.
+ *
+ * @var array
+ */
+ protected $queryLog = array();
+
+ /**
+ * Indicates whether queries are being logged.
+ *
+ * @var bool
+ */
+ protected $loggingQueries = true;
+
+ /**
+ * Indicates if the connection is in a "dry run".
+ *
+ * @var bool
+ */
+ protected $pretending = false;
+
+ /**
+ * The name of the connected database.
+ *
+ * @var string
+ */
+ protected $database;
+
+ /**
+ * The table prefix for the connection.
+ *
+ * @var string
+ */
+ protected $tablePrefix = '';
+
+ /**
+ * The database connection configuration options.
+ *
+ * @var array
+ */
+ protected $config = array();
+
+ /**
+ * Create a new database connection instance.
+ *
+ * @param \PDO $pdo
+ * @param string $database
+ * @param string $tablePrefix
+ * @param array $config
+ * @return void
+ */
+ public function __construct(PDO $pdo, $database = '', $tablePrefix = '', array $config = array())
+ {
+ $this->pdo = $pdo;
+
+ // First we will setup the default properties. We keep track of the DB
+ // name we are connected to since it is needed when some reflective
+ // type commands are run such as checking whether a table exists.
+ $this->database = $database;
+
+ $this->tablePrefix = $tablePrefix;
+
+ $this->config = $config;
+
+ // We need to initialize a query grammar and the query post processors
+ // which are both very important parts of the database abstractions
+ // so we initialize these to their default values while starting.
+ $this->useDefaultQueryGrammar();
+
+ $this->useDefaultPostProcessor();
+ }
+
+ /**
+ * Set the query grammar to the default implementation.
+ *
+ * @return void
+ */
+ public function useDefaultQueryGrammar()
+ {
+ $this->queryGrammar = $this->getDefaultQueryGrammar();
+ }
+
+ /**
+ * Get the default query grammar instance.
+ *
+ * @return \Illuminate\Database\Query\Grammars\Grammar
+ */
+ protected function getDefaultQueryGrammar()
+ {
+ return new Query\Grammars\Grammar;
+ }
+
+ /**
+ * Set the schema grammar to the default implementation.
+ *
+ * @return void
+ */
+ public function useDefaultSchemaGrammar()
+ {
+ $this->schemaGrammar = $this->getDefaultSchemaGrammar();
+ }
+
+ /**
+ * Get the default schema grammar instance.
+ *
+ * @return \Illuminate\Database\Schema\Grammars\Grammar
+ */
+ protected function getDefaultSchemaGrammar() {}
+
+ /**
+ * Set the query post processor to the default implementation.
+ *
+ * @return void
+ */
+ public function useDefaultPostProcessor()
+ {
+ $this->postProcessor = $this->getDefaultPostProcessor();
+ }
+
+ /**
+ * Get the default post processor instance.
+ *
+ * @return \Illuminate\Database\Query\Processors\Processor
+ */
+ protected function getDefaultPostProcessor()
+ {
+ return new Query\Processors\Processor;
+ }
+
+ /**
+ * Get a schema builder instance for the connection.
+ *
+ * @return \Illuminate\Database\Schema\Builder
+ */
+ public function getSchemaBuilder()
+ {
+ if (is_null($this->schemaGrammar)) { $this->useDefaultSchemaGrammar(); }
+
+ return new Schema\Builder($this);
+ }
+
+ /**
+ * Begin a fluent query against a database table.
+ *
+ * @param string $table
+ * @return \Illuminate\Database\Query\Builder
+ */
+ public function table($table)
+ {
+ $processor = $this->getPostProcessor();
+
+ $query = new Query\Builder($this, $this->getQueryGrammar(), $processor);
+
+ return $query->from($table);
+ }
+
+ /**
+ * Get a new raw query expression.
+ *
+ * @param mixed $value
+ * @return \Illuminate\Database\Query\Expression
+ */
+ public function raw($value)
+ {
+ return new Query\Expression($value);
+ }
+
+ /**
+ * Run a select statement and return a single result.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return mixed
+ */
+ public function selectOne($query, $bindings = array())
+ {
+ $records = $this->select($query, $bindings);
+
+ return count($records) > 0 ? reset($records) : null;
+ }
+
+ /**
+ * Run a select statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return array
+ */
+ public function selectFromWriteConnection($query, $bindings = array())
+ {
+ return $this->select($query, $bindings, false);
+ }
+
+ /**
+ * Run a select statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @param bool $useReadPdo
+ * @return array
+ */
+ public function select($query, $bindings = array(), $useReadPdo = true)
+ {
+ return $this->run($query, $bindings, function($me, $query, $bindings) use ($useReadPdo)
+ {
+ if ($me->pretending()) return array();
+
+ // For select statements, we'll simply execute the query and return an array
+ // of the database result set. Each element in the array will be a single
+ // row from the database table, and will either be an array or objects.
+ $statement = $this->getPdoForSelect($useReadPdo)->prepare($query);
+
+ $statement->execute($me->prepareBindings($bindings));
+
+ return $statement->fetchAll($me->getFetchMode());
+ });
+ }
+
+ /**
+ * Get the PDO connection to use for a select query.
+ *
+ * @param bool $useReadPdo
+ * @return \PDO
+ */
+ protected function getPdoForSelect($useReadPdo = true)
+ {
+ return $useReadPdo ? $this->getReadPdo() : $this->getPdo();
+ }
+
+ /**
+ * Run an insert statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return bool
+ */
+ public function insert($query, $bindings = array())
+ {
+ return $this->statement($query, $bindings);
+ }
+
+ /**
+ * Run an update statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return int
+ */
+ public function update($query, $bindings = array())
+ {
+ return $this->affectingStatement($query, $bindings);
+ }
+
+ /**
+ * Run a delete statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return int
+ */
+ public function delete($query, $bindings = array())
+ {
+ return $this->affectingStatement($query, $bindings);
+ }
+
+ /**
+ * Execute an SQL statement and return the boolean result.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return bool
+ */
+ public function statement($query, $bindings = array())
+ {
+ return $this->run($query, $bindings, function($me, $query, $bindings)
+ {
+ if ($me->pretending()) return true;
+
+ $bindings = $me->prepareBindings($bindings);
+
+ return $me->getPdo()->prepare($query)->execute($bindings);
+ });
+ }
+
+ /**
+ * Run an SQL statement and get the number of rows affected.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return int
+ */
+ public function affectingStatement($query, $bindings = array())
+ {
+ return $this->run($query, $bindings, function($me, $query, $bindings)
+ {
+ if ($me->pretending()) return 0;
+
+ // For update or delete statements, we want to get the number of rows affected
+ // by the statement and return that back to the developer. We'll first need
+ // to execute the statement and then we'll use PDO to fetch the affected.
+ $statement = $me->getPdo()->prepare($query);
+
+ $statement->execute($me->prepareBindings($bindings));
+
+ return $statement->rowCount();
+ });
+ }
+
+ /**
+ * Run a raw, unprepared query against the PDO connection.
+ *
+ * @param string $query
+ * @return bool
+ */
+ public function unprepared($query)
+ {
+ return $this->run($query, array(), function($me, $query)
+ {
+ if ($me->pretending()) return true;
+
+ return (bool) $me->getPdo()->exec($query);
+ });
+ }
+
+ /**
+ * Prepare the query bindings for execution.
+ *
+ * @param array $bindings
+ * @return array
+ */
+ public function prepareBindings(array $bindings)
+ {
+ $grammar = $this->getQueryGrammar();
+
+ foreach ($bindings as $key => $value)
+ {
+ // We need to transform all instances of the DateTime class into an actual
+ // date string. Each query grammar maintains its own date string format
+ // so we'll just ask the grammar for the format to get from the date.
+ if ($value instanceof DateTime)
+ {
+ $bindings[$key] = $value->format($grammar->getDateFormat());
+ }
+ elseif ($value === false)
+ {
+ $bindings[$key] = 0;
+ }
+ }
+
+ return $bindings;
+ }
+
+ /**
+ * Execute a Closure within a transaction.
+ *
+ * @param \Closure $callback
+ * @return mixed
+ *
+ * @throws \Exception
+ */
+ public function transaction(Closure $callback)
+ {
+ $this->beginTransaction();
+
+ // We'll simply execute the given callback within a try / catch block
+ // and if we catch any exception we can rollback the transaction
+ // so that none of the changes are persisted to the database.
+ try
+ {
+ $result = $callback($this);
+
+ $this->commit();
+ }
+
+ // If we catch an exception, we will roll back so nothing gets messed
+ // up in the database. Then we'll re-throw the exception so it can
+ // be handled how the developer sees fit for their applications.
+ catch (\Exception $e)
+ {
+ $this->rollBack();
+
+ throw $e;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Start a new database transaction.
+ *
+ * @return void
+ */
+ public function beginTransaction()
+ {
+ ++$this->transactions;
+
+ if ($this->transactions == 1)
+ {
+ $this->pdo->beginTransaction();
+ }
+
+ $this->fireConnectionEvent('beganTransaction');
+ }
+
+ /**
+ * Commit the active database transaction.
+ *
+ * @return void
+ */
+ public function commit()
+ {
+ if ($this->transactions == 1) $this->pdo->commit();
+
+ --$this->transactions;
+
+ $this->fireConnectionEvent('committed');
+ }
+
+ /**
+ * Rollback the active database transaction.
+ *
+ * @return void
+ */
+ public function rollBack()
+ {
+ if ($this->transactions == 1)
+ {
+ $this->transactions = 0;
+
+ $this->pdo->rollBack();
+ }
+ else
+ {
+ --$this->transactions;
+ }
+
+ $this->fireConnectionEvent('rollingBack');
+ }
+
+ /**
+ * Get the number of active transactions.
+ *
+ * @return int
+ */
+ public function transactionLevel()
+ {
+ return $this->transactions;
+ }
+
+ /**
+ * Execute the given callback in "dry run" mode.
+ *
+ * @param \Closure $callback
+ * @return array
+ */
+ public function pretend(Closure $callback)
+ {
+ $this->pretending = true;
+
+ $this->queryLog = array();
+
+ // Basically to make the database connection "pretend", we will just return
+ // the default values for all the query methods, then we will return an
+ // array of queries that were "executed" within the Closure callback.
+ $callback($this);
+
+ $this->pretending = false;
+
+ return $this->queryLog;
+ }
+
+ /**
+ * Run a SQL statement and log its execution context.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @param \Closure $callback
+ * @return mixed
+ *
+ * @throws \Illuminate\Database\QueryException
+ */
+ protected function run($query, $bindings, Closure $callback)
+ {
+ $this->reconnectIfMissingConnection();
+
+ $start = microtime(true);
+
+ // Here we will run this query. If an exception occurs we'll determine if it was
+ // caused by a connection that has been lost. If that is the cause, we'll try
+ // to re-establish connection and re-run the query with a fresh connection.
+ try
+ {
+ $result = $this->runQueryCallback($query, $bindings, $callback);
+ }
+ catch (QueryException $e)
+ {
+ $result = $this->tryAgainIfCausedByLostConnection(
+ $e, $query, $bindings, $callback
+ );
+ }
+
+ // Once we have run the query we will calculate the time that it took to run and
+ // then log the query, bindings, and execution time so we will report them on
+ // the event that the developer needs them. We'll log time in milliseconds.
+ $time = $this->getElapsedTime($start);
+
+ $this->logQuery($query, $bindings, $time);
+
+ return $result;
+ }
+
+ /**
+ * Run a SQL statement.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @param \Closure $callback
+ * @return mixed
+ *
+ * @throws \Illuminate\Database\QueryException
+ */
+ protected function runQueryCallback($query, $bindings, Closure $callback)
+ {
+ // To execute the statement, we'll simply call the callback, which will actually
+ // run the SQL against the PDO connection. Then we can calculate the time it
+ // took to execute and log the query SQL, bindings and time in our memory.
+ try
+ {
+ $result = $callback($this, $query, $bindings);
+ }
+
+ // If an exception occurs when attempting to run a query, we'll format the error
+ // message to include the bindings with SQL, which will make this exception a
+ // lot more helpful to the developer instead of just the database's errors.
+ catch (\Exception $e)
+ {
+ throw new QueryException(
+ $query, $this->prepareBindings($bindings), $e
+ );
+ }
+
+ return $result;
+ }
+
+ /**
+ * Handle a query exception that occurred during query execution.
+ *
+ * @param \Illuminate\Database\QueryException $e
+ * @param string $query
+ * @param array $bindings
+ * @param \Closure $callback
+ * @return mixed
+ *
+ * @throws \Illuminate\Database\QueryException
+ */
+ protected function tryAgainIfCausedByLostConnection(QueryException $e, $query, $bindings, Closure $callback)
+ {
+ if ($this->causedByLostConnection($e))
+ {
+ $this->reconnect();
+
+ return $this->runQueryCallback($query, $bindings, $callback);
+ }
+
+ throw $e;
+ }
+
+ /**
+ * Determine if the given exception was caused by a lost connection.
+ *
+ * @param \Illuminate\Database\QueryException
+ * @return bool
+ */
+ protected function causedByLostConnection(QueryException $e)
+ {
+ return str_contains($e->getPrevious()->getMessage(), 'server has gone away');
+ }
+
+ /**
+ * Disconnect from the underlying PDO connection.
+ *
+ * @return void
+ */
+ public function disconnect()
+ {
+ $this->setPdo(null)->setReadPdo(null);
+ }
+
+ /**
+ * Reconnect to the database.
+ *
+ * @return void
+ *
+ * @throws \LogicException
+ */
+ public function reconnect()
+ {
+ if (is_callable($this->reconnector))
+ {
+ return call_user_func($this->reconnector, $this);
+ }
+
+ throw new \LogicException("Lost connection and no reconnector available.");
+ }
+
+ /**
+ * Reconnect to the database if a PDO connection is missing.
+ *
+ * @return void
+ */
+ protected function reconnectIfMissingConnection()
+ {
+ if (is_null($this->getPdo()) || is_null($this->getReadPdo()))
+ {
+ $this->reconnect();
+ }
+ }
+
+ /**
+ * Log a query in the connection's query log.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @param float|null $time
+ * @return void
+ */
+ public function logQuery($query, $bindings, $time = null)
+ {
+ if (isset($this->events))
+ {
+ $this->events->fire('illuminate.query', array($query, $bindings, $time, $this->getName()));
+ }
+
+ if ( ! $this->loggingQueries) return;
+
+ $this->queryLog[] = compact('query', 'bindings', 'time');
+ }
+
+ /**
+ * Register a database query listener with the connection.
+ *
+ * @param \Closure $callback
+ * @return void
+ */
+ public function listen(Closure $callback)
+ {
+ if (isset($this->events))
+ {
+ $this->events->listen('illuminate.query', $callback);
+ }
+ }
+
+ /**
+ * Fire an event for this connection.
+ *
+ * @param string $event
+ * @return void
+ */
+ protected function fireConnectionEvent($event)
+ {
+ if (isset($this->events))
+ {
+ $this->events->fire('connection.'.$this->getName().'.'.$event, $this);
+ }
+ }
+
+ /**
+ * Get the elapsed time since a given starting point.
+ *
+ * @param int $start
+ * @return float
+ */
+ protected function getElapsedTime($start)
+ {
+ return round((microtime(true) - $start) * 1000, 2);
+ }
+
+ /**
+ * Get a Doctrine Schema Column instance.
+ *
+ * @param string $table
+ * @param string $column
+ * @return \Doctrine\DBAL\Schema\Column
+ */
+ public function getDoctrineColumn($table, $column)
+ {
+ $schema = $this->getDoctrineSchemaManager();
+
+ return $schema->listTableDetails($table)->getColumn($column);
+ }
+
+ /**
+ * Get the Doctrine DBAL schema manager for the connection.
+ *
+ * @return \Doctrine\DBAL\Schema\AbstractSchemaManager
+ */
+ public function getDoctrineSchemaManager()
+ {
+ return $this->getDoctrineDriver()->getSchemaManager($this->getDoctrineConnection());
+ }
+
+ /**
+ * Get the Doctrine DBAL database connection instance.
+ *
+ * @return \Doctrine\DBAL\Connection
+ */
+ public function getDoctrineConnection()
+ {
+ $driver = $this->getDoctrineDriver();
+
+ $data = array('pdo' => $this->pdo, 'dbname' => $this->getConfig('database'));
+
+ return new DoctrineConnection($data, $driver);
+ }
+
+ /**
+ * Get the current PDO connection.
+ *
+ * @return \PDO
+ */
+ public function getPdo()
+ {
+ return $this->pdo;
+ }
+
+ /**
+ * Get the current PDO connection used for reading.
+ *
+ * @return \PDO
+ */
+ public function getReadPdo()
+ {
+ if ($this->transactions >= 1) return $this->getPdo();
+
+ return $this->readPdo ?: $this->pdo;
+ }
+
+ /**
+ * Set the PDO connection.
+ *
+ * @param \PDO|null $pdo
+ * @return $this
+ */
+ public function setPdo($pdo)
+ {
+ if ($this->transactions >= 1)
+ throw new \RuntimeException("Can't swap PDO instance while within transaction.");
+
+ $this->pdo = $pdo;
+
+ return $this;
+ }
+
+ /**
+ * Set the PDO connection used for reading.
+ *
+ * @param \PDO|null $pdo
+ * @return $this
+ */
+ public function setReadPdo($pdo)
+ {
+ $this->readPdo = $pdo;
+
+ return $this;
+ }
+
+ /**
+ * Set the reconnect instance on the connection.
+ *
+ * @param callable $reconnector
+ * @return $this
+ */
+ public function setReconnector(callable $reconnector)
+ {
+ $this->reconnector = $reconnector;
+
+ return $this;
+ }
+
+ /**
+ * Get the database connection name.
+ *
+ * @return string|null
+ */
+ public function getName()
+ {
+ return $this->getConfig('name');
+ }
+
+ /**
+ * Get an option from the configuration options.
+ *
+ * @param string $option
+ * @return mixed
+ */
+ public function getConfig($option)
+ {
+ return array_get($this->config, $option);
+ }
+
+ /**
+ * Get the PDO driver name.
+ *
+ * @return string
+ */
+ public function getDriverName()
+ {
+ return $this->pdo->getAttribute(\PDO::ATTR_DRIVER_NAME);
+ }
+
+ /**
+ * Get the query grammar used by the connection.
+ *
+ * @return \Illuminate\Database\Query\Grammars\Grammar
+ */
+ public function getQueryGrammar()
+ {
+ return $this->queryGrammar;
+ }
+
+ /**
+ * Set the query grammar used by the connection.
+ *
+ * @param \Illuminate\Database\Query\Grammars\Grammar
+ * @return void
+ */
+ public function setQueryGrammar(Query\Grammars\Grammar $grammar)
+ {
+ $this->queryGrammar = $grammar;
+ }
+
+ /**
+ * Get the schema grammar used by the connection.
+ *
+ * @return \Illuminate\Database\Query\Grammars\Grammar
+ */
+ public function getSchemaGrammar()
+ {
+ return $this->schemaGrammar;
+ }
+
+ /**
+ * Set the schema grammar used by the connection.
+ *
+ * @param \Illuminate\Database\Schema\Grammars\Grammar
+ * @return void
+ */
+ public function setSchemaGrammar(Schema\Grammars\Grammar $grammar)
+ {
+ $this->schemaGrammar = $grammar;
+ }
+
+ /**
+ * Get the query post processor used by the connection.
+ *
+ * @return \Illuminate\Database\Query\Processors\Processor
+ */
+ public function getPostProcessor()
+ {
+ return $this->postProcessor;
+ }
+
+ /**
+ * Set the query post processor used by the connection.
+ *
+ * @param \Illuminate\Database\Query\Processors\Processor
+ * @return void
+ */
+ public function setPostProcessor(Processor $processor)
+ {
+ $this->postProcessor = $processor;
+ }
+
+ /**
+ * Get the event dispatcher used by the connection.
+ *
+ * @return \Illuminate\Events\Dispatcher
+ */
+ public function getEventDispatcher()
+ {
+ return $this->events;
+ }
+
+ /**
+ * Set the event dispatcher instance on the connection.
+ *
+ * @param \Illuminate\Events\Dispatcher
+ * @return void
+ */
+ public function setEventDispatcher(Dispatcher $events)
+ {
+ $this->events = $events;
+ }
+
+ /**
+ * Get the paginator environment instance.
+ *
+ * @return \Illuminate\Pagination\Factory
+ */
+ public function getPaginator()
+ {
+ if ($this->paginator instanceof Closure)
+ {
+ $this->paginator = call_user_func($this->paginator);
+ }
+
+ return $this->paginator;
+ }
+
+ /**
+ * Set the pagination environment instance.
+ *
+ * @param \Illuminate\Pagination\Factory|\Closure $paginator
+ * @return void
+ */
+ public function setPaginator($paginator)
+ {
+ $this->paginator = $paginator;
+ }
+
+ /**
+ * Get the cache manager instance.
+ *
+ * @return \Illuminate\Cache\CacheManager
+ */
+ public function getCacheManager()
+ {
+ if ($this->cache instanceof Closure)
+ {
+ $this->cache = call_user_func($this->cache);
+ }
+
+ return $this->cache;
+ }
+
+ /**
+ * Set the cache manager instance on the connection.
+ *
+ * @param \Illuminate\Cache\CacheManager|\Closure $cache
+ * @return void
+ */
+ public function setCacheManager($cache)
+ {
+ $this->cache = $cache;
+ }
+
+ /**
+ * Determine if the connection in a "dry run".
+ *
+ * @return bool
+ */
+ public function pretending()
+ {
+ return $this->pretending === true;
+ }
+
+ /**
+ * Get the default fetch mode for the connection.
+ *
+ * @return int
+ */
+ public function getFetchMode()
+ {
+ return $this->fetchMode;
+ }
+
+ /**
+ * Set the default fetch mode for the connection.
+ *
+ * @param int $fetchMode
+ * @return int
+ */
+ public function setFetchMode($fetchMode)
+ {
+ $this->fetchMode = $fetchMode;
+ }
+
+ /**
+ * Get the connection query log.
+ *
+ * @return array
+ */
+ public function getQueryLog()
+ {
+ return $this->queryLog;
+ }
+
+ /**
+ * Clear the query log.
+ *
+ * @return void
+ */
+ public function flushQueryLog()
+ {
+ $this->queryLog = array();
+ }
+
+ /**
+ * Enable the query log on the connection.
+ *
+ * @return void
+ */
+ public function enableQueryLog()
+ {
+ $this->loggingQueries = true;
+ }
+
+ /**
+ * Disable the query log on the connection.
+ *
+ * @return void
+ */
+ public function disableQueryLog()
+ {
+ $this->loggingQueries = false;
+ }
+
+ /**
+ * Determine whether we're logging queries.
+ *
+ * @return bool
+ */
+ public function logging()
+ {
+ return $this->loggingQueries;
+ }
+
+ /**
+ * Get the name of the connected database.
+ *
+ * @return string
+ */
+ public function getDatabaseName()
+ {
+ return $this->database;
+ }
+
+ /**
+ * Set the name of the connected database.
+ *
+ * @param string $database
+ * @return string
+ */
+ public function setDatabaseName($database)
+ {
+ $this->database = $database;
+ }
+
+ /**
+ * Get the table prefix for the connection.
+ *
+ * @return string
+ */
+ public function getTablePrefix()
+ {
+ return $this->tablePrefix;
+ }
+
+ /**
+ * Set the table prefix in use by the connection.
+ *
+ * @param string $prefix
+ * @return void
+ */
+ public function setTablePrefix($prefix)
+ {
+ $this->tablePrefix = $prefix;
+
+ $this->getQueryGrammar()->setTablePrefix($prefix);
+ }
+
+ /**
+ * Set the table prefix and return the grammar.
+ *
+ * @param \Illuminate\Database\Grammar $grammar
+ * @return \Illuminate\Database\Grammar
+ */
+ public function withTablePrefix(Grammar $grammar)
+ {
+ $grammar->setTablePrefix($this->tablePrefix);
+
+ return $grammar;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php b/vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php
new file mode 100755
index 0000000..48d69b3
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php
@@ -0,0 +1,148 @@
+<?php namespace Illuminate\Database;
+
+use Closure;
+
+interface ConnectionInterface {
+
+ /**
+ * Begin a fluent query against a database table.
+ *
+ * @param string $table
+ * @return \Illuminate\Database\Query\Builder
+ */
+ public function table($table);
+
+ /**
+ * Get a new raw query expression.
+ *
+ * @param mixed $value
+ * @return \Illuminate\Database\Query\Expression
+ */
+ public function raw($value);
+
+ /**
+ * Run a select statement and return a single result.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return mixed
+ */
+ public function selectOne($query, $bindings = array());
+
+ /**
+ * Run a select statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return array
+ */
+ public function select($query, $bindings = array());
+
+ /**
+ * Run an insert statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return bool
+ */
+ public function insert($query, $bindings = array());
+
+ /**
+ * Run an update statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return int
+ */
+ public function update($query, $bindings = array());
+
+ /**
+ * Run a delete statement against the database.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return int
+ */
+ public function delete($query, $bindings = array());
+
+ /**
+ * Execute an SQL statement and return the boolean result.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return bool
+ */
+ public function statement($query, $bindings = array());
+
+ /**
+ * Run an SQL statement and get the number of rows affected.
+ *
+ * @param string $query
+ * @param array $bindings
+ * @return int
+ */
+ public function affectingStatement($query, $bindings = array());
+
+ /**
+ * Run a raw, unprepared query against the PDO connection.
+ *
+ * @param string $query
+ * @return bool
+ */
+ public function unprepared($query);
+
+ /**
+ * Prepare the query bindings for execution.
+ *
+ * @param array $bindings
+ * @return array
+ */
+ public function prepareBindings(array $bindings);
+
+ /**
+ * Execute a Closure within a transaction.
+ *
+ * @param \Closure $callback
+ * @return mixed
+ *
+ * @throws \Exception
+ */
+ public function transaction(Closure $callback);
+
+ /**
+ * Start a new database transaction.
+ *
+ * @return void
+ */
+ public function beginTransaction();
+
+ /**
+ * Commit the active database transaction.
+ *
+ * @return void
+ */
+ public function commit();
+
+ /**
+ * Rollback the active database transaction.
+ *
+ * @return void
+ */
+ public function rollBack();
+
+ /**
+ * Get the number of active transactions.
+ *
+ * @return int
+ */
+ public function transactionLevel();
+
+ /**
+ * Execute the given callback in "dry run" mode.
+ *
+ * @param \Closure $callback
+ * @return array
+ */
+ public function pretend(Closure $callback);
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolver.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolver.php b/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolver.php
new file mode 100755
index 0000000..05c28e8
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolver.php
@@ -0,0 +1,90 @@
+<?php namespace Illuminate\Database;
+
+class ConnectionResolver implements ConnectionResolverInterface {
+
+ /**
+ * All of the registered connections.
+ *
+ * @var array
+ */
+ protected $connections = array();
+
+ /**
+ * The default connection name.
+ *
+ * @var string
+ */
+ protected $default;
+
+ /**
+ * Create a new connection resolver instance.
+ *
+ * @param array $connections
+ * @return void
+ */
+ public function __construct(array $connections = array())
+ {
+ foreach ($connections as $name => $connection)
+ {
+ $this->addConnection($name, $connection);
+ }
+ }
+
+ /**
+ * Get a database connection instance.
+ *
+ * @param string $name
+ * @return \Illuminate\Database\Connection
+ */
+ public function connection($name = null)
+ {
+ if (is_null($name)) $name = $this->getDefaultConnection();
+
+ return $this->connections[$name];
+ }
+
+ /**
+ * Add a connection to the resolver.
+ *
+ * @param string $name
+ * @param \Illuminate\Database\Connection $connection
+ * @return void
+ */
+ public function addConnection($name, Connection $connection)
+ {
+ $this->connections[$name] = $connection;
+ }
+
+ /**
+ * Check if a connection has been registered.
+ *
+ * @param string $name
+ * @return bool
+ */
+ public function hasConnection($name)
+ {
+ return isset($this->connections[$name]);
+ }
+
+ /**
+ * Get the default connection name.
+ *
+ * @return string
+ */
+ public function getDefaultConnection()
+ {
+ return $this->default;
+ }
+
+ /**
+ * Set the default connection name.
+ *
+ * @param string $name
+ * @return void
+ */
+ public function setDefaultConnection($name)
+ {
+ $this->default = $name;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php b/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php
new file mode 100755
index 0000000..46abdc0
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/ConnectionResolverInterface.php
@@ -0,0 +1,28 @@
+<?php namespace Illuminate\Database;
+
+interface ConnectionResolverInterface {
+
+ /**
+ * Get a database connection instance.
+ *
+ * @param string $name
+ * @return \Illuminate\Database\Connection
+ */
+ public function connection($name = null);
+
+ /**
+ * Get the default connection name.
+ *
+ * @return string
+ */
+ public function getDefaultConnection();
+
+ /**
+ * Set the default connection name.
+ *
+ * @param string $name
+ * @return void
+ */
+ public function setDefaultConnection($name);
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php b/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php
new file mode 100755
index 0000000..17df20c
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php
@@ -0,0 +1,230 @@
+<?php namespace Illuminate\Database\Connectors;
+
+use PDO;
+use Illuminate\Container\Container;
+use Illuminate\Database\MySqlConnection;
+use Illuminate\Database\SQLiteConnection;
+use Illuminate\Database\PostgresConnection;
+use Illuminate\Database\SqlServerConnection;
+
+class ConnectionFactory {
+
+ /**
+ * The IoC container instance.
+ *
+ * @var \Illuminate\Container\Container
+ */
+ protected $container;
+
+ /**
+ * Create a new connection factory instance.
+ *
+ * @param \Illuminate\Container\Container $container
+ * @return void
+ */
+ public function __construct(Container $container)
+ {
+ $this->container = $container;
+ }
+
+ /**
+ * Establish a PDO connection based on the configuration.
+ *
+ * @param array $config
+ * @param string $name
+ * @return \Illuminate\Database\Connection
+ */
+ public function make(array $config, $name = null)
+ {
+ $config = $this->parseConfig($config, $name);
+
+ if (isset($config['read']))
+ {
+ return $this->createReadWriteConnection($config);
+ }
+
+ return $this->createSingleConnection($config);
+ }
+
+ /**
+ * Create a single database connection instance.
+ *
+ * @param array $config
+ * @return \Illuminate\Database\Connection
+ */
+ protected function createSingleConnection(array $config)
+ {
+ $pdo = $this->createConnector($config)->connect($config);
+
+ return $this->createConnection($config['driver'], $pdo, $config['database'], $config['prefix'], $config);
+ }
+
+ /**
+ * Create a single database connection instance.
+ *
+ * @param array $config
+ * @return \Illuminate\Database\Connection
+ */
+ protected function createReadWriteConnection(array $config)
+ {
+ $connection = $this->createSingleConnection($this->getWriteConfig($config));
+
+ return $connection->setReadPdo($this->createReadPdo($config));
+ }
+
+ /**
+ * Create a new PDO instance for reading.
+ *
+ * @param array $config
+ * @return \PDO
+ */
+ protected function createReadPdo(array $config)
+ {
+ $readConfig = $this->getReadConfig($config);
+
+ return $this->createConnector($readConfig)->connect($readConfig);
+ }
+
+ /**
+ * Get the read configuration for a read / write connection.
+ *
+ * @param array $config
+ * @return array
+ */
+ protected function getReadConfig(array $config)
+ {
+ $readConfig = $this->getReadWriteConfig($config, 'read');
+
+ return $this->mergeReadWriteConfig($config, $readConfig);
+ }
+
+ /**
+ * Get the read configuration for a read / write connection.
+ *
+ * @param array $config
+ * @return array
+ */
+ protected function getWriteConfig(array $config)
+ {
+ $writeConfig = $this->getReadWriteConfig($config, 'write');
+
+ return $this->mergeReadWriteConfig($config, $writeConfig);
+ }
+
+ /**
+ * Get a read / write level configuration.
+ *
+ * @param array $config
+ * @param string $type
+ * @return array
+ */
+ protected function getReadWriteConfig(array $config, $type)
+ {
+ if (isset($config[$type][0]))
+ {
+ return $config[$type][array_rand($config[$type])];
+ }
+
+ return $config[$type];
+ }
+
+ /**
+ * Merge a configuration for a read / write connection.
+ *
+ * @param array $config
+ * @param array $merge
+ * @return array
+ */
+ protected function mergeReadWriteConfig(array $config, array $merge)
+ {
+ return array_except(array_merge($config, $merge), array('read', 'write'));
+ }
+
+ /**
+ * Parse and prepare the database configuration.
+ *
+ * @param array $config
+ * @param string $name
+ * @return array
+ */
+ protected function parseConfig(array $config, $name)
+ {
+ return array_add(array_add($config, 'prefix', ''), 'name', $name);
+ }
+
+ /**
+ * Create a connector instance based on the configuration.
+ *
+ * @param array $config
+ * @return \Illuminate\Database\Connectors\ConnectorInterface
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function createConnector(array $config)
+ {
+ if ( ! isset($config['driver']))
+ {
+ throw new \InvalidArgumentException("A driver must be specified.");
+ }
+
+ if ($this->container->bound($key = "db.connector.{$config['driver']}"))
+ {
+ return $this->container->make($key);
+ }
+
+ switch ($config['driver'])
+ {
+ case 'mysql':
+ return new MySqlConnector;
+
+ case 'pgsql':
+ return new PostgresConnector;
+
+ case 'sqlite':
+ return new SQLiteConnector;
+
+ case 'sqlsrv':
+ return new SqlServerConnector;
+ }
+
+ throw new \InvalidArgumentException("Unsupported driver [{$config['driver']}]");
+ }
+
+ /**
+ * Create a new connection instance.
+ *
+ * @param string $driver
+ * @param \PDO $connection
+ * @param string $database
+ * @param string $prefix
+ * @param array $config
+ * @return \Illuminate\Database\Connection
+ *
+ * @throws \InvalidArgumentException
+ */
+ protected function createConnection($driver, PDO $connection, $database, $prefix = '', array $config = array())
+ {
+ if ($this->container->bound($key = "db.connection.{$driver}"))
+ {
+ return $this->container->make($key, array($connection, $database, $prefix, $config));
+ }
+
+ switch ($driver)
+ {
+ case 'mysql':
+ return new MySqlConnection($connection, $database, $prefix, $config);
+
+ case 'pgsql':
+ return new PostgresConnection($connection, $database, $prefix, $config);
+
+ case 'sqlite':
+ return new SQLiteConnection($connection, $database, $prefix, $config);
+
+ case 'sqlsrv':
+ return new SqlServerConnection($connection, $database, $prefix, $config);
+ }
+
+ throw new \InvalidArgumentException("Unsupported driver [$driver]");
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php b/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
new file mode 100755
index 0000000..0c16093
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
@@ -0,0 +1,71 @@
+<?php namespace Illuminate\Database\Connectors;
+
+use PDO;
+
+class Connector {
+
+ /**
+ * The default PDO connection options.
+ *
+ * @var array
+ */
+ protected $options = array(
+ PDO::ATTR_CASE => PDO::CASE_NATURAL,
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+ PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
+ PDO::ATTR_STRINGIFY_FETCHES => false,
+ PDO::ATTR_EMULATE_PREPARES => false,
+ );
+
+ /**
+ * Get the PDO options based on the configuration.
+ *
+ * @param array $config
+ * @return array
+ */
+ public function getOptions(array $config)
+ {
+ $options = array_get($config, 'options', array());
+
+ return array_diff_key($this->options, $options) + $options;
+ }
+
+ /**
+ * Create a new PDO connection.
+ *
+ * @param string $dsn
+ * @param array $config
+ * @param array $options
+ * @return \PDO
+ */
+ public function createConnection($dsn, array $config, array $options)
+ {
+ $username = array_get($config, 'username');
+
+ $password = array_get($config, 'password');
+
+ return new PDO($dsn, $username, $password, $options);
+ }
+
+ /**
+ * Get the default PDO connection options.
+ *
+ * @return array
+ */
+ public function getDefaultOptions()
+ {
+ return $this->options;
+ }
+
+ /**
+ * Set the default PDO connection options.
+ *
+ * @param array $options
+ * @return void
+ */
+ public function setDefaultOptions(array $options)
+ {
+ $this->options = $options;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php b/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php
new file mode 100755
index 0000000..c2c76a5
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectorInterface.php
@@ -0,0 +1,13 @@
+<?php namespace Illuminate\Database\Connectors;
+
+interface ConnectorInterface {
+
+ /**
+ * Establish a database connection.
+ *
+ * @param array $config
+ * @return \PDO
+ */
+ public function connect(array $config);
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php b/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php
new file mode 100755
index 0000000..b1804ec
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php
@@ -0,0 +1,101 @@
+<?php namespace Illuminate\Database\Connectors;
+
+class MySqlConnector extends Connector implements ConnectorInterface {
+
+ /**
+ * Establish a database connection.
+ *
+ * @param array $config
+ * @return \PDO
+ */
+ public function connect(array $config)
+ {
+ $dsn = $this->getDsn($config);
+
+ $options = $this->getOptions($config);
+
+ // We need to grab the PDO options that should be used while making the brand
+ // new connection instance. The PDO options control various aspects of the
+ // connection's behavior, and some might be specified by the developers.
+ $connection = $this->createConnection($dsn, $config, $options);
+
+ if (isset($config['unix_socket']))
+ {
+ $connection->exec("use `{$config['database']}`;");
+ }
+
+ $collation = $config['collation'];
+
+ // Next we will set the "names" and "collation" on the clients connections so
+ // a correct character set will be used by this client. The collation also
+ // is set on the server but needs to be set here on this client objects.
+ $charset = $config['charset'];
+
+ $names = "set names '$charset'".
+ ( ! is_null($collation) ? " collate '$collation'" : '');
+
+ $connection->prepare($names)->execute();
+
+ // If the "strict" option has been configured for the connection we'll enable
+ // strict mode on all of these tables. This enforces some extra rules when
+ // using the MySQL database system and is a quicker way to enforce them.
+ if (isset($config['strict']) && $config['strict'])
+ {
+ $connection->prepare("set session sql_mode='STRICT_ALL_TABLES'")->execute();
+ }
+
+ return $connection;
+ }
+
+ /**
+ * Create a DSN string from a configuration. Chooses socket or host/port based on
+ * the 'unix_socket' config value
+ *
+ * @param array $config
+ * @return string
+ */
+ protected function getDsn(array $config)
+ {
+ return $this->configHasSocket($config) ? $this->getSocketDsn($config) : $this->getHostDsn($config);
+ }
+
+ /**
+ * Determine if the given configuration array has a UNIX socket value.
+ *
+ * @param array $config
+ * @return bool
+ */
+ protected function configHasSocket(array $config)
+ {
+ return isset($config['unix_socket']) && ! empty($config['unix_socket']);
+ }
+
+ /**
+ * Get the DSN string for a socket configuration.
+ *
+ * @param array $config
+ * @return string
+ */
+ protected function getSocketDsn(array $config)
+ {
+ extract($config);
+
+ return "mysql:unix_socket={$config['unix_socket']};dbname={$database}";
+ }
+
+ /**
+ * Get the DSN string for a host / port configuration.
+ *
+ * @param array $config
+ * @return string
+ */
+ protected function getHostDsn(array $config)
+ {
+ extract($config);
+
+ return isset($config['port'])
+ ? "mysql:host={$host};port={$port};dbname={$database}"
+ : "mysql:host={$host};dbname={$database}";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/01413d65/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php
----------------------------------------------------------------------
diff --git a/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php b/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php
new file mode 100755
index 0000000..39b50e3
--- /dev/null
+++ b/vendor/laravel/framework/src/Illuminate/Database/Connectors/PostgresConnector.php
@@ -0,0 +1,86 @@
+<?php namespace Illuminate\Database\Connectors;
+
+use PDO;
+
+class PostgresConnector extends Connector implements ConnectorInterface {
+
+ /**
+ * The default PDO connection options.
+ *
+ * @var array
+ */
+ protected $options = array(
+ PDO::ATTR_CASE => PDO::CASE_NATURAL,
+ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
+ PDO::ATTR_ORACLE_NULLS => PDO::NULL_NATURAL,
+ PDO::ATTR_STRINGIFY_FETCHES => false,
+ );
+
+ /**
+ * Establish a database connection.
+ *
+ * @param array $config
+ * @return \PDO
+ */
+ public function connect(array $config)
+ {
+ // First we'll create the basic DSN and connection instance connecting to the
+ // using the configuration option specified by the developer. We will also
+ // set the default character set on the connections to UTF-8 by default.
+ $dsn = $this->getDsn($config);
+
+ $options = $this->getOptions($config);
+
+ $connection = $this->createConnection($dsn, $config, $options);
+
+ $charset = $config['charset'];
+
+ $connection->prepare("set names '$charset'")->execute();
+
+ // Unlike MySQL, Postgres allows the concept of "schema" and a default schema
+ // may have been specified on the connections. If that is the case we will
+ // set the default schema search paths to the specified database schema.
+ if (isset($config['schema']))
+ {
+ $schema = $config['schema'];
+
+ $connection->prepare("set search_path to {$schema}")->execute();
+ }
+
+ return $connection;
+ }
+
+ /**
+ * Create a DSN string from a configuration.
+ *
+ * @param array $config
+ * @return string
+ */
+ protected function getDsn(array $config)
+ {
+ // First we will create the basic DSN setup as well as the port if it is in
+ // in the configuration options. This will give us the basic DSN we will
+ // need to establish the PDO connections and return them back for use.
+ extract($config);
+
+ $host = isset($host) ? "host={$host};" : '';
+
+ $dsn = "pgsql:{$host}dbname={$database}";
+
+ // If a port was specified, we will add it to this Postgres DSN connections
+ // format. Once we have done that we are ready to return this connection
+ // string back out for usage, as this has been fully constructed here.
+ if (isset($config['port']))
+ {
+ $dsn .= ";port={$port}";
+ }
+
+ if (isset($config['sslmode']))
+ {
+ $dsn .= ";sslmode={$sslmode}";
+ }
+
+ return $dsn;
+ }
+
+}