diff --git a/app/config/local/app.php b/app/config/local/app.php deleted file mode 100644 index c56fcb9..0000000 --- a/app/config/local/app.php +++ /dev/null @@ -1,18 +0,0 @@ - true, - -); diff --git a/app/config/local/database.php b/app/config/local/database.php deleted file mode 100644 index fbcb95a..0000000 --- a/app/config/local/database.php +++ /dev/null @@ -1,47 +0,0 @@ - array( - - 'mysql' => array( - 'driver' => 'mysql', - 'host' => 'localhost', - 'database' => 'homestead', - 'username' => 'homestead', - 'password' => 'secret', - 'charset' => 'utf8', - 'collation' => 'utf8_unicode_ci', - 'prefix' => '', - ), - - 'pgsql' => array( - 'driver' => 'pgsql', - 'host' => 'localhost', - 'database' => 'homestead', - 'username' => 'homestead', - 'password' => 'secret', - 'charset' => 'utf8', - 'prefix' => '', - 'schema' => 'public', - ), - - ), - -); diff --git a/app/config/services.php b/app/config/services.php deleted file mode 100644 index c8aba2a..0000000 --- a/app/config/services.php +++ /dev/null @@ -1,31 +0,0 @@ - array( - 'domain' => '', - 'secret' => '', - ), - - 'mandrill' => array( - 'secret' => '', - ), - - 'stripe' => array( - 'model' => 'User', - 'secret' => '', - ), - -); diff --git a/app/controllers/MentorController.php b/app/controllers/MentorController.php deleted file mode 100644 index 0bac90b..0000000 --- a/app/controllers/MentorController.php +++ /dev/null @@ -1,154 +0,0 @@ -with('mentors', $mentors); - } - - - /** - * Show the form for creating a new resource. - * - * @return Response - */ - public function create() - { - return \View::make('mentors.create'); - } - - - /** - * Store a newly created resource in storage. - * - * @return Response - */ - public function store() - { - $rules = array( - 'name' => 'required', - 'email' => 'required|email', - 'title' => 'required' - ); - $validator = Validator::make(Input::all(), $rules); - - // process the login - if ($validator->fails()) { - return Redirect::to('mentors/create') - ->withErrors($validator) - ->withInput(Input::except('password')); - } else { - // store - $mentor = new Mentor; - $mentor->name = Input::get('name'); - $mentor->email = Input::get('email'); - var_dump('This is the value of title '. Input::get('title')); - $mentor->title = Input::get('title'); - $mentor->save(); - - // redirect - Session::flash('message', 'Successfully created mentor!'); - return Redirect::to('mentors'); - } - } - - - /** - * Display the specified resource. - * - * @param int $id - * @return Response - */ - public function show($id) - { - // get the nerd - $mentor = Mentor::find($id); - - // show the view and pass the nerd to it - return View::make('mentors.show') - ->with('mentor', $mentor); - } - - - /** - * Show the form for editing the specified resource. - * - * @param int $id - * @return Response - */ - public function edit($id) - { - // get the nerd - $mentor = Mentor::find($id); - - // show the edit form and pass the nerd - return View::make('mentors.edit') - ->with('mentor', $mentor); - } - - - /** - * Update the specified resource in storage. - * - * @param int $id - * @return Response - */ - public function update($id) - { - // validate - // read more on validation at http://laravel.com/docs/validation - $rules = array( - 'name' => 'required', - 'email' => 'required|email', - 'title' => 'required' - ); - $validator = Validator::make(Input::all(), $rules); - - // process the login - if ($validator->fails()) { - return Redirect::to('mentors/' . $id . '/edit') - ->withErrors($validator) - ->withInput(Input::except('password')); - } else { - // store - $mentor = Mentor::find($id); - $mentor->name = Input::get('name'); - $mentor->email = Input::get('email'); - $mentor->title = Input::get('title'); - $mentor->save(); - - // redirect - Session::flash('message', 'Successfully updated mentor!'); - return Redirect::to('mentors'); - } - } - - - /** - * Remove the specified resource from storage. - * - * @param int $id - * @return Response - */ - public function destroy($id) - { - // delete - $mentor = Mentor::find($id); - $mentor->delete(); - - // redirect - Session::flash('message', 'Successfully deleted the mentor!'); - return Redirect::to('mentors'); - } - - -} diff --git a/app/database/migrations/2014_06_04_041712_create_mentors_table.php b/app/database/migrations/2014_06_04_041712_create_mentors_table.php deleted file mode 100644 index 454d68b..0000000 --- a/app/database/migrations/2014_06_04_041712_create_mentors_table.php +++ /dev/null @@ -1,35 +0,0 @@ -increments('id'); - $table->string('name', 100); - $table->string('email', 100); - $table->string('title', 100); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::drop('mentors'); - } - -} diff --git a/app/models/Mentor.php b/app/models/Mentor.php deleted file mode 100644 index d62cdbc..0000000 --- a/app/models/Mentor.php +++ /dev/null @@ -1,4 +0,0 @@ - - - - Welcome To Mentconnect - - - - -
-

Mconnect

Learn everything you need through a mentor on Mentconnect. Here, we match you with experienced programmers so that you can spend your time building usable code and then help others like yourself.

-
- - -
- -
-
-

Be a Member Free

Register Now

- - - {{ HTML::ul($errors->all()) }} - - {{ Form::open(array('url', 'mentors', 'class' => 'form-horizontal', 'role' => 'form')) }} - -
- {{ Form::label('name', 'Full Name', array('class' =>'col-sm-2 control-label')) }} -
- {{ Form::text('name', Input::old('name'), array('class' => 'form-control', 'placeholder' => 'John Doe')) }} -
-
- -
- {{ Form::label('email', 'Email', array('class' =>'col-sm-2 control-label')) }} -
- {{ Form::text('email', Input::old('name'), array('class' => 'form-control', 'placeholder' => 'john@gmail.com')) }} -
-
- -
- {{ Form::label('password', 'Password', array('class' =>'col-sm-2 control-label')) }} -
- {{ Form::password('password', array('class' => 'form-control', 'id' => 'password', 'placeholder' =>'Password')) }} -
-
- -
- {{ Form::label('password', 'Confirm', array('class' =>'col-sm-2 control-label')) }} -
- {{ Form::password('password2', array('class' => 'form-control', 'placeholder' =>'Password')) }} -
-
- -
- {{ Form::label('title', ' Title', array('class' => 'col-sm-2 control-label')) }} -
- {{ Form::select('title', array('0' => 'Select a title', '1' => 'Mentor', '2' => 'Mentee', '3' => 'Both'), Input::old('title'), array('class' => 'form-control')) }} -
-
- -
-
- {{ Form::submit('Register', array('class' => 'btn btn-primary btn-lg pull-right')) }} -
-
- - {{ Form::close() }} - -
-
- -

Already a Member?

Login

- - {{ Form::open(array('url', 'mentors', 'class' => 'form-horizontal', 'role' => 'form')) }} - -
- {{ Form::label('email', 'Email', array('class' =>'col-sm-4 control-label')) }} -
- {{ Form::text('email', Input::old('name'), array('class' => 'form-control', 'placeholder' => 'john@gmail.com')) }} -
-
- -
- {{ Form::label('password', 'Password', array('class' =>'col-sm-4 control-label')) }} -
- {{ Form::password('password', array('class' => 'form-control', 'id' => 'password', 'placeholder' =>'Password')) }} -
-
- -
-
- {{ Form::submit('Login', array('class' => 'btn btn-primary btn-lg pull-right')) }} -
-
- - - {{ Form::close() }} - -
- -
-
- - - - - - diff --git a/app/views/mentors/edit.blade.php b/app/views/mentors/edit.blade.php deleted file mode 100644 index 71d0424..0000000 --- a/app/views/mentors/edit.blade.php +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Welcome To Mentconnect - - - -
- - - -

Edit {{ $mentor->name }}

- - -{{ HTML::ul($errors->all()) }} - -{{ Form::model($mentor, array('route' => array('mentors.update', $mentor->id), 'method' => 'PUT')) }} - -
- {{ Form::label('name', 'Name') }} - {{ Form::text('name', null, array('class' => 'form-control')) }} -
- -
- {{ Form::label('email', 'Email') }} - {{ Form::email('email', null, array('class' => 'form-control')) }} -
- -
- {{ Form::label('title', 'Title') }} - {{ Form::select('title', array('0' => 'Select a title', '1' => 'Mentor', '2' => 'Mentee', '3' => 'Both'), null, array('class' => 'form-control')) }} -
- - {{ Form::submit('Edit the Mentor!', array('class' => 'btn btn-primary')) }} - -{{ Form::close() }} - -
- - \ No newline at end of file diff --git a/app/views/mentors/index.blade.php b/app/views/mentors/index.blade.php deleted file mode 100644 index d4af855..0000000 --- a/app/views/mentors/index.blade.php +++ /dev/null @@ -1,64 +0,0 @@ - - - - Welcome To Mentconnect - - - -
- - - -

All the Mentors

- - -@if (Session::has('message')) -
{{ Session::get('message') }}
-@endif - - - - - - - - - - - - - @foreach($mentors as $key => $value) - - - - - - - - - - @endforeach - -
IDNameEmailTitleActions
{{ $value->id }}{{ $value->name }}{{ $value->email }}{{ $value->title }} - {{ Form::open(array('url' => 'mentors/' . $value->id, 'class' => 'pull-right')) }} - {{ Form::hidden('method', 'DELETE') }} - {{ Form::submit('Delete this Mentor', array('class' => 'btn btn-warning')) }} - {{ Form::close() }} - - Show this mentor - - Edit this mentor - -
- -
- - \ No newline at end of file diff --git a/app/views/mentors/show.blade.php b/app/views/mentors/show.blade.php deleted file mode 100644 index d71e9b0..0000000 --- a/app/views/mentors/show.blade.php +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - Welcome To Mentconnect - - - -
- - - -

Showing {{ $mentor->name }}

- -
-

{{ $mentor->name }}

-

- Email: {{ $mentor->email }}
- Title: {{ $mentor->title }} -

-
- -
- - \ No newline at end of file diff --git a/bootstrap/compiled.php b/bootstrap/compiled.php deleted file mode 100644 index b8c1728..0000000 --- a/bootstrap/compiled.php +++ /dev/null @@ -1,10749 +0,0 @@ -bound($abstract) || $this->isAlias($abstract); - } - public function bound($abstract) - { - return isset($this[$abstract]) || isset($this->instances[$abstract]); - } - public function isAlias($name) - { - return isset($this->aliases[$name]); - } - public function bind($abstract, $concrete = null, $shared = false) - { - if (is_array($abstract)) { - list($abstract, $alias) = $this->extractAlias($abstract); - $this->alias($abstract, $alias); - } - $this->dropStaleInstances($abstract); - if (is_null($concrete)) { - $concrete = $abstract; - } - if (!$concrete instanceof Closure) { - $concrete = $this->getClosure($abstract, $concrete); - } - $bound = $this->bound($abstract); - $this->bindings[$abstract] = compact('concrete', 'shared'); - if ($bound) { - $this->rebound($abstract); - } - } - protected function getClosure($abstract, $concrete) - { - return function ($c, $parameters = array()) use($abstract, $concrete) { - $method = $abstract == $concrete ? 'build' : 'make'; - return $c->{$method}($concrete, $parameters); - }; - } - public function bindIf($abstract, $concrete = null, $shared = false) - { - if (!$this->bound($abstract)) { - $this->bind($abstract, $concrete, $shared); - } - } - public function singleton($abstract, $concrete = null) - { - return $this->bind($abstract, $concrete, true); - } - public function share(Closure $closure) - { - return function ($container) use($closure) { - static $object; - if (is_null($object)) { - $object = $closure($container); - } - return $object; - }; - } - public function bindShared($abstract, Closure $closure) - { - return $this->bind($abstract, $this->share($closure), true); - } - 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)); - } - } - protected function getExtender($abstract, Closure $closure) - { - $resolver = $this->bindings[$abstract]['concrete']; - return function ($container) use($resolver, $closure) { - return $closure($resolver($container), $container); - }; - } - public function instance($abstract, $instance) - { - if (is_array($abstract)) { - list($abstract, $alias) = $this->extractAlias($abstract); - $this->alias($abstract, $alias); - } - unset($this->aliases[$abstract]); - $bound = $this->bound($abstract); - $this->instances[$abstract] = $instance; - if ($bound) { - $this->rebound($abstract); - } - } - public function alias($abstract, $alias) - { - $this->aliases[$alias] = $abstract; - } - protected function extractAlias(array $definition) - { - return array(key($definition), current($definition)); - } - public function rebinding($abstract, Closure $callback) - { - $this->reboundCallbacks[$abstract][] = $callback; - if ($this->bound($abstract)) { - return $this->make($abstract); - } - } - public function refresh($abstract, $target, $method) - { - return $this->rebinding($abstract, function ($app, $instance) use($target, $method) { - $target->{$method}($instance); - }); - } - protected function rebound($abstract) - { - $instance = $this->make($abstract); - foreach ($this->getReboundCallbacks($abstract) as $callback) { - call_user_func($callback, $this, $instance); - } - } - protected function getReboundCallbacks($abstract) - { - if (isset($this->reboundCallbacks[$abstract])) { - return $this->reboundCallbacks[$abstract]; - } else { - return array(); - } - } - public function make($abstract, $parameters = array()) - { - $abstract = $this->getAlias($abstract); - $this->resolved[$abstract] = true; - if (isset($this->instances[$abstract])) { - return $this->instances[$abstract]; - } - $concrete = $this->getConcrete($abstract); - if ($this->isBuildable($concrete, $abstract)) { - $object = $this->build($concrete, $parameters); - } else { - $object = $this->make($concrete, $parameters); - } - if ($this->isShared($abstract)) { - $this->instances[$abstract] = $object; - } - $this->fireResolvingCallbacks($abstract, $object); - return $object; - } - protected function getConcrete($abstract) - { - if (!isset($this->bindings[$abstract])) { - if ($this->missingLeadingSlash($abstract) && isset($this->bindings['\\' . $abstract])) { - $abstract = '\\' . $abstract; - } - return $abstract; - } else { - return $this->bindings[$abstract]['concrete']; - } - } - protected function missingLeadingSlash($abstract) - { - return is_string($abstract) && strpos($abstract, '\\') !== 0; - } - public function build($concrete, $parameters = array()) - { - if ($concrete instanceof Closure) { - return $concrete($this, $parameters); - } - $reflector = new ReflectionClass($concrete); - if (!$reflector->isInstantiable()) { - $message = "Target [{$concrete}] is not instantiable."; - throw new BindingResolutionException($message); - } - $constructor = $reflector->getConstructor(); - if (is_null($constructor)) { - return new $concrete(); - } - $dependencies = $constructor->getParameters(); - $parameters = $this->keyParametersByArgument($dependencies, $parameters); - $instances = $this->getDependencies($dependencies, $parameters); - return $reflector->newInstanceArgs($instances); - } - protected function getDependencies($parameters, array $primitives = array()) - { - $dependencies = array(); - foreach ($parameters as $parameter) { - $dependency = $parameter->getClass(); - 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; - } - protected function resolveNonClass(ReflectionParameter $parameter) - { - if ($parameter->isDefaultValueAvailable()) { - return $parameter->getDefaultValue(); - } else { - $message = "Unresolvable dependency resolving [{$parameter}]."; - throw new BindingResolutionException($message); - } - } - protected function resolveClass(ReflectionParameter $parameter) - { - try { - return $this->make($parameter->getClass()->name); - } catch (BindingResolutionException $e) { - if ($parameter->isOptional()) { - return $parameter->getDefaultValue(); - } else { - throw $e; - } - } - } - 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; - } - public function resolving($abstract, Closure $callback) - { - $this->resolvingCallbacks[$abstract][] = $callback; - } - public function resolvingAny(Closure $callback) - { - $this->globalResolvingCallbacks[] = $callback; - } - protected function fireResolvingCallbacks($abstract, $object) - { - if (isset($this->resolvingCallbacks[$abstract])) { - $this->fireCallbackArray($object, $this->resolvingCallbacks[$abstract]); - } - $this->fireCallbackArray($object, $this->globalResolvingCallbacks); - } - protected function fireCallbackArray($object, array $callbacks) - { - foreach ($callbacks as $callback) { - call_user_func($callback, $object, $this); - } - } - 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; - } - protected function isBuildable($concrete, $abstract) - { - return $concrete === $abstract || $concrete instanceof Closure; - } - protected function getAlias($abstract) - { - return isset($this->aliases[$abstract]) ? $this->aliases[$abstract] : $abstract; - } - public function getBindings() - { - return $this->bindings; - } - protected function dropStaleInstances($abstract) - { - unset($this->instances[$abstract]); - unset($this->aliases[$abstract]); - } - public function forgetInstance($abstract) - { - unset($this->instances[$abstract]); - } - public function forgetInstances() - { - $this->instances = array(); - } - public function offsetExists($key) - { - return isset($this->bindings[$key]); - } - public function offsetGet($key) - { - return $this->make($key); - } - public function offsetSet($key, $value) - { - if (!$value instanceof Closure) { - $value = function () use($value) { - return $value; - }; - } - $this->bind($key, $value); - } - public function offsetUnset($key) - { - unset($this->bindings[$key]); - unset($this->instances[$key]); - } -} -namespace Symfony\Component\HttpKernel; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -interface HttpKernelInterface -{ - const MASTER_REQUEST = 1; - const SUB_REQUEST = 2; - public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = true); -} -namespace Symfony\Component\HttpKernel; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -interface TerminableInterface -{ - public function terminate(Request $request, Response $response); -} -namespace Illuminate\Support\Contracts; - -interface ResponsePreparerInterface -{ - public function prepareResponse($value); - public function readyForResponses(); -} -namespace Illuminate\Foundation; - -use Closure; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Illuminate\Config\FileLoader; -use Illuminate\Container\Container; -use Illuminate\Filesystem\Filesystem; -use Illuminate\Support\Facades\Facade; -use Illuminate\Events\EventServiceProvider; -use Illuminate\Routing\RoutingServiceProvider; -use Illuminate\Exception\ExceptionServiceProvider; -use Illuminate\Config\FileEnvironmentVariablesLoader; -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpKernel\TerminableInterface; -use Symfony\Component\HttpKernel\Exception\HttpException; -use Symfony\Component\Debug\Exception\FatalErrorException; -use Illuminate\Support\Contracts\ResponsePreparerInterface; -use Symfony\Component\HttpFoundation\Request as SymfonyRequest; -use Symfony\Component\HttpFoundation\Response as SymfonyResponse; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -class Application extends Container implements HttpKernelInterface, TerminableInterface, ResponsePreparerInterface -{ - const VERSION = '4.2.1'; - protected $booted = false; - protected $bootingCallbacks = array(); - protected $bootedCallbacks = array(); - protected $finishCallbacks = array(); - protected $shutdownCallbacks = array(); - protected $middlewares = array(); - protected $serviceProviders = array(); - protected $loadedProviders = array(); - protected $deferredServices = array(); - protected static $requestClass = 'Illuminate\\Http\\Request'; - public function __construct(Request $request = null) - { - $this->registerBaseBindings($request ?: $this->createNewRequest()); - $this->registerBaseServiceProviders(); - $this->registerBaseMiddlewares(); - } - protected function createNewRequest() - { - return forward_static_call(array(static::$requestClass, 'createFromGlobals')); - } - protected function registerBaseBindings($request) - { - $this->instance('request', $request); - $this->instance('Illuminate\\Container\\Container', $this); - } - protected function registerBaseServiceProviders() - { - foreach (array('Event', 'Exception', 'Routing') as $name) { - $this->{"register{$name}Provider"}(); - } - } - protected function registerExceptionProvider() - { - $this->register(new ExceptionServiceProvider($this)); - } - protected function registerRoutingProvider() - { - $this->register(new RoutingServiceProvider($this)); - } - protected function registerEventProvider() - { - $this->register(new EventServiceProvider($this)); - } - public function bindInstallPaths(array $paths) - { - $this->instance('path', realpath($paths['app'])); - foreach (array_except($paths, array('app')) as $key => $value) { - $this->instance("path.{$key}", realpath($value)); - } - } - public static function getBootstrapFile() - { - return '/var/www/vhosts/mentors/htdocs/vendor/laravel/framework/src/Illuminate/Foundation' . '/start.php'; - } - public function startExceptionHandling() - { - $this['exception']->register($this->environment()); - $this['exception']->setDebug($this['config']['app.debug']); - } - public function environment() - { - if (count(func_get_args()) > 0) { - return in_array($this['env'], func_get_args()); - } else { - return $this['env']; - } - } - public function isLocal() - { - return $this['env'] == 'local'; - } - public function detectEnvironment($envs) - { - $args = isset($_SERVER['argv']) ? $_SERVER['argv'] : null; - return $this['env'] = with(new EnvironmentDetector())->detect($envs, $args); - } - public function runningInConsole() - { - return php_sapi_name() == 'cli'; - } - public function runningUnitTests() - { - return $this['env'] == 'testing'; - } - public function forceRegister($provider, $options = array()) - { - return $this->register($provider, $options, true); - } - public function register($provider, $options = array(), $force = false) - { - if ($registered = $this->getRegistered($provider) && !$force) { - return $registered; - } - if (is_string($provider)) { - $provider = $this->resolveProviderClass($provider); - } - $provider->register(); - foreach ($options as $key => $value) { - $this[$key] = $value; - } - $this->markAsRegistered($provider); - if ($this->booted) { - $provider->boot(); - } - return $provider; - } - public function getRegistered($provider) - { - $name = is_string($provider) ? $provider : get_class($provider); - if (array_key_exists($name, $this->loadedProviders)) { - return array_first($this->serviceProviders, function ($key, $value) use($name) { - return get_class($value) == $name; - }); - } - } - public function resolveProviderClass($provider) - { - return new $provider($this); - } - protected function markAsRegistered($provider) - { - $this['events']->fire($class = get_class($provider), array($provider)); - $this->serviceProviders[] = $provider; - $this->loadedProviders[$class] = true; - } - public function loadDeferredProviders() - { - foreach ($this->deferredServices as $service => $provider) { - $this->loadDeferredProvider($service); - } - $this->deferredServices = array(); - } - protected function loadDeferredProvider($service) - { - $provider = $this->deferredServices[$service]; - if (!isset($this->loadedProviders[$provider])) { - $this->registerDeferredProvider($provider, $service); - } - } - public function registerDeferredProvider($provider, $service = null) - { - if ($service) { - unset($this->deferredServices[$service]); - } - $this->register($instance = new $provider($this)); - if (!$this->booted) { - $this->booting(function () use($instance) { - $instance->boot(); - }); - } - } - public function make($abstract, $parameters = array()) - { - $abstract = $this->getAlias($abstract); - if (isset($this->deferredServices[$abstract])) { - $this->loadDeferredProvider($abstract); - } - return parent::make($abstract, $parameters); - } - public function before($callback) - { - return $this['router']->before($callback); - } - public function after($callback) - { - return $this['router']->after($callback); - } - public function finish($callback) - { - $this->finishCallbacks[] = $callback; - } - public function shutdown($callback = null) - { - if (is_null($callback)) { - $this->fireAppCallbacks($this->shutdownCallbacks); - } else { - $this->shutdownCallbacks[] = $callback; - } - } - public function useArraySessions(Closure $callback) - { - $this->bind('session.reject', function () use($callback) { - return $callback; - }); - } - public function isBooted() - { - return $this->booted; - } - public function boot() - { - if ($this->booted) { - return; - } - array_walk($this->serviceProviders, function ($p) { - $p->boot(); - }); - $this->bootApplication(); - } - protected function bootApplication() - { - $this->fireAppCallbacks($this->bootingCallbacks); - $this->booted = true; - $this->fireAppCallbacks($this->bootedCallbacks); - } - public function booting($callback) - { - $this->bootingCallbacks[] = $callback; - } - public function booted($callback) - { - $this->bootedCallbacks[] = $callback; - if ($this->isBooted()) { - $this->fireAppCallbacks(array($callback)); - } - } - public function run(SymfonyRequest $request = null) - { - $request = $request ?: $this['request']; - $response = with($stack = $this->getStackedClient())->handle($request); - $response->send(); - $stack->terminate($request, $response); - } - protected function getStackedClient() - { - $sessionReject = $this->bound('session.reject') ? $this['session.reject'] : null; - $client = with(new \Stack\Builder())->push('Illuminate\\Cookie\\Guard', $this['encrypter'])->push('Illuminate\\Cookie\\Queue', $this['cookie'])->push('Illuminate\\Session\\Middleware', $this['session'], $sessionReject); - $this->mergeCustomMiddlewares($client); - return $client->resolve($this); - } - protected function mergeCustomMiddlewares(\Stack\Builder $stack) - { - foreach ($this->middlewares as $middleware) { - list($class, $parameters) = array_values($middleware); - array_unshift($parameters, $class); - call_user_func_array(array($stack, 'push'), $parameters); - } - } - protected function registerBaseMiddlewares() - { - - } - public function middleware($class, array $parameters = array()) - { - $this->middlewares[] = compact('class', 'parameters'); - return $this; - } - public function forgetMiddleware($class) - { - $this->middlewares = array_filter($this->middlewares, function ($m) use($class) { - return $m['class'] != $class; - }); - } - public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - try { - $this->refreshRequest($request = Request::createFromBase($request)); - $this->boot(); - return $this->dispatch($request); - } catch (\Exception $e) { - if ($this->runningUnitTests()) { - throw $e; - } - return $this['exception']->handleException($e); - } - } - public function dispatch(Request $request) - { - if ($this->isDownForMaintenance()) { - $response = $this['events']->until('illuminate.app.down'); - if (!is_null($response)) { - return $this->prepareResponse($response, $request); - } - } - if ($this->runningUnitTests() && !$this['session']->isStarted()) { - $this['session']->start(); - } - return $this['router']->dispatch($this->prepareRequest($request)); - } - public function terminate(SymfonyRequest $request, SymfonyResponse $response) - { - $this->callFinishCallbacks($request, $response); - $this->shutdown(); - } - protected function refreshRequest(Request $request) - { - $this->instance('request', $request); - Facade::clearResolvedInstance('request'); - } - public function callFinishCallbacks(SymfonyRequest $request, SymfonyResponse $response) - { - foreach ($this->finishCallbacks as $callback) { - call_user_func($callback, $request, $response); - } - } - protected function fireAppCallbacks(array $callbacks) - { - foreach ($callbacks as $callback) { - call_user_func($callback, $this); - } - } - public function prepareRequest(Request $request) - { - if (!is_null($this['config']['session.driver']) && !$request->hasSession()) { - $request->setSession($this['session']->driver()); - } - return $request; - } - public function prepareResponse($value) - { - if (!$value instanceof SymfonyResponse) { - $value = new Response($value); - } - return $value->prepare($this['request']); - } - public function readyForResponses() - { - return $this->booted; - } - public function isDownForMaintenance() - { - return file_exists($this['config']['app.manifest'] . '/down'); - } - public function down(Closure $callback) - { - $this['events']->listen('illuminate.app.down', $callback); - } - public function abort($code, $message = '', array $headers = array()) - { - if ($code == 404) { - throw new NotFoundHttpException($message); - } else { - throw new HttpException($code, $message, null, $headers); - } - } - public function missing(Closure $callback) - { - $this->error(function (NotFoundHttpException $e) use($callback) { - return call_user_func($callback, $e); - }); - } - public function error(Closure $callback) - { - $this['exception']->error($callback); - } - public function pushError(Closure $callback) - { - $this['exception']->pushError($callback); - } - public function fatal(Closure $callback) - { - $this->error(function (FatalErrorException $e) use($callback) { - return call_user_func($callback, $e); - }); - } - public function getConfigLoader() - { - return new FileLoader(new Filesystem(), $this['path'] . '/config'); - } - public function getEnvironmentVariablesLoader() - { - return new FileEnvironmentVariablesLoader(new Filesystem(), $this['path.base']); - } - public function getProviderRepository() - { - $manifest = $this['config']['app.manifest']; - return new ProviderRepository(new Filesystem(), $manifest); - } - public function getLoadedProviders() - { - return $this->loadedProviders; - } - public function setDeferredServices(array $services) - { - $this->deferredServices = $services; - } - public function isDeferredService($service) - { - return isset($this->deferredServices[$service]); - } - public static function requestClass($class = null) - { - if (!is_null($class)) { - static::$requestClass = $class; - } - return static::$requestClass; - } - public function setRequestForConsoleEnvironment() - { - $url = $this['config']->get('app.url', 'http://localhost'); - $parameters = array($url, 'GET', array(), array(), array(), $_SERVER); - $this->refreshRequest(static::onRequest('create', $parameters)); - } - public static function onRequest($method, $parameters = array()) - { - return forward_static_call_array(array(static::requestClass(), $method), $parameters); - } - public function getLocale() - { - return $this['config']->get('app.locale'); - } - public function setLocale($locale) - { - $this['config']->set('app.locale', $locale); - $this['translator']->setLocale($locale); - $this['events']->fire('locale.changed', array($locale)); - } - public function registerCoreContainerAliases() - { - $aliases = array('app' => 'Illuminate\\Foundation\\Application', 'artisan' => 'Illuminate\\Console\\Application', 'auth' => 'Illuminate\\Auth\\AuthManager', 'auth.reminder.repository' => 'Illuminate\\Auth\\Reminders\\ReminderRepositoryInterface', 'blade.compiler' => 'Illuminate\\View\\Compilers\\BladeCompiler', 'cache' => 'Illuminate\\Cache\\CacheManager', 'cache.store' => 'Illuminate\\Cache\\Repository', 'config' => 'Illuminate\\Config\\Repository', 'cookie' => 'Illuminate\\Cookie\\CookieJar', 'encrypter' => 'Illuminate\\Encryption\\Encrypter', 'db' => 'Illuminate\\Database\\DatabaseManager', 'events' => 'Illuminate\\Events\\Dispatcher', 'files' => 'Illuminate\\Filesystem\\Filesystem', 'form' => 'Illuminate\\Html\\FormBuilder', 'hash' => 'Illuminate\\Hashing\\HasherInterface', 'html' => 'Illuminate\\Html\\HtmlBuilder', 'translator' => 'Illuminate\\Translation\\Translator', 'log' => 'Illuminate\\Log\\Writer', 'mailer' => 'Illuminate\\Mail\\Mailer', 'paginator' => 'Illuminate\\Pagination\\Factory', 'auth.reminder' => 'Illuminate\\Auth\\Reminders\\PasswordBroker', 'queue' => 'Illuminate\\Queue\\QueueManager', 'redirect' => 'Illuminate\\Routing\\Redirector', 'redis' => 'Illuminate\\Redis\\Database', 'request' => 'Illuminate\\Http\\Request', 'router' => 'Illuminate\\Routing\\Router', 'session' => 'Illuminate\\Session\\SessionManager', 'session.store' => 'Illuminate\\Session\\Store', 'remote' => 'Illuminate\\Remote\\RemoteManager', 'url' => 'Illuminate\\Routing\\UrlGenerator', 'validator' => 'Illuminate\\Validation\\Factory', 'view' => 'Illuminate\\View\\Factory'); - foreach ($aliases as $key => $alias) { - $this->alias($key, $alias); - } - } - public function __get($key) - { - return $this[$key]; - } - public function __set($key, $value) - { - $this[$key] = $value; - } -} -namespace Illuminate\Foundation; - -use Closure; -class EnvironmentDetector -{ - public function detect($environments, $consoleArgs = null) - { - if ($consoleArgs) { - return $this->detectConsoleEnvironment($environments, $consoleArgs); - } else { - return $this->detectWebEnvironment($environments); - } - } - protected function detectWebEnvironment($environments) - { - if ($environments instanceof Closure) { - return call_user_func($environments); - } - foreach ($environments as $environment => $hosts) { - foreach ((array) $hosts as $host) { - if ($this->isMachine($host)) { - return $environment; - } - } - } - return 'production'; - } - protected function detectConsoleEnvironment($environments, array $args) - { - if (!is_null($value = $this->getEnvironmentArgument($args))) { - return head(array_slice(explode('=', $value), 1)); - } else { - return $this->detectWebEnvironment($environments); - } - } - protected function getEnvironmentArgument(array $args) - { - return array_first($args, function ($k, $v) { - return starts_with($v, '--env'); - }); - } - public function isMachine($name) - { - return str_is($name, gethostname()); - } -} -namespace Illuminate\Http; - -use Symfony\Component\HttpFoundation\ParameterBag; -use Symfony\Component\HttpFoundation\Request as SymfonyRequest; -class Request extends SymfonyRequest -{ - protected $json; - protected $sessionStore; - public function instance() - { - return $this; - } - public function method() - { - return $this->getMethod(); - } - public function root() - { - return rtrim($this->getSchemeAndHttpHost() . $this->getBaseUrl(), '/'); - } - public function url() - { - return rtrim(preg_replace('/\\?.*/', '', $this->getUri()), '/'); - } - public function fullUrl() - { - $query = $this->getQueryString(); - return $query ? $this->url() . '?' . $query : $this->url(); - } - public function path() - { - $pattern = trim($this->getPathInfo(), '/'); - return $pattern == '' ? '/' : $pattern; - } - public function decodedPath() - { - return rawurldecode($this->path()); - } - public function segment($index, $default = null) - { - return array_get($this->segments(), $index - 1, $default); - } - public function segments() - { - $segments = explode('/', $this->path()); - return array_values(array_filter($segments, function ($v) { - return $v != ''; - })); - } - public function is() - { - foreach (func_get_args() as $pattern) { - if (str_is($pattern, urldecode($this->path()))) { - return true; - } - } - return false; - } - public function ajax() - { - return $this->isXmlHttpRequest(); - } - public function secure() - { - return $this->isSecure(); - } - public function exists($key) - { - $keys = is_array($key) ? $key : func_get_args(); - $input = $this->all(); - foreach ($keys as $value) { - if (!array_key_exists($value, $input)) { - return false; - } - } - return true; - } - public function has($key) - { - $keys = is_array($key) ? $key : func_get_args(); - foreach ($keys as $value) { - if ($this->isEmptyString($value)) { - return false; - } - } - return true; - } - protected function isEmptyString($key) - { - $boolOrArray = is_bool($this->input($key)) || is_array($this->input($key)); - return !$boolOrArray && trim((string) $this->input($key)) === ''; - } - public function all() - { - return array_merge_recursive($this->input(), $this->files->all()); - } - public function input($key = null, $default = null) - { - $input = $this->getInputSource()->all() + $this->query->all(); - return array_get($input, $key, $default); - } - public function only($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - return array_only($this->input(), $keys) + array_fill_keys($keys, null); - } - public function except($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - $results = $this->input(); - foreach ($keys as $key) { - array_forget($results, $key); - } - return $results; - } - public function query($key = null, $default = null) - { - return $this->retrieveItem('query', $key, $default); - } - public function hasCookie($key) - { - return !is_null($this->cookie($key)); - } - public function cookie($key = null, $default = null) - { - return $this->retrieveItem('cookies', $key, $default); - } - public function file($key = null, $default = null) - { - return array_get($this->files->all(), $key, $default); - } - public function hasFile($key) - { - if (is_array($file = $this->file($key))) { - $file = head($file); - } - return $file instanceof \SplFileInfo && $file->getPath() != ''; - } - public function header($key = null, $default = null) - { - return $this->retrieveItem('headers', $key, $default); - } - public function server($key = null, $default = null) - { - return $this->retrieveItem('server', $key, $default); - } - public function old($key = null, $default = null) - { - return $this->session()->getOldInput($key, $default); - } - public function flash($filter = null, $keys = array()) - { - $flash = !is_null($filter) ? $this->{$filter}($keys) : $this->input(); - $this->session()->flashInput($flash); - } - public function flashOnly($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - return $this->flash('only', $keys); - } - public function flashExcept($keys) - { - $keys = is_array($keys) ? $keys : func_get_args(); - return $this->flash('except', $keys); - } - public function flush() - { - $this->session()->flashInput(array()); - } - protected function retrieveItem($source, $key, $default) - { - if (is_null($key)) { - return $this->{$source}->all(); - } else { - return $this->{$source}->get($key, $default, true); - } - } - public function merge(array $input) - { - $this->getInputSource()->add($input); - } - public function replace(array $input) - { - $this->getInputSource()->replace($input); - } - public function json($key = null, $default = null) - { - if (!isset($this->json)) { - $this->json = new ParameterBag((array) json_decode($this->getContent(), true)); - } - if (is_null($key)) { - return $this->json; - } - return array_get($this->json->all(), $key, $default); - } - protected function getInputSource() - { - if ($this->isJson()) { - return $this->json(); - } - return $this->getMethod() == 'GET' ? $this->query : $this->request; - } - public function isJson() - { - return str_contains($this->header('CONTENT_TYPE'), '/json'); - } - public function wantsJson() - { - $acceptable = $this->getAcceptableContentTypes(); - return isset($acceptable[0]) && $acceptable[0] == 'application/json'; - } - public function format($default = 'html') - { - foreach ($this->getAcceptableContentTypes() as $type) { - if ($format = $this->getFormat($type)) { - return $format; - } - } - return $default; - } - public static function createFromBase(SymfonyRequest $request) - { - if ($request instanceof static) { - return $request; - } - return with(new static())->duplicate($request->query->all(), $request->request->all(), $request->attributes->all(), $request->cookies->all(), $request->files->all(), $request->server->all()); - } - public function session() - { - if (!$this->hasSession()) { - throw new \RuntimeException('Session store not set on request.'); - } - return $this->getSession(); - } -} -namespace Illuminate\Http; - -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request as SymfonyRequest; -class FrameGuard implements HttpKernelInterface -{ - protected $app; - public function __construct(HttpKernelInterface $app) - { - $this->app = $app; - } - public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - $response = $this->app->handle($request, $type, $catch); - $response->headers->set('X-Frame-Options', 'SAMEORIGIN', false); - return $response; - } -} -namespace Symfony\Component\HttpFoundation; - -use Symfony\Component\HttpFoundation\Session\SessionInterface; -class Request -{ - const HEADER_CLIENT_IP = 'client_ip'; - const HEADER_CLIENT_HOST = 'client_host'; - const HEADER_CLIENT_PROTO = 'client_proto'; - const HEADER_CLIENT_PORT = 'client_port'; - protected static $trustedProxies = array(); - protected static $trustedHostPatterns = array(); - protected static $trustedHosts = array(); - protected static $trustedHeaders = array(self::HEADER_CLIENT_IP => 'X_FORWARDED_FOR', self::HEADER_CLIENT_HOST => 'X_FORWARDED_HOST', self::HEADER_CLIENT_PROTO => 'X_FORWARDED_PROTO', self::HEADER_CLIENT_PORT => 'X_FORWARDED_PORT'); - protected static $httpMethodParameterOverride = false; - public $attributes; - public $request; - public $query; - public $server; - public $files; - public $cookies; - public $headers; - protected $content; - protected $languages; - protected $charsets; - protected $encodings; - protected $acceptableContentTypes; - protected $pathInfo; - protected $requestUri; - protected $baseUrl; - protected $basePath; - protected $method; - protected $format; - protected $session; - protected $locale; - protected $defaultLocale = 'en'; - protected static $formats; - protected static $requestFactory; - public function __construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null) - { - $this->initialize($query, $request, $attributes, $cookies, $files, $server, $content); - } - public function initialize(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null) - { - $this->request = new ParameterBag($request); - $this->query = new ParameterBag($query); - $this->attributes = new ParameterBag($attributes); - $this->cookies = new ParameterBag($cookies); - $this->files = new FileBag($files); - $this->server = new ServerBag($server); - $this->headers = new HeaderBag($this->server->getHeaders()); - $this->content = $content; - $this->languages = null; - $this->charsets = null; - $this->encodings = null; - $this->acceptableContentTypes = null; - $this->pathInfo = null; - $this->requestUri = null; - $this->baseUrl = null; - $this->basePath = null; - $this->method = null; - $this->format = null; - } - public static function createFromGlobals() - { - $request = self::createRequestFromFactory($_GET, $_POST, array(), $_COOKIE, $_FILES, $_SERVER); - if (0 === strpos($request->headers->get('CONTENT_TYPE'), 'application/x-www-form-urlencoded') && in_array(strtoupper($request->server->get('REQUEST_METHOD', 'GET')), array('PUT', 'DELETE', 'PATCH'))) { - parse_str($request->getContent(), $data); - $request->request = new ParameterBag($data); - } - return $request; - } - public static function create($uri, $method = 'GET', $parameters = array(), $cookies = array(), $files = array(), $server = array(), $content = null) - { - $server = array_replace(array('SERVER_NAME' => 'localhost', 'SERVER_PORT' => 80, 'HTTP_HOST' => 'localhost', 'HTTP_USER_AGENT' => 'Symfony/2.X', 'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5', 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'REMOTE_ADDR' => '127.0.0.1', 'SCRIPT_NAME' => '', 'SCRIPT_FILENAME' => '', 'SERVER_PROTOCOL' => 'HTTP/1.1', 'REQUEST_TIME' => time()), $server); - $server['PATH_INFO'] = ''; - $server['REQUEST_METHOD'] = strtoupper($method); - $components = parse_url($uri); - if (isset($components['host'])) { - $server['SERVER_NAME'] = $components['host']; - $server['HTTP_HOST'] = $components['host']; - } - if (isset($components['scheme'])) { - if ('https' === $components['scheme']) { - $server['HTTPS'] = 'on'; - $server['SERVER_PORT'] = 443; - } else { - unset($server['HTTPS']); - $server['SERVER_PORT'] = 80; - } - } - if (isset($components['port'])) { - $server['SERVER_PORT'] = $components['port']; - $server['HTTP_HOST'] = $server['HTTP_HOST'] . ':' . $components['port']; - } - if (isset($components['user'])) { - $server['PHP_AUTH_USER'] = $components['user']; - } - if (isset($components['pass'])) { - $server['PHP_AUTH_PW'] = $components['pass']; - } - if (!isset($components['path'])) { - $components['path'] = '/'; - } - switch (strtoupper($method)) { - case 'POST': - case 'PUT': - case 'DELETE': - if (!isset($server['CONTENT_TYPE'])) { - $server['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; - } - case 'PATCH': - $request = $parameters; - $query = array(); - break; - default: - $request = array(); - $query = $parameters; - break; - } - $queryString = ''; - if (isset($components['query'])) { - parse_str(html_entity_decode($components['query']), $qs); - if ($query) { - $query = array_replace($qs, $query); - $queryString = http_build_query($query, '', '&'); - } else { - $query = $qs; - $queryString = $components['query']; - } - } elseif ($query) { - $queryString = http_build_query($query, '', '&'); - } - $server['REQUEST_URI'] = $components['path'] . ('' !== $queryString ? '?' . $queryString : ''); - $server['QUERY_STRING'] = $queryString; - return self::createRequestFromFactory($query, $request, array(), $cookies, $files, $server, $content); - } - public static function setFactory($callable) - { - self::$requestFactory = $callable; - } - public function duplicate(array $query = null, array $request = null, array $attributes = null, array $cookies = null, array $files = null, array $server = null) - { - $dup = clone $this; - if ($query !== null) { - $dup->query = new ParameterBag($query); - } - if ($request !== null) { - $dup->request = new ParameterBag($request); - } - if ($attributes !== null) { - $dup->attributes = new ParameterBag($attributes); - } - if ($cookies !== null) { - $dup->cookies = new ParameterBag($cookies); - } - if ($files !== null) { - $dup->files = new FileBag($files); - } - if ($server !== null) { - $dup->server = new ServerBag($server); - $dup->headers = new HeaderBag($dup->server->getHeaders()); - } - $dup->languages = null; - $dup->charsets = null; - $dup->encodings = null; - $dup->acceptableContentTypes = null; - $dup->pathInfo = null; - $dup->requestUri = null; - $dup->baseUrl = null; - $dup->basePath = null; - $dup->method = null; - $dup->format = null; - if (!$dup->get('_format') && $this->get('_format')) { - $dup->attributes->set('_format', $this->get('_format')); - } - if (!$dup->getRequestFormat(null)) { - $dup->setRequestFormat($format = $this->getRequestFormat(null)); - } - return $dup; - } - public function __clone() - { - $this->query = clone $this->query; - $this->request = clone $this->request; - $this->attributes = clone $this->attributes; - $this->cookies = clone $this->cookies; - $this->files = clone $this->files; - $this->server = clone $this->server; - $this->headers = clone $this->headers; - } - public function __toString() - { - return sprintf('%s %s %s', $this->getMethod(), $this->getRequestUri(), $this->server->get('SERVER_PROTOCOL')) . ' -' . $this->headers . ' -' . $this->getContent(); - } - public function overrideGlobals() - { - $_GET = $this->query->all(); - $_POST = $this->request->all(); - $_SERVER = $this->server->all(); - $_COOKIE = $this->cookies->all(); - foreach ($this->headers->all() as $key => $value) { - $key = strtoupper(str_replace('-', '_', $key)); - if (in_array($key, array('CONTENT_TYPE', 'CONTENT_LENGTH'))) { - $_SERVER[$key] = implode(', ', $value); - } else { - $_SERVER['HTTP_' . $key] = implode(', ', $value); - } - } - $request = array('g' => $_GET, 'p' => $_POST, 'c' => $_COOKIE); - $requestOrder = ini_get('request_order') ?: ini_get('variables_order'); - $requestOrder = preg_replace('#[^cgp]#', '', strtolower($requestOrder)) ?: 'gp'; - $_REQUEST = array(); - foreach (str_split($requestOrder) as $order) { - $_REQUEST = array_merge($_REQUEST, $request[$order]); - } - } - public static function setTrustedProxies(array $proxies) - { - self::$trustedProxies = $proxies; - } - public static function getTrustedProxies() - { - return self::$trustedProxies; - } - public static function setTrustedHosts(array $hostPatterns) - { - self::$trustedHostPatterns = array_map(function ($hostPattern) { - return sprintf('{%s}i', str_replace('}', '\\}', $hostPattern)); - }, $hostPatterns); - self::$trustedHosts = array(); - } - public static function getTrustedHosts() - { - return self::$trustedHostPatterns; - } - public static function setTrustedHeaderName($key, $value) - { - if (!array_key_exists($key, self::$trustedHeaders)) { - throw new \InvalidArgumentException(sprintf('Unable to set the trusted header name for key "%s".', $key)); - } - self::$trustedHeaders[$key] = $value; - } - public static function getTrustedHeaderName($key) - { - if (!array_key_exists($key, self::$trustedHeaders)) { - throw new \InvalidArgumentException(sprintf('Unable to get the trusted header name for key "%s".', $key)); - } - return self::$trustedHeaders[$key]; - } - public static function normalizeQueryString($qs) - { - if ('' == $qs) { - return ''; - } - $parts = array(); - $order = array(); - foreach (explode('&', $qs) as $param) { - if ('' === $param || '=' === $param[0]) { - continue; - } - $keyValuePair = explode('=', $param, 2); - $parts[] = isset($keyValuePair[1]) ? rawurlencode(urldecode($keyValuePair[0])) . '=' . rawurlencode(urldecode($keyValuePair[1])) : rawurlencode(urldecode($keyValuePair[0])); - $order[] = urldecode($keyValuePair[0]); - } - array_multisort($order, SORT_ASC, $parts); - return implode('&', $parts); - } - public static function enableHttpMethodParameterOverride() - { - self::$httpMethodParameterOverride = true; - } - public static function getHttpMethodParameterOverride() - { - return self::$httpMethodParameterOverride; - } - public function get($key, $default = null, $deep = false) - { - return $this->query->get($key, $this->attributes->get($key, $this->request->get($key, $default, $deep), $deep), $deep); - } - public function getSession() - { - return $this->session; - } - public function hasPreviousSession() - { - return $this->hasSession() && $this->cookies->has($this->session->getName()); - } - public function hasSession() - { - return null !== $this->session; - } - public function setSession(SessionInterface $session) - { - $this->session = $session; - } - public function getClientIps() - { - $ip = $this->server->get('REMOTE_ADDR'); - if (!self::$trustedProxies) { - return array($ip); - } - if (!self::$trustedHeaders[self::HEADER_CLIENT_IP] || !$this->headers->has(self::$trustedHeaders[self::HEADER_CLIENT_IP])) { - return array($ip); - } - $clientIps = array_map('trim', explode(',', $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_IP]))); - $clientIps[] = $ip; - $ip = $clientIps[0]; - foreach ($clientIps as $key => $clientIp) { - if (IpUtils::checkIp($clientIp, self::$trustedProxies)) { - unset($clientIps[$key]); - } - } - return $clientIps ? array_reverse($clientIps) : array($ip); - } - public function getClientIp() - { - $ipAddresses = $this->getClientIps(); - return $ipAddresses[0]; - } - public function getScriptName() - { - return $this->server->get('SCRIPT_NAME', $this->server->get('ORIG_SCRIPT_NAME', '')); - } - public function getPathInfo() - { - if (null === $this->pathInfo) { - $this->pathInfo = $this->preparePathInfo(); - } - return $this->pathInfo; - } - public function getBasePath() - { - if (null === $this->basePath) { - $this->basePath = $this->prepareBasePath(); - } - return $this->basePath; - } - public function getBaseUrl() - { - if (null === $this->baseUrl) { - $this->baseUrl = $this->prepareBaseUrl(); - } - return $this->baseUrl; - } - public function getScheme() - { - return $this->isSecure() ? 'https' : 'http'; - } - public function getPort() - { - if (self::$trustedProxies) { - if (self::$trustedHeaders[self::HEADER_CLIENT_PORT] && ($port = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PORT]))) { - return $port; - } - if (self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && 'https' === $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO], 'http')) { - return 443; - } - } - if ($host = $this->headers->get('HOST')) { - if (false !== ($pos = strrpos($host, ':'))) { - return intval(substr($host, $pos + 1)); - } - return 'https' === $this->getScheme() ? 443 : 80; - } - return $this->server->get('SERVER_PORT'); - } - public function getUser() - { - return $this->server->get('PHP_AUTH_USER'); - } - public function getPassword() - { - return $this->server->get('PHP_AUTH_PW'); - } - public function getUserInfo() - { - $userinfo = $this->getUser(); - $pass = $this->getPassword(); - if ('' != $pass) { - $userinfo .= ":{$pass}"; - } - return $userinfo; - } - public function getHttpHost() - { - $scheme = $this->getScheme(); - $port = $this->getPort(); - if ('http' == $scheme && $port == 80 || 'https' == $scheme && $port == 443) { - return $this->getHost(); - } - return $this->getHost() . ':' . $port; - } - public function getRequestUri() - { - if (null === $this->requestUri) { - $this->requestUri = $this->prepareRequestUri(); - } - return $this->requestUri; - } - public function getSchemeAndHttpHost() - { - return $this->getScheme() . '://' . $this->getHttpHost(); - } - public function getUri() - { - if (null !== ($qs = $this->getQueryString())) { - $qs = '?' . $qs; - } - return $this->getSchemeAndHttpHost() . $this->getBaseUrl() . $this->getPathInfo() . $qs; - } - public function getUriForPath($path) - { - return $this->getSchemeAndHttpHost() . $this->getBaseUrl() . $path; - } - public function getQueryString() - { - $qs = static::normalizeQueryString($this->server->get('QUERY_STRING')); - return '' === $qs ? null : $qs; - } - public function isSecure() - { - if (self::$trustedProxies && self::$trustedHeaders[self::HEADER_CLIENT_PROTO] && ($proto = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_PROTO]))) { - return in_array(strtolower(current(explode(',', $proto))), array('https', 'on', 'ssl', '1')); - } - return 'on' == strtolower($this->server->get('HTTPS')) || 1 == $this->server->get('HTTPS'); - } - public function getHost() - { - if (self::$trustedProxies && self::$trustedHeaders[self::HEADER_CLIENT_HOST] && ($host = $this->headers->get(self::$trustedHeaders[self::HEADER_CLIENT_HOST]))) { - $elements = explode(',', $host); - $host = $elements[count($elements) - 1]; - } elseif (!($host = $this->headers->get('HOST'))) { - if (!($host = $this->server->get('SERVER_NAME'))) { - $host = $this->server->get('SERVER_ADDR', ''); - } - } - $host = strtolower(preg_replace('/:\\d+$/', '', trim($host))); - if ($host && !preg_match('/^\\[?(?:[a-zA-Z0-9-:\\]_]+\\.?)+$/', $host)) { - throw new \UnexpectedValueException(sprintf('Invalid Host "%s"', $host)); - } - if (count(self::$trustedHostPatterns) > 0) { - if (in_array($host, self::$trustedHosts)) { - return $host; - } - foreach (self::$trustedHostPatterns as $pattern) { - if (preg_match($pattern, $host)) { - self::$trustedHosts[] = $host; - return $host; - } - } - throw new \UnexpectedValueException(sprintf('Untrusted Host "%s"', $host)); - } - return $host; - } - public function setMethod($method) - { - $this->method = null; - $this->server->set('REQUEST_METHOD', $method); - } - public function getMethod() - { - if (null === $this->method) { - $this->method = strtoupper($this->server->get('REQUEST_METHOD', 'GET')); - if ('POST' === $this->method) { - if ($method = $this->headers->get('X-HTTP-METHOD-OVERRIDE')) { - $this->method = strtoupper($method); - } elseif (self::$httpMethodParameterOverride) { - $this->method = strtoupper($this->request->get('_method', $this->query->get('_method', 'POST'))); - } - } - } - return $this->method; - } - public function getRealMethod() - { - return strtoupper($this->server->get('REQUEST_METHOD', 'GET')); - } - public function getMimeType($format) - { - if (null === static::$formats) { - static::initializeFormats(); - } - return isset(static::$formats[$format]) ? static::$formats[$format][0] : null; - } - public function getFormat($mimeType) - { - if (false !== ($pos = strpos($mimeType, ';'))) { - $mimeType = substr($mimeType, 0, $pos); - } - if (null === static::$formats) { - static::initializeFormats(); - } - foreach (static::$formats as $format => $mimeTypes) { - if (in_array($mimeType, (array) $mimeTypes)) { - return $format; - } - } - } - public function setFormat($format, $mimeTypes) - { - if (null === static::$formats) { - static::initializeFormats(); - } - static::$formats[$format] = is_array($mimeTypes) ? $mimeTypes : array($mimeTypes); - } - public function getRequestFormat($default = 'html') - { - if (null === $this->format) { - $this->format = $this->get('_format', $default); - } - return $this->format; - } - public function setRequestFormat($format) - { - $this->format = $format; - } - public function getContentType() - { - return $this->getFormat($this->headers->get('CONTENT_TYPE')); - } - public function setDefaultLocale($locale) - { - $this->defaultLocale = $locale; - if (null === $this->locale) { - $this->setPhpDefaultLocale($locale); - } - } - public function setLocale($locale) - { - $this->setPhpDefaultLocale($this->locale = $locale); - } - public function getLocale() - { - return null === $this->locale ? $this->defaultLocale : $this->locale; - } - public function isMethod($method) - { - return $this->getMethod() === strtoupper($method); - } - public function isMethodSafe() - { - return in_array($this->getMethod(), array('GET', 'HEAD')); - } - public function getContent($asResource = false) - { - if (false === $this->content || true === $asResource && null !== $this->content) { - throw new \LogicException('getContent() can only be called once when using the resource return type.'); - } - if (true === $asResource) { - $this->content = false; - return fopen('php://input', 'rb'); - } - if (null === $this->content) { - $this->content = file_get_contents('php://input'); - } - return $this->content; - } - public function getETags() - { - return preg_split('/\\s*,\\s*/', $this->headers->get('if_none_match'), null, PREG_SPLIT_NO_EMPTY); - } - public function isNoCache() - { - return $this->headers->hasCacheControlDirective('no-cache') || 'no-cache' == $this->headers->get('Pragma'); - } - public function getPreferredLanguage(array $locales = null) - { - $preferredLanguages = $this->getLanguages(); - if (empty($locales)) { - return isset($preferredLanguages[0]) ? $preferredLanguages[0] : null; - } - if (!$preferredLanguages) { - return $locales[0]; - } - $extendedPreferredLanguages = array(); - foreach ($preferredLanguages as $language) { - $extendedPreferredLanguages[] = $language; - if (false !== ($position = strpos($language, '_'))) { - $superLanguage = substr($language, 0, $position); - if (!in_array($superLanguage, $preferredLanguages)) { - $extendedPreferredLanguages[] = $superLanguage; - } - } - } - $preferredLanguages = array_values(array_intersect($extendedPreferredLanguages, $locales)); - return isset($preferredLanguages[0]) ? $preferredLanguages[0] : $locales[0]; - } - public function getLanguages() - { - if (null !== $this->languages) { - return $this->languages; - } - $languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all(); - $this->languages = array(); - foreach (array_keys($languages) as $lang) { - if (strstr($lang, '-')) { - $codes = explode('-', $lang); - if ($codes[0] == 'i') { - if (count($codes) > 1) { - $lang = $codes[1]; - } - } else { - for ($i = 0, $max = count($codes); $i < $max; $i++) { - if ($i == 0) { - $lang = strtolower($codes[0]); - } else { - $lang .= '_' . strtoupper($codes[$i]); - } - } - } - } - $this->languages[] = $lang; - } - return $this->languages; - } - public function getCharsets() - { - if (null !== $this->charsets) { - return $this->charsets; - } - return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all()); - } - public function getEncodings() - { - if (null !== $this->encodings) { - return $this->encodings; - } - return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all()); - } - public function getAcceptableContentTypes() - { - if (null !== $this->acceptableContentTypes) { - return $this->acceptableContentTypes; - } - return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all()); - } - public function isXmlHttpRequest() - { - return 'XMLHttpRequest' == $this->headers->get('X-Requested-With'); - } - protected function prepareRequestUri() - { - $requestUri = ''; - if ($this->headers->has('X_ORIGINAL_URL')) { - $requestUri = $this->headers->get('X_ORIGINAL_URL'); - $this->headers->remove('X_ORIGINAL_URL'); - $this->server->remove('HTTP_X_ORIGINAL_URL'); - $this->server->remove('UNENCODED_URL'); - $this->server->remove('IIS_WasUrlRewritten'); - } elseif ($this->headers->has('X_REWRITE_URL')) { - $requestUri = $this->headers->get('X_REWRITE_URL'); - $this->headers->remove('X_REWRITE_URL'); - } elseif ($this->server->get('IIS_WasUrlRewritten') == '1' && $this->server->get('UNENCODED_URL') != '') { - $requestUri = $this->server->get('UNENCODED_URL'); - $this->server->remove('UNENCODED_URL'); - $this->server->remove('IIS_WasUrlRewritten'); - } elseif ($this->server->has('REQUEST_URI')) { - $requestUri = $this->server->get('REQUEST_URI'); - $schemeAndHttpHost = $this->getSchemeAndHttpHost(); - if (strpos($requestUri, $schemeAndHttpHost) === 0) { - $requestUri = substr($requestUri, strlen($schemeAndHttpHost)); - } - } elseif ($this->server->has('ORIG_PATH_INFO')) { - $requestUri = $this->server->get('ORIG_PATH_INFO'); - if ('' != $this->server->get('QUERY_STRING')) { - $requestUri .= '?' . $this->server->get('QUERY_STRING'); - } - $this->server->remove('ORIG_PATH_INFO'); - } - $this->server->set('REQUEST_URI', $requestUri); - return $requestUri; - } - protected function prepareBaseUrl() - { - $filename = basename($this->server->get('SCRIPT_FILENAME')); - if (basename($this->server->get('SCRIPT_NAME')) === $filename) { - $baseUrl = $this->server->get('SCRIPT_NAME'); - } elseif (basename($this->server->get('PHP_SELF')) === $filename) { - $baseUrl = $this->server->get('PHP_SELF'); - } elseif (basename($this->server->get('ORIG_SCRIPT_NAME')) === $filename) { - $baseUrl = $this->server->get('ORIG_SCRIPT_NAME'); - } else { - $path = $this->server->get('PHP_SELF', ''); - $file = $this->server->get('SCRIPT_FILENAME', ''); - $segs = explode('/', trim($file, '/')); - $segs = array_reverse($segs); - $index = 0; - $last = count($segs); - $baseUrl = ''; - do { - $seg = $segs[$index]; - $baseUrl = '/' . $seg . $baseUrl; - ++$index; - } while ($last > $index && false !== ($pos = strpos($path, $baseUrl)) && 0 != $pos); - } - $requestUri = $this->getRequestUri(); - if ($baseUrl && false !== ($prefix = $this->getUrlencodedPrefix($requestUri, $baseUrl))) { - return $prefix; - } - if ($baseUrl && false !== ($prefix = $this->getUrlencodedPrefix($requestUri, dirname($baseUrl)))) { - return rtrim($prefix, '/'); - } - $truncatedRequestUri = $requestUri; - if (false !== ($pos = strpos($requestUri, '?'))) { - $truncatedRequestUri = substr($requestUri, 0, $pos); - } - $basename = basename($baseUrl); - if (empty($basename) || !strpos(rawurldecode($truncatedRequestUri), $basename)) { - return ''; - } - if (strlen($requestUri) >= strlen($baseUrl) && false !== ($pos = strpos($requestUri, $baseUrl)) && $pos !== 0) { - $baseUrl = substr($requestUri, 0, $pos + strlen($baseUrl)); - } - return rtrim($baseUrl, '/'); - } - protected function prepareBasePath() - { - $filename = basename($this->server->get('SCRIPT_FILENAME')); - $baseUrl = $this->getBaseUrl(); - if (empty($baseUrl)) { - return ''; - } - if (basename($baseUrl) === $filename) { - $basePath = dirname($baseUrl); - } else { - $basePath = $baseUrl; - } - if ('\\' === DIRECTORY_SEPARATOR) { - $basePath = str_replace('\\', '/', $basePath); - } - return rtrim($basePath, '/'); - } - protected function preparePathInfo() - { - $baseUrl = $this->getBaseUrl(); - if (null === ($requestUri = $this->getRequestUri())) { - return '/'; - } - $pathInfo = '/'; - if ($pos = strpos($requestUri, '?')) { - $requestUri = substr($requestUri, 0, $pos); - } - if (null !== $baseUrl && false === ($pathInfo = substr($requestUri, strlen($baseUrl)))) { - return '/'; - } elseif (null === $baseUrl) { - return $requestUri; - } - return (string) $pathInfo; - } - protected static function initializeFormats() - { - static::$formats = array('html' => array('text/html', 'application/xhtml+xml'), 'txt' => array('text/plain'), 'js' => array('application/javascript', 'application/x-javascript', 'text/javascript'), 'css' => array('text/css'), 'json' => array('application/json', 'application/x-json'), 'xml' => array('text/xml', 'application/xml', 'application/x-xml'), 'rdf' => array('application/rdf+xml'), 'atom' => array('application/atom+xml'), 'rss' => array('application/rss+xml')); - } - private function setPhpDefaultLocale($locale) - { - try { - if (class_exists('Locale', false)) { - \Locale::setDefault($locale); - } - } catch (\Exception $e) { - - } - } - private function getUrlencodedPrefix($string, $prefix) - { - if (0 !== strpos(rawurldecode($string), $prefix)) { - return false; - } - $len = strlen($prefix); - if (preg_match("#^(%[[:xdigit:]]{2}|.){{$len}}#", $string, $match)) { - return $match[0]; - } - return false; - } - private static function createRequestFromFactory(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null) - { - if (self::$requestFactory) { - $request = call_user_func(self::$requestFactory, $query, $request, $attributes, $cookies, $files, $server, $content); - if (!$request instanceof Request) { - throw new \LogicException('The Request factory must return an instance of Symfony\\Component\\HttpFoundation\\Request.'); - } - return $request; - } - return new static($query, $request, $attributes, $cookies, $files, $server, $content); - } -} -namespace Symfony\Component\HttpFoundation; - -class ParameterBag implements \IteratorAggregate, \Countable -{ - protected $parameters; - public function __construct(array $parameters = array()) - { - $this->parameters = $parameters; - } - public function all() - { - return $this->parameters; - } - public function keys() - { - return array_keys($this->parameters); - } - public function replace(array $parameters = array()) - { - $this->parameters = $parameters; - } - public function add(array $parameters = array()) - { - $this->parameters = array_replace($this->parameters, $parameters); - } - public function get($path, $default = null, $deep = false) - { - if (!$deep || false === ($pos = strpos($path, '['))) { - return array_key_exists($path, $this->parameters) ? $this->parameters[$path] : $default; - } - $root = substr($path, 0, $pos); - if (!array_key_exists($root, $this->parameters)) { - return $default; - } - $value = $this->parameters[$root]; - $currentKey = null; - for ($i = $pos, $c = strlen($path); $i < $c; $i++) { - $char = $path[$i]; - if ('[' === $char) { - if (null !== $currentKey) { - throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "[" at position %d.', $i)); - } - $currentKey = ''; - } elseif (']' === $char) { - if (null === $currentKey) { - throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "]" at position %d.', $i)); - } - if (!is_array($value) || !array_key_exists($currentKey, $value)) { - return $default; - } - $value = $value[$currentKey]; - $currentKey = null; - } else { - if (null === $currentKey) { - throw new \InvalidArgumentException(sprintf('Malformed path. Unexpected "%s" at position %d.', $char, $i)); - } - $currentKey .= $char; - } - } - if (null !== $currentKey) { - throw new \InvalidArgumentException(sprintf('Malformed path. Path must end with "]".')); - } - return $value; - } - public function set($key, $value) - { - $this->parameters[$key] = $value; - } - public function has($key) - { - return array_key_exists($key, $this->parameters); - } - public function remove($key) - { - unset($this->parameters[$key]); - } - public function getAlpha($key, $default = '', $deep = false) - { - return preg_replace('/[^[:alpha:]]/', '', $this->get($key, $default, $deep)); - } - public function getAlnum($key, $default = '', $deep = false) - { - return preg_replace('/[^[:alnum:]]/', '', $this->get($key, $default, $deep)); - } - public function getDigits($key, $default = '', $deep = false) - { - return str_replace(array('-', '+'), '', $this->filter($key, $default, $deep, FILTER_SANITIZE_NUMBER_INT)); - } - public function getInt($key, $default = 0, $deep = false) - { - return (int) $this->get($key, $default, $deep); - } - public function filter($key, $default = null, $deep = false, $filter = FILTER_DEFAULT, $options = array()) - { - $value = $this->get($key, $default, $deep); - if (!is_array($options) && $options) { - $options = array('flags' => $options); - } - if (is_array($value) && !isset($options['flags'])) { - $options['flags'] = FILTER_REQUIRE_ARRAY; - } - return filter_var($value, $filter, $options); - } - public function getIterator() - { - return new \ArrayIterator($this->parameters); - } - public function count() - { - return count($this->parameters); - } -} -namespace Symfony\Component\HttpFoundation; - -use Symfony\Component\HttpFoundation\File\UploadedFile; -class FileBag extends ParameterBag -{ - private static $fileKeys = array('error', 'name', 'size', 'tmp_name', 'type'); - public function __construct(array $parameters = array()) - { - $this->replace($parameters); - } - public function replace(array $files = array()) - { - $this->parameters = array(); - $this->add($files); - } - public function set($key, $value) - { - if (!is_array($value) && !$value instanceof UploadedFile) { - throw new \InvalidArgumentException('An uploaded file must be an array or an instance of UploadedFile.'); - } - parent::set($key, $this->convertFileInformation($value)); - } - public function add(array $files = array()) - { - foreach ($files as $key => $file) { - $this->set($key, $file); - } - } - protected function convertFileInformation($file) - { - if ($file instanceof UploadedFile) { - return $file; - } - $file = $this->fixPhpFilesArray($file); - if (is_array($file)) { - $keys = array_keys($file); - sort($keys); - if ($keys == self::$fileKeys) { - if (UPLOAD_ERR_NO_FILE == $file['error']) { - $file = null; - } else { - $file = new UploadedFile($file['tmp_name'], $file['name'], $file['type'], $file['size'], $file['error']); - } - } else { - $file = array_map(array($this, 'convertFileInformation'), $file); - } - } - return $file; - } - protected function fixPhpFilesArray($data) - { - if (!is_array($data)) { - return $data; - } - $keys = array_keys($data); - sort($keys); - if (self::$fileKeys != $keys || !isset($data['name']) || !is_array($data['name'])) { - return $data; - } - $files = $data; - foreach (self::$fileKeys as $k) { - unset($files[$k]); - } - foreach (array_keys($data['name']) as $key) { - $files[$key] = $this->fixPhpFilesArray(array('error' => $data['error'][$key], 'name' => $data['name'][$key], 'type' => $data['type'][$key], 'tmp_name' => $data['tmp_name'][$key], 'size' => $data['size'][$key])); - } - return $files; - } -} -namespace Symfony\Component\HttpFoundation; - -class ServerBag extends ParameterBag -{ - public function getHeaders() - { - $headers = array(); - $contentHeaders = array('CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true); - foreach ($this->parameters as $key => $value) { - if (0 === strpos($key, 'HTTP_')) { - $headers[substr($key, 5)] = $value; - } elseif (isset($contentHeaders[$key])) { - $headers[$key] = $value; - } - } - if (isset($this->parameters['PHP_AUTH_USER'])) { - $headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER']; - $headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : ''; - } else { - $authorizationHeader = null; - if (isset($this->parameters['HTTP_AUTHORIZATION'])) { - $authorizationHeader = $this->parameters['HTTP_AUTHORIZATION']; - } elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) { - $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION']; - } - if (null !== $authorizationHeader) { - if (0 === stripos($authorizationHeader, 'basic')) { - $exploded = explode(':', base64_decode(substr($authorizationHeader, 6))); - if (count($exploded) == 2) { - list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded; - } - } elseif (empty($this->parameters['PHP_AUTH_DIGEST']) && 0 === stripos($authorizationHeader, 'digest')) { - $headers['PHP_AUTH_DIGEST'] = $authorizationHeader; - $this->parameters['PHP_AUTH_DIGEST'] = $authorizationHeader; - } - } - } - if (isset($headers['PHP_AUTH_USER'])) { - $headers['AUTHORIZATION'] = 'Basic ' . base64_encode($headers['PHP_AUTH_USER'] . ':' . $headers['PHP_AUTH_PW']); - } elseif (isset($headers['PHP_AUTH_DIGEST'])) { - $headers['AUTHORIZATION'] = $headers['PHP_AUTH_DIGEST']; - } - return $headers; - } -} -namespace Symfony\Component\HttpFoundation; - -class HeaderBag implements \IteratorAggregate, \Countable -{ - protected $headers = array(); - protected $cacheControl = array(); - public function __construct(array $headers = array()) - { - foreach ($headers as $key => $values) { - $this->set($key, $values); - } - } - public function __toString() - { - if (!$this->headers) { - return ''; - } - $max = max(array_map('strlen', array_keys($this->headers))) + 1; - $content = ''; - ksort($this->headers); - foreach ($this->headers as $name => $values) { - $name = implode('-', array_map('ucfirst', explode('-', $name))); - foreach ($values as $value) { - $content .= sprintf("%-{$max}s %s\r\n", $name . ':', $value); - } - } - return $content; - } - public function all() - { - return $this->headers; - } - public function keys() - { - return array_keys($this->headers); - } - public function replace(array $headers = array()) - { - $this->headers = array(); - $this->add($headers); - } - public function add(array $headers) - { - foreach ($headers as $key => $values) { - $this->set($key, $values); - } - } - public function get($key, $default = null, $first = true) - { - $key = strtr(strtolower($key), '_', '-'); - if (!array_key_exists($key, $this->headers)) { - if (null === $default) { - return $first ? null : array(); - } - return $first ? $default : array($default); - } - if ($first) { - return count($this->headers[$key]) ? $this->headers[$key][0] : $default; - } - return $this->headers[$key]; - } - public function set($key, $values, $replace = true) - { - $key = strtr(strtolower($key), '_', '-'); - $values = array_values((array) $values); - if (true === $replace || !isset($this->headers[$key])) { - $this->headers[$key] = $values; - } else { - $this->headers[$key] = array_merge($this->headers[$key], $values); - } - if ('cache-control' === $key) { - $this->cacheControl = $this->parseCacheControl($values[0]); - } - } - public function has($key) - { - return array_key_exists(strtr(strtolower($key), '_', '-'), $this->headers); - } - public function contains($key, $value) - { - return in_array($value, $this->get($key, null, false)); - } - public function remove($key) - { - $key = strtr(strtolower($key), '_', '-'); - unset($this->headers[$key]); - if ('cache-control' === $key) { - $this->cacheControl = array(); - } - } - public function getDate($key, \DateTime $default = null) - { - if (null === ($value = $this->get($key))) { - return $default; - } - if (false === ($date = \DateTime::createFromFormat(DATE_RFC2822, $value))) { - throw new \RuntimeException(sprintf('The %s HTTP header is not parseable (%s).', $key, $value)); - } - return $date; - } - public function addCacheControlDirective($key, $value = true) - { - $this->cacheControl[$key] = $value; - $this->set('Cache-Control', $this->getCacheControlHeader()); - } - public function hasCacheControlDirective($key) - { - return array_key_exists($key, $this->cacheControl); - } - public function getCacheControlDirective($key) - { - return array_key_exists($key, $this->cacheControl) ? $this->cacheControl[$key] : null; - } - public function removeCacheControlDirective($key) - { - unset($this->cacheControl[$key]); - $this->set('Cache-Control', $this->getCacheControlHeader()); - } - public function getIterator() - { - return new \ArrayIterator($this->headers); - } - public function count() - { - return count($this->headers); - } - protected function getCacheControlHeader() - { - $parts = array(); - ksort($this->cacheControl); - foreach ($this->cacheControl as $key => $value) { - if (true === $value) { - $parts[] = $key; - } else { - if (preg_match('#[^a-zA-Z0-9._-]#', $value)) { - $value = '"' . $value . '"'; - } - $parts[] = "{$key}={$value}"; - } - } - return implode(', ', $parts); - } - protected function parseCacheControl($header) - { - $cacheControl = array(); - preg_match_all('#([a-zA-Z][a-zA-Z_-]*)\\s*(?:=(?:"([^"]*)"|([^ \\t",;]*)))?#', $header, $matches, PREG_SET_ORDER); - foreach ($matches as $match) { - $cacheControl[strtolower($match[1])] = isset($match[3]) ? $match[3] : (isset($match[2]) ? $match[2] : true); - } - return $cacheControl; - } -} -namespace Symfony\Component\HttpFoundation\Session; - -use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; -interface SessionInterface -{ - public function start(); - public function getId(); - public function setId($id); - public function getName(); - public function setName($name); - public function invalidate($lifetime = null); - public function migrate($destroy = false, $lifetime = null); - public function save(); - public function has($name); - public function get($name, $default = null); - public function set($name, $value); - public function all(); - public function replace(array $attributes); - public function remove($name); - public function clear(); - public function isStarted(); - public function registerBag(SessionBagInterface $bag); - public function getBag($name); - public function getMetadataBag(); -} -namespace Symfony\Component\HttpFoundation\Session; - -interface SessionBagInterface -{ - public function getName(); - public function initialize(array &$array); - public function getStorageKey(); - public function clear(); -} -namespace Symfony\Component\HttpFoundation\Session\Attribute; - -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -interface AttributeBagInterface extends SessionBagInterface -{ - public function has($name); - public function get($name, $default = null); - public function set($name, $value); - public function all(); - public function replace(array $attributes); - public function remove($name); -} -namespace Symfony\Component\HttpFoundation\Session\Attribute; - -class AttributeBag implements AttributeBagInterface, \IteratorAggregate, \Countable -{ - private $name = 'attributes'; - private $storageKey; - protected $attributes = array(); - public function __construct($storageKey = '_sf2_attributes') - { - $this->storageKey = $storageKey; - } - public function getName() - { - return $this->name; - } - public function setName($name) - { - $this->name = $name; - } - public function initialize(array &$attributes) - { - $this->attributes =& $attributes; - } - public function getStorageKey() - { - return $this->storageKey; - } - public function has($name) - { - return array_key_exists($name, $this->attributes); - } - public function get($name, $default = null) - { - return array_key_exists($name, $this->attributes) ? $this->attributes[$name] : $default; - } - public function set($name, $value) - { - $this->attributes[$name] = $value; - } - public function all() - { - return $this->attributes; - } - public function replace(array $attributes) - { - $this->attributes = array(); - foreach ($attributes as $key => $value) { - $this->set($key, $value); - } - } - public function remove($name) - { - $retval = null; - if (array_key_exists($name, $this->attributes)) { - $retval = $this->attributes[$name]; - unset($this->attributes[$name]); - } - return $retval; - } - public function clear() - { - $return = $this->attributes; - $this->attributes = array(); - return $return; - } - public function getIterator() - { - return new \ArrayIterator($this->attributes); - } - public function count() - { - return count($this->attributes); - } -} -namespace Symfony\Component\HttpFoundation\Session\Storage; - -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -class MetadataBag implements SessionBagInterface -{ - const CREATED = 'c'; - const UPDATED = 'u'; - const LIFETIME = 'l'; - private $name = '__metadata'; - private $storageKey; - protected $meta = array(self::CREATED => 0, self::UPDATED => 0, self::LIFETIME => 0); - private $lastUsed; - private $updateThreshold; - public function __construct($storageKey = '_sf2_meta', $updateThreshold = 0) - { - $this->storageKey = $storageKey; - $this->updateThreshold = $updateThreshold; - } - public function initialize(array &$array) - { - $this->meta =& $array; - if (isset($array[self::CREATED])) { - $this->lastUsed = $this->meta[self::UPDATED]; - $timeStamp = time(); - if ($timeStamp - $array[self::UPDATED] >= $this->updateThreshold) { - $this->meta[self::UPDATED] = $timeStamp; - } - } else { - $this->stampCreated(); - } - } - public function getLifetime() - { - return $this->meta[self::LIFETIME]; - } - public function stampNew($lifetime = null) - { - $this->stampCreated($lifetime); - } - public function getStorageKey() - { - return $this->storageKey; - } - public function getCreated() - { - return $this->meta[self::CREATED]; - } - public function getLastUsed() - { - return $this->lastUsed; - } - public function clear() - { - - } - public function getName() - { - return $this->name; - } - public function setName($name) - { - $this->name = $name; - } - private function stampCreated($lifetime = null) - { - $timeStamp = time(); - $this->meta[self::CREATED] = $this->meta[self::UPDATED] = $this->lastUsed = $timeStamp; - $this->meta[self::LIFETIME] = null === $lifetime ? ini_get('session.cookie_lifetime') : $lifetime; - } -} -namespace Symfony\Component\HttpFoundation; - -class AcceptHeaderItem -{ - private $value; - private $quality = 1.0; - private $index = 0; - private $attributes = array(); - public function __construct($value, array $attributes = array()) - { - $this->value = $value; - foreach ($attributes as $name => $value) { - $this->setAttribute($name, $value); - } - } - public static function fromString($itemValue) - { - $bits = preg_split('/\\s*(?:;*("[^"]+");*|;*(\'[^\']+\');*|;+)\\s*/', $itemValue, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); - $value = array_shift($bits); - $attributes = array(); - $lastNullAttribute = null; - foreach ($bits as $bit) { - if (($start = substr($bit, 0, 1)) === ($end = substr($bit, -1)) && ($start === '"' || $start === '\'')) { - $attributes[$lastNullAttribute] = substr($bit, 1, -1); - } elseif ('=' === $end) { - $lastNullAttribute = $bit = substr($bit, 0, -1); - $attributes[$bit] = null; - } else { - $parts = explode('=', $bit); - $attributes[$parts[0]] = isset($parts[1]) && strlen($parts[1]) > 0 ? $parts[1] : ''; - } - } - return new self(($start = substr($value, 0, 1)) === ($end = substr($value, -1)) && ($start === '"' || $start === '\'') ? substr($value, 1, -1) : $value, $attributes); - } - public function __toString() - { - $string = $this->value . ($this->quality < 1 ? ';q=' . $this->quality : ''); - if (count($this->attributes) > 0) { - $string .= ';' . implode(';', array_map(function ($name, $value) { - return sprintf(preg_match('/[,;=]/', $value) ? '%s="%s"' : '%s=%s', $name, $value); - }, array_keys($this->attributes), $this->attributes)); - } - return $string; - } - public function setValue($value) - { - $this->value = $value; - return $this; - } - public function getValue() - { - return $this->value; - } - public function setQuality($quality) - { - $this->quality = $quality; - return $this; - } - public function getQuality() - { - return $this->quality; - } - public function setIndex($index) - { - $this->index = $index; - return $this; - } - public function getIndex() - { - return $this->index; - } - public function hasAttribute($name) - { - return isset($this->attributes[$name]); - } - public function getAttribute($name, $default = null) - { - return isset($this->attributes[$name]) ? $this->attributes[$name] : $default; - } - public function getAttributes() - { - return $this->attributes; - } - public function setAttribute($name, $value) - { - if ('q' === $name) { - $this->quality = (double) $value; - } else { - $this->attributes[$name] = (string) $value; - } - return $this; - } -} -namespace Symfony\Component\HttpFoundation; - -class AcceptHeader -{ - private $items = array(); - private $sorted = true; - public function __construct(array $items) - { - foreach ($items as $item) { - $this->add($item); - } - } - public static function fromString($headerValue) - { - $index = 0; - return new self(array_map(function ($itemValue) use(&$index) { - $item = AcceptHeaderItem::fromString($itemValue); - $item->setIndex($index++); - return $item; - }, preg_split('/\\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\\s*/', $headerValue, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE))); - } - public function __toString() - { - return implode(',', $this->items); - } - public function has($value) - { - return isset($this->items[$value]); - } - public function get($value) - { - return isset($this->items[$value]) ? $this->items[$value] : null; - } - public function add(AcceptHeaderItem $item) - { - $this->items[$item->getValue()] = $item; - $this->sorted = false; - return $this; - } - public function all() - { - $this->sort(); - return $this->items; - } - public function filter($pattern) - { - return new self(array_filter($this->items, function (AcceptHeaderItem $item) use($pattern) { - return preg_match($pattern, $item->getValue()); - })); - } - public function first() - { - $this->sort(); - return !empty($this->items) ? reset($this->items) : null; - } - private function sort() - { - if (!$this->sorted) { - uasort($this->items, function ($a, $b) { - $qA = $a->getQuality(); - $qB = $b->getQuality(); - if ($qA === $qB) { - return $a->getIndex() > $b->getIndex() ? 1 : -1; - } - return $qA > $qB ? -1 : 1; - }); - $this->sorted = true; - } - } -} -namespace Symfony\Component\Debug; - -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\Debug\Exception\FlattenException; -use Symfony\Component\Debug\Exception\OutOfMemoryException; -if (!defined('ENT_SUBSTITUTE')) { - define('ENT_SUBSTITUTE', 8); -} -class ExceptionHandler -{ - private $debug; - private $charset; - private $handler; - private $caughtOutput = 0; - public function __construct($debug = true, $charset = 'UTF-8') - { - $this->debug = $debug; - $this->charset = $charset; - } - public static function register($debug = true) - { - $handler = new static($debug); - set_exception_handler(array($handler, 'handle')); - return $handler; - } - public function setHandler($handler) - { - if (isset($handler) && !is_callable($handler)) { - throw new \LogicException('The exception handler must be a valid PHP callable.'); - } - $old = $this->handler; - $this->handler = $handler; - return $old; - } - public function handle(\Exception $exception) - { - if ($exception instanceof OutOfMemoryException) { - $this->sendPhpResponse($exception); - return; - } - $caughtOutput = 0; - $this->caughtOutput = false; - ob_start(array($this, 'catchOutput')); - try { - if (class_exists('Symfony\\Component\\HttpFoundation\\Response')) { - $response = $this->createResponse($exception); - $response->sendHeaders(); - $response->sendContent(); - } else { - $this->sendPhpResponse($exception); - } - } catch (\Exception $e) { - - } - if (false === $this->caughtOutput) { - ob_end_clean(); - } - if (isset($this->caughtOutput[0])) { - ob_start(array($this, 'cleanOutput')); - echo $this->caughtOutput; - $caughtOutput = ob_get_length(); - } - $this->caughtOutput = 0; - if (!empty($this->handler)) { - try { - call_user_func($this->handler, $exception); - if ($caughtOutput) { - $this->caughtOutput = $caughtOutput; - } - } catch (\Exception $e) { - if (!$caughtOutput) { - throw $exception; - } - } - } - } - public function sendPhpResponse($exception) - { - if (!$exception instanceof FlattenException) { - $exception = FlattenException::create($exception); - } - if (!headers_sent()) { - header(sprintf('HTTP/1.0 %s', $exception->getStatusCode())); - foreach ($exception->getHeaders() as $name => $value) { - header($name . ': ' . $value, false); - } - } - echo $this->decorate($this->getContent($exception), $this->getStylesheet($exception)); - } - public function createResponse($exception) - { - if (!$exception instanceof FlattenException) { - $exception = FlattenException::create($exception); - } - return new Response($this->decorate($this->getContent($exception), $this->getStylesheet($exception)), $exception->getStatusCode(), $exception->getHeaders()); - } - public function getContent(FlattenException $exception) - { - switch ($exception->getStatusCode()) { - case 404: - $title = 'Sorry, the page you are looking for could not be found.'; - break; - default: - $title = 'Whoops, looks like something went wrong.'; - } - $content = ''; - if ($this->debug) { - try { - $count = count($exception->getAllPrevious()); - $total = $count + 1; - foreach ($exception->toArray() as $position => $e) { - $ind = $count - $position + 1; - $class = $this->abbrClass($e['class']); - $message = nl2br($e['message']); - $content .= sprintf('
-

%d/%d %s: %s

-
-
-
    ', $ind, $total, $class, $message); - foreach ($e['trace'] as $trace) { - $content .= '
  1. '; - if ($trace['function']) { - $content .= sprintf('at %s%s%s(%s)', $this->abbrClass($trace['class']), $trace['type'], $trace['function'], $this->formatArgs($trace['args'])); - } - if (isset($trace['file']) && isset($trace['line'])) { - if ($linkFormat = ini_get('xdebug.file_link_format')) { - $link = str_replace(array('%f', '%l'), array($trace['file'], $trace['line']), $linkFormat); - $content .= sprintf(' in %s line %s', $link, $trace['file'], $trace['line']); - } else { - $content .= sprintf(' in %s line %s', $trace['file'], $trace['line']); - } - } - $content .= '
  2. -'; - } - $content .= '
-
-'; - } - } catch (\Exception $e) { - if ($this->debug) { - $title = sprintf('Exception thrown when handling an exception (%s: %s)', get_class($exception), $exception->getMessage()); - } else { - $title = 'Whoops, looks like something went wrong.'; - } - } - } - return "
\n

{$title}

\n {$content}\n
"; - } - public function getStylesheet(FlattenException $exception) - { - return ' .sf-reset { font: 11px Verdana, Arial, sans-serif; color: #333 } - .sf-reset .clear { clear:both; height:0; font-size:0; line-height:0; } - .sf-reset .clear_fix:after { display:block; height:0; clear:both; visibility:hidden; } - .sf-reset .clear_fix { display:inline-block; } - .sf-reset * html .clear_fix { height:1%; } - .sf-reset .clear_fix { display:block; } - .sf-reset, .sf-reset .block { margin: auto } - .sf-reset abbr { border-bottom: 1px dotted #000; cursor: help; } - .sf-reset p { font-size:14px; line-height:20px; color:#868686; padding-bottom:20px } - .sf-reset strong { font-weight:bold; } - .sf-reset a { color:#6c6159; } - .sf-reset a img { border:none; } - .sf-reset a:hover { text-decoration:underline; } - .sf-reset em { font-style:italic; } - .sf-reset h1, .sf-reset h2 { font: 20px Georgia, "Times New Roman", Times, serif } - .sf-reset h2 span { background-color: #fff; color: #333; padding: 6px; float: left; margin-right: 10px; } - .sf-reset .traces li { font-size:12px; padding: 2px 4px; list-style-type:decimal; margin-left:20px; } - .sf-reset .block { background-color:#FFFFFF; padding:10px 28px; margin-bottom:20px; - -webkit-border-bottom-right-radius: 16px; - -webkit-border-bottom-left-radius: 16px; - -moz-border-radius-bottomright: 16px; - -moz-border-radius-bottomleft: 16px; - border-bottom-right-radius: 16px; - border-bottom-left-radius: 16px; - border-bottom:1px solid #ccc; - border-right:1px solid #ccc; - border-left:1px solid #ccc; - } - .sf-reset .block_exception { background-color:#ddd; color: #333; padding:20px; - -webkit-border-top-left-radius: 16px; - -webkit-border-top-right-radius: 16px; - -moz-border-radius-topleft: 16px; - -moz-border-radius-topright: 16px; - border-top-left-radius: 16px; - border-top-right-radius: 16px; - border-top:1px solid #ccc; - border-right:1px solid #ccc; - border-left:1px solid #ccc; - overflow: hidden; - word-wrap: break-word; - } - .sf-reset li a { background:none; color:#868686; text-decoration:none; } - .sf-reset li a:hover { background:none; color:#313131; text-decoration:underline; } - .sf-reset ol { padding: 10px 0; } - .sf-reset h1 { background-color:#FFFFFF; padding: 15px 28px; margin-bottom: 20px; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - border: 1px solid #ccc; - }'; - } - private function decorate($content, $css) - { - return "\n\n \n \n \n \n \n \n {$content}\n \n"; - } - private function abbrClass($class) - { - $parts = explode('\\', $class); - return sprintf('%s', $class, array_pop($parts)); - } - private function formatArgs(array $args) - { - $result = array(); - foreach ($args as $key => $item) { - if ('object' === $item[0]) { - $formattedValue = sprintf('object(%s)', $this->abbrClass($item[1])); - } elseif ('array' === $item[0]) { - $formattedValue = sprintf('array(%s)', is_array($item[1]) ? $this->formatArgs($item[1]) : $item[1]); - } elseif ('string' === $item[0]) { - $formattedValue = sprintf('\'%s\'', htmlspecialchars($item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset)); - } elseif ('null' === $item[0]) { - $formattedValue = 'null'; - } elseif ('boolean' === $item[0]) { - $formattedValue = '' . strtolower(var_export($item[1], true)) . ''; - } elseif ('resource' === $item[0]) { - $formattedValue = 'resource'; - } else { - $formattedValue = str_replace(' -', '', var_export(htmlspecialchars((string) $item[1], ENT_QUOTES | ENT_SUBSTITUTE, $this->charset), true)); - } - $result[] = is_int($key) ? $formattedValue : sprintf('\'%s\' => %s', $key, $formattedValue); - } - return implode(', ', $result); - } - public function catchOutput($buffer) - { - $this->caughtOutput = $buffer; - return ''; - } - public function cleanOutput($buffer) - { - if ($this->caughtOutput) { - $cleanBuffer = substr_replace($buffer, '', 0, $this->caughtOutput); - if (isset($cleanBuffer[0])) { - $buffer = $cleanBuffer; - } - } - return $buffer; - } -} -namespace Illuminate\Support; - -use ReflectionClass; -abstract class ServiceProvider -{ - protected $app; - protected $defer = false; - public function __construct($app) - { - $this->app = $app; - } - public function boot() - { - - } - public abstract function register(); - public function package($package, $namespace = null, $path = null) - { - $namespace = $this->getPackageNamespace($package, $namespace); - $path = $path ?: $this->guessPackagePath(); - $config = $path . '/config'; - if ($this->app['files']->isDirectory($config)) { - $this->app['config']->package($package, $config, $namespace); - } - $lang = $path . '/lang'; - if ($this->app['files']->isDirectory($lang)) { - $this->app['translator']->addNamespace($namespace, $lang); - } - $appView = $this->getAppViewPath($package); - if ($this->app['files']->isDirectory($appView)) { - $this->app['view']->addNamespace($namespace, $appView); - } - $view = $path . '/views'; - if ($this->app['files']->isDirectory($view)) { - $this->app['view']->addNamespace($namespace, $view); - } - } - public function guessPackagePath() - { - $path = with(new ReflectionClass($this))->getFileName(); - return realpath(dirname($path) . '/../../'); - } - protected function getPackageNamespace($package, $namespace) - { - if (is_null($namespace)) { - list($vendor, $namespace) = explode('/', $package); - } - return $namespace; - } - public function commands($commands) - { - $commands = is_array($commands) ? $commands : func_get_args(); - $events = $this->app['events']; - $events->listen('artisan.start', function ($artisan) use($commands) { - $artisan->resolveCommands($commands); - }); - } - protected function getAppViewPath($package) - { - return $this->app['path'] . "/views/packages/{$package}"; - } - public function provides() - { - return array(); - } - public function when() - { - return array(); - } - public function isDeferred() - { - return $this->defer; - } -} -namespace Illuminate\Exception; - -use Whoops\Run; -use Whoops\Handler\PrettyPageHandler; -use Whoops\Handler\JsonResponseHandler; -use Illuminate\Support\ServiceProvider; -class ExceptionServiceProvider extends ServiceProvider -{ - public function register() - { - $this->registerDisplayers(); - $this->registerHandler(); - } - protected function registerDisplayers() - { - $this->registerPlainDisplayer(); - $this->registerDebugDisplayer(); - } - protected function registerHandler() - { - $this->app['exception'] = $this->app->share(function ($app) { - return new Handler($app, $app['exception.plain'], $app['exception.debug']); - }); - } - protected function registerPlainDisplayer() - { - $this->app['exception.plain'] = $this->app->share(function ($app) { - if ($app->runningInConsole()) { - return $app['exception.debug']; - } else { - return new PlainDisplayer(); - } - }); - } - protected function registerDebugDisplayer() - { - $this->registerWhoops(); - $this->app['exception.debug'] = $this->app->share(function ($app) { - return new WhoopsDisplayer($app['whoops'], $app->runningInConsole()); - }); - } - protected function registerWhoops() - { - $this->registerWhoopsHandler(); - $this->app['whoops'] = $this->app->share(function ($app) { - with($whoops = new Run())->allowQuit(false); - $whoops->writeToOutput(false); - return $whoops->pushHandler($app['whoops.handler']); - }); - } - protected function registerWhoopsHandler() - { - if ($this->shouldReturnJson()) { - $this->app['whoops.handler'] = $this->app->share(function () { - return new JsonResponseHandler(); - }); - } else { - $this->registerPrettyWhoopsHandler(); - } - } - protected function shouldReturnJson() - { - return $this->app->runningInConsole() || $this->requestWantsJson(); - } - protected function requestWantsJson() - { - return $this->app['request']->ajax() || $this->app['request']->wantsJson(); - } - protected function registerPrettyWhoopsHandler() - { - $this->app['whoops.handler'] = $this->app->share(function () { - with($handler = new PrettyPageHandler())->setEditor('sublime'); - if (!is_null($path = $this->resourcePath())) { - $handler->addResourcePath($path); - } - return $handler; - }); - } - public function resourcePath() - { - if (is_dir($path = $this->getResourcePath())) { - return $path; - } - } - protected function getResourcePath() - { - $base = $this->app['path.base']; - return $base . '/vendor/laravel/framework/src/Illuminate/Exception/resources'; - } -} -namespace Illuminate\Routing; - -use Illuminate\Support\ServiceProvider; -class RoutingServiceProvider extends ServiceProvider -{ - public function register() - { - $this->registerRouter(); - $this->registerUrlGenerator(); - $this->registerRedirector(); - } - protected function registerRouter() - { - $this->app['router'] = $this->app->share(function ($app) { - $router = new Router($app['events'], $app); - if ($app['env'] == 'testing') { - $router->disableFilters(); - } - return $router; - }); - } - protected function registerUrlGenerator() - { - $this->app['url'] = $this->app->share(function ($app) { - $routes = $app['router']->getRoutes(); - return new UrlGenerator($routes, $app->rebinding('request', function ($app, $request) { - $app['url']->setRequest($request); - })); - }); - } - protected function registerRedirector() - { - $this->app['redirect'] = $this->app->share(function ($app) { - $redirector = new Redirector($app['url']); - if (isset($app['session.store'])) { - $redirector->setSession($app['session.store']); - } - return $redirector; - }); - } -} -namespace Illuminate\Events; - -use Illuminate\Support\ServiceProvider; -class EventServiceProvider extends ServiceProvider -{ - public function register() - { - $this->app['events'] = $this->app->share(function ($app) { - return new Dispatcher($app); - }); - } -} -namespace Illuminate\Support\Facades; - -use Mockery\MockInterface; -abstract class Facade -{ - protected static $app; - protected static $resolvedInstance; - public static function swap($instance) - { - static::$resolvedInstance[static::getFacadeAccessor()] = $instance; - static::$app->instance(static::getFacadeAccessor(), $instance); - } - public static function shouldReceive() - { - $name = static::getFacadeAccessor(); - if (static::isMock()) { - $mock = static::$resolvedInstance[$name]; - } else { - $mock = static::createFreshMockInstance($name); - } - return call_user_func_array(array($mock, 'shouldReceive'), func_get_args()); - } - protected static function createFreshMockInstance($name) - { - static::$resolvedInstance[$name] = $mock = static::createMockByName($name); - if (isset(static::$app)) { - static::$app->instance($name, $mock); - } - return $mock; - } - protected static function createMockByName($name) - { - $class = static::getMockableClass($name); - return $class ? \Mockery::mock($class) : \Mockery::mock(); - } - protected static function isMock() - { - $name = static::getFacadeAccessor(); - return isset(static::$resolvedInstance[$name]) && static::$resolvedInstance[$name] instanceof MockInterface; - } - protected static function getMockableClass() - { - if ($root = static::getFacadeRoot()) { - return get_class($root); - } - } - public static function getFacadeRoot() - { - return static::resolveFacadeInstance(static::getFacadeAccessor()); - } - protected static function getFacadeAccessor() - { - throw new \RuntimeException('Facade does not implement getFacadeAccessor method.'); - } - protected static function resolveFacadeInstance($name) - { - if (is_object($name)) { - return $name; - } - if (isset(static::$resolvedInstance[$name])) { - return static::$resolvedInstance[$name]; - } - return static::$resolvedInstance[$name] = static::$app[$name]; - } - public static function clearResolvedInstance($name) - { - unset(static::$resolvedInstance[$name]); - } - public static function clearResolvedInstances() - { - static::$resolvedInstance = array(); - } - public static function getFacadeApplication() - { - return static::$app; - } - public static function setFacadeApplication($app) - { - static::$app = $app; - } - public static function __callStatic($method, $args) - { - $instance = static::getFacadeRoot(); - switch (count($args)) { - case 0: - return $instance->{$method}(); - case 1: - return $instance->{$method}($args[0]); - case 2: - return $instance->{$method}($args[0], $args[1]); - case 3: - return $instance->{$method}($args[0], $args[1], $args[2]); - case 4: - return $instance->{$method}($args[0], $args[1], $args[2], $args[3]); - default: - return call_user_func_array(array($instance, $method), $args); - } - } -} -namespace Illuminate\Support; - -use Illuminate\Support\Traits\MacroableTrait; -class Str -{ - use MacroableTrait; - public static function ascii($value) - { - return \Patchwork\Utf8::toAscii($value); - } - public static function camel($value) - { - return lcfirst(static::studly($value)); - } - public static function contains($haystack, $needles) - { - foreach ((array) $needles as $needle) { - if ($needle != '' && strpos($haystack, $needle) !== false) { - return true; - } - } - return false; - } - public static function endsWith($haystack, $needles) - { - foreach ((array) $needles as $needle) { - if ($needle == substr($haystack, -strlen($needle))) { - return true; - } - } - return false; - } - public static function finish($value, $cap) - { - $quoted = preg_quote($cap, '/'); - return preg_replace('/(?:' . $quoted . ')+$/', '', $value) . $cap; - } - public static function is($pattern, $value) - { - if ($pattern == $value) { - return true; - } - $pattern = preg_quote($pattern, '#'); - $pattern = str_replace('\\*', '.*', $pattern) . '\\z'; - return (bool) preg_match('#^' . $pattern . '#', $value); - } - public static function length($value) - { - return mb_strlen($value); - } - public static function limit($value, $limit = 100, $end = '...') - { - if (mb_strlen($value) <= $limit) { - return $value; - } - return rtrim(mb_substr($value, 0, $limit, 'UTF-8')) . $end; - } - public static function lower($value) - { - return mb_strtolower($value); - } - public static function words($value, $words = 100, $end = '...') - { - preg_match('/^\\s*+(?:\\S++\\s*+){1,' . $words . '}/u', $value, $matches); - if (!isset($matches[0])) { - return $value; - } - if (strlen($value) == strlen($matches[0])) { - return $value; - } - return rtrim($matches[0]) . $end; - } - public static function parseCallback($callback, $default) - { - return static::contains($callback, '@') ? explode('@', $callback, 2) : array($callback, $default); - } - public static function plural($value, $count = 2) - { - return Pluralizer::plural($value, $count); - } - public static function random($length = 16) - { - if (function_exists('openssl_random_pseudo_bytes')) { - $bytes = openssl_random_pseudo_bytes($length * 2); - if ($bytes === false) { - throw new \RuntimeException('Unable to generate random string.'); - } - return substr(str_replace(array('/', '+', '='), '', base64_encode($bytes)), 0, $length); - } - return static::quickRandom($length); - } - public static function quickRandom($length = 16) - { - $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; - return substr(str_shuffle(str_repeat($pool, 5)), 0, $length); - } - public static function upper($value) - { - return mb_strtoupper($value); - } - public static function title($value) - { - return mb_convert_case($value, MB_CASE_TITLE, 'UTF-8'); - } - public static function singular($value) - { - return Pluralizer::singular($value); - } - public static function slug($title, $separator = '-') - { - $title = static::ascii($title); - $flip = $separator == '-' ? '_' : '-'; - $title = preg_replace('![' . preg_quote($flip) . ']+!u', $separator, $title); - $title = preg_replace('![^' . preg_quote($separator) . '\\pL\\pN\\s]+!u', '', mb_strtolower($title)); - $title = preg_replace('![' . preg_quote($separator) . '\\s]+!u', $separator, $title); - return trim($title, $separator); - } - public static function snake($value, $delimiter = '_') - { - $replace = '$1' . $delimiter . '$2'; - return ctype_lower($value) ? $value : strtolower(preg_replace('/(.)([A-Z])/', $replace, $value)); - } - public static function startsWith($haystack, $needles) - { - foreach ((array) $needles as $needle) { - if ($needle != '' && strpos($haystack, $needle) === 0) { - return true; - } - } - return false; - } - public static function studly($value) - { - $value = ucwords(str_replace(array('-', '_'), ' ', $value)); - return str_replace(' ', '', $value); - } -} -namespace Symfony\Component\Debug; - -use Psr\Log\LogLevel; -use Psr\Log\LoggerInterface; -use Symfony\Component\Debug\Exception\ContextErrorException; -use Symfony\Component\Debug\Exception\FatalErrorException; -use Symfony\Component\Debug\Exception\OutOfMemoryException; -use Symfony\Component\Debug\FatalErrorHandler\UndefinedFunctionFatalErrorHandler; -use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler; -use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler; -use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface; -class ErrorHandler -{ - const TYPE_DEPRECATION = -100; - private $levels = array(E_WARNING => 'Warning', E_NOTICE => 'Notice', E_USER_ERROR => 'User Error', E_USER_WARNING => 'User Warning', E_USER_NOTICE => 'User Notice', E_STRICT => 'Runtime Notice', E_RECOVERABLE_ERROR => 'Catchable Fatal Error', E_DEPRECATED => 'Deprecated', E_USER_DEPRECATED => 'User Deprecated', E_ERROR => 'Error', E_CORE_ERROR => 'Core Error', E_COMPILE_ERROR => 'Compile Error', E_PARSE => 'Parse Error'); - private $level; - private $reservedMemory; - private $displayErrors; - private static $loggers = array(); - private static $stackedErrors = array(); - private static $stackedErrorLevels = array(); - public static function register($level = null, $displayErrors = true) - { - $handler = new static(); - $handler->setLevel($level); - $handler->setDisplayErrors($displayErrors); - ini_set('display_errors', 0); - set_error_handler(array($handler, 'handle')); - register_shutdown_function(array($handler, 'handleFatal')); - $handler->reservedMemory = str_repeat('x', 10240); - return $handler; - } - public function setLevel($level) - { - $this->level = null === $level ? error_reporting() : $level; - } - public function setDisplayErrors($displayErrors) - { - $this->displayErrors = $displayErrors; - } - public static function setLogger(LoggerInterface $logger, $channel = 'deprecation') - { - self::$loggers[$channel] = $logger; - } - public function handle($level, $message, $file = 'unknown', $line = 0, $context = array()) - { - if ($level & (E_USER_DEPRECATED | E_DEPRECATED)) { - if (isset(self::$loggers['deprecation'])) { - if (self::$stackedErrorLevels) { - self::$stackedErrors[] = func_get_args(); - } else { - if (version_compare(PHP_VERSION, '5.4', '<')) { - $stack = array_map(function ($row) { - unset($row['args']); - return $row; - }, array_slice(debug_backtrace(false), 0, 10)); - } else { - $stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 10); - } - self::$loggers['deprecation']->warning($message, array('type' => self::TYPE_DEPRECATION, 'stack' => $stack)); - } - return true; - } - } elseif ($this->displayErrors && error_reporting() & $level && $this->level & $level) { - if (PHP_VERSION_ID < 50400 && isset($context['GLOBALS']) && is_array($context)) { - $c = $context; - unset($c['GLOBALS'], $context); - $context = $c; - } - $exception = sprintf('%s: %s in %s line %d', isset($this->levels[$level]) ? $this->levels[$level] : $level, $message, $file, $line); - if ($context && class_exists('Symfony\\Component\\Debug\\Exception\\ContextErrorException')) { - $exception = new ContextErrorException($exception, 0, $level, $file, $line, $context); - } else { - $exception = new \ErrorException($exception, 0, $level, $file, $line); - } - if (PHP_VERSION_ID <= 50407 && (PHP_VERSION_ID >= 50400 || PHP_VERSION_ID <= 50317)) { - $exception->errorHandlerCanary = new ErrorHandlerCanary(); - } - throw $exception; - } - if (isset(self::$loggers['scream']) && !(error_reporting() & $level)) { - if (self::$stackedErrorLevels) { - self::$stackedErrors[] = func_get_args(); - } else { - switch ($level) { - case E_USER_ERROR: - case E_RECOVERABLE_ERROR: - $logLevel = LogLevel::ERROR; - break; - case E_WARNING: - case E_USER_WARNING: - $logLevel = LogLevel::WARNING; - break; - default: - $logLevel = LogLevel::NOTICE; - break; - } - self::$loggers['scream']->log($logLevel, $message, array('type' => $level, 'file' => $file, 'line' => $line, 'scream' => error_reporting())); - } - } - return false; - } - public static function stackErrors() - { - self::$stackedErrorLevels[] = error_reporting(error_reporting() | E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR); - } - public static function unstackErrors() - { - $level = array_pop(self::$stackedErrorLevels); - if (null !== $level) { - $e = error_reporting($level); - if ($e !== ($level | E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR)) { - error_reporting($e); - } - } - if (empty(self::$stackedErrorLevels)) { - $errors = self::$stackedErrors; - self::$stackedErrors = array(); - $errorHandler = set_error_handler('var_dump'); - restore_error_handler(); - if ($errorHandler) { - foreach ($errors as $e) { - call_user_func_array($errorHandler, $e); - } - } - } - } - public function handleFatal() - { - $this->reservedMemory = ''; - gc_collect_cycles(); - $error = error_get_last(); - $exceptionHandler = set_exception_handler('var_dump'); - restore_exception_handler(); - try { - while (self::$stackedErrorLevels) { - static::unstackErrors(); - } - } catch (\Exception $exception) { - if ($exceptionHandler) { - call_user_func($exceptionHandler, $exception); - return; - } - if ($this->displayErrors) { - ini_set('display_errors', 1); - } - throw $exception; - } - if (!$error || !$this->level || !($error['type'] & (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_PARSE))) { - return; - } - if (isset(self::$loggers['emergency'])) { - $fatal = array('type' => $error['type'], 'file' => $error['file'], 'line' => $error['line']); - self::$loggers['emergency']->emergency($error['message'], $fatal); - } - if ($this->displayErrors && $exceptionHandler) { - $this->handleFatalError($exceptionHandler, $error); - } - } - protected function getFatalErrorHandlers() - { - return array(new UndefinedFunctionFatalErrorHandler(), new UndefinedMethodFatalErrorHandler(), new ClassNotFoundFatalErrorHandler()); - } - private function handleFatalError($exceptionHandler, array $error) - { - set_error_handler('var_dump', 0); - ini_set('display_errors', 1); - $level = isset($this->levels[$error['type']]) ? $this->levels[$error['type']] : $error['type']; - $message = sprintf('%s: %s in %s line %d', $level, $error['message'], $error['file'], $error['line']); - if (0 === strpos($error['message'], 'Allowed memory') || 0 === strpos($error['message'], 'Out of memory')) { - $exception = new OutOfMemoryException($message, 0, $error['type'], $error['file'], $error['line'], 3, false); - } else { - $exception = new FatalErrorException($message, 0, $error['type'], $error['file'], $error['line'], 3, true); - foreach ($this->getFatalErrorHandlers() as $handler) { - if ($e = $handler->handleError($error, $exception)) { - $exception = $e; - break; - } - } - } - try { - call_user_func($exceptionHandler, $exception); - } catch (\Exception $e) { - throw $exception; - } - } -} -class ErrorHandlerCanary -{ - private static $displayErrors = null; - public function __construct() - { - if (null === self::$displayErrors) { - self::$displayErrors = ini_set('display_errors', 1); - } - } - public function __destruct() - { - if (null !== self::$displayErrors) { - ini_set('display_errors', self::$displayErrors); - self::$displayErrors = null; - } - } -} -namespace Symfony\Component\HttpKernel\Debug; - -use Symfony\Component\Debug\ErrorHandler as DebugErrorHandler; -class ErrorHandler extends DebugErrorHandler -{ - -} -namespace Illuminate\Config; - -use Closure; -use ArrayAccess; -use Illuminate\Support\NamespacedItemResolver; -class Repository extends NamespacedItemResolver implements ArrayAccess -{ - protected $loader; - protected $environment; - protected $items = array(); - protected $packages = array(); - protected $afterLoad = array(); - public function __construct(LoaderInterface $loader, $environment) - { - $this->loader = $loader; - $this->environment = $environment; - } - public function has($key) - { - $default = microtime(true); - return $this->get($key, $default) !== $default; - } - public function hasGroup($key) - { - list($namespace, $group, $item) = $this->parseKey($key); - return $this->loader->exists($group, $namespace); - } - public function get($key, $default = null) - { - list($namespace, $group, $item) = $this->parseKey($key); - $collection = $this->getCollection($group, $namespace); - $this->load($group, $namespace, $collection); - return array_get($this->items[$collection], $item, $default); - } - public function set($key, $value) - { - list($namespace, $group, $item) = $this->parseKey($key); - $collection = $this->getCollection($group, $namespace); - $this->load($group, $namespace, $collection); - if (is_null($item)) { - $this->items[$collection] = $value; - } else { - array_set($this->items[$collection], $item, $value); - } - } - protected function load($group, $namespace, $collection) - { - $env = $this->environment; - if (isset($this->items[$collection])) { - return; - } - $items = $this->loader->load($env, $group, $namespace); - if (isset($this->afterLoad[$namespace])) { - $items = $this->callAfterLoad($namespace, $group, $items); - } - $this->items[$collection] = $items; - } - protected function callAfterLoad($namespace, $group, $items) - { - $callback = $this->afterLoad[$namespace]; - return call_user_func($callback, $this, $group, $items); - } - protected function parseNamespacedSegments($key) - { - list($namespace, $item) = explode('::', $key); - if (in_array($namespace, $this->packages)) { - return $this->parsePackageSegments($key, $namespace, $item); - } - return parent::parseNamespacedSegments($key); - } - protected function parsePackageSegments($key, $namespace, $item) - { - $itemSegments = explode('.', $item); - if (!$this->loader->exists($itemSegments[0], $namespace)) { - return array($namespace, 'config', $item); - } - return parent::parseNamespacedSegments($key); - } - public function package($package, $hint, $namespace = null) - { - $namespace = $this->getPackageNamespace($package, $namespace); - $this->packages[] = $namespace; - $this->addNamespace($namespace, $hint); - $this->afterLoading($namespace, function ($me, $group, $items) use($package) { - $env = $me->getEnvironment(); - $loader = $me->getLoader(); - return $loader->cascadePackage($env, $package, $group, $items); - }); - } - protected function getPackageNamespace($package, $namespace) - { - if (is_null($namespace)) { - list($vendor, $namespace) = explode('/', $package); - } - return $namespace; - } - public function afterLoading($namespace, Closure $callback) - { - $this->afterLoad[$namespace] = $callback; - } - protected function getCollection($group, $namespace = null) - { - $namespace = $namespace ?: '*'; - return $namespace . '::' . $group; - } - public function addNamespace($namespace, $hint) - { - $this->loader->addNamespace($namespace, $hint); - } - public function getNamespaces() - { - return $this->loader->getNamespaces(); - } - public function getLoader() - { - return $this->loader; - } - public function setLoader(LoaderInterface $loader) - { - $this->loader = $loader; - } - public function getEnvironment() - { - return $this->environment; - } - public function getAfterLoadCallbacks() - { - return $this->afterLoad; - } - public function getItems() - { - return $this->items; - } - public function offsetExists($key) - { - return $this->has($key); - } - public function offsetGet($key) - { - return $this->get($key); - } - public function offsetSet($key, $value) - { - $this->set($key, $value); - } - public function offsetUnset($key) - { - $this->set($key, null); - } -} -namespace Illuminate\Support; - -class NamespacedItemResolver -{ - protected $parsed = array(); - public function parseKey($key) - { - if (isset($this->parsed[$key])) { - return $this->parsed[$key]; - } - $segments = explode('.', $key); - if (strpos($key, '::') === false) { - $parsed = $this->parseBasicSegments($segments); - } else { - $parsed = $this->parseNamespacedSegments($key); - } - return $this->parsed[$key] = $parsed; - } - protected function parseBasicSegments(array $segments) - { - $group = $segments[0]; - if (count($segments) == 1) { - return array(null, $group, null); - } else { - $item = implode('.', array_slice($segments, 1)); - return array(null, $group, $item); - } - } - protected function parseNamespacedSegments($key) - { - list($namespace, $item) = explode('::', $key); - $itemSegments = explode('.', $item); - $groupAndItem = array_slice($this->parseBasicSegments($itemSegments), 1); - return array_merge(array($namespace), $groupAndItem); - } - public function setParsedKey($key, $parsed) - { - $this->parsed[$key] = $parsed; - } -} -namespace Illuminate\Config; - -use Illuminate\Filesystem\Filesystem; -class FileLoader implements LoaderInterface -{ - protected $files; - protected $defaultPath; - protected $hints = array(); - protected $exists = array(); - public function __construct(Filesystem $files, $defaultPath) - { - $this->files = $files; - $this->defaultPath = $defaultPath; - } - public function load($environment, $group, $namespace = null) - { - $items = array(); - $path = $this->getPath($namespace); - if (is_null($path)) { - return $items; - } - $file = "{$path}/{$group}.php"; - if ($this->files->exists($file)) { - $items = $this->files->getRequire($file); - } - $file = "{$path}/{$environment}/{$group}.php"; - if ($this->files->exists($file)) { - $items = $this->mergeEnvironment($items, $file); - } - return $items; - } - protected function mergeEnvironment(array $items, $file) - { - return array_replace_recursive($items, $this->files->getRequire($file)); - } - public function exists($group, $namespace = null) - { - $key = $group . $namespace; - if (isset($this->exists[$key])) { - return $this->exists[$key]; - } - $path = $this->getPath($namespace); - if (is_null($path)) { - return $this->exists[$key] = false; - } - $file = "{$path}/{$group}.php"; - $exists = $this->files->exists($file); - return $this->exists[$key] = $exists; - } - public function cascadePackage($env, $package, $group, $items) - { - $file = "packages/{$package}/{$group}.php"; - if ($this->files->exists($path = $this->defaultPath . '/' . $file)) { - $items = array_merge($items, $this->getRequire($path)); - } - $path = $this->getPackagePath($env, $package, $group); - if ($this->files->exists($path)) { - $items = array_merge($items, $this->getRequire($path)); - } - return $items; - } - protected function getPackagePath($env, $package, $group) - { - $file = "packages/{$package}/{$env}/{$group}.php"; - return $this->defaultPath . '/' . $file; - } - protected function getPath($namespace) - { - if (is_null($namespace)) { - return $this->defaultPath; - } elseif (isset($this->hints[$namespace])) { - return $this->hints[$namespace]; - } - } - public function addNamespace($namespace, $hint) - { - $this->hints[$namespace] = $hint; - } - public function getNamespaces() - { - return $this->hints; - } - protected function getRequire($path) - { - return $this->files->getRequire($path); - } - public function getFilesystem() - { - return $this->files; - } -} -namespace Illuminate\Config; - -interface LoaderInterface -{ - public function load($environment, $group, $namespace = null); - public function exists($group, $namespace = null); - public function addNamespace($namespace, $hint); - public function getNamespaces(); - public function cascadePackage($environment, $package, $group, $items); -} -namespace Illuminate\Config; - -interface EnvironmentVariablesLoaderInterface -{ - public function load($environment = null); -} -namespace Illuminate\Config; - -use Illuminate\Filesystem\Filesystem; -class FileEnvironmentVariablesLoader implements EnvironmentVariablesLoaderInterface -{ - protected $files; - protected $path; - public function __construct(Filesystem $files, $path = null) - { - $this->files = $files; - $this->path = $path ?: base_path(); - } - public function load($environment = null) - { - if ($environment == 'production') { - $environment = null; - } - if (!$this->files->exists($path = $this->getFile($environment))) { - return array(); - } else { - return $this->files->getRequire($path); - } - } - protected function getFile($environment) - { - if ($environment) { - return $this->path . '/.env.' . $environment . '.php'; - } else { - return $this->path . '/.env.php'; - } - } -} -namespace Illuminate\Config; - -class EnvironmentVariables -{ - protected $loader; - public function __construct(EnvironmentVariablesLoaderInterface $loader) - { - $this->loader = $loader; - } - public function load($environment = null) - { - foreach ($this->loader->load($environment) as $key => $value) { - $_ENV[$key] = $value; - $_SERVER[$key] = $value; - putenv("{$key}={$value}"); - } - } -} -namespace Illuminate\Filesystem; - -use FilesystemIterator; -use Symfony\Component\Finder\Finder; -class FileNotFoundException extends \Exception -{ - -} -class Filesystem -{ - public function exists($path) - { - return file_exists($path); - } - public function get($path) - { - if ($this->isFile($path)) { - return file_get_contents($path); - } - throw new FileNotFoundException("File does not exist at path {$path}"); - } - public function getRequire($path) - { - if ($this->isFile($path)) { - return require $path; - } - throw new FileNotFoundException("File does not exist at path {$path}"); - } - public function requireOnce($file) - { - require_once $file; - } - public function put($path, $contents) - { - return file_put_contents($path, $contents); - } - public function prepend($path, $data) - { - if ($this->exists($path)) { - return $this->put($path, $data . $this->get($path)); - } else { - return $this->put($path, $data); - } - } - public function append($path, $data) - { - return file_put_contents($path, $data, FILE_APPEND); - } - public function delete($paths) - { - $paths = is_array($paths) ? $paths : func_get_args(); - $success = true; - foreach ($paths as $path) { - if (!@unlink($path)) { - $success = false; - } - } - return $success; - } - public function move($path, $target) - { - return rename($path, $target); - } - public function copy($path, $target) - { - return copy($path, $target); - } - public function extension($path) - { - return pathinfo($path, PATHINFO_EXTENSION); - } - public function type($path) - { - return filetype($path); - } - public function size($path) - { - return filesize($path); - } - public function lastModified($path) - { - return filemtime($path); - } - public function isDirectory($directory) - { - return is_dir($directory); - } - public function isWritable($path) - { - return is_writable($path); - } - public function isFile($file) - { - return is_file($file); - } - public function glob($pattern, $flags = 0) - { - return glob($pattern, $flags); - } - public function files($directory) - { - $glob = glob($directory . '/*'); - if ($glob === false) { - return array(); - } - return array_filter($glob, function ($file) { - return filetype($file) == 'file'; - }); - } - public function allFiles($directory) - { - return iterator_to_array(Finder::create()->files()->in($directory), false); - } - public function directories($directory) - { - $directories = array(); - foreach (Finder::create()->in($directory)->directories()->depth(0) as $dir) { - $directories[] = $dir->getPathname(); - } - return $directories; - } - public function makeDirectory($path, $mode = 493, $recursive = false, $force = false) - { - if ($force) { - return @mkdir($path, $mode, $recursive); - } else { - return mkdir($path, $mode, $recursive); - } - } - public function copyDirectory($directory, $destination, $options = null) - { - if (!$this->isDirectory($directory)) { - return false; - } - $options = $options ?: FilesystemIterator::SKIP_DOTS; - if (!$this->isDirectory($destination)) { - $this->makeDirectory($destination, 511, true); - } - $items = new FilesystemIterator($directory, $options); - foreach ($items as $item) { - $target = $destination . '/' . $item->getBasename(); - if ($item->isDir()) { - $path = $item->getPathname(); - if (!$this->copyDirectory($path, $target, $options)) { - return false; - } - } else { - if (!$this->copy($item->getPathname(), $target)) { - return false; - } - } - } - return true; - } - public function deleteDirectory($directory, $preserve = false) - { - if (!$this->isDirectory($directory)) { - return false; - } - $items = new FilesystemIterator($directory); - foreach ($items as $item) { - if ($item->isDir()) { - $this->deleteDirectory($item->getPathname()); - } else { - $this->delete($item->getPathname()); - } - } - if (!$preserve) { - @rmdir($directory); - } - return true; - } - public function cleanDirectory($directory) - { - return $this->deleteDirectory($directory, true); - } -} -namespace Illuminate\Foundation; - -class AliasLoader -{ - protected $aliases; - protected $registered = false; - protected static $instance; - public function __construct(array $aliases = array()) - { - $this->aliases = $aliases; - } - public static function getInstance(array $aliases = array()) - { - if (is_null(static::$instance)) { - static::$instance = new static($aliases); - } - $aliases = array_merge(static::$instance->getAliases(), $aliases); - static::$instance->setAliases($aliases); - return static::$instance; - } - public function load($alias) - { - if (isset($this->aliases[$alias])) { - return class_alias($this->aliases[$alias], $alias); - } - } - public function alias($class, $alias) - { - $this->aliases[$class] = $alias; - } - public function register() - { - if (!$this->registered) { - $this->prependToLoaderStack(); - $this->registered = true; - } - } - protected function prependToLoaderStack() - { - spl_autoload_register(array($this, 'load'), true, true); - } - public function getAliases() - { - return $this->aliases; - } - public function setAliases(array $aliases) - { - $this->aliases = $aliases; - } - public function isRegistered() - { - return $this->registered; - } - public function setRegistered($value) - { - $this->registered = $value; - } - public static function setInstance($loader) - { - static::$instance = $loader; - } -} -namespace Illuminate\Foundation; - -use Illuminate\Filesystem\Filesystem; -class ProviderRepository -{ - protected $files; - protected $manifestPath; - protected $default = array('when' => array()); - public function __construct(Filesystem $files, $manifestPath) - { - $this->files = $files; - $this->manifestPath = $manifestPath; - } - public function load(Application $app, array $providers) - { - $manifest = $this->loadManifest(); - if ($this->shouldRecompile($manifest, $providers)) { - $manifest = $this->compileManifest($app, $providers); - } - if ($app->runningInConsole()) { - $manifest['eager'] = $manifest['providers']; - } - foreach ($manifest['when'] as $provider => $events) { - $this->registerLoadEvents($app, $provider, $events); - } - foreach ($manifest['eager'] as $provider) { - $app->register($this->createProvider($app, $provider)); - } - $app->setDeferredServices($manifest['deferred']); - } - protected function registerLoadEvents(Application $app, $provider, array $events) - { - if (count($events) < 1) { - return; - } - $app->make('events')->listen($events, function () use($app, $provider) { - $app->register($provider); - }); - } - protected function compileManifest(Application $app, $providers) - { - $manifest = $this->freshManifest($providers); - foreach ($providers as $provider) { - $instance = $this->createProvider($app, $provider); - if ($instance->isDeferred()) { - foreach ($instance->provides() as $service) { - $manifest['deferred'][$service] = $provider; - } - $manifest['when'][$provider] = $instance->when(); - } else { - $manifest['eager'][] = $provider; - } - } - return $this->writeManifest($manifest); - } - public function createProvider(Application $app, $provider) - { - return new $provider($app); - } - public function shouldRecompile($manifest, $providers) - { - return is_null($manifest) || $manifest['providers'] != $providers; - } - public function loadManifest() - { - $path = $this->manifestPath . '/services.json'; - if ($this->files->exists($path)) { - $manifest = json_decode($this->files->get($path), true); - return array_merge($this->default, $manifest); - } - } - public function writeManifest($manifest) - { - $path = $this->manifestPath . '/services.json'; - $this->files->put($path, json_encode($manifest, JSON_PRETTY_PRINT)); - return $manifest; - } - protected function freshManifest(array $providers) - { - list($eager, $deferred) = array(array(), array()); - return compact('providers', 'eager', 'deferred'); - } - public function getFilesystem() - { - return $this->files; - } -} -namespace Illuminate\Cookie; - -use Illuminate\Support\ServiceProvider; -class CookieServiceProvider extends ServiceProvider -{ - public function register() - { - $this->app->bindShared('cookie', function ($app) { - $config = $app['config']['session']; - return with(new CookieJar())->setDefaultPathAndDomain($config['path'], $config['domain']); - }); - } -} -namespace Illuminate\Database; - -use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\ServiceProvider; -use Illuminate\Database\Connectors\ConnectionFactory; -class DatabaseServiceProvider extends ServiceProvider -{ - public function boot() - { - Model::setConnectionResolver($this->app['db']); - Model::setEventDispatcher($this->app['events']); - } - public function register() - { - $this->app->bindShared('db.factory', function ($app) { - return new ConnectionFactory($app); - }); - $this->app->bindShared('db', function ($app) { - return new DatabaseManager($app, $app['db.factory']); - }); - } -} -namespace Illuminate\Encryption; - -use Illuminate\Support\ServiceProvider; -class EncryptionServiceProvider extends ServiceProvider -{ - public function register() - { - $this->app->bindShared('encrypter', function ($app) { - $encrypter = new Encrypter($app['config']['app.key']); - if ($app['config']->has('app.cipher')) { - $encrypter->setCipher($app['config']['app.cipher']); - } - return $encrypter; - }); - } -} -namespace Illuminate\Filesystem; - -use Illuminate\Support\ServiceProvider; -class FilesystemServiceProvider extends ServiceProvider -{ - public function register() - { - $this->app->bindShared('files', function () { - return new Filesystem(); - }); - } -} -namespace Illuminate\Session; - -use Illuminate\Support\ServiceProvider; -class SessionServiceProvider extends ServiceProvider -{ - public function register() - { - $this->setupDefaultDriver(); - $this->registerSessionManager(); - $this->registerSessionDriver(); - } - protected function setupDefaultDriver() - { - if ($this->app->runningInConsole()) { - $this->app['config']['session.driver'] = 'array'; - } - } - protected function registerSessionManager() - { - $this->app->bindShared('session', function ($app) { - return new SessionManager($app); - }); - } - protected function registerSessionDriver() - { - $this->app->bindShared('session.store', function ($app) { - $manager = $app['session']; - return $manager->driver(); - }); - } - protected function getDriver() - { - return $this->app['config']['session.driver']; - } -} -namespace Illuminate\View; - -use Illuminate\Support\ViewErrorBag; -use Illuminate\View\Engines\PhpEngine; -use Illuminate\Support\ServiceProvider; -use Illuminate\View\Engines\CompilerEngine; -use Illuminate\View\Engines\EngineResolver; -use Illuminate\View\Compilers\BladeCompiler; -class ViewServiceProvider extends ServiceProvider -{ - public function register() - { - $this->registerEngineResolver(); - $this->registerViewFinder(); - $this->registerFactory(); - $this->registerSessionBinder(); - } - public function registerEngineResolver() - { - $this->app->bindShared('view.engine.resolver', function ($app) { - $resolver = new EngineResolver(); - foreach (array('php', 'blade') as $engine) { - $this->{'register' . ucfirst($engine) . 'Engine'}($resolver); - } - return $resolver; - }); - } - public function registerPhpEngine($resolver) - { - $resolver->register('php', function () { - return new PhpEngine(); - }); - } - public function registerBladeEngine($resolver) - { - $app = $this->app; - $app->bindShared('blade.compiler', function ($app) { - $cache = $app['path.storage'] . '/views'; - return new BladeCompiler($app['files'], $cache); - }); - $resolver->register('blade', function () use($app) { - return new CompilerEngine($app['blade.compiler'], $app['files']); - }); - } - public function registerViewFinder() - { - $this->app->bindShared('view.finder', function ($app) { - $paths = $app['config']['view.paths']; - return new FileViewFinder($app['files'], $paths); - }); - } - public function registerFactory() - { - $this->app->bindShared('view', function ($app) { - $resolver = $app['view.engine.resolver']; - $finder = $app['view.finder']; - $env = new Factory($resolver, $finder, $app['events']); - $env->setContainer($app); - $env->share('app', $app); - return $env; - }); - } - protected function registerSessionBinder() - { - list($app, $me) = array($this->app, $this); - $app->booted(function () use($app, $me) { - if ($me->sessionHasErrors($app)) { - $errors = $app['session.store']->get('errors'); - $app['view']->share('errors', $errors); - } else { - $app['view']->share('errors', new ViewErrorBag()); - } - }); - } - public function sessionHasErrors($app) - { - $config = $app['config']['session']; - if (isset($app['session.store']) && !is_null($config['driver'])) { - return $app['session.store']->has('errors'); - } - } -} -namespace Illuminate\Routing; - -interface RouteFiltererInterface -{ - public function filter($name, $callback); - public function callRouteFilter($filter, $parameters, $route, $request, $response = null); -} -namespace Illuminate\Routing; - -use Closure; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Illuminate\Events\Dispatcher; -use Illuminate\Container\Container; -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpFoundation\Request as SymfonyRequest; -use Symfony\Component\HttpFoundation\Response as SymfonyResponse; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -class Router implements HttpKernelInterface, RouteFiltererInterface -{ - protected $events; - protected $container; - protected $routes; - protected $current; - protected $currentRequest; - protected $controllerDispatcher; - protected $inspector; - protected $filtering = true; - protected $patternFilters = array(); - protected $regexFilters = array(); - protected $binders = array(); - protected $patterns = array(); - protected $groupStack = array(); - public static $verbs = array('GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'); - protected $resourceDefaults = array('index', 'create', 'store', 'show', 'edit', 'update', 'destroy'); - public function __construct(Dispatcher $events, Container $container = null) - { - $this->events = $events; - $this->routes = new RouteCollection(); - $this->container = $container ?: new Container(); - $this->bind('_missing', function ($v) { - return explode('/', $v); - }); - } - public function get($uri, $action) - { - return $this->addRoute(array('GET', 'HEAD'), $uri, $action); - } - public function post($uri, $action) - { - return $this->addRoute('POST', $uri, $action); - } - public function put($uri, $action) - { - return $this->addRoute('PUT', $uri, $action); - } - public function patch($uri, $action) - { - return $this->addRoute('PATCH', $uri, $action); - } - public function delete($uri, $action) - { - return $this->addRoute('DELETE', $uri, $action); - } - public function options($uri, $action) - { - return $this->addRoute('OPTIONS', $uri, $action); - } - public function any($uri, $action) - { - $verbs = array('GET', 'HEAD', 'POST', 'PUT', 'PATCH', 'DELETE'); - return $this->addRoute($verbs, $uri, $action); - } - public function match($methods, $uri, $action) - { - return $this->addRoute($methods, $uri, $action); - } - public function controllers(array $controllers) - { - foreach ($controllers as $uri => $name) { - $this->controller($uri, $name); - } - } - public function controller($uri, $controller, $names = array()) - { - $prepended = $controller; - if (count($this->groupStack) > 0) { - $prepended = $this->prependGroupUses($controller); - } - $routable = $this->getInspector()->getRoutable($prepended, $uri); - foreach ($routable as $method => $routes) { - foreach ($routes as $route) { - $this->registerInspected($route, $controller, $method, $names); - } - } - $this->addFallthroughRoute($controller, $uri); - } - protected function registerInspected($route, $controller, $method, &$names) - { - $action = array('uses' => $controller . '@' . $method); - $action['as'] = array_pull($names, $method); - $this->{$route['verb']}($route['uri'], $action); - } - protected function addFallthroughRoute($controller, $uri) - { - $missing = $this->any($uri . '/{_missing}', $controller . '@missingMethod'); - $missing->where('_missing', '(.*)'); - } - public function resource($name, $controller, array $options = array()) - { - if (str_contains($name, '/')) { - $this->prefixedResource($name, $controller, $options); - return; - } - $base = $this->getResourceWildcard(last(explode('.', $name))); - $defaults = $this->resourceDefaults; - foreach ($this->getResourceMethods($defaults, $options) as $m) { - $this->{'addResource' . ucfirst($m)}($name, $base, $controller, $options); - } - } - protected function prefixedResource($name, $controller, array $options) - { - list($name, $prefix) = $this->getResourcePrefix($name); - $callback = function ($me) use($name, $controller, $options) { - $me->resource($name, $controller, $options); - }; - return $this->group(compact('prefix'), $callback); - } - protected function getResourcePrefix($name) - { - $segments = explode('/', $name); - $prefix = implode('/', array_slice($segments, 0, -1)); - return array($segments[count($segments) - 1], $prefix); - } - protected function getResourceMethods($defaults, $options) - { - if (isset($options['only'])) { - return array_intersect($defaults, $options['only']); - } elseif (isset($options['except'])) { - return array_diff($defaults, $options['except']); - } - return $defaults; - } - public function getResourceUri($resource) - { - if (!str_contains($resource, '.')) { - return $resource; - } - $segments = explode('.', $resource); - $uri = $this->getNestedResourceUri($segments); - return str_replace('/{' . $this->getResourceWildcard(last($segments)) . '}', '', $uri); - } - protected function getNestedResourceUri(array $segments) - { - return implode('/', array_map(function ($s) { - return $s . '/{' . $this->getResourceWildcard($s) . '}'; - }, $segments)); - } - protected function getResourceAction($resource, $controller, $method, $options) - { - $name = $this->getResourceName($resource, $method, $options); - return array('as' => $name, 'uses' => $controller . '@' . $method); - } - protected function getResourceName($resource, $method, $options) - { - if (isset($options['names'][$method])) { - return $options['names'][$method]; - } - $prefix = isset($options['as']) ? $options['as'] . '.' : ''; - if (count($this->groupStack) == 0) { - return $prefix . $resource . '.' . $method; - } - return $this->getGroupResourceName($prefix, $resource, $method); - } - protected function getGroupResourceName($prefix, $resource, $method) - { - $group = str_replace('/', '.', $this->getLastGroupPrefix()); - return trim("{$prefix}{$group}.{$resource}.{$method}", '.'); - } - public function getResourceWildcard($value) - { - return str_replace('-', '_', $value); - } - protected function addResourceIndex($name, $base, $controller, $options) - { - $action = $this->getResourceAction($name, $controller, 'index', $options); - return $this->get($this->getResourceUri($name), $action); - } - protected function addResourceCreate($name, $base, $controller, $options) - { - $action = $this->getResourceAction($name, $controller, 'create', $options); - return $this->get($this->getResourceUri($name) . '/create', $action); - } - protected function addResourceStore($name, $base, $controller, $options) - { - $action = $this->getResourceAction($name, $controller, 'store', $options); - return $this->post($this->getResourceUri($name), $action); - } - protected function addResourceShow($name, $base, $controller, $options) - { - $uri = $this->getResourceUri($name) . '/{' . $base . '}'; - return $this->get($uri, $this->getResourceAction($name, $controller, 'show', $options)); - } - protected function addResourceEdit($name, $base, $controller, $options) - { - $uri = $this->getResourceUri($name) . '/{' . $base . '}/edit'; - return $this->get($uri, $this->getResourceAction($name, $controller, 'edit', $options)); - } - protected function addResourceUpdate($name, $base, $controller, $options) - { - $this->addPutResourceUpdate($name, $base, $controller, $options); - return $this->addPatchResourceUpdate($name, $base, $controller); - } - protected function addPutResourceUpdate($name, $base, $controller, $options) - { - $uri = $this->getResourceUri($name) . '/{' . $base . '}'; - return $this->put($uri, $this->getResourceAction($name, $controller, 'update', $options)); - } - protected function addPatchResourceUpdate($name, $base, $controller) - { - $uri = $this->getResourceUri($name) . '/{' . $base . '}'; - $this->patch($uri, $controller . '@update'); - } - protected function addResourceDestroy($name, $base, $controller, $options) - { - $action = $this->getResourceAction($name, $controller, 'destroy', $options); - return $this->delete($this->getResourceUri($name) . '/{' . $base . '}', $action); - } - public function group(array $attributes, Closure $callback) - { - $this->updateGroupStack($attributes); - call_user_func($callback, $this); - array_pop($this->groupStack); - } - protected function updateGroupStack(array $attributes) - { - if (count($this->groupStack) > 0) { - $attributes = $this->mergeGroup($attributes, last($this->groupStack)); - } - $this->groupStack[] = $attributes; - } - public function mergeWithLastGroup($new) - { - return $this->mergeGroup($new, last($this->groupStack)); - } - public static function mergeGroup($new, $old) - { - $new['namespace'] = static::formatUsesPrefix($new, $old); - $new['prefix'] = static::formatGroupPrefix($new, $old); - if (isset($new['domain'])) { - unset($old['domain']); - } - return array_merge_recursive(array_except($old, array('namespace', 'prefix')), $new); - } - protected static function formatUsesPrefix($new, $old) - { - if (isset($new['namespace'])) { - return trim(array_get($old, 'namespace'), '\\') . '\\' . trim($new['namespace'], '\\'); - } else { - return array_get($old, 'namespace'); - } - } - protected static function formatGroupPrefix($new, $old) - { - if (isset($new['prefix'])) { - return trim(array_get($old, 'prefix'), '/') . '/' . trim($new['prefix'], '/'); - } else { - return array_get($old, 'prefix'); - } - } - protected function getLastGroupPrefix() - { - if (count($this->groupStack) > 0) { - return array_get(last($this->groupStack), 'prefix', ''); - } - return ''; - } - protected function addRoute($methods, $uri, $action) - { - return $this->routes->add($this->createRoute($methods, $uri, $action)); - } - protected function createRoute($methods, $uri, $action) - { - if ($this->routingToController($action)) { - $action = $this->getControllerAction($action); - } - $route = $this->newRoute($methods, $uri = $this->prefix($uri), $action); - $route->where($this->patterns); - if (count($this->groupStack) > 0) { - $this->mergeController($route); - } - return $route; - } - protected function newRoute($methods, $uri, $action) - { - return new Route($methods, $uri, $action); - } - protected function prefix($uri) - { - return trim(trim($this->getLastGroupPrefix(), '/') . '/' . trim($uri, '/'), '/') ?: '/'; - } - protected function mergeController($route) - { - $action = $this->mergeWithLastGroup($route->getAction()); - $route->setAction($action); - } - protected function routingToController($action) - { - if ($action instanceof Closure) { - return false; - } - return is_string($action) || is_string(array_get($action, 'uses')); - } - protected function getControllerAction($action) - { - if (is_string($action)) { - $action = array('uses' => $action); - } - if (count($this->groupStack) > 0) { - $action['uses'] = $this->prependGroupUses($action['uses']); - } - $action['controller'] = $action['uses']; - $closure = $this->getClassClosure($action['uses']); - return array_set($action, 'uses', $closure); - } - protected function getClassClosure($controller) - { - $d = $this->getControllerDispatcher(); - return function () use($d, $controller) { - $route = $this->current(); - $request = $this->getCurrentRequest(); - list($class, $method) = explode('@', $controller); - return $d->dispatch($route, $request, $class, $method); - }; - } - protected function prependGroupUses($uses) - { - $group = last($this->groupStack); - return isset($group['namespace']) ? $group['namespace'] . '\\' . $uses : $uses; - } - public function dispatch(Request $request) - { - $this->currentRequest = $request; - $response = $this->callFilter('before', $request); - if (is_null($response)) { - $response = $this->dispatchToRoute($request); - } - $response = $this->prepareResponse($request, $response); - $this->callFilter('after', $request, $response); - return $response; - } - public function dispatchToRoute(Request $request) - { - $route = $this->findRoute($request); - $this->events->fire('router.matched', array($route, $request)); - $response = $this->callRouteBefore($route, $request); - if (is_null($response)) { - $response = $route->run($request); - } - $response = $this->prepareResponse($request, $response); - $this->callRouteAfter($route, $request, $response); - return $response; - } - protected function findRoute($request) - { - $this->current = $route = $this->routes->match($request); - return $this->substituteBindings($route); - } - protected function substituteBindings($route) - { - foreach ($route->parameters() as $key => $value) { - if (isset($this->binders[$key])) { - $route->setParameter($key, $this->performBinding($key, $value, $route)); - } - } - return $route; - } - protected function performBinding($key, $value, $route) - { - return call_user_func($this->binders[$key], $value, $route); - } - public function matched($callback) - { - $this->events->listen('router.matched', $callback); - } - public function before($callback) - { - $this->addGlobalFilter('before', $callback); - } - public function after($callback) - { - $this->addGlobalFilter('after', $callback); - } - protected function addGlobalFilter($filter, $callback) - { - $this->events->listen('router.' . $filter, $this->parseFilter($callback)); - } - public function filter($name, $callback) - { - $this->events->listen('router.filter: ' . $name, $this->parseFilter($callback)); - } - protected function parseFilter($callback) - { - if (is_string($callback) && !str_contains($callback, '@')) { - return $callback . '@filter'; - } else { - return $callback; - } - } - public function when($pattern, $name, $methods = null) - { - if (!is_null($methods)) { - $methods = array_map('strtoupper', (array) $methods); - } - $this->patternFilters[$pattern][] = compact('name', 'methods'); - } - public function whenRegex($pattern, $name, $methods = null) - { - if (!is_null($methods)) { - $methods = array_map('strtoupper', (array) $methods); - } - $this->regexFilters[$pattern][] = compact('name', 'methods'); - } - public function model($key, $class, Closure $callback = null) - { - return $this->bind($key, function ($value) use($class, $callback) { - if (is_null($value)) { - return null; - } - if ($model = with(new $class())->find($value)) { - return $model; - } - if ($callback instanceof Closure) { - return call_user_func($callback); - } - throw new NotFoundHttpException(); - }); - } - public function bind($key, $binder) - { - $this->binders[str_replace('-', '_', $key)] = $binder; - } - public function pattern($key, $pattern) - { - $this->patterns[$key] = $pattern; - } - protected function callFilter($filter, $request, $response = null) - { - if (!$this->filtering) { - return null; - } - return $this->events->until('router.' . $filter, array($request, $response)); - } - public function callRouteBefore($route, $request) - { - $response = $this->callPatternFilters($route, $request); - return $response ?: $this->callAttachedBefores($route, $request); - } - protected function callPatternFilters($route, $request) - { - foreach ($this->findPatternFilters($request) as $filter => $parameters) { - $response = $this->callRouteFilter($filter, $parameters, $route, $request); - if (!is_null($response)) { - return $response; - } - } - } - public function findPatternFilters($request) - { - $results = array(); - list($path, $method) = array($request->path(), $request->getMethod()); - foreach ($this->patternFilters as $pattern => $filters) { - if (str_is($pattern, $path)) { - $merge = $this->patternsByMethod($method, $filters); - $results = array_merge($results, $merge); - } - } - foreach ($this->regexFilters as $pattern => $filters) { - if (preg_match($pattern, $path)) { - $merge = $this->patternsByMethod($method, $filters); - $results = array_merge($results, $merge); - } - } - return $results; - } - protected function patternsByMethod($method, $filters) - { - $results = array(); - foreach ($filters as $filter) { - if ($this->filterSupportsMethod($filter, $method)) { - $parsed = Route::parseFilters($filter['name']); - $results = array_merge($results, $parsed); - } - } - return $results; - } - protected function filterSupportsMethod($filter, $method) - { - $methods = $filter['methods']; - return is_null($methods) || in_array($method, $methods); - } - protected function callAttachedBefores($route, $request) - { - foreach ($route->beforeFilters() as $filter => $parameters) { - $response = $this->callRouteFilter($filter, $parameters, $route, $request); - if (!is_null($response)) { - return $response; - } - } - } - public function callRouteAfter($route, $request, $response) - { - foreach ($route->afterFilters() as $filter => $parameters) { - $this->callRouteFilter($filter, $parameters, $route, $request, $response); - } - } - public function callRouteFilter($filter, $parameters, $route, $request, $response = null) - { - if (!$this->filtering) { - return null; - } - $data = array_merge(array($route, $request, $response), $parameters); - return $this->events->until('router.filter: ' . $filter, $this->cleanFilterParameters($data)); - } - protected function cleanFilterParameters(array $parameters) - { - return array_filter($parameters, function ($p) { - return !is_null($p) && $p !== ''; - }); - } - protected function prepareResponse($request, $response) - { - if (!$response instanceof SymfonyResponse) { - $response = new Response($response); - } - return $response->prepare($request); - } - public function withoutFilters($callback) - { - $this->disableFilters(); - call_user_func($callback); - $this->enableFilters(); - } - public function enableFilters() - { - $this->filtering = true; - } - public function disableFilters() - { - $this->filtering = false; - } - public function input($key, $default = null) - { - return $this->current()->parameter($key, $default); - } - public function getCurrentRoute() - { - return $this->current(); - } - public function current() - { - return $this->current; - } - public function currentRouteName() - { - return $this->current() ? $this->current()->getName() : null; - } - public function is() - { - foreach (func_get_args() as $pattern) { - if (str_is($pattern, $this->currentRouteName())) { - return true; - } - } - return false; - } - public function currentRouteNamed($name) - { - return $this->current() ? $this->current()->getName() == $name : false; - } - public function currentRouteAction() - { - $action = $this->current()->getAction(); - return isset($action['controller']) ? $action['controller'] : null; - } - public function uses() - { - foreach (func_get_args() as $pattern) { - if (str_is($pattern, $this->currentRouteAction())) { - return true; - } - } - return false; - } - public function currentRouteUses($action) - { - return $this->currentRouteAction() == $action; - } - public function getCurrentRequest() - { - return $this->currentRequest; - } - public function getRoutes() - { - return $this->routes; - } - public function getControllerDispatcher() - { - if (is_null($this->controllerDispatcher)) { - $this->controllerDispatcher = new ControllerDispatcher($this, $this->container); - } - return $this->controllerDispatcher; - } - public function setControllerDispatcher(ControllerDispatcher $dispatcher) - { - $this->controllerDispatcher = $dispatcher; - } - public function getInspector() - { - return $this->inspector ?: ($this->inspector = new ControllerInspector()); - } - public function handle(SymfonyRequest $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - return $this->dispatch(Request::createFromBase($request)); - } -} -namespace Illuminate\Routing; - -use Closure; -use Illuminate\Http\Request; -use Illuminate\Routing\Matching\UriValidator; -use Illuminate\Routing\Matching\HostValidator; -use Illuminate\Routing\Matching\MethodValidator; -use Illuminate\Routing\Matching\SchemeValidator; -use Symfony\Component\Routing\Route as SymfonyRoute; -class Route -{ - protected $uri; - protected $methods; - protected $action; - protected $defaults = array(); - protected $wheres = array(); - protected $parameters; - protected $parameterNames; - protected $compiled; - protected static $validators; - public function __construct($methods, $uri, $action) - { - $this->uri = $uri; - $this->methods = (array) $methods; - $this->action = $this->parseAction($action); - if (isset($this->action['prefix'])) { - $this->prefix($this->action['prefix']); - } - } - public function run() - { - $parameters = array_filter($this->parameters(), function ($p) { - return isset($p); - }); - return call_user_func_array($this->action['uses'], $parameters); - } - public function matches(Request $request, $includingMethod = true) - { - $this->compileRoute(); - foreach ($this->getValidators() as $validator) { - if (!$includingMethod && $validator instanceof MethodValidator) { - continue; - } - if (!$validator->matches($this, $request)) { - return false; - } - } - return true; - } - protected function compileRoute() - { - $optionals = $this->extractOptionalParameters(); - $uri = preg_replace('/\\{(\\w+?)\\?\\}/', '{$1}', $this->uri); - $this->compiled = with(new SymfonyRoute($uri, $optionals, $this->wheres, array(), $this->domain() ?: ''))->compile(); - } - protected function extractOptionalParameters() - { - preg_match_all('/\\{(\\w+?)\\?\\}/', $this->uri, $matches); - $optional = array(); - if (isset($matches[1])) { - foreach ($matches[1] as $key) { - $optional[$key] = null; - } - } - return $optional; - } - public function beforeFilters() - { - if (!isset($this->action['before'])) { - return array(); - } - return $this->parseFilters($this->action['before']); - } - public function afterFilters() - { - if (!isset($this->action['after'])) { - return array(); - } - return $this->parseFilters($this->action['after']); - } - public static function parseFilters($filters) - { - return array_build(static::explodeFilters($filters), function ($key, $value) { - return Route::parseFilter($value); - }); - } - protected static function explodeFilters($filters) - { - if (is_array($filters)) { - return static::explodeArrayFilters($filters); - } - return explode('|', $filters); - } - protected static function explodeArrayFilters(array $filters) - { - $results = array(); - foreach ($filters as $filter) { - $results = array_merge($results, explode('|', $filter)); - } - return $results; - } - public static function parseFilter($filter) - { - if (!str_contains($filter, ':')) { - return array($filter, array()); - } - return static::parseParameterFilter($filter); - } - protected static function parseParameterFilter($filter) - { - list($name, $parameters) = explode(':', $filter, 2); - return array($name, explode(',', $parameters)); - } - public function getParameter($name, $default = null) - { - return $this->parameter($name, $default); - } - public function parameter($name, $default = null) - { - return array_get($this->parameters(), $name) ?: $default; - } - public function setParameter($name, $value) - { - $this->parameters(); - $this->parameters[$name] = $value; - } - public function forgetParameter($name) - { - $this->parameters(); - unset($this->parameters[$name]); - } - public function parameters() - { - if (isset($this->parameters)) { - return array_map(function ($value) { - return is_string($value) ? rawurldecode($value) : $value; - }, $this->parameters); - } - throw new \LogicException('Route is not bound.'); - } - public function parametersWithoutNulls() - { - return array_filter($this->parameters(), function ($p) { - return !is_null($p); - }); - } - public function parameterNames() - { - if (isset($this->parameterNames)) { - return $this->parameterNames; - } - return $this->parameterNames = $this->compileParameterNames(); - } - protected function compileParameterNames() - { - preg_match_all('/\\{(.*?)\\}/', $this->domain() . $this->uri, $matches); - return array_map(function ($m) { - return trim($m, '?'); - }, $matches[1]); - } - public function bind(Request $request) - { - $this->compileRoute(); - $this->bindParameters($request); - return $this; - } - public function bindParameters(Request $request) - { - $params = $this->matchToKeys(array_slice($this->bindPathParameters($request), 1)); - if (!is_null($this->compiled->getHostRegex())) { - $params = $this->bindHostParameters($request, $params); - } - return $this->parameters = $this->replaceDefaults($params); - } - protected function bindPathParameters(Request $request) - { - preg_match($this->compiled->getRegex(), '/' . $request->decodedPath(), $matches); - return $matches; - } - protected function bindHostParameters(Request $request, $parameters) - { - preg_match($this->compiled->getHostRegex(), $request->getHost(), $matches); - return array_merge($this->matchToKeys(array_slice($matches, 1)), $parameters); - } - protected function matchToKeys(array $matches) - { - if (count($this->parameterNames()) == 0) { - return array(); - } - $parameters = array_intersect_key($matches, array_flip($this->parameterNames())); - return array_filter($parameters, function ($value) { - return is_string($value) && strlen($value) > 0; - }); - } - protected function replaceDefaults(array $parameters) - { - foreach ($parameters as $key => &$value) { - $value = isset($value) ? $value : array_get($this->defaults, $key); - } - return $parameters; - } - protected function parseAction($action) - { - if ($action instanceof Closure) { - return array('uses' => $action); - } elseif (!isset($action['uses'])) { - $action['uses'] = $this->findClosure($action); - } - return $action; - } - protected function findClosure(array $action) - { - return array_first($action, function ($key, $value) { - return $value instanceof Closure; - }); - } - public static function getValidators() - { - if (isset(static::$validators)) { - return static::$validators; - } - return static::$validators = array(new MethodValidator(), new SchemeValidator(), new HostValidator(), new UriValidator()); - } - public function before($filters) - { - return $this->addFilters('before', $filters); - } - public function after($filters) - { - return $this->addFilters('after', $filters); - } - protected function addFilters($type, $filters) - { - if (isset($this->action[$type])) { - $this->action[$type] .= '|' . $filters; - } else { - $this->action[$type] = $filters; - } - return $this; - } - public function defaults($key, $value) - { - $this->defaults[$key] = $value; - return $this; - } - public function where($name, $expression = null) - { - foreach ($this->parseWhere($name, $expression) as $name => $expression) { - $this->wheres[$name] = $expression; - } - return $this; - } - protected function parseWhere($name, $expression) - { - return is_array($name) ? $name : array($name => $expression); - } - protected function whereArray(array $wheres) - { - foreach ($wheres as $name => $expression) { - $this->where($name, $expression); - } - return $this; - } - public function prefix($prefix) - { - $this->uri = trim($prefix, '/') . '/' . trim($this->uri, '/'); - return $this; - } - public function getPath() - { - return $this->uri(); - } - public function uri() - { - return $this->uri; - } - public function getMethods() - { - return $this->methods(); - } - public function methods() - { - return $this->methods; - } - public function httpOnly() - { - return in_array('http', $this->action, true); - } - public function httpsOnly() - { - return $this->secure(); - } - public function secure() - { - return in_array('https', $this->action, true); - } - public function domain() - { - return array_get($this->action, 'domain'); - } - public function getUri() - { - return $this->uri; - } - public function setUri($uri) - { - $this->uri = $uri; - return $this; - } - public function getPrefix() - { - return array_get($this->action, 'prefix'); - } - public function getName() - { - return array_get($this->action, 'as'); - } - public function getActionName() - { - return array_get($this->action, 'controller', 'Closure'); - } - public function getAction() - { - return $this->action; - } - public function setAction(array $action) - { - $this->action = $action; - return $this; - } - public function getCompiled() - { - return $this->compiled; - } -} -namespace Illuminate\Routing; - -use Countable; -use ArrayIterator; -use IteratorAggregate; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; -use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException; -class RouteCollection implements Countable, IteratorAggregate -{ - protected $routes = array(); - protected $allRoutes = array(); - protected $nameList = array(); - protected $actionList = array(); - public function add(Route $route) - { - $this->addToCollections($route); - $this->addLookups($route); - return $route; - } - protected function addToCollections($route) - { - foreach ($route->methods() as $method) { - $this->routes[$method][$route->domain() . $route->getUri()] = $route; - } - $this->allRoutes[$method . $route->domain() . $route->getUri()] = $route; - } - protected function addLookups($route) - { - $action = $route->getAction(); - if (isset($action['as'])) { - $this->nameList[$action['as']] = $route; - } - if (isset($action['controller'])) { - $this->addToActionList($action, $route); - } - } - protected function addToActionList($action, $route) - { - if (!isset($this->actionList[$action['controller']])) { - $this->actionList[$action['controller']] = $route; - } - } - public function match(Request $request) - { - $routes = $this->get($request->getMethod()); - $route = $this->check($routes, $request); - if (!is_null($route)) { - return $route->bind($request); - } - $others = $this->checkForAlternateVerbs($request); - if (count($others) > 0) { - return $this->getOtherMethodsRoute($request, $others); - } - throw new NotFoundHttpException(); - } - protected function checkForAlternateVerbs($request) - { - $methods = array_diff(Router::$verbs, array($request->getMethod())); - $others = array(); - foreach ($methods as $method) { - if (!is_null($this->check($this->get($method), $request, false))) { - $others[] = $method; - } - } - return $others; - } - protected function getOtherMethodsRoute($request, array $others) - { - if ($request->method() == 'OPTIONS') { - return with(new Route('OPTIONS', $request->path(), function () use($others) { - return new Response('', 200, array('Allow' => implode(',', $others))); - }))->bind($request); - } else { - $this->methodNotAllowed($others); - } - } - protected function methodNotAllowed(array $others) - { - throw new MethodNotAllowedHttpException($others); - } - protected function check(array $routes, $request, $includingMethod = true) - { - return array_first($routes, function ($key, $value) use($request, $includingMethod) { - return $value->matches($request, $includingMethod); - }); - } - protected function get($method = null) - { - if (is_null($method)) { - return $this->getRoutes(); - } - return array_get($this->routes, $method, array()); - } - public function hasNamedRoute($name) - { - return !is_null($this->getByName($name)); - } - public function getByName($name) - { - return isset($this->nameList[$name]) ? $this->nameList[$name] : null; - } - public function getByAction($action) - { - return isset($this->actionList[$action]) ? $this->actionList[$action] : null; - } - public function getRoutes() - { - return array_values($this->allRoutes); - } - public function getIterator() - { - return new ArrayIterator($this->getRoutes()); - } - public function count() - { - return count($this->getRoutes()); - } -} -namespace Illuminate\Routing; - -use Closure; -use Illuminate\Http\Request; -use Illuminate\Container\Container; -class ControllerDispatcher -{ - protected $filterer; - protected $container; - public function __construct(RouteFiltererInterface $filterer, Container $container = null) - { - $this->filterer = $filterer; - $this->container = $container; - } - public function dispatch(Route $route, Request $request, $controller, $method) - { - $instance = $this->makeController($controller); - $this->assignAfter($instance, $route, $request, $method); - $response = $this->before($instance, $route, $request, $method); - if (is_null($response)) { - $response = $this->call($instance, $route, $method); - } - return $response; - } - protected function makeController($controller) - { - Controller::setFilterer($this->filterer); - return $this->container->make($controller); - } - protected function call($instance, $route, $method) - { - $parameters = $route->parametersWithoutNulls(); - return $instance->callAction($method, $parameters); - } - protected function before($instance, $route, $request, $method) - { - foreach ($instance->getBeforeFilters() as $filter) { - if ($this->filterApplies($filter, $request, $method)) { - $response = $this->callFilter($filter, $route, $request); - if (!is_null($response)) { - return $response; - } - } - } - } - protected function assignAfter($instance, $route, $request, $method) - { - foreach ($instance->getAfterFilters() as $filter) { - if ($this->filterApplies($filter, $request, $method)) { - $route->after($this->getAssignableAfter($filter)); - } - } - } - protected function getAssignableAfter($filter) - { - return $filter['original'] instanceof Closure ? $filter['filter'] : $filter['original']; - } - protected function filterApplies($filter, $request, $method) - { - foreach (array('Only', 'Except', 'On') as $type) { - if ($this->{"filterFails{$type}"}($filter, $request, $method)) { - return false; - } - } - return true; - } - protected function filterFailsOnly($filter, $request, $method) - { - if (!isset($filter['options']['only'])) { - return false; - } - return !in_array($method, (array) $filter['options']['only']); - } - protected function filterFailsExcept($filter, $request, $method) - { - if (!isset($filter['options']['except'])) { - return false; - } - return in_array($method, (array) $filter['options']['except']); - } - protected function filterFailsOn($filter, $request, $method) - { - $on = array_get($filter, 'options.on', null); - if (is_null($on)) { - return false; - } - if (is_string($on)) { - $on = explode('|', $on); - } - return !in_array(strtolower($request->getMethod()), $on); - } - protected function callFilter($filter, $route, $request) - { - extract($filter); - return $this->filterer->callRouteFilter($filter, $parameters, $route, $request); - } -} -namespace Illuminate\Routing; - -use Illuminate\Http\Request; -use InvalidArgumentException; -class UrlGenerator -{ - protected $routes; - protected $request; - protected $forcedRoot; - protected $forceSchema; - protected $dontEncode = array('%2F' => '/', '%40' => '@', '%3A' => ':', '%3B' => ';', '%2C' => ',', '%3D' => '=', '%2B' => '+', '%21' => '!', '%2A' => '*', '%7C' => '|'); - public function __construct(RouteCollection $routes, Request $request) - { - $this->routes = $routes; - $this->setRequest($request); - } - public function full() - { - return $this->request->fullUrl(); - } - public function current() - { - return $this->to($this->request->getPathInfo()); - } - public function previous() - { - return $this->to($this->request->headers->get('referer')); - } - public function to($path, $extra = array(), $secure = null) - { - if ($this->isValidUrl($path)) { - return $path; - } - $scheme = $this->getScheme($secure); - $tail = implode('/', array_map('rawurlencode', (array) $extra)); - $root = $this->getRootUrl($scheme); - return $this->trimUrl($root, $path, $tail); - } - public function secure($path, $parameters = array()) - { - return $this->to($path, $parameters, true); - } - public function asset($path, $secure = null) - { - if ($this->isValidUrl($path)) { - return $path; - } - $root = $this->getRootUrl($this->getScheme($secure)); - return $this->removeIndex($root) . '/' . trim($path, '/'); - } - protected function removeIndex($root) - { - $i = 'index.php'; - return str_contains($root, $i) ? str_replace('/' . $i, '', $root) : $root; - } - public function secureAsset($path) - { - return $this->asset($path, true); - } - protected function getScheme($secure) - { - if (is_null($secure)) { - return $this->forceSchema ?: $this->request->getScheme() . '://'; - } else { - return $secure ? 'https://' : 'http://'; - } - } - public function forceSchema($schema) - { - $this->forceSchema = $schema . '://'; - } - public function route($name, $parameters = array(), $absolute = true, $route = null) - { - $route = $route ?: $this->routes->getByName($name); - $parameters = (array) $parameters; - if (!is_null($route)) { - return $this->toRoute($route, $parameters, $absolute); - } else { - throw new InvalidArgumentException("Route [{$name}] not defined."); - } - } - protected function toRoute($route, array $parameters, $absolute) - { - $domain = $this->getRouteDomain($route, $parameters); - $uri = strtr(rawurlencode($this->trimUrl($root = $this->replaceRoot($route, $domain, $parameters), $this->replaceRouteParameters($route->uri(), $parameters))), $this->dontEncode) . $this->getRouteQueryString($parameters); - return $absolute ? $uri : '/' . ltrim(str_replace($root, '', $uri), '/'); - } - protected function replaceRoot($route, $domain, &$parameters) - { - return $this->replaceRouteParameters($this->getRouteRoot($route, $domain), $parameters); - } - protected function replaceRouteParameters($path, array &$parameters) - { - if (count($parameters)) { - $path = preg_replace_sub('/\\{.*?\\}/', $parameters, $this->replaceNamedParameters($path, $parameters)); - } - return trim(preg_replace('/\\{.*?\\?\\}/', '', $path), '/'); - } - protected function replaceNamedParameters($path, &$parameters) - { - return preg_replace_callback('/\\{(.*?)\\??\\}/', function ($m) use(&$parameters) { - return isset($parameters[$m[1]]) ? array_pull($parameters, $m[1]) : $m[0]; - }, $path); - } - protected function getRouteQueryString(array $parameters) - { - if (count($parameters) == 0) { - return ''; - } - $query = http_build_query($keyed = $this->getStringParameters($parameters)); - if (count($keyed) < count($parameters)) { - $query .= '&' . implode('&', $this->getNumericParameters($parameters)); - } - return '?' . trim($query, '&'); - } - protected function getStringParameters(array $parameters) - { - return array_where($parameters, function ($k, $v) { - return is_string($k); - }); - } - protected function getNumericParameters(array $parameters) - { - return array_where($parameters, function ($k, $v) { - return is_numeric($k); - }); - } - protected function getRouteDomain($route, &$parameters) - { - return $route->domain() ? $this->formatDomain($route, $parameters) : null; - } - protected function formatDomain($route, &$parameters) - { - return $this->addPortToDomain($this->getDomainAndScheme($route)); - } - protected function getDomainAndScheme($route) - { - return $this->getRouteScheme($route) . $route->domain(); - } - protected function addPortToDomain($domain) - { - if (in_array($this->request->getPort(), array('80', '443'))) { - return $domain; - } else { - return $domain .= ':' . $this->request->getPort(); - } - } - protected function getRouteRoot($route, $domain) - { - return $this->getRootUrl($this->getRouteScheme($route), $domain); - } - protected function getRouteScheme($route) - { - if ($route->httpOnly()) { - return $this->getScheme(false); - } elseif ($route->httpsOnly()) { - return $this->getScheme(true); - } else { - return $this->getScheme(null); - } - } - public function action($action, $parameters = array(), $absolute = true) - { - return $this->route($action, $parameters, $absolute, $this->routes->getByAction($action)); - } - protected function getRootUrl($scheme, $root = null) - { - if (is_null($root)) { - $root = $this->forcedRoot ?: $this->request->root(); - } - $start = starts_with($root, 'http://') ? 'http://' : 'https://'; - return preg_replace('~' . $start . '~', $scheme, $root, 1); - } - public function forceRootUrl($root) - { - $this->forcedRoot = $root; - } - public function isValidUrl($path) - { - if (starts_with($path, array('#', '//', 'mailto:', 'tel:'))) { - return true; - } - return filter_var($path, FILTER_VALIDATE_URL) !== false; - } - protected function trimUrl($root, $path, $tail = '') - { - return trim($root . '/' . trim($path . '/' . $tail, '/'), '/'); - } - public function getRequest() - { - return $this->request; - } - public function setRequest(Request $request) - { - $this->request = $request; - } -} -namespace Illuminate\Routing\Matching; - -use Illuminate\Http\Request; -use Illuminate\Routing\Route; -interface ValidatorInterface -{ - public function matches(Route $route, Request $request); -} -namespace Illuminate\Routing\Matching; - -use Illuminate\Http\Request; -use Illuminate\Routing\Route; -class HostValidator implements ValidatorInterface -{ - public function matches(Route $route, Request $request) - { - if (is_null($route->getCompiled()->getHostRegex())) { - return true; - } - return preg_match($route->getCompiled()->getHostRegex(), $request->getHost()); - } -} -namespace Illuminate\Routing\Matching; - -use Illuminate\Http\Request; -use Illuminate\Routing\Route; -class MethodValidator implements ValidatorInterface -{ - public function matches(Route $route, Request $request) - { - return in_array($request->getMethod(), $route->methods()); - } -} -namespace Illuminate\Routing\Matching; - -use Illuminate\Http\Request; -use Illuminate\Routing\Route; -class SchemeValidator implements ValidatorInterface -{ - public function matches(Route $route, Request $request) - { - if ($route->httpOnly()) { - return !$request->secure(); - } elseif ($route->secure()) { - return $request->secure(); - } - return true; - } -} -namespace Illuminate\Routing\Matching; - -use Illuminate\Http\Request; -use Illuminate\Routing\Route; -class UriValidator implements ValidatorInterface -{ - public function matches(Route $route, Request $request) - { - $path = $request->path() == '/' ? '/' : '/' . $request->path(); - return preg_match($route->getCompiled()->getRegex(), rawurldecode($path)); - } -} -namespace Illuminate\Workbench; - -use Illuminate\Support\ServiceProvider; -use Illuminate\Workbench\Console\WorkbenchMakeCommand; -class WorkbenchServiceProvider extends ServiceProvider -{ - protected $defer = false; - public function register() - { - $this->app->bindShared('package.creator', function ($app) { - return new PackageCreator($app['files']); - }); - $this->app->bindShared('command.workbench', function ($app) { - return new WorkbenchMakeCommand($app['package.creator']); - }); - $this->commands('command.workbench'); - } - public function provides() - { - return array('package.creator', 'command.workbench'); - } -} -namespace Illuminate\Events; - -use Illuminate\Container\Container; -class Dispatcher -{ - protected $container; - protected $listeners = array(); - protected $wildcards = array(); - protected $sorted = array(); - protected $firing = array(); - public function __construct(Container $container = null) - { - $this->container = $container ?: new Container(); - } - public function listen($events, $listener, $priority = 0) - { - foreach ((array) $events as $event) { - if (str_contains($event, '*')) { - return $this->setupWildcardListen($event, $listener); - } - $this->listeners[$event][$priority][] = $this->makeListener($listener); - unset($this->sorted[$event]); - } - } - protected function setupWildcardListen($event, $listener) - { - $this->wildcards[$event][] = $this->makeListener($listener); - } - public function hasListeners($eventName) - { - return isset($this->listeners[$eventName]); - } - public function queue($event, $payload = array()) - { - $this->listen($event . '_queue', function () use($event, $payload) { - $this->fire($event, $payload); - }); - } - public function subscribe($subscriber) - { - $subscriber = $this->resolveSubscriber($subscriber); - $subscriber->subscribe($this); - } - protected function resolveSubscriber($subscriber) - { - if (is_string($subscriber)) { - return $this->container->make($subscriber); - } - return $subscriber; - } - public function until($event, $payload = array()) - { - return $this->fire($event, $payload, true); - } - public function flush($event) - { - $this->fire($event . '_queue'); - } - public function firing() - { - return last($this->firing); - } - public function fire($event, $payload = array(), $halt = false) - { - $responses = array(); - if (!is_array($payload)) { - $payload = array($payload); - } - $this->firing[] = $event; - foreach ($this->getListeners($event) as $listener) { - $response = call_user_func_array($listener, $payload); - if (!is_null($response) && $halt) { - array_pop($this->firing); - return $response; - } - if ($response === false) { - break; - } - $responses[] = $response; - } - array_pop($this->firing); - return $halt ? null : $responses; - } - public function getListeners($eventName) - { - $wildcards = $this->getWildcardListeners($eventName); - if (!isset($this->sorted[$eventName])) { - $this->sortListeners($eventName); - } - return array_merge($this->sorted[$eventName], $wildcards); - } - protected function getWildcardListeners($eventName) - { - $wildcards = array(); - foreach ($this->wildcards as $key => $listeners) { - if (str_is($key, $eventName)) { - $wildcards = array_merge($wildcards, $listeners); - } - } - return $wildcards; - } - protected function sortListeners($eventName) - { - $this->sorted[$eventName] = array(); - if (isset($this->listeners[$eventName])) { - krsort($this->listeners[$eventName]); - $this->sorted[$eventName] = call_user_func_array('array_merge', $this->listeners[$eventName]); - } - } - public function makeListener($listener) - { - if (is_string($listener)) { - $listener = $this->createClassListener($listener); - } - return $listener; - } - public function createClassListener($listener) - { - $container = $this->container; - return function () use($listener, $container) { - $segments = explode('@', $listener); - $method = count($segments) == 2 ? $segments[1] : 'handle'; - $callable = array($container->make($segments[0]), $method); - $data = func_get_args(); - return call_user_func_array($callable, $data); - }; - } - public function forget($event) - { - unset($this->listeners[$event]); - unset($this->sorted[$event]); - } -} -namespace Illuminate\Database\Eloquent; - -use DateTime; -use ArrayAccess; -use Carbon\Carbon; -use LogicException; -use JsonSerializable; -use Illuminate\Events\Dispatcher; -use Illuminate\Database\Eloquent\Relations\Pivot; -use Illuminate\Database\Eloquent\Relations\HasOne; -use Illuminate\Database\Eloquent\Relations\HasMany; -use Illuminate\Database\Eloquent\Relations\MorphTo; -use Illuminate\Support\Contracts\JsonableInterface; -use Illuminate\Support\Contracts\ArrayableInterface; -use Illuminate\Database\Eloquent\Relations\Relation; -use Illuminate\Database\Eloquent\Relations\MorphOne; -use Illuminate\Database\Eloquent\Relations\MorphMany; -use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Illuminate\Database\Query\Builder as QueryBuilder; -use Illuminate\Database\Eloquent\Relations\MorphToMany; -use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use Illuminate\Database\Eloquent\Relations\HasManyThrough; -use Illuminate\Database\ConnectionResolverInterface as Resolver; -abstract class Model implements ArrayAccess, ArrayableInterface, JsonableInterface, JsonSerializable -{ - protected $connection; - protected $table; - protected $primaryKey = 'id'; - protected $perPage = 15; - public $incrementing = true; - public $timestamps = true; - protected $attributes = array(); - protected $original = array(); - protected $relations = array(); - protected $hidden = array(); - protected $visible = array(); - protected $appends = array(); - protected $fillable = array(); - protected $guarded = array('*'); - protected $dates = array(); - protected $touches = array(); - protected $observables = array(); - protected $with = array(); - protected $morphClass; - public $exists = false; - public static $snakeAttributes = true; - protected static $resolver; - protected static $dispatcher; - protected static $booted = array(); - protected static $globalScopes = array(); - protected static $unguarded = false; - protected static $mutatorCache = array(); - public static $manyMethods = array('belongsToMany', 'morphToMany', 'morphedByMany'); - const CREATED_AT = 'created_at'; - const UPDATED_AT = 'updated_at'; - public function __construct(array $attributes = array()) - { - $this->bootIfNotBooted(); - $this->syncOriginal(); - $this->fill($attributes); - } - protected function bootIfNotBooted() - { - if (!isset(static::$booted[get_class($this)])) { - static::$booted[get_class($this)] = true; - $this->fireModelEvent('booting', false); - static::boot(); - $this->fireModelEvent('booted', false); - } - } - protected static function boot() - { - $class = get_called_class(); - static::$mutatorCache[$class] = array(); - foreach (get_class_methods($class) as $method) { - if (preg_match('/^get(.+)Attribute$/', $method, $matches)) { - if (static::$snakeAttributes) { - $matches[1] = snake_case($matches[1]); - } - static::$mutatorCache[$class][] = lcfirst($matches[1]); - } - } - static::bootTraits(); - } - protected static function bootTraits() - { - foreach (class_uses(get_called_class()) as $trait) { - if (method_exists(get_called_class(), $method = 'boot' . class_basename($trait))) { - forward_static_call(array(get_called_class(), $method)); - } - } - } - public static function addGlobalScope(ScopeInterface $scope) - { - static::$globalScopes[get_called_class()][get_class($scope)] = $scope; - } - public static function hasGlobalScope($scope) - { - return !is_null(static::getGlobalScope($scope)); - } - public static function getGlobalScope($scope) - { - return array_first(static::$globalScopes[get_called_class()], function ($key, $value) use($scope) { - return $scope instanceof $value; - }); - } - public function getGlobalScopes() - { - return array_get(static::$globalScopes, get_class($this), array()); - } - public static function observe($class) - { - $instance = new static(); - $className = get_class($class); - foreach ($instance->getObservableEvents() as $event) { - if (method_exists($class, $event)) { - static::registerModelEvent($event, $className . '@' . $event); - } - } - } - public function fill(array $attributes) - { - $totallyGuarded = $this->totallyGuarded(); - foreach ($this->fillableFromArray($attributes) as $key => $value) { - $key = $this->removeTableFromKey($key); - if ($this->isFillable($key)) { - $this->setAttribute($key, $value); - } elseif ($totallyGuarded) { - throw new MassAssignmentException($key); - } - } - return $this; - } - protected function fillableFromArray(array $attributes) - { - if (count($this->fillable) > 0 && !static::$unguarded) { - return array_intersect_key($attributes, array_flip($this->fillable)); - } - return $attributes; - } - public function newInstance($attributes = array(), $exists = false) - { - $model = new static((array) $attributes); - $model->exists = $exists; - return $model; - } - public function newFromBuilder($attributes = array()) - { - $instance = $this->newInstance(array(), true); - $instance->setRawAttributes((array) $attributes, true); - return $instance; - } - public static function hydrate(array $items, $connection = null) - { - $collection = with($instance = new static())->newCollection(); - foreach ($items as $item) { - $model = $instance->newFromBuilder($item); - if (!is_null($connection)) { - $model->setConnection($connection); - } - $collection->push($model); - } - return $collection; - } - public static function hydrateRaw($query, $bindings = array(), $connection = null) - { - $instance = new static(); - if (!is_null($connection)) { - $instance->setConnection($connection); - } - $items = $instance->getConnection()->select($query, $bindings); - return static::hydrate($items, $connection); - } - public static function create(array $attributes) - { - $model = new static($attributes); - $model->save(); - return $model; - } - public static function firstOrCreate(array $attributes) - { - if (!is_null($instance = static::firstByAttributes($attributes))) { - return $instance; - } - return static::create($attributes); - } - public static function firstOrNew(array $attributes) - { - if (!is_null($instance = static::firstByAttributes($attributes))) { - return $instance; - } - return new static($attributes); - } - protected static function firstByAttributes($attributes) - { - $query = static::query(); - foreach ($attributes as $key => $value) { - $query->where($key, $value); - } - return $query->first() ?: null; - } - public static function query() - { - return with(new static())->newQuery(); - } - public static function on($connection = null) - { - $instance = new static(); - $instance->setConnection($connection); - return $instance->newQuery(); - } - public static function all($columns = array('*')) - { - $instance = new static(); - return $instance->newQuery()->get($columns); - } - public static function find($id, $columns = array('*')) - { - if (is_array($id) && empty($id)) { - return new Collection(); - } - $instance = new static(); - return $instance->newQuery()->find($id, $columns); - } - public static function findOrNew($id, $columns = array('*')) - { - if (!is_null($model = static::find($id, $columns))) { - return $model; - } - return new static($columns); - } - public static function findOrFail($id, $columns = array('*')) - { - if (!is_null($model = static::find($id, $columns))) { - return $model; - } - throw with(new ModelNotFoundException())->setModel(get_called_class()); - } - public function load($relations) - { - if (is_string($relations)) { - $relations = func_get_args(); - } - $query = $this->newQuery()->with($relations); - $query->eagerLoadRelations(array($this)); - return $this; - } - public static function with($relations) - { - if (is_string($relations)) { - $relations = func_get_args(); - } - $instance = new static(); - return $instance->newQuery()->with($relations); - } - public function hasOne($related, $foreignKey = null, $localKey = null) - { - $foreignKey = $foreignKey ?: $this->getForeignKey(); - $instance = new $related(); - $localKey = $localKey ?: $this->getKeyName(); - return new HasOne($instance->newQuery(), $this, $instance->getTable() . '.' . $foreignKey, $localKey); - } - public function morphOne($related, $name, $type = null, $id = null, $localKey = null) - { - $instance = new $related(); - list($type, $id) = $this->getMorphs($name, $type, $id); - $table = $instance->getTable(); - $localKey = $localKey ?: $this->getKeyName(); - return new MorphOne($instance->newQuery(), $this, $table . '.' . $type, $table . '.' . $id, $localKey); - } - public function belongsTo($related, $foreignKey = null, $otherKey = null, $relation = null) - { - if (is_null($relation)) { - list(, $caller) = debug_backtrace(false); - $relation = $caller['function']; - } - if (is_null($foreignKey)) { - $foreignKey = snake_case($relation) . '_id'; - } - $instance = new $related(); - $query = $instance->newQuery(); - $otherKey = $otherKey ?: $instance->getKeyName(); - return new BelongsTo($query, $this, $foreignKey, $otherKey, $relation); - } - public function morphTo($name = null, $type = null, $id = null) - { - if (is_null($name)) { - list(, $caller) = debug_backtrace(false); - $name = snake_case($caller['function']); - } - list($type, $id) = $this->getMorphs($name, $type, $id); - if (is_null($class = $this->{$type})) { - return new MorphTo($this->newQuery(), $this, $id, null, $type, $name); - } else { - $instance = new $class(); - return new MorphTo(with($instance)->newQuery(), $this, $id, $instance->getKeyName(), $type, $name); - } - } - public function hasMany($related, $foreignKey = null, $localKey = null) - { - $foreignKey = $foreignKey ?: $this->getForeignKey(); - $instance = new $related(); - $localKey = $localKey ?: $this->getKeyName(); - return new HasMany($instance->newQuery(), $this, $instance->getTable() . '.' . $foreignKey, $localKey); - } - public function hasManyThrough($related, $through, $firstKey = null, $secondKey = null) - { - $through = new $through(); - $firstKey = $firstKey ?: $this->getForeignKey(); - $secondKey = $secondKey ?: $through->getForeignKey(); - return new HasManyThrough(with(new $related())->newQuery(), $this, $through, $firstKey, $secondKey); - } - public function morphMany($related, $name, $type = null, $id = null, $localKey = null) - { - $instance = new $related(); - list($type, $id) = $this->getMorphs($name, $type, $id); - $table = $instance->getTable(); - $localKey = $localKey ?: $this->getKeyName(); - return new MorphMany($instance->newQuery(), $this, $table . '.' . $type, $table . '.' . $id, $localKey); - } - public function belongsToMany($related, $table = null, $foreignKey = null, $otherKey = null, $relation = null) - { - if (is_null($relation)) { - $relation = $this->getBelongsToManyCaller(); - } - $foreignKey = $foreignKey ?: $this->getForeignKey(); - $instance = new $related(); - $otherKey = $otherKey ?: $instance->getForeignKey(); - if (is_null($table)) { - $table = $this->joiningTable($related); - } - $query = $instance->newQuery(); - return new BelongsToMany($query, $this, $table, $foreignKey, $otherKey, $relation); - } - public function morphToMany($related, $name, $table = null, $foreignKey = null, $otherKey = null, $inverse = false) - { - $caller = $this->getBelongsToManyCaller(); - $foreignKey = $foreignKey ?: $name . '_id'; - $instance = new $related(); - $otherKey = $otherKey ?: $instance->getForeignKey(); - $query = $instance->newQuery(); - $table = $table ?: str_plural($name); - return new MorphToMany($query, $this, $name, $table, $foreignKey, $otherKey, $caller, $inverse); - } - public function morphedByMany($related, $name, $table = null, $foreignKey = null, $otherKey = null) - { - $foreignKey = $foreignKey ?: $this->getForeignKey(); - $otherKey = $otherKey ?: $name . '_id'; - return $this->morphToMany($related, $name, $table, $foreignKey, $otherKey, true); - } - protected function getBelongsToManyCaller() - { - $self = __FUNCTION__; - $caller = array_first(debug_backtrace(false), function ($key, $trace) use($self) { - $caller = $trace['function']; - return !in_array($caller, Model::$manyMethods) && $caller != $self; - }); - return !is_null($caller) ? $caller['function'] : null; - } - public function joiningTable($related) - { - $base = snake_case(class_basename($this)); - $related = snake_case(class_basename($related)); - $models = array($related, $base); - sort($models); - return strtolower(implode('_', $models)); - } - public static function destroy($ids) - { - $count = 0; - $ids = is_array($ids) ? $ids : func_get_args(); - $instance = new static(); - $key = $instance->getKeyName(); - foreach ($instance->whereIn($key, $ids)->get() as $model) { - if ($model->delete()) { - $count++; - } - } - return $count; - } - public function delete() - { - if (is_null($this->primaryKey)) { - throw new \Exception('No primary key defined on model.'); - } - if ($this->exists) { - if ($this->fireModelEvent('deleting') === false) { - return false; - } - $this->touchOwners(); - $this->performDeleteOnModel(); - $this->exists = false; - $this->fireModelEvent('deleted', false); - return true; - } - } - protected function performDeleteOnModel() - { - $this->newQuery()->where($this->getKeyName(), $this->getKey())->delete(); - } - public static function saving($callback) - { - static::registerModelEvent('saving', $callback); - } - public static function saved($callback) - { - static::registerModelEvent('saved', $callback); - } - public static function updating($callback) - { - static::registerModelEvent('updating', $callback); - } - public static function updated($callback) - { - static::registerModelEvent('updated', $callback); - } - public static function creating($callback) - { - static::registerModelEvent('creating', $callback); - } - public static function created($callback) - { - static::registerModelEvent('created', $callback); - } - public static function deleting($callback) - { - static::registerModelEvent('deleting', $callback); - } - public static function deleted($callback) - { - static::registerModelEvent('deleted', $callback); - } - public static function flushEventListeners() - { - if (!isset(static::$dispatcher)) { - return; - } - $instance = new static(); - foreach ($instance->getObservableEvents() as $event) { - static::$dispatcher->forget("eloquent.{$event}: " . get_called_class()); - } - } - protected static function registerModelEvent($event, $callback) - { - if (isset(static::$dispatcher)) { - $name = get_called_class(); - static::$dispatcher->listen("eloquent.{$event}: {$name}", $callback); - } - } - public function getObservableEvents() - { - return array_merge(array('creating', 'created', 'updating', 'updated', 'deleting', 'deleted', 'saving', 'saved', 'restoring', 'restored'), $this->observables); - } - protected function increment($column, $amount = 1) - { - return $this->incrementOrDecrement($column, $amount, 'increment'); - } - protected function decrement($column, $amount = 1) - { - return $this->incrementOrDecrement($column, $amount, 'decrement'); - } - protected function incrementOrDecrement($column, $amount, $method) - { - $query = $this->newQuery(); - if (!$this->exists) { - return $query->{$method}($column, $amount); - } - return $query->where($this->getKeyName(), $this->getKey())->{$method}($column, $amount); - } - public function update(array $attributes = array()) - { - if (!$this->exists) { - return $this->newQuery()->update($attributes); - } - return $this->fill($attributes)->save(); - } - public function push() - { - if (!$this->save()) { - return false; - } - foreach ($this->relations as $models) { - foreach (Collection::make($models) as $model) { - if (!$model->push()) { - return false; - } - } - } - return true; - } - public function save(array $options = array()) - { - $query = $this->newQueryWithoutScopes(); - if ($this->fireModelEvent('saving') === false) { - return false; - } - if ($this->exists) { - $saved = $this->performUpdate($query); - } else { - $saved = $this->performInsert($query); - } - if ($saved) { - $this->finishSave($options); - } - return $saved; - } - protected function finishSave(array $options) - { - $this->syncOriginal(); - $this->fireModelEvent('saved', false); - if (array_get($options, 'touch', true)) { - $this->touchOwners(); - } - } - protected function performUpdate(Builder $query) - { - $dirty = $this->getDirty(); - if (count($dirty) > 0) { - if ($this->fireModelEvent('updating') === false) { - return false; - } - if ($this->timestamps) { - $this->updateTimestamps(); - } - $dirty = $this->getDirty(); - if (count($dirty) > 0) { - $this->setKeysForSaveQuery($query)->update($dirty); - $this->fireModelEvent('updated', false); - } - } - return true; - } - protected function performInsert(Builder $query) - { - if ($this->fireModelEvent('creating') === false) { - return false; - } - if ($this->timestamps) { - $this->updateTimestamps(); - } - $attributes = $this->attributes; - if ($this->incrementing) { - $this->insertAndSetId($query, $attributes); - } else { - $query->insert($attributes); - } - $this->exists = true; - $this->fireModelEvent('created', false); - return true; - } - protected function insertAndSetId(Builder $query, $attributes) - { - $id = $query->insertGetId($attributes, $keyName = $this->getKeyName()); - $this->setAttribute($keyName, $id); - } - public function touchOwners() - { - foreach ($this->touches as $relation) { - $this->{$relation}()->touch(); - } - } - public function touches($relation) - { - return in_array($relation, $this->touches); - } - protected function fireModelEvent($event, $halt = true) - { - if (!isset(static::$dispatcher)) { - return true; - } - $event = "eloquent.{$event}: " . get_class($this); - $method = $halt ? 'until' : 'fire'; - return static::$dispatcher->{$method}($event, $this); - } - protected function setKeysForSaveQuery(Builder $query) - { - $query->where($this->getKeyName(), '=', $this->getKeyForSaveQuery()); - return $query; - } - protected function getKeyForSaveQuery() - { - if (isset($this->original[$this->getKeyName()])) { - return $this->original[$this->getKeyName()]; - } else { - return $this->getAttribute($this->getKeyName()); - } - } - public function touch() - { - $this->updateTimestamps(); - return $this->save(); - } - protected function updateTimestamps() - { - $time = $this->freshTimestamp(); - if (!$this->isDirty(static::UPDATED_AT)) { - $this->setUpdatedAt($time); - } - if (!$this->exists && !$this->isDirty(static::CREATED_AT)) { - $this->setCreatedAt($time); - } - } - public function setCreatedAt($value) - { - $this->{static::CREATED_AT} = $value; - } - public function setUpdatedAt($value) - { - $this->{static::UPDATED_AT} = $value; - } - public function getCreatedAtColumn() - { - return static::CREATED_AT; - } - public function getUpdatedAtColumn() - { - return static::UPDATED_AT; - } - public function freshTimestamp() - { - return new Carbon(); - } - public function freshTimestampString() - { - return $this->fromDateTime($this->freshTimestamp()); - } - public function newQuery() - { - $builder = $this->newEloquentBuilder($this->newBaseQueryBuilder()); - $builder->setModel($this)->with($this->with); - return $this->applyGlobalScopes($builder); - } - public function newQueryWithoutScope($scope) - { - $this->getGlobalScope($scope)->remove($builder = $this->newQuery(), $this); - return $builder; - } - public function newQueryWithoutScopes() - { - return $this->removeGlobalScopes($this->newQuery()); - } - public function applyGlobalScopes($builder) - { - foreach ($this->getGlobalScopes() as $scope) { - $scope->apply($builder, $this); - } - return $builder; - } - public function removeGlobalScopes($builder) - { - foreach ($this->getGlobalScopes() as $scope) { - $scope->remove($builder, $this); - } - return $builder; - } - public function newEloquentBuilder($query) - { - return new Builder($query); - } - protected function newBaseQueryBuilder() - { - $conn = $this->getConnection(); - $grammar = $conn->getQueryGrammar(); - return new QueryBuilder($conn, $grammar, $conn->getPostProcessor()); - } - public function newCollection(array $models = array()) - { - return new Collection($models); - } - public function newPivot(Model $parent, array $attributes, $table, $exists) - { - return new Pivot($parent, $attributes, $table, $exists); - } - public function getTable() - { - if (isset($this->table)) { - return $this->table; - } - return str_replace('\\', '', snake_case(str_plural(class_basename($this)))); - } - public function setTable($table) - { - $this->table = $table; - } - public function getKey() - { - return $this->getAttribute($this->getKeyName()); - } - public function getKeyName() - { - return $this->primaryKey; - } - public function getQualifiedKeyName() - { - return $this->getTable() . '.' . $this->getKeyName(); - } - public function usesTimestamps() - { - return $this->timestamps; - } - protected function getMorphs($name, $type, $id) - { - $type = $type ?: $name . '_type'; - $id = $id ?: $name . '_id'; - return array($type, $id); - } - public function getMorphClass() - { - return $this->morphClass ?: get_class($this); - } - public function getPerPage() - { - return $this->perPage; - } - public function setPerPage($perPage) - { - $this->perPage = $perPage; - } - public function getForeignKey() - { - return snake_case(class_basename($this)) . '_id'; - } - public function getHidden() - { - return $this->hidden; - } - public function setHidden(array $hidden) - { - $this->hidden = $hidden; - } - public function setVisible(array $visible) - { - $this->visible = $visible; - } - public function setAppends(array $appends) - { - $this->appends = $appends; - } - public function getFillable() - { - return $this->fillable; - } - public function fillable(array $fillable) - { - $this->fillable = $fillable; - return $this; - } - public function guard(array $guarded) - { - $this->guarded = $guarded; - return $this; - } - public static function unguard() - { - static::$unguarded = true; - } - public static function reguard() - { - static::$unguarded = false; - } - public static function setUnguardState($state) - { - static::$unguarded = $state; - } - public function isFillable($key) - { - if (static::$unguarded) { - return true; - } - if (in_array($key, $this->fillable)) { - return true; - } - if ($this->isGuarded($key)) { - return false; - } - return empty($this->fillable) && !starts_with($key, '_'); - } - public function isGuarded($key) - { - return in_array($key, $this->guarded) || $this->guarded == array('*'); - } - public function totallyGuarded() - { - return count($this->fillable) == 0 && $this->guarded == array('*'); - } - protected function removeTableFromKey($key) - { - if (!str_contains($key, '.')) { - return $key; - } - return last(explode('.', $key)); - } - public function getTouchedRelations() - { - return $this->touches; - } - public function setTouchedRelations(array $touches) - { - $this->touches = $touches; - } - public function getIncrementing() - { - return $this->incrementing; - } - public function setIncrementing($value) - { - $this->incrementing = $value; - } - public function toJson($options = 0) - { - return json_encode($this->toArray(), $options); - } - public function jsonSerialize() - { - return $this->toArray(); - } - public function toArray() - { - $attributes = $this->attributesToArray(); - return array_merge($attributes, $this->relationsToArray()); - } - public function attributesToArray() - { - $attributes = $this->getArrayableAttributes(); - foreach ($this->getDates() as $key) { - if (!isset($attributes[$key])) { - continue; - } - $attributes[$key] = (string) $this->asDateTime($attributes[$key]); - } - foreach ($this->getMutatedAttributes() as $key) { - if (!array_key_exists($key, $attributes)) { - continue; - } - $attributes[$key] = $this->mutateAttributeForArray($key, $attributes[$key]); - } - foreach ($this->appends as $key) { - $attributes[$key] = $this->mutateAttributeForArray($key, null); - } - return $attributes; - } - protected function getArrayableAttributes() - { - return $this->getArrayableItems($this->attributes); - } - public function relationsToArray() - { - $attributes = array(); - foreach ($this->getArrayableRelations() as $key => $value) { - if (in_array($key, $this->hidden)) { - continue; - } - if ($value instanceof ArrayableInterface) { - $relation = $value->toArray(); - } elseif (is_null($value)) { - $relation = $value; - } - if (static::$snakeAttributes) { - $key = snake_case($key); - } - if (isset($relation) || is_null($value)) { - $attributes[$key] = $relation; - } - } - return $attributes; - } - protected function getArrayableRelations() - { - return $this->getArrayableItems($this->relations); - } - protected function getArrayableItems(array $values) - { - if (count($this->visible) > 0) { - return array_intersect_key($values, array_flip($this->visible)); - } - return array_diff_key($values, array_flip($this->hidden)); - } - public function getAttribute($key) - { - $inAttributes = array_key_exists($key, $this->attributes); - if ($inAttributes || $this->hasGetMutator($key)) { - return $this->getAttributeValue($key); - } - if (array_key_exists($key, $this->relations)) { - return $this->relations[$key]; - } - $camelKey = camel_case($key); - if (method_exists($this, $camelKey)) { - return $this->getRelationshipFromMethod($key, $camelKey); - } - } - protected function getAttributeValue($key) - { - $value = $this->getAttributeFromArray($key); - if ($this->hasGetMutator($key)) { - return $this->mutateAttribute($key, $value); - } elseif (in_array($key, $this->getDates())) { - if ($value) { - return $this->asDateTime($value); - } - } - return $value; - } - protected function getAttributeFromArray($key) - { - if (array_key_exists($key, $this->attributes)) { - return $this->attributes[$key]; - } - } - protected function getRelationshipFromMethod($key, $camelKey) - { - $relations = $this->{$camelKey}(); - if (!$relations instanceof Relation) { - throw new LogicException('Relationship method must return an object of type ' . 'Illuminate\\Database\\Eloquent\\Relations\\Relation'); - } - return $this->relations[$key] = $relations->getResults(); - } - public function hasGetMutator($key) - { - return method_exists($this, 'get' . studly_case($key) . 'Attribute'); - } - protected function mutateAttribute($key, $value) - { - return $this->{'get' . studly_case($key) . 'Attribute'}($value); - } - protected function mutateAttributeForArray($key, $value) - { - $value = $this->mutateAttribute($key, $value); - return $value instanceof ArrayableInterface ? $value->toArray() : $value; - } - public function setAttribute($key, $value) - { - if ($this->hasSetMutator($key)) { - $method = 'set' . studly_case($key) . 'Attribute'; - return $this->{$method}($value); - } elseif (in_array($key, $this->getDates())) { - if ($value) { - $value = $this->fromDateTime($value); - } - } - $this->attributes[$key] = $value; - } - public function hasSetMutator($key) - { - return method_exists($this, 'set' . studly_case($key) . 'Attribute'); - } - public function getDates() - { - $defaults = array(static::CREATED_AT, static::UPDATED_AT); - return array_merge($this->dates, $defaults); - } - public function fromDateTime($value) - { - $format = $this->getDateFormat(); - if ($value instanceof DateTime) { - - } elseif (is_numeric($value)) { - $value = Carbon::createFromTimestamp($value); - } elseif (preg_match('/^(\\d{4})-(\\d{2})-(\\d{2})$/', $value)) { - $value = Carbon::createFromFormat('Y-m-d', $value)->startOfDay(); - } elseif (!$value instanceof DateTime) { - $value = Carbon::createFromFormat($format, $value); - } - return $value->format($format); - } - protected function asDateTime($value) - { - if (is_numeric($value)) { - return Carbon::createFromTimestamp($value); - } elseif (preg_match('/^(\\d{4})-(\\d{2})-(\\d{2})$/', $value)) { - return Carbon::createFromFormat('Y-m-d', $value)->startOfDay(); - } elseif (!$value instanceof DateTime) { - $format = $this->getDateFormat(); - return Carbon::createFromFormat($format, $value); - } - return Carbon::instance($value); - } - protected function getDateFormat() - { - return $this->getConnection()->getQueryGrammar()->getDateFormat(); - } - public function replicate() - { - $attributes = array_except($this->attributes, array($this->getKeyName())); - with($instance = new static())->setRawAttributes($attributes); - return $instance->setRelations($this->relations); - } - public function getAttributes() - { - return $this->attributes; - } - public function setRawAttributes(array $attributes, $sync = false) - { - $this->attributes = $attributes; - if ($sync) { - $this->syncOriginal(); - } - } - public function getOriginal($key = null, $default = null) - { - return array_get($this->original, $key, $default); - } - public function syncOriginal() - { - $this->original = $this->attributes; - return $this; - } - public function isDirty($attribute = null) - { - $dirty = $this->getDirty(); - if (is_null($attribute)) { - return count($dirty) > 0; - } else { - return array_key_exists($attribute, $dirty); - } - } - public function getDirty() - { - $dirty = array(); - foreach ($this->attributes as $key => $value) { - if (!array_key_exists($key, $this->original)) { - $dirty[$key] = $value; - } elseif ($value !== $this->original[$key] && !$this->originalIsNumericallyEquivalent($key)) { - $dirty[$key] = $value; - } - } - return $dirty; - } - protected function originalIsNumericallyEquivalent($key) - { - $current = $this->attributes[$key]; - $original = $this->original[$key]; - return is_numeric($current) && is_numeric($original) && strcmp((string) $current, (string) $original) === 0; - } - public function getRelations() - { - return $this->relations; - } - public function getRelation($relation) - { - return $this->relations[$relation]; - } - public function setRelation($relation, $value) - { - $this->relations[$relation] = $value; - return $this; - } - public function setRelations(array $relations) - { - $this->relations = $relations; - return $this; - } - public function getConnection() - { - return static::resolveConnection($this->connection); - } - public function getConnectionName() - { - return $this->connection; - } - public function setConnection($name) - { - $this->connection = $name; - return $this; - } - public static function resolveConnection($connection = null) - { - return static::$resolver->connection($connection); - } - public static function getConnectionResolver() - { - return static::$resolver; - } - public static function setConnectionResolver(Resolver $resolver) - { - static::$resolver = $resolver; - } - public static function unsetConnectionResolver() - { - static::$resolver = null; - } - public static function getEventDispatcher() - { - return static::$dispatcher; - } - public static function setEventDispatcher(Dispatcher $dispatcher) - { - static::$dispatcher = $dispatcher; - } - public static function unsetEventDispatcher() - { - static::$dispatcher = null; - } - public function getMutatedAttributes() - { - $class = get_class($this); - if (isset(static::$mutatorCache[$class])) { - return static::$mutatorCache[get_class($this)]; - } - return array(); - } - public function __get($key) - { - return $this->getAttribute($key); - } - public function __set($key, $value) - { - $this->setAttribute($key, $value); - } - public function offsetExists($offset) - { - return isset($this->{$offset}); - } - public function offsetGet($offset) - { - return $this->{$offset}; - } - public function offsetSet($offset, $value) - { - $this->{$offset} = $value; - } - public function offsetUnset($offset) - { - unset($this->{$offset}); - } - public function __isset($key) - { - return isset($this->attributes[$key]) || isset($this->relations[$key]) || $this->hasGetMutator($key) && !is_null($this->getAttributeValue($key)); - } - public function __unset($key) - { - unset($this->attributes[$key]); - unset($this->relations[$key]); - } - public function __call($method, $parameters) - { - if (in_array($method, array('increment', 'decrement'))) { - return call_user_func_array(array($this, $method), $parameters); - } - $query = $this->newQuery(); - return call_user_func_array(array($query, $method), $parameters); - } - public static function __callStatic($method, $parameters) - { - $instance = new static(); - return call_user_func_array(array($instance, $method), $parameters); - } - public function __toString() - { - return $this->toJson(); - } - public function __wakeup() - { - $this->bootIfNotBooted(); - } -} -namespace Illuminate\Support\Contracts; - -interface ArrayableInterface -{ - public function toArray(); -} -namespace Illuminate\Support\Contracts; - -interface JsonableInterface -{ - public function toJson($options = 0); -} -namespace Illuminate\Database; - -use Illuminate\Database\Connectors\ConnectionFactory; -class DatabaseManager implements ConnectionResolverInterface -{ - protected $app; - protected $factory; - protected $connections = array(); - protected $extensions = array(); - public function __construct($app, ConnectionFactory $factory) - { - $this->app = $app; - $this->factory = $factory; - } - public function connection($name = null) - { - $name = $name ?: $this->getDefaultConnection(); - if (!isset($this->connections[$name])) { - $connection = $this->makeConnection($name); - $this->connections[$name] = $this->prepare($connection); - } - return $this->connections[$name]; - } - public function reconnect($name = null) - { - $name = $name ?: $this->getDefaultConnection(); - $this->disconnect($name); - return $this->connection($name); - } - public function disconnect($name = null) - { - $name = $name ?: $this->getDefaultConnection(); - unset($this->connections[$name]); - } - protected function makeConnection($name) - { - $config = $this->getConfig($name); - if (isset($this->extensions[$name])) { - return call_user_func($this->extensions[$name], $config, $name); - } - $driver = $config['driver']; - if (isset($this->extensions[$driver])) { - return call_user_func($this->extensions[$driver], $config, $name); - } - return $this->factory->make($config, $name); - } - protected function prepare(Connection $connection) - { - $connection->setFetchMode($this->app['config']['database.fetch']); - if ($this->app->bound('events')) { - $connection->setEventDispatcher($this->app['events']); - } - $app = $this->app; - $connection->setCacheManager(function () use($app) { - return $app['cache']; - }); - $connection->setPaginator(function () use($app) { - return $app['paginator']; - }); - return $connection; - } - protected function getConfig($name) - { - $name = $name ?: $this->getDefaultConnection(); - $connections = $this->app['config']['database.connections']; - if (is_null($config = array_get($connections, $name))) { - throw new \InvalidArgumentException("Database [{$name}] not configured."); - } - return $config; - } - public function getDefaultConnection() - { - return $this->app['config']['database.default']; - } - public function setDefaultConnection($name) - { - $this->app['config']['database.default'] = $name; - } - public function extend($name, $resolver) - { - $this->extensions[$name] = $resolver; - } - public function getConnections() - { - return $this->connections; - } - public function __call($method, $parameters) - { - return call_user_func_array(array($this->connection(), $method), $parameters); - } -} -namespace Illuminate\Database; - -interface ConnectionResolverInterface -{ - public function connection($name = null); - public function getDefaultConnection(); - public function setDefaultConnection($name); -} -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 -{ - protected $container; - public function __construct(Container $container) - { - $this->container = $container; - } - public function make(array $config, $name = null) - { - $config = $this->parseConfig($config, $name); - if (isset($config['read'])) { - return $this->createReadWriteConnection($config); - } else { - return $this->createSingleConnection($config); - } - } - protected function createSingleConnection(array $config) - { - $pdo = $this->createConnector($config)->connect($config); - return $this->createConnection($config['driver'], $pdo, $config['database'], $config['prefix'], $config); - } - protected function createReadWriteConnection(array $config) - { - $connection = $this->createSingleConnection($this->getWriteConfig($config)); - return $connection->setReadPdo($this->createReadPdo($config)); - } - protected function createReadPdo(array $config) - { - $readConfig = $this->getReadConfig($config); - return $this->createConnector($readConfig)->connect($readConfig); - } - protected function getReadConfig(array $config) - { - $readConfig = $this->getReadWriteConfig($config, 'read'); - return $this->mergeReadWriteConfig($config, $readConfig); - } - protected function getWriteConfig(array $config) - { - $writeConfig = $this->getReadWriteConfig($config, 'write'); - return $this->mergeReadWriteConfig($config, $writeConfig); - } - protected function getReadWriteConfig(array $config, $type) - { - if (isset($config[$type][0])) { - return $config[$type][array_rand($config[$type])]; - } else { - return $config[$type]; - } - } - protected function mergeReadWriteConfig(array $config, array $merge) - { - return array_except(array_merge($config, $merge), array('read', 'write')); - } - protected function parseConfig(array $config, $name) - { - return array_add(array_add($config, 'prefix', ''), 'name', $name); - } - 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']}]"); - } - 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}]"); - } -} -namespace Illuminate\Session; - -use Closure; -use Carbon\Carbon; -use Symfony\Component\HttpFoundation\Cookie; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\HttpKernelInterface; -class Middleware implements HttpKernelInterface -{ - protected $app; - protected $manager; - protected $reject; - public function __construct(HttpKernelInterface $app, SessionManager $manager, Closure $reject = null) - { - $this->app = $app; - $this->reject = $reject; - $this->manager = $manager; - } - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - $this->checkRequestForArraySessions($request); - if ($this->sessionConfigured()) { - $session = $this->startSession($request); - $request->setSession($session); - } - $response = $this->app->handle($request, $type, $catch); - if ($this->sessionConfigured()) { - $this->closeSession($session); - $this->addCookieToResponse($response, $session); - } - return $response; - } - public function checkRequestForArraySessions(Request $request) - { - if (is_null($this->reject)) { - return; - } - if (call_user_func($this->reject, $request)) { - $this->manager->setDefaultDriver('array'); - } - } - protected function startSession(Request $request) - { - with($session = $this->getSession($request))->setRequestOnHandler($request); - $session->start(); - return $session; - } - protected function closeSession(SessionInterface $session) - { - $session->save(); - $this->collectGarbage($session); - } - protected function getUrl(Request $request) - { - $url = rtrim(preg_replace('/\\?.*/', '', $request->getUri()), '/'); - return $request->getQueryString() ? $url . '?' . $request->getQueryString() : $url; - } - protected function collectGarbage(SessionInterface $session) - { - $config = $this->manager->getSessionConfig(); - if ($this->configHitsLottery($config)) { - $session->getHandler()->gc($this->getLifetimeSeconds()); - } - } - protected function configHitsLottery(array $config) - { - return mt_rand(1, $config['lottery'][1]) <= $config['lottery'][0]; - } - protected function addCookieToResponse(Response $response, SessionInterface $session) - { - $s = $session; - if ($this->sessionIsPersistent($c = $this->manager->getSessionConfig())) { - $secure = array_get($c, 'secure', false); - $response->headers->setCookie(new Cookie($s->getName(), $s->getId(), $this->getCookieLifetime(), $c['path'], $c['domain'], $secure)); - } - } - protected function getLifetimeSeconds() - { - return array_get($this->manager->getSessionConfig(), 'lifetime') * 60; - } - protected function getCookieLifetime() - { - $config = $this->manager->getSessionConfig(); - return $config['expire_on_close'] ? 0 : Carbon::now()->addMinutes($config['lifetime']); - } - protected function sessionConfigured() - { - return !is_null(array_get($this->manager->getSessionConfig(), 'driver')); - } - protected function sessionIsPersistent(array $config = null) - { - $config = $config ?: $this->manager->getSessionConfig(); - return !in_array($config['driver'], array(null, 'array')); - } - public function getSession(Request $request) - { - $session = $this->manager->driver(); - $session->setId($request->cookies->get($session->getName())); - return $session; - } -} -namespace Illuminate\Session; - -use SessionHandlerInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Session\SessionBagInterface; -use Symfony\Component\HttpFoundation\Session\Storage\MetadataBag; -class Store implements SessionInterface -{ - protected $id; - protected $name; - protected $attributes = array(); - protected $bags = array(); - protected $metaBag; - protected $bagData = array(); - protected $handler; - protected $started = false; - public function __construct($name, SessionHandlerInterface $handler, $id = null) - { - $this->name = $name; - $this->handler = $handler; - $this->metaBag = new MetadataBag(); - $this->setId($id ?: $this->generateSessionId()); - } - public function start() - { - $this->loadSession(); - if (!$this->has('_token')) { - $this->regenerateToken(); - } - return $this->started = true; - } - protected function loadSession() - { - $this->attributes = $this->readFromHandler(); - foreach (array_merge($this->bags, array($this->metaBag)) as $bag) { - $this->initializeLocalBag($bag); - $bag->initialize($this->bagData[$bag->getStorageKey()]); - } - } - protected function readFromHandler() - { - $data = $this->handler->read($this->getId()); - return $data ? unserialize($data) : array(); - } - protected function initializeLocalBag($bag) - { - $this->bagData[$bag->getStorageKey()] = $this->get($bag->getStorageKey(), array()); - $this->forget($bag->getStorageKey()); - } - public function getId() - { - return $this->id; - } - public function setId($id) - { - $this->id = $id ?: $this->generateSessionId(); - } - protected function generateSessionId() - { - return sha1(uniqid(true) . str_random(25) . microtime(true)); - } - public function getName() - { - return $this->name; - } - public function setName($name) - { - $this->name = $name; - } - public function invalidate($lifetime = null) - { - $this->attributes = array(); - $this->migrate(); - return true; - } - public function migrate($destroy = false, $lifetime = null) - { - if ($destroy) { - $this->handler->destroy($this->getId()); - } - $this->setExists(false); - $this->id = $this->generateSessionId(); - return true; - } - public function regenerate($destroy = false) - { - return $this->migrate($destroy); - } - public function save() - { - $this->addBagDataToSession(); - $this->ageFlashData(); - $this->handler->write($this->getId(), serialize($this->attributes)); - $this->started = false; - } - protected function addBagDataToSession() - { - foreach (array_merge($this->bags, array($this->metaBag)) as $bag) { - $this->put($bag->getStorageKey(), $this->bagData[$bag->getStorageKey()]); - } - } - public function ageFlashData() - { - foreach ($this->get('flash.old', array()) as $old) { - $this->forget($old); - } - $this->put('flash.old', $this->get('flash.new', array())); - $this->put('flash.new', array()); - } - public function has($name) - { - return !is_null($this->get($name)); - } - public function get($name, $default = null) - { - return array_get($this->attributes, $name, $default); - } - public function pull($key, $default = null) - { - $value = $this->get($key, $default); - $this->forget($key); - return $value; - } - public function hasOldInput($key = null) - { - $old = $this->getOldInput($key); - return is_null($key) ? count($old) > 0 : !is_null($old); - } - public function getOldInput($key = null, $default = null) - { - $input = $this->get('_old_input', array()); - if (is_null($key)) { - return $input; - } - return array_get($input, $key, $default); - } - public function set($name, $value) - { - array_set($this->attributes, $name, $value); - } - public function put($key, $value) - { - if (!is_array($key)) { - $key = array($key => $value); - } - foreach ($key as $arrayKey => $arrayValue) { - $this->set($arrayKey, $arrayValue); - } - } - public function push($key, $value) - { - $array = $this->get($key, array()); - $array[] = $value; - $this->put($key, $array); - } - public function flash($key, $value) - { - $this->put($key, $value); - $this->push('flash.new', $key); - $this->removeFromOldFlashData(array($key)); - } - public function flashInput(array $value) - { - $this->flash('_old_input', $value); - } - public function reflash() - { - $this->mergeNewFlashes($this->get('flash.old', array())); - $this->put('flash.old', array()); - } - public function keep($keys = null) - { - $keys = is_array($keys) ? $keys : func_get_args(); - $this->mergeNewFlashes($keys); - $this->removeFromOldFlashData($keys); - } - protected function mergeNewFlashes(array $keys) - { - $values = array_unique(array_merge($this->get('flash.new', array()), $keys)); - $this->put('flash.new', $values); - } - protected function removeFromOldFlashData(array $keys) - { - $this->put('flash.old', array_diff($this->get('flash.old', array()), $keys)); - } - public function all() - { - return $this->attributes; - } - public function replace(array $attributes) - { - foreach ($attributes as $key => $value) { - $this->put($key, $value); - } - } - public function remove($name) - { - return array_pull($this->attributes, $name); - } - public function forget($key) - { - array_forget($this->attributes, $key); - } - public function clear() - { - $this->attributes = array(); - foreach ($this->bags as $bag) { - $bag->clear(); - } - } - public function flush() - { - $this->clear(); - } - public function isStarted() - { - return $this->started; - } - public function registerBag(SessionBagInterface $bag) - { - $this->bags[$bag->getStorageKey()] = $bag; - } - public function getBag($name) - { - return array_get($this->bags, $name, function () { - throw new \InvalidArgumentException('Bag not registered.'); - }); - } - public function getMetadataBag() - { - return $this->metaBag; - } - public function getBagData($name) - { - return array_get($this->bagData, $name, array()); - } - public function token() - { - return $this->get('_token'); - } - public function getToken() - { - return $this->token(); - } - public function regenerateToken() - { - $this->put('_token', str_random(40)); - } - public function setExists($value) - { - if ($this->handler instanceof ExistenceAwareInterface) { - $this->handler->setExists($value); - } - } - public function getHandler() - { - return $this->handler; - } - public function handlerNeedsRequest() - { - return $this->handler instanceof CookieSessionHandler; - } - public function setRequestOnHandler(Request $request) - { - if ($this->handlerNeedsRequest()) { - $this->handler->setRequest($request); - } - } -} -namespace Illuminate\Session; - -use Illuminate\Support\Manager; -use Symfony\Component\HttpFoundation\Session\Storage\Handler\PdoSessionHandler; -use Symfony\Component\HttpFoundation\Session\Storage\Handler\NullSessionHandler; -class SessionManager extends Manager -{ - protected function callCustomCreator($driver) - { - return $this->buildSession(parent::callCustomCreator($driver)); - } - protected function createArrayDriver() - { - return new Store($this->app['config']['session.cookie'], new NullSessionHandler()); - } - protected function createCookieDriver() - { - $lifetime = $this->app['config']['session.lifetime']; - return $this->buildSession(new CookieSessionHandler($this->app['cookie'], $lifetime)); - } - protected function createFileDriver() - { - return $this->createNativeDriver(); - } - protected function createNativeDriver() - { - $path = $this->app['config']['session.files']; - return $this->buildSession(new FileSessionHandler($this->app['files'], $path)); - } - protected function createDatabaseDriver() - { - $connection = $this->getDatabaseConnection(); - $table = $connection->getTablePrefix() . $this->app['config']['session.table']; - return $this->buildSession(new DatabaseSessionHandler($connection, $table)); - } - protected function getDatabaseConnection() - { - $connection = $this->app['config']['session.connection']; - return $this->app['db']->connection($connection); - } - protected function createApcDriver() - { - return $this->createCacheBased('apc'); - } - protected function createMemcachedDriver() - { - return $this->createCacheBased('memcached'); - } - protected function createWincacheDriver() - { - return $this->createCacheBased('wincache'); - } - protected function createRedisDriver() - { - $handler = $this->createCacheHandler('redis'); - $handler->getCache()->getStore()->setConnection($this->app['config']['session.connection']); - return $this->buildSession($handler); - } - protected function createCacheBased($driver) - { - return $this->buildSession($this->createCacheHandler($driver)); - } - protected function createCacheHandler($driver) - { - $minutes = $this->app['config']['session.lifetime']; - return new CacheBasedSessionHandler($this->app['cache']->driver($driver), $minutes); - } - protected function buildSession($handler) - { - return new Store($this->app['config']['session.cookie'], $handler); - } - public function getSessionConfig() - { - return $this->app['config']['session']; - } - public function getDefaultDriver() - { - return $this->app['config']['session.driver']; - } - public function setDefaultDriver($name) - { - $this->app['config']['session.driver'] = $name; - } -} -namespace Illuminate\Support; - -use Closure; -abstract class Manager -{ - protected $app; - protected $customCreators = array(); - protected $drivers = array(); - public function __construct($app) - { - $this->app = $app; - } - public function driver($driver = null) - { - $driver = $driver ?: $this->getDefaultDriver(); - if (!isset($this->drivers[$driver])) { - $this->drivers[$driver] = $this->createDriver($driver); - } - return $this->drivers[$driver]; - } - protected function createDriver($driver) - { - $method = 'create' . ucfirst($driver) . 'Driver'; - if (isset($this->customCreators[$driver])) { - return $this->callCustomCreator($driver); - } elseif (method_exists($this, $method)) { - return $this->{$method}(); - } - throw new \InvalidArgumentException("Driver [{$driver}] not supported."); - } - protected function callCustomCreator($driver) - { - return $this->customCreators[$driver]($this->app); - } - public function extend($driver, Closure $callback) - { - $this->customCreators[$driver] = $callback; - return $this; - } - public function getDrivers() - { - return $this->drivers; - } - public function __call($method, $parameters) - { - return call_user_func_array(array($this->driver(), $method), $parameters); - } -} -namespace Illuminate\Cookie; - -use Symfony\Component\HttpFoundation\Cookie; -class CookieJar -{ - protected $path = '/'; - protected $domain = null; - protected $queued = array(); - 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); - } - public function forever($name, $value, $path = null, $domain = null, $secure = false, $httpOnly = true) - { - return $this->make($name, $value, 2628000, $path, $domain, $secure, $httpOnly); - } - public function forget($name, $path = null, $domain = null) - { - return $this->make($name, null, -2628000, $path, $domain); - } - public function hasQueued($key) - { - return !is_null($this->queued($key)); - } - public function queued($key, $default = null) - { - return array_get($this->queued, $key, $default); - } - 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; - } - public function unqueue($name) - { - unset($this->queued[$name]); - } - protected function getPathAndDomain($path, $domain) - { - return array($path ?: $this->path, $domain ?: $this->domain); - } - public function setDefaultPathAndDomain($path, $domain) - { - list($this->path, $this->domain) = array($path, $domain); - return $this; - } - public function getQueuedCookies() - { - return $this->queued; - } -} -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 -{ - protected $app; - protected $encrypter; - public function __construct(HttpKernelInterface $app, Encrypter $encrypter) - { - $this->app = $app; - $this->encrypter = $encrypter; - } - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - return $this->encrypt($this->app->handle($this->decrypt($request), $type, $catch)); - } - 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; - } - protected function decryptCookie($cookie) - { - return is_array($cookie) ? $this->decryptArray($cookie) : $this->encrypter->decrypt($cookie); - } - protected function decryptArray(array $cookie) - { - $decrypted = array(); - foreach ($cookie as $key => $value) { - $decrypted[$key] = $this->encrypter->decrypt($value); - } - return $decrypted; - } - 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; - } - protected function duplicate(Cookie $c, $value) - { - return new Cookie($c->getName(), $value, $c->getExpiresTime(), $c->getPath(), $c->getDomain(), $c->isSecure(), $c->isHttpOnly()); - } -} -namespace Illuminate\Cookie; - -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; -class Queue implements HttpKernelInterface -{ - protected $app; - protected $cookies; - public function __construct(HttpKernelInterface $app, CookieJar $cookies) - { - $this->app = $app; - $this->cookies = $cookies; - } - 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; - } -} -namespace Illuminate\Encryption; - -use Symfony\Component\Security\Core\Util\StringUtils; -use Symfony\Component\Security\Core\Util\SecureRandom; -class DecryptException extends \RuntimeException -{ - -} -class Encrypter -{ - protected $key; - protected $cipher = MCRYPT_RIJNDAEL_128; - protected $mode = MCRYPT_MODE_CBC; - protected $block = 16; - public function __construct($key) - { - $this->key = $key; - } - public function encrypt($value) - { - $iv = mcrypt_create_iv($this->getIvSize(), $this->getRandomizer()); - $value = base64_encode($this->padAndMcrypt($value, $iv)); - $mac = $this->hash($iv = base64_encode($iv), $value); - return base64_encode(json_encode(compact('iv', 'value', 'mac'))); - } - protected function padAndMcrypt($value, $iv) - { - $value = $this->addPadding(serialize($value)); - return mcrypt_encrypt($this->cipher, $this->key, $value, $this->mode, $iv); - } - public function decrypt($payload) - { - $payload = $this->getJsonPayload($payload); - $value = base64_decode($payload['value']); - $iv = base64_decode($payload['iv']); - return unserialize($this->stripPadding($this->mcryptDecrypt($value, $iv))); - } - protected function mcryptDecrypt($value, $iv) - { - return mcrypt_decrypt($this->cipher, $this->key, $value, $this->mode, $iv); - } - protected function getJsonPayload($payload) - { - $payload = json_decode(base64_decode($payload), true); - if (!$payload || $this->invalidPayload($payload)) { - throw new DecryptException('Invalid data.'); - } - if (!$this->validMac($payload)) { - throw new DecryptException('MAC is invalid.'); - } - return $payload; - } - protected function validMac(array $payload) - { - $bytes = with(new SecureRandom())->nextBytes(16); - $calcMac = hash_hmac('sha256', $this->hash($payload['iv'], $payload['value']), $bytes, true); - return StringUtils::equals(hash_hmac('sha256', $payload['mac'], $bytes, true), $calcMac); - } - protected function hash($iv, $value) - { - return hash_hmac('sha256', $iv . $value, $this->key); - } - protected function addPadding($value) - { - $pad = $this->block - strlen($value) % $this->block; - return $value . str_repeat(chr($pad), $pad); - } - protected function stripPadding($value) - { - $pad = ord($value[($len = strlen($value)) - 1]); - return $this->paddingIsValid($pad, $value) ? substr($value, 0, $len - $pad) : $value; - } - protected function paddingIsValid($pad, $value) - { - $beforePad = strlen($value) - $pad; - return substr($value, $beforePad) == str_repeat(substr($value, -1), $pad); - } - protected function invalidPayload($data) - { - return !is_array($data) || !isset($data['iv']) || !isset($data['value']) || !isset($data['mac']); - } - protected function getIvSize() - { - return mcrypt_get_iv_size($this->cipher, $this->mode); - } - protected function getRandomizer() - { - if (defined('MCRYPT_DEV_URANDOM')) { - return MCRYPT_DEV_URANDOM; - } - if (defined('MCRYPT_DEV_RANDOM')) { - return MCRYPT_DEV_RANDOM; - } - mt_srand(); - return MCRYPT_RAND; - } - public function setKey($key) - { - $this->key = $key; - } - public function setCipher($cipher) - { - $this->cipher = $cipher; - $this->updateBlockSize(); - } - public function setMode($mode) - { - $this->mode = $mode; - $this->updateBlockSize(); - } - protected function updateBlockSize() - { - $this->block = mcrypt_get_iv_size($this->cipher, $this->mode); - } -} -namespace Illuminate\Support\Facades; - -class Log extends Facade -{ - protected static function getFacadeAccessor() - { - return 'log'; - } -} -namespace Illuminate\Log; - -use Monolog\Logger; -use Illuminate\Support\ServiceProvider; -class LogServiceProvider extends ServiceProvider -{ - protected $defer = true; - public function register() - { - $logger = new Writer(new Logger($this->app['env']), $this->app['events']); - $this->app->instance('log', $logger); - if (isset($this->app['log.setup'])) { - call_user_func($this->app['log.setup'], $logger); - } - } - public function provides() - { - return array('log'); - } -} -namespace Illuminate\Log; - -use Closure; -use Illuminate\Events\Dispatcher; -use Monolog\Handler\StreamHandler; -use Monolog\Logger as MonologLogger; -use Monolog\Formatter\LineFormatter; -use Monolog\Handler\ErrorLogHandler; -use Monolog\Handler\RotatingFileHandler; -use Illuminate\Support\Contracts\JsonableInterface; -use Illuminate\Support\Contracts\ArrayableInterface; -class Writer -{ - protected $monolog; - protected $levels = array('debug', 'info', 'notice', 'warning', 'error', 'critical', 'alert', 'emergency'); - protected $dispatcher; - public function __construct(MonologLogger $monolog, Dispatcher $dispatcher = null) - { - $this->monolog = $monolog; - if (isset($dispatcher)) { - $this->dispatcher = $dispatcher; - } - } - protected function callMonolog($method, $parameters) - { - if (is_array($parameters[0])) { - $parameters[0] = json_encode($parameters[0]); - } - return call_user_func_array(array($this->monolog, $method), $parameters); - } - public function useFiles($path, $level = 'debug') - { - $level = $this->parseLevel($level); - $this->monolog->pushHandler($handler = new StreamHandler($path, $level)); - $handler->setFormatter($this->getDefaultFormatter()); - } - public function useDailyFiles($path, $days = 0, $level = 'debug') - { - $level = $this->parseLevel($level); - $this->monolog->pushHandler($handler = new RotatingFileHandler($path, $days, $level)); - $handler->setFormatter($this->getDefaultFormatter()); - } - public function useErrorLog($level = 'debug', $messageType = ErrorLogHandler::OPERATING_SYSTEM) - { - $level = $this->parseLevel($level); - $this->monolog->pushHandler($handler = new ErrorLogHandler($messageType, $level)); - $handler->setFormatter($this->getDefaultFormatter()); - } - protected function getDefaultFormatter() - { - return new LineFormatter(null, null, true); - } - protected function parseLevel($level) - { - switch ($level) { - case 'debug': - return MonologLogger::DEBUG; - case 'info': - return MonologLogger::INFO; - case 'notice': - return MonologLogger::NOTICE; - case 'warning': - return MonologLogger::WARNING; - case 'error': - return MonologLogger::ERROR; - case 'critical': - return MonologLogger::CRITICAL; - case 'alert': - return MonologLogger::ALERT; - case 'emergency': - return MonologLogger::EMERGENCY; - default: - throw new \InvalidArgumentException('Invalid log level.'); - } - } - public function listen(Closure $callback) - { - if (!isset($this->dispatcher)) { - throw new \RuntimeException('Events dispatcher has not been set.'); - } - $this->dispatcher->listen('illuminate.log', $callback); - } - public function getMonolog() - { - return $this->monolog; - } - public function getEventDispatcher() - { - return $this->dispatcher; - } - public function setEventDispatcher(Dispatcher $dispatcher) - { - $this->dispatcher = $dispatcher; - } - protected function fireLogEvent($level, $message, array $context = array()) - { - if (isset($this->dispatcher)) { - $this->dispatcher->fire('illuminate.log', compact('level', 'message', 'context')); - } - } - public function write() - { - $level = head(func_get_args()); - return call_user_func_array(array($this, $level), array_slice(func_get_args(), 1)); - } - public function __call($method, $parameters) - { - $this->formatParameters($parameters); - if (in_array($method, $this->levels)) { - call_user_func_array(array($this, 'fireLogEvent'), array_merge(array($method), $parameters)); - $method = 'add' . ucfirst($method); - return $this->callMonolog($method, $parameters); - } - throw new \BadMethodCallException("Method [{$method}] does not exist."); - } - protected function formatParameters(&$parameters) - { - if (isset($parameters[0])) { - if (is_array($parameters[0])) { - $parameters[0] = var_export($parameters[0], true); - } elseif ($parameters[0] instanceof JsonableInterface) { - $parameters[0] = $parameters[0]->toJson(); - } elseif ($parameters[0] instanceof ArrayableInterface) { - $parameters[0] = var_export($parameters[0]->toArray(), true); - } - } - } -} -namespace Monolog; - -use Monolog\Handler\HandlerInterface; -use Monolog\Handler\StreamHandler; -use Psr\Log\LoggerInterface; -use Psr\Log\InvalidArgumentException; -class Logger implements LoggerInterface -{ - const DEBUG = 100; - const INFO = 200; - const NOTICE = 250; - const WARNING = 300; - const ERROR = 400; - const CRITICAL = 500; - const ALERT = 550; - const EMERGENCY = 600; - const API = 1; - protected static $levels = array(100 => 'DEBUG', 200 => 'INFO', 250 => 'NOTICE', 300 => 'WARNING', 400 => 'ERROR', 500 => 'CRITICAL', 550 => 'ALERT', 600 => 'EMERGENCY'); - protected static $timezone; - protected $name; - protected $handlers; - protected $processors; - public function __construct($name, array $handlers = array(), array $processors = array()) - { - $this->name = $name; - $this->handlers = $handlers; - $this->processors = $processors; - } - public function getName() - { - return $this->name; - } - public function pushHandler(HandlerInterface $handler) - { - array_unshift($this->handlers, $handler); - } - public function popHandler() - { - if (!$this->handlers) { - throw new \LogicException('You tried to pop from an empty handler stack.'); - } - return array_shift($this->handlers); - } - public function pushProcessor($callback) - { - if (!is_callable($callback)) { - throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), ' . var_export($callback, true) . ' given'); - } - array_unshift($this->processors, $callback); - } - public function popProcessor() - { - if (!$this->processors) { - throw new \LogicException('You tried to pop from an empty processor stack.'); - } - return array_shift($this->processors); - } - public function addRecord($level, $message, array $context = array()) - { - if (!$this->handlers) { - $this->pushHandler(new StreamHandler('php://stderr', static::DEBUG)); - } - if (!static::$timezone) { - static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC'); - } - $record = array('message' => (string) $message, 'context' => $context, 'level' => $level, 'level_name' => static::getLevelName($level), 'channel' => $this->name, 'datetime' => \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone)->setTimezone(static::$timezone), 'extra' => array()); - $handlerKey = null; - foreach ($this->handlers as $key => $handler) { - if ($handler->isHandling($record)) { - $handlerKey = $key; - break; - } - } - if (null === $handlerKey) { - return false; - } - foreach ($this->processors as $processor) { - $record = call_user_func($processor, $record); - } - while (isset($this->handlers[$handlerKey]) && false === $this->handlers[$handlerKey]->handle($record)) { - $handlerKey++; - } - return true; - } - public function addDebug($message, array $context = array()) - { - return $this->addRecord(static::DEBUG, $message, $context); - } - public function addInfo($message, array $context = array()) - { - return $this->addRecord(static::INFO, $message, $context); - } - public function addNotice($message, array $context = array()) - { - return $this->addRecord(static::NOTICE, $message, $context); - } - public function addWarning($message, array $context = array()) - { - return $this->addRecord(static::WARNING, $message, $context); - } - public function addError($message, array $context = array()) - { - return $this->addRecord(static::ERROR, $message, $context); - } - public function addCritical($message, array $context = array()) - { - return $this->addRecord(static::CRITICAL, $message, $context); - } - public function addAlert($message, array $context = array()) - { - return $this->addRecord(static::ALERT, $message, $context); - } - public function addEmergency($message, array $context = array()) - { - return $this->addRecord(static::EMERGENCY, $message, $context); - } - public static function getLevels() - { - return array_flip(static::$levels); - } - public static function getLevelName($level) - { - if (!isset(static::$levels[$level])) { - throw new InvalidArgumentException('Level "' . $level . '" is not defined, use one of: ' . implode(', ', array_keys(static::$levels))); - } - return static::$levels[$level]; - } - public function isHandling($level) - { - $record = array('level' => $level); - foreach ($this->handlers as $handler) { - if ($handler->isHandling($record)) { - return true; - } - } - return false; - } - public function log($level, $message, array $context = array()) - { - if (is_string($level) && defined(__CLASS__ . '::' . strtoupper($level))) { - $level = constant(__CLASS__ . '::' . strtoupper($level)); - } - return $this->addRecord($level, $message, $context); - } - public function debug($message, array $context = array()) - { - return $this->addRecord(static::DEBUG, $message, $context); - } - public function info($message, array $context = array()) - { - return $this->addRecord(static::INFO, $message, $context); - } - public function notice($message, array $context = array()) - { - return $this->addRecord(static::NOTICE, $message, $context); - } - public function warn($message, array $context = array()) - { - return $this->addRecord(static::WARNING, $message, $context); - } - public function warning($message, array $context = array()) - { - return $this->addRecord(static::WARNING, $message, $context); - } - public function err($message, array $context = array()) - { - return $this->addRecord(static::ERROR, $message, $context); - } - public function error($message, array $context = array()) - { - return $this->addRecord(static::ERROR, $message, $context); - } - public function crit($message, array $context = array()) - { - return $this->addRecord(static::CRITICAL, $message, $context); - } - public function critical($message, array $context = array()) - { - return $this->addRecord(static::CRITICAL, $message, $context); - } - public function alert($message, array $context = array()) - { - return $this->addRecord(static::ALERT, $message, $context); - } - public function emerg($message, array $context = array()) - { - return $this->addRecord(static::EMERGENCY, $message, $context); - } - public function emergency($message, array $context = array()) - { - return $this->addRecord(static::EMERGENCY, $message, $context); - } -} -namespace Psr\Log; - -interface LoggerInterface -{ - public function emergency($message, array $context = array()); - public function alert($message, array $context = array()); - public function critical($message, array $context = array()); - public function error($message, array $context = array()); - public function warning($message, array $context = array()); - public function notice($message, array $context = array()); - public function info($message, array $context = array()); - public function debug($message, array $context = array()); - public function log($level, $message, array $context = array()); -} -namespace Monolog\Handler; - -use Monolog\Logger; -use Monolog\Formatter\FormatterInterface; -use Monolog\Formatter\LineFormatter; -abstract class AbstractHandler implements HandlerInterface -{ - protected $level = Logger::DEBUG; - protected $bubble = true; - protected $formatter; - protected $processors = array(); - public function __construct($level = Logger::DEBUG, $bubble = true) - { - $this->level = $level; - $this->bubble = $bubble; - } - public function isHandling(array $record) - { - return $record['level'] >= $this->level; - } - public function handleBatch(array $records) - { - foreach ($records as $record) { - $this->handle($record); - } - } - public function close() - { - - } - public function pushProcessor($callback) - { - if (!is_callable($callback)) { - throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), ' . var_export($callback, true) . ' given'); - } - array_unshift($this->processors, $callback); - return $this; - } - public function popProcessor() - { - if (!$this->processors) { - throw new \LogicException('You tried to pop from an empty processor stack.'); - } - return array_shift($this->processors); - } - public function setFormatter(FormatterInterface $formatter) - { - $this->formatter = $formatter; - return $this; - } - public function getFormatter() - { - if (!$this->formatter) { - $this->formatter = $this->getDefaultFormatter(); - } - return $this->formatter; - } - public function setLevel($level) - { - $this->level = $level; - return $this; - } - public function getLevel() - { - return $this->level; - } - public function setBubble($bubble) - { - $this->bubble = $bubble; - return $this; - } - public function getBubble() - { - return $this->bubble; - } - public function __destruct() - { - try { - $this->close(); - } catch (\Exception $e) { - - } - } - protected function getDefaultFormatter() - { - return new LineFormatter(); - } -} -namespace Monolog\Handler; - -abstract class AbstractProcessingHandler extends AbstractHandler -{ - public function handle(array $record) - { - if (!$this->isHandling($record)) { - return false; - } - $record = $this->processRecord($record); - $record['formatted'] = $this->getFormatter()->format($record); - $this->write($record); - return false === $this->bubble; - } - protected abstract function write(array $record); - protected function processRecord(array $record) - { - if ($this->processors) { - foreach ($this->processors as $processor) { - $record = call_user_func($processor, $record); - } - } - return $record; - } -} -namespace Monolog\Handler; - -use Monolog\Logger; -class StreamHandler extends AbstractProcessingHandler -{ - protected $stream; - protected $url; - private $errorMessage; - protected $filePermission; - public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null) - { - parent::__construct($level, $bubble); - if (is_resource($stream)) { - $this->stream = $stream; - } else { - $this->url = $stream; - } - $this->filePermission = $filePermission; - } - public function close() - { - if (is_resource($this->stream)) { - fclose($this->stream); - } - $this->stream = null; - } - protected function write(array $record) - { - if (!is_resource($this->stream)) { - if (!$this->url) { - throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); - } - $this->errorMessage = null; - set_error_handler(array($this, 'customErrorHandler')); - $this->stream = fopen($this->url, 'a'); - if ($this->filePermission !== null) { - @chmod($this->url, $this->filePermission); - } - restore_error_handler(); - if (!is_resource($this->stream)) { - $this->stream = null; - throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: ' . $this->errorMessage, $this->url)); - } - } - fwrite($this->stream, (string) $record['formatted']); - } - private function customErrorHandler($code, $msg) - { - $this->errorMessage = preg_replace('{^fopen\\(.*?\\): }', '', $msg); - } -} -namespace Monolog\Handler; - -use Monolog\Logger; -class RotatingFileHandler extends StreamHandler -{ - protected $filename; - protected $maxFiles; - protected $mustRotate; - protected $nextRotation; - protected $filenameFormat; - protected $dateFormat; - public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null) - { - $this->filename = $filename; - $this->maxFiles = (int) $maxFiles; - $this->nextRotation = new \DateTime('tomorrow'); - $this->filenameFormat = '{filename}-{date}'; - $this->dateFormat = 'Y-m-d'; - parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission); - } - public function close() - { - parent::close(); - if (true === $this->mustRotate) { - $this->rotate(); - } - } - public function setFilenameFormat($filenameFormat, $dateFormat) - { - $this->filenameFormat = $filenameFormat; - $this->dateFormat = $dateFormat; - $this->url = $this->getTimedFilename(); - $this->close(); - } - protected function write(array $record) - { - if (null === $this->mustRotate) { - $this->mustRotate = !file_exists($this->url); - } - if ($this->nextRotation < $record['datetime']) { - $this->mustRotate = true; - $this->close(); - } - parent::write($record); - } - protected function rotate() - { - $this->url = $this->getTimedFilename(); - $this->nextRotation = new \DateTime('tomorrow'); - if (0 === $this->maxFiles) { - return; - } - $logFiles = glob($this->getGlobPattern()); - if ($this->maxFiles >= count($logFiles)) { - return; - } - usort($logFiles, function ($a, $b) { - return strcmp($b, $a); - }); - foreach (array_slice($logFiles, $this->maxFiles) as $file) { - if (is_writable($file)) { - unlink($file); - } - } - } - protected function getTimedFilename() - { - $fileInfo = pathinfo($this->filename); - $timedFilename = str_replace(array('{filename}', '{date}'), array($fileInfo['filename'], date($this->dateFormat)), $fileInfo['dirname'] . '/' . $this->filenameFormat); - if (!empty($fileInfo['extension'])) { - $timedFilename .= '.' . $fileInfo['extension']; - } - return $timedFilename; - } - protected function getGlobPattern() - { - $fileInfo = pathinfo($this->filename); - $glob = str_replace(array('{filename}', '{date}'), array($fileInfo['filename'], '*'), $fileInfo['dirname'] . '/' . $this->filenameFormat); - if (!empty($fileInfo['extension'])) { - $glob .= '.' . $fileInfo['extension']; - } - return $glob; - } -} -namespace Monolog\Handler; - -use Monolog\Formatter\FormatterInterface; -interface HandlerInterface -{ - public function isHandling(array $record); - public function handle(array $record); - public function handleBatch(array $records); - public function pushProcessor($callback); - public function popProcessor(); - public function setFormatter(FormatterInterface $formatter); - public function getFormatter(); -} -namespace Illuminate\Support\Facades; - -class App extends Facade -{ - protected static function getFacadeAccessor() - { - return 'app'; - } -} -namespace Illuminate\Exception; - -use Exception; -interface ExceptionDisplayerInterface -{ - public function display(Exception $exception); -} -namespace Illuminate\Exception; - -use Exception; -use Symfony\Component\Debug\ExceptionHandler; -class SymfonyDisplayer implements ExceptionDisplayerInterface -{ - protected $symfony; - public function __construct(ExceptionHandler $symfony) - { - $this->symfony = $symfony; - } - public function display(Exception $exception) - { - return $this->symfony->createResponse($exception); - } -} -namespace Illuminate\Exception; - -use Exception; -use Whoops\Run; -use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; -class WhoopsDisplayer implements ExceptionDisplayerInterface -{ - protected $whoops; - protected $runningInConsole; - public function __construct(Run $whoops, $runningInConsole) - { - $this->whoops = $whoops; - $this->runningInConsole = $runningInConsole; - } - public function display(Exception $exception) - { - $status = $exception instanceof HttpExceptionInterface ? $exception->getStatusCode() : 500; - $headers = $exception instanceof HttpExceptionInterface ? $exception->getHeaders() : array(); - return new Response($this->whoops->handleException($exception), $status, $headers); - } -} -namespace Illuminate\Exception; - -use Closure; -use ErrorException; -use ReflectionFunction; -use Illuminate\Support\Contracts\ResponsePreparerInterface; -use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; -use Symfony\Component\Debug\Exception\FatalErrorException as FatalError; -class Handler -{ - protected $responsePreparer; - protected $plainDisplayer; - protected $debugDisplayer; - protected $debug; - protected $handlers = array(); - protected $handled = array(); - public function __construct(ResponsePreparerInterface $responsePreparer, ExceptionDisplayerInterface $plainDisplayer, ExceptionDisplayerInterface $debugDisplayer, $debug = true) - { - $this->debug = $debug; - $this->plainDisplayer = $plainDisplayer; - $this->debugDisplayer = $debugDisplayer; - $this->responsePreparer = $responsePreparer; - } - public function register($environment) - { - $this->registerErrorHandler(); - $this->registerExceptionHandler(); - if ($environment != 'testing') { - $this->registerShutdownHandler(); - } - } - protected function registerErrorHandler() - { - set_error_handler(array($this, 'handleError')); - } - protected function registerExceptionHandler() - { - set_exception_handler(array($this, 'handleUncaughtException')); - } - protected function registerShutdownHandler() - { - register_shutdown_function(array($this, 'handleShutdown')); - } - public function handleError($level, $message, $file = '', $line = 0, $context = array()) - { - if (error_reporting() & $level) { - throw new ErrorException($message, 0, $level, $file, $line); - } - } - public function handleException($exception) - { - $response = $this->callCustomHandlers($exception); - if (!is_null($response)) { - return $this->prepareResponse($response); - } - return $this->displayException($exception); - } - public function handleUncaughtException($exception) - { - $this->handleException($exception)->send(); - } - public function handleShutdown() - { - $error = error_get_last(); - if (!is_null($error)) { - extract($error); - if (!$this->isFatal($type)) { - return; - } - $this->handleException(new FatalError($message, $type, 0, $file, $line))->send(); - } - } - protected function isFatal($type) - { - return in_array($type, array(E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE)); - } - public function handleConsole($exception) - { - return $this->callCustomHandlers($exception, true); - } - protected function callCustomHandlers($exception, $fromConsole = false) - { - foreach ($this->handlers as $handler) { - if (!$this->handlesException($handler, $exception)) { - continue; - } elseif ($exception instanceof HttpExceptionInterface) { - $code = $exception->getStatusCode(); - } else { - $code = 500; - } - try { - $response = $handler($exception, $code, $fromConsole); - } catch (\Exception $e) { - $response = $this->formatException($e); - } - if (isset($response) && !is_null($response)) { - return $response; - } - } - } - protected function displayException($exception) - { - $displayer = $this->debug ? $this->debugDisplayer : $this->plainDisplayer; - return $displayer->display($exception); - } - protected function handlesException(Closure $handler, $exception) - { - $reflection = new ReflectionFunction($handler); - return $reflection->getNumberOfParameters() == 0 || $this->hints($reflection, $exception); - } - protected function hints(ReflectionFunction $reflection, $exception) - { - $parameters = $reflection->getParameters(); - $expected = $parameters[0]; - return !$expected->getClass() || $expected->getClass()->isInstance($exception); - } - protected function formatException(\Exception $e) - { - if ($this->debug) { - $location = $e->getMessage() . ' in ' . $e->getFile() . ':' . $e->getLine(); - return 'Error in exception handler: ' . $location; - } - return 'Error in exception handler.'; - } - public function error(Closure $callback) - { - array_unshift($this->handlers, $callback); - } - public function pushError(Closure $callback) - { - $this->handlers[] = $callback; - } - protected function prepareResponse($response) - { - return $this->responsePreparer->prepareResponse($response); - } - public function runningInConsole() - { - return php_sapi_name() == 'cli'; - } - public function setDebug($debug) - { - $this->debug = $debug; - } -} -namespace Illuminate\Support\Facades; - -class Route extends Facade -{ - protected static function getFacadeAccessor() - { - return 'router'; - } -} -namespace Illuminate\View\Engines; - -use Closure; -class EngineResolver -{ - protected $resolvers = array(); - protected $resolved = array(); - public function register($engine, Closure $resolver) - { - $this->resolvers[$engine] = $resolver; - } - public function resolve($engine) - { - if (!isset($this->resolved[$engine])) { - $this->resolved[$engine] = call_user_func($this->resolvers[$engine]); - } - return $this->resolved[$engine]; - } -} -namespace Illuminate\View; - -interface ViewFinderInterface -{ - public function find($view); - public function addLocation($location); - public function addNamespace($namespace, $hint); - public function addExtension($extension); -} -namespace Illuminate\View; - -use Illuminate\Filesystem\Filesystem; -class FileViewFinder implements ViewFinderInterface -{ - protected $files; - protected $paths; - protected $views = array(); - protected $hints = array(); - protected $extensions = array('blade.php', 'php'); - const HINT_PATH_DELIMITER = '::'; - public function __construct(Filesystem $files, array $paths, array $extensions = null) - { - $this->files = $files; - $this->paths = $paths; - if (isset($extensions)) { - $this->extensions = $extensions; - } - } - public function find($name) - { - if (isset($this->views[$name])) { - return $this->views[$name]; - } - if ($this->hasHintInformation($name = trim($name))) { - return $this->views[$name] = $this->findNamedPathView($name); - } - return $this->views[$name] = $this->findInPaths($name, $this->paths); - } - protected function findNamedPathView($name) - { - list($namespace, $view) = $this->getNamespaceSegments($name); - return $this->findInPaths($view, $this->hints[$namespace]); - } - protected function getNamespaceSegments($name) - { - $segments = explode(static::HINT_PATH_DELIMITER, $name); - if (count($segments) != 2) { - throw new \InvalidArgumentException("View [{$name}] has an invalid name."); - } - if (!isset($this->hints[$segments[0]])) { - throw new \InvalidArgumentException("No hint path defined for [{$segments[0]}]."); - } - return $segments; - } - protected function findInPaths($name, $paths) - { - foreach ((array) $paths as $path) { - foreach ($this->getPossibleViewFiles($name) as $file) { - if ($this->files->exists($viewPath = $path . '/' . $file)) { - return $viewPath; - } - } - } - throw new \InvalidArgumentException("View [{$name}] not found."); - } - protected function getPossibleViewFiles($name) - { - return array_map(function ($extension) use($name) { - return str_replace('.', '/', $name) . '.' . $extension; - }, $this->extensions); - } - public function addLocation($location) - { - $this->paths[] = $location; - } - public function addNamespace($namespace, $hints) - { - $hints = (array) $hints; - if (isset($this->hints[$namespace])) { - $hints = array_merge($this->hints[$namespace], $hints); - } - $this->hints[$namespace] = $hints; - } - public function prependNamespace($namespace, $hints) - { - $hints = (array) $hints; - if (isset($this->hints[$namespace])) { - $hints = array_merge($hints, $this->hints[$namespace]); - } - $this->hints[$namespace] = $hints; - } - public function addExtension($extension) - { - if (($index = array_search($extension, $this->extensions)) !== false) { - unset($this->extensions[$index]); - } - array_unshift($this->extensions, $extension); - } - public function hasHintInformation($name) - { - return strpos($name, static::HINT_PATH_DELIMITER) > 0; - } - public function getFilesystem() - { - return $this->files; - } - public function getPaths() - { - return $this->paths; - } - public function getHints() - { - return $this->hints; - } - public function getExtensions() - { - return $this->extensions; - } -} -namespace Illuminate\Support\Contracts; - -interface MessageProviderInterface -{ - public function getMessageBag(); -} -namespace Illuminate\Support; - -use Countable; -use JsonSerializable; -use Illuminate\Support\Contracts\JsonableInterface; -use Illuminate\Support\Contracts\ArrayableInterface; -use Illuminate\Support\Contracts\MessageProviderInterface; -class MessageBag implements ArrayableInterface, Countable, JsonableInterface, MessageProviderInterface, JsonSerializable -{ - protected $messages = array(); - protected $format = ':message'; - public function __construct(array $messages = array()) - { - foreach ($messages as $key => $value) { - $this->messages[$key] = (array) $value; - } - } - public function add($key, $message) - { - if ($this->isUnique($key, $message)) { - $this->messages[$key][] = $message; - } - return $this; - } - public function merge($messages) - { - if ($messages instanceof MessageProviderInterface) { - $messages = $messages->getMessageBag()->getMessages(); - } - $this->messages = array_merge_recursive($this->messages, $messages); - return $this; - } - protected function isUnique($key, $message) - { - $messages = (array) $this->messages; - return !isset($messages[$key]) || !in_array($message, $messages[$key]); - } - public function has($key = null) - { - return $this->first($key) !== ''; - } - public function first($key = null, $format = null) - { - $messages = is_null($key) ? $this->all($format) : $this->get($key, $format); - return count($messages) > 0 ? $messages[0] : ''; - } - public function get($key, $format = null) - { - $format = $this->checkFormat($format); - if (array_key_exists($key, $this->messages)) { - return $this->transform($this->messages[$key], $format, $key); - } - return array(); - } - public function all($format = null) - { - $format = $this->checkFormat($format); - $all = array(); - foreach ($this->messages as $key => $messages) { - $all = array_merge($all, $this->transform($messages, $format, $key)); - } - return $all; - } - protected function transform($messages, $format, $messageKey) - { - $messages = (array) $messages; - foreach ($messages as $key => &$message) { - $replace = array(':message', ':key'); - $message = str_replace($replace, array($message, $messageKey), $format); - } - return $messages; - } - protected function checkFormat($format) - { - return $format === null ? $this->format : $format; - } - public function getMessages() - { - return $this->messages; - } - public function getMessageBag() - { - return $this; - } - public function getFormat() - { - return $this->format; - } - public function setFormat($format = ':message') - { - $this->format = $format; - return $this; - } - public function isEmpty() - { - return !$this->any(); - } - public function any() - { - return $this->count() > 0; - } - public function count() - { - return count($this->messages, COUNT_RECURSIVE) - count($this->messages); - } - public function toArray() - { - return $this->getMessages(); - } - public function jsonSerialize() - { - return $this->toArray(); - } - public function toJson($options = 0) - { - return json_encode($this->toArray(), $options); - } - public function __toString() - { - return $this->toJson(); - } -} -namespace Illuminate\Support\Facades; - -class View extends Facade -{ - protected static function getFacadeAccessor() - { - return 'view'; - } -} -namespace Illuminate\Support\Contracts; - -interface RenderableInterface -{ - public function render(); -} -namespace Illuminate\View; - -use ArrayAccess; -use Closure; -use Illuminate\Support\MessageBag; -use Illuminate\View\Engines\EngineInterface; -use Illuminate\Support\Contracts\MessageProviderInterface; -use Illuminate\Support\Contracts\ArrayableInterface as Arrayable; -use Illuminate\Support\Contracts\RenderableInterface as Renderable; -class View implements ArrayAccess, Renderable -{ - protected $factory; - protected $engine; - protected $view; - protected $data; - protected $path; - public function __construct(Factory $factory, EngineInterface $engine, $view, $path, $data = array()) - { - $this->view = $view; - $this->path = $path; - $this->engine = $engine; - $this->factory = $factory; - $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data; - } - public function render(Closure $callback = null) - { - $contents = $this->renderContents(); - $response = isset($callback) ? $callback($this, $contents) : null; - $this->factory->flushSectionsIfDoneRendering(); - return $response ?: $contents; - } - protected function renderContents() - { - $this->factory->incrementRender(); - $this->factory->callComposer($this); - $contents = $this->getContents(); - $this->factory->decrementRender(); - return $contents; - } - public function renderSections() - { - $env = $this->factory; - return $this->render(function ($view) use($env) { - return $env->getSections(); - }); - } - protected function getContents() - { - return $this->engine->get($this->path, $this->gatherData()); - } - protected function gatherData() - { - $data = array_merge($this->factory->getShared(), $this->data); - foreach ($data as $key => $value) { - if ($value instanceof Renderable) { - $data[$key] = $value->render(); - } - } - return $data; - } - public function with($key, $value = null) - { - if (is_array($key)) { - $this->data = array_merge($this->data, $key); - } else { - $this->data[$key] = $value; - } - return $this; - } - public function nest($key, $view, array $data = array()) - { - return $this->with($key, $this->factory->make($view, $data)); - } - public function withErrors($provider) - { - if ($provider instanceof MessageProviderInterface) { - $this->with('errors', $provider->getMessageBag()); - } else { - $this->with('errors', new MessageBag((array) $provider)); - } - return $this; - } - public function getFactory() - { - return $this->factory; - } - public function getEngine() - { - return $this->engine; - } - public function getName() - { - return $this->view; - } - public function getData() - { - return $this->data; - } - public function getPath() - { - return $this->path; - } - public function setPath($path) - { - $this->path = $path; - } - public function offsetExists($key) - { - return array_key_exists($key, $this->data); - } - public function offsetGet($key) - { - return $this->data[$key]; - } - public function offsetSet($key, $value) - { - $this->with($key, $value); - } - public function offsetUnset($key) - { - unset($this->data[$key]); - } - public function &__get($key) - { - return $this->data[$key]; - } - public function __set($key, $value) - { - $this->with($key, $value); - } - public function __isset($key) - { - return isset($this->data[$key]); - } - public function __unset($key) - { - unset($this->data[$key]); - } - public function __call($method, $parameters) - { - if (starts_with($method, 'with')) { - return $this->with(snake_case(substr($method, 4)), $parameters[0]); - } - throw new \BadMethodCallException("Method [{$method}] does not exist on view."); - } - public function __toString() - { - return $this->render(); - } -} -namespace Illuminate\View\Engines; - -interface EngineInterface -{ - public function get($path, array $data = array()); -} -namespace Illuminate\View\Engines; - -use Illuminate\View\Exception; -class PhpEngine implements EngineInterface -{ - public function get($path, array $data = array()) - { - return $this->evaluatePath($path, $data); - } - protected function evaluatePath($__path, $__data) - { - ob_start(); - extract($__data); - try { - include $__path; - } catch (\Exception $e) { - $this->handleViewException($e); - } - return ltrim(ob_get_clean()); - } - protected function handleViewException($e) - { - ob_get_clean(); - throw $e; - } -} -namespace Symfony\Component\HttpFoundation; - -class Response -{ - const HTTP_CONTINUE = 100; - const HTTP_SWITCHING_PROTOCOLS = 101; - const HTTP_PROCESSING = 102; - const HTTP_OK = 200; - const HTTP_CREATED = 201; - const HTTP_ACCEPTED = 202; - const HTTP_NON_AUTHORITATIVE_INFORMATION = 203; - const HTTP_NO_CONTENT = 204; - const HTTP_RESET_CONTENT = 205; - const HTTP_PARTIAL_CONTENT = 206; - const HTTP_MULTI_STATUS = 207; - const HTTP_ALREADY_REPORTED = 208; - const HTTP_IM_USED = 226; - const HTTP_MULTIPLE_CHOICES = 300; - const HTTP_MOVED_PERMANENTLY = 301; - const HTTP_FOUND = 302; - const HTTP_SEE_OTHER = 303; - const HTTP_NOT_MODIFIED = 304; - const HTTP_USE_PROXY = 305; - const HTTP_RESERVED = 306; - const HTTP_TEMPORARY_REDIRECT = 307; - const HTTP_PERMANENTLY_REDIRECT = 308; - const HTTP_BAD_REQUEST = 400; - const HTTP_UNAUTHORIZED = 401; - const HTTP_PAYMENT_REQUIRED = 402; - const HTTP_FORBIDDEN = 403; - const HTTP_NOT_FOUND = 404; - const HTTP_METHOD_NOT_ALLOWED = 405; - const HTTP_NOT_ACCEPTABLE = 406; - const HTTP_PROXY_AUTHENTICATION_REQUIRED = 407; - const HTTP_REQUEST_TIMEOUT = 408; - const HTTP_CONFLICT = 409; - const HTTP_GONE = 410; - const HTTP_LENGTH_REQUIRED = 411; - const HTTP_PRECONDITION_FAILED = 412; - const HTTP_REQUEST_ENTITY_TOO_LARGE = 413; - const HTTP_REQUEST_URI_TOO_LONG = 414; - const HTTP_UNSUPPORTED_MEDIA_TYPE = 415; - const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416; - const HTTP_EXPECTATION_FAILED = 417; - const HTTP_I_AM_A_TEAPOT = 418; - const HTTP_UNPROCESSABLE_ENTITY = 422; - const HTTP_LOCKED = 423; - const HTTP_FAILED_DEPENDENCY = 424; - const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; - const HTTP_UPGRADE_REQUIRED = 426; - const HTTP_PRECONDITION_REQUIRED = 428; - const HTTP_TOO_MANY_REQUESTS = 429; - const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; - const HTTP_INTERNAL_SERVER_ERROR = 500; - const HTTP_NOT_IMPLEMENTED = 501; - const HTTP_BAD_GATEWAY = 502; - const HTTP_SERVICE_UNAVAILABLE = 503; - const HTTP_GATEWAY_TIMEOUT = 504; - const HTTP_VERSION_NOT_SUPPORTED = 505; - const HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL = 506; - const HTTP_INSUFFICIENT_STORAGE = 507; - const HTTP_LOOP_DETECTED = 508; - const HTTP_NOT_EXTENDED = 510; - const HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511; - public $headers; - protected $content; - protected $version; - protected $statusCode; - protected $statusText; - protected $charset; - public static $statusTexts = array(100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative Information', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Reserved', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Timeout', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested Range Not Satisfiable', 417 => 'Expectation Failed', 418 => 'I\'m a teapot', 422 => 'Unprocessable Entity', 423 => 'Locked', 424 => 'Failed Dependency', 425 => 'Reserved for WebDAV advanced collections expired proposal', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway', 503 => 'Service Unavailable', 504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates (Experimental)', 507 => 'Insufficient Storage', 508 => 'Loop Detected', 510 => 'Not Extended', 511 => 'Network Authentication Required'); - public function __construct($content = '', $status = 200, $headers = array()) - { - $this->headers = new ResponseHeaderBag($headers); - $this->setContent($content); - $this->setStatusCode($status); - $this->setProtocolVersion('1.0'); - if (!$this->headers->has('Date')) { - $this->setDate(new \DateTime(null, new \DateTimeZone('UTC'))); - } - } - public static function create($content = '', $status = 200, $headers = array()) - { - return new static($content, $status, $headers); - } - public function __toString() - { - return sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText) . ' -' . $this->headers . ' -' . $this->getContent(); - } - public function __clone() - { - $this->headers = clone $this->headers; - } - public function prepare(Request $request) - { - $headers = $this->headers; - if ($this->isInformational() || in_array($this->statusCode, array(204, 304))) { - $this->setContent(null); - } - if (!$headers->has('Content-Type')) { - $format = $request->getRequestFormat(); - if (null !== $format && ($mimeType = $request->getMimeType($format))) { - $headers->set('Content-Type', $mimeType); - } - } - $charset = $this->charset ?: 'UTF-8'; - if (!$headers->has('Content-Type')) { - $headers->set('Content-Type', 'text/html; charset=' . $charset); - } elseif (0 === stripos($headers->get('Content-Type'), 'text/') && false === stripos($headers->get('Content-Type'), 'charset')) { - $headers->set('Content-Type', $headers->get('Content-Type') . '; charset=' . $charset); - } - if ($headers->has('Transfer-Encoding')) { - $headers->remove('Content-Length'); - } - if ($request->isMethod('HEAD')) { - $length = $headers->get('Content-Length'); - $this->setContent(null); - if ($length) { - $headers->set('Content-Length', $length); - } - } - if ('HTTP/1.0' != $request->server->get('SERVER_PROTOCOL')) { - $this->setProtocolVersion('1.1'); - } - if ('1.0' == $this->getProtocolVersion() && 'no-cache' == $this->headers->get('Cache-Control')) { - $this->headers->set('pragma', 'no-cache'); - $this->headers->set('expires', -1); - } - $this->ensureIEOverSSLCompatibility($request); - return $this; - } - public function sendHeaders() - { - if (headers_sent()) { - return $this; - } - header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode); - foreach ($this->headers->allPreserveCase() as $name => $values) { - foreach ($values as $value) { - header($name . ': ' . $value, false, $this->statusCode); - } - } - foreach ($this->headers->getCookies() as $cookie) { - setcookie($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); - } - return $this; - } - public function sendContent() - { - echo $this->content; - return $this; - } - public function send() - { - $this->sendHeaders(); - $this->sendContent(); - if (function_exists('fastcgi_finish_request')) { - fastcgi_finish_request(); - } elseif ('cli' !== PHP_SAPI) { - static::closeOutputBuffers(0, true); - flush(); - } - return $this; - } - public function setContent($content) - { - if (null !== $content && !is_string($content) && !is_numeric($content) && !is_callable(array($content, '__toString'))) { - throw new \UnexpectedValueException(sprintf('The Response content must be a string or object implementing __toString(), "%s" given.', gettype($content))); - } - $this->content = (string) $content; - return $this; - } - public function getContent() - { - return $this->content; - } - public function setProtocolVersion($version) - { - $this->version = $version; - return $this; - } - public function getProtocolVersion() - { - return $this->version; - } - public function setStatusCode($code, $text = null) - { - $this->statusCode = $code = (int) $code; - if ($this->isInvalid()) { - throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code)); - } - if (null === $text) { - $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : ''; - return $this; - } - if (false === $text) { - $this->statusText = ''; - return $this; - } - $this->statusText = $text; - return $this; - } - public function getStatusCode() - { - return $this->statusCode; - } - public function setCharset($charset) - { - $this->charset = $charset; - return $this; - } - public function getCharset() - { - return $this->charset; - } - public function isCacheable() - { - if (!in_array($this->statusCode, array(200, 203, 300, 301, 302, 404, 410))) { - return false; - } - if ($this->headers->hasCacheControlDirective('no-store') || $this->headers->getCacheControlDirective('private')) { - return false; - } - return $this->isValidateable() || $this->isFresh(); - } - public function isFresh() - { - return $this->getTtl() > 0; - } - public function isValidateable() - { - return $this->headers->has('Last-Modified') || $this->headers->has('ETag'); - } - public function setPrivate() - { - $this->headers->removeCacheControlDirective('public'); - $this->headers->addCacheControlDirective('private'); - return $this; - } - public function setPublic() - { - $this->headers->addCacheControlDirective('public'); - $this->headers->removeCacheControlDirective('private'); - return $this; - } - public function mustRevalidate() - { - return $this->headers->hasCacheControlDirective('must-revalidate') || $this->headers->has('proxy-revalidate'); - } - public function getDate() - { - return $this->headers->getDate('Date', new \DateTime()); - } - public function setDate(\DateTime $date) - { - $date->setTimezone(new \DateTimeZone('UTC')); - $this->headers->set('Date', $date->format('D, d M Y H:i:s') . ' GMT'); - return $this; - } - public function getAge() - { - if (null !== ($age = $this->headers->get('Age'))) { - return (int) $age; - } - return max(time() - $this->getDate()->format('U'), 0); - } - public function expire() - { - if ($this->isFresh()) { - $this->headers->set('Age', $this->getMaxAge()); - } - return $this; - } - public function getExpires() - { - try { - return $this->headers->getDate('Expires'); - } catch (\RuntimeException $e) { - return \DateTime::createFromFormat(DATE_RFC2822, 'Sat, 01 Jan 00 00:00:00 +0000'); - } - } - public function setExpires(\DateTime $date = null) - { - if (null === $date) { - $this->headers->remove('Expires'); - } else { - $date = clone $date; - $date->setTimezone(new \DateTimeZone('UTC')); - $this->headers->set('Expires', $date->format('D, d M Y H:i:s') . ' GMT'); - } - return $this; - } - public function getMaxAge() - { - if ($this->headers->hasCacheControlDirective('s-maxage')) { - return (int) $this->headers->getCacheControlDirective('s-maxage'); - } - if ($this->headers->hasCacheControlDirective('max-age')) { - return (int) $this->headers->getCacheControlDirective('max-age'); - } - if (null !== $this->getExpires()) { - return $this->getExpires()->format('U') - $this->getDate()->format('U'); - } - } - public function setMaxAge($value) - { - $this->headers->addCacheControlDirective('max-age', $value); - return $this; - } - public function setSharedMaxAge($value) - { - $this->setPublic(); - $this->headers->addCacheControlDirective('s-maxage', $value); - return $this; - } - public function getTtl() - { - if (null !== ($maxAge = $this->getMaxAge())) { - return $maxAge - $this->getAge(); - } - } - public function setTtl($seconds) - { - $this->setSharedMaxAge($this->getAge() + $seconds); - return $this; - } - public function setClientTtl($seconds) - { - $this->setMaxAge($this->getAge() + $seconds); - return $this; - } - public function getLastModified() - { - return $this->headers->getDate('Last-Modified'); - } - public function setLastModified(\DateTime $date = null) - { - if (null === $date) { - $this->headers->remove('Last-Modified'); - } else { - $date = clone $date; - $date->setTimezone(new \DateTimeZone('UTC')); - $this->headers->set('Last-Modified', $date->format('D, d M Y H:i:s') . ' GMT'); - } - return $this; - } - public function getEtag() - { - return $this->headers->get('ETag'); - } - public function setEtag($etag = null, $weak = false) - { - if (null === $etag) { - $this->headers->remove('Etag'); - } else { - if (0 !== strpos($etag, '"')) { - $etag = '"' . $etag . '"'; - } - $this->headers->set('ETag', (true === $weak ? 'W/' : '') . $etag); - } - return $this; - } - public function setCache(array $options) - { - if ($diff = array_diff(array_keys($options), array('etag', 'last_modified', 'max_age', 's_maxage', 'private', 'public'))) { - throw new \InvalidArgumentException(sprintf('Response does not support the following options: "%s".', implode('", "', array_values($diff)))); - } - if (isset($options['etag'])) { - $this->setEtag($options['etag']); - } - if (isset($options['last_modified'])) { - $this->setLastModified($options['last_modified']); - } - if (isset($options['max_age'])) { - $this->setMaxAge($options['max_age']); - } - if (isset($options['s_maxage'])) { - $this->setSharedMaxAge($options['s_maxage']); - } - if (isset($options['public'])) { - if ($options['public']) { - $this->setPublic(); - } else { - $this->setPrivate(); - } - } - if (isset($options['private'])) { - if ($options['private']) { - $this->setPrivate(); - } else { - $this->setPublic(); - } - } - return $this; - } - public function setNotModified() - { - $this->setStatusCode(304); - $this->setContent(null); - foreach (array('Allow', 'Content-Encoding', 'Content-Language', 'Content-Length', 'Content-MD5', 'Content-Type', 'Last-Modified') as $header) { - $this->headers->remove($header); - } - return $this; - } - public function hasVary() - { - return null !== $this->headers->get('Vary'); - } - public function getVary() - { - if (!($vary = $this->headers->get('Vary', null, false))) { - return array(); - } - $ret = array(); - foreach ($vary as $item) { - $ret = array_merge($ret, preg_split('/[\\s,]+/', $item)); - } - return $ret; - } - public function setVary($headers, $replace = true) - { - $this->headers->set('Vary', $headers, $replace); - return $this; - } - public function isNotModified(Request $request) - { - if (!$request->isMethodSafe()) { - return false; - } - $lastModified = $request->headers->get('If-Modified-Since'); - $notModified = false; - if ($etags = $request->getEtags()) { - $notModified = (in_array($this->getEtag(), $etags) || in_array('*', $etags)) && (!$lastModified || $this->headers->get('Last-Modified') == $lastModified); - } elseif ($lastModified) { - $notModified = $lastModified == $this->headers->get('Last-Modified'); - } - if ($notModified) { - $this->setNotModified(); - } - return $notModified; - } - public function isInvalid() - { - return $this->statusCode < 100 || $this->statusCode >= 600; - } - public function isInformational() - { - return $this->statusCode >= 100 && $this->statusCode < 200; - } - public function isSuccessful() - { - return $this->statusCode >= 200 && $this->statusCode < 300; - } - public function isRedirection() - { - return $this->statusCode >= 300 && $this->statusCode < 400; - } - public function isClientError() - { - return $this->statusCode >= 400 && $this->statusCode < 500; - } - public function isServerError() - { - return $this->statusCode >= 500 && $this->statusCode < 600; - } - public function isOk() - { - return 200 === $this->statusCode; - } - public function isForbidden() - { - return 403 === $this->statusCode; - } - public function isNotFound() - { - return 404 === $this->statusCode; - } - public function isRedirect($location = null) - { - return in_array($this->statusCode, array(201, 301, 302, 303, 307, 308)) && (null === $location ?: $location == $this->headers->get('Location')); - } - public function isEmpty() - { - return in_array($this->statusCode, array(204, 304)); - } - public static function closeOutputBuffers($targetLevel, $flush) - { - $status = ob_get_status(true); - $level = count($status); - while ($level-- > $targetLevel && (!empty($status[$level]['del']) || isset($status[$level]['flags']) && $status[$level]['flags'] & PHP_OUTPUT_HANDLER_REMOVABLE && $status[$level]['flags'] & ($flush ? PHP_OUTPUT_HANDLER_FLUSHABLE : PHP_OUTPUT_HANDLER_CLEANABLE))) { - if ($flush) { - ob_end_flush(); - } else { - ob_end_clean(); - } - } - } - protected function ensureIEOverSSLCompatibility(Request $request) - { - if (false !== stripos($this->headers->get('Content-Disposition'), 'attachment') && preg_match('/MSIE (.*?);/i', $request->server->get('HTTP_USER_AGENT'), $match) == 1 && true === $request->isSecure()) { - if (intval(preg_replace('/(MSIE )(.*?);/', '$2', $match[0])) < 9) { - $this->headers->remove('Cache-Control'); - } - } - } -} -namespace Illuminate\Http; - -use ArrayObject; -use Illuminate\Support\Contracts\JsonableInterface; -use Illuminate\Support\Contracts\RenderableInterface; -class Response extends \Symfony\Component\HttpFoundation\Response -{ - use ResponseTrait; - public $original; - public function setContent($content) - { - $this->original = $content; - if ($this->shouldBeJson($content)) { - $this->headers->set('Content-Type', 'application/json'); - $content = $this->morphToJson($content); - } elseif ($content instanceof RenderableInterface) { - $content = $content->render(); - } - return parent::setContent($content); - } - protected function morphToJson($content) - { - if ($content instanceof JsonableInterface) { - return $content->toJson(); - } - return json_encode($content); - } - protected function shouldBeJson($content) - { - return $content instanceof JsonableInterface || $content instanceof ArrayObject || is_array($content); - } - public function getOriginalContent() - { - return $this->original; - } -} -namespace Symfony\Component\HttpFoundation; - -class ResponseHeaderBag extends HeaderBag -{ - const COOKIES_FLAT = 'flat'; - const COOKIES_ARRAY = 'array'; - const DISPOSITION_ATTACHMENT = 'attachment'; - const DISPOSITION_INLINE = 'inline'; - protected $computedCacheControl = array(); - protected $cookies = array(); - protected $headerNames = array(); - public function __construct(array $headers = array()) - { - parent::__construct($headers); - if (!isset($this->headers['cache-control'])) { - $this->set('Cache-Control', ''); - } - } - public function __toString() - { - $cookies = ''; - foreach ($this->getCookies() as $cookie) { - $cookies .= 'Set-Cookie: ' . $cookie . ' -'; - } - ksort($this->headerNames); - return parent::__toString() . $cookies; - } - public function allPreserveCase() - { - return array_combine($this->headerNames, $this->headers); - } - public function replace(array $headers = array()) - { - $this->headerNames = array(); - parent::replace($headers); - if (!isset($this->headers['cache-control'])) { - $this->set('Cache-Control', ''); - } - } - public function set($key, $values, $replace = true) - { - parent::set($key, $values, $replace); - $uniqueKey = strtr(strtolower($key), '_', '-'); - $this->headerNames[$uniqueKey] = $key; - if (in_array($uniqueKey, array('cache-control', 'etag', 'last-modified', 'expires'))) { - $computed = $this->computeCacheControlValue(); - $this->headers['cache-control'] = array($computed); - $this->headerNames['cache-control'] = 'Cache-Control'; - $this->computedCacheControl = $this->parseCacheControl($computed); - } - } - public function remove($key) - { - parent::remove($key); - $uniqueKey = strtr(strtolower($key), '_', '-'); - unset($this->headerNames[$uniqueKey]); - if ('cache-control' === $uniqueKey) { - $this->computedCacheControl = array(); - } - } - public function hasCacheControlDirective($key) - { - return array_key_exists($key, $this->computedCacheControl); - } - public function getCacheControlDirective($key) - { - return array_key_exists($key, $this->computedCacheControl) ? $this->computedCacheControl[$key] : null; - } - public function setCookie(Cookie $cookie) - { - $this->cookies[$cookie->getDomain()][$cookie->getPath()][$cookie->getName()] = $cookie; - } - public function removeCookie($name, $path = '/', $domain = null) - { - if (null === $path) { - $path = '/'; - } - unset($this->cookies[$domain][$path][$name]); - if (empty($this->cookies[$domain][$path])) { - unset($this->cookies[$domain][$path]); - if (empty($this->cookies[$domain])) { - unset($this->cookies[$domain]); - } - } - } - public function getCookies($format = self::COOKIES_FLAT) - { - if (!in_array($format, array(self::COOKIES_FLAT, self::COOKIES_ARRAY))) { - throw new \InvalidArgumentException(sprintf('Format "%s" invalid (%s).', $format, implode(', ', array(self::COOKIES_FLAT, self::COOKIES_ARRAY)))); - } - if (self::COOKIES_ARRAY === $format) { - return $this->cookies; - } - $flattenedCookies = array(); - foreach ($this->cookies as $path) { - foreach ($path as $cookies) { - foreach ($cookies as $cookie) { - $flattenedCookies[] = $cookie; - } - } - } - return $flattenedCookies; - } - public function clearCookie($name, $path = '/', $domain = null) - { - $this->setCookie(new Cookie($name, null, 1, $path, $domain)); - } - public function makeDisposition($disposition, $filename, $filenameFallback = '') - { - if (!in_array($disposition, array(self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE))) { - throw new \InvalidArgumentException(sprintf('The disposition must be either "%s" or "%s".', self::DISPOSITION_ATTACHMENT, self::DISPOSITION_INLINE)); - } - if ('' == $filenameFallback) { - $filenameFallback = $filename; - } - if (!preg_match('/^[\\x20-\\x7e]*$/', $filenameFallback)) { - throw new \InvalidArgumentException('The filename fallback must only contain ASCII characters.'); - } - if (false !== strpos($filenameFallback, '%')) { - throw new \InvalidArgumentException('The filename fallback cannot contain the "%" character.'); - } - if (false !== strpos($filename, '/') || false !== strpos($filename, '\\') || false !== strpos($filenameFallback, '/') || false !== strpos($filenameFallback, '\\')) { - throw new \InvalidArgumentException('The filename and the fallback cannot contain the "/" and "\\" characters.'); - } - $output = sprintf('%s; filename="%s"', $disposition, str_replace('"', '\\"', $filenameFallback)); - if ($filename !== $filenameFallback) { - $output .= sprintf('; filename*=utf-8\'\'%s', rawurlencode($filename)); - } - return $output; - } - protected function computeCacheControlValue() - { - if (!$this->cacheControl && !$this->has('ETag') && !$this->has('Last-Modified') && !$this->has('Expires')) { - return 'no-cache'; - } - if (!$this->cacheControl) { - return 'private, must-revalidate'; - } - $header = $this->getCacheControlHeader(); - if (isset($this->cacheControl['public']) || isset($this->cacheControl['private'])) { - return $header; - } - if (!isset($this->cacheControl['s-maxage'])) { - return $header . ', private'; - } - return $header; - } -} -namespace Symfony\Component\HttpFoundation; - -class Cookie -{ - protected $name; - protected $value; - protected $domain; - protected $expire; - protected $path; - protected $secure; - protected $httpOnly; - public function __construct($name, $value = null, $expire = 0, $path = '/', $domain = null, $secure = false, $httpOnly = true) - { - if (preg_match('/[=,; - ]/', $name)) { - throw new \InvalidArgumentException(sprintf('The cookie name "%s" contains invalid characters.', $name)); - } - if (empty($name)) { - throw new \InvalidArgumentException('The cookie name cannot be empty.'); - } - if ($expire instanceof \DateTime) { - $expire = $expire->format('U'); - } elseif (!is_numeric($expire)) { - $expire = strtotime($expire); - if (false === $expire || -1 === $expire) { - throw new \InvalidArgumentException('The cookie expiration time is not valid.'); - } - } - $this->name = $name; - $this->value = $value; - $this->domain = $domain; - $this->expire = $expire; - $this->path = empty($path) ? '/' : $path; - $this->secure = (bool) $secure; - $this->httpOnly = (bool) $httpOnly; - } - public function __toString() - { - $str = urlencode($this->getName()) . '='; - if ('' === (string) $this->getValue()) { - $str .= 'deleted; expires=' . gmdate('D, d-M-Y H:i:s T', time() - 31536001); - } else { - $str .= urlencode($this->getValue()); - if ($this->getExpiresTime() !== 0) { - $str .= '; expires=' . gmdate('D, d-M-Y H:i:s T', $this->getExpiresTime()); - } - } - if ($this->path) { - $str .= '; path=' . $this->path; - } - if ($this->getDomain()) { - $str .= '; domain=' . $this->getDomain(); - } - if (true === $this->isSecure()) { - $str .= '; secure'; - } - if (true === $this->isHttpOnly()) { - $str .= '; httponly'; - } - return $str; - } - public function getName() - { - return $this->name; - } - public function getValue() - { - return $this->value; - } - public function getDomain() - { - return $this->domain; - } - public function getExpiresTime() - { - return $this->expire; - } - public function getPath() - { - return $this->path; - } - public function isSecure() - { - return $this->secure; - } - public function isHttpOnly() - { - return $this->httpOnly; - } - public function isCleared() - { - return $this->expire < time(); - } -} -namespace Whoops; - -use Whoops\Handler\HandlerInterface; -use Whoops\Handler\Handler; -use Whoops\Handler\CallbackHandler; -use Whoops\Exception\Inspector; -use Whoops\Exception\ErrorException; -use InvalidArgumentException; -use Exception; -class Run -{ - const EXCEPTION_HANDLER = 'handleException'; - const ERROR_HANDLER = 'handleError'; - const SHUTDOWN_HANDLER = 'handleShutdown'; - protected $isRegistered; - protected $allowQuit = true; - protected $sendOutput = true; - protected $sendHttpCode = 500; - protected $handlerStack = array(); - protected $silencedPatterns = array(); - public function pushHandler($handler) - { - if (is_callable($handler)) { - $handler = new CallbackHandler($handler); - } - if (!$handler instanceof HandlerInterface) { - throw new InvalidArgumentException('Argument to ' . __METHOD__ . ' must be a callable, or instance of' . 'Whoops\\Handler\\HandlerInterface'); - } - $this->handlerStack[] = $handler; - return $this; - } - public function popHandler() - { - return array_pop($this->handlerStack); - } - public function getHandlers() - { - return $this->handlerStack; - } - public function clearHandlers() - { - $this->handlerStack = array(); - return $this; - } - protected function getInspector(Exception $exception) - { - return new Inspector($exception); - } - public function register() - { - if (!$this->isRegistered) { - class_exists('\\Whoops\\Exception\\ErrorException'); - class_exists('\\Whoops\\Exception\\FrameCollection'); - class_exists('\\Whoops\\Exception\\Frame'); - class_exists('\\Whoops\\Exception\\Inspector'); - set_error_handler(array($this, self::ERROR_HANDLER)); - set_exception_handler(array($this, self::EXCEPTION_HANDLER)); - register_shutdown_function(array($this, self::SHUTDOWN_HANDLER)); - $this->isRegistered = true; - } - return $this; - } - public function unregister() - { - if ($this->isRegistered) { - restore_exception_handler(); - restore_error_handler(); - $this->isRegistered = false; - } - return $this; - } - public function allowQuit($exit = null) - { - if (func_num_args() == 0) { - return $this->allowQuit; - } - return $this->allowQuit = (bool) $exit; - } - public function silenceErrorsInPaths($patterns, $levels = 10240) - { - $this->silencedPatterns = array_merge($this->silencedPatterns, array_map(function ($pattern) use($levels) { - return array('pattern' => $pattern, 'levels' => $levels); - }, (array) $patterns)); - return $this; - } - public function sendHttpCode($code = null) - { - if (func_num_args() == 0) { - return $this->sendHttpCode; - } - if (!$code) { - return $this->sendHttpCode = false; - } - if ($code === true) { - $code = 500; - } - if ($code < 400 || 600 <= $code) { - throw new InvalidArgumentException("Invalid status code '{$code}', must be 4xx or 5xx"); - } - return $this->sendHttpCode = $code; - } - public function writeToOutput($send = null) - { - if (func_num_args() == 0) { - return $this->sendOutput; - } - return $this->sendOutput = (bool) $send; - } - public function handleException(Exception $exception) - { - $inspector = $this->getInspector($exception); - ob_start(); - $handlerResponse = null; - foreach (array_reverse($this->handlerStack) as $handler) { - $handler->setRun($this); - $handler->setInspector($inspector); - $handler->setException($exception); - $handlerResponse = $handler->handle($exception); - if (in_array($handlerResponse, array(Handler::LAST_HANDLER, Handler::QUIT))) { - break; - } - } - $willQuit = $handlerResponse == Handler::QUIT && $this->allowQuit(); - $output = ob_get_clean(); - if ($this->writeToOutput()) { - if ($willQuit) { - while (ob_get_level() > 0) { - ob_end_clean(); - } - } - $this->writeToOutputNow($output); - } - if ($willQuit) { - die(1); - } - return $output; - } - public function handleError($level, $message, $file = null, $line = null) - { - if ($level & error_reporting()) { - foreach ($this->silencedPatterns as $entry) { - $pathMatches = (bool) preg_match($entry['pattern'], $file); - $levelMatches = $level & $entry['levels']; - if ($pathMatches && $levelMatches) { - return true; - } - } - $exception = new ErrorException($message, $level, 0, $file, $line); - if ($this->canThrowExceptions) { - throw $exception; - } else { - $this->handleException($exception); - } - } - } - public function handleShutdown() - { - $this->canThrowExceptions = false; - $error = error_get_last(); - if ($error && $this->isLevelFatal($error['type'])) { - $this->handleError($error['type'], $error['message'], $error['file'], $error['line']); - } - } - private $canThrowExceptions = true; - private function writeToOutputNow($output) - { - if ($this->sendHttpCode() && \Whoops\Util\Misc::canSendHeaders()) { - $httpCode = $this->sendHttpCode(); - if (function_exists('http_response_code')) { - http_response_code($httpCode); - } else { - header('X-Ignore-This: 1', true, $httpCode); - } - } - echo $output; - return $this; - } - private static function isLevelFatal($level) - { - return in_array($level, array(E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING)); - } -} -namespace Whoops\Handler; - -use Whoops\Exception\Inspector; -use Whoops\Run; -use Exception; -interface HandlerInterface -{ - public function handle(); - public function setRun(Run $run); - public function setException(Exception $exception); - public function setInspector(Inspector $inspector); -} -namespace Whoops\Handler; - -use Whoops\Handler\HandlerInterface; -use Whoops\Exception\Inspector; -use Whoops\Run; -use Exception; -abstract class Handler implements HandlerInterface -{ - const DONE = 16; - const LAST_HANDLER = 32; - const QUIT = 48; - private $run; - private $inspector; - private $exception; - public function setRun(Run $run) - { - $this->run = $run; - } - protected function getRun() - { - return $this->run; - } - public function setInspector(Inspector $inspector) - { - $this->inspector = $inspector; - } - protected function getInspector() - { - return $this->inspector; - } - public function setException(Exception $exception) - { - $this->exception = $exception; - } - protected function getException() - { - return $this->exception; - } -} -namespace Whoops\Handler; - -use Whoops\Handler\Handler; -use Whoops\Util\TemplateHelper; -use InvalidArgumentException; -use RuntimeException; -class PrettyPageHandler extends Handler -{ - private $searchPaths = array(); - private $resourceCache = array(); - private $customCss = null; - private $extraTables = array(); - private $handleUnconditionally = false; - private $pageTitle = 'Whoops! There was an error.'; - protected $editor; - protected $editors = array('sublime' => 'subl://open?url=file://%file&line=%line', 'textmate' => 'txmt://open?url=file://%file&line=%line', 'emacs' => 'emacs://open?url=file://%file&line=%line', 'macvim' => 'mvim://open/?url=file://%file&line=%line'); - public function __construct() - { - if (ini_get('xdebug.file_link_format') || extension_loaded('xdebug')) { - $this->editors['xdebug'] = function ($file, $line) { - return str_replace(array('%f', '%l'), array($file, $line), ini_get('xdebug.file_link_format')); - }; - } - $this->searchPaths[] = '/var/www/vhosts/mentors/htdocs/vendor/filp/whoops/src/Whoops/Handler' . '/../Resources'; - } - public function handle() - { - if (!$this->handleUnconditionally()) { - if (php_sapi_name() === 'cli') { - if (isset($_ENV['whoops-test'])) { - throw new \Exception('Use handleUnconditionally instead of whoops-test' . ' environment variable'); - } - return Handler::DONE; - } - } - $helper = new TemplateHelper(); - $templateFile = $this->getResource('views/layout.html.php'); - $cssFile = $this->getResource('css/whoops.base.css'); - $zeptoFile = $this->getResource('js/zepto.min.js'); - $jsFile = $this->getResource('js/whoops.base.js'); - if ($this->customCss) { - $customCssFile = $this->getResource($this->customCss); - } - $inspector = $this->getInspector(); - $frames = $inspector->getFrames(); - $vars = array('page_title' => $this->getPageTitle(), 'stylesheet' => file_get_contents($cssFile), 'zepto' => file_get_contents($zeptoFile), 'javascript' => file_get_contents($jsFile), 'header' => $this->getResource('views/header.html.php'), 'frame_list' => $this->getResource('views/frame_list.html.php'), 'frame_code' => $this->getResource('views/frame_code.html.php'), 'env_details' => $this->getResource('views/env_details.html.php'), 'title' => $this->getPageTitle(), 'name' => explode('\\', $inspector->getExceptionName()), 'message' => $inspector->getException()->getMessage(), 'frames' => $frames, 'has_frames' => !!count($frames), 'handler' => $this, 'handlers' => $this->getRun()->getHandlers(), 'tables' => array('Server/Request Data' => $_SERVER, 'GET Data' => $_GET, 'POST Data' => $_POST, 'Files' => $_FILES, 'Cookies' => $_COOKIE, 'Session' => isset($_SESSION) ? $_SESSION : array(), 'Environment Variables' => $_ENV)); - if (isset($customCssFile)) { - $vars['stylesheet'] .= file_get_contents($customCssFile); - } - $extraTables = array_map(function ($table) { - return $table instanceof \Closure ? $table() : $table; - }, $this->getDataTables()); - $vars['tables'] = array_merge($extraTables, $vars['tables']); - $helper->setVariables($vars); - $helper->render($templateFile); - return Handler::QUIT; - } - public function addDataTable($label, array $data) - { - $this->extraTables[$label] = $data; - } - public function addDataTableCallback($label, $callback) - { - if (!is_callable($callback)) { - throw new InvalidArgumentException('Expecting callback argument to be callable'); - } - $this->extraTables[$label] = function () use($callback) { - try { - $result = call_user_func($callback); - return is_array($result) || $result instanceof \Traversable ? $result : array(); - } catch (\Exception $e) { - return array(); - } - }; - } - public function getDataTables($label = null) - { - if ($label !== null) { - return isset($this->extraTables[$label]) ? $this->extraTables[$label] : array(); - } - return $this->extraTables; - } - public function handleUnconditionally($value = null) - { - if (func_num_args() == 0) { - return $this->handleUnconditionally; - } - $this->handleUnconditionally = (bool) $value; - } - public function addEditor($identifier, $resolver) - { - $this->editors[$identifier] = $resolver; - } - public function setEditor($editor) - { - if (!is_callable($editor) && !isset($this->editors[$editor])) { - throw new InvalidArgumentException("Unknown editor identifier: {$editor}. Known editors:" . implode(',', array_keys($this->editors))); - } - $this->editor = $editor; - } - public function getEditorHref($filePath, $line) - { - if ($this->editor === null) { - return false; - } - $editor = $this->editor; - if (is_string($editor)) { - $editor = $this->editors[$editor]; - } - if (is_callable($editor)) { - $editor = call_user_func($editor, $filePath, $line); - } - if (!is_string($editor)) { - throw new InvalidArgumentException(__METHOD__ . ' should always resolve to a string; got something else instead'); - } - $editor = str_replace('%line', rawurlencode($line), $editor); - $editor = str_replace('%file', rawurlencode($filePath), $editor); - return $editor; - } - public function setPageTitle($title) - { - $this->pageTitle = (string) $title; - } - public function getPageTitle() - { - return $this->pageTitle; - } - public function addResourcePath($path) - { - if (!is_dir($path)) { - throw new InvalidArgumentException("'{$path}' is not a valid directory"); - } - array_unshift($this->searchPaths, $path); - } - public function addCustomCss($name) - { - $this->customCss = $name; - } - public function getResourcePaths() - { - return $this->searchPaths; - } - protected function getResource($resource) - { - if (isset($this->resourceCache[$resource])) { - return $this->resourceCache[$resource]; - } - foreach ($this->searchPaths as $path) { - $fullPath = $path . "/{$resource}"; - if (is_file($fullPath)) { - $this->resourceCache[$resource] = $fullPath; - return $fullPath; - } - } - throw new RuntimeException("Could not find resource '{$resource}' in any resource paths." . '(searched: ' . join(', ', $this->searchPaths) . ')'); - } - public function getResourcesPath() - { - $allPaths = $this->getResourcePaths(); - return end($allPaths) ?: null; - } - public function setResourcesPath($resourcesPath) - { - $this->addResourcePath($resourcesPath); - } -} -namespace Whoops\Handler; - -use Whoops\Handler\Handler; -use Whoops\Exception\Formatter; -class JsonResponseHandler extends Handler -{ - private $returnFrames = false; - private $onlyForAjaxRequests = false; - public function addTraceToOutput($returnFrames = null) - { - if (func_num_args() == 0) { - return $this->returnFrames; - } - $this->returnFrames = (bool) $returnFrames; - return $this; - } - public function onlyForAjaxRequests($onlyForAjaxRequests = null) - { - if (func_num_args() == 0) { - return $this->onlyForAjaxRequests; - } - $this->onlyForAjaxRequests = (bool) $onlyForAjaxRequests; - } - private function isAjaxRequest() - { - return !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'; - } - public function handle() - { - if ($this->onlyForAjaxRequests() && !$this->isAjaxRequest()) { - return Handler::DONE; - } - $response = array('error' => Formatter::formatExceptionAsDataArray($this->getInspector(), $this->addTraceToOutput())); - if (\Whoops\Util\Misc::canSendHeaders()) { - header('Content-Type: application/json'); - } - echo json_encode($response); - return Handler::QUIT; - } -} -namespace Stack; - -use Symfony\Component\HttpKernel\HttpKernelInterface; -class Builder -{ - private $specs; - public function __construct() - { - $this->specs = new \SplStack(); - } - public function unshift() - { - if (func_num_args() === 0) { - throw new \InvalidArgumentException('Missing argument(s) when calling unshift'); - } - $spec = func_get_args(); - $this->specs->unshift($spec); - return $this; - } - public function push() - { - if (func_num_args() === 0) { - throw new \InvalidArgumentException('Missing argument(s) when calling push'); - } - $spec = func_get_args(); - $this->specs->push($spec); - return $this; - } - public function resolve(HttpKernelInterface $app) - { - $middlewares = array($app); - foreach ($this->specs as $spec) { - $args = $spec; - $firstArg = array_shift($args); - if (is_callable($firstArg)) { - $app = $firstArg($app); - } else { - $kernelClass = $firstArg; - array_unshift($args, $app); - $reflection = new \ReflectionClass($kernelClass); - $app = $reflection->newInstanceArgs($args); - } - array_unshift($middlewares, $app); - } - return new StackedHttpKernel($app, $middlewares); - } -} -namespace Stack; - -use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\HttpKernel\TerminableInterface; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\Response; -class StackedHttpKernel implements HttpKernelInterface, TerminableInterface -{ - private $app; - private $middlewares = array(); - public function __construct(HttpKernelInterface $app, array $middlewares) - { - $this->app = $app; - $this->middlewares = $middlewares; - } - public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true) - { - return $this->app->handle($request, $type, $catch); - } - public function terminate(Request $request, Response $response) - { - foreach ($this->middlewares as $kernel) { - if ($kernel instanceof TerminableInterface) { - $kernel->terminate($request, $response); - } - } - } -} diff --git a/vendor/filp/whoops/.scrutinizer.yml b/vendor/filp/whoops/.scrutinizer.yml deleted file mode 100644 index 4601d82..0000000 --- a/vendor/filp/whoops/.scrutinizer.yml +++ /dev/null @@ -1,14 +0,0 @@ -imports: - - php - -filter: - paths: [src/*] - -tools: - php_cs_fixer: - config: { level: psr1 } - php_hhvm: true - php_mess_detector: true - sensiolabs_security_checker: true - external_code_coverage: - timeout: '3600' diff --git a/vendor/filp/whoops/CONTRIBUTING.md b/vendor/filp/whoops/CONTRIBUTING.md deleted file mode 100644 index 422e391..0000000 --- a/vendor/filp/whoops/CONTRIBUTING.md +++ /dev/null @@ -1,11 +0,0 @@ -If you want to give me some feedback or make a suggestion, create an [issue on GitHub](https://github.com/filp/whoops/issues/new). - -If you want to get your hands dirty, great! Here's a couple of steps/guidelines: -- See [a list of possible features to add](https://github.com/filp/whoops/wiki/Possible-features-to-add) for ideas on what can be improved. -- Add tests for your changes (in `tests/`). -- Remember to stick to the existing code style as best as possible. When in doubt, follow `PSR-2`. -- Before investing a lot of time coding, create an issue to get our opinion on your big changes. -- Update the documentation, if applicable. -- If you want to add an integration to a web framework, please [review our guidelines for that](docs/Framework%20Integration.md#contributing-an-integration-with-a-framework). - -In `PrettyPageHandler` we are using a Zepto library, but if you are only familiar with jQuery, note that it is pretty much identical. diff --git a/vendor/filp/whoops/docs/API Documentation.md b/vendor/filp/whoops/docs/API Documentation.md deleted file mode 100644 index ba102c2..0000000 --- a/vendor/filp/whoops/docs/API Documentation.md +++ /dev/null @@ -1,393 +0,0 @@ -# API Documentation - -### Core Classes: -- [`Whoops\Run`](#whoops-run) - The main `Whoops` class - represents the stack and current execution -- [`Whoops\Handler\Handler` and `Whoops\Handler\HandlerInterface`](#handler-abstract) - Abstract representation of a Handler, and utility methods -- [`Whoops\Exception\Inspector`](#inspector) - Exposes methods to inspect an exception -- [`Whoops\Exception\FrameCollection`](#frame-collection) - Exposes methods to work with a list of frames -- [`Whoops\Exception\Frame`](#frame) - Exposes methods to inspect a single stack trace frame from an exception - -### Core Handlers: -- [`Whoops\Handler\CallbackHandler`](#handler-callback) - Wraps regular closures as handlers -- [`Whoops\Handler\JsonResponseHandler`](#handler-json) - Formats errors and exceptions as a JSON payload -- [`Whoops\Handler\PrettyPageHandler`](#handler-pretty) - Outputs a detailed, fancy error page - -# Core Classes: - -## `Whoops\Run` - -The `Run` class models an instance of an execution, and integrates the methods to control whoops' execution in that context, and control the handlers stack. - -### Constants - -```php -string Run::EXCEPTION_HANDLER // (name for exception handler method) -string Run::ERROR_HANDLER // (name for error handler method) -string Run::SHUTDOWN_HANDLER // (name for shutdown handler method) -``` - -### Methods - -```php -// Pushes a new handler to the stack of handlers -Run::pushHandler( Whoops\HandlerInterface $handler ) - #=> Whoops\Run - -// Pops and returns the last handler from the stack -Run::popHandler() - #=> Whoops\HandlerInterface - -// Returns all handlers in the stack -Run::getHandlers() - #=> Whoops\HandlerInterface[] - -// Returns a Whoops\Inspector instance for a given Exception -Run::getInspector( Exception $exception ) - #=> Whoops\Exception\Inspector - -// Registers this Whoops\Run instance as an error/exception/shutdown -// handler with PHP -Run::register() - #=> Whoops\Run - -// I'll let you guess this one -Run::unregister() - #=> Whoops\Run - -// If true, allows Whoops to terminate script execution (default: true) -Run::allowQuit( $allowQuit = null ) - #=> bool - -// If true, allows Whoops to send output produced by handlers directly -// to the client. You'll want to set this to false if you want to -// package the handlers' response into your HTTP response abstraction -// or something (default: true) -Run::writeToOutput( $send = null) - #=> bool - -// ** HANDLERS ** -// These are semi-internal methods that receive input from -// PHP directly. If you know what you're doing, you can -// also call them directly - -// Handles an exception with the current stack. Returns the -// output produced by handlers. -Run::handleException( Exception $exception ) - #=> string - -// Handles an error with the current stack. Errors are -// converted into SPL ErrorException instances -Run::handleError( int $level, string $message, string $file = null, int $line = null) - #=> null - -// Hooked as a shutdown handler, captures fatal errors and handles them -// through the current stack: -Run::handleShutdown() - #=> null -``` - -## `Whoops\Handler\Handler` & `Whoops\Handler\HandlerInterface` - -This abstract class contains the base methods for concrete handler implementations. Custom handlers can extend it, or implement the `Whoops\Handler\HandlerInterface` interface. - -### Constants -```php -int Handler::DONE // If returned from HandlerInterface::handle, does absolutely nothing. -int Handler::LAST_HANDLER // ...tells whoops to not execute any more handlers after this one. -int Handler::QUIT // ...tells whoops to quit script execution immediately. -``` - -### Methods - -```php -// Custom handlers should expose this method, which will be called once an -// exception needs to be handled. The Handler::* constants can be used to -// signal the underlying logic as to what to do next. -HandlerInterface::handle() - #=> null | int - -// Sets the Run instance for this handler -HandlerInterface::setRun( Whoops\Run $run) - #=> null - -// Sets the Inspector instance for this handler -HandlerInterface::setInspector( Whoops\Exception\Inspector $inspector) - #=> null - -// Sets the Exception for this handler to handle -HandlerInterface::setException( Exception $exception ) - #=> null -``` - -## `Whoops\Exception\Inspector` - -The `Inspector` class provides methods to inspect an exception instance, with particular focus on its frames/stack-trace. - -### Methods - -```php -Inspector::__construct( Exception $exception ) - #=> null - -// Returns the Exception instance being inspected -Inspector::getException() - #=> Exception - -// Returns the string name of the Exception being inspected -// A faster way of doing get_class($inspector->getException()) -Inspector::getExceptionName() - #=> string - -// Returns the string message for the Exception being inspected -// A faster way of doing $inspector->getException()->getMessage() -Inspector::getExceptionMessage() - #=> string - -// Returns an iterator instance for all the frames in the stack -// trace for the Exception being inspected. -Inspector::getFrames() - #=> Whoops\Exception\FrameIterator -``` - -## `Whoops\Exception\FrameCollection` - -The `FrameCollection` class exposes a fluent interface to manipulate and examine a -collection of `Frame` instances. - -`FrameCollection` objects are **serializable**. - -### Methods - -```php -// Returns the number of frames in the collection -// May also be called as count($frameCollection) -FrameCollection::count() - #=> int - -// Filter the Frames in the collection with a callable. -// The callable must accept a Frame object, and return -// true to keep it in the collection, or false not to. -FrameCollection::filter( callable $callable ) - #=> FrameCollection - -// See: array_map -// The callable must accept a Frame object, and return -// a Frame object, doesn't matter if it's the same or not -// - will throw an UnexpectedValueException if something -// else is returned. -FrameCollection::map( callable $callable) - #=> FrameCollection -``` - -## `Whoops\Exception\Frame` - -The `Frame` class models a single frame in an exception's stack trace. You can use it to retrieve info about things such as frame context, file, line number. Additionally, you have available functionality to add comments to a frame, which is made available to other handlers. - -`Frame` objects are **serializable**. - -### Methods - -```php -// Returns the file path for the file where this frame occured. -// The optional $shortened argument allows you to retrieve a -// shorter, human-readable file path for display. -Frame::getFile( bool $shortened = false ) - #=> string | null (Some frames do not have a file path) - -// Returns the line number for this frame -Frame::getLine() - #=> int | null - -// Returns the class name for this frame, if it occured -// within a class/instance. -Frame::getClass() - #=> string | null - -// Returns the function name for this frame, if it occured -// within a function/method -Frame::getFunction() - #=> string | null - -// Returns an array of arguments for this frame. Empty if no -// arguments were provided. -Frame::getArgs() - #=> array - -// Returns the full file contents for the file where this frame -// occured. -Frame::getFileContents() - #=> string | null - -// Returns an array of lines for a file, optionally scoped to a -// given range of line numbers. i.e: Frame::getFileLines(0, 3) -// returns the first 3 lines after line 0 (1) -Frame::getFileLines( int $start = 0, int $length = null) - #=> array | null - -// Adds a comment to this Frame instance. Comments are shared -// with everything that can access the frame instance, obviously, -// so they can be used for a variety of inter-operability purposes. -// The context option can be used to improve comment filtering. -// Additionally, if frames contain URIs, the PrettyPageHandler -// will automagically convert them to clickable anchor elements. -Frame::addComment( string $comment, string $context = 'global' ) - #=> null - -// Returns all comments for this instance optionally filtered by -// a string context identifier. -Frame::getComments( string $filter = null ) - #=> array -``` - -# Core Handlers - -## `Whoops\Handler\CallbackHandler` - -The `CallbackHandler` handler wraps regular PHP closures as valid handlers. Useful for quick prototypes or simple handlers. When you pass a closure to `Run::pushHandler`, it's automatically converted to a `CallbackHandler` instance. - -```php -pushHandler(function($exception, $inspector, $run) { - var_dump($exception->getMessage()); - return Handler::DONE; -}); - -$run->popHandler() // #=> Whoops\Handler\CallbackHandler -``` - -### Methods - -```php -// Accepts any valid callable -// For example, a closure, a string function name, an array -// in the format array($class, $method) -CallbackHandler::__construct( $callable ) - #=> null - -CallbackHandler::handle() - #=> int | null -``` - -## `Whoops\Handler\JsonResponseHandler` - -The `JsonResponseHandler`, upon receiving an exception to handle, simply constructs a `JSON` payload, and outputs it. Methods are available to control the detail of the output, and if it should only execute for AJAX requests - paired with another handler under it, such as the `PrettyPageHandler`, it allows you to have meaningful output for both regular and AJAX requests. Neat! - -The `JSON` body has the following format: - -```json -{ - "error": { - "type": "RuntimeException", - "message": "Something broke!", - "file": "/var/project/foo/bar.php", - "line": 22, - - # if JsonResponseHandler::addTraceToOutput(true): - "trace": [ - { "file": "/var/project/foo/index.php", - "line": 157, - "function": "handleStuffs", - "class": "MyApplication\DoerOfThings", - "args": [ true, 10, "yay method arguments" ] }, - # ... more frames here ... - ] - } -} -``` - -### Methods - -```php - -// Should detailed stack trace output also be added to the -// JSON payload body? -JsonResponseHandler::addTraceToOutput( bool $yes = null ) - #=> bool - -// Should output only be sent if the current request is an -// AJAX request? -JsonResponseHandler::onlyForAjaxRequests( bool $yes = null ) - #=> bool - -JsonResponseHandler::handle() - #=> int | null -``` - -## `Whoops\Handler\PrettyPageHandler` - -The `PrettyPageHandler` generates a fancy, detailed error page which includes code views for all frames in the stack trace, environment details, etc. Super neat. It produces a bundled response string that does not require any further HTTP requests, so it's fit to work on pretty much any environment and framework that speaks back to a browser, without you having to explicitly hook it up to your framework/project's routing mechanisms. - -### Methods - -```php -// Adds a key=>value table of arbitrary data, labeled by $label, to -// the output. Useful where you want to display contextual data along -// with the error, about your application or project. -PrettyPageHandler::addDataTable( string $label, array $data ) - #=> null - -// Similar to PrettyPageHandler::addDataTable, but accepts a callable -// that will be called only when rendering an exception. This allows -// you to gather additional data that may not be available very early -// in the process. -PrettyPageHandler::addDataTableCallback( string $label, callable $callback ) - #=> null - -// Returns all data tables registered with this handler. Optionally -// accepts a string label, and will only return the data under that -// label. -PrettyPageHandler::getDataTables( string $label = null ) - #=> array | array[] - -// Sets the title for the error page -PrettyPageHandler::setPageTitle( string $title ) - #=> null - -// Returns the title for the error page -PrettyPageHandler::getPageTitle() - #=> string - -// Returns a list of string paths where resources -// used by this handler are searched for - the template and CSS -// files. -PrettyPageHandler::getResourcesPaths() - #=> array - -// Adds a string path to the location of resources for the -// handler. Useful if you want to roll your own template -// file (pretty-template.php and pretty-page.css) while -// still using the logic this handler provides -PrettyPageHandler::addResourcesPath( string $resourcesPath ) - #=> null - -// Sets an editor to use to open referenced files, either by -// a string identifier, or as an arbitrary callable that returns -// a string that can be used as an href attribute. -// Available built-in editors are: -// - sublime -// - emacs -// - textmate -// - macvim -PrettyPageHandler::setEditor( string $editor ) -PrettyPageHandler::setEditor( function($file, $line) { return string } ) - #=> null - -// Similar to PrettyPageHandler::setEditor, but allows you -// to name your custom editor, thus sharing it with the -// rest of the application. Useful if, for example, you integrate -// Whoops into your framework or library, and want to share -// support for extra editors with the end-user. -// -// $resolver may be a callable, like with ::setEditor, or a string -// with placeholders %file and %line. -// For example: -// $handler->addEditor('whatevs', 'whatevs://open?file=file://%file&line=%line') -PrettyPageHandler::addEditor( string $editor, $resolver ) - #=> null - -PrettyPageHandler::handle() - #=> int | null -``` diff --git a/vendor/filp/whoops/docs/Framework Integration.md b/vendor/filp/whoops/docs/Framework Integration.md deleted file mode 100644 index ee6669a..0000000 --- a/vendor/filp/whoops/docs/Framework Integration.md +++ /dev/null @@ -1,80 +0,0 @@ -# Integrating with Silex - -**whoops** comes packaged with a Silex Service Provider: `Whoops\Provider\Silex\WhoopsServiceProvider`. Using it -in your existing Silex project is easy: - -```php - -require 'vendor/autoload.php'; - -use Silex\Application; - -// ... some awesome code here ... - -if($app['debug']) { - $app->register(new Whoops\Provider\Silex\WhoopsServiceProvider); -} - -// ... - -$app->run(); -``` - -And that's about it. By default, you'll get the pretty error pages if something goes awry in your development -environment, but you also have full access to the **whoops** library, obviously. For example, adding a new handler -into your app is as simple as extending `whoops`: - -```php -$app['whoops'] = $app->extend('whoops', function($whoops) { - $whoops->pushHandler(new DeleteWholeProjectHandler); - return $whoops; -}); -``` - - -# Integrating with Phalcon - -**whoops** comes packaged with a Phalcon Service Provider: `Whoops\Provider\Phalcon\WhoopsServiceProvider`. Using it -in your existing Phalcon project is easy. The provider uses the default Phalcon DI unless you pass a DI instance into the constructor. - -```php -new Whoops\Provider\Phalcon\WhoopsServiceProvider; - -// --- or --- - -$di = Phalcon\DI\FactoryDefault; -new Whoops\Provider\Phalcon\WhoopsServiceProvider($di); -``` - - -# Contributing an integration with a framework - -Lately we're prefering to keep integration libraries out of the Whoops core. -If possible, consider managing an official Whoops-SomeFramework integration. - -The procedure is not hard at all. - -1. Keep your integration classes and instructions in a repository of your own; -2. Create a `composer.json` file in your repository with contents similar to the following: - - ``` - { - "name": "username/whoops-someframework", - "description": "Integrates the Whoops library into SomeFramework", - "require": { - "filp/whoops": "1.*" - } - } - ``` - -3. [Register it with Packagist](https://packagist.org/packages/submit). - -Once that is done, please create an issue and we will add a link to it in our README. - -SomeFramework users then would write this in their `composer.json`: - - "require": { - "username/whoops-someframework": "*" - } - -This would also install Whoops and you'd be able to release updates to your package as quickly as you wish them to. diff --git a/vendor/filp/whoops/docs/Open Files In An Editor.md b/vendor/filp/whoops/docs/Open Files In An Editor.md deleted file mode 100644 index c789aca..0000000 --- a/vendor/filp/whoops/docs/Open Files In An Editor.md +++ /dev/null @@ -1,49 +0,0 @@ -# Open Files In An Editor - -When using the pretty error page feature, whoops comes with the ability to -open referenced files directly in your IDE or editor. - -```php -setEditor('sublime'); -``` - -The following editors are currently supported by default. - -- `sublime` - Sublime Text 2 -- `emacs` - Emacs -- `textmate` - Textmate -- `macvim` - MacVim -- `xdebug` - xdebug (uses [xdebug.file_link_format](http://xdebug.org/docs/all_settings#file_link_format)) - -Adding your own editor is simple: - -```php - -$handler->setEditor(function($file, $line) { - return "whatever://open?file=$file&line=$line"; -}); - -``` - -You can add PhpStorm support with [PhpStormOpener](https://github.com/pinepain/PhpStormOpener#phpstormopener) (Mac OS X only): -```php - -$handler->setEditor( - function ($file, $line) { - // if your development server is not local it's good to map remote files to local - $translations = array('^' . __DIR__ => '~/Development/PhpStormOpener'); // change to your path - - foreach ($translations as $from => $to) { - $file = preg_replace('#' . $from . '#', $to, $file, 1); - } - - return "pstorm://$file:$line"; - } -); - -``` diff --git a/vendor/filp/whoops/src/Whoops/Exception/Formatter.php b/vendor/filp/whoops/src/Whoops/Exception/Formatter.php deleted file mode 100644 index f95cfa1..0000000 --- a/vendor/filp/whoops/src/Whoops/Exception/Formatter.php +++ /dev/null @@ -1,48 +0,0 @@ - - */ - -namespace Whoops\Exception; - -class Formatter -{ - /** - * Returns all basic information about the exception in a simple array - * for further convertion to other languages - * @param Inspector $inspector - * @param bool $shouldAddTrace - * @return array - */ - public static function formatExceptionAsDataArray(Inspector $inspector, $shouldAddTrace) - { - $exception = $inspector->getException(); - $response = array( - 'type' => get_class($exception), - 'message' => $exception->getMessage(), - 'file' => $exception->getFile(), - 'line' => $exception->getLine() - ); - - if($shouldAddTrace) { - $frames = $inspector->getFrames(); - $frameData = array(); - - foreach($frames as $frame) { - /** @var Frame $frame */ - $frameData[] = array( - 'file' => $frame->getFile(), - 'line' => $frame->getLine(), - 'function' => $frame->getFunction(), - 'class' => $frame->getClass(), - 'args' => $frame->getArgs() - ); - } - - $response['trace'] = $frameData; - } - - return $response; - } -} diff --git a/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php b/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php deleted file mode 100644 index 0dda9be..0000000 --- a/vendor/filp/whoops/src/Whoops/Handler/PlainTextHandler.php +++ /dev/null @@ -1,332 +0,0 @@ - -* Plaintext handler for command line and logs. -* @author Pierre-Yves Landuré -*/ - -namespace Whoops\Handler; -use Whoops\Handler\Handler; -use InvalidArgumentException; -use Whoops\Exception\Frame; -use Psr\Log\LoggerInterface; - -/** -* Handler outputing plaintext error messages. Can be used -* directly, or will be instantiated automagically by Whoops\Run -* if passed to Run::pushHandler -*/ -class PlainTextHandler extends Handler -{ - const VAR_DUMP_PREFIX = ' | '; - - /** - * @var Psr\Log\LoggerInterface - */ - protected $logger; - - /** - * @var bool - */ - private $addTraceToOutput = true; - - /** - * @var bool|integer - */ - private $addTraceFunctionArgsToOutput = false; - - /** - * @var integer - */ - private $traceFunctionArgsOutputLimit = 1024; - - /** - * @var bool - */ - private $onlyForCommandLine = false; - - /** - * @var bool - */ - private $outputOnlyIfCommandLine = true; - - /** - * @var bool - */ - private $loggerOnly = false; - - /** - * Constructor. - * @throws InvalidArgumentException If argument is not null or a LoggerInterface - * @param Psr\Log\LoggerInterface|null $logger - */ - public function __construct($logger = null) - { - $this->setLogger($logger); - } - - /** - * Set the output logger interface. - * @throws InvalidArgumentException If argument is not null or a LoggerInterface - * @param Psr\Log\LoggerInterface|null $logger - */ - public function setLogger($logger = null) - { - if(! (is_null($logger) - || $logger InstanceOf LoggerInterface)) { - throw new InvalidArgumentException( - 'Argument to ' . __METHOD__ . - " must be a valid Logger Interface (aka. Monolog), " . - get_class($logger) . ' given.' - ); - } - - $this->logger = $logger; - } - - /** - * @return Psr\Log\LoggerInterface|null - */ - public function getLogger() - { - return $this->logger; - } - - /** - * Add error trace to output. - * @param bool|null $addTraceToOutput - * @return bool|$this - */ - public function addTraceToOutput($addTraceToOutput = null) - { - if(func_num_args() == 0) { - return $this->addTraceToOutput; - } - - $this->addTraceToOutput = (bool) $addTraceToOutput; - return $this; - } - - /** - * Add error trace function arguments to output. - * Set to True for all frame args, or integer for the n first frame args. - * @param bool|integer|null $addTraceFunctionArgsToOutput - * @return null|bool|integer - */ - public function addTraceFunctionArgsToOutput($addTraceFunctionArgsToOutput = null) - { - if(func_num_args() == 0) { - return $this->addTraceFunctionArgsToOutput; - } - - if(! is_integer($addTraceFunctionArgsToOutput)) { - $this->addTraceFunctionArgsToOutput = (bool) $addTraceFunctionArgsToOutput; - } - else { - $this->addTraceFunctionArgsToOutput = $addTraceFunctionArgsToOutput; - } - } - - /** - * Set the size limit in bytes of frame arguments var_dump output. - * If the limit is reached, the var_dump output is discarded. - * Prevent memory limit errors. - * @var integer - */ - public function setTraceFunctionArgsOutputLimit($traceFunctionArgsOutputLimit) - { - $this->traceFunctionArgsOutputLimit = (integer) $traceFunctionArgsOutputLimit; - } - - /** - * Get the size limit in bytes of frame arguments var_dump output. - * If the limit is reached, the var_dump output is discarded. - * Prevent memory limit errors. - * @return integer - */ - public function getTraceFunctionArgsOutputLimit() - { - return $this->traceFunctionArgsOutputLimit; - } - - /** - * Restrict error handling to command line calls. - * @param bool|null $onlyForCommandLine - * @return null|bool - */ - public function onlyForCommandLine($onlyForCommandLine = null) - { - if(func_num_args() == 0) { - return $this->onlyForCommandLine; - } - $this->onlyForCommandLine = (bool) $onlyForCommandLine; - } - - /** - * Output the error message only if using command line. - * else, output to logger if available. - * Allow to safely add this handler to web pages. - * @param bool|null $outputOnlyIfCommandLine - * @return null|bool - */ - public function outputOnlyIfCommandLine($outputOnlyIfCommandLine = null) - { - if(func_num_args() == 0) { - return $this->outputOnlyIfCommandLine; - } - $this->outputOnlyIfCommandLine = (bool) $outputOnlyIfCommandLine; - } - - /** - * Only output to logger. - * @param bool|null $loggerOnly - * @return null|bool - */ - public function loggerOnly($loggerOnly = null) - { - if(func_num_args() == 0) { - return $this->loggerOnly; - } - - $this->loggerOnly = (bool) $loggerOnly; - } - - /** - * Check, if possible, that this execution was triggered by a command line. - * @return bool - */ - private function isCommandLine() - { - return PHP_SAPI == 'cli'; - } - - /** - * Test if handler can process the exception.. - * @return bool - */ - private function canProcess() - { - return $this->isCommandLine() || !$this->onlyForCommandLine(); - } - - /** - * Test if handler can output to stdout. - * @return bool - */ - private function canOutput() - { - return ($this->isCommandLine() || ! $this->outputOnlyIfCommandLine()) - && ! $this->loggerOnly(); - } - - /** - * Get the frame args var_dump. - * @param \Whoops\Exception\Frame $frame [description] - * @param integer $line [description] - * @return string - */ - private function getFrameArgsOutput(Frame $frame, $line) - { - if($this->addTraceFunctionArgsToOutput() === false - || $this->addTraceFunctionArgsToOutput() < $line) { - return ''; - } - - // Dump the arguments: - ob_start(); - var_dump($frame->getArgs()); - if(ob_get_length() > $this->getTraceFunctionArgsOutputLimit()) { - // The argument var_dump is to big. - // Discarded to limit memory usage. - ob_clean(); - return sprintf( - "\n%sArguments dump length greater than %d Bytes. Discarded.", - self::VAR_DUMP_PREFIX, - $this->getTraceFunctionArgsOutputLimit() - ); - } - - return sprintf("\n%s", - preg_replace('/^/m', self::VAR_DUMP_PREFIX, ob_get_clean()) - ); - } - - /** - * Get the exception trace as plain text. - * @return string - */ - private function getTraceOutput() - { - if(! $this->addTraceToOutput()) { - return ''; - } - $inspector = $this->getInspector(); - $frames = $inspector->getFrames(); - - $response = "\nStack trace:"; - - $line = 1; - foreach($frames as $frame) { - /** @var Frame $frame */ - $class = $frame->getClass(); - - $template = "\n%3d. %s->%s() %s:%d%s"; - if(! $class) { - // Remove method arrow (->) from output. - $template = "\n%3d. %s%s() %s:%d%s"; - } - - $response .= sprintf( - $template, - $line, - $class, - $frame->getFunction(), - $frame->getFile(), - $frame->getLine(), - $this->getFrameArgsOutput($frame, $line) - ); - - $line++; - } - - return $response; - } - - /** - * @return int - */ - public function handle() - { - if(! $this->canProcess()) { - return Handler::DONE; - } - - $exception = $this->getException(); - - $response = sprintf("%s: %s in file %s on line %d%s\n", - get_class($exception), - $exception->getMessage(), - $exception->getFile(), - $exception->getLine(), - $this->getTraceOutput() - ); - - if($this->getLogger()) { - $this->getLogger()->addError($response); - } - - if(! $this->canOutput()) { - return Handler::DONE; - } - - if(class_exists('\Whoops\Util\Misc') - && \Whoops\Util\Misc::canSendHeaders()) { - header('Content-Type: text/plain'); - } - - echo $response; - - return Handler::QUIT; - } -} diff --git a/vendor/filp/whoops/src/Whoops/Handler/SoapResponseHandler.php b/vendor/filp/whoops/src/Whoops/Handler/SoapResponseHandler.php deleted file mode 100644 index e932077..0000000 --- a/vendor/filp/whoops/src/Whoops/Handler/SoapResponseHandler.php +++ /dev/null @@ -1,49 +0,0 @@ - - */ - -namespace Whoops\Handler; - -use Whoops\Handler\Handler; - -/** - * Catches an exception and converts it to an Soap XML - * response. - * - * @author Markus Staab - */ -class SoapResponseHandler extends Handler -{ - /** - * @return int - */ - public function handle() - { - $exception = $this->getException(); - - echo $this->toXml($exception); - - return Handler::QUIT; - } - - /** - * Converts a Exception into a SoapFault XML - */ - private function toXml(\Exception $exception) { - $xml = ''; - $xml .= ''; - $xml .= ''; - $xml .= ' '; - $xml .= ' '; - $xml .= ' '. htmlspecialchars($exception->getCode()) .''; - $xml .= ' '. htmlspecialchars($exception->getMessage()) .''; - $xml .= ' '. htmlspecialchars($exception->getTraceAsString()) .''; - $xml .= ' '; - $xml .= ' '; - $xml .= ''; - - return $xml; - } -} diff --git a/vendor/filp/whoops/src/Whoops/Resources/css/whoops.base.css b/vendor/filp/whoops/src/Whoops/Resources/css/whoops.base.css deleted file mode 100644 index 56a073d..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/css/whoops.base.css +++ /dev/null @@ -1,319 +0,0 @@ -.cf:before, .cf:after {content: " ";display: table;} .cf:after {clear: both;} .cf {*zoom: 1;} -body { - font: 14px helvetica, arial, sans-serif; - color: #2B2B2B; - background-color: #D4D4D4; - padding:0; - margin: 0; - max-height: 100%; -} - a { - text-decoration: none; - } - -.container{ - height: 100%; - width: 100%; - position: fixed; - margin: 0; - padding: 0; - left: 0; - top: 0; -} - -.branding { - position: absolute; - top: 10px; - right: 20px; - color: #777777; - font-size: 10px; - z-index: 100; -} - .branding a { - color: #CD3F3F; - } - -header { - padding: 30px 20px; - color: white; - background: #272727; - box-sizing: border-box; - border-left: 5px solid #CD3F3F; -} - .exc-title { - margin: 0; - color: #616161; - text-shadow: 0 1px 2px rgba(0, 0, 0, .1); - } - .exc-title-primary { color: #CD3F3F; } - .exc-message { - font-size: 32px; - margin: 5px 0; - word-wrap: break-word; - } - -.stack-container { - height: 100%; - position: relative; -} - -.details-container { - height: 100%; - overflow: auto; - float: right; - width: 70%; - background: #DADADA; -} - .details { - padding: 10px; - padding-left: 5px; - border-left: 5px solid rgba(0, 0, 0, .1); - } - -.frames-container { - height: 100%; - overflow: auto; - float: left; - width: 30%; - background: #FFF; -} - .frame { - padding: 14px; - background: #F3F3F3; - border-right: 1px solid rgba(0, 0, 0, .2); - cursor: pointer; - } - .frame.active { - background-color: #4288CE; - color: #F3F3F3; - box-shadow: inset -2px 0 0 rgba(255, 255, 255, .1); - text-shadow: 0 1px 0 rgba(0, 0, 0, .2); - } - - .frame:not(.active):hover { - background: #BEE9EA; - } - - .frame-class, .frame-function, .frame-index { - font-weight: bold; - } - - .frame-index { - font-size: 11px; - color: #BDBDBD; - } - - .frame-class { - color: #4288CE; - } - .active .frame-class { - color: #BEE9EA; - } - - .frame-file { - font-family: consolas, monospace; - word-wrap:break-word; - } - - .frame-file .editor-link { - color: #272727; - } - - .frame-line { - font-weight: bold; - color: #4288CE; - } - - .active .frame-line { color: #BEE9EA; } - .frame-line:before { - content: ":"; - } - - .frame-code { - padding: 10px; - padding-left: 5px; - background: #BDBDBD; - display: none; - border-left: 5px solid #4288CE; - } - - .frame-code.active { - display: block; - } - - .frame-code .frame-file { - background: #C6C6C6; - color: #525252; - text-shadow: 0 1px 0 #E7E7E7; - padding: 10px 10px 5px 10px; - - border-top-right-radius: 6px; - border-top-left-radius: 6px; - - border: 1px solid rgba(0, 0, 0, .1); - border-bottom: none; - box-shadow: inset 0 1px 0 #DADADA; - } - - .code-block { - padding: 10px; - margin: 0; - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - } - - .linenums { - margin: 0; - margin-left: 10px; - } - - .frame-comments { - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - border: 1px solid rgba(0, 0, 0, .2); - border-top: none; - - border-bottom-right-radius: 6px; - border-bottom-left-radius: 6px; - - padding: 5px; - font-size: 12px; - background: #404040; - } - - .frame-comments.empty { - padding: 8px 15px; - } - - .frame-comments.empty:before { - content: "No comments for this stack frame."; - font-style: italic; - color: #828282; - } - - .frame-comment { - padding: 10px; - color: #D2D2D2; - } - .frame-comment a { - color: #BEE9EA; - font-weight: bold; - text-decoration: none; - } - .frame-comment a:hover { - color: #4bb1b1; - } - - .frame-comment:not(:last-child) { - border-bottom: 1px dotted rgba(0, 0, 0, .3); - } - - .frame-comment-context { - font-size: 10px; - font-weight: bold; - color: #86D2B6; - } - -.data-table-container label { - font-size: 16px; - font-weight: bold; - color: #4288CE; - margin: 10px 0; - padding: 10px 0; - - display: block; - margin-bottom: 5px; - padding-bottom: 5px; - border-bottom: 1px dotted rgba(0, 0, 0, .2); -} - .data-table { - width: 100%; - margin: 10px 0; - } - - .data-table tbody { - font: 13px consolas, monospace; - } - - .data-table thead { - display: none; - } - - .data-table tr { - padding: 5px 0; - } - - .data-table td:first-child { - width: 20%; - min-width: 130px; - overflow: hidden; - font-weight: bold; - color: #463C54; - padding-right: 5px; - - } - - .data-table td:last-child { - width: 80%; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; - } - - .data-table .empty { - color: rgba(0, 0, 0, .3); - font-style: italic; - } - -.handler { - padding: 10px; - font: 14px monospace; -} - -.handler.active { - color: #BBBBBB; - background: #989898; - font-weight: bold; -} - -/* prettify code style -Uses the Doxy theme as a base */ -pre .str, code .str { color: #BCD42A; } /* string */ -pre .kwd, code .kwd { color: #4bb1b1; font-weight: bold; } /* keyword*/ -pre .com, code .com { color: #888; font-weight: bold; } /* comment */ -pre .typ, code .typ { color: #ef7c61; } /* type */ -pre .lit, code .lit { color: #BCD42A; } /* literal */ -pre .pun, code .pun { color: #fff; font-weight: bold; } /* punctuation */ -pre .pln, code .pln { color: #e9e4e5; } /* plaintext */ -pre .tag, code .tag { color: #4bb1b1; } /* html/xml tag */ -pre .htm, code .htm { color: #dda0dd; } /* html tag */ -pre .xsl, code .xsl { color: #d0a0d0; } /* xslt tag */ -pre .atn, code .atn { color: #ef7c61; font-weight: normal;} /* html/xml attribute name */ -pre .atv, code .atv { color: #bcd42a; } /* html/xml attribute value */ -pre .dec, code .dec { color: #606; } /* decimal */ -pre.prettyprint, code.prettyprint { - font-family: 'Source Code Pro', Monaco, Consolas, "Lucida Console", monospace;; - background: #333; - color: #e9e4e5; -} - pre.prettyprint { - white-space: pre-wrap; - } - - pre.prettyprint a, code.prettyprint a { - text-decoration:none; - } - - .linenums li { - color: #A5A5A5; - } - - .linenums li.current{ - background: rgba(255, 100, 100, .07); - padding-top: 4px; - padding-left: 1px; - } - .linenums li.current.active { - background: rgba(255, 100, 100, .17); - } diff --git a/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js b/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js deleted file mode 100644 index 974ac23..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/js/whoops.base.js +++ /dev/null @@ -1,44 +0,0 @@ -Zepto(function($) { - prettyPrint(); - - var $frameContainer = $('.frames-container'); - var $container = $('.details-container'); - var $activeLine = $frameContainer.find('.frame.active'); - var $activeFrame = $container.find('.frame-code.active'); - var headerHeight = $('header').height(); - - var highlightCurrentLine = function() { - // Highlight the active and neighboring lines for this frame: - var activeLineNumber = +($activeLine.find('.frame-line').text()); - var $lines = $activeFrame.find('.linenums li'); - var firstLine = +($lines.first().val()); - - $($lines[activeLineNumber - firstLine - 1]).addClass('current'); - $($lines[activeLineNumber - firstLine]).addClass('current active'); - $($lines[activeLineNumber - firstLine + 1]).addClass('current'); - } - - // Highlight the active for the first frame: - highlightCurrentLine(); - - $frameContainer.on('click', '.frame', function() { - var $this = $(this); - var id = /frame\-line\-([\d]*)/.exec($this.attr('id'))[1]; - var $codeFrame = $('#frame-code-' + id); - - if ($codeFrame) { - $activeLine.removeClass('active'); - $activeFrame.removeClass('active'); - - $this.addClass('active'); - $codeFrame.addClass('active'); - - $activeLine = $this; - $activeFrame = $codeFrame; - - highlightCurrentLine(); - - $container.scrollTop(headerHeight); - } - }); -}); diff --git a/vendor/filp/whoops/src/Whoops/Resources/js/zepto.min.js b/vendor/filp/whoops/src/Whoops/Resources/js/zepto.min.js deleted file mode 100644 index 0b2f97a..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/js/zepto.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* Zepto v1.1.3 - zepto event ajax form ie - zeptojs.com/license */ -var Zepto=function(){function L(t){return null==t?String(t):j[T.call(t)]||"object"}function Z(t){return"function"==L(t)}function $(t){return null!=t&&t==t.window}function _(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function D(t){return"object"==L(t)}function R(t){return D(t)&&!$(t)&&Object.getPrototypeOf(t)==Object.prototype}function M(t){return"number"==typeof t.length}function k(t){return s.call(t,function(t){return null!=t})}function z(t){return t.length>0?n.fn.concat.apply([],t):t}function F(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function q(t){return t in f?f[t]:f[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function H(t,e){return"number"!=typeof e||c[F(t)]?e:e+"px"}function I(t){var e,n;return u[t]||(e=a.createElement(t),a.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),u[t]=n),u[t]}function V(t){return"children"in t?o.call(t.children):n.map(t.childNodes,function(t){return 1==t.nodeType?t:void 0})}function U(n,i,r){for(e in i)r&&(R(i[e])||A(i[e]))?(R(i[e])&&!R(n[e])&&(n[e]={}),A(i[e])&&!A(n[e])&&(n[e]=[]),U(n[e],i[e],r)):i[e]!==t&&(n[e]=i[e])}function B(t,e){return null==e?n(t):n(t).filter(e)}function J(t,e,n,i){return Z(e)?e.call(t,n,i):e}function X(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function W(e,n){var i=e.className,r=i&&i.baseVal!==t;return n===t?r?i.baseVal:i:void(r?i.baseVal=n:e.className=n)}function Y(t){var e;try{return t?"true"==t||("false"==t?!1:"null"==t?null:/^0/.test(t)||isNaN(e=Number(t))?/^[\[\{]/.test(t)?n.parseJSON(t):t:e):t}catch(i){return t}}function G(t,e){e(t);for(var n in t.childNodes)G(t.childNodes[n],e)}var t,e,n,i,C,N,r=[],o=r.slice,s=r.filter,a=window.document,u={},f={},c={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},l=/^\s*<(\w+|!)[^>]*>/,h=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,p=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,d=/^(?:body|html)$/i,m=/([A-Z])/g,g=["val","css","html","text","data","width","height","offset"],v=["after","prepend","before","append"],y=a.createElement("table"),x=a.createElement("tr"),b={tr:a.createElement("tbody"),tbody:y,thead:y,tfoot:y,td:x,th:x,"*":a.createElement("div")},w=/complete|loaded|interactive/,E=/^[\w-]*$/,j={},T=j.toString,S={},O=a.createElement("div"),P={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},A=Array.isArray||function(t){return t instanceof Array};return S.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var i,r=t.parentNode,o=!r;return o&&(r=O).appendChild(t),i=~S.qsa(r,e).indexOf(t),o&&O.removeChild(t),i},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return s.call(t,function(e,n){return t.indexOf(e)==n})},S.fragment=function(e,i,r){var s,u,f;return h.test(e)&&(s=n(a.createElement(RegExp.$1))),s||(e.replace&&(e=e.replace(p,"<$1>")),i===t&&(i=l.test(e)&&RegExp.$1),i in b||(i="*"),f=b[i],f.innerHTML=""+e,s=n.each(o.call(f.childNodes),function(){f.removeChild(this)})),R(r)&&(u=n(s),n.each(r,function(t,e){g.indexOf(t)>-1?u[t](e):u.attr(t,e)})),s},S.Z=function(t,e){return t=t||[],t.__proto__=n.fn,t.selector=e||"",t},S.isZ=function(t){return t instanceof S.Z},S.init=function(e,i){var r;if(!e)return S.Z();if("string"==typeof e)if(e=e.trim(),"<"==e[0]&&l.test(e))r=S.fragment(e,RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=S.qsa(a,e)}else{if(Z(e))return n(a).ready(e);if(S.isZ(e))return e;if(A(e))r=k(e);else if(D(e))r=[e],e=null;else if(l.test(e))r=S.fragment(e.trim(),RegExp.$1,i),e=null;else{if(i!==t)return n(i).find(e);r=S.qsa(a,e)}}return S.Z(r,e)},n=function(t,e){return S.init(t,e)},n.extend=function(t){var e,n=o.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){U(t,n,e)}),t},S.qsa=function(t,e){var n,i="#"==e[0],r=!i&&"."==e[0],s=i||r?e.slice(1):e,a=E.test(s);return _(t)&&a&&i?(n=t.getElementById(s))?[n]:[]:1!==t.nodeType&&9!==t.nodeType?[]:o.call(a&&!i?r?t.getElementsByClassName(s):t.getElementsByTagName(e):t.querySelectorAll(e))},n.contains=function(t,e){return t!==e&&t.contains(e)},n.type=L,n.isFunction=Z,n.isWindow=$,n.isArray=A,n.isPlainObject=R,n.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},n.inArray=function(t,e,n){return r.indexOf.call(e,t,n)},n.camelCase=C,n.trim=function(t){return null==t?"":String.prototype.trim.call(t)},n.uuid=0,n.support={},n.expr={},n.map=function(t,e){var n,r,o,i=[];if(M(t))for(r=0;r=0?e:e+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return r.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return Z(t)?this.not(this.not(t)):n(s.call(this,function(e){return S.matches(e,t)}))},add:function(t,e){return n(N(this.concat(n(t,e))))},is:function(t){return this.length>0&&S.matches(this[0],t)},not:function(e){var i=[];if(Z(e)&&e.call!==t)this.each(function(t){e.call(this,t)||i.push(this)});else{var r="string"==typeof e?this.filter(e):M(e)&&Z(e.item)?o.call(e):n(e);this.forEach(function(t){r.indexOf(t)<0&&i.push(t)})}return n(i)},has:function(t){return this.filter(function(){return D(t)?n.contains(this,t):n(this).find(t).size()})},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!D(t)?t:n(t)},last:function(){var t=this[this.length-1];return t&&!D(t)?t:n(t)},find:function(t){var e,i=this;return e="object"==typeof t?n(t).filter(function(){var t=this;return r.some.call(i,function(e){return n.contains(e,t)})}):1==this.length?n(S.qsa(this[0],t)):this.map(function(){return S.qsa(this,t)})},closest:function(t,e){var i=this[0],r=!1;for("object"==typeof t&&(r=n(t));i&&!(r?r.indexOf(i)>=0:S.matches(i,t));)i=i!==e&&!_(i)&&i.parentNode;return n(i)},parents:function(t){for(var e=[],i=this;i.length>0;)i=n.map(i,function(t){return(t=t.parentNode)&&!_(t)&&e.indexOf(t)<0?(e.push(t),t):void 0});return B(e,t)},parent:function(t){return B(N(this.pluck("parentNode")),t)},children:function(t){return B(this.map(function(){return V(this)}),t)},contents:function(){return this.map(function(){return o.call(this.childNodes)})},siblings:function(t){return B(this.map(function(t,e){return s.call(V(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return n.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=I(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var e=Z(t);if(this[0]&&!e)var i=n(t).get(0),r=i.parentNode||this.length>1;return this.each(function(o){n(this).wrapAll(e?t.call(this,o):r?i.cloneNode(!0):i)})},wrapAll:function(t){if(this[0]){n(this[0]).before(t=n(t));for(var e;(e=t.children()).length;)t=e.first();n(t).append(this)}return this},wrapInner:function(t){var e=Z(t);return this.each(function(i){var r=n(this),o=r.contents(),s=e?t.call(this,i):t;o.length?o.wrapAll(s):r.append(s)})},unwrap:function(){return this.parent().each(function(){n(this).replaceWith(n(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(e){return this.each(function(){var i=n(this);(e===t?"none"==i.css("display"):e)?i.show():i.hide()})},prev:function(t){return n(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return n(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0===arguments.length?this.length>0?this[0].innerHTML:null:this.each(function(e){var i=this.innerHTML;n(this).empty().append(J(this,t,e,i))})},text:function(e){return 0===arguments.length?this.length>0?this[0].textContent:null:this.each(function(){this.textContent=e===t?"":""+e})},attr:function(n,i){var r;return"string"==typeof n&&i===t?0==this.length||1!==this[0].nodeType?t:"value"==n&&"INPUT"==this[0].nodeName?this.val():!(r=this[0].getAttribute(n))&&n in this[0]?this[0][n]:r:this.each(function(t){if(1===this.nodeType)if(D(n))for(e in n)X(this,e,n[e]);else X(this,n,J(this,i,t,this.getAttribute(n)))})},removeAttr:function(t){return this.each(function(){1===this.nodeType&&X(this,t)})},prop:function(e,n){return e=P[e]||e,n===t?this[0]&&this[0][e]:this.each(function(t){this[e]=J(this,n,t,this[e])})},data:function(e,n){var i=this.attr("data-"+e.replace(m,"-$1").toLowerCase(),n);return null!==i?Y(i):t},val:function(t){return 0===arguments.length?this[0]&&(this[0].multiple?n(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value):this.each(function(e){this.value=J(this,t,e,this.value)})},offset:function(t){if(t)return this.each(function(e){var i=n(this),r=J(this,t,e,i.offset()),o=i.offsetParent().offset(),s={top:r.top-o.top,left:r.left-o.left};"static"==i.css("position")&&(s.position="relative"),i.css(s)});if(0==this.length)return null;var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(t,i){if(arguments.length<2){var r=this[0],o=getComputedStyle(r,"");if(!r)return;if("string"==typeof t)return r.style[C(t)]||o.getPropertyValue(t);if(A(t)){var s={};return n.each(A(t)?t:[t],function(t,e){s[e]=r.style[C(e)]||o.getPropertyValue(e)}),s}}var a="";if("string"==L(t))i||0===i?a=F(t)+":"+H(t,i):this.each(function(){this.style.removeProperty(F(t))});else for(e in t)t[e]||0===t[e]?a+=F(e)+":"+H(e,t[e])+";":this.each(function(){this.style.removeProperty(F(e))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(n(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return t?r.some.call(this,function(t){return this.test(W(t))},q(t)):!1},addClass:function(t){return t?this.each(function(e){i=[];var r=W(this),o=J(this,t,e,r);o.split(/\s+/g).forEach(function(t){n(this).hasClass(t)||i.push(t)},this),i.length&&W(this,r+(r?" ":"")+i.join(" "))}):this},removeClass:function(e){return this.each(function(n){return e===t?W(this,""):(i=W(this),J(this,e,n,i).split(/\s+/g).forEach(function(t){i=i.replace(q(t)," ")}),void W(this,i.trim()))})},toggleClass:function(e,i){return e?this.each(function(r){var o=n(this),s=J(this,e,r,W(this));s.split(/\s+/g).forEach(function(e){(i===t?!o.hasClass(e):i)?o.addClass(e):o.removeClass(e)})}):this},scrollTop:function(e){if(this.length){var n="scrollTop"in this[0];return e===t?n?this[0].scrollTop:this[0].pageYOffset:this.each(n?function(){this.scrollTop=e}:function(){this.scrollTo(this.scrollX,e)})}},scrollLeft:function(e){if(this.length){var n="scrollLeft"in this[0];return e===t?n?this[0].scrollLeft:this[0].pageXOffset:this.each(n?function(){this.scrollLeft=e}:function(){this.scrollTo(e,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),i=this.offset(),r=d.test(e[0].nodeName)?{top:0,left:0}:e.offset();return i.top-=parseFloat(n(t).css("margin-top"))||0,i.left-=parseFloat(n(t).css("margin-left"))||0,r.top+=parseFloat(n(e[0]).css("border-top-width"))||0,r.left+=parseFloat(n(e[0]).css("border-left-width"))||0,{top:i.top-r.top,left:i.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||a.body;t&&!d.test(t.nodeName)&&"static"==n(t).css("position");)t=t.offsetParent;return t})}},n.fn.detach=n.fn.remove,["width","height"].forEach(function(e){var i=e.replace(/./,function(t){return t[0].toUpperCase()});n.fn[e]=function(r){var o,s=this[0];return r===t?$(s)?s["inner"+i]:_(s)?s.documentElement["scroll"+i]:(o=this.offset())&&o[e]:this.each(function(t){s=n(this),s.css(e,J(this,r,t,s[e]()))})}}),v.forEach(function(t,e){var i=e%2;n.fn[t]=function(){var t,o,r=n.map(arguments,function(e){return t=L(e),"object"==t||"array"==t||null==e?e:S.fragment(e)}),s=this.length>1;return r.length<1?this:this.each(function(t,a){o=i?a:a.parentNode,a=0==e?a.nextSibling:1==e?a.firstChild:2==e?a:null,r.forEach(function(t){if(s)t=t.cloneNode(!0);else if(!o)return n(t).remove();G(o.insertBefore(t,a),function(t){null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src||window.eval.call(window,t.innerHTML)})})})},n.fn[i?t+"To":"insert"+(e?"Before":"After")]=function(e){return n(e)[t](this),this}}),S.Z.prototype=n.fn,S.uniq=N,S.deserializeValue=Y,n.zepto=S,n}();window.Zepto=Zepto,void 0===window.$&&(window.$=Zepto),function(t){function l(t){return t._zid||(t._zid=e++)}function h(t,e,n,i){if(e=p(e),e.ns)var r=d(e.ns);return(s[l(t)]||[]).filter(function(t){return!(!t||e.e&&t.e!=e.e||e.ns&&!r.test(t.ns)||n&&l(t.fn)!==l(n)||i&&t.sel!=i)})}function p(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function d(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function m(t,e){return t.del&&!u&&t.e in f||!!e}function g(t){return c[t]||u&&f[t]||t}function v(e,i,r,o,a,u,f){var h=l(e),d=s[h]||(s[h]=[]);i.split(/\s/).forEach(function(i){if("ready"==i)return t(document).ready(r);var s=p(i);s.fn=r,s.sel=a,s.e in c&&(r=function(e){var n=e.relatedTarget;return!n||n!==this&&!t.contains(this,n)?s.fn.apply(this,arguments):void 0}),s.del=u;var l=u||r;s.proxy=function(t){if(t=j(t),!t.isImmediatePropagationStopped()){t.data=o;var i=l.apply(e,t._args==n?[t]:[t].concat(t._args));return i===!1&&(t.preventDefault(),t.stopPropagation()),i}},s.i=d.length,d.push(s),"addEventListener"in e&&e.addEventListener(g(s.e),s.proxy,m(s,f))})}function y(t,e,n,i,r){var o=l(t);(e||"").split(/\s/).forEach(function(e){h(t,e,n,i).forEach(function(e){delete s[o][e.i],"removeEventListener"in t&&t.removeEventListener(g(e.e),e.proxy,m(e,r))})})}function j(e,i){return(i||!e.isDefaultPrevented)&&(i||(i=e),t.each(E,function(t,n){var r=i[t];e[t]=function(){return this[n]=x,r&&r.apply(i,arguments)},e[n]=b}),(i.defaultPrevented!==n?i.defaultPrevented:"returnValue"in i?i.returnValue===!1:i.getPreventDefault&&i.getPreventDefault())&&(e.isDefaultPrevented=x)),e}function T(t){var e,i={originalEvent:t};for(e in t)w.test(e)||t[e]===n||(i[e]=t[e]);return j(i,t)}var n,e=1,i=Array.prototype.slice,r=t.isFunction,o=function(t){return"string"==typeof t},s={},a={},u="onfocusin"in window,f={focus:"focusin",blur:"focusout"},c={mouseenter:"mouseover",mouseleave:"mouseout"};a.click=a.mousedown=a.mouseup=a.mousemove="MouseEvents",t.event={add:v,remove:y},t.proxy=function(e,n){if(r(e)){var i=function(){return e.apply(n,arguments)};return i._zid=l(e),i}if(o(n))return t.proxy(e[n],e);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,i){return this.on(t,e,n,i,1)};var x=function(){return!0},b=function(){return!1},w=/^([A-Z]|returnValue$|layer[XY]$)/,E={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,s,a,u,f){var c,l,h=this;return e&&!o(e)?(t.each(e,function(t,e){h.on(t,s,a,e,f)}),h):(o(s)||r(u)||u===!1||(u=a,a=s,s=n),(r(a)||a===!1)&&(u=a,a=n),u===!1&&(u=b),h.each(function(n,r){f&&(c=function(t){return y(r,t.type,u),u.apply(this,arguments)}),s&&(l=function(e){var n,o=t(e.target).closest(s,r).get(0);return o&&o!==r?(n=t.extend(T(e),{currentTarget:o,liveFired:r}),(c||u).apply(o,[n].concat(i.call(arguments,1)))):void 0}),v(r,e,u,a,s,l||c)}))},t.fn.off=function(e,i,s){var a=this;return e&&!o(e)?(t.each(e,function(t,e){a.off(t,i,e)}),a):(o(i)||r(s)||s===!1||(s=i,i=n),s===!1&&(s=b),a.each(function(){y(this,e,s,i)}))},t.fn.trigger=function(e,n){return e=o(e)||t.isPlainObject(e)?t.Event(e):j(e),e._args=n,this.each(function(){"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,n){var i,r;return this.each(function(s,a){i=T(o(e)?t.Event(e):e),i._args=n,i.target=a,t.each(h(a,e.type||e),function(t,e){return r=e.proxy(i),i.isImmediatePropagationStopped()?!1:void 0})}),r},"focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return t?this.bind(e,t):this.trigger(e)}}),["focus","blur"].forEach(function(e){t.fn[e]=function(t){return t?this.bind(e,t):this.each(function(){try{this[e]()}catch(t){}}),this}}),t.Event=function(t,e){o(t)||(e=t,t=e.type);var n=document.createEvent(a[t]||"Events"),i=!0;if(e)for(var r in e)"bubbles"==r?i=!!e[r]:n[r]=e[r];return n.initEvent(t,i,!0),j(n)}}(Zepto),function(t){function l(e,n,i){var r=t.Event(n);return t(e).trigger(r,i),!r.isDefaultPrevented()}function h(t,e,i,r){return t.global?l(e||n,i,r):void 0}function p(e){e.global&&0===t.active++&&h(e,null,"ajaxStart")}function d(e){e.global&&!--t.active&&h(e,null,"ajaxStop")}function m(t,e){var n=e.context;return e.beforeSend.call(n,t,e)===!1||h(e,n,"ajaxBeforeSend",[t,e])===!1?!1:void h(e,n,"ajaxSend",[t,e])}function g(t,e,n,i){var r=n.context,o="success";n.success.call(r,t,o,e),i&&i.resolveWith(r,[t,o,e]),h(n,r,"ajaxSuccess",[e,n,t]),y(o,e,n)}function v(t,e,n,i,r){var o=i.context;i.error.call(o,n,e,t),r&&r.rejectWith(o,[n,e,t]),h(i,o,"ajaxError",[n,i,t||e]),y(e,n,i)}function y(t,e,n){var i=n.context;n.complete.call(i,e,t),h(n,i,"ajaxComplete",[e,n]),d(n)}function x(){}function b(t){return t&&(t=t.split(";",2)[0]),t&&(t==f?"html":t==u?"json":s.test(t)?"script":a.test(t)&&"xml")||"text"}function w(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function E(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()||(e.url=w(e.url,e.data),e.data=void 0)}function j(e,n,i,r){return t.isFunction(n)&&(r=i,i=n,n=void 0),t.isFunction(i)||(r=i,i=void 0),{url:e,data:n,success:i,dataType:r}}function S(e,n,i,r){var o,s=t.isArray(n),a=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),r&&(n=i?r:r+"["+(a||"object"==o||"array"==o?n:"")+"]"),!r&&s?e.add(u.name,u.value):"array"==o||!i&&"object"==o?S(e,u,i,n):e.add(n,u)})}var i,r,e=0,n=window.document,o=/)<[^<]*)*<\/script>/gi,s=/^(?:text|application)\/javascript/i,a=/^(?:text|application)\/xml/i,u="application/json",f="text/html",c=/^\s*$/;t.active=0,t.ajaxJSONP=function(i,r){if(!("type"in i))return t.ajax(i);var f,h,o=i.jsonpCallback,s=(t.isFunction(o)?o():o)||"jsonp"+ ++e,a=n.createElement("script"),u=window[s],c=function(e){t(a).triggerHandler("error",e||"abort")},l={abort:c};return r&&r.promise(l),t(a).on("load error",function(e,n){clearTimeout(h),t(a).off().remove(),"error"!=e.type&&f?g(f[0],l,i,r):v(null,n||"error",l,i,r),window[s]=u,f&&t.isFunction(u)&&u(f[0]),u=f=void 0}),m(l,i)===!1?(c("abort"),l):(window[s]=function(){f=arguments},a.src=i.url.replace(/\?(.+)=\?/,"?$1="+s),n.head.appendChild(a),i.timeout>0&&(h=setTimeout(function(){c("timeout")},i.timeout)),l)},t.ajaxSettings={type:"GET",beforeSend:x,success:x,error:x,complete:x,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:u,xml:"application/xml, text/xml",html:f,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0},t.ajax=function(e){var n=t.extend({},e||{}),o=t.Deferred&&t.Deferred();for(i in t.ajaxSettings)void 0===n[i]&&(n[i]=t.ajaxSettings[i]);p(n),n.crossDomain||(n.crossDomain=/^([\w-]+:)?\/\/([^\/]+)/.test(n.url)&&RegExp.$2!=window.location.host),n.url||(n.url=window.location.toString()),E(n),n.cache===!1&&(n.url=w(n.url,"_="+Date.now()));var s=n.dataType,a=/\?.+=\?/.test(n.url);if("jsonp"==s||a)return a||(n.url=w(n.url,n.jsonp?n.jsonp+"=?":n.jsonp===!1?"":"callback=?")),t.ajaxJSONP(n,o);var j,u=n.accepts[s],f={},l=function(t,e){f[t.toLowerCase()]=[t,e]},h=/^([\w-]+:)\/\//.test(n.url)?RegExp.$1:window.location.protocol,d=n.xhr(),y=d.setRequestHeader;if(o&&o.promise(d),n.crossDomain||l("X-Requested-With","XMLHttpRequest"),l("Accept",u||"*/*"),(u=n.mimeType||u)&&(u.indexOf(",")>-1&&(u=u.split(",",2)[0]),d.overrideMimeType&&d.overrideMimeType(u)),(n.contentType||n.contentType!==!1&&n.data&&"GET"!=n.type.toUpperCase())&&l("Content-Type",n.contentType||"application/x-www-form-urlencoded"),n.headers)for(r in n.headers)l(r,n.headers[r]);if(d.setRequestHeader=l,d.onreadystatechange=function(){if(4==d.readyState){d.onreadystatechange=x,clearTimeout(j);var e,i=!1;if(d.status>=200&&d.status<300||304==d.status||0==d.status&&"file:"==h){s=s||b(n.mimeType||d.getResponseHeader("content-type")),e=d.responseText;try{"script"==s?(1,eval)(e):"xml"==s?e=d.responseXML:"json"==s&&(e=c.test(e)?null:t.parseJSON(e))}catch(r){i=r}i?v(i,"parsererror",d,n,o):g(e,d,n,o)}else v(d.statusText||null,d.status?"error":"abort",d,n,o)}},m(d,n)===!1)return d.abort(),v(null,"abort",d,n,o),d;if(n.xhrFields)for(r in n.xhrFields)d[r]=n.xhrFields[r];var T="async"in n?n.async:!0;d.open(n.type,n.url,T,n.username,n.password);for(r in f)y.apply(d,f[r]);return n.timeout>0&&(j=setTimeout(function(){d.onreadystatechange=x,d.abort(),v(null,"timeout",d,n,o)},n.timeout)),d.send(n.data?n.data:null),d},t.get=function(){return t.ajax(j.apply(null,arguments))},t.post=function(){var e=j.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=j.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,i){if(!this.length)return this;var a,r=this,s=e.split(/\s/),u=j(e,n,i),f=u.success;return s.length>1&&(u.url=s[0],a=s[1]),u.success=function(e){r.html(a?t("
").html(e.replace(o,"")).find(a):e),f&&f.apply(r,arguments)},t.ajax(u),this};var T=encodeURIComponent;t.param=function(t,e){var n=[];return n.add=function(t,e){this.push(T(t)+"="+T(e))},S(n,t,e),n.join("&").replace(/%20/g,"+")}}(Zepto),function(t){t.fn.serializeArray=function(){var n,e=[];return t([].slice.call(this.get(0).elements)).each(function(){n=t(this);var i=n.attr("type");"fieldset"!=this.nodeName.toLowerCase()&&!this.disabled&&"submit"!=i&&"reset"!=i&&"button"!=i&&("radio"!=i&&"checkbox"!=i||this.checked)&&e.push({name:n.attr("name"),value:n.val()})}),e},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(e)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(Zepto),function(t){"__proto__"in{}||t.extend(t.zepto,{Z:function(e,n){return e=e||[],t.extend(e,t.fn),e.selector=n||"",e.__Z=!0,e},isZ:function(e){return"array"===t.type(e)&&"__Z"in e}});try{getComputedStyle(void 0)}catch(e){var n=getComputedStyle;window.getComputedStyle=function(t){try{return n(t)}catch(e){return null}}}}(Zepto); diff --git a/vendor/filp/whoops/src/Whoops/Resources/views/env_details.html.php b/vendor/filp/whoops/src/Whoops/Resources/views/env_details.html.php deleted file mode 100644 index 4f4993d..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/views/env_details.html.php +++ /dev/null @@ -1,39 +0,0 @@ - -
-
- $data): ?> -
- - - - - - - - - - $value): ?> - - - - - -
KeyValue
escape($k) ?>escape(print_r($value, true)) ?>
- - empty - -
- -
- - -
- - $handler): ?> -
- . escape(get_class($handler)) ?> -
- -
- -
diff --git a/vendor/filp/whoops/src/Whoops/Resources/views/frame_code.html.php b/vendor/filp/whoops/src/Whoops/Resources/views/frame_code.html.php deleted file mode 100644 index 4c840b9..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/views/frame_code.html.php +++ /dev/null @@ -1,52 +0,0 @@ - -
- $frame): ?> - getLine(); ?> -
-
- getFile(); ?> - getEditorHref($filePath, (int) $line)): ?> - Open: - - escape($filePath ?: '<#unknown>') ?> - - - escape($filePath ?: '<#unknown>') ?> - -
- getFileLines($line - 8, 10); - - // getFileLines can return null if there is no source code - if ($range): - $range = array_map(function($line){ return empty($line) ? ' ' : $line;}, $range); - $start = key($range) + 1; - $code = join("\n", $range); - ?> -
escape($code) ?>
- - - - getComments(); - ?> -
- $comment): ?> - -
- escape($context) ?> - escapeButPreserveUris($comment) ?> -
- -
- -
- -
diff --git a/vendor/filp/whoops/src/Whoops/Resources/views/frame_list.html.php b/vendor/filp/whoops/src/Whoops/Resources/views/frame_list.html.php deleted file mode 100644 index ad1de59..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/views/frame_list.html.php +++ /dev/null @@ -1,17 +0,0 @@ - - $frame): ?> -
-
- . - escape($frame->getClass() ?: '') ?> - escape($frame->getFunction() ?: '') ?> -
- - - getFile(true) ?: '<#unknown>') ?>getLine() ?> - -
- diff --git a/vendor/filp/whoops/src/Whoops/Resources/views/header.html.php b/vendor/filp/whoops/src/Whoops/Resources/views/header.html.php deleted file mode 100644 index 2731ad8..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/views/header.html.php +++ /dev/null @@ -1,14 +0,0 @@ -
-

- $nameSection): ?> - - escape($nameSection) ?> - - escape($nameSection) . ' \\' ?> - - -

-

- escape($message) ?> -

-
diff --git a/vendor/filp/whoops/src/Whoops/Resources/views/layout.html.php b/vendor/filp/whoops/src/Whoops/Resources/views/layout.html.php deleted file mode 100644 index c2a4aeb..0000000 --- a/vendor/filp/whoops/src/Whoops/Resources/views/layout.html.php +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - <?php echo $tpl->escape($page_title) ?> - - - - - -
- -
-
- render($frame_list) ?> -
-
-
- render($header) ?> -
- render($frame_code) ?> - render($env_details) ?> -
-
-
- - - - - - diff --git a/vendor/filp/whoops/src/Whoops/Util/Misc.php b/vendor/filp/whoops/src/Whoops/Util/Misc.php deleted file mode 100644 index 52b8f10..0000000 --- a/vendor/filp/whoops/src/Whoops/Util/Misc.php +++ /dev/null @@ -1,25 +0,0 @@ - - */ - -namespace Whoops\Util; - -class Misc -{ - /** - * Can we at this point in time send HTTP headers? - * - * Currently this checks if we are even serving an HTTP request, - * as opposed to running from a command line. - * - * If we are serving an HTTP request, we check if it's not too late. - * - * @return bool - */ - public static function canSendHeaders() - { - return isset($_SERVER["REQUEST_URI"]) && !headers_sent(); - } -} diff --git a/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php b/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php deleted file mode 100644 index de24af5..0000000 --- a/vendor/filp/whoops/src/Whoops/Util/TemplateHelper.php +++ /dev/null @@ -1,155 +0,0 @@ - - */ - -namespace Whoops\Util; - -/** - * Exposes useful tools for working with/in templates - */ -class TemplateHelper -{ - /** - * An array of variables to be passed to all templates - * @var array - */ - private $variables = array(); - - /** - * Escapes a string for output in an HTML document - * - * @param string $raw - * @return string - */ - public function escape($raw) - { - $flags = ENT_QUOTES; - - // HHVM has all constants defined, but only ENT_IGNORE - // works at the moment - if (defined("ENT_SUBSTITUTE") && !defined("HHVM_VERSION")) { - $flags |= ENT_SUBSTITUTE; - } else { - // This is for 5.3. - // The documentation warns of a potential security issue, - // but it seems it does not apply in our case, because - // we do not blacklist anything anywhere. - $flags |= ENT_IGNORE; - } - - return htmlspecialchars($raw, $flags, "UTF-8"); - } - - /** - * Escapes a string for output in an HTML document, but preserves - * URIs within it, and converts them to clickable anchor elements. - * - * @param string $raw - * @return string - */ - public function escapeButPreserveUris($raw) - { - $escaped = $this->escape($raw); - return preg_replace( - "@([A-z]+?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@", - "$1", $escaped - ); - } - - /** - * Convert a string to a slug version of itself - * - * @param string $original - * @return string - */ - public function slug($original) - { - $slug = str_replace(" ", "-", $original); - $slug = preg_replace('/[^\w\d\-\_]/i', '', $slug); - return strtolower($slug); - } - - /** - * Given a template path, render it within its own scope. This - * method also accepts an array of additional variables to be - * passed to the template. - * - * @param string $template - * @param array $additionalVariables - */ - public function render($template, array $additionalVariables = null) - { - $variables = $this->getVariables(); - - // Pass the helper to the template: - $variables["tpl"] = $this; - - if($additionalVariables !== null) { - $variables = array_replace($variables, $additionalVariables); - } - - call_user_func(function(){ - extract(func_get_arg(1)); - require func_get_arg(0); - }, $template, $variables); - } - - /** - * Sets the variables to be passed to all templates rendered - * by this template helper. - * - * @param array $variables - */ - public function setVariables(array $variables) - { - $this->variables = $variables; - } - - /** - * Sets a single template variable, by its name: - * - * @param string $variableName - * @param mixd $variableValue - */ - public function setVariable($variableName, $variableValue) - { - $this->variables[$variableName] = $variableValue; - } - - /** - * Gets a single template variable, by its name, or - * $defaultValue if the variable does not exist - * - * @param string $variableName - * @param mixed $defaultValue - * @return mixed - */ - public function getVariable($variableName, $defaultValue = null) - { - return isset($this->variables[$variableName]) ? - $this->variables[$variableName] : $defaultValue - ; - } - - /** - * Unsets a single template variable, by its name - * - * @param string $variableName - */ - public function delVariable($variableName) - { - unset($this->variables[$variableName]); - } - - /** - * Returns all variables for this helper - * - * @return array - */ - public function getVariables() - { - return $this->variables; - } -} diff --git a/vendor/filp/whoops/src/deprecated/Zend/ExceptionStrategy.php b/vendor/filp/whoops/src/deprecated/Zend/ExceptionStrategy.php deleted file mode 100644 index acfb355..0000000 --- a/vendor/filp/whoops/src/deprecated/Zend/ExceptionStrategy.php +++ /dev/null @@ -1,62 +0,0 @@ - - */ - -namespace Whoops\Provider\Zend; - -use Whoops\Run; -use Zend\Mvc\View\Http\ExceptionStrategy as BaseExceptionStrategy; -use Zend\Mvc\MvcEvent; -use Zend\Mvc\Application; -use Zend\Http\Response; - -/** - * @deprecated Use https://github.com/ghislainf/zf2-whoops - */ -class ExceptionStrategy extends BaseExceptionStrategy { - - protected $run; - - public function __construct(Run $run) { - $this->run = $run; - return $this; - } - - public function prepareExceptionViewModel(MvcEvent $event) { - // Do nothing if no error in the event - $error = $event->getError(); - if (empty($error)) { - return; - } - - // Do nothing if the result is a response object - $result = $event->getResult(); - if ($result instanceof Response) { - return; - } - - switch ($error) { - case Application::ERROR_CONTROLLER_NOT_FOUND: - case Application::ERROR_CONTROLLER_INVALID: - case Application::ERROR_ROUTER_NO_MATCH: - // Specifically not handling these - return; - - case Application::ERROR_EXCEPTION: - default: - $exception = $event->getParam('exception'); - if($exception) { - $response = $event->getResponse(); - if (!$response || $response->getStatusCode() === 200) { - header('HTTP/1.0 500 Internal Server Error', true, 500); - } - ob_clean(); - $this->run->handleException($event->getParam('exception')); - } - break; - } - } - -} diff --git a/vendor/filp/whoops/src/deprecated/Zend/Module.php b/vendor/filp/whoops/src/deprecated/Zend/Module.php deleted file mode 100644 index 61456e1..0000000 --- a/vendor/filp/whoops/src/deprecated/Zend/Module.php +++ /dev/null @@ -1,109 +0,0 @@ - - * - * The Whoops directory should be added as a module to ZF2 (/vendor/Whoops) - * - * Whoops must be added as the first module - * For example: - * 'modules' => array( - * 'Whoops', - * 'Application', - * ), - * - * This file should be moved next to Whoops/Run.php (/vendor/Whoops/Module.php) - * - */ - -namespace Whoops; - -use Whoops\Run; -use Whoops\Provider\Zend\ExceptionStrategy; -use Whoops\Provider\Zend\RouteNotFoundStrategy; -use Whoops\Handler\JsonResponseHandler; -use Whoops\Handler\PrettyPageHandler; -use Zend\EventManager\EventInterface; -use Zend\Console\Request as ConsoleRequest; - -/** - * @deprecated Use https://github.com/ghislainf/zf2-whoops - */ -class Module -{ - protected $run; - - public function onBootstrap(EventInterface $event) - { - $prettyPageHandler = new PrettyPageHandler(); - - // Set editor - $config = $event->getApplication()->getServiceManager()->get('Config'); - if (isset($config['view_manager']['editor'])) { - $prettyPageHandler->setEditor($config['view_manager']['editor']); - } - - - $this->run = new Run(); - $this->run->register(); - $this->run->pushHandler($prettyPageHandler); - - $this->attachListeners($event); - } - - public function getAutoloaderConfig() - { - return array( - 'Zend\Loader\StandardAutoloader' => array( - 'namespaces' => array( - __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, - ), - ), - ); - } - - private function attachListeners(EventInterface $event) - { - $request = $event->getRequest(); - $application = $event->getApplication(); - $services = $application->getServiceManager(); - $events = $application->getEventManager(); - $config = $services->get('Config'); - - //Display exceptions based on configuration and console mode - if ($request instanceof ConsoleRequest || empty($config['view_manager']['display_exceptions'])) - return; - - $jsonHandler = new JsonResponseHandler(); - - if (!empty($config['view_manager']['json_exceptions']['show_trace'])) { - //Add trace to the JSON output - $jsonHandler->addTraceToOutput(true); - } - - if (!empty($config['view_manager']['json_exceptions']['ajax_only'])) { - //Only return JSON response for AJAX requests - $jsonHandler->onlyForAjaxRequests(true); - } - - if (!empty($config['view_manager']['json_exceptions']['display'])) { - //Turn on JSON handler - $this->run->pushHandler($jsonHandler); - } - - //Attach the Whoops ExceptionStrategy - $exceptionStrategy = new ExceptionStrategy($this->run); - $exceptionStrategy->attach($events); - - //Attach the Whoops RouteNotFoundStrategy - $routeNotFoundStrategy = new RouteNotFoundStrategy($this->run); - $routeNotFoundStrategy->attach($events); - - //Detach default ExceptionStrategy - $services->get('Zend\Mvc\View\Http\ExceptionStrategy')->detach($events); - - //Detach default RouteNotFoundStrategy - $services->get('Zend\Mvc\View\Http\RouteNotFoundStrategy')->detach($events); - } - -} diff --git a/vendor/filp/whoops/src/deprecated/Zend/RouteNotFoundStrategy.php b/vendor/filp/whoops/src/deprecated/Zend/RouteNotFoundStrategy.php deleted file mode 100644 index 1934c5b..0000000 --- a/vendor/filp/whoops/src/deprecated/Zend/RouteNotFoundStrategy.php +++ /dev/null @@ -1,66 +0,0 @@ - - */ - -namespace Whoops\Provider\Zend; - -use Whoops\Run; -use Zend\Mvc\View\Http\RouteNotFoundStrategy as BaseRouteNotFoundStrategy; -use Zend\Mvc\MvcEvent; -use Zend\Stdlib\ResponseInterface as Response; -use Zend\View\Model\ViewModel; - -/** - * @deprecated Use https://github.com/ghislainf/zf2-whoops - */ -class RouteNotFoundStrategy extends BaseRouteNotFoundStrategy { - - protected $run; - - public function __construct(Run $run) { - $this->run = $run; - } - - public function prepareNotFoundViewModel(MvcEvent $e) { - $vars = $e->getResult(); - if ($vars instanceof Response) { - // Already have a response as the result - return; - } - - $response = $e->getResponse(); - if ($response->getStatusCode() != 404) { - // Only handle 404 responses - return; - } - - if (!$vars instanceof ViewModel) { - $model = new ViewModel(); - if (is_string($vars)) { - $model->setVariable('message', $vars); - } else { - $model->setVariable('message', 'Page not found.'); - } - } else { - $model = $vars; - if ($model->getVariable('message') === null) { - $model->setVariable('message', 'Page not found.'); - } - } - // If displaying reasons, inject the reason - $this->injectNotFoundReason($model, $e); - - // If displaying exceptions, inject - $this->injectException($model, $e); - - // Inject controller if we're displaying either the reason or the exception - $this->injectController($model, $e); - - ob_clean(); - - throw new \Exception($model->getVariable('message') . ' ' . $model->getVariable('reason')); - } - -} diff --git a/vendor/filp/whoops/src/deprecated/Zend/module.config.example.php b/vendor/filp/whoops/src/deprecated/Zend/module.config.example.php deleted file mode 100644 index 1ba0a29..0000000 --- a/vendor/filp/whoops/src/deprecated/Zend/module.config.example.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * Example controller configuration - */ - -return array( - 'view_manager' => array( - 'editor' => 'sublime', - 'display_not_found_reason' => true, - 'display_exceptions' => true, - 'json_exceptions' => array( - 'display' => true, - 'ajax_only' => true, - 'show_trace' => true - ) - ), -); diff --git a/vendor/filp/whoops/tests/Whoops/Handler/PlainTextHandlerTest.php b/vendor/filp/whoops/tests/Whoops/Handler/PlainTextHandlerTest.php deleted file mode 100644 index c1c3db6..0000000 --- a/vendor/filp/whoops/tests/Whoops/Handler/PlainTextHandlerTest.php +++ /dev/null @@ -1,438 +0,0 @@ - - */ - -namespace Whoops\Handler; -use Whoops\TestCase; -use Whoops\Handler\PlainTextHandler; -use RuntimeException; -use StdClass; - -class PlainTextHandlerTest extends TestCase -{ - /** - * @throws InvalidArgumentException If argument is not null or a LoggerInterface - * @param Psr\Log\LoggerInterface|null $logger - * @return Whoops\Handler\PlainTextHandler - */ - private function getHandler($logger = null) - { - return new PlainTextHandler($logger); - } - - /** - * @return RuntimeException - */ - public function getException($message = 'test message') - { - return new RuntimeException($message); - } - - /** - * @param bool $withTrace - * @param bool $withTraceArgs - * @param bool $loggerOnly - * @param bool $onlyForCommandLine - * @param bool $outputOnlyIfCommandLine - * @return array - */ - private function getPlainTextFromHandler( - $withTrace = false, - $withTraceArgs = false, - $traceFunctionArgsOutputLimit = 1024, - $loggerOnly = false, - $onlyForCommandLine = false, - $outputOnlyIfCommandLine = true - ) - { - $handler = $this->getHandler(); - $handler->addTraceToOutput($withTrace); - $handler->addTraceFunctionArgsToOutput($withTraceArgs); - $handler->setTraceFunctionArgsOutputLimit($traceFunctionArgsOutputLimit); - $handler->loggerOnly($loggerOnly); - $handler->onlyForCommandLine($onlyForCommandLine); - $handler->outputOnlyIfCommandLine($outputOnlyIfCommandLine); - - $run = $this->getRunInstance(); - $run->pushHandler($handler); - $run->register(); - - $exception = $this->getException(); - ob_start(); - $run->handleException($exception); - - return ob_get_clean(); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::__construct - * @covers Whoops\Handler\PlainTextHandler::setLogger - * @expectedException InvalidArgumentException - */ - public function testConstructor() - { - $logger = new StdClass(); // guaranteed to be invalid! - $this->getHandler($logger); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::setLogger - * @expectedException InvalidArgumentException - */ - public function testSetLogger() - { - $logger = new StdClass(); // guaranteed to be invalid! - $this->getHandler()->setLogger($logger); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::addTraceToOutput - */ - public function testAddTraceToOutput() - { - $handler = $this->getHandler(); - - $handler->addTraceToOutput(true); - $this->assertEquals(true, $handler->addTraceToOutput()); - - $handler->addTraceToOutput(false); - $this->assertEquals(false, $handler->addTraceToOutput()); - - $handler->addTraceToOutput(null); - $this->assertEquals(null, $handler->addTraceToOutput()); - - $handler->addTraceToOutput(1); - $this->assertEquals(true, $handler->addTraceToOutput()); - - $handler->addTraceToOutput(0); - $this->assertEquals(false, $handler->addTraceToOutput()); - - $handler->addTraceToOutput(''); - $this->assertEquals(false, $handler->addTraceToOutput()); - - $handler->addTraceToOutput('false'); - $this->assertEquals(true, $handler->addTraceToOutput()); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::addTraceFunctionArgsToOutput - */ - public function testAddTraceFunctionArgsToOutput() - { - $handler = $this->getHandler(); - - $handler->addTraceFunctionArgsToOutput(true); - $this->assertEquals(true, $handler->addTraceFunctionArgsToOutput()); - - $handler->addTraceFunctionArgsToOutput(false); - $this->assertEquals(false, $handler->addTraceFunctionArgsToOutput()); - - $handler->addTraceFunctionArgsToOutput(null); - $this->assertEquals(null, $handler->addTraceFunctionArgsToOutput()); - - $handler->addTraceFunctionArgsToOutput(1); - $this->assertEquals(1, $handler->addTraceFunctionArgsToOutput()); - - $handler->addTraceFunctionArgsToOutput(0); - $this->assertEquals(0, $handler->addTraceFunctionArgsToOutput()); - - $handler->addTraceFunctionArgsToOutput(''); - $this->assertEquals(false, $handler->addTraceFunctionArgsToOutput()); - - $handler->addTraceFunctionArgsToOutput('false'); - $this->assertEquals(true, $handler->addTraceFunctionArgsToOutput()); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::setTraceFunctionArgsOutputLimit - * @covers Whoops\Handler\PlainTextHandler::getTraceFunctionArgsOutputLimit - */ - public function testGetSetTraceFunctionArgsOutputLimit() - { - $addTraceFunctionArgsToOutput = 10240; - - $handler = $this->getHandler(); - - $handler->setTraceFunctionArgsOutputLimit($addTraceFunctionArgsToOutput); - $this->assertEquals($addTraceFunctionArgsToOutput, $handler->getTraceFunctionArgsOutputLimit()); - - $handler->setTraceFunctionArgsOutputLimit('1024kB'); - $this->assertEquals(1024, $handler->getTraceFunctionArgsOutputLimit()); - - $handler->setTraceFunctionArgsOutputLimit('true'); - $this->assertEquals(0, $handler->getTraceFunctionArgsOutputLimit()); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::onlyForCommandLine - */ - public function testOnlyForCommandLine() - { - $handler = $this->getHandler(); - - $handler->onlyForCommandLine(true); - $this->assertEquals(true, $handler->onlyForCommandLine()); - - $handler->onlyForCommandLine(false); - $this->assertEquals(false, $handler->onlyForCommandLine()); - - $handler->onlyForCommandLine(null); - $this->assertEquals(null, $handler->onlyForCommandLine()); - - $handler->onlyForCommandLine(1); - $this->assertEquals(true, $handler->onlyForCommandLine()); - - $handler->onlyForCommandLine(0); - $this->assertEquals(false, $handler->onlyForCommandLine()); - - $handler->onlyForCommandLine(''); - $this->assertEquals(false, $handler->onlyForCommandLine()); - - $handler->onlyForCommandLine('false'); - $this->assertEquals(true, $handler->onlyForCommandLine()); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::outputOnlyIfCommandLine - */ - public function testOutputOnlyIfCommandLine() - { - $handler = $this->getHandler(); - - $handler->outputOnlyIfCommandLine(true); - $this->assertEquals(true, $handler->outputOnlyIfCommandLine()); - - $handler->outputOnlyIfCommandLine(false); - $this->assertEquals(false, $handler->outputOnlyIfCommandLine()); - - $handler->outputOnlyIfCommandLine(null); - $this->assertEquals(null, $handler->outputOnlyIfCommandLine()); - - $handler->outputOnlyIfCommandLine(1); - $this->assertEquals(true, $handler->outputOnlyIfCommandLine()); - - $handler->outputOnlyIfCommandLine(0); - $this->assertEquals(false, $handler->outputOnlyIfCommandLine()); - - $handler->outputOnlyIfCommandLine(''); - $this->assertEquals(false, $handler->outputOnlyIfCommandLine()); - - $handler->outputOnlyIfCommandLine('false'); - $this->assertEquals(true, $handler->outputOnlyIfCommandLine()); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::loggerOnly - */ - public function testLoggerOnly() - { - $handler = $this->getHandler(); - - $handler->loggerOnly(true); - $this->assertEquals(true, $handler->loggerOnly()); - - $handler->loggerOnly(false); - $this->assertEquals(false, $handler->loggerOnly()); - - $handler->loggerOnly(null); - $this->assertEquals(null, $handler->loggerOnly()); - - $handler->loggerOnly(1); - $this->assertEquals(true, $handler->loggerOnly()); - - $handler->loggerOnly(0); - $this->assertEquals(false, $handler->loggerOnly()); - - $handler->loggerOnly(''); - $this->assertEquals(false, $handler->loggerOnly()); - - $handler->loggerOnly('false'); - $this->assertEquals(true, $handler->loggerOnly()); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::addTraceToOutput - * @covers Whoops\Handler\PlainTextHandler::handle - */ - public function testReturnsWithoutFramesOutput() - { - $text = $this->getPlainTextFromHandler( - $withTrace = false, - $withTraceArgs = true, - $traceFunctionArgsOutputLimit = 1024, - $loggerOnly = false, - $onlyForCommandLine = false, - $outputOnlyIfCommandLine = true - ); - - // Check that the response has the correct value: - // Check that the trace is NOT returned: - $this->assertEquals( - sprintf( - "%s: %s in file %s on line %d\n", - get_class($this->getException()), - 'test message', - __FILE__, - 30 - ), - $text - ); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::addTraceToOutput - * @covers Whoops\Handler\PlainTextHandler::getTraceOutput - * @covers Whoops\Handler\PlainTextHandler::canProcess - * @covers Whoops\Handler\PlainTextHandler::canOutput - * @covers Whoops\Handler\PlainTextHandler::handle - */ - public function testReturnsWithFramesOutput() - { - $text = $this->getPlainTextFromHandler( - $withTrace = true, - $withTraceArgs = false, - $traceFunctionArgsOutputLimit = 1024, - $loggerOnly = false, - $onlyForCommandLine = false, - $outputOnlyIfCommandLine = true - ); - - $lines = explode("\n", $text); - - - // Check that the response has the correct value: - $this->assertEquals('Stack trace:', $lines[1]); - - // Check that the trace is returned: - $this->assertEquals( - sprintf( - '%3d. %s->%s() %s:%d', - 2, - 'Whoops\Handler\PlainTextHandlerTest', - 'getException', - __FILE__, - 62 - ), - $lines[3] - ); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::addTraceToOutput - * @covers Whoops\Handler\PlainTextHandler::addTraceFunctionArgsToOutput - * @covers Whoops\Handler\PlainTextHandler::getTraceOutput - * @covers Whoops\Handler\PlainTextHandler::getFrameArgsOutput - * @covers Whoops\Handler\PlainTextHandler::canProcess - * @covers Whoops\Handler\PlainTextHandler::canOutput - * @covers Whoops\Handler\PlainTextHandler::handle - */ - public function testReturnsWithFramesAndArgsOutput() - { - $text = $this->getPlainTextFromHandler( - $withTrace = true, - $withTraceArgs = true, - $traceFunctionArgsOutputLimit = 2048, - $loggerOnly = false, - $onlyForCommandLine = false, - $outputOnlyIfCommandLine = true - ); - - $lines = explode("\n", $text); - - // Check that the trace is returned with all arguments: - $this->assertGreaterThan(60, count($lines)); - - // Check that the response has the correct value: - $this->assertEquals('Stack trace:', $lines[1]); - - // Check that the trace is returned: - $this->assertEquals( - sprintf( - '%3d. %s->%s() %s:%d', - 2, - 'Whoops\Handler\PlainTextHandlerTest', - 'getException', - __FILE__, - 62 - ), - $lines[8] - ); - // Check that the trace arguments are returned: - $this->assertEquals(sprintf( - '%s string(%d) "%s"', - PlainTextHandler::VAR_DUMP_PREFIX, - strlen('test message'), - 'test message' - ), $lines[5] - ); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::addTraceToOutput - * @covers Whoops\Handler\PlainTextHandler::addTraceFunctionArgsToOutput - * @covers Whoops\Handler\PlainTextHandler::getTraceOutput - * @covers Whoops\Handler\PlainTextHandler::getFrameArgsOutput - * @covers Whoops\Handler\PlainTextHandler::canProcess - * @covers Whoops\Handler\PlainTextHandler::canOutput - * @covers Whoops\Handler\PlainTextHandler::handle - */ - public function testReturnsWithFramesAndLimitedArgsOutput() - { - $text = $this->getPlainTextFromHandler( - $withTrace = true, - $withTraceArgs = 3, - $traceFunctionArgsOutputLimit = 1024, - $loggerOnly = false, - $onlyForCommandLine = false, - $outputOnlyIfCommandLine = true - ); - - $lines = explode("\n", $text); - - // Check that the response has the correct value: - $this->assertEquals('Stack trace:', $lines[1]); - - // Check that the trace is returned: - $this->assertEquals( - sprintf( - '%3d. %s->%s() %s:%d', - 2, - 'Whoops\Handler\PlainTextHandlerTest', - 'getException', - __FILE__, - 62 - ), - $lines[8] - ); - - // Check that the trace arguments are returned: - $this->assertEquals(sprintf( - '%s string(%d) "%s"', - PlainTextHandler::VAR_DUMP_PREFIX, - strlen('test message'), - 'test message' - ), $lines[5] - ); - } - - /** - * @covers Whoops\Handler\PlainTextHandler::loggerOnly - * @covers Whoops\Handler\PlainTextHandler::canProcess - * @covers Whoops\Handler\PlainTextHandler::handle - */ - public function testReturnsWithLoggerOnlyOutput() - { - $text = $this->getPlainTextFromHandler( - $withTrace = true, - $withTraceArgs = true, - $traceFunctionArgsOutputLimit = 1024, - $loggerOnly = true, - $onlyForCommandLine = false, - $outputOnlyIfCommandLine = true - ); - // Check that the response has the correct value: - $this->assertEquals('', $text); - } -} diff --git a/vendor/filp/whoops/tests/Whoops/Handler/SoapResponseHandlerTest.php b/vendor/filp/whoops/tests/Whoops/Handler/SoapResponseHandlerTest.php deleted file mode 100644 index 9264d7a..0000000 --- a/vendor/filp/whoops/tests/Whoops/Handler/SoapResponseHandlerTest.php +++ /dev/null @@ -1,74 +0,0 @@ -getRunInstance(); - $run->pushHandler($handler); - $run->register(); - - ob_start(); - $run->handleException($this->getException()); - $data = ob_get_clean(); - - $this->assertTrue($this->isValidXml($data)); - - return simplexml_load_string($data); - } - - /** - * @depends testSimpleValid - */ - public function testSimpleValidCode(\SimpleXMLElement $xml) - { - $this->checkField($xml, 'faultcode', (string) $this->getException()->getCode()); - } - - /** - * @depends testSimpleValid - */ - public function testSimpleValidMessage(\SimpleXMLElement $xml) - { - $this->checkField($xml, 'faultstring', $this->getException()->getMessage()); - } - - - /** - * Helper for testSimpleValid* - */ - private function checkField(\SimpleXMLElement $xml, $field, $value) - { - $list = $xml->xpath('/SOAP-ENV:Envelope/SOAP-ENV:Body/SOAP-ENV:Fault/'.$field); - $this->assertArrayHasKey(0, $list); - $this->assertSame($value, (string) $list[0]); - } - - private function getException() - { - return new RuntimeException('boom', 678); - } - - /** - * See if passed string is a valid XML document - * @param string $data - * @return bool - */ - private function isValidXml($data) - { - $prev = libxml_use_internal_errors(true); - $xml = simplexml_load_string($data); - libxml_use_internal_errors($prev); - return $xml !== false; - } -} diff --git a/vendor/filp/whoops/tests/Whoops/Util/TemplateHelperTest.php b/vendor/filp/whoops/tests/Whoops/Util/TemplateHelperTest.php deleted file mode 100644 index 5fd7ba9..0000000 --- a/vendor/filp/whoops/tests/Whoops/Util/TemplateHelperTest.php +++ /dev/null @@ -1,116 +0,0 @@ - - */ - -namespace Whoops\Util; -use Whoops\TestCase; -use Whoops\Util\TemplateHelper; - -class TemplateHelperTest extends TestCase -{ - /** - * @var Whoops\Util\TemplateHelper - */ - private $helper; - - /** - * {@inheritDoc} - */ - public function setUp() - { - $this->helper = new TemplateHelper; - } - - /** - * @covers Whoops\Util\TemplateHelper::escapeButPreserveUris - * @covers Whoops\Util\TemplateHelper::escape - */ - public function testEscape() - { - $original = "This is a Foo test string"; - - $this->assertEquals( - $this->helper->escape($original), - "This is a <a href=''>Foo</a> test string" - ); - } - - public function testEscapeBrokenUtf8() - { - // The following includes an illegal utf-8 sequence to test. - // Encoded in base64 to survive possible encoding changes of this file. - $original = base64_decode('VGhpcyBpcyBhbiBpbGxlZ2FsIHV0Zi04IHNlcXVlbmNlOiDD'); - - // Test that the escaped string is kinda similar in length, not empty - $this->assertLessThan( - 10, - abs(strlen($original) - strlen($this->helper->escape($original))) - ); - } - - /** - * @covers Whoops\Util\TemplateHelper::escapeButPreserveUris - */ - public function testEscapeButPreserveUris() - { - $original = "This is a http://google.com test string"; - - $this->assertEquals( - $this->helper->escapeButPreserveUris($original), - "This is a <a href=''>http://google.com</a> test string" - ); - } - - /** - * @covers Whoops\Util\TemplateHelper::slug - */ - public function testSlug() - { - $this->assertEquals("hello-world", $this->helper->slug("Hello, world!")); - $this->assertEquals("potato-class", $this->helper->slug("Potato class")); - } - - /** - * @covers Whoops\Util\TemplateHelper::render - */ - public function testRender() - { - $template = __DIR__ . "/../../fixtures/template.php"; - - ob_start(); - $this->helper->render($template, array("name" => "Bb")); - $output = ob_get_clean(); - - $this->assertEquals( - $output, - "hello-world\nMy name is B<o>b" - ); - } - - /** - * @covers Whoops\Util\TemplateHelper::setVariables - * @covers Whoops\Util\TemplateHelper::getVariables - * @covers Whoops\Util\TemplateHelper::setVariable - * @covers Whoops\Util\TemplateHelper::getVariable - * @covers Whoops\Util\TemplateHelper::delVariable - */ - public function testTemplateVariables() - { - $this->helper->setVariables(array( - "name" => "Whoops", - "type" => "library", - "desc" => "php errors for cool kids" - )); - - $this->helper->setVariable("name", "Whoops!"); - $this->assertEquals($this->helper->getVariable("name"), "Whoops!"); - $this->helper->delVariable("type"); - - $this->assertEquals($this->helper->getVariables(), array( - "name" => "Whoops!", - "desc" => "php errors for cool kids" - )); - } -} diff --git a/vendor/filp/whoops/tests/deprecated/Zend/ModuleTest.php b/vendor/filp/whoops/tests/deprecated/Zend/ModuleTest.php deleted file mode 100644 index b6df2dc..0000000 --- a/vendor/filp/whoops/tests/deprecated/Zend/ModuleTest.php +++ /dev/null @@ -1,10 +0,0 @@ -assertTrue(class_exists('\Whoops\Module')); - } -} diff --git a/vendor/filp/whoops/tests/fixtures/template.php b/vendor/filp/whoops/tests/fixtures/template.php deleted file mode 100644 index 5b99dbd..0000000 --- a/vendor/filp/whoops/tests/fixtures/template.php +++ /dev/null @@ -1,3 +0,0 @@ -slug("hello world!"); ?> - -My name is escape($name) ?> diff --git a/vendor/laravel/framework/src/Illuminate/Auth/Reminders/RemindableTrait.php b/vendor/laravel/framework/src/Illuminate/Auth/Reminders/RemindableTrait.php deleted file mode 100644 index 9acd859..0000000 --- a/vendor/laravel/framework/src/Illuminate/Auth/Reminders/RemindableTrait.php +++ /dev/null @@ -1,15 +0,0 @@ -email; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Auth/UserTrait.php b/vendor/laravel/framework/src/Illuminate/Auth/UserTrait.php deleted file mode 100644 index fad98ac..0000000 --- a/vendor/laravel/framework/src/Illuminate/Auth/UserTrait.php +++ /dev/null @@ -1,56 +0,0 @@ -getKey(); - } - - /** - * Get the password for the user. - * - * @return string - */ - public function getAuthPassword() - { - return $this->password; - } - - /** - * Get the token value for the "remember me" session. - * - * @return string - */ - public function getRememberToken() - { - return $this->remember_token; - } - - /** - * Set the token value for the "remember me" session. - * - * @param string $value - * @return void - */ - public function setRememberToken($value) - { - $this->remember_token = $value; - } - - /** - * Get the column name for the "remember me" token. - * - * @return string - */ - public function getRememberTokenName() - { - return 'remember_token'; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Console/ConfirmableTrait.php b/vendor/laravel/framework/src/Illuminate/Console/ConfirmableTrait.php deleted file mode 100644 index 0a5647f..0000000 --- a/vendor/laravel/framework/src/Illuminate/Console/ConfirmableTrait.php +++ /dev/null @@ -1,34 +0,0 @@ -getLaravel()->environment() == 'production') - { - if ($this->option('force')) return true; - - $this->comment('**************************************'); - $this->comment('* Application In Production! *'); - $this->comment('**************************************'); - $this->output->writeln(''); - - $confirmed = $this->confirm('Do you really wish to run this command?'); - - if ( ! $confirmed) - { - $this->comment('Command Cancelled!'); - - return false; - } - } - - return true; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/ScopeInterface.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/ScopeInterface.php deleted file mode 100644 index b0a93a9..0000000 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/ScopeInterface.php +++ /dev/null @@ -1,21 +0,0 @@ -getModel(); - - $builder->whereNull($model->getQualifiedDeletedAtColumn()); - - $this->extend($builder); - } - - /** - * Remove the scope from the given Eloquent query builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - public function remove(Builder $builder) - { - $column = $builder->getModel()->getQualifiedDeletedAtColumn(); - - $query = $builder->getQuery(); - - foreach ((array) $query->wheres as $key => $where) - { - // If the where clause is a soft delete date constraint, we will remove it from - // the query and reset the keys on the wheres. This allows this developer to - // include deleted model in a relationship result set that is lazy loaded. - if ($this->isSoftDeleteConstraint($where, $column)) - { - unset($query->wheres[$key]); - - $query->wheres = array_values($query->wheres); - } - } - } - - /** - * Extend the query builder with the needed functions. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - public function extend(Builder $builder) - { - foreach ($this->extensions as $extension) - { - $this->{"add{$extension}"}($builder); - } - - $builder->onDelete(function(Builder $builder) - { - $column = $builder->getModel()->getDeletedAtColumn(); - - return $builder->update(array( - $column => $builder->getModel()->freshTimestampString() - )); - }); - } - - /** - * Add the force delete extension to the builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - protected function addForceDelete(Builder $builder) - { - $builder->macro('forceDelete', function(Builder $builder) - { - return $builder->getQuery()->delete(); - }); - } - - /** - * Add the restore extension to the builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - protected function addRestore(Builder $builder) - { - $builder->macro('restore', function(Builder $builder) - { - $builder->withTrashed(); - - return $builder->update(array($builder->getModel()->getDeletedAtColumn() => null)); - }); - } - - /** - * Add the with-trashed extension to the builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - protected function addWithTrashed(Builder $builder) - { - $builder->macro('withTrashed', function(Builder $builder) - { - $this->remove($builder); - - return $builder; - }); - } - - /** - * Add the only-trashed extension to the builder. - * - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return void - */ - protected function addOnlyTrashed(Builder $builder) - { - $builder->macro('onlyTrashed', function(Builder $builder) - { - $this->remove($builder); - - $builder->getQuery()->whereNotNull($builder->getModel()->getQualifiedDeletedAtColumn()); - - return $builder; - }); - } - - /** - * Determine if the given where clause is a soft delete constraint. - * - * @param array $where - * @param string $column - * @return bool - */ - protected function isSoftDeleteConstraint(array $where, $column) - { - return $where['type'] == 'Null' && $where['column'] == $column; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletingTrait.php b/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletingTrait.php deleted file mode 100644 index 639a1c4..0000000 --- a/vendor/laravel/framework/src/Illuminate/Database/Eloquent/SoftDeletingTrait.php +++ /dev/null @@ -1,170 +0,0 @@ -forceDeleting = true; - - $this->delete(); - - $this->forceDeleting = false; - } - - /** - * Perform the actual delete query on this model instance. - * - * @return void - */ - protected function performDeleteOnModel() - { - if ($this->forceDeleting) - { - $this->withTrashed()->where($this->getKeyName(), $this->getKey())->forceDelete(); - } - else - { - return $this->runSoftDelete(); - } - } - - /** - * Perform the actual delete query on this model instance. - * - * @return void - */ - protected function runSoftDelete() - { - $query = $this->newQuery()->where($this->getKeyName(), $this->getKey()); - - $this->{$this->getDeletedAtColumn()} = $time = $this->freshTimestamp(); - - $query->update(array($this->getDeletedAtColumn() => $this->fromDateTime($time))); - } - - /** - * Restore a soft-deleted model instance. - * - * @return bool|null - */ - public function restore() - { - // If the restoring event does not return false, we will proceed with this - // restore operation. Otherwise, we bail out so the developer will stop - // the restore totally. We will clear the deleted timestamp and save. - if ($this->fireModelEvent('restoring') === false) - { - return false; - } - - $this->{$this->getDeletedAtColumn()} = null; - - // Once we have saved the model, we will fire the "restored" event so this - // developer will do anything they need to after a restore operation is - // totally finished. Then we will return the result of the save call. - $result = $this->save(); - - $this->fireModelEvent('restored', false); - - return $result; - } - - /** - * Determine if the model instance has been soft-deleted. - * - * @return bool - */ - public function trashed() - { - return ! is_null($this->{$this->getDeletedAtColumn()}); - } - - /** - * Get a new query builder that includes soft deletes. - * - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public static function withTrashed() - { - return with(new static)->newQueryWithoutScope(new SoftDeletingScope); - } - - /** - * Get a new query builder that only includes soft deletes. - * - * @return \Illuminate\Database\Eloquent\Builder|static - */ - public static function onlyTrashed() - { - $instance = new static; - - $column = $instance->getQualifiedDeletedAtColumn(); - - return $instance->newQueryWithoutScope(new SoftDeletingScope)->whereNotNull($column); - } - - /** - * Register a restoring model event with the dispatcher. - * - * @param \Closure|string $callback - * @return void - */ - public static function restoring($callback) - { - static::registerModelEvent('restoring', $callback); - } - - /** - * Register a restored model event with the dispatcher. - * - * @param \Closure|string $callback - * @return void - */ - public static function restored($callback) - { - static::registerModelEvent('restored', $callback); - } - - /** - * Get the name of the "deleted at" column. - * - * @return string - */ - public function getDeletedAtColumn() - { - return 'deleted_at'; - } - - /** - * Get the fully qualified "deleted at" column. - * - * @return string - */ - public function getQualifiedDeletedAtColumn() - { - return $this->getTable().'.'.$this->getDeletedAtColumn(); - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Exception/resources/css/whoops.base.css b/vendor/laravel/framework/src/Illuminate/Exception/resources/css/whoops.base.css deleted file mode 100755 index 3b1818e..0000000 --- a/vendor/laravel/framework/src/Illuminate/Exception/resources/css/whoops.base.css +++ /dev/null @@ -1,310 +0,0 @@ -.cf:before, .cf:after {content: " ";display: table;} .cf:after {clear: both;} .cf {*zoom: 1;} -body { - font: 14px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; - color: #2B2B2B; - background-color: #e7e7e7; - padding:0; - margin: 0; - max-height: 100%; -} - a { - text-decoration: none; - color: #FE8A59; - } - -.container{ - height: 100%; - width: 100%; - position: fixed; - margin: 0; - padding: 0; - left: 0; - top: 0; -} - -.branding { - position: absolute; - top: 10px; - right: 20px; - color: #777777; - font-size: 10px; - z-index: 100; -} - .branding a { - color: #CD3F3F; - } - -header { - padding: 20px 20px; - color: #555; - background: #ddd; - box-sizing: border-box; - border-left: 5px solid #ED3D1A; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQMAAACWCAYAAADaDe2PAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNTk1RDY3OTlBRkQxMUUyOUM0M0EzNzM1OTdBRTY0NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNTk1RDY3QTlBRkQxMUUyOUM0M0EzNzM1OTdBRTY0NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE1OTVENjc3OUFGRDExRTI5QzQzQTM3MzU5N0FFNjQ3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE1OTVENjc4OUFGRDExRTI5QzQzQTM3MzU5N0FFNjQ3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GLAjkgAAEaxJREFUeNrsXet22zYTXFHUXXZT93nyo0/eH3mfpI5lybpQrPAd7GeEEYGFRBEXzpyjY7eRbYrEDmYHi8WormuS4O+vX+nBGOmvhf5+ZHxvfi2M/+b3K5wvr+ry2l1eBwKAiPDPt2/RX2PZY3C3BXTz68j4WR8U+vPMLq/N5bXFEASAx5BB28x9LbjN7+nG4L4Ha60OTnjEAOBJBpc0YHz5Mr4S4M0gDxHct+D58vpxedV4zAAgIIMLCYz0TDpPJMh9iG55eb3jMQOALM9WRLDIjAgYK3qsLwIAWc2ek0ivrdavc+Nr1fhvRWRTy+950ukCAAAOMhgFDvDm6xoB2KDI4cXy7xOdAn3gcQOAnQxUMI0fHODnK+/rCicd6HPLe1QqtCeYiQBgJYODQ2YzjkZAXZvFQwaaMglnFpWjvBGYiQBgQeExYyrSUIU8O/0zRz0rnyn8jKvUzcbxnuWdCggA8iaDf759q0hWvhv70uNOE1QbeAkVAIAWZUAkK90dO/LyGOBSBzP9AgCghQyOjlnVlNoxqwP1GVyrBmvKs6YCAO4nA72jKhd1oEzC2vEZlnj0AHBdGSgoU1CysWcV+cxakXvVAJWJANBGBh7qQP3MIvLPpczEs+M9T3j8AHBdGbA6qDLwDlSa4DITVWUizEQAuEYGF3VQ61lV8nOxewfKSHSZorGnPAAQTBmwOpAUEc0T+HwudVAmkPIAQBgy0EVIkk09Kcjso0DpwEwEgBZlQMJUgb2D2KFWFmxmIioTAaCNDC7q4KTThRzUwZncS41TgpkIgAxaIe0unII6UErHVUOBykQAZNCiDqQlyhOSbYEODRe5oTIRABk48m0JUsi5lSnq2p25ImxzBkAGV3EQqoMykZx7I3gPzEQAZHAlVcjNOziRe6VklkjaAwC9KgNWB5INTKl4B66lRlYHMBMBkEFDHdQk7yycQlWiZKkRlYkAyKAFigykJcopVPO5WqQpoDIRABlcUQdnklclrhL57G+Of0dlIgAysMymEnUwS2RGlVRZojIRABlcQUWyEmWFVIp3JHUUKwwTAGTwO6TLjMo7SKF45yT4TDATAZDBjdKakUq+/U7u7k5rQmViyhhpUp/qV4Fbcn3W88VWmEezd3CK/B7UmhCeHYNJEcIrhkz0QT/Wr7Lx1awb4eXlHW7ZfWSgluSk5zMq7+BnAvfhQ6cCEwe5TUl2+hTw+KAvrgT8WDjrq/c86Z97w+28nQxYHUjIYC6U4TFADYoXQbrwg3Cac99BzwHvG/QuLIxnDzK48ed4A9PEgxBiB+9bWDju14LkRiogQ2G8moH/6Px+QbKqVJCBBTshGSxJdo5BDNiQ+4DZFcn3awD2nN6c6UPuBVlp9foBMrgNex3ghWAALBJh3lrP+ivH51H/DjNRPusrgp31NNPbnm1lKJAmnrTarUAGt93cHcmKclJSB1ty10nMtCo6ItatUPfwC/W/LHvWQV1pBcdBzpOXWjmaXiH5P2jAntC9ZcM7kp2ulJo62OiBYQObiYCdNB9NBGbQ86uyBLQiBLXC9XJFIZSaKF5BBrcxMC/LucDGWwqsuyf38ulEfyasVbejK+VUGzK/GfznG8YUE8KXFgJb0QANxS42FLGsdqmDQquIVG4yLzWOHOrgMOQ8U0AGW/Lbq1Ibs7s5098S9DYc9DO+dgDvSv+9HcjAX6ZJ1UFK3kFFMjMRlYl2vGsVNXEE5ocx0/c1PnbUvvfkyfAbBoGunF3puvuI0tr0sxUMTPRMdM/0b45Z/dQggz6xsQT8Mw2o/V1XZOCzvXmR0A2WHO3O6QJ6JtqDfeNQjNOAz/hnCwmNyb5nBWRwpzooKK2GIXuBJ4BtzjJJbpswnilcDUJF7SXJMxpIT4subz5vYJJAshwZm8x1YUXYGiuR5LVlLIachffUbm6vhkD2XQ9eaTlnKoeuMA6CNAg9E++bgUmnCiFn4XfLc36izL2hrslAIqlNdZDLrMZQS6wTxLxzwvhwKKyQ9/CnZQw/U8ZNbromg9rDO0hNHVTCzwZ14MabY9J4CphGqjH82kL8Rc7P9xE5rmJ96fJQasaMZKlxQjATJQH30zFRhAy6Ew3QUCwe9KB91ME8sUEsMRPRM9GNI9mXGxeBx8YHDcxQfJT77VNlmJp3sCeYiV0qrYMjXSgDX9/Rcm1TkIFsBpXWdafmHRDJ9legMlHuH9QWUg1ZBWgrSCLKzFB85Lq49HzGFL0Dact4HMDiRuUg19D+QUXt/kZBGZUsFw++iT51B6ktyUmWGieUlicSUo7vHf5BSJV1oHZ/Y5IL6Rc9PORc1YFrRjNzS1QmumFb32dJHvI+bqndGF9SBoZi0UPASEuUpwmqgx25G6PCTJTn52+OsfoUgRrM1lAsegoYKZYJDmDJrkZUJsrluE1tzSIYIzbDM2lDsejpAUvbiqdynHvz80nMxCfEugjvjvGyDkysJ8rUUOwrB/M5dGSV6AB2eSNlgson5OxLEfsHth2Ok1SJv68b+uGpDlKT1JKj3ZnoUJnohqs6cRxBwL1T+2rZPEXi75NdfdRBijPoTqAORlAHXuPl4Jg0Qi/bvlG7oajSmSnIoF1aSbc3p+gdSM/rWyT42UIGm62s/Smw0qrJ3b1pDDK4fuNyXllgdSBJh2AmyuBqhsLlyn1ipNNYNT6/kH3ZOClDsQgQLNINTDNKr1hHutSIykQ/Rblz3Mv1g2OEg1+dsvXX5fWnRxrwP0Px769fo7/RZYBg2QofHufXm8QGL58B4Ar2J/3eM+LdiY0OqtKiIrnd+r3gE6Inxt+8d2af6+cc9VgOMfP6bGBaUJqlvJKlRlQmdqu4bvUPCj3Dr/WM/6IVwFKTQVcSP/py5RCBdib5GQupHbpi5roSMxGViX6K670D/6AZ/H/p3L/r4L82JpAmXMHWI2dO6Ui2pj+yEMxWakb7jlgXjxvbHpZrh+EWhuyfdiT7fUngQH5L64MigxO5TzluqoPUTsWt9TU/C57BvKN8dwjpwpue0dsCeq3fNzby/j6D/2yM76P+vv7n2zcCGdjzamlRRqrqgA+kdaUCa5061Yh30UTyStePU/dJF7okKA58PpE7yecYkgyOA1AHChs9k7ny2DXJmq0OGSM9Zsc64EKs3/OR8Tx+QxwWmx0ZmDlgzurgSLKlRs51T4j534J/YrxCmN6VEfxHSsAMTJEMmFlL4cBIVR2oa54JZjJlJv5A8P/fJCwDBX9tBH/S0j8lMmB1IM3xFuTXSi0W8FKjq66AKxOHYiaO6VejL1TwnxuzfzbSPzUy+NApgORaCh0suwTvNS+nuj7nU8ZStFnZNw6c97PsPxLM22h2z/mogyX5VTHGBGUmfhFIZdX34GcGkn/cyPdD7zD8MIK/IiBKMthrWSaRiGOdf6copblFmuvQmLkmyFOiwT81Zv6Yrm9P8ga9IIOArL0neenxMuG8ekuyE6SUOniNPPhDO/2m3D+Qe8uw2nPwHaogbjIwc+qR8LpTNdqO9FmqbMNMv/aRXDebfWXg4G8afc3Athm1XJD0LzyCuMmAT2CSqoMVpVu1x0uNrmBiM/EcKPib+f4oQPD7Fvhs9fW2qS9uWPoT4R8vGfCDXHgM1lS9A26R5up4VGjSe+sx+DnfD7lvxTbzS/DmUC5zkp2mDTIIrA4kBlsO3sGOZFuYH1WZ2FzmCzUWzvTrEt+po9+pZv4vDtV1K9mADHpUBzOP648pr74lXfgieN+9lYkxLfNd3dX3gL/D/Q9WFtX1TMOu+IyeDHw2MPHMmSoZSFuk+VYmFvRp9oVe5mtW9/VZ4MM7Y239D5TZuAEVxNuy22d7Mz/sY6LPYEPyfQttPRMf0bfvVtSG5D88cOaXQqULL5b70WX/RJDBg9TBkeQtwZQU/DfRZ3DWqZHrWDlzo1YMTr8Z/E3ZH1NdP7dbfxb4ByeQQZxQAfLHQNQB1x24lhqXWkWEDH6iT8c/ldLeDz1G5haiHfqO0ajJgCWxtLBFBcpros+B1YFrV+Mo0DM7N3L+FGfQN7IbpxOtzt5BBvGBT2CSnsrMR7KlNlBHRs4fk7SuIsr7uxpPvNw4sqSb/JlBBhGmCj5nJ8Rez0/02a03ZFmva+bPtZnHUeAfDHb/QuxkkIM6KOh3p7+I4L42Zf9QavUl/sEg9y+kcBrwTvsBUsMstDpoBn/frbrbgr9p+g35WLeNJoTC4R9sQAZx4Ux+G5j6Vge8m8/s2xfDqbu8VJZ1E887xtQb2Verlvq+7UEG8XkHc48gW9BjNveMGsFfRhL8NX2W+ZqmH9COvR5XS8t71kNSUamQge/2Zu4UVHUQ/DG06nbNcj8w89+cLnDJdpvqY/8AZBCZd7DwCOLFDTnfqBH4JcV/CnShrxVkcBu4XLntOU9pIPUHKZHBify2N3Nb9bMjkMpIg5+lv2SD0Zra9y0AbmXl2u48iPqDMrHr3XmQwbVDV8w+/SFO5JUQnrnkR45ZyyS1JWH33a04CJSnShe+50y4qZEBr4lLr3uhZ9iC4nL6eebnSj/z5J4mJB2RiD4bvcA4vN0/mFjGVpG7f5AaGdTkd8YCH2gaC8zAl3bZkXZEIsJmm3vHlkoXbMe9Z+0flAle814H0TiBa+1qg4+0I9LQjmd7RJrmKldeNdI4kEFgBt9FNuOb1/aIxh7Sw1d4sKbaNToGuMqVTf+gBhmEB5cox1Dj79vK+1a8C8lgTOmeRxkLXNuduf7gFWQQjzpYBfi7FX0uc/bZXddnaZXVAZYa7/MPbNudZ3pC2oIMwsN3e3MXM39FYYt7eIONa0WEjVMcFHI7jmQ/nYn0v/H+D5BBYPZ2bTa5dQaOtaVXZaRILnCqcERc3zXhTMnenDeb+oMi8evf0/2FNrzv4U0/1O/6+w+Ks8R36zHw1ojnTvwDVxVrFve5zOAzbLVKWJOsoOhMvzr+qXX1kfZLVMBSYzdqzKVA5/R5BgbIIDB2+mHM6bNpxcgInop+Pb6rzuDzzoXPD/sWulGgrnLl5Nutlxk9MBXw7/o1angLuaHW6ZGkEKnPw1tzxjvZe2pwu7QfqY65ItMHVxuvXMGFSBKoQTxGPN8EFeQznSa40tCSZPtIoAyAh8xWM+GAVuoAS41yApjoezvznDST9Q9ABmnDpxCJjcQDblsrpvpeTu9UUrZzMUEGwEPVgaQQSWGdck77IAVQGiRQdvh7m700QAZAL+pAcnArP2/uADX0FMBceUJsgQyygU9pNu9bqAZGAKXhAfRhpu5ABkAI1CTviDQkM9EkgL7GOrdgP4IMgFDgohjJM81530IIAqg0CSTddg5kkBekhUicLvybEQGwCTjp6W9yWfueMmkmAzLIC7y+PRe8l4Nnn/DY7VsB1MY9PhA6HQGR411IBgrrxAZ1CAVADQWQrfEKMsgPlYc6UK76kuJeD+dzLec9EwAf+DuY9vMgg3zVgZo9JYVIfN5CFSEBsALo66yL2lAA2aUBIIPhqgNpIdJIpwuvERAA7weY9kwAJ02Ig+4bCTLIF1uSm2tsxO0DEACnAH2fdmUagej1ADLIGlyIJO0R2ZeZGCoFIPrc2LUnHEMHMhgYOPedCoP0UfsW+KzLec8pAOlZ3/QBAJDBYKEKkV6E72UzsQvZPKJftwT32UiH6wH2SANABsCv0tjVv8+cwe9pkVbQr8VAfROAmQZUePQgA+B3bMnev8/EwlNSswIIkQIoHEEAIANADp+lRgVXE5SQKQB/nuQ3BoEMgJDqQNrzoNSE0EwX2AScBSCAM30uBx4J3ZpABsBdObUyE5+F719oBbA3fIAywDWbaQCMQJAB0BE+dJBLa/znJN/01CUBwAgEGQA9QEn/P6l/o88FGIEgA6Bn8FLjMoJrgREIMgACg3sehDhRi43AQe4MBBkAscGngWpXf+9I2BgEMgCiBJuJ5QMJAEYgyABIRB2odukvHf9eGIEgAyBBqJlb1R6sO/g92BoMMgASx1aPA996AnNrMCoCQQZAJuDTleYCAsBKAMgAGAAhqBme9y+MdLBX+v8foADyxn8CDABulgqUemYwnwAAAABJRU5ErkJggg==); - background-repeat:no-repeat; - background-position:right; -} - .exc-title { - margin: 0; - color: #616161; - font-weight:normal; - } - .exc-title-primary { color: #ED591A; } - .exc-message { - font-size: 16px; - margin: 5px 0; - word-wrap: break-word; - } - -.stack-container { - height: 100%; - position: relative; -} - -.details-container { - height: 100%; - overflow: auto; - float: right; - width: 70%; - background: #fff; -} - .details { - padding: 10px 20px; - border-left: 5px solid rgba(0, 0, 0, .2); - } - -.frames-container { - height: 100%; - overflow: auto; - float: left; - width: 30%; - background: #FFF; -} - .frame { - padding: 14px; - background: #F3F3F3; - border-right: 1px solid rgba(0, 0, 0, .2); - cursor: pointer; - font-size:12px; - } - .frame.active { - background-color: #ED591A; - color: #F3F3F3; - - } - - .frame:not(.active):hover { - background: #F0E5DF; - } - - .frame-class, .frame-function, .frame-index { - font-weight: bold; - } - - .frame-index { - font-size: 11px; - color: #BDBDBD; - } - - .frame-class { - color: #ED591A; - } - .active .frame-class { - color: #5E2204; - } - - .frame-file { - font-family: 'Source Code Pro', Monaco, Consolas, "Lucida Console", monospace; - color:#999; - word-wrap:break-word; - } - .editor-link { - color: inherit; - } - .editor-link:hover strong { - color: #F0E5DF; - } - - .editor-link-callout { - padding: 2px 4px; - background: #872D00; - } - - .frame-line { - font-weight: bold; - color: #A33202; - } - - .active .frame-file{ color:#872D00; } - - .active .frame-line { color: #fff; } - .frame-line:before { - content: ":"; - } - - .frame-code { - padding: 20px; - background: #f0f0f0; - display: none; - border-left: 5px solid #EDA31A; - } - - .frame-code.active { - display: block; - } - - .frame-code .frame-file { - background: #ED591A; - color: #fff; - padding: 10px 10px 10px 10px; - font-size:11px; - font-weight:normal; - } - - .code-block { - padding: 10px; - margin: 0; - box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); - } - - .linenums { - margin: 0; - margin-left: 10px; - } - - .frame-comments { - border-top: none; - padding: 5px; - font-size: 12px; - background: #404040; - } - - .frame-comments.empty { - padding: 8px 15px; - } - - .frame-comments.empty:before { - content: "No comments for this stack frame."; - color: #828282; - } - - .frame-comment { - padding: 10px 5px; - color: #D2D2D2; - } - - .frame-comment:not(:last-child) { - border-bottom: 1px dotted rgba(0, 0, 0, .3); - } - - .frame-comment-context { - font-size: 10px; - font-weight: bold; - color: #86D2B6; - } - -.data-table-container label { - font-size: 16px; - font-weight: bold; - color: #ED591A; - margin: 10px 0; - padding: 10px 0; - - display: block; - margin-bottom: 5px; - padding-bottom: 5px; - border-bottom: 1px solid rgba(0, 0, 0, .08); -} - .data-table { - width: 100%; - margin: 10px 0; - font: 12px 'Source Code Pro', Monaco, Consolas, "Lucida Console", monospace; - } - - .data-table thead { - display: none; - } - - .data-table tr { - padding: 5px 0; - } - - .data-table td:first-child { - width: 20%; - min-width: 130px; - overflow: hidden; - color: #463C54; - padding-right: 5px; - - } - - .data-table td:last-child { - width: 80%; - color:#999; - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - -webkit-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; - } - - .data-table .empty { - color: rgba(0, 0, 0, .3); - font-style: italic; - } - -.handler { - padding: 10px; - font: 14px monospace; -} - -.handler.active { - color: #BBBBBB; - background: #989898; - font-weight: bold; -} - -/* prettify code style -Uses the Doxy theme as a base */ -pre .str, code .str { color: #E3B446; } /* string */ -pre .kwd, code .kwd { color: #DB613B; font-weight: bold; } /* keyword*/ -pre .com, code .com { color: #555; font-weight: bold; } /* comment */ -pre .typ, code .typ { color: #fff; } /* type */ -pre .lit, code .lit { color: #17CFB6; } /* literal */ -pre .pun, code .pun { color: #93a1a1; font-weight: bold; } /* punctuation */ -pre .pln, code .pln { color: #ccc; } /* plaintext */ -pre .tag, code .tag { color: #DB613B; } /* html/xml tag */ -pre .htm, code .htm { color: #dda0dd; } /* html tag */ -pre .xsl, code .xsl { color: #d0a0d0; } /* xslt tag */ -pre .atn, code .atn { color: #fff; font-weight: normal;} /* html/xml attribute name */ -pre .atv, code .atv { color: #E3B446; } /* html/xml attribute value */ -pre .dec, code .dec { color: #fff; } /* decimal */ -pre.prettyprint, code.prettyprint { - font-weight:normal; - font-family: 'Source Code Pro', Monaco, Consolas, "Lucida Console", monospace; - background: #272727; - color: #929292; - font-size:11px; - line-height:1.5em; -} - pre.prettyprint { - white-space: pre-wrap; - } - - pre.prettyprint a, code.prettyprint a { - text-decoration:none; - } - - .linenums li { - color: #A5A5A5; - } - - .linenums li.current{ - background: rgba(255, 255, 255, .05); - padding-top: 4px; - padding-left: 1px; - } - .linenums li.current.active { - background: rgba(255, 255, 255, .1); - } diff --git a/vendor/laravel/framework/src/Illuminate/Exception/resources/views/frame_code.html.php b/vendor/laravel/framework/src/Illuminate/Exception/resources/views/frame_code.html.php deleted file mode 100755 index 698c5f3..0000000 --- a/vendor/laravel/framework/src/Illuminate/Exception/resources/views/frame_code.html.php +++ /dev/null @@ -1,51 +0,0 @@ - -
- $frame): ?> - getLine(); ?> -
-
- getFile(); ?> - getEditorHref($filePath, (int) $line)): ?> - - open: escape($filePath ?: '<#unknown>') ?> - - - escape($filePath ?: '<#unknown>') ?> - -
- getFileLines($line - 8, 10); - - // getFileLines can return null if there is no source code - if ($range): - $range = array_map(function($line){ return empty($line) ? ' ' : $line;}, $range); - $start = key($range) + 1; - $code = join("\n", $range); - ?> -
escape($code) ?>
- - - - getComments(); - ?> -
- $comment): ?> - -
- escape($context) ?> - escapeButPreserveUris($comment) ?> -
- -
- -
- -
diff --git a/vendor/laravel/framework/src/Illuminate/Http/ResponseTrait.php b/vendor/laravel/framework/src/Illuminate/Http/ResponseTrait.php deleted file mode 100644 index b9ca057..0000000 --- a/vendor/laravel/framework/src/Illuminate/Http/ResponseTrait.php +++ /dev/null @@ -1,35 +0,0 @@ -headers->set($key, $value, $replace); - - return $this; - } - - /** - * Add a cookie to the response. - * - * @param \Symfony\Component\HttpFoundation\Cookie $cookie - * @return \Illuminate\Http\Response - */ - public function withCookie(Cookie $cookie) - { - $this->headers->setCookie($cookie); - - return $this; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php b/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php deleted file mode 100644 index 467d47f..0000000 --- a/vendor/laravel/framework/src/Illuminate/Mail/Transport/LogTransport.php +++ /dev/null @@ -1,68 +0,0 @@ -logger = $logger; - } - - /** - * {@inheritdoc} - */ - public function isStarted() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function start() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function stop() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $this->logger->debug((string) $message); - } - - /** - * {@inheritdoc} - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - // - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php b/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php deleted file mode 100644 index 58de4d0..0000000 --- a/vendor/laravel/framework/src/Illuminate/Mail/Transport/MailgunTransport.php +++ /dev/null @@ -1,166 +0,0 @@ -key = $key; - $this->domain = $domain; - $this->url = 'https://api.mailgun.net/v2/'.$this->domain.'/messages.mime'; - } - - /** - * {@inheritdoc} - */ - public function isStarted() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function start() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function stop() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $client = $this->getHttpClient(); - - $client->post($this->url, ['auth' => ['api', $this->key], - 'body' => [ - 'to' => $this->getTo($message), - 'message' => new PostFile('message', (string) $message), - ], - ]); - } - - /** - * {@inheritdoc} - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - // - } - - /** - * Get the "to" payload field for the API request. - * - * @param \Swift_Mime_Message $message - * @return array - */ - protected function getTo(Swift_Mime_Message $message) - { - $formatted = []; - - $contacts = array_merge( - (array) $message->getTo(), (array) $message->getCc(), (array) $message->getBcc() - ); - - foreach ($contacts as $address => $display) - { - $formatted[] = $display ? $display." <$address>" : $address; - } - - return implode(',', $formatted); - } - - /** - * Get a new HTTP client instance. - * - * @return \GuzzleHttp\Client - */ - protected function getHttpClient() - { - return new \GuzzleHttp\Client; - } - - /** - * Get the API key being used by the transport. - * - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * Set the API key being used by the transport. - * - * @param string $key - * @return void - */ - public function setKey($key) - { - return $this->key = $key; - } - - /** - * Get the domain being used by the transport. - * - * @return string - */ - public function getDomain() - { - return $this->domain; - } - - /** - * Set the domain being used by the transport. - * - * @param string $domain - * @return void - */ - public function setDomain($domain) - { - return $this->domain = $domain; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Mail/Transport/MandrillTransport.php b/vendor/laravel/framework/src/Illuminate/Mail/Transport/MandrillTransport.php deleted file mode 100644 index 5cb0dbf..0000000 --- a/vendor/laravel/framework/src/Illuminate/Mail/Transport/MandrillTransport.php +++ /dev/null @@ -1,106 +0,0 @@ -key = $key; - } - - /** - * {@inheritdoc} - */ - public function isStarted() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function start() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function stop() - { - return true; - } - - /** - * {@inheritdoc} - */ - public function send(Swift_Mime_Message $message, &$failedRecipients = null) - { - $client = $this->getHttpClient(); - - $client->post('https://mandrillapp.com/api/1.0/messages/send-raw.json', [ - 'body' => [ - 'key' => $this->key, - 'raw_message' => (string) $message, - 'async' => true, - ], - ]); - } - - /** - * {@inheritdoc} - */ - public function registerPlugin(Swift_Events_EventListener $plugin) - { - // - } - - /** - * Get a new HTTP client instance. - * - * @return \Guzzle\Http\Client - */ - protected function getHttpClient() - { - return new \GuzzleHttp\Client; - } - - /** - * Get the API key being used by the transport. - * - * @return string - */ - public function getKey() - { - return $this->key; - } - - /** - * Set the API key being used by the transport. - * - * @param string $key - * @return void - */ - public function setKey($key) - { - return $this->key = $key; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Pagination/Factory.php b/vendor/laravel/framework/src/Illuminate/Pagination/Factory.php deleted file mode 100755 index 4026495..0000000 --- a/vendor/laravel/framework/src/Illuminate/Pagination/Factory.php +++ /dev/null @@ -1,289 +0,0 @@ -view = $view; - $this->trans = $trans; - $this->request = $request; - $this->pageName = $pageName; - $this->setupPaginationEnvironment(); - } - - /** - * Setup the pagination environment. - * - * @return void - */ - protected function setupPaginationEnvironment() - { - $this->view->addNamespace('pagination', __DIR__.'/views'); - } - - /** - * Get a new paginator instance. - * - * @param array $items - * @param int $total - * @param int|null $perPage - * @return \Illuminate\Pagination\Paginator - */ - public function make(array $items, $total, $perPage = null) - { - $paginator = new Paginator($this, $items, $total, $perPage); - - return $paginator->setupPaginationContext(); - } - - /** - * Get the pagination view. - * - * @param \Illuminate\Pagination\Paginator $paginator - * @param string $view - * @return \Illuminate\View\View - */ - public function getPaginationView(Paginator $paginator, $view = null) - { - $data = array('environment' => $this, 'paginator' => $paginator); - - return $this->view->make($this->getViewName($view), $data); - } - - /** - * Get the number of the current page. - * - * @return int - */ - public function getCurrentPage() - { - $page = (int) $this->currentPage ?: $this->request->input($this->pageName, 1); - - if ($page < 1 || filter_var($page, FILTER_VALIDATE_INT) === false) - { - return 1; - } - - return $page; - } - - /** - * Set the number of the current page. - * - * @param int $number - * @return void - */ - public function setCurrentPage($number) - { - $this->currentPage = $number; - } - - /** - * Get the root URL for the request. - * - * @return string - */ - public function getCurrentUrl() - { - return $this->baseUrl ?: $this->request->url(); - } - - /** - * Set the base URL in use by the paginator. - * - * @param string $baseUrl - * @return void - */ - public function setBaseUrl($baseUrl) - { - $this->baseUrl = $baseUrl; - } - - /** - * Set the input page parameter name used by the paginator. - * - * @param string $pageName - * @return void - */ - public function setPageName($pageName) - { - $this->pageName = $pageName; - } - - /** - * Get the input page parameter name used by the paginator. - * - * @return string - */ - public function getPageName() - { - return $this->pageName; - } - - /** - * Get the name of the pagination view. - * - * @param string $view - * @return string - */ - public function getViewName($view = null) - { - if ( ! is_null($view)) return $view; - - return $this->viewName ?: 'pagination::slider'; - } - - /** - * Set the name of the pagination view. - * - * @param string $viewName - * @return void - */ - public function setViewName($viewName) - { - $this->viewName = $viewName; - } - - /** - * Get the locale of the paginator. - * - * @return string - */ - public function getLocale() - { - return $this->locale; - } - - /** - * Set the locale of the paginator. - * - * @param string $locale - * @return void - */ - public function setLocale($locale) - { - $this->locale = $locale; - } - - /** - * Get the active request instance. - * - * @return \Symfony\Component\HttpFoundation\Request - */ - public function getRequest() - { - return $this->request; - } - - /** - * Set the active request instance. - * - * @param \Symfony\Component\HttpFoundation\Request $request - * @return void - */ - public function setRequest(Request $request) - { - $this->request = $request; - } - - /** - * Get the current view factory. - * - * @return \Illuminate\View\Factory - */ - public function getViewFactory() - { - return $this->view; - } - - /** - * Set the current view factory. - * - * @param \Illuminate\View\Factory $view - * @return void - */ - public function setViewFactory(ViewFactory $view) - { - $this->view = $view; - } - - /** - * Get the translator instance. - * - * @return \Symfony\Component\Translation\TranslatorInterface - */ - public function getTranslator() - { - return $this->trans; - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php b/vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php deleted file mode 100644 index a2f4073..0000000 --- a/vendor/laravel/framework/src/Illuminate/Session/DatabaseSessionHandler.php +++ /dev/null @@ -1,130 +0,0 @@ -table = $table; - $this->connection = $connection; - } - - /** - * {@inheritDoc} - */ - public function open($savePath, $sessionName) - { - return true; - } - - /** - * {@inheritDoc} - */ - public function close() - { - return true; - } - - /** - * {@inheritDoc} - */ - public function read($sessionId) - { - $session = $this->getQuery()->find($sessionId); - - if ( ! is_null($session)) - { - $this->exists = true; - - return base64_decode($session->payload); - } - } - - /** - * {@inheritDoc} - */ - public function write($sessionId, $data) - { - if ($this->exists) - { - $this->getQuery()->where('id', $sessionId)->update([ - 'payload' => base64_encode($data), 'last_activity' => time(), - ]); - } - else - { - $this->getQuery()->insert([ - 'id' => $sessionId, 'payload' => base64_encode($data), 'last_activity' => time(), - ]); - } - } - - /** - * {@inheritDoc} - */ - public function destroy($sessionId) - { - $this->getQuery()->where('id', $sessionId)->delete(); - } - - /** - * {@inheritDoc} - */ - public function gc($lifetime) - { - $this->getQuery()->where('last_activity', '<=', $lifetime)->delete(); - } - - /** - * Get a fresh query builder instance for the table. - * - * @return \Illuminate\Database\Query\Builder - */ - protected function getQuery() - { - return $this->connection->table($this->table); - } - - /** - * Set the existence state for the session. - * - * @param bool $value - * @return \SessionHandlerInterface - */ - public function setExists($value) - { - $this->exists = $value; - - return $this; - } - -} \ No newline at end of file diff --git a/vendor/laravel/framework/src/Illuminate/Session/ExistenceAwareInterface.php b/vendor/laravel/framework/src/Illuminate/Session/ExistenceAwareInterface.php deleted file mode 100644 index d4d2f95..0000000 --- a/vendor/laravel/framework/src/Illuminate/Session/ExistenceAwareInterface.php +++ /dev/null @@ -1,13 +0,0 @@ -bags, $key, new MessageBag); - } - - /** - * Add a new MessageBag instance to the bags. - * - * @param string $key - * @param \Illuminate\Support\MessageBag $bag - * @return \Illuminate\Support\ViewErrorBag - */ - public function put($key, MessageBag $bag) - { - $this->bags[$key] = $bag; - - return $this; - } - - /** - * Get the number of messages in the default bag. - * - * @return int - */ - public function count() - { - return $this->default->count(); - } - - /** - * Dynamically call methods on the default bag. - * - * @param string $method - * @param array $parameters - * @return mixed - */ - public function __call($method, $parameters) - { - return call_user_func_array(array($this->default, $method), $parameters); - } - - /** - * Dynamically access a view error bag. - * - * @return \Illuminate\Support\MessageBag - */ - public function __get($key) - { - return array_get($this->bags, $key, new MessageBag); - } - - /** - * Dynamically set a view error bag. - * - * @param string $key - * @param \Illuminate\Support\MessageBag $value - * @return void - */ - public function __set($key, $value) - { - array_set($this->bags, $key, $value); - } - -} diff --git a/vendor/laravel/framework/src/Illuminate/View/Factory.php b/vendor/laravel/framework/src/Illuminate/View/Factory.php deleted file mode 100755 index 149b8d7..0000000 --- a/vendor/laravel/framework/src/Illuminate/View/Factory.php +++ /dev/null @@ -1,826 +0,0 @@ - 'blade', 'php' => 'php'); - - /** - * The view composer events. - * - * @var array - */ - protected $composers = array(); - - /** - * All of the finished, captured sections. - * - * @var array - */ - protected $sections = array(); - - /** - * The stack of in-progress sections. - * - * @var array - */ - protected $sectionStack = array(); - - /** - * The number of active rendering operations. - * - * @var int - */ - protected $renderCount = 0; - - /** - * Create a new view factory instance. - * - * @param \Illuminate\View\Engines\EngineResolver $engines - * @param \Illuminate\View\ViewFinderInterface $finder - * @param \Illuminate\Events\Dispatcher $events - * @return void - */ - public function __construct(EngineResolver $engines, ViewFinderInterface $finder, Dispatcher $events) - { - $this->finder = $finder; - $this->events = $events; - $this->engines = $engines; - - $this->share('__env', $this); - } - - /** - * Get the evaluated view contents for the given view. - * - * @param string $view - * @param array $data - * @param array $mergeData - * @return \Illuminate\View\View - */ - public function make($view, $data = array(), $mergeData = array()) - { - if (isset($this->aliases[$view])) $view = $this->aliases[$view]; - - $path = $this->finder->find($view); - - $data = array_merge($mergeData, $this->parseData($data)); - - $this->callCreator($view = new View($this, $this->getEngineFromPath($path), $view, $path, $data)); - - return $view; - } - - /** - * Parse the given data into a raw array. - * - * @param mixed $data - * @return array - */ - protected function parseData($data) - { - return $data instanceof Arrayable ? $data->toArray() : $data; - } - - /** - * Get the evaluated view contents for a named view. - * - * @param string $view - * @param mixed $data - * @return \Illuminate\View\View - */ - public function of($view, $data = array()) - { - return $this->make($this->names[$view], $data); - } - - /** - * Register a named view. - * - * @param string $view - * @param string $name - * @return void - */ - public function name($view, $name) - { - $this->names[$name] = $view; - } - - /** - * Add an alias for a view. - * - * @param string $view - * @param string $alias - * @return void - */ - public function alias($view, $alias) - { - $this->aliases[$alias] = $view; - } - - /** - * Determine if a given view exists. - * - * @param string $view - * @return bool - */ - public function exists($view) - { - try - { - $this->finder->find($view); - } - catch (\InvalidArgumentException $e) - { - return false; - } - - return true; - } - - /** - * Get the rendered contents of a partial from a loop. - * - * @param string $view - * @param array $data - * @param string $iterator - * @param string $empty - * @return string - */ - public function renderEach($view, $data, $iterator, $empty = 'raw|') - { - $result = ''; - - // If is actually data in the array, we will loop through the data and append - // an instance of the partial view to the final result HTML passing in the - // iterated value of this data array, allowing the views to access them. - if (count($data) > 0) - { - foreach ($data as $key => $value) - { - $data = array('key' => $key, $iterator => $value); - - $result .= $this->make($view, $data)->render(); - } - } - - // If there is no data in the array, we will render the contents of the empty - // view. Alternatively, the "empty view" could be a raw string that begins - // with "raw|" for convenience and to let this know that it is a string. - else - { - if (starts_with($empty, 'raw|')) - { - $result = substr($empty, 4); - } - else - { - $result = $this->make($empty)->render(); - } - } - - return $result; - } - - /** - * Get the appropriate view engine for the given path. - * - * @param string $path - * @return \Illuminate\View\Engines\EngineInterface - */ - protected function getEngineFromPath($path) - { - $engine = $this->extensions[$this->getExtension($path)]; - - return $this->engines->resolve($engine); - } - - /** - * Get the extension used by the view file. - * - * @param string $path - * @return string - */ - protected function getExtension($path) - { - $extensions = array_keys($this->extensions); - - return array_first($extensions, function($key, $value) use ($path) - { - return ends_with($path, $value); - }); - } - - /** - * Add a piece of shared data to the environment. - * - * @param string $key - * @param mixed $value - * @return void - */ - public function share($key, $value = null) - { - if ( ! is_array($key)) return $this->shared[$key] = $value; - - foreach ($key as $innerKey => $innerValue) - { - $this->share($innerKey, $innerValue); - } - } - - /** - * Register a view creator event. - * - * @param array|string $views - * @param \Closure|string $callback - * @return array - */ - public function creator($views, $callback) - { - $creators = array(); - - foreach ((array) $views as $view) - { - $creators[] = $this->addViewEvent($view, $callback, 'creating: '); - } - - return $creators; - } - - /** - * Register multiple view composers via an array. - * - * @param array $composers - * @return array - */ - public function composers(array $composers) - { - $registered = array(); - - foreach ($composers as $callback => $views) - { - $registered += $this->composer($views, $callback); - } - - return $registered; - } - - /** - * Register a view composer event. - * - * @param array|string $views - * @param \Closure|string $callback - * @return array - */ - public function composer($views, $callback, $priority = null) - { - $composers = array(); - - foreach ((array) $views as $view) - { - $composers[] = $this->addViewEvent($view, $callback, 'composing: ', $priority); - } - - return $composers; - } - - /** - * Add an event for a given view. - * - * @param string $view - * @param Closure|string $callback - * @param string $prefix - * @return Closure - */ - protected function addViewEvent($view, $callback, $prefix = 'composing: ', $priority = null) - { - if ($callback instanceof Closure) - { - $this->addEventListener($prefix.$view, $callback, $priority); - - return $callback; - } - elseif (is_string($callback)) - { - return $this->addClassEvent($view, $callback, $prefix, $priority); - } - } - - /** - * Register a class based view composer. - * - * @param string $view - * @param string $class - * @param string $prefix - * @return \Closure - */ - protected function addClassEvent($view, $class, $prefix, $priority = null) - { - $name = $prefix.$view; - - // When registering a class based view "composer", we will simply resolve the - // classes from the application IoC container then call the compose method - // on the instance. This allows for convenient, testable view composers. - $callback = $this->buildClassEventCallback($class, $prefix); - - $this->addEventListener($name, $callback, $priority); - - return $callback; - } - - /** - * Add a listener to the event dispatcher. - * - * @param string $name - * @param \Closure $callback - * @param integer $priority - */ - protected function addEventListener($name, $callback, $priority = null) - { - if (is_null($priority)) - { - $this->events->listen($name, $callback); - } - else - { - $this->events->listen($name, $callback, $priority); - } - } - - /** - * Build a class based container callback Closure. - * - * @param string $class - * @param string $prefix - * @return \Closure - */ - protected function buildClassEventCallback($class, $prefix) - { - $container = $this->container; - - list($class, $method) = $this->parseClassEvent($class, $prefix); - - // Once we have the class and method name, we can build the Closure to resolve - // the instance out of the IoC container and call the method on it with the - // given arguments that are passed to the Closure as the composer's data. - return function() use ($class, $method, $container) - { - $callable = array($container->make($class), $method); - - return call_user_func_array($callable, func_get_args()); - }; - } - - /** - * Parse a class based composer name. - * - * @param string $class - * @param string $prefix - * @return array - */ - protected function parseClassEvent($class, $prefix) - { - if (str_contains($class, '@')) - { - return explode('@', $class); - } - else - { - $method = str_contains($prefix, 'composing') ? 'compose' : 'create'; - - return array($class, $method); - } - } - - /** - * Call the composer for a given view. - * - * @param \Illuminate\View\View $view - * @return void - */ - public function callComposer(View $view) - { - $this->events->fire('composing: '.$view->getName(), array($view)); - } - - /** - * Call the creator for a given view. - * - * @param \Illuminate\View\View $view - * @return void - */ - public function callCreator(View $view) - { - $this->events->fire('creating: '.$view->getName(), array($view)); - } - - /** - * Start injecting content into a section. - * - * @param string $section - * @param string $content - * @return void - */ - public function startSection($section, $content = '') - { - if ($content === '') - { - ob_start() && $this->sectionStack[] = $section; - } - else - { - $this->extendSection($section, $content); - } - } - - /** - * Inject inline content into a section. - * - * @param string $section - * @param string $content - * @return void - */ - public function inject($section, $content) - { - return $this->startSection($section, $content); - } - - /** - * Stop injecting content into a section and return its contents. - * - * @return string - */ - public function yieldSection() - { - return $this->yieldContent($this->stopSection()); - } - - /** - * Stop injecting content into a section. - * - * @param bool $overwrite - * @return string - */ - public function stopSection($overwrite = false) - { - $last = array_pop($this->sectionStack); - - if ($overwrite) - { - $this->sections[$last] = ob_get_clean(); - } - else - { - $this->extendSection($last, ob_get_clean()); - } - - return $last; - } - - /** - * Stop injecting content into a section and append it. - * - * @return string - */ - public function appendSection() - { - $last = array_pop($this->sectionStack); - - if (isset($this->sections[$last])) - { - $this->sections[$last] .= ob_get_clean(); - } - else - { - $this->sections[$last] = ob_get_clean(); - } - - return $last; - } - - /** - * Append content to a given section. - * - * @param string $section - * @param string $content - * @return void - */ - protected function extendSection($section, $content) - { - if (isset($this->sections[$section])) - { - $content = str_replace('@parent', $content, $this->sections[$section]); - - $this->sections[$section] = $content; - } - else - { - $this->sections[$section] = $content; - } - } - - /** - * Get the string contents of a section. - * - * @param string $section - * @param string $default - * @return string - */ - public function yieldContent($section, $default = '') - { - return isset($this->sections[$section]) ? $this->sections[$section] : $default; - } - - /** - * Flush all of the section contents. - * - * @return void - */ - public function flushSections() - { - $this->sections = array(); - - $this->sectionStack = array(); - } - - /** - * Flush all of the section contents if done rendering. - * - * @return void - */ - public function flushSectionsIfDoneRendering() - { - if ($this->doneRendering()) $this->flushSections(); - } - - /** - * Increment the rendering counter. - * - * @return void - */ - public function incrementRender() - { - $this->renderCount++; - } - - /** - * Decrement the rendering counter. - * - * @return void - */ - public function decrementRender() - { - $this->renderCount--; - } - - /** - * Check if there are no active render operations. - * - * @return bool - */ - public function doneRendering() - { - return $this->renderCount == 0; - } - - /** - * Add a location to the array of view locations. - * - * @param string $location - * @return void - */ - public function addLocation($location) - { - $this->finder->addLocation($location); - } - - /** - * Add a new namespace to the loader. - * - * @param string $namespace - * @param string|array $hints - * @return void - */ - public function addNamespace($namespace, $hints) - { - $this->finder->addNamespace($namespace, $hints); - } - - /** - * Prepend a new namespace to the loader. - * - * @param string $namespace - * @param string|array $hints - * @return void - */ - public function prependNamespace($namespace, $hints) - { - $this->finder->prependNamespace($namespace, $hints); - } - - /** - * Register a valid view extension and its engine. - * - * @param string $extension - * @param string $engine - * @param Closure $resolver - * @return void - */ - public function addExtension($extension, $engine, $resolver = null) - { - $this->finder->addExtension($extension); - - if (isset($resolver)) - { - $this->engines->register($engine, $resolver); - } - - unset($this->extensions[$extension]); - - $this->extensions = array_merge(array($extension => $engine), $this->extensions); - } - - /** - * Get the extension to engine bindings. - * - * @return array - */ - public function getExtensions() - { - return $this->extensions; - } - - /** - * Get the engine resolver instance. - * - * @return \Illuminate\View\Engines\EngineResolver - */ - public function getEngineResolver() - { - return $this->engines; - } - - /** - * Get the view finder instance. - * - * @return \Illuminate\View\ViewFinderInterface - */ - public function getFinder() - { - return $this->finder; - } - - /** - * Set the view finder instance. - * - * @return void - */ - public function setFinder(ViewFinderInterface $finder) - { - $this->finder = $finder; - } - - /** - * Get the event dispatcher instance. - * - * @return \Illuminate\Events\Dispatcher - */ - public function getDispatcher() - { - return $this->events; - } - - /** - * Set the event dispatcher instance. - * - * @param \Illuminate\Events\Dispatcher - * @return void - */ - public function setDispatcher(Dispatcher $events) - { - $this->events = $events; - } - - /** - * Get the IoC container instance. - * - * @return \Illuminate\Container\Container - */ - public function getContainer() - { - return $this->container; - } - - /** - * Set the IoC container instance. - * - * @param \Illuminate\Container\Container $container - * @return void - */ - public function setContainer(Container $container) - { - $this->container = $container; - } - - /** - * Get an item from the shared data. - * - * @param string $key - * @param mixed $default - * @return mixed - */ - public function shared($key, $default = null) - { - return array_get($this->shared, $key, $default); - } - - /** - * Get all of the shared data for the environment. - * - * @return array - */ - public function getShared() - { - return $this->shared; - } - - /** - * Get the entire array of sections. - * - * @return array - */ - public function getSections() - { - return $this->sections; - } - - /** - * Get all of the registered named views in environment. - * - * @return array - */ - public function getNames() - { - return $this->names; - } - -} diff --git a/vendor/swiftmailer/swiftmailer/README.git b/vendor/swiftmailer/swiftmailer/README.git deleted file mode 100644 index ad9cc2e..0000000 --- a/vendor/swiftmailer/swiftmailer/README.git +++ /dev/null @@ -1,67 +0,0 @@ -This README applies to anyone who checks out the source from git. - -If you're reading this page on github.com, and you don't have git -installed or know about git, you can download this repository by -using the "download" button on github.com, right above the file -list. - -PREAMBLE: ---------- - -The git repository is structured in the expected way where "master" is the -main branch you should use if you want to have bleeding-edge updates. Any -other branch should be ignored since it will likely contain unstable -and/or experimental developments. - -Generally speaking you should feel safe using the "master" branch in -production code. Anything likely to break will be committed to another -branch. Only bugfixes and clean non-breaking feature additions will be -performed in master. - -All releases (post version 4.0.0) are tagged using the version number of -that release. Earlier versions exist in a subversion repository at the -old sourceforge project page. - - -WHAT IS SWIFT MAILER? ---------------------- - -Swift Mailer is a component based mailing solution for PHP 5. -It is released under the MIT license. - -Homepage: http://swiftmailer.org/ -Documentation: http://swiftmailer.org/docs -Mailing List: http://groups.google.com/group/swiftmailer -Bugs: https://github.com/swiftmailer/swiftmailer/issues -Repository: https://github.com/swiftmailer/swiftmailer - -Swift Mailer is highly object-oriented by design and lends itself -to use in complex web application with a great deal of flexibility. - -For full details on usage, see the documentation. - - -WHY SO MUCH CLUTTER? --------------------- -As you can probably see, there are a lot more files in here than you find in -the pre-packaged versions. That's because I store notes (UML, RFCs etc) in -the repository. - -The main library files live in /lib and the tests live in /tests. You can run -the tests by pointing your web browser at /test-suite, or by running the -command "php test-suite/run.php". Some tests will be "skipped" if -tests/smoke.conf.php and tests/acceptance.conf.php are not edited. This is -harmless and normal. - -If you want to create a bundled-up package from subversion you can do so if -you have Ant (http://ant.apache.org/) installed. Simply run "ant package" -from this directory and the tar.gz file will be created in the /build -directory. - -Running the command "ant" with no arguments will bundle up the package without -compressing it into a tar.gz file. - -Tests can also be run using "ant test" provided php is on your PATH -environment variable. - -EoM diff --git a/vendor/swiftmailer/swiftmailer/build.xml b/vendor/swiftmailer/swiftmailer/build.xml deleted file mode 100644 index 2260269..0000000 --- a/vendor/swiftmailer/swiftmailer/build.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/vendor/swiftmailer/swiftmailer/create_pear_package.php b/vendor/swiftmailer/swiftmailer/create_pear_package.php deleted file mode 100644 index 521d650..0000000 --- a/vendor/swiftmailer/swiftmailer/create_pear_package.php +++ /dev/null @@ -1,42 +0,0 @@ - date('Y-m-d'), - 'time' => date('H:m:00'), - 'version' => $argv[1], - 'api_version' => $argv[1], - 'stability' => $argv[2], - 'api_stability' => $argv[2], -); - -$context['files'] = ''; -$path = realpath(dirname(__FILE__).'/lib/classes/Swift'); -foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::LEAVES_ONLY) as $file) -{ - if (preg_match('/\.php$/', $file)) - { - $name = str_replace($path.'/', '', $file); - $context['files'] .= ' '."\n"; - } -} - -$template = file_get_contents(dirname(__FILE__).'/package.xml.tpl'); -$content = preg_replace_callback('/\{\{\s*([a-zA-Z0-9_]+)\s*\}\}/', 'replace_parameters', $template); -file_put_contents(dirname(__FILE__).'/package.xml', $content); - -function replace_parameters($matches) -{ - global $context; - - return isset($context[$matches[1]]) ? $context[$matches[1]] : null; -} diff --git a/vendor/swiftmailer/swiftmailer/package.xml.tpl b/vendor/swiftmailer/swiftmailer/package.xml.tpl deleted file mode 100644 index 306a4eb..0000000 --- a/vendor/swiftmailer/swiftmailer/package.xml.tpl +++ /dev/null @@ -1,73 +0,0 @@ - - - Swift - pear.swiftmailer.org - Free Feature-rich PHP Mailer. - - Swift Mailer integrates into any web app written in PHP 5, offering a flexible and elegant object-oriented approach to sending emails with a multitude of features. - - - Fabien Potencier - fabpot - fabien.potencier@symfony-project.org - yes - - - Chris Corbyn - d11wtq - - no - - {{ date }} - - - {{ version }} - {{ api_version }} - - - {{ stability }} - {{ stability }} - - MIT - - - - - - - - - - - - - - - - - - - - - - -{{ files }} - - - - - - - - - 5.2.4 - - - 1.4.0 - - - - - diff --git a/vendor/symfony/console/Symfony/Component/Console/Helper/ProgressBar.php b/vendor/symfony/console/Symfony/Component/Console/Helper/ProgressBar.php deleted file mode 100644 index ff101ca..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Helper/ProgressBar.php +++ /dev/null @@ -1,559 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Output\NullOutput; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * The ProgressBar provides helpers to display progress output. - * - * @author Fabien Potencier - * @author Chris Jones - */ -class ProgressBar -{ - // options - private $barWidth = 28; - private $barChar = '='; - private $emptyBarChar = '-'; - private $progressChar = '>'; - private $format = null; - private $redrawFreq = 1; - - /** - * @var OutputInterface - */ - private $output; - private $step; - private $max; - private $startTime; - private $stepWidth; - private $percent; - private $lastMessagesLength; - private $barCharOriginal; - private $formatLineCount; - private $messages; - - private static $formatters; - private static $formats; - - /** - * Constructor. - * - * @param OutputInterface $output An OutputInterface instance - * @param int $max Maximum steps (0 if unknown) - */ - public function __construct(OutputInterface $output, $max = 0) - { - // Disabling output when it does not support ANSI codes as it would result in a broken display anyway. - $this->output = $output->isDecorated() ? $output : new NullOutput(); - $this->max = (int) $max; - $this->stepWidth = $this->max > 0 ? Helper::strlen($this->max) : 4; - - if (!self::$formatters) { - self::$formatters = self::initPlaceholderFormatters(); - } - - if (!self::$formats) { - self::$formats = self::initFormats(); - } - - $this->setFormat($this->determineBestFormat()); - } - - /** - * Sets a placeholder formatter for a given name. - * - * This method also allow you to override an existing placeholder. - * - * @param string $name The placeholder name (including the delimiter char like %) - * @param callable $callable A PHP callable - */ - public static function setPlaceholderFormatterDefinition($name, $callable) - { - if (!self::$formatters) { - self::$formatters = self::initPlaceholderFormatters(); - } - - self::$formatters[$name] = $callable; - } - - /** - * Gets the placeholder formatter for a given name. - * - * @param string $name The placeholder name (including the delimiter char like %) - * - * @return callable|null A PHP callable - */ - public static function getPlaceholderFormatterDefinition($name) - { - if (!self::$formatters) { - self::$formatters = self::initPlaceholderFormatters(); - } - - return isset(self::$formatters[$name]) ? self::$formatters[$name] : null; - } - - /** - * Sets a format for a given name. - * - * This method also allow you to override an existing format. - * - * @param string $name The format name - * @param string $format A format string - */ - public static function setFormatDefinition($name, $format) - { - if (!self::$formats) { - self::$formats = self::initFormats(); - } - - self::$formats[$name] = $format; - } - - /** - * Gets the format for a given name. - * - * @param string $name The format name - * - * @return string|null A format string - */ - public static function getFormatDefinition($name) - { - if (!self::$formats) { - self::$formats = self::initFormats(); - } - - return isset(self::$formats[$name]) ? self::$formats[$name] : null; - } - - public function setMessage($message, $name = 'message') - { - $this->messages[$name] = $message; - } - - public function getMessage($name = 'message') - { - return $this->messages[$name]; - } - - /** - * Gets the progress bar start time. - * - * @return int The progress bar start time - */ - public function getStartTime() - { - return $this->startTime; - } - - /** - * Gets the progress bar maximal steps. - * - * @return int The progress bar max steps - */ - public function getMaxSteps() - { - return $this->max; - } - - /** - * Gets the progress bar step. - * - * @return int The progress bar step - */ - public function getStep() - { - return $this->step; - } - - /** - * Gets the progress bar step width. - * - * @return int The progress bar step width - */ - public function getStepWidth() - { - return $this->stepWidth; - } - - /** - * Gets the current progress bar percent. - * - * @return int The current progress bar percent - */ - public function getProgressPercent() - { - return $this->percent; - } - - /** - * Sets the progress bar width. - * - * @param int $size The progress bar size - */ - public function setBarWidth($size) - { - $this->barWidth = (int) $size; - } - - /** - * Gets the progress bar width. - * - * @return int The progress bar size - */ - public function getBarWidth() - { - return $this->barWidth; - } - - /** - * Sets the bar character. - * - * @param string $char A character - */ - public function setBarCharacter($char) - { - $this->barChar = $char; - } - - /** - * Gets the bar character. - * - * @return string A character - */ - public function getBarCharacter() - { - return $this->barChar; - } - - /** - * Sets the empty bar character. - * - * @param string $char A character - */ - public function setEmptyBarCharacter($char) - { - $this->emptyBarChar = $char; - } - - /** - * Gets the empty bar character. - * - * @return string A character - */ - public function getEmptyBarCharacter() - { - return $this->emptyBarChar; - } - - /** - * Sets the progress bar character. - * - * @param string $char A character - */ - public function setProgressCharacter($char) - { - $this->progressChar = $char; - } - - /** - * Gets the progress bar character. - * - * @return string A character - */ - public function getProgressCharacter() - { - return $this->progressChar; - } - - /** - * Sets the progress bar format. - * - * @param string $format The format - */ - public function setFormat($format) - { - // try to use the _nomax variant if available - if (!$this->max && isset(self::$formats[$format.'_nomax'])) { - $this->format = self::$formats[$format.'_nomax']; - } elseif (isset(self::$formats[$format])) { - $this->format = self::$formats[$format]; - } else { - $this->format = $format; - } - - $this->formatLineCount = substr_count($this->format, "\n"); - } - - /** - * Sets the redraw frequency. - * - * @param int $freq The frequency in steps - */ - public function setRedrawFrequency($freq) - { - $this->redrawFreq = (int) $freq; - } - - /** - * Starts the progress output. - */ - public function start() - { - $this->startTime = time(); - $this->step = 0; - $this->percent = 0; - $this->lastMessagesLength = 0; - $this->barCharOriginal = ''; - - if (!$this->max) { - $this->barCharOriginal = $this->barChar; - $this->barChar = $this->emptyBarChar; - } - - $this->display(); - } - - /** - * Advances the progress output X steps. - * - * @param int $step Number of steps to advance - * - * @throws \LogicException - */ - public function advance($step = 1) - { - $this->setCurrent($this->step + $step); - } - - /** - * Sets the current progress. - * - * @param int $step The current progress - * - * @throws \LogicException - */ - public function setCurrent($step) - { - if (null === $this->startTime) { - throw new \LogicException('You must start the progress bar before calling setCurrent().'); - } - - $step = (int) $step; - if ($step < $this->step) { - throw new \LogicException('You can\'t regress the progress bar.'); - } - - if ($this->max > 0 && $step > $this->max) { - throw new \LogicException('You can\'t advance the progress bar past the max value.'); - } - - $prevPeriod = intval($this->step / $this->redrawFreq); - $currPeriod = intval($step / $this->redrawFreq); - $this->step = $step; - $this->percent = $this->max > 0 ? (float) $this->step / $this->max : 0; - if ($prevPeriod !== $currPeriod || $this->max === $step) { - $this->display(); - } - } - - /** - * Finishes the progress output. - */ - public function finish() - { - if (null === $this->startTime) { - throw new \LogicException('You must start the progress bar before calling finish().'); - } - - if (!$this->max) { - $this->barChar = $this->barCharOriginal; - $this->max = $this->step; - $this->setCurrent($this->max); - $this->max = 0; - $this->barChar = $this->emptyBarChar; - } else { - $this->setCurrent($this->max); - } - - $this->startTime = null; - } - - /** - * Outputs the current progress string. - * - * @throws \LogicException - */ - public function display() - { - if (null === $this->startTime) { - throw new \LogicException('You must start the progress bar before calling display().'); - } - - // these 3 variables can be removed in favor of using $this in the closure when support for PHP 5.3 will be dropped. - $self = $this; - $output = $this->output; - $messages = $this->messages; - $this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) use ($self, $output, $messages) { - if ($formatter = $self::getPlaceholderFormatterDefinition($matches[1])) { - $text = call_user_func($formatter, $self, $output); - } elseif (isset($messages[$matches[1]])) { - $text = $messages[$matches[1]]; - } else { - return $matches[0]; - } - - if (isset($matches[2])) { - $text = sprintf('%'.$matches[2], $text); - } - - return $text; - }, $this->format)); - } - - /** - * Removes the progress bar from the current line. - * - * This is useful if you wish to write some output - * while a progress bar is running. - * Call display() to show the progress bar again. - */ - public function clear() - { - $this->overwrite(str_repeat("\n", $this->formatLineCount)); - } - - /** - * Overwrites a previous message to the output. - * - * @param string $message The message - */ - private function overwrite($message) - { - $lines = explode("\n", $message); - - // append whitespace to match the line's length - if (null !== $this->lastMessagesLength) { - foreach ($lines as $i => $line) { - if ($this->lastMessagesLength > Helper::strlenWithoutDecoration($this->output->getFormatter(), $line)) { - $lines[$i] = str_pad($line, $this->lastMessagesLength, "\x20", STR_PAD_RIGHT); - } - } - } - - // move back to the beginning of the progress bar before redrawing it - $this->output->write("\x0D"); - if ($this->formatLineCount) { - $this->output->write(sprintf("\033[%dA", $this->formatLineCount)); - } - $this->output->write(implode("\n", $lines)); - - $this->lastMessagesLength = 0; - foreach ($lines as $line) { - $len = Helper::strlenWithoutDecoration($this->output->getFormatter(), $line); - if ($len > $this->lastMessagesLength) { - $this->lastMessagesLength = $len; - } - } - } - - private function determineBestFormat() - { - switch ($this->output->getVerbosity()) { - // OutputInterface::VERBOSITY_QUIET: display is disabled anyway - case OutputInterface::VERBOSITY_VERBOSE: - return $this->max > 0 ? 'verbose' : 'verbose_nomax'; - case OutputInterface::VERBOSITY_VERY_VERBOSE: - return $this->max > 0 ? 'very_verbose' : 'very_verbose_nomax'; - case OutputInterface::VERBOSITY_DEBUG: - return $this->max > 0 ? 'debug' : 'debug_nomax'; - default: - return $this->max > 0 ? 'normal' : 'normal_nomax'; - } - } - - private static function initPlaceholderFormatters() - { - return array( - 'bar' => function (ProgressBar $bar, OutputInterface $output) { - $completeBars = floor($bar->getMaxSteps() > 0 ? $bar->getProgressPercent() * $bar->getBarWidth() : $bar->getStep() % $bar->getBarWidth()); - $display = str_repeat($bar->getBarCharacter(), $completeBars); - if ($completeBars < $bar->getBarWidth()) { - $emptyBars = $bar->getBarWidth() - $completeBars - Helper::strlenWithoutDecoration($output->getFormatter(), $bar->getProgressCharacter()); - $display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); - } - - return $display; - }, - 'elapsed' => function (ProgressBar $bar) { - return Helper::formatTime(time() - $bar->getStartTime()); - }, - 'remaining' => function (ProgressBar $bar) { - if (!$bar->getMaxSteps()) { - throw new \LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); - } - - if (!$bar->getStep()) { - $remaining = 0; - } else { - $remaining = round((time() - $bar->getStartTime()) / $bar->getStep() * ($bar->getMaxSteps() - $bar->getStep())); - } - - return Helper::formatTime($remaining); - }, - 'estimated' => function (ProgressBar $bar) { - if (!$bar->getMaxSteps()) { - throw new \LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); - } - - if (!$bar->getStep()) { - $estimated = 0; - } else { - $estimated = round((time() - $bar->getStartTime()) / $bar->getStep() * $bar->getMaxSteps()); - } - - return Helper::formatTime($estimated); - }, - 'memory' => function (ProgressBar $bar) { - return Helper::formatMemory(memory_get_usage(true)); - }, - 'current' => function (ProgressBar $bar) { - return str_pad($bar->getStep(), $bar->getStepWidth(), ' ', STR_PAD_LEFT); - }, - 'max' => function (ProgressBar $bar) { - return $bar->getMaxSteps(); - }, - 'percent' => function (ProgressBar $bar) { - return floor($bar->getProgressPercent() * 100); - }, - ); - } - - private static function initFormats() - { - return array( - 'normal' => ' %current%/%max% [%bar%] %percent:3s%%', - 'normal_nomax' => ' %current% [%bar%]', - - 'verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', - 'verbose_nomax' => ' %current% [%bar%] %percent:3s%% %elapsed:6s%', - - 'very_verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', - 'very_verbose_nomax' => ' %current% [%bar%] %percent:3s%% %elapsed:6s%', - - 'debug' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', - 'debug_nomax' => ' %current% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', - ); - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Helper/QuestionHelper.php b/vendor/symfony/console/Symfony/Component/Console/Helper/QuestionHelper.php deleted file mode 100644 index 7ac2afa..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Helper/QuestionHelper.php +++ /dev/null @@ -1,411 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Formatter\OutputFormatterStyle; -use Symfony\Component\Console\Question\Question; -use Symfony\Component\Console\Question\ChoiceQuestion; - -/** - * The QuestionHelper class provides helpers to interact with the user. - * - * @author Fabien Potencier - */ -class QuestionHelper extends Helper -{ - private $inputStream; - private static $shell; - private static $stty; - - /** - * Asks a question to the user. - * - * @param InputInterface $input An InputInterface instance - * @param OutputInterface $output An OutputInterface instance - * @param Question $question The question to ask - * - * @return string The user answer - * - * @throws \RuntimeException If there is no data to read in the input stream - */ - public function ask(InputInterface $input, OutputInterface $output, Question $question) - { - if (!$input->isInteractive()) { - return $question->getDefault(); - } - - if (!$question->getValidator()) { - return $this->doAsk($output, $question); - } - - $that = $this; - - $interviewer = function () use ($output, $question, $that) { - return $that->doAsk($output, $question); - }; - - return $this->validateAttempts($interviewer, $output, $question); - } - - /** - * Sets the input stream to read from when interacting with the user. - * - * This is mainly useful for testing purpose. - * - * @param resource $stream The input stream - * - * @throws \InvalidArgumentException In case the stream is not a resource - */ - public function setInputStream($stream) - { - if (!is_resource($stream)) { - throw new \InvalidArgumentException('Input stream must be a valid resource.'); - } - - $this->inputStream = $stream; - } - - /** - * Returns the helper's input stream - * - * @return resource - */ - public function getInputStream() - { - return $this->inputStream; - } - - /** - * {@inheritdoc} - */ - public function getName() - { - return 'question'; - } - - /** - * Asks the question to the user. - * - * This method is public for PHP 5.3 compatibility, it should be private. - * - * @param OutputInterface $output - * @param Question $question - * - * @return bool|mixed|null|string - * - * @throws \Exception - * @throws \RuntimeException - */ - public function doAsk(OutputInterface $output, Question $question) - { - $inputStream = $this->inputStream ?: STDIN; - - $message = $question->getQuestion(); - if ($question instanceof ChoiceQuestion) { - $width = max(array_map('strlen', array_keys($question->getChoices()))); - - $messages = (array) $question->getQuestion(); - foreach ($question->getChoices() as $key => $value) { - $messages[] = sprintf(" [%-${width}s] %s", $key, $value); - } - - $output->writeln($messages); - - $message = $question->getPrompt(); - } - - $output->write($message); - - $autocomplete = $question->getAutocompleterValues(); - if (null === $autocomplete || !$this->hasSttyAvailable()) { - $ret = false; - if ($question->isHidden()) { - try { - $ret = trim($this->getHiddenResponse($output, $inputStream)); - } catch (\RuntimeException $e) { - if (!$question->isHiddenFallback()) { - throw $e; - } - } - } - - if (false === $ret) { - $ret = fgets($inputStream, 4096); - if (false === $ret) { - throw new \RuntimeException('Aborted'); - } - $ret = trim($ret); - } - } else { - $ret = trim($this->autocomplete($output, $question, $inputStream)); - } - - $ret = strlen($ret) > 0 ? $ret : $question->getDefault(); - - if ($normalizer = $question->getNormalizer()) { - return $normalizer($ret); - } - - return $ret; - } - - /** - * Autocompletes a question. - * - * @param OutputInterface $output - * @param Question $question - * - * @return string - */ - private function autocomplete(OutputInterface $output, Question $question, $inputStream) - { - $autocomplete = $question->getAutocompleterValues(); - $ret = ''; - - $i = 0; - $ofs = -1; - $matches = $autocomplete; - $numMatches = count($matches); - - $sttyMode = shell_exec('stty -g'); - - // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead) - shell_exec('stty -icanon -echo'); - - // Add highlighted text style - $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); - - // Read a keypress - while (!feof($inputStream)) { - $c = fread($inputStream, 1); - - // Backspace Character - if ("\177" === $c) { - if (0 === $numMatches && 0 !== $i) { - $i--; - // Move cursor backwards - $output->write("\033[1D"); - } - - if ($i === 0) { - $ofs = -1; - $matches = $autocomplete; - $numMatches = count($matches); - } else { - $numMatches = 0; - } - - // Pop the last character off the end of our string - $ret = substr($ret, 0, $i); - } elseif ("\033" === $c) { // Did we read an escape sequence? - $c .= fread($inputStream, 2); - - // A = Up Arrow. B = Down Arrow - if ('A' === $c[2] || 'B' === $c[2]) { - if ('A' === $c[2] && -1 === $ofs) { - $ofs = 0; - } - - if (0 === $numMatches) { - continue; - } - - $ofs += ('A' === $c[2]) ? -1 : 1; - $ofs = ($numMatches + $ofs) % $numMatches; - } - } elseif (ord($c) < 32) { - if ("\t" === $c || "\n" === $c) { - if ($numMatches > 0 && -1 !== $ofs) { - $ret = $matches[$ofs]; - // Echo out remaining chars for current match - $output->write(substr($ret, $i)); - $i = strlen($ret); - } - - if ("\n" === $c) { - $output->write($c); - break; - } - - $numMatches = 0; - } - - continue; - } else { - $output->write($c); - $ret .= $c; - $i++; - - $numMatches = 0; - $ofs = 0; - - foreach ($autocomplete as $value) { - // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle) - if (0 === strpos($value, $ret) && $i !== strlen($value)) { - $matches[$numMatches++] = $value; - } - } - } - - // Erase characters from cursor to end of line - $output->write("\033[K"); - - if ($numMatches > 0 && -1 !== $ofs) { - // Save cursor position - $output->write("\0337"); - // Write highlighted text - $output->write(''.substr($matches[$ofs], $i).''); - // Restore cursor position - $output->write("\0338"); - } - } - - // Reset stty so it behaves normally again - shell_exec(sprintf('stty %s', $sttyMode)); - - return $ret; - } - - /** - * Gets a hidden response from user. - * - * @param OutputInterface $output An Output instance - * - * @return string The answer - * - * @throws \RuntimeException In case the fallback is deactivated and the response cannot be hidden - */ - private function getHiddenResponse(OutputInterface $output, $inputStream) - { - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - $exe = __DIR__.'/../Resources/bin/hiddeninput.exe'; - - // handle code running from a phar - if ('phar:' === substr(__FILE__, 0, 5)) { - $tmpExe = sys_get_temp_dir().'/hiddeninput.exe'; - copy($exe, $tmpExe); - $exe = $tmpExe; - } - - $value = rtrim(shell_exec($exe)); - $output->writeln(''); - - if (isset($tmpExe)) { - unlink($tmpExe); - } - - return $value; - } - - if ($this->hasSttyAvailable()) { - $sttyMode = shell_exec('stty -g'); - - shell_exec('stty -echo'); - $value = fgets($inputStream, 4096); - shell_exec(sprintf('stty %s', $sttyMode)); - - if (false === $value) { - throw new \RuntimeException('Aborted'); - } - - $value = trim($value); - $output->writeln(''); - - return $value; - } - - if (false !== $shell = $this->getShell()) { - $readCmd = $shell === 'csh' ? 'set mypassword = $<' : 'read -r mypassword'; - $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd); - $value = rtrim(shell_exec($command)); - $output->writeln(''); - - return $value; - } - - throw new \RuntimeException('Unable to hide the response.'); - } - - /** - * Validates an attempt. - * - * @param callable $interviewer A callable that will ask for a question and return the result - * @param OutputInterface $output An Output instance - * @param Question $question A Question instance - * - * @return string The validated response - * - * @throws \Exception In case the max number of attempts has been reached and no valid response has been given - */ - private function validateAttempts($interviewer, OutputInterface $output, Question $question) - { - $error = null; - $attempts = $question->getMaxAttempts(); - while (null === $attempts || $attempts--) { - if (null !== $error) { - $output->writeln($this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error')); - } - - try { - return call_user_func($question->getValidator(), $interviewer()); - } catch (\Exception $error) { - } - } - - throw $error; - } - - /** - * Returns a valid unix shell. - * - * @return string|bool The valid shell name, false in case no valid shell is found - */ - private function getShell() - { - if (null !== self::$shell) { - return self::$shell; - } - - self::$shell = false; - - if (file_exists('/usr/bin/env')) { - // handle other OSs with bash/zsh/ksh/csh if available to hide the answer - $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null"; - foreach (array('bash', 'zsh', 'ksh', 'csh') as $sh) { - if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) { - self::$shell = $sh; - break; - } - } - } - - return self::$shell; - } - - /** - * Returns whether Stty is available or not. - * - * @return bool - */ - private function hasSttyAvailable() - { - if (null !== self::$stty) { - return self::$stty; - } - - exec('stty 2>&1', $output, $exitcode); - - return self::$stty = $exitcode === 0; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Helper/Table.php b/vendor/symfony/console/Symfony/Component/Console/Helper/Table.php deleted file mode 100644 index 5a3dbc1..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Helper/Table.php +++ /dev/null @@ -1,409 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Provides helpers to display a table. - * - * @author Fabien Potencier - * @author Саша Стаменковић - */ -class Table -{ - /** - * Table headers. - * - * @var array - */ - private $headers = array(); - - /** - * Table rows. - * - * @var array - */ - private $rows = array(); - - /** - * Column widths cache. - * - * @var array - */ - private $columnWidths = array(); - - /** - * Number of columns cache. - * - * @var array - */ - private $numberOfColumns; - - /** - * @var OutputInterface - */ - private $output; - - /** - * @var TableStyle - */ - private $style; - - private static $styles; - - public function __construct(OutputInterface $output) - { - $this->output = $output; - - if (!self::$styles) { - self::$styles = self::initStyles(); - } - - $this->setStyle('default'); - } - - /** - * Sets a style definition. - * - * @param string $name The style name - * @param TableStyle $style A TableStyle instance - */ - public static function setStyleDefinition($name, TableStyle $style) - { - if (!self::$styles) { - self::$styles = self::initStyles(); - } - - self::$styles[$name] = $style; - } - - /** - * Gets a style definition by name. - * - * @param string $name The style name - * - * @return TableStyle A TableStyle instance - */ - public static function getStyleDefinition($name) - { - if (!self::$styles) { - self::$styles = self::initStyles(); - } - - if (!self::$styles[$name]) { - throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); - } - - return self::$styles[$name]; - } - - /** - * Sets table style. - * - * @param TableStyle|string $name The style name or a TableStyle instance - * - * @return Table - */ - public function setStyle($name) - { - if ($name instanceof TableStyle) { - $this->style = $name; - } elseif (isset(self::$styles[$name])) { - $this->style = self::$styles[$name]; - } else { - throw new \InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); - } - - return $this; - } - - /** - * Gets the current table style. - * - * @return TableStyle - */ - public function getStyle() - { - return $this->style; - } - - public function setHeaders(array $headers) - { - $this->headers = array_values($headers); - - return $this; - } - - public function setRows(array $rows) - { - $this->rows = array(); - - return $this->addRows($rows); - } - - public function addRows(array $rows) - { - foreach ($rows as $row) { - $this->addRow($row); - } - - return $this; - } - - public function addRow($row) - { - if ($row instanceof TableSeparator) { - $this->rows[] = $row; - - return; - } - - if (!is_array($row)) { - throw new \InvalidArgumentException('A row must be an array or a TableSeparator instance.'); - } - - $this->rows[] = array_values($row); - - $keys = array_keys($this->rows); - $rowKey = array_pop($keys); - - foreach ($row as $key => $cellValue) { - if (!strstr($cellValue, "\n")) { - continue; - } - - $lines = explode("\n", $cellValue); - $this->rows[$rowKey][$key] = $lines[0]; - unset($lines[0]); - - foreach ($lines as $lineKey => $line) { - $nextRowKey = $rowKey + $lineKey + 1; - - if (isset($this->rows[$nextRowKey])) { - $this->rows[$nextRowKey][$key] = $line; - } else { - $this->rows[$nextRowKey] = array($key => $line); - } - } - } - - return $this; - } - - public function setRow($column, array $row) - { - $this->rows[$column] = $row; - - return $this; - } - - /** - * Renders table to output. - * - * Example: - * +---------------+-----------------------+------------------+ - * | ISBN | Title | Author | - * +---------------+-----------------------+------------------+ - * | 99921-58-10-7 | Divine Comedy | Dante Alighieri | - * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | - * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | - * +---------------+-----------------------+------------------+ - */ - public function render() - { - $this->renderRowSeparator(); - $this->renderRow($this->headers, $this->style->getCellHeaderFormat()); - if (!empty($this->headers)) { - $this->renderRowSeparator(); - } - foreach ($this->rows as $row) { - if ($row instanceof TableSeparator) { - $this->renderRowSeparator(); - } else { - $this->renderRow($row, $this->style->getCellRowFormat()); - } - } - if (!empty($this->rows)) { - $this->renderRowSeparator(); - } - - $this->cleanup(); - } - - /** - * Renders horizontal header separator. - * - * Example: +-----+-----------+-------+ - */ - private function renderRowSeparator() - { - if (0 === $count = $this->getNumberOfColumns()) { - return; - } - - if (!$this->style->getHorizontalBorderChar() && !$this->style->getCrossingChar()) { - return; - } - - $markup = $this->style->getCrossingChar(); - for ($column = 0; $column < $count; $column++) { - $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->getColumnWidth($column)).$this->style->getCrossingChar(); - } - - $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup)); - } - - /** - * Renders vertical column separator. - */ - private function renderColumnSeparator() - { - $this->output->write(sprintf($this->style->getBorderFormat(), $this->style->getVerticalBorderChar())); - } - - /** - * Renders table row. - * - * Example: | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | - * - * @param array $row - * @param string $cellFormat - */ - private function renderRow(array $row, $cellFormat) - { - if (empty($row)) { - return; - } - - $this->renderColumnSeparator(); - for ($column = 0, $count = $this->getNumberOfColumns(); $column < $count; $column++) { - $this->renderCell($row, $column, $cellFormat); - $this->renderColumnSeparator(); - } - $this->output->writeln(''); - } - - /** - * Renders table cell with padding. - * - * @param array $row - * @param int $column - * @param string $cellFormat - */ - private function renderCell(array $row, $column, $cellFormat) - { - $cell = isset($row[$column]) ? $row[$column] : ''; - $width = $this->getColumnWidth($column); - - // str_pad won't work properly with multi-byte strings, we need to fix the padding - if (function_exists('mb_strlen') && false !== $encoding = mb_detect_encoding($cell)) { - $width += strlen($cell) - mb_strlen($cell, $encoding); - } - - $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell); - - $content = sprintf($this->style->getCellRowContentFormat(), $cell); - - $this->output->write(sprintf($cellFormat, str_pad($content, $width, $this->style->getPaddingChar(), $this->style->getPadType()))); - } - - /** - * Gets number of columns for this table. - * - * @return int - */ - private function getNumberOfColumns() - { - if (null !== $this->numberOfColumns) { - return $this->numberOfColumns; - } - - $columns = array(count($this->headers)); - foreach ($this->rows as $row) { - $columns[] = count($row); - } - - return $this->numberOfColumns = max($columns); - } - - /** - * Gets column width. - * - * @param int $column - * - * @return int - */ - private function getColumnWidth($column) - { - if (isset($this->columnWidths[$column])) { - return $this->columnWidths[$column]; - } - - $lengths = array($this->getCellWidth($this->headers, $column)); - foreach ($this->rows as $row) { - if ($row instanceof TableSeparator) { - continue; - } - - $lengths[] = $this->getCellWidth($row, $column); - } - - return $this->columnWidths[$column] = max($lengths) + strlen($this->style->getCellRowContentFormat()) - 2; - } - - /** - * Gets cell width. - * - * @param array $row - * @param int $column - * - * @return int - */ - private function getCellWidth(array $row, $column) - { - return isset($row[$column]) ? Helper::strlenWithoutDecoration($this->output->getFormatter(), $row[$column]) : 0; - } - - /** - * Called after rendering to cleanup cache data. - */ - private function cleanup() - { - $this->columnWidths = array(); - $this->numberOfColumns = null; - } - - private static function initStyles() - { - $borderless = new TableStyle(); - $borderless - ->setHorizontalBorderChar('=') - ->setVerticalBorderChar(' ') - ->setCrossingChar(' ') - ; - - $compact = new TableStyle(); - $compact - ->setHorizontalBorderChar('') - ->setVerticalBorderChar(' ') - ->setCrossingChar('') - ->setCellRowContentFormat('%s') - ; - - return array( - 'default' => new TableStyle(), - 'borderless' => $borderless, - 'compact' => $compact, - ); - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Helper/TableSeparator.php b/vendor/symfony/console/Symfony/Component/Console/Helper/TableSeparator.php deleted file mode 100644 index 1f6981b..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Helper/TableSeparator.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * Marks a row as being a separator. - * - * @author Fabien Potencier - */ -class TableSeparator -{ -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Helper/TableStyle.php b/vendor/symfony/console/Symfony/Component/Console/Helper/TableStyle.php deleted file mode 100644 index 338f1a0..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Helper/TableStyle.php +++ /dev/null @@ -1,251 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Helper; - -/** - * Defines the styles for a Table. - * - * @author Fabien Potencier - * @author Саша Стаменковић - */ -class TableStyle -{ - private $paddingChar = ' '; - private $horizontalBorderChar = '-'; - private $verticalBorderChar = '|'; - private $crossingChar = '+'; - private $cellHeaderFormat = '%s'; - private $cellRowFormat = '%s'; - private $cellRowContentFormat = ' %s '; - private $borderFormat = '%s'; - private $padType = STR_PAD_RIGHT; - - /** - * Sets padding character, used for cell padding. - * - * @param string $paddingChar - * - * @return TableStyle - */ - public function setPaddingChar($paddingChar) - { - if (!$paddingChar) { - throw new \LogicException('The padding char must not be empty'); - } - - $this->paddingChar = $paddingChar; - - return $this; - } - - /** - * Gets padding character, used for cell padding. - * - * @return string - */ - public function getPaddingChar() - { - return $this->paddingChar; - } - - /** - * Sets horizontal border character. - * - * @param string $horizontalBorderChar - * - * @return TableStyle - */ - public function setHorizontalBorderChar($horizontalBorderChar) - { - $this->horizontalBorderChar = $horizontalBorderChar; - - return $this; - } - - /** - * Gets horizontal border character. - * - * @return string - */ - public function getHorizontalBorderChar() - { - return $this->horizontalBorderChar; - } - - /** - * Sets vertical border character. - * - * @param string $verticalBorderChar - * - * @return TableStyle - */ - public function setVerticalBorderChar($verticalBorderChar) - { - $this->verticalBorderChar = $verticalBorderChar; - - return $this; - } - - /** - * Gets vertical border character. - * - * @return string - */ - public function getVerticalBorderChar() - { - return $this->verticalBorderChar; - } - - /** - * Sets crossing character. - * - * @param string $crossingChar - * - * @return TableStyle - */ - public function setCrossingChar($crossingChar) - { - $this->crossingChar = $crossingChar; - - return $this; - } - - /** - * Gets crossing character. - * - * @return string $crossingChar - */ - public function getCrossingChar() - { - return $this->crossingChar; - } - - /** - * Sets header cell format. - * - * @param string $cellHeaderFormat - * - * @return TableStyle - */ - public function setCellHeaderFormat($cellHeaderFormat) - { - $this->cellHeaderFormat = $cellHeaderFormat; - - return $this; - } - - /** - * Gets header cell format. - * - * @return string - */ - public function getCellHeaderFormat() - { - return $this->cellHeaderFormat; - } - - /** - * Sets row cell format. - * - * @param string $cellRowFormat - * - * @return TableStyle - */ - public function setCellRowFormat($cellRowFormat) - { - $this->cellRowFormat = $cellRowFormat; - - return $this; - } - - /** - * Gets row cell format. - * - * @return string - */ - public function getCellRowFormat() - { - return $this->cellRowFormat; - } - - /** - * Sets row cell content format. - * - * @param string $cellRowContentFormat - * - * @return TableStyle - */ - public function setCellRowContentFormat($cellRowContentFormat) - { - $this->cellRowContentFormat = $cellRowContentFormat; - - return $this; - } - - /** - * Gets row cell content format. - * - * @return string - */ - public function getCellRowContentFormat() - { - return $this->cellRowContentFormat; - } - - /** - * Sets table border format. - * - * @param string $borderFormat - * - * @return TableStyle - */ - public function setBorderFormat($borderFormat) - { - $this->borderFormat = $borderFormat; - - return $this; - } - - /** - * Gets table border format. - * - * @return string - */ - public function getBorderFormat() - { - return $this->borderFormat; - } - - /** - * Sets cell padding type. - * - * @param int $padType STR_PAD_* - * - * @return TableStyle - */ - public function setPadType($padType) - { - $this->padType = $padType; - - return $this; - } - - /** - * Gets cell padding type. - * - * @return int - */ - public function getPadType() - { - return $this->padType; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Logger/ConsoleLogger.php b/vendor/symfony/console/Symfony/Component/Console/Logger/ConsoleLogger.php deleted file mode 100644 index dbd2e8b..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Logger/ConsoleLogger.php +++ /dev/null @@ -1,116 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Logger; - -use Psr\Log\AbstractLogger; -use Psr\Log\InvalidArgumentException; -use Psr\Log\LogLevel; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Output\ConsoleOutputInterface; - -/** - * PSR-3 compliant console logger - * - * @author Kévin Dunglas - * @link http://www.php-fig.org/psr/psr-3/ - */ -class ConsoleLogger extends AbstractLogger -{ - const INFO = 'info'; - const ERROR = 'error'; - - /** - * @var OutputInterface - */ - private $output; - /** - * @var array - */ - private $verbosityLevelMap = array( - LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, - LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, - LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, - LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, - LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, - LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, - LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, - LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG - ); - /** - * @var array - */ - private $formatLevelMap = array( - LogLevel::EMERGENCY => self::ERROR, - LogLevel::ALERT => self::ERROR, - LogLevel::CRITICAL => self::ERROR, - LogLevel::ERROR => self::ERROR, - LogLevel::WARNING => self::INFO, - LogLevel::NOTICE => self::INFO, - LogLevel::INFO => self::INFO, - LogLevel::DEBUG => self::INFO - ); - - /** - * @param OutputInterface $output - * @param array $verbosityLevelMap - * @param array $formatLevelMap - */ - public function __construct(OutputInterface $output, array $verbosityLevelMap = array(), array $formatLevelMap = array()) - { - $this->output = $output; - $this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap; - $this->formatLevelMap = $formatLevelMap + $this->formatLevelMap; - } - - /** - * {@inheritdoc} - */ - public function log($level, $message, array $context = array()) - { - if (!isset($this->verbosityLevelMap[$level])) { - throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); - } - - // Write to the error output if necessary and available - if ($this->formatLevelMap[$level] === self::ERROR && $this->output instanceof ConsoleOutputInterface) { - $output = $this->output->getErrorOutput(); - } else { - $output = $this->output; - } - - if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) { - $output->writeln(sprintf('<%1$s>[%2$s] %3$s', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context))); - } - } - - /** - * Interpolates context values into the message placeholders - * - * @author PHP Framework Interoperability Group - * @param string $message - * @param array $context - * @return string - */ - private function interpolate($message, array $context) - { - // build a replacement array with braces around the context keys - $replace = array(); - foreach ($context as $key => $val) { - if (!is_array($val) && (!is_object($val) || method_exists($val, '__toString'))) { - $replace[sprintf('{%s}', $key)] = $val; - } - } - - // interpolate replacement values into the message and return - return strtr($message, $replace); - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Question/ChoiceQuestion.php b/vendor/symfony/console/Symfony/Component/Console/Question/ChoiceQuestion.php deleted file mode 100644 index 59808e1..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Question/ChoiceQuestion.php +++ /dev/null @@ -1,138 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; - -/** - * Represents a choice question. - * - * @author Fabien Potencier - */ -class ChoiceQuestion extends Question -{ - private $choices; - private $multiselect = false; - private $prompt = ' > '; - private $errorMessage = 'Value "%s" is invalid'; - - public function __construct($question, array $choices, $default = null) - { - parent::__construct($question, $default); - - $this->choices = $choices; - $this->setValidator($this->getDefaultValidator()); - $this->setAutocompleterValues(array_keys($choices)); - } - - /** - * Returns available choices. - * - * @return array - */ - public function getChoices() - { - return $this->choices; - } - - /** - * Sets multiselect option. - * - * When multiselect is set to true, multiple choices can be answered. - * - * @param bool $multiselect - * - * @return ChoiceQuestion The current instance - */ - public function setMultiselect($multiselect) - { - $this->multiselect = $multiselect; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - /** - * Gets the prompt for choices. - * - * @return string - */ - public function getPrompt() - { - return $this->prompt; - } - - /** - * Sets the prompt for choices. - * - * @param string $prompt - * - * @return ChoiceQuestion The current instance - */ - public function setPrompt($prompt) - { - $this->prompt = $prompt; - - return $this; - } - - /** - * Sets the error message for invalid values. - * - * The error message has a string placeholder (%s) for the invalid value. - * - * @param string $errorMessage - * - * @return ChoiceQuestion The current instance - */ - public function setErrorMessage($errorMessage) - { - $this->errorMessage = $errorMessage; - $this->setValidator($this->getDefaultValidator()); - - return $this; - } - - private function getDefaultValidator() - { - $choices = $this->choices; - $errorMessage = $this->errorMessage; - $multiselect = $this->multiselect; - - return function ($selected) use ($choices, $errorMessage, $multiselect) { - // Collapse all spaces. - $selectedChoices = str_replace(' ', '', $selected); - - if ($multiselect) { - // Check for a separated comma values - if (!preg_match('/^[a-zA-Z0-9_-]+(?:,[a-zA-Z0-9_-]+)*$/', $selectedChoices, $matches)) { - throw new \InvalidArgumentException(sprintf($errorMessage, $selected)); - } - $selectedChoices = explode(',', $selectedChoices); - } else { - $selectedChoices = array($selected); - } - - $multiselectChoices = array(); - foreach ($selectedChoices as $value) { - if (empty($choices[$value])) { - throw new \InvalidArgumentException(sprintf($errorMessage, $value)); - } - array_push($multiselectChoices, $choices[$value]); - } - - if ($multiselect) { - return $multiselectChoices; - } - - return $choices[$selected]; - }; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Question/ConfirmationQuestion.php b/vendor/symfony/console/Symfony/Component/Console/Question/ConfirmationQuestion.php deleted file mode 100644 index 0438640..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Question/ConfirmationQuestion.php +++ /dev/null @@ -1,44 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; - -/** - * Represents a yes/no question. - * - * @author Fabien Potencier - */ -class ConfirmationQuestion extends Question -{ - public function __construct($question, $default = true) - { - parent::__construct($question, (bool) $default); - - $this->setNormalizer($this->getDefaultNormalizer()); - } - - private function getDefaultNormalizer() - { - $default = $this->getDefault(); - - return function ($answer) use ($default) { - if (is_bool($answer)) { - return $answer; - } - - if (false === $default) { - return $answer && 'y' === strtolower($answer[0]); - } - - return !$answer || 'y' === strtolower($answer[0]); - }; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Question/Question.php b/vendor/symfony/console/Symfony/Component/Console/Question/Question.php deleted file mode 100644 index e47bfb1..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Question/Question.php +++ /dev/null @@ -1,239 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Question; -use Doctrine\Common\Proxy\Exception\InvalidArgumentException; - -/** - * Represents a Question. - * - * @author Fabien Potencier - */ -class Question -{ - private $question; - private $attempts; - private $hidden = false; - private $hiddenFallback = true; - private $autocompleterValues; - private $validator; - private $default; - private $normalizer; - - /** - * Constructor. - * - * @param string $question The question to ask to the user - * @param mixed $default The default answer to return if the user enters nothing - */ - public function __construct($question, $default = null) - { - $this->question = $question; - $this->default = $default; - } - - /** - * Returns the question. - * - * @return string - */ - public function getQuestion() - { - return $this->question; - } - - /** - * Returns the default answer. - * - * @return mixed - */ - public function getDefault() - { - return $this->default; - } - - /** - * Returns whether the user response must be hidden. - * - * @return bool - */ - public function isHidden() - { - return $this->hidden; - } - - /** - * Sets whether the user response must be hidden or not. - * - * @param bool $hidden - * - * @return Question The current instance - * - * @throws \LogicException In case the autocompleter is also used - */ - public function setHidden($hidden) - { - if ($this->autocompleterValues) { - throw new \LogicException('A hidden question cannot use the autocompleter.'); - } - - $this->hidden = (bool) $hidden; - - return $this; - } - - /** - * In case the response can not be hidden, whether to fallback on non-hidden question or not. - * - * @return bool - */ - public function isHiddenFallback() - { - return $this->hiddenFallback; - } - - /** - * Sets whether to fallback on non-hidden question if the response can not be hidden. - * - * @param bool $fallback - * - * @return Question The current instance - */ - public function setHiddenFallback($fallback) - { - $this->hiddenFallback = (bool) $fallback; - - return $this; - } - - /** - * Gets values for the autocompleter. - * - * @return null|array|Traversable - */ - public function getAutocompleterValues() - { - return $this->autocompleterValues; - } - - /** - * Sets values for the autocompleter. - * - * @param null|array|Traversable $values - * - * @return Question The current instance - * - * @throws \InvalidArgumentException - * @throws \LogicException - */ - public function setAutocompleterValues($values) - { - if (null !== $values && !is_array($values)) { - if (!$values instanceof \Traversable || $values instanceof \Countable) { - throw new \InvalidArgumentException('Autocompleter values can be either an array, `null` or an object implementing both `Countable` and `Traversable` interfaces.'); - } - } - - if ($this->hidden) { - throw new \LogicException('A hidden question cannot use the autocompleter.'); - } - - $this->autocompleterValues = $values; - - return $this; - } - - /** - * Sets a validator for the question. - * - * @param null|callable $validator - * - * @return Question The current instance - */ - public function setValidator($validator) - { - $this->validator = $validator; - - return $this; - } - - /** - * Gets the validator for the question - * - * @return null|callable - */ - public function getValidator() - { - return $this->validator; - } - - /** - * Sets the maximum number of attempts. - * - * Null means an unlimited number of attempts. - * - * @param null|int $attempts - * - * @return Question The current instance - * - * @throws InvalidArgumentException In case the number of attempts is invalid. - */ - public function setMaxAttempts($attempts) - { - if (null !== $attempts && $attempts < 1) { - throw new \InvalidArgumentException('Maximum number of attempts must be a positive value.'); - } - - $this->attempts = $attempts; - - return $this; - } - - /** - * Gets the maximum number of attempts. - * - * Null means an unlimited number of attempts. - * - * @return null|int - */ - public function getMaxAttempts() - { - return $this->attempts; - } - - /** - * Sets a normalizer for the response. - * - * The normalizer can ba a callable (a string), a closure or a class implementing __invoke. - * - * @param string|Closure $normalizer - * - * @return Question The current instance - */ - public function setNormalizer($normalizer) - { - $this->normalizer = $normalizer; - - return $this; - } - - /** - * Gets the normalizer for the response. - * - * The normalizer can ba a callable (a string), a closure or a class implementing __invoke. - * - * @return string|Closure - */ - public function getNormalizer() - { - return $this->normalizer; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Tests/Fixtures/DummyOutput.php b/vendor/symfony/console/Symfony/Component/Console/Tests/Fixtures/DummyOutput.php deleted file mode 100644 index aef6d22..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Tests/Fixtures/DummyOutput.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Fixtures; - -use Symfony\Component\Console\Output\BufferedOutput; - -/** - * Dummy output - * - * @author Kévin Dunglas - */ -class DummyOutput extends BufferedOutput -{ - /** - * @return array - */ - public function getLogs() - { - $logs = array(); - foreach (explode("\n", trim($this->fetch())) as $message) { - preg_match('/^\[(.*)\] (.*)/', $message, $matches); - $logs[] = sprintf('%s %s', $matches[1], $matches[2]); - } - - return $logs; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php b/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php deleted file mode 100644 index ba5db29..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/ProgressBarTest.php +++ /dev/null @@ -1,418 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Helper; - -use Symfony\Component\Console\Helper\ProgressBar; -use Symfony\Component\Console\Helper\Helper; -use Symfony\Component\Console\Output\StreamOutput; - -class ProgressBarTest extends \PHPUnit_Framework_TestCase -{ - protected $lastMessagesLength; - - public function testAdvance() - { - $bar = new ProgressBar($output = $this->getOutputStream()); - $bar->start(); - $bar->advance(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0 [>---------------------------]'). - $this->generateOutput(' 1 [->--------------------------]'), - stream_get_contents($output->getStream()) - ); - } - - public function testAdvanceWithStep() - { - $bar = new ProgressBar($output = $this->getOutputStream()); - $bar->start(); - $bar->advance(5); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0 [>---------------------------]'). - $this->generateOutput(' 5 [----->----------------------]'), - stream_get_contents($output->getStream()) - ); - } - - public function testAdvanceMultipleTimes() - { - $bar = new ProgressBar($output = $this->getOutputStream()); - $bar->start(); - $bar->advance(3); - $bar->advance(2); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0 [>---------------------------]'). - $this->generateOutput(' 3 [--->------------------------]'). - $this->generateOutput(' 5 [----->----------------------]'), - stream_get_contents($output->getStream()) - ); - } - - public function testCustomizations() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 10); - $bar->setBarWidth(10); - $bar->setBarCharacter('_'); - $bar->setEmptyBarCharacter(' '); - $bar->setProgressCharacter('/'); - $bar->setFormat(' %current%/%max% [%bar%] %percent:3s%%'); - $bar->start(); - $bar->advance(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/10 [/ ] 0%'). - $this->generateOutput(' 1/10 [_/ ] 10%'), - stream_get_contents($output->getStream()) - ); - } - - public function testPercent() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 50); - $bar->start(); - $bar->display(); - $bar->advance(); - $bar->advance(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 1/50 [>---------------------------] 2%'). - $this->generateOutput(' 2/50 [=>--------------------------] 4%'), - stream_get_contents($output->getStream()) - ); - } - - public function testOverwriteWithShorterLine() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 50); - $bar->setFormat(' %current%/%max% [%bar%] %percent:3s%%'); - $bar->start(); - $bar->display(); - $bar->advance(); - - // set shorter format - $bar->setFormat(' %current%/%max% [%bar%]'); - $bar->advance(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 1/50 [>---------------------------] 2%'). - $this->generateOutput(' 2/50 [=>--------------------------] '), - stream_get_contents($output->getStream()) - ); - } - - public function testSetCurrentProgress() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 50); - $bar->start(); - $bar->display(); - $bar->advance(); - $bar->setCurrent(15); - $bar->setCurrent(25); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 1/50 [>---------------------------] 2%'). - $this->generateOutput(' 15/50 [========>-------------------] 30%'). - $this->generateOutput(' 25/50 [==============>-------------] 50%'), - stream_get_contents($output->getStream()) - ); - } - - /** - * @expectedException \LogicException - * @expectedExceptionMessage You must start the progress bar - */ - public function testSetCurrentBeforeStarting() - { - $bar = new ProgressBar($this->getOutputStream()); - $bar->setCurrent(15); - } - - /** - * @expectedException \LogicException - * @expectedExceptionMessage You can't regress the progress bar - */ - public function testRegressProgress() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 50); - $bar->start(); - $bar->setCurrent(15); - $bar->setCurrent(10); - } - - public function testRedrawFrequency() - { - $bar = $this->getMock('Symfony\Component\Console\Helper\ProgressBar', array('display'), array($output = $this->getOutputStream(), 6)); - $bar->expects($this->exactly(4))->method('display'); - - $bar->setRedrawFrequency(2); - $bar->start(); - $bar->setCurrent(1); - $bar->advance(2); - $bar->advance(2); - $bar->advance(1); - } - - public function testMultiByteSupport() - { - if (!function_exists('mb_strlen') || (false === $encoding = mb_detect_encoding('■'))) { - $this->markTestSkipped('The mbstring extension is needed for multi-byte support'); - } - - $bar = new ProgressBar($output = $this->getOutputStream()); - $bar->start(); - $bar->setBarCharacter('■'); - $bar->advance(3); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0 [>---------------------------]'). - $this->generateOutput(' 3 [■■■>------------------------]'), - stream_get_contents($output->getStream()) - ); - } - - public function testClear() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 50); - $bar->start(); - $bar->setCurrent(25); - $bar->clear(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/50 [>---------------------------] 0%'). - $this->generateOutput(' 25/50 [==============>-------------] 50%'). - $this->generateOutput(' '), - stream_get_contents($output->getStream()) - ); - } - - public function testPercentNotHundredBeforeComplete() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 200); - $bar->start(); - $bar->display(); - $bar->advance(199); - $bar->advance(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/200 [>---------------------------] 0%'). - $this->generateOutput(' 0/200 [>---------------------------] 0%'). - $this->generateOutput(' 199/200 [===========================>] 99%'). - $this->generateOutput(' 200/200 [============================] 100%'), - stream_get_contents($output->getStream()) - ); - } - - public function testNonDecoratedOutput() - { - $bar = new ProgressBar($output = $this->getOutputStream(false)); - $bar->start(); - $bar->advance(); - - rewind($output->getStream()); - $this->assertEquals('', stream_get_contents($output->getStream())); - } - - public function testParallelBars() - { - $output = $this->getOutputStream(); - $bar1 = new ProgressBar($output, 2); - $bar2 = new ProgressBar($output, 3); - $bar2->setProgressCharacter('#'); - $bar3 = new ProgressBar($output); - - $bar1->start(); - $output->write("\n"); - $bar2->start(); - $output->write("\n"); - $bar3->start(); - - for ($i = 1; $i <= 3; $i++) { - // up two lines - $output->write("\033[2A"); - if ($i <= 2) { - $bar1->advance(); - } - $output->write("\n"); - $bar2->advance(); - $output->write("\n"); - $bar3->advance(); - } - $output->write("\033[2A"); - $output->write("\n"); - $output->write("\n"); - $bar3->finish(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/2 [>---------------------------] 0%')."\n". - $this->generateOutput(' 0/3 [#---------------------------] 0%')."\n". - rtrim($this->generateOutput(' 0 [>---------------------------]')). - - "\033[2A". - $this->generateOutput(' 1/2 [==============>-------------] 50%')."\n". - $this->generateOutput(' 1/3 [=========#------------------] 33%')."\n". - rtrim($this->generateOutput(' 1 [->--------------------------]')). - - "\033[2A". - $this->generateOutput(' 2/2 [============================] 100%')."\n". - $this->generateOutput(' 2/3 [==================#---------] 66%')."\n". - rtrim($this->generateOutput(' 2 [-->-------------------------]')). - - "\033[2A". - "\n". - $this->generateOutput(' 3/3 [============================] 100%')."\n". - rtrim($this->generateOutput(' 3 [--->------------------------]')). - - "\033[2A". - "\n". - "\n". - rtrim($this->generateOutput(' 3 [============================]')), - stream_get_contents($output->getStream()) - ); - } - - public function testAddingPlaceholderFormatter() - { - ProgressBar::setPlaceholderFormatterDefinition('remaining_steps', function (ProgressBar $bar) { - return $bar->getMaxSteps() - $bar->getStep(); - }); - $bar = new ProgressBar($output = $this->getOutputStream(), 3); - $bar->setFormat(' %remaining_steps% [%bar%]'); - - $bar->start(); - $bar->advance(); - $bar->finish(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 3 [>---------------------------]'). - $this->generateOutput(' 2 [=========>------------------]'). - $this->generateOutput(' 0 [============================]'), - stream_get_contents($output->getStream()) - ); - } - - public function testMultilineFormat() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 3); - $bar->setFormat("%bar%\nfoobar"); - - $bar->start(); - $bar->advance(); - $bar->clear(); - $bar->finish(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(">---------------------------\nfoobar"). - $this->generateOutput("=========>------------------\nfoobar "). - $this->generateOutput(" \n "). - $this->generateOutput("============================\nfoobar "), - stream_get_contents($output->getStream()) - ); - } - - public function testAnsiColorsAndEmojis() - { - $bar = new ProgressBar($output = $this->getOutputStream(), 15); - ProgressBar::setPlaceholderFormatterDefinition('memory', function (ProgressBar $bar) { - static $i = 0; - $mem = 100000 * $i; - $colors = $i++ ? '41;37' : '44;37'; - - return "\033[".$colors."m ".Helper::formatMemory($mem)." \033[0m"; - }); - $bar->setFormat(" \033[44;37m %title:-37s% \033[0m\n %current%/%max% %bar% %percent:3s%%\n 🏁 %remaining:-10s% %memory:37s%"); - $bar->setBarCharacter($done = "\033[32m●\033[0m"); - $bar->setEmptyBarCharacter($empty = "\033[31m●\033[0m"); - $bar->setProgressCharacter($progress = "\033[32m➤ \033[0m"); - - $bar->setMessage('Starting the demo... fingers crossed', 'title'); - $bar->start(); - $bar->setMessage('Looks good to me...', 'title'); - $bar->advance(4); - $bar->setMessage('Thanks, bye', 'title'); - $bar->finish(); - - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput( - " \033[44;37m Starting the demo... fingers crossed \033[0m\n". - " 0/15 ".$progress.str_repeat($empty, 26)." 0%\n". - " \xf0\x9f\x8f\x81 1 sec \033[44;37m 0 B \033[0m" - ). - $this->generateOutput( - " \033[44;37m Looks good to me... \033[0m\n". - " 4/15 ".str_repeat($done, 7).$progress.str_repeat($empty, 19)." 26%\n". - " \xf0\x9f\x8f\x81 1 sec \033[41;37m 97 KiB \033[0m" - ). - $this->generateOutput( - " \033[44;37m Thanks, bye \033[0m\n". - " 15/15 ".str_repeat($done, 28)." 100%\n". - " \xf0\x9f\x8f\x81 1 sec \033[41;37m 195 KiB \033[0m" - ), - stream_get_contents($output->getStream()) - ); - } - - public function testSetFormat() - { - $bar = new ProgressBar($output = $this->getOutputStream()); - $bar->setFormat('normal'); - $bar->start(); - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0 [>---------------------------]'), - stream_get_contents($output->getStream()) - ); - - $bar = new ProgressBar($output = $this->getOutputStream(), 10); - $bar->setFormat('normal'); - $bar->start(); - rewind($output->getStream()); - $this->assertEquals( - $this->generateOutput(' 0/10 [>---------------------------] 0%'), - stream_get_contents($output->getStream()) - ); - } - - protected function getOutputStream($decorated = true) - { - return new StreamOutput(fopen('php://memory', 'r+', false), StreamOutput::VERBOSITY_NORMAL, $decorated); - } - - protected function generateOutput($expected) - { - $count = substr_count($expected, "\n"); - - return "\x0D".($count ? sprintf("\033[%dA", $count) : '').$expected; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php b/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php deleted file mode 100644 index bba2537..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/QuestionHelperTest.php +++ /dev/null @@ -1,238 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Helper; - -use Symfony\Component\Console\Helper\QuestionHelper; -use Symfony\Component\Console\Helper\HelperSet; -use Symfony\Component\Console\Helper\FormatterHelper; -use Symfony\Component\Console\Output\StreamOutput; -use Symfony\Component\Console\Question\ChoiceQuestion; -use Symfony\Component\Console\Question\ConfirmationQuestion; -use Symfony\Component\Console\Question\Question; - -class QuestionHelperTest extends \PHPUnit_Framework_TestCase -{ - public function testAskChoice() - { - $questionHelper = new QuestionHelper(); - - $helperSet = new HelperSet(array(new FormatterHelper())); - $questionHelper->setHelperSet($helperSet); - - $heroes = array('Superman', 'Batman', 'Spiderman'); - - $questionHelper->setInputStream($this->getInputStream("\n1\n 1 \nFabien\n1\nFabien\n1\n0,2\n 0 , 2 \n\n\n")); - - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes, '2'); - // first answer is an empty answer, we're supposed to receive the default value - $this->assertEquals('Spiderman', $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes); - $this->assertEquals('Batman', $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('Batman', $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes); - $question->setErrorMessage('Input "%s" is not a superhero!'); - $this->assertEquals('Batman', $questionHelper->ask($this->createInputInterfaceMock(), $output = $this->createOutputInterface(), $question)); - - rewind($output->getStream()); - $stream = stream_get_contents($output->getStream()); - $this->assertContains('Input "Fabien" is not a superhero!', $stream); - - try { - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes, '1'); - $question->setMaxAttempts(1); - $questionHelper->ask($this->createInputInterfaceMock(), $output = $this->createOutputInterface(), $question); - $this->fail(); - } catch (\InvalidArgumentException $e) { - $this->assertEquals('Value "Fabien" is invalid', $e->getMessage()); - } - - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes, null); - $question->setMultiselect(true); - - $this->assertEquals(array('Batman'), $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals(array('Superman', 'Spiderman'), $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals(array('Superman', 'Spiderman'), $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes, '0,1'); - $question->setMultiselect(true); - - $this->assertEquals(array('Superman', 'Batman'), $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $question = new ChoiceQuestion('What is your favorite superhero?', $heroes, ' 0 , 1 '); - $question->setMultiselect(true); - - $this->assertEquals(array('Superman', 'Batman'), $questionHelper->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - } - - public function testAsk() - { - $dialog = new QuestionHelper(); - - $dialog->setInputStream($this->getInputStream("\n8AM\n")); - - $question = new Question('What time is it?', '2PM'); - $this->assertEquals('2PM', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $question = new Question('What time is it?', '2PM'); - $this->assertEquals('8AM', $dialog->ask($this->createInputInterfaceMock(), $output = $this->createOutputInterface(), $question)); - - rewind($output->getStream()); - $this->assertEquals('What time is it?', stream_get_contents($output->getStream())); - } - - public function testAskWithAutocomplete() - { - if (!$this->hasSttyAvailable()) { - $this->markTestSkipped('`stty` is required to test autocomplete functionality'); - } - - // Acm - // AcsTest - // - // - // Test - // - // S - // F00oo - $inputStream = $this->getInputStream("Acm\nAc\177\177s\tTest\n\n\033[A\033[A\n\033[A\033[A\033[A\033[A\033[A\tTest\n\033[B\nS\177\177\033[B\033[B\nF00\177\177oo\t\n"); - - $dialog = new QuestionHelper(); - $dialog->setInputStream($inputStream); - $helperSet = new HelperSet(array(new FormatterHelper())); - $dialog->setHelperSet($helperSet); - - $question = new Question('Please select a bundle', 'FrameworkBundle'); - $question->setAutocompleterValues(array('AcmeDemoBundle', 'AsseticBundle', 'SecurityBundle', 'FooBundle')); - - $this->assertEquals('AcmeDemoBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('AsseticBundleTest', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('FrameworkBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('SecurityBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('FooBundleTest', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('AcmeDemoBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('AsseticBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('FooBundle', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - } - - /** - * @group tty - */ - public function testAskHiddenResponse() - { - if (defined('PHP_WINDOWS_VERSION_BUILD')) { - $this->markTestSkipped('This test is not supported on Windows'); - } - - $dialog = new QuestionHelper(); - $dialog->setInputStream($this->getInputStream("8AM\n")); - - $question = new Question('What time is it?'); - $question->setHidden(true); - - $this->assertEquals('8AM', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - } - - public function testAskConfirmation() - { - $dialog = new QuestionHelper(); - - $dialog->setInputStream($this->getInputStream("\n\n")); - $question = new ConfirmationQuestion('Do you like French fries?'); - $this->assertTrue($dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $question = new ConfirmationQuestion('Do you like French fries?', false); - $this->assertFalse($dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $dialog->setInputStream($this->getInputStream("y\nyes\n")); - $question = new ConfirmationQuestion('Do you like French fries?', false); - $this->assertTrue($dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $question = new ConfirmationQuestion('Do you like French fries?', false); - $this->assertTrue($dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $dialog->setInputStream($this->getInputStream("n\nno\n")); - $question = new ConfirmationQuestion('Do you like French fries?', true); - $this->assertFalse($dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $question = new ConfirmationQuestion('Do you like French fries?', true); - $this->assertFalse($dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - } - - public function testAskAndValidate() - { - $dialog = new QuestionHelper(); - $helperSet = new HelperSet(array(new FormatterHelper())); - $dialog->setHelperSet($helperSet); - - $error = 'This is not a color!'; - $validator = function ($color) use ($error) { - if (!in_array($color, array('white', 'black'))) { - throw new \InvalidArgumentException($error); - } - - return $color; - }; - - $question = new Question('What color was the white horse of Henry IV?', 'white'); - $question->setValidator($validator); - $question->setMaxAttempts(2); - - $dialog->setInputStream($this->getInputStream("\nblack\n")); - $this->assertEquals('white', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->assertEquals('black', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - - $dialog->setInputStream($this->getInputStream("green\nyellow\norange\n")); - try { - $this->assertEquals('white', $dialog->ask($this->createInputInterfaceMock(), $this->createOutputInterface(), $question)); - $this->fail(); - } catch (\InvalidArgumentException $e) { - $this->assertEquals($error, $e->getMessage()); - } - } - - public function testNoInteraction() - { - $dialog = new QuestionHelper(); - $question = new Question('Do you have a job?', 'not yet'); - $this->assertEquals('not yet', $dialog->ask($this->createInputInterfaceMock(false), $this->createOutputInterface(), $question)); - } - - protected function getInputStream($input) - { - $stream = fopen('php://memory', 'r+', false); - fputs($stream, $input); - rewind($stream); - - return $stream; - } - - protected function createOutputInterface() - { - return new StreamOutput(fopen('php://memory', 'r+', false)); - } - - protected function createInputInterfaceMock($interactive = true) - { - $mock = $this->getMock('Symfony\Component\Console\Input\InputInterface'); - $mock->expects($this->any()) - ->method('isInteractive') - ->will($this->returnValue($interactive)); - - return $mock; - } - - private function hasSttyAvailable() - { - exec('stty 2>&1', $output, $exitcode); - - return $exitcode === 0; - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/TableTest.php b/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/TableTest.php deleted file mode 100644 index 18a2ab6..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Tests/Helper/TableTest.php +++ /dev/null @@ -1,357 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Helper; - -use Symfony\Component\Console\Helper\Table; -use Symfony\Component\Console\Helper\TableStyle; -use Symfony\Component\Console\Helper\TableSeparator; -use Symfony\Component\Console\Output\StreamOutput; - -class TableTest extends \PHPUnit_Framework_TestCase -{ - protected $stream; - - protected function setUp() - { - $this->stream = fopen('php://memory', 'r+'); - } - - protected function tearDown() - { - fclose($this->stream); - $this->stream = null; - } - - /** - * @dataProvider testRenderProvider - */ - public function testRender($headers, $rows, $style, $expected) - { - $table = new Table($output = $this->getOutputStream()); - $table - ->setHeaders($headers) - ->setRows($rows) - ->setStyle($style) - ; - $table->render(); - - $this->assertEquals($expected, $this->getOutputContent($output)); - } - - /** - * @dataProvider testRenderProvider - */ - public function testRenderAddRows($headers, $rows, $style, $expected) - { - $table = new Table($output = $this->getOutputStream()); - $table - ->setHeaders($headers) - ->addRows($rows) - ->setStyle($style) - ; - $table->render(); - - $this->assertEquals($expected, $this->getOutputContent($output)); - } - - /** - * @dataProvider testRenderProvider - */ - public function testRenderAddRowsOneByOne($headers, $rows, $style, $expected) - { - $table = new Table($output = $this->getOutputStream()); - $table - ->setHeaders($headers) - ->setStyle($style) - ; - foreach ($rows as $row) { - $table->addRow($row); - } - $table->render(); - - $this->assertEquals($expected, $this->getOutputContent($output)); - } - - public function testRenderProvider() - { - $books = array( - array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri'), - array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens'), - array('960-425-059-0', 'The Lord of the Rings', 'J. R. R. Tolkien'), - array('80-902734-1-6', 'And Then There Were None', 'Agatha Christie'), - ); - - return array( - array( - array('ISBN', 'Title', 'Author'), - $books, - 'default', -<< array( - array('ISBN', 'Title', 'Author'), - array( - array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri'), - array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens'), - ), - 'default', -<<
array( - array('ISBN', 'Title', 'Author'), - array( - array('99921-58-10-700', 'Divine Com', 'Dante Alighieri'), - array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens'), - ), - 'default', -<<
99921-58-10-700 | Divine Com | Dante Alighieri | -| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | -+----------------------------------+----------------------+-----------------+ - -TABLE - ), - ); - } - - public function testRenderMultiByte() - { - if (!function_exists('mb_strlen')) { - $this->markTestSkipped('The "mbstring" extension is not available'); - } - - $table = new Table($output = $this->getOutputStream()); - $table - ->setHeaders(array('■■')) - ->setRows(array(array(1234))) - ->setStyle('default') - ; - $table->render(); - - $expected = -<<
assertEquals($expected, $this->getOutputContent($output)); - } - - public function testStyle() - { - $style = new TableStyle(); - $style - ->setHorizontalBorderChar('.') - ->setVerticalBorderChar('.') - ->setCrossingChar('.') - ; - - Table::setStyleDefinition('dotfull', $style); - $table = new Table($output = $this->getOutputStream()); - $table - ->setHeaders(array('Foo')) - ->setRows(array(array('Bar'))) - ->setStyle('dotfull'); - $table->render(); - - $expected = -<<
assertEquals($expected, $this->getOutputContent($output)); - } - - public function testRowSeparator() - { - $table = new Table($output = $this->getOutputStream()); - $table - ->setHeaders(array('Foo')) - ->setRows(array( - array('Bar1'), - new TableSeparator(), - array('Bar2'), - new TableSeparator(), - array('Bar3'), - )); - $table->render(); - - $expected = -<<
assertEquals($expected, $this->getOutputContent($output)); - } - - protected function getOutputStream() - { - return new StreamOutput($this->stream, StreamOutput::VERBOSITY_NORMAL, false); - } - - protected function getOutputContent(StreamOutput $output) - { - rewind($output->getStream()); - - return str_replace(PHP_EOL, "\n", stream_get_contents($output->getStream())); - } -} diff --git a/vendor/symfony/console/Symfony/Component/Console/Tests/Logger/ConsoleLoggerTest.php b/vendor/symfony/console/Symfony/Component/Console/Tests/Logger/ConsoleLoggerTest.php deleted file mode 100644 index 2b9f5c7..0000000 --- a/vendor/symfony/console/Symfony/Component/Console/Tests/Logger/ConsoleLoggerTest.php +++ /dev/null @@ -1,58 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Console\Tests\Logger; - -use Psr\Log\Test\LoggerInterfaceTest; -use Psr\Log\LogLevel; -use Symfony\Component\Console\Logger\ConsoleLogger; -use Symfony\Component\Console\Tests\Fixtures\DummyOutput; -use Symfony\Component\Console\Output\OutputInterface; - -/** - * Console logger test - * - * @author Kévin Dunglas - */ -class ConsoleLoggerTest extends LoggerInterfaceTest -{ - /** - * @var DummyOutput - */ - protected $output; - - /** - * {@inheritdoc} - */ - public function getLogger() - { - $this->output = new DummyOutput(OutputInterface::VERBOSITY_VERBOSE); - - return new ConsoleLogger($this->output, array( - LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, - LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, - LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, - LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, - LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, - LogLevel::NOTICE => OutputInterface::VERBOSITY_NORMAL, - LogLevel::INFO => OutputInterface::VERBOSITY_NORMAL, - LogLevel::DEBUG => OutputInterface::VERBOSITY_NORMAL - )); - } - - /** - * {@inheritdoc} - */ - public function getLogs() - { - return $this->output->getLogs(); - } -} diff --git a/vendor/symfony/debug/Symfony/Component/Debug/Exception/OutOfMemoryException.php b/vendor/symfony/debug/Symfony/Component/Debug/Exception/OutOfMemoryException.php deleted file mode 100644 index fec1979..0000000 --- a/vendor/symfony/debug/Symfony/Component/Debug/Exception/OutOfMemoryException.php +++ /dev/null @@ -1,21 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -/** - * Out of memory exception. - * - * @author Nicolas Grekas - */ -class OutOfMemoryException extends FatalErrorException -{ -} diff --git a/vendor/symfony/debug/Symfony/Component/Debug/Exception/UndefinedMethodException.php b/vendor/symfony/debug/Symfony/Component/Debug/Exception/UndefinedMethodException.php deleted file mode 100644 index 350dc31..0000000 --- a/vendor/symfony/debug/Symfony/Component/Debug/Exception/UndefinedMethodException.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Exception; - -/** - * Undefined Method Exception. - * - * @author Grégoire Pineau - */ -class UndefinedMethodException extends FatalErrorException -{ - public function __construct($message, \ErrorException $previous) - { - parent::__construct( - $message, - $previous->getCode(), - $previous->getSeverity(), - $previous->getFile(), - $previous->getLine(), - $previous->getPrevious() - ); - $this->setTrace($previous->getTrace()); - } -} diff --git a/vendor/symfony/debug/Symfony/Component/Debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php b/vendor/symfony/debug/Symfony/Component/Debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php deleted file mode 100644 index 7cc55c6..0000000 --- a/vendor/symfony/debug/Symfony/Component/Debug/FatalErrorHandler/UndefinedMethodFatalErrorHandler.php +++ /dev/null @@ -1,54 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\FatalErrorHandler; - -use Symfony\Component\Debug\Exception\FatalErrorException; -use Symfony\Component\Debug\Exception\UndefinedMethodException; - -/** - * ErrorHandler for undefined methods. - * - * @author Grégoire Pineau - */ -class UndefinedMethodFatalErrorHandler implements FatalErrorHandlerInterface -{ - /** - * {@inheritdoc} - */ - public function handleError(array $error, FatalErrorException $exception) - { - preg_match('/^Call to undefined method (.*)::(.*)\(\)$/', $error['message'], $matches); - if (!$matches) { - return; - } - - $className = $matches[1]; - $methodName = $matches[2]; - - $message = sprintf('Attempted to call method "%s" on class "%s" in %s line %d.', $methodName, $className, $error['file'], $error['line']); - - $candidates = array(); - foreach (get_class_methods($className) as $definedMethodName) { - $lev = levenshtein($methodName, $definedMethodName); - if ($lev <= strlen($methodName) / 3 || false !== strpos($definedMethodName, $methodName)) { - $candidates[] = $definedMethodName; - } - } - - if ($candidates) { - sort($candidates); - $message .= sprintf(' Did you mean to call: "%s"?', implode('", "', $candidates)); - } - - return new UndefinedMethodException($message, $exception); - } -} diff --git a/vendor/symfony/debug/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php b/vendor/symfony/debug/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php deleted file mode 100644 index 8e1893c..0000000 --- a/vendor/symfony/debug/Symfony/Component/Debug/Tests/FatalErrorHandler/UndefinedMethodFatalErrorHandlerTest.php +++ /dev/null @@ -1,66 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Debug\Tests\FatalErrorHandler; - -use Symfony\Component\Debug\Exception\FatalErrorException; -use Symfony\Component\Debug\FatalErrorHandler\UndefinedMethodFatalErrorHandler; - -class UndefinedMethodFatalErrorHandlerTest extends \PHPUnit_Framework_TestCase -{ - /** - * @dataProvider provideUndefinedMethodData - */ - public function testUndefinedMethod($error, $translatedMessage) - { - $handler = new UndefinedMethodFatalErrorHandler(); - $exception = $handler->handleError($error, new FatalErrorException('', 0, $error['type'], $error['file'], $error['line'])); - - $this->assertInstanceof('Symfony\Component\Debug\Exception\UndefinedMethodException', $exception); - $this->assertSame($translatedMessage, $exception->getMessage()); - $this->assertSame($error['type'], $exception->getSeverity()); - $this->assertSame($error['file'], $exception->getFile()); - $this->assertSame($error['line'], $exception->getLine()); - } - - public function provideUndefinedMethodData() - { - return array( - array( - array( - 'type' => 1, - 'line' => 12, - 'file' => 'foo.php', - 'message' => 'Call to undefined method SplObjectStorage::what()', - ), - 'Attempted to call method "what" on class "SplObjectStorage" in foo.php line 12.', - ), - array( - array( - 'type' => 1, - 'line' => 12, - 'file' => 'foo.php', - 'message' => 'Call to undefined method SplObjectStorage::walid()', - ), - 'Attempted to call method "walid" on class "SplObjectStorage" in foo.php line 12. Did you mean to call: "valid"?', - ), - array( - array( - 'type' => 1, - 'line' => 12, - 'file' => 'foo.php', - 'message' => 'Call to undefined method SplObjectStorage::offsetFet()', - ), - 'Attempted to call method "offsetFet" on class "SplObjectStorage" in foo.php line 12. Did you mean to call: "offsetGet", "offsetSet", "offsetUnset"?', - ), - ); - } -} diff --git a/vendor/symfony/debug/Symfony/Component/Debug/Tests/Fixtures/casemismatch.php b/vendor/symfony/debug/Symfony/Component/Debug/Tests/Fixtures/casemismatch.php deleted file mode 100644 index 691d660..0000000 --- a/vendor/symfony/debug/Symfony/Component/Debug/Tests/Fixtures/casemismatch.php +++ /dev/null @@ -1,7 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\KernelEvents; -use Symfony\Component\HttpKernel\Event\GetResponseEvent; - -/** - * Adds configured formats to each request - * - * @author Gildas Quemener - */ -class AddRequestFormatsListener implements EventSubscriberInterface -{ - /** - * @var array - */ - protected $formats; - - /** - * @param array $formats - */ - public function __construct(array $formats) - { - $this->formats = $formats; - } - - /** - * Adds request formats - * - * @param GetResponseEvent $event - */ - public function onKernelRequest(GetResponseEvent $event) - { - foreach ($this->formats as $format => $mimeTypes) { - $event->getRequest()->setFormat($format, $mimeTypes); - } - } - - /** - * {@inheritdoc} - */ - public static function getSubscribedEvents() - { - return array(KernelEvents::REQUEST => 'onKernelRequest'); - } -} diff --git a/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php b/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php deleted file mode 100644 index f46ef71..0000000 --- a/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/DebugHandlersListener.php +++ /dev/null @@ -1,50 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\EventListener; - -use Symfony\Component\Debug\ExceptionHandler; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\HttpKernel\KernelEvents; - -/** - * Configures the ExceptionHandler. - * - * @author Nicolas Grekas - */ -class DebugHandlersListener implements EventSubscriberInterface -{ - private $exceptionHandler; - - public function __construct($exceptionHandler) - { - if (is_callable($exceptionHandler)) { - $this->exceptionHandler = $exceptionHandler; - } - } - - public function configure() - { - if ($this->exceptionHandler) { - $mainHandler = set_exception_handler('var_dump'); - restore_exception_handler(); - if ($mainHandler instanceof ExceptionHandler) { - $mainHandler->setHandler($this->exceptionHandler); - } - $this->exceptionHandler = null; - } - } - - public static function getSubscribedEvents() - { - return array(KernelEvents::REQUEST => array('configure', 2048)); - } -} diff --git a/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/UnprocessableEntityHttpException.php b/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/UnprocessableEntityHttpException.php deleted file mode 100644 index c51da53..0000000 --- a/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Exception/UnprocessableEntityHttpException.php +++ /dev/null @@ -1,32 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Exception; - -/** - * UnprocessableEntityHttpException. - * - * @author Steve Hutchins - */ -class UnprocessableEntityHttpException extends HttpException -{ - /** - * Constructor. - * - * @param string $message The internal exception message - * @param \Exception $previous The previous exception - * @param int $code The internal exception code - */ - public function __construct($message = null, \Exception $previous = null, $code = 0) - { - parent::__construct(422, $message, $previous, array(), $code); - } -} diff --git a/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php b/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php deleted file mode 100644 index 26bdf70..0000000 --- a/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/EventListener/AddRequestFormatsListenerTest.php +++ /dev/null @@ -1,83 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\HttpKernel\Tests\EventListener; - -use Symfony\Component\HttpKernel\EventListener\AddRequestFormatsListener; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\KernelEvents; - -/** - * Test AddRequestFormatsListener class - * - * @author Gildas Quemener - */ -class AddRequestFormatsListenerTest extends \PHPUnit_Framework_TestCase -{ - /** - * @var AddRequestFormatsListener - */ - private $listener; - - protected function setUp() - { - $this->listener = new AddRequestFormatsListener(array('csv' => array('text/csv', 'text/plain'))); - } - - protected function tearDown() - { - $this->listener = null; - } - - public function testIsAnEventSubscriber() - { - $this->assertInstanceOf('Symfony\Component\EventDispatcher\EventSubscriberInterface', $this->listener); - } - - public function testRegisteredEvent() - { - $this->assertEquals( - array(KernelEvents::REQUEST => 'onKernelRequest'), - AddRequestFormatsListener::getSubscribedEvents() - ); - } - - public function testSetAdditionalFormats() - { - $request = $this->getRequestMock(); - $event = $this->getGetResponseEventMock($request); - - $request->expects($this->once()) - ->method('setFormat') - ->with('csv', array('text/csv', 'text/plain')); - - $this->listener->onKernelRequest($event); - } - - protected function getRequestMock() - { - return $this->getMock('Symfony\Component\HttpFoundation\Request'); - } - - protected function getGetResponseEventMock(Request $request) - { - $event = $this - ->getMockBuilder('Symfony\Component\HttpKernel\Event\GetResponseEvent') - ->disableOriginalConstructor() - ->getMock(); - - $event->expects($this->any()) - ->method('getRequest') - ->will($this->returnValue($request)); - - return $event; - } -} diff --git a/vendor/symfony/security-core/Symfony/Component/Security/Core/Encoder/EncoderAwareInterface.php b/vendor/symfony/security-core/Symfony/Component/Security/Core/Encoder/EncoderAwareInterface.php deleted file mode 100644 index 22ae820..0000000 --- a/vendor/symfony/security-core/Symfony/Component/Security/Core/Encoder/EncoderAwareInterface.php +++ /dev/null @@ -1,28 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Security\Core\Encoder; - -/** - * @author Christophe Coevoet - */ -interface EncoderAwareInterface -{ - /** - * Gets the name of the encoder used to encode the password. - * - * If the method returns null, the standard way to retrieve the encoder - * will be used instead. - * - * @return string - */ - public function getEncoderName(); -} diff --git a/vendor/symfony/translation/Symfony/Component/Translation/Tests/Dumper/FileDumperTest.php b/vendor/symfony/translation/Symfony/Component/Translation/Tests/Dumper/FileDumperTest.php deleted file mode 100644 index 9682089..0000000 --- a/vendor/symfony/translation/Symfony/Component/Translation/Tests/Dumper/FileDumperTest.php +++ /dev/null @@ -1,70 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Translation\Tests\Dumper; - -use Symfony\Component\Translation\MessageCatalogue; -use Symfony\Component\Translation\Dumper\FileDumper; - -class FileDumperTest extends \PHPUnit_Framework_TestCase -{ - public function testDumpBackupsFileIfExisting() - { - $tempDir = sys_get_temp_dir(); - $file = $tempDir.'/messages.en.concrete'; - $backupFile = $file.'~'; - - @touch($file); - - $catalogue = new MessageCatalogue('en'); - $catalogue->add(array('foo' => 'bar')); - - $dumper = new ConcreteFileDumper(); - $dumper->dump($catalogue, array('path' => $tempDir)); - - $this->assertTrue(file_exists($backupFile)); - - @unlink($file); - @unlink($backupFile); - } - - public function testDumpCreatesNestedDirectoriesAndFile() - { - $tempDir = sys_get_temp_dir(); - $translationsDir = $tempDir.'/test/translations'; - $file = $translationsDir.'/messages.en.concrete'; - - $catalogue = new MessageCatalogue('en'); - $catalogue->add(array('foo' => 'bar')); - - $dumper = new ConcreteFileDumper(); - $dumper->setRelativePathTemplate('test/translations/%domain%.%locale%.%extension%'); - $dumper->dump($catalogue, array('path' => $tempDir)); - - $this->assertTrue(file_exists($file)); - - @unlink($file); - @rmdir($translationsDir); - } -} - -class ConcreteFileDumper extends FileDumper -{ - protected function format(MessageCatalogue $messages, $domain) - { - return ''; - } - - protected function getExtension() - { - return 'concrete'; - } -}