From 3b945fe250e4af8ff6e121796ba28c9c22b16f04 Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole Date: Tue, 18 Nov 2014 11:26:57 +0000 Subject: [PATCH] Issue #2366043 by dawehner: Upgrade to Symfony 2.6 --- composer.json | 21 +- composer.lock | 250 +-- .../lib/Drupal/Core/Routing/CompiledRoute.php | 26 + core/vendor/composer/autoload_namespaces.php | 1 - core/vendor/composer/installed.json | 1778 ++++++++--------- core/vendor/egulias/email-validator/README.md | 15 +- .../egulias/email-validator/composer.json | 2 +- .../egulias/email-validator/composer.lock | 169 +- .../src/Egulias/EmailValidator/EmailLexer.php | 65 +- .../Egulias/EmailValidator/EmailParser.php | 11 + .../Egulias/EmailValidator/EmailValidator.php | 13 +- .../EmailValidator/Parser/DomainPart.php | 13 +- .../EmailValidator/Parser/LocalPart.php | 40 +- .../Egulias/EmailValidator/Parser/Parser.php | 6 +- .../Tests/EmailValidator/EmailLexerTest.php | 14 +- .../EmailValidator/EmailValidatorTest.php | 49 +- core/vendor/guzzlehttp/ringphp/CHANGELOG.md | 22 + core/vendor/guzzlehttp/ringphp/README.rst | 46 +- core/vendor/guzzlehttp/ringphp/docs/index.rst | 58 +- core/vendor/guzzlehttp/ringphp/docs/spec.rst | 2 +- .../ringphp/src/Client/CurlFactory.php | 31 +- .../ringphp/src/Client/StreamHandler.php | 10 +- core/vendor/guzzlehttp/ringphp/src/Core.php | 50 +- .../ringphp/src/Future/BaseFutureTrait.php | 4 +- .../ringphp/tests/Client/CurlFactoryTest.php | 80 +- .../tests/Client/StreamHandlerTest.php | 14 + .../guzzlehttp/ringphp/tests/CoreTest.php | 29 + .../sebastian/environment/composer.json | 2 +- .../sebastian/environment/src/Console.php | 24 + .../environment/tests/ConsoleTest.php | 10 +- .../ClassLoader/ApcUniversalClassLoader.php | 4 +- .../Component/ClassLoader/ClassLoader.php | 2 +- .../ClassLoader/ClassMapGenerator.php | 2 +- .../Symfony/Component/ClassLoader/README.md | 48 +- .../Tests/ClassMapGeneratorTest.php | 30 +- .../ClassLoader/UniversalClassLoader.php | 6 +- .../Component/ClassLoader/composer.json | 2 +- .../CssSelector/Node/Specificity.php | 24 + .../Component/CssSelector/Parser/Token.php | 10 +- .../Symfony/Component/CssSelector/README.md | 16 +- .../Tests/Node/SpecificityTest.php | 22 + .../Extension/AttributeMatchingExtension.php | 14 +- .../XPath/Extension/FunctionExtension.php | 10 +- .../XPath/Extension/HtmlExtension.php | 12 +- .../XPath/Extension/NodeExtension.php | 20 +- .../XPath/Extension/PseudoClassExtension.php | 14 +- .../CssSelector/XPath/Translator.php | 10 +- .../Component/CssSelector/composer.json | 2 +- .../Symfony/Component/Debug/CHANGELOG.md | 7 + .../debug/Symfony/Component/Debug/Debug.php | 14 +- .../Component/Debug/DebugClassLoader.php | 3 +- .../Symfony/Component/Debug/ErrorHandler.php | 707 +++++-- .../Debug/Exception/FlattenException.php | 32 +- .../Component/Debug/ExceptionHandler.php | 111 +- .../ClassNotFoundFatalErrorHandler.php | 30 +- .../UndefinedFunctionFatalErrorHandler.php | 25 +- .../UndefinedMethodFatalErrorHandler.php | 10 +- .../debug/Symfony/Component/Debug/README.md | 27 +- .../Component/Debug/Resources/ext/README.rst | 72 + .../Component/Debug/Resources/ext/config.m4 | 63 + .../Component/Debug/Resources/ext/config.w32 | 13 + .../Debug/Resources/ext/php_symfony_debug.h | 55 + .../Debug/Resources/ext/symfony_debug.c | 224 +++ .../Debug/Resources/ext/tests/001.phpt | 151 ++ .../Debug/Tests/DebugClassLoaderTest.php | 4 +- .../Debug/Tests/ErrorHandlerTest.php | 336 +++- .../Tests/Exception/FlattenExceptionTest.php | 16 +- .../Debug/Tests/ExceptionHandlerTest.php | 58 +- .../ClassNotFoundFatalErrorHandlerTest.php | 10 +- ...UndefinedFunctionFatalErrorHandlerTest.php | 8 +- .../UndefinedMethodFatalErrorHandlerTest.php | 6 +- .../Symfony/Component/Debug/composer.json | 5 +- .../DependencyInjection/CHANGELOG.md | 5 + .../Compiler/AnalyzeServiceReferencesPass.php | 5 +- .../Compiler/CheckCircularReferencesPass.php | 4 +- .../Compiler/CheckDefinitionValidityPass.php | 22 +- .../Compiler/InlineServiceDefinitionsPass.php | 7 +- .../ResolveDefinitionTemplatesPass.php | 3 + .../ResolveReferencesToAliasesPass.php | 6 + .../DependencyInjection/Container.php | 25 +- .../DependencyInjection/ContainerBuilder.php | 31 +- .../ContainerInterface.php | 8 +- .../DependencyInjection/Definition.php | 35 + .../DefinitionDecorator.php | 10 + .../Dumper/GraphvizDumper.php | 4 +- .../DependencyInjection/Dumper/PhpDumper.php | 152 +- .../DependencyInjection/Dumper/XmlDumper.php | 11 + .../DependencyInjection/Dumper/YamlDumper.php | 34 +- .../ExpressionLanguage.php | 23 +- .../ExpressionLanguageProvider.php | 43 + .../Loader/ClosureLoader.php | 16 +- .../DependencyInjection/Loader/FileLoader.php | 4 +- .../Loader/IniFileLoader.php | 20 +- .../Loader/PhpFileLoader.php | 16 +- .../Loader/XmlFileLoader.php | 31 +- .../Loader/YamlFileLoader.php | 33 +- .../schema/dic/services/services-1.0.xsd | 5 +- .../Component/DependencyInjection/README.md | 73 +- .../CheckDefinitionValidityPassTest.php | 11 + .../ResolveReferencesToAliasesPassTest.php | 11 + .../Tests/ContainerBuilderTest.php | 27 +- .../Tests/ContainerTest.php | 242 ++- .../Tests/DefinitionDecoratorTest.php | 1 + .../Tests/DefinitionTest.php | 15 + .../Tests/Dumper/GraphvizDumperTest.php | 4 +- .../Tests/Dumper/PhpDumperTest.php | 8 + .../Tests/Fixtures/containers/container19.php | 22 + .../Tests/Fixtures/containers/container8.php | 6 +- .../Tests/Fixtures/containers/container9.php | 15 + .../Tests/Fixtures/graphviz/services9.dot | 3 + .../Tests/Fixtures/php/services1.php | 6 +- .../Tests/Fixtures/php/services10.php | 35 +- .../Tests/Fixtures/php/services19.php | 64 + .../Tests/Fixtures/php/services8.php | 24 +- .../Tests/Fixtures/php/services9.php | 64 +- .../Tests/Fixtures/php/services9_compiled.php | 72 +- .../Tests/Fixtures/xml/services6.xml | 9 + .../Tests/Fixtures/xml/services9.xml | 10 + .../Tests/Fixtures/yaml/services14.yml | 3 + .../Tests/Fixtures/yaml/services6.yml | 3 + .../Tests/Fixtures/yaml/services9.yml | 11 + .../RealServiceInstantiatorTest.php | 6 +- .../LazyProxy/PhpDumper/NullDumperTest.php | 2 +- .../Tests/Loader/IniFileLoaderTest.php | 2 +- .../Tests/Loader/XmlFileLoaderTest.php | 3 + .../Tests/Loader/YamlFileLoaderTest.php | 14 + .../DependencyInjection/composer.json | 2 +- .../ContainerAwareEventDispatcher.php | 27 +- .../Debug/TraceableEventDispatcher.php | 12 +- .../EventDispatcherInterface.php | 4 +- .../Component/EventDispatcher/README.md | 16 +- .../ContainerAwareEventDispatcherTest.php | 2 - .../RegisterListenersPassTest.php | 10 +- .../Tests/EventDispatcherTest.php | 2 +- .../Component/EventDispatcher/composer.json | 5 +- .../HttpFoundation/BinaryFileResponse.php | 19 + .../Component/HttpFoundation/CHANGELOG.md | 11 + .../HttpFoundation/File/UploadedFile.php | 10 +- .../Component/HttpFoundation/FileBag.php | 8 +- .../Component/HttpFoundation/ParameterBag.php | 14 + .../Component/HttpFoundation/README.md | 32 +- .../HttpFoundation/RedirectResponse.php | 2 +- .../Component/HttpFoundation/Request.php | 93 +- .../HttpFoundation/RequestMatcher.php | 26 +- .../stubs/SessionHandlerInterface.php | 12 + .../Component/HttpFoundation/Response.php | 4 +- .../HttpFoundation/ResponseHeaderBag.php | 16 +- .../Storage/Handler/MongoDbSessionHandler.php | 29 +- .../Storage/Handler/PdoSessionHandler.php | 628 +++++- .../Session/Storage/NativeSessionStorage.php | 18 +- .../Storage/SessionStorageInterface.php | 8 + .../HttpFoundation/StreamedResponse.php | 10 - .../Tests/ApacheRequestTest.php | 4 +- .../Tests/BinaryFileResponseTest.php | 26 +- .../HttpFoundation/Tests/HeaderBagTest.php | 4 +- .../HttpFoundation/Tests/ParameterBagTest.php | 17 +- .../Tests/RequestMatcherTest.php | 22 +- .../HttpFoundation/Tests/RequestTest.php | 62 +- .../Tests/ResponseHeaderBagTest.php | 9 + .../HttpFoundation/Tests/ResponseTest.php | 20 +- .../Handler/MemcachedSessionHandlerTest.php | 4 + .../Handler/MongoDbSessionHandlerTest.php | 71 +- .../Storage/Handler/PdoSessionHandlerTest.php | 330 ++- .../Tests/StreamedResponseTest.php | 11 +- .../Component/HttpFoundation/composer.json | 2 +- .../Component/HttpKernel/Bundle/Bundle.php | 21 +- .../Symfony/Component/HttpKernel/CHANGELOG.md | 6 + .../HttpKernel/Config/FileLocator.php | 2 +- .../Controller/ControllerResolver.php | 16 +- .../DataCollector/ConfigDataCollector.php | 30 +- .../DataCollector/DataCollector.php | 2 +- .../DataCollector/DumpDataCollector.php | 233 +++ .../DataCollector/EventDataCollector.php | 2 +- .../DataCollector/LoggerDataCollector.php | 13 +- .../DataCollector/MemoryDataCollector.php | 2 +- .../DataCollector/RequestDataCollector.php | 50 +- .../DataCollector/RouterDataCollector.php | 4 +- .../DataCollector/TimeDataCollector.php | 4 +- .../DataCollector/Util/ValueExporter.php | 4 + .../EventListener/DebugHandlersListener.php | 99 +- .../HttpKernel/EventListener/DumpListener.php | 61 + .../EventListener/ErrorsLoggerListener.php | 2 + .../HttpKernel/EventListener/EsiListener.php | 41 +- .../EventListener/SaveSessionListener.php | 67 + .../EventListener/SurrogateListener.php | 58 + .../EventListener/TranslatorListener.php | 69 + .../AbstractSurrogateFragmentRenderer.php | 95 + .../Fragment/EsiFragmentRenderer.php | 74 +- .../Fragment/SsiFragmentRenderer.php | 28 + .../Component/HttpKernel/HttpCache/Esi.php | 51 +- .../HttpCache/EsiResponseCacheStrategy.php | 60 +- .../EsiResponseCacheStrategyInterface.php | 23 +- .../HttpKernel/HttpCache/HttpCache.php | 66 +- .../HttpCache/ResponseCacheStrategy.php | 85 + .../ResponseCacheStrategyInterface.php | 41 + .../Component/HttpKernel/HttpCache/Ssi.php | 195 ++ .../HttpCache/SurrogateInterface.php | 103 + .../Component/HttpKernel/HttpKernel.php | 2 +- .../Symfony/Component/HttpKernel/Kernel.php | 30 +- .../Component/HttpKernel/KernelInterface.php | 2 + .../Profiler/BaseMemcacheProfilerStorage.php | 24 +- .../Profiler/FileProfilerStorage.php | 22 +- .../Profiler/PdoProfilerStorage.php | 14 +- .../Profiler/RedisProfilerStorage.php | 22 +- .../Symfony/Component/HttpKernel/README.md | 80 +- .../Controller/ControllerResolverTest.php | 29 +- .../DataCollector/DumpDataCollectorTest.php | 70 + .../DataCollector/LoggerDataCollectorTest.php | 15 +- .../DataCollector/Util/ValueExporterTest.php | 43 + .../MergeExtensionConfigurationPassTest.php | 5 +- .../DebugHandlersListenerTest.php | 106 + .../Tests/EventListener/DumpListenerTest.php | 98 + .../Tests/EventListener/EsiListenerTest.php | 8 +- .../EventListener/ProfilerListenerTest.php | 2 +- .../EventListener/TestSessionListenerTest.php | 2 +- .../EventListener/TranslatorListenerTest.php | 117 ++ .../HttpKernel/Tests/HttpCache/EsiTest.php | 22 +- .../Tests/HttpCache/HttpCacheTest.php | 48 +- .../HttpKernel/Tests/HttpCache/SsiTest.php | 214 ++ .../HttpCache/TestMultipleHttpKernel.php | 4 +- .../Profiler/AbstractProfilerStorageTest.php | 2 +- .../Component/HttpKernel/composer.json | 11 +- .../Symfony/Component/Process/.gitignore | 3 - .../Symfony/Component/Process/CHANGELOG.md | 40 - .../Exception/InvalidArgumentException.php | 21 - .../Process/Exception/LogicException.php | 21 - .../Exception/ProcessFailedException.php | 53 - .../Exception/ProcessTimedOutException.php | 69 - .../Process/Exception/RuntimeException.php | 21 - .../Component/Process/ExecutableFinder.php | 89 - .../process/Symfony/Component/Process/LICENSE | 19 - .../Component/Process/PhpExecutableFinder.php | 86 - .../Symfony/Component/Process/PhpProcess.php | 73 - .../Symfony/Component/Process/Process.php | 1509 -------------- .../Component/Process/ProcessBuilder.php | 287 --- .../Component/Process/ProcessPipes.php | 382 ---- .../Component/Process/ProcessUtils.php | 108 - .../Symfony/Component/Process/README.md | 47 - .../Process/Tests/AbstractProcessTest.php | 1104 ---------- .../Process/Tests/ExecutableFinderTest.php | 147 -- .../Process/Tests/NonStopableProcess.php | 37 - .../Process/Tests/PhpExecutableFinderTest.php | 97 - .../Process/Tests/PhpProcessTest.php | 29 - .../PipeStdinInStdoutStdErrStreamSelect.php | 63 - .../Process/Tests/ProcessBuilderTest.php | 225 --- .../Tests/ProcessFailedExceptionTest.php | 136 -- .../Process/Tests/ProcessUtilsTest.php | 48 - .../Tests/SigchildDisabledProcessTest.php | 263 --- .../Tests/SigchildEnabledProcessTest.php | 148 -- .../Process/Tests/SignalListener.php | 16 - .../Process/Tests/SimpleProcessTest.php | 222 -- .../Symfony/Component/Process/composer.json | 31 - .../Component/Process/phpunit.xml.dist | 23 - .../Symfony/Component/Routing/CHANGELOG.md | 24 +- .../Component/Routing/CompiledRoute.php | 35 +- .../Generator/Dumper/PhpGeneratorDumper.php | 2 +- .../Routing/Generator/UrlGenerator.php | 4 +- .../Routing/Loader/AnnotationClassLoader.php | 14 +- .../Routing/Loader/PhpFileLoader.php | 18 +- .../Matcher/Dumper/ApacheMatcherDumper.php | 8 +- .../Matcher/Dumper/PhpMatcherDumper.php | 15 +- .../Routing/Matcher/TraceableUrlMatcher.php | 8 +- .../Component/Routing/Matcher/UrlMatcher.php | 21 +- .../Symfony/Component/Routing/README.md | 26 +- .../Component/Routing/RequestContext.php | 97 +- .../Symfony/Component/Routing/Route.php | 36 +- .../Component/Routing/RouteCompiler.php | 4 - .../Symfony/Component/Routing/Router.php | 52 +- .../Tests/Fixtures/RedirectableUrlMatcher.php | 4 +- .../Routing/Tests/Fixtures/validresource.php | 18 + .../Fixtures/with_define_path_variable.php | 5 + .../Dumper/PhpGeneratorDumperTest.php | 4 +- .../Tests/Generator/UrlGeneratorTest.php | 2 +- .../Loader/AnnotationClassLoaderTest.php | 14 +- .../Tests/Loader/PhpFileLoaderTest.php | 34 + .../Routing/Tests/RequestContextTest.php | 58 + .../Component/Routing/Tests/RouteTest.php | 39 +- .../Symfony/Component/Routing/composer.json | 2 +- .../Symfony/Component/Serializer/CHANGELOG.md | 6 + .../Serializer/Encoder/ChainDecoder.php | 1 + .../Serializer/Encoder/ChainEncoder.php | 1 + .../Serializer/Encoder/DecoderInterface.php | 8 +- .../Serializer/Encoder/EncoderInterface.php | 10 +- .../Serializer/Encoder/JsonDecode.php | 8 +- .../Serializer/Encoder/JsonEncode.php | 5 +- .../Serializer/Encoder/JsonEncoder.php | 4 +- .../Encoder/NormalizationAwareInterface.php | 2 +- .../Encoder/SerializerAwareEncoder.php | 2 +- .../Serializer/Encoder/XmlEncoder.php | 43 +- .../Exception/CircularReferenceException.php} | 8 +- .../Normalizer/DenormalizableInterface.php | 12 +- .../Normalizer/DenormalizerInterface.php | 10 +- .../Normalizer/GetSetMethodNormalizer.php | 72 +- .../Normalizer/NormalizableInterface.php | 12 +- .../Normalizer/NormalizerInterface.php | 10 +- .../Normalizer/PropertyNormalizer.php | 218 ++ .../Normalizer/SerializerAwareNormalizer.php | 2 +- .../Component/Serializer/Serializer.php | 45 +- .../Serializer/SerializerAwareInterface.php | 4 +- .../Serializer/SerializerInterface.php | 4 +- .../Tests/Encoder/XmlEncoderTest.php | 86 + .../Fixtures/CircularReferenceDummy.php} | 13 +- .../Tests/Fixtures/SiblingHolder.php | 56 + .../Normalizer/GetSetMethodNormalizerTest.php | 48 +- .../Normalizer/PropertyNormalizerTest.php | 247 +++ .../Component/Serializer/composer.json | 2 +- .../Symfony/Component/Validator/CHANGELOG.md | 15 + .../Component/Validator/Constraint.php | 110 +- .../Validator/ConstraintValidator.php | 13 +- .../Validator/ConstraintViolation.php | 63 +- .../AbstractComparisonValidator.php | 15 + .../Component/Validator/Constraints/All.php | 32 +- .../Validator/Constraints/AllValidator.php | 5 +- .../Validator/Constraints/CardScheme.php | 9 + .../Constraints/CardSchemeValidator.php | 2 + .../Validator/Constraints/Choice.php | 14 +- .../Validator/Constraints/ChoiceValidator.php | 4 + .../Validator/Constraints/Collection.php | 38 +- .../Constraints/CollectionValidator.php | 7 +- .../Validator/Constraints/Composite.php | 152 ++ .../Component/Validator/Constraints/Count.php | 8 + .../Validator/Constraints/CountValidator.php | 2 + .../Component/Validator/Constraints/Date.php | 8 + .../Validator/Constraints/DateTime.php | 10 + .../Constraints/DateTimeValidator.php | 3 + .../Validator/Constraints/DateValidator.php | 2 + .../Component/Validator/Constraints/Email.php | 12 +- .../Validator/Constraints/EmailValidator.php | 4 + .../Validator/Constraints/Existence.php | 9 +- .../Constraints/ExpressionValidator.php | 4 - .../Component/Validator/Constraints/File.php | 59 +- .../Validator/Constraints/FileValidator.php | 125 +- .../Component/Validator/Constraints/Iban.php | 15 + .../Validator/Constraints/IbanValidator.php | 5 + .../Component/Validator/Constraints/Image.php | 46 +- .../Validator/Constraints/ImageValidator.php | 12 +- .../Component/Validator/Constraints/Isbn.php | 15 + .../Validator/Constraints/IsbnValidator.php | 58 +- .../Component/Validator/Constraints/Issn.php | 17 + .../Validator/Constraints/IssnValidator.php | 7 + .../Validator/Constraints/Length.php | 8 + .../Validator/Constraints/LengthValidator.php | 2 + .../Component/Validator/Constraints/Luhn.php | 9 + .../Validator/Constraints/LuhnValidator.php | 2 + .../Component/Validator/Constraints/Range.php | 10 + .../Validator/Constraints/RangeValidator.php | 30 +- .../Component/Validator/Constraints/Regex.php | 63 +- .../Component/Validator/Constraints/Time.php | 8 + .../Validator/Constraints/TimeValidator.php | 2 + .../Component/Validator/Constraints/Uuid.php | 17 + .../Validator/Constraints/UuidValidator.php | 239 ++- .../Validator/Context/ExecutionContext.php | 22 +- .../Context/ExecutionContextInterface.php | 11 + .../Validator/Mapping/ClassMetadata.php | 72 +- .../Factory/LazyLoadingMetadataFactory.php | 20 +- .../Validator/Mapping/GenericMetadata.php | 11 +- .../Mapping/Loader/XmlFileLoader.php | 4 +- .../Validator/Mapping/MetadataInterface.php | 7 + .../Symfony/Component/Validator/README.md | 112 +- .../Validator/Tests/ConstraintTest.php | 52 + .../AbstractComparisonValidatorTestCase.php | 72 +- .../AbstractConstraintValidatorTest.php | 66 +- .../Tests/Constraints/AllValidatorTest.php | 4 +- .../Constraints/CardSchemeValidatorTest.php | 31 +- .../Tests/Constraints/ChoiceValidatorTest.php | 6 + .../Constraints/CollectionValidatorTest.php | 25 +- .../Tests/Constraints/CompositeTest.php | 137 ++ .../Tests/Constraints/CountValidatorTest.php | 4 + .../Constraints/DateTimeValidatorTest.php | 23 +- .../Tests/Constraints/DateValidatorTest.php | 15 +- .../Tests/Constraints/EmailValidatorTest.php | 1 + .../Constraints/EqualToValidatorTest.php | 4 + .../Constraints/ExpressionValidatorTest.php | 26 +- .../Validator/Tests/Constraints/FileTest.php | 107 + .../Constraints/FileValidatorPathTest.php | 1 + .../Tests/Constraints/FileValidatorTest.php | 114 +- .../GreaterThanOrEqualValidatorTest.php | 6 + .../Constraints/GreaterThanValidatorTest.php | 6 + .../Tests/Constraints/IbanValidatorTest.php | 29 +- .../Constraints/IdenticalToValidatorTest.php | 22 +- .../Tests/Constraints/ImageValidatorTest.php | 24 + .../Tests/Constraints/IsbnValidatorTest.php | 70 +- .../Tests/Constraints/IssnValidatorTest.php | 21 +- .../Tests/Constraints/LengthValidatorTest.php | 4 + .../LessThanOrEqualValidatorTest.php | 6 + .../Constraints/LessThanValidatorTest.php | 6 + .../Tests/Constraints/LuhnValidatorTest.php | 13 +- .../Constraints/NotEqualToValidatorTest.php | 4 + .../NotIdenticalToValidatorTest.php | 26 +- .../Tests/Constraints/RangeValidatorTest.php | 200 ++ .../Validator/Tests/Constraints/RegexTest.php | 87 + .../Tests/Constraints/RegexValidatorTest.php | 66 - .../Tests/Constraints/TimeValidatorTest.php | 17 +- .../Tests/Constraints/UuidValidatorTest.php | 117 +- .../Validator/Tests/ExecutionContextTest.php | 2 +- .../Tests/Fixtures/FakeClassMetadata.php | 2 +- .../Tests/Mapping/ClassMetadataTest.php | 57 +- .../Tests/Validator/Abstract2Dot5ApiTest.php | 16 +- .../RecursiveContextualValidator.php | 2 + .../Component/Validator/ValidatorBuilder.php | 16 +- .../Violation/ConstraintViolationBuilder.php | 28 +- .../ConstraintViolationBuilderInterface.php | 13 +- .../LegacyConstraintViolationBuilder.php | 15 +- .../Symfony/Component/Validator/composer.json | 2 +- .../yaml/Symfony/Component/Yaml/Escaper.php | 2 +- .../yaml/Symfony/Component/Yaml/Parser.php | 15 +- .../Fixtures/YtsSpecificationExamples.yml | 4 +- .../Component/Yaml/Tests/ParserTest.php | 23 +- 408 files changed, 11541 insertions(+), 9127 deletions(-) create mode 100644 core/vendor/guzzlehttp/ringphp/CHANGELOG.md create mode 100644 core/vendor/symfony/debug/Symfony/Component/Debug/Resources/ext/README.rst create mode 100644 core/vendor/symfony/debug/Symfony/Component/Debug/Resources/ext/config.m4 create mode 100644 core/vendor/symfony/debug/Symfony/Component/Debug/Resources/ext/config.w32 create mode 100644 core/vendor/symfony/debug/Symfony/Component/Debug/Resources/ext/php_symfony_debug.h create mode 100644 core/vendor/symfony/debug/Symfony/Component/Debug/Resources/ext/symfony_debug.c create mode 100644 core/vendor/symfony/debug/Symfony/Component/Debug/Resources/ext/tests/001.phpt create mode 100644 core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/ExpressionLanguageProvider.php create mode 100644 core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/containers/container19.php create mode 100644 core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services19.php create mode 100644 core/vendor/symfony/dependency-injection/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services14.yml create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/DataCollector/DumpDataCollector.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/DumpListener.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/SaveSessionListener.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/SurrogateListener.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/EventListener/TranslatorListener.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Fragment/AbstractSurrogateFragmentRenderer.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Fragment/SsiFragmentRenderer.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/ResponseCacheStrategy.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/ResponseCacheStrategyInterface.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Ssi.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/SurrogateInterface.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/DataCollector/DumpDataCollectorTest.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/DataCollector/Util/ValueExporterTest.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/EventListener/DebugHandlersListenerTest.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/EventListener/DumpListenerTest.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/EventListener/TranslatorListenerTest.php create mode 100644 core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/HttpCache/SsiTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/.gitignore delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/CHANGELOG.md delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Exception/InvalidArgumentException.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Exception/LogicException.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessFailedException.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Exception/ProcessTimedOutException.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Exception/RuntimeException.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/ExecutableFinder.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/LICENSE delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/PhpExecutableFinder.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/PhpProcess.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Process.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/ProcessBuilder.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/ProcessPipes.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/ProcessUtils.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/README.md delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/AbstractProcessTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/ExecutableFinderTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/NonStopableProcess.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/PhpExecutableFinderTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/PhpProcessTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/PipeStdinInStdoutStdErrStreamSelect.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/ProcessBuilderTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/ProcessFailedExceptionTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/ProcessUtilsTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/SigchildDisabledProcessTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/SigchildEnabledProcessTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/SignalListener.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/Tests/SimpleProcessTest.php delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/composer.json delete mode 100644 core/vendor/symfony/process/Symfony/Component/Process/phpunit.xml.dist create mode 100644 core/vendor/symfony/routing/Symfony/Component/Routing/Tests/Fixtures/validresource.php create mode 100644 core/vendor/symfony/routing/Symfony/Component/Routing/Tests/Fixtures/with_define_path_variable.php rename core/vendor/symfony/{process/Symfony/Component/Process/Exception/ExceptionInterface.php => serializer/Symfony/Component/Serializer/Exception/CircularReferenceException.php} (57%) create mode 100644 core/vendor/symfony/serializer/Symfony/Component/Serializer/Normalizer/PropertyNormalizer.php rename core/vendor/symfony/{process/Symfony/Component/Process/Tests/ProcessInSigchildEnvironment.php => serializer/Symfony/Component/Serializer/Tests/Fixtures/CircularReferenceDummy.php} (56%) create mode 100644 core/vendor/symfony/serializer/Symfony/Component/Serializer/Tests/Fixtures/SiblingHolder.php create mode 100644 core/vendor/symfony/serializer/Symfony/Component/Serializer/Tests/Normalizer/PropertyNormalizerTest.php create mode 100644 core/vendor/symfony/validator/Symfony/Component/Validator/Constraints/Composite.php create mode 100644 core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/CompositeTest.php create mode 100644 core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/FileTest.php create mode 100644 core/vendor/symfony/validator/Symfony/Component/Validator/Tests/Constraints/RegexTest.php diff --git a/composer.json b/composer.json index 974dc0e52ca1..8bc14b63d2b1 100644 --- a/composer.json +++ b/composer.json @@ -6,16 +6,17 @@ "require": { "php": ">=5.4.5", "sdboyer/gliph": "0.1.*", - "symfony/class-loader": "2.5.*", - "symfony/css-selector": "2.5.*", - "symfony/dependency-injection": "2.5.*", - "symfony/event-dispatcher": "2.5.*", - "symfony/http-foundation": "2.5.*", - "symfony/http-kernel": "2.5.*", - "symfony/routing": "2.5.*", - "symfony/serializer": "2.5.*", - "symfony/validator": "2.5.*", - "symfony/yaml": "dev-master#499f7d7aa96747ad97940089bd7a1fb24ad8182a", + "symfony/class-loader": "2.6.0-beta1", + "symfony/css-selector": "2.6.0-beta1", + "symfony/debug": "2.6.0-beta1", + "symfony/dependency-injection": "2.6.0-beta1", + "symfony/event-dispatcher": "2.6.0-beta1", + "symfony/http-foundation": "2.6.0-beta1", + "symfony/http-kernel": "2.6.0-beta1", + "symfony/routing": "2.6.0-beta1", + "symfony/serializer": "2.6.0-beta1", + "symfony/validator": "2.6.0-beta1", + "symfony/yaml": "2.6.0-beta1", "twig/twig": "1.16.*", "doctrine/common": "dev-master#a45d110f71c323e29f41eb0696fa230e3fa1b1b5", "doctrine/annotations": "1.2.*", diff --git a/composer.lock b/composer.lock index 4849c757d7f4..868008a90647 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "2bd5814ec010b13a6997359736b58695", + "hash": "34a4f5a56891e51217c305b97e8cc675", "packages": [ { "name": "doctrine/annotations", @@ -518,16 +518,16 @@ }, { "name": "egulias/email-validator", - "version": "1.2.2", + "version": "1.2.5", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "39b451bb2bb0655d83d82a38a0bba7189298cfc5" + "reference": "518f80a0ff7c1a35780e7702f4262c8c6f2b807f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/39b451bb2bb0655d83d82a38a0bba7189298cfc5", - "reference": "39b451bb2bb0655d83d82a38a0bba7189298cfc5", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/518f80a0ff7c1a35780e7702f4262c8c6f2b807f", + "reference": "518f80a0ff7c1a35780e7702f4262c8c6f2b807f", "shasum": "" }, "require": { @@ -540,7 +540,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -564,7 +564,7 @@ "validation", "validator" ], - "time": "2014-09-01 22:35:48" + "time": "2014-11-06 08:59:44" }, { "name": "guzzlehttp/guzzle", @@ -626,16 +626,16 @@ }, { "name": "guzzlehttp/ringphp", - "version": "1.0.0", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/RingPHP.git", - "reference": "9e44b565d726d9614cd970319e6eea70ee15bff3" + "reference": "e7c28f96c5ac12ab0e63412cfc15989756fcb964" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/9e44b565d726d9614cd970319e6eea70ee15bff3", - "reference": "9e44b565d726d9614cd970319e6eea70ee15bff3", + "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/e7c28f96c5ac12ab0e63412cfc15989756fcb964", + "reference": "e7c28f96c5ac12ab0e63412cfc15989756fcb964", "shasum": "" }, "require": { @@ -672,7 +672,7 @@ "homepage": "https://github.com/mtdowling" } ], - "time": "2014-10-13 00:59:38" + "time": "2014-11-04 07:01:14" }, { "name": "guzzlehttp/streams", @@ -1386,16 +1386,16 @@ }, { "name": "sebastian/environment", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7" + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7", - "reference": "6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0d9bf79554d2a999da194a60416c15cf461eb67d", + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d", "shasum": "" }, "require": { @@ -1407,7 +1407,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -1432,7 +1432,7 @@ "environment", "hhvm" ], - "time": "2014-10-07 09:23:16" + "time": "2014-10-22 06:38:05" }, { "name": "sebastian/exporter", @@ -1643,17 +1643,17 @@ }, { "name": "symfony/class-loader", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/ClassLoader", "source": { "type": "git", "url": "https://github.com/symfony/ClassLoader.git", - "reference": "432561f655123b003b32f370ca812fed9a9340c6" + "reference": "d1a16139ea522ec3cc20801b7e19cd3cafd12d8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/432561f655123b003b32f370ca812fed9a9340c6", - "reference": "432561f655123b003b32f370ca812fed9a9340c6", + "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/d1a16139ea522ec3cc20801b7e19cd3cafd12d8c", + "reference": "d1a16139ea522ec3cc20801b7e19cd3cafd12d8c", "shasum": "" }, "require": { @@ -1665,7 +1665,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1689,21 +1689,21 @@ ], "description": "Symfony ClassLoader Component", "homepage": "http://symfony.com", - "time": "2014-09-22 09:14:18" + "time": "2014-11-03 03:55:50" }, { "name": "symfony/css-selector", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/CssSelector", "source": { "type": "git", "url": "https://github.com/symfony/CssSelector.git", - "reference": "caf5ecc3face1f22884fb74b8edab65ac5ba9976" + "reference": "41953ad30ffc5cd710d106cf01eff79f6effa117" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/caf5ecc3face1f22884fb74b8edab65ac5ba9976", - "reference": "caf5ecc3face1f22884fb74b8edab65ac5ba9976", + "url": "https://api.github.com/repos/symfony/CssSelector/zipball/41953ad30ffc5cd710d106cf01eff79f6effa117", + "reference": "41953ad30ffc5cd710d106cf01eff79f6effa117", "shasum": "" }, "require": { @@ -1712,7 +1712,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1740,25 +1740,26 @@ ], "description": "Symfony CssSelector Component", "homepage": "http://symfony.com", - "time": "2014-09-22 09:14:18" + "time": "2014-10-26 07:46:28" }, { "name": "symfony/debug", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/Debug", "source": { "type": "git", "url": "https://github.com/symfony/Debug.git", - "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648" + "reference": "3548595c26175fdaca19cbec204668c22cda41f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", - "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", + "url": "https://api.github.com/repos/symfony/Debug/zipball/3548595c26175fdaca19cbec204668c22cda41f0", + "reference": "3548595c26175fdaca19cbec204668c22cda41f0", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "psr/log": "~1.0" }, "require-dev": { "symfony/http-foundation": "~2.1", @@ -1771,7 +1772,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1795,21 +1796,21 @@ ], "description": "Symfony Debug Component", "homepage": "http://symfony.com", - "time": "2014-09-28 15:22:14" + "time": "2014-10-28 10:06:58" }, { "name": "symfony/dependency-injection", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/DependencyInjection", "source": { "type": "git", "url": "https://github.com/symfony/DependencyInjection.git", - "reference": "1f01a64c9047909e40700a14ee34e8c446300618" + "reference": "926500fe0b8a6562c4e8b8166a1cb664733804aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/1f01a64c9047909e40700a14ee34e8c446300618", - "reference": "1f01a64c9047909e40700a14ee34e8c446300618", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/926500fe0b8a6562c4e8b8166a1cb664733804aa", + "reference": "926500fe0b8a6562c4e8b8166a1cb664733804aa", "shasum": "" }, "require": { @@ -1828,7 +1829,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1852,21 +1853,21 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "http://symfony.com", - "time": "2014-09-27 08:35:39" + "time": "2014-11-03 03:55:50" }, { "name": "symfony/event-dispatcher", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46" + "reference": "dcf345d5ed96bc6c3b4521c1989670d2c9e5014e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/f6281337bf5f985f585d1db6a83adb05ce531f46", - "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/dcf345d5ed96bc6c3b4521c1989670d2c9e5014e", + "reference": "dcf345d5ed96bc6c3b4521c1989670d2c9e5014e", "shasum": "" }, "require": { @@ -1875,7 +1876,8 @@ "require-dev": { "psr/log": "~1.0", "symfony/config": "~2.0", - "symfony/dependency-injection": "~2.0,<2.6.0", + "symfony/dependency-injection": "~2.6", + "symfony/expression-language": "~2.6", "symfony/stopwatch": "~2.2" }, "suggest": { @@ -1885,7 +1887,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1909,21 +1911,21 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "http://symfony.com", - "time": "2014-09-28 15:56:11" + "time": "2014-11-03 03:55:50" }, { "name": "symfony/http-foundation", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/HttpFoundation", "source": { "type": "git", "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "650e115af152d7a5e857d01c2cdb9a22809de9b4" + "reference": "4cd6c807598e560db7b3da50c4330fdb4808cfa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/650e115af152d7a5e857d01c2cdb9a22809de9b4", - "reference": "650e115af152d7a5e857d01c2cdb9a22809de9b4", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/4cd6c807598e560db7b3da50c4330fdb4808cfa1", + "reference": "4cd6c807598e560db7b3da50c4330fdb4808cfa1", "shasum": "" }, "require": { @@ -1935,7 +1937,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -1962,27 +1964,27 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "http://symfony.com", - "time": "2014-09-25 09:52:29" + "time": "2014-11-03 03:55:50" }, { "name": "symfony/http-kernel", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/HttpKernel", "source": { "type": "git", "url": "https://github.com/symfony/HttpKernel.git", - "reference": "6a3595611229def14d5e644f060cf372235532ec" + "reference": "7fa0bd9220cd529ee78d8565bbf8d5a854bd72d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/6a3595611229def14d5e644f060cf372235532ec", - "reference": "6a3595611229def14d5e644f060cf372235532ec", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/7fa0bd9220cd529ee78d8565bbf8d5a854bd72d2", + "reference": "7fa0bd9220cd529ee78d8565bbf8d5a854bd72d2", "shasum": "" }, "require": { "php": ">=5.3.3", "psr/log": "~1.0", - "symfony/debug": "~2.5", + "symfony/debug": "~2.6", "symfony/event-dispatcher": "~2.5", "symfony/http-foundation": "~2.5" }, @@ -1997,7 +1999,9 @@ "symfony/process": "~2.0", "symfony/routing": "~2.2", "symfony/stopwatch": "~2.2", - "symfony/templating": "~2.2" + "symfony/templating": "~2.2", + "symfony/translation": "~2.0", + "symfony/var-dumper": "~2.6" }, "suggest": { "symfony/browser-kit": "", @@ -2005,12 +2009,13 @@ "symfony/config": "", "symfony/console": "", "symfony/dependency-injection": "", - "symfony/finder": "" + "symfony/finder": "", + "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2034,68 +2039,21 @@ ], "description": "Symfony HttpKernel Component", "homepage": "http://symfony.com", - "time": "2014-09-28 17:33:53" - }, - { - "name": "symfony/process", - "version": "v2.5.5", - "target-dir": "Symfony/Component/Process", - "source": { - "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "8a1ec96c4e519cee0fb971ea48a1eb7369dda54b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/8a1ec96c4e519cee0fb971ea48a1eb7369dda54b", - "reference": "8a1ec96c4e519cee0fb971ea48a1eb7369dda54b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Process Component", - "homepage": "http://symfony.com", - "time": "2014-09-23 05:25:11" + "time": "2014-11-03 20:15:26" }, { "name": "symfony/routing", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/Routing", "source": { "type": "git", "url": "https://github.com/symfony/Routing.git", - "reference": "9bc38fe72e0eff61611e7cd4df3accbce20b1d36" + "reference": "f0bb6f818f9a7ece41c7dfe14e08b13c2de55b0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/9bc38fe72e0eff61611e7cd4df3accbce20b1d36", - "reference": "9bc38fe72e0eff61611e7cd4df3accbce20b1d36", + "url": "https://api.github.com/repos/symfony/Routing/zipball/f0bb6f818f9a7ece41c7dfe14e08b13c2de55b0c", + "reference": "f0bb6f818f9a7ece41c7dfe14e08b13c2de55b0c", "shasum": "" }, "require": { @@ -2118,7 +2076,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2148,21 +2106,21 @@ "uri", "url" ], - "time": "2014-09-22 15:28:36" + "time": "2014-11-03 19:16:49" }, { "name": "symfony/serializer", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/Serializer", "source": { "type": "git", "url": "https://github.com/symfony/Serializer.git", - "reference": "a95c0471682778da2e02169fb2644d3b08d4470f" + "reference": "e96b7ac54b3d75a458f76eab11b7cd2d757f09f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Serializer/zipball/a95c0471682778da2e02169fb2644d3b08d4470f", - "reference": "a95c0471682778da2e02169fb2644d3b08d4470f", + "url": "https://api.github.com/repos/symfony/Serializer/zipball/e96b7ac54b3d75a458f76eab11b7cd2d757f09f1", + "reference": "e96b7ac54b3d75a458f76eab11b7cd2d757f09f1", "shasum": "" }, "require": { @@ -2171,7 +2129,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2195,21 +2153,21 @@ ], "description": "Symfony Serializer Component", "homepage": "http://symfony.com", - "time": "2014-09-22 09:14:18" + "time": "2014-11-03 03:55:50" }, { "name": "symfony/translation", - "version": "v2.5.5", + "version": "v2.5.6", "target-dir": "Symfony/Component/Translation", "source": { "type": "git", "url": "https://github.com/symfony/Translation.git", - "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928" + "reference": "362fe4da2cfe587f72d57aaa2f89e6b61c05dedf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Translation/zipball/170c0d895616e1a6a35681ffb0b9e339f58ab928", - "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928", + "url": "https://api.github.com/repos/symfony/Translation/zipball/362fe4da2cfe587f72d57aaa2f89e6b61c05dedf", + "reference": "362fe4da2cfe587f72d57aaa2f89e6b61c05dedf", "shasum": "" }, "require": { @@ -2251,21 +2209,21 @@ ], "description": "Symfony Translation Component", "homepage": "http://symfony.com", - "time": "2014-09-23 05:25:11" + "time": "2014-10-01 05:50:18" }, { "name": "symfony/validator", - "version": "v2.5.5", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/Validator", "source": { "type": "git", "url": "https://github.com/symfony/Validator.git", - "reference": "64f61505843ca5e6c647244f5a4b6812c1279427" + "reference": "6e521cdbc963cef7daf9931a7bde48b56d67d10a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Validator/zipball/64f61505843ca5e6c647244f5a4b6812c1279427", - "reference": "64f61505843ca5e6c647244f5a4b6812c1279427", + "url": "https://api.github.com/repos/symfony/Validator/zipball/6e521cdbc963cef7daf9931a7bde48b56d67d10a", + "reference": "6e521cdbc963cef7daf9931a7bde48b56d67d10a", "shasum": "" }, "require": { @@ -2297,7 +2255,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2321,21 +2279,21 @@ ], "description": "Symfony Validator Component", "homepage": "http://symfony.com", - "time": "2014-09-28 15:22:14" + "time": "2014-11-03 03:55:50" }, { "name": "symfony/yaml", - "version": "dev-master", + "version": "v2.6.0-BETA1", "target-dir": "Symfony/Component/Yaml", "source": { "type": "git", "url": "https://github.com/symfony/Yaml.git", - "reference": "499f7d7aa96747ad97940089bd7a1fb24ad8182a" + "reference": "9da3813f36985a4089f7e83c601a1034d125ff69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/499f7d7aa96747ad97940089bd7a1fb24ad8182a", - "reference": "499f7d7aa96747ad97940089bd7a1fb24ad8182a", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/9da3813f36985a4089f7e83c601a1034d125ff69", + "reference": "9da3813f36985a4089f7e83c601a1034d125ff69", "shasum": "" }, "require": { @@ -2368,7 +2326,7 @@ ], "description": "Symfony Yaml Component", "homepage": "http://symfony.com", - "time": "2014-10-05 13:53:50" + "time": "2014-11-03 03:55:50" }, { "name": "twig/twig", @@ -2564,7 +2522,17 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "symfony/yaml": 20, + "symfony/class-loader": 10, + "symfony/css-selector": 10, + "symfony/debug": 10, + "symfony/dependency-injection": 10, + "symfony/event-dispatcher": 10, + "symfony/http-foundation": 10, + "symfony/http-kernel": 10, + "symfony/routing": 10, + "symfony/serializer": 10, + "symfony/validator": 10, + "symfony/yaml": 10, "doctrine/common": 20, "phpunit/phpunit-mock-objects": 20 }, diff --git a/core/lib/Drupal/Core/Routing/CompiledRoute.php b/core/lib/Drupal/Core/Routing/CompiledRoute.php index 45aa22c7072d..7354e1225a46 100644 --- a/core/lib/Drupal/Core/Routing/CompiledRoute.php +++ b/core/lib/Drupal/Core/Routing/CompiledRoute.php @@ -173,4 +173,30 @@ class CompiledRoute extends SymfonyCompiledRoute { return $this->route->getRequirements(); } + /** + * {@inheritdoc} + */ + public function serialize() { + $data = unserialize(parent::serialize()); + $data['fit'] = $this->fit; + $data['patternOutline'] = $this->patternOutline; + $data['numParts'] = $this->numParts; + + return serialize($data); + } + + /** + * {@inheritdoc} + */ + public function unserialize($serialized) + { + parent::unserialize($serialized); + $data = unserialize($serialized); + + $this->fit = $data['fit']; + $this->patternOutline = $data['patternOutline']; + $this->numParts = $data['numParts']; + } + + } diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php index 54e2998cc44c..18472d710f2b 100644 --- a/core/vendor/composer/autoload_namespaces.php +++ b/core/vendor/composer/autoload_namespaces.php @@ -16,7 +16,6 @@ return array( 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), 'Symfony\\Component\\Serializer\\' => array($vendorDir . '/symfony/serializer'), 'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'), - 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), 'Symfony\\Component\\HttpKernel\\' => array($vendorDir . '/symfony/http-kernel'), 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), 'Symfony\\Component\\EventDispatcher\\' => array($vendorDir . '/symfony/event-dispatcher'), diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json index 06b603a10a6e..03eef6892f12 100644 --- a/core/vendor/composer/installed.json +++ b/core/vendor/composer/installed.json @@ -469,58 +469,6 @@ "sparql" ] }, - { - "name": "egulias/email-validator", - "version": "1.2.2", - "version_normalized": "1.2.2.0", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "39b451bb2bb0655d83d82a38a0bba7189298cfc5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/39b451bb2bb0655d83d82a38a0bba7189298cfc5", - "reference": "39b451bb2bb0655d83d82a38a0bba7189298cfc5", - "shasum": "" - }, - "require": { - "doctrine/lexer": "~1.0", - "php": ">= 5.3.3" - }, - "require-dev": { - "satooshi/php-coveralls": "dev-master" - }, - "time": "2014-09-01 22:35:48", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Egulias\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "validation", - "validator" - ] - }, { "name": "react/promise", "version": "v2.1.0", @@ -619,58 +567,6 @@ "stream" ] }, - { - "name": "guzzlehttp/ringphp", - "version": "1.0.0", - "version_normalized": "1.0.0.0", - "source": { - "type": "git", - "url": "https://github.com/guzzle/RingPHP.git", - "reference": "9e44b565d726d9614cd970319e6eea70ee15bff3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/9e44b565d726d9614cd970319e6eea70ee15bff3", - "reference": "9e44b565d726d9614cd970319e6eea70ee15bff3", - "shasum": "" - }, - "require": { - "guzzlehttp/streams": "~3.0", - "php": ">=5.4.0", - "react/promise": "~2.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "ext-curl": "Guzzle will use specific adapters if cURL is present" - }, - "time": "2014-10-13 00:59:38", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-4": { - "GuzzleHttp\\Ring\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ] - }, { "name": "mikey179/vfsStream", "version": "v1.4.0", @@ -762,55 +658,6 @@ "tokenizer" ] }, - { - "name": "symfony/yaml", - "version": "dev-master", - "version_normalized": "9999999-dev", - "target-dir": "Symfony/Component/Yaml", - "source": { - "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "499f7d7aa96747ad97940089bd7a1fb24ad8182a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/499f7d7aa96747ad97940089bd7a1fb24ad8182a", - "reference": "499f7d7aa96747ad97940089bd7a1fb24ad8182a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2014-10-05 13:53:50", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.6-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com" - }, { "name": "sebastian/version", "version": "1.0.3", @@ -915,58 +762,6 @@ "exporter" ] }, - { - "name": "sebastian/environment", - "version": "1.1.0", - "version_normalized": "1.1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7", - "reference": "6288ebbf6fa3ed2b2ff2d69c356fbaaf4f0971a7", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.3" - }, - "time": "2014-10-07 09:23:16", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "installation-source": "dist", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ] - }, { "name": "sebastian/diff", "version": "1.2.0", @@ -1532,177 +1327,6 @@ "spl" ] }, - { - "name": "symfony/http-foundation", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/HttpFoundation", - "source": { - "type": "git", - "url": "https://github.com/symfony/HttpFoundation.git", - "reference": "650e115af152d7a5e857d01c2cdb9a22809de9b4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/650e115af152d7a5e857d01c2cdb9a22809de9b4", - "reference": "650e115af152d7a5e857d01c2cdb9a22809de9b4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/expression-language": "~2.4" - }, - "time": "2014-09-25 09:52:29", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "classmap": [ - "Symfony/Component/HttpFoundation/Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony HttpFoundation Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/event-dispatcher", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/EventDispatcher", - "source": { - "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/f6281337bf5f985f585d1db6a83adb05ce531f46", - "reference": "f6281337bf5f985f585d1db6a83adb05ce531f46", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.0", - "symfony/dependency-injection": "~2.0,<2.6.0", - "symfony/stopwatch": "~2.2" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "time": "2014-09-28 15:56:11", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/debug", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/Debug", - "source": { - "type": "git", - "url": "https://github.com/symfony/Debug.git", - "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Debug/zipball/4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", - "reference": "4a3dd4ef3fc0cee2fd9faaae12bd7af43afcf648", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/http-foundation": "~2.1", - "symfony/http-kernel": "~2.1" - }, - "suggest": { - "symfony/http-foundation": "", - "symfony/http-kernel": "" - }, - "time": "2014-09-28 15:22:14", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Debug\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Debug Component", - "homepage": "http://symfony.com" - }, { "name": "psr/log", "version": "1.0.0", @@ -1743,80 +1367,6 @@ "psr-3" ] }, - { - "name": "symfony/http-kernel", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/HttpKernel", - "source": { - "type": "git", - "url": "https://github.com/symfony/HttpKernel.git", - "reference": "6a3595611229def14d5e644f060cf372235532ec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/6a3595611229def14d5e644f060cf372235532ec", - "reference": "6a3595611229def14d5e644f060cf372235532ec", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "psr/log": "~1.0", - "symfony/debug": "~2.5", - "symfony/event-dispatcher": "~2.5", - "symfony/http-foundation": "~2.5" - }, - "require-dev": { - "symfony/browser-kit": "~2.2", - "symfony/class-loader": "~2.1", - "symfony/config": "~2.0", - "symfony/console": "~2.2", - "symfony/dependency-injection": "~2.0", - "symfony/expression-language": "~2.4", - "symfony/finder": "~2.0", - "symfony/process": "~2.0", - "symfony/routing": "~2.2", - "symfony/stopwatch": "~2.2", - "symfony/templating": "~2.2" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/class-loader": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "" - }, - "time": "2014-09-28 17:33:53", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\HttpKernel\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony HttpKernel Component", - "homepage": "http://symfony.com" - }, { "name": "stack/builder", "version": "v1.0.2", @@ -1869,75 +1419,6 @@ "stack" ] }, - { - "name": "symfony/routing", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/Routing", - "source": { - "type": "git", - "url": "https://github.com/symfony/Routing.git", - "reference": "9bc38fe72e0eff61611e7cd4df3accbce20b1d36" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Routing/zipball/9bc38fe72e0eff61611e7cd4df3accbce20b1d36", - "reference": "9bc38fe72e0eff61611e7cd4df3accbce20b1d36", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/http-foundation": "~2.3", - "symfony/yaml": "~2.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/yaml": "For using the YAML loader" - }, - "time": "2014-09-22 15:28:36", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Routing\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Routing Component", - "homepage": "http://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ] - }, { "name": "symfony-cmf/routing", "version": "1.3.0", @@ -1997,398 +1478,6 @@ "routing" ] }, - { - "name": "symfony/class-loader", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/ClassLoader", - "source": { - "type": "git", - "url": "https://github.com/symfony/ClassLoader.git", - "reference": "432561f655123b003b32f370ca812fed9a9340c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/432561f655123b003b32f370ca812fed9a9340c6", - "reference": "432561f655123b003b32f370ca812fed9a9340c6", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/finder": "~2.0" - }, - "time": "2014-09-22 09:14:18", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\ClassLoader\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony ClassLoader Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/css-selector", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/CssSelector", - "source": { - "type": "git", - "url": "https://github.com/symfony/CssSelector.git", - "reference": "caf5ecc3face1f22884fb74b8edab65ac5ba9976" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/CssSelector/zipball/caf5ecc3face1f22884fb74b8edab65ac5ba9976", - "reference": "caf5ecc3face1f22884fb74b8edab65ac5ba9976", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2014-09-22 09:14:18", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\CssSelector\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/dependency-injection", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/DependencyInjection", - "source": { - "type": "git", - "url": "https://github.com/symfony/DependencyInjection.git", - "reference": "1f01a64c9047909e40700a14ee34e8c446300618" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/1f01a64c9047909e40700a14ee34e8c446300618", - "reference": "1f01a64c9047909e40700a14ee34e8c446300618", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/yaml": "~2.0" - }, - "suggest": { - "symfony/config": "", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "time": "2014-09-27 08:35:39", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\DependencyInjection\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony DependencyInjection Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/process", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/Process", - "source": { - "type": "git", - "url": "https://github.com/symfony/Process.git", - "reference": "8a1ec96c4e519cee0fb971ea48a1eb7369dda54b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Process/zipball/8a1ec96c4e519cee0fb971ea48a1eb7369dda54b", - "reference": "8a1ec96c4e519cee0fb971ea48a1eb7369dda54b", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2014-09-23 05:25:11", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Process\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Process Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/serializer", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/Serializer", - "source": { - "type": "git", - "url": "https://github.com/symfony/Serializer.git", - "reference": "a95c0471682778da2e02169fb2644d3b08d4470f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Serializer/zipball/a95c0471682778da2e02169fb2644d3b08d4470f", - "reference": "a95c0471682778da2e02169fb2644d3b08d4470f", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "time": "2014-09-22 09:14:18", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Serializer\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Serializer Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/translation", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/Translation", - "source": { - "type": "git", - "url": "https://github.com/symfony/Translation.git", - "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Translation/zipball/170c0d895616e1a6a35681ffb0b9e339f58ab928", - "reference": "170c0d895616e1a6a35681ffb0b9e339f58ab928", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/config": "~2.0", - "symfony/intl": "~2.3", - "symfony/yaml": "~2.2" - }, - "suggest": { - "symfony/config": "", - "symfony/yaml": "" - }, - "time": "2014-09-23 05:25:11", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Translation\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Translation Component", - "homepage": "http://symfony.com" - }, - { - "name": "symfony/validator", - "version": "v2.5.5", - "version_normalized": "2.5.5.0", - "target-dir": "Symfony/Component/Validator", - "source": { - "type": "git", - "url": "https://github.com/symfony/Validator.git", - "reference": "64f61505843ca5e6c647244f5a4b6812c1279427" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/Validator/zipball/64f61505843ca5e6c647244f5a4b6812c1279427", - "reference": "64f61505843ca5e6c647244f5a4b6812c1279427", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/translation": "~2.0" - }, - "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.0", - "egulias/email-validator": "~1.0", - "symfony/config": "~2.2", - "symfony/expression-language": "~2.4", - "symfony/http-foundation": "~2.1", - "symfony/intl": "~2.3", - "symfony/property-access": "~2.2", - "symfony/yaml": "~2.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader and metadata cache.", - "egulias/email-validator": "Strict (RFC compliant) email validation", - "symfony/config": "", - "symfony/expression-language": "For using the 2.4 Expression validator", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For using the 2.4 Validator API", - "symfony/yaml": "" - }, - "time": "2014-09-28 15:22:14", - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "installation-source": "dist", - "autoload": { - "psr-0": { - "Symfony\\Component\\Validator\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Symfony Validator Component", - "homepage": "http://symfony.com" - }, { "name": "twig/twig", "version": "v1.16.2", @@ -2645,5 +1734,872 @@ "rest", "web service" ] + }, + { + "name": "symfony/class-loader", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/ClassLoader", + "source": { + "type": "git", + "url": "https://github.com/symfony/ClassLoader.git", + "reference": "d1a16139ea522ec3cc20801b7e19cd3cafd12d8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/d1a16139ea522ec3cc20801b7e19cd3cafd12d8c", + "reference": "d1a16139ea522ec3cc20801b7e19cd3cafd12d8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/finder": "~2.0" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\ClassLoader\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony ClassLoader Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/css-selector", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/CssSelector", + "source": { + "type": "git", + "url": "https://github.com/symfony/CssSelector.git", + "reference": "41953ad30ffc5cd710d106cf01eff79f6effa117" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/CssSelector/zipball/41953ad30ffc5cd710d106cf01eff79f6effa117", + "reference": "41953ad30ffc5cd710d106cf01eff79f6effa117", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2014-10-26 07:46:28", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\CssSelector\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/dependency-injection", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/DependencyInjection", + "source": { + "type": "git", + "url": "https://github.com/symfony/DependencyInjection.git", + "reference": "926500fe0b8a6562c4e8b8166a1cb664733804aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/926500fe0b8a6562c4e8b8166a1cb664733804aa", + "reference": "926500fe0b8a6562c4e8b8166a1cb664733804aa", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/yaml": "~2.0" + }, + "suggest": { + "symfony/config": "", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\DependencyInjection\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/debug", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/Debug", + "source": { + "type": "git", + "url": "https://github.com/symfony/Debug.git", + "reference": "3548595c26175fdaca19cbec204668c22cda41f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Debug/zipball/3548595c26175fdaca19cbec204668c22cda41f0", + "reference": "3548595c26175fdaca19cbec204668c22cda41f0", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "psr/log": "~1.0" + }, + "require-dev": { + "symfony/http-foundation": "~2.1", + "symfony/http-kernel": "~2.1" + }, + "suggest": { + "symfony/http-foundation": "", + "symfony/http-kernel": "" + }, + "time": "2014-10-28 10:06:58", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Debug\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Debug Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/http-foundation", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/HttpFoundation", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpFoundation.git", + "reference": "4cd6c807598e560db7b3da50c4330fdb4808cfa1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/4cd6c807598e560db7b3da50c4330fdb4808cfa1", + "reference": "4cd6c807598e560db7b3da50c4330fdb4808cfa1", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/expression-language": "~2.4" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "classmap": [ + "Symfony/Component/HttpFoundation/Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony HttpFoundation Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/EventDispatcher", + "source": { + "type": "git", + "url": "https://github.com/symfony/EventDispatcher.git", + "reference": "dcf345d5ed96bc6c3b4521c1989670d2c9e5014e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/dcf345d5ed96bc6c3b4521c1989670d2c9e5014e", + "reference": "dcf345d5ed96bc6c3b4521c1989670d2c9e5014e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.0", + "symfony/dependency-injection": "~2.6", + "symfony/expression-language": "~2.6", + "symfony/stopwatch": "~2.2" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/http-kernel", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/HttpKernel", + "source": { + "type": "git", + "url": "https://github.com/symfony/HttpKernel.git", + "reference": "7fa0bd9220cd529ee78d8565bbf8d5a854bd72d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/7fa0bd9220cd529ee78d8565bbf8d5a854bd72d2", + "reference": "7fa0bd9220cd529ee78d8565bbf8d5a854bd72d2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "psr/log": "~1.0", + "symfony/debug": "~2.6", + "symfony/event-dispatcher": "~2.5", + "symfony/http-foundation": "~2.5" + }, + "require-dev": { + "symfony/browser-kit": "~2.2", + "symfony/class-loader": "~2.1", + "symfony/config": "~2.0", + "symfony/console": "~2.2", + "symfony/dependency-injection": "~2.0", + "symfony/expression-language": "~2.4", + "symfony/finder": "~2.0", + "symfony/process": "~2.0", + "symfony/routing": "~2.2", + "symfony/stopwatch": "~2.2", + "symfony/templating": "~2.2", + "symfony/translation": "~2.0", + "symfony/var-dumper": "~2.6" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/class-loader": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" + }, + "time": "2014-11-03 20:15:26", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\HttpKernel\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/routing", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/Routing", + "source": { + "type": "git", + "url": "https://github.com/symfony/Routing.git", + "reference": "f0bb6f818f9a7ece41c7dfe14e08b13c2de55b0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Routing/zipball/f0bb6f818f9a7ece41c7dfe14e08b13c2de55b0c", + "reference": "f0bb6f818f9a7ece41c7dfe14e08b13c2de55b0c", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.3", + "symfony/yaml": "~2.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/yaml": "For using the YAML loader" + }, + "time": "2014-11-03 19:16:49", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Routing\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Routing Component", + "homepage": "http://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ] + }, + { + "name": "symfony/serializer", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/Serializer", + "source": { + "type": "git", + "url": "https://github.com/symfony/Serializer.git", + "reference": "e96b7ac54b3d75a458f76eab11b7cd2d757f09f1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Serializer/zipball/e96b7ac54b3d75a458f76eab11b7cd2d757f09f1", + "reference": "e96b7ac54b3d75a458f76eab11b7cd2d757f09f1", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Serializer\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Serializer Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/translation", + "version": "v2.5.6", + "version_normalized": "2.5.6.0", + "target-dir": "Symfony/Component/Translation", + "source": { + "type": "git", + "url": "https://github.com/symfony/Translation.git", + "reference": "362fe4da2cfe587f72d57aaa2f89e6b61c05dedf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Translation/zipball/362fe4da2cfe587f72d57aaa2f89e6b61c05dedf", + "reference": "362fe4da2cfe587f72d57aaa2f89e6b61c05dedf", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "symfony/config": "~2.0", + "symfony/intl": "~2.3", + "symfony/yaml": "~2.2" + }, + "suggest": { + "symfony/config": "", + "symfony/yaml": "" + }, + "time": "2014-10-01 05:50:18", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Translation Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/validator", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/Validator", + "source": { + "type": "git", + "url": "https://github.com/symfony/Validator.git", + "reference": "6e521cdbc963cef7daf9931a7bde48b56d67d10a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Validator/zipball/6e521cdbc963cef7daf9931a7bde48b56d67d10a", + "reference": "6e521cdbc963cef7daf9931a7bde48b56d67d10a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/translation": "~2.0" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "~1.0", + "symfony/config": "~2.2", + "symfony/expression-language": "~2.4", + "symfony/http-foundation": "~2.1", + "symfony/intl": "~2.3", + "symfony/property-access": "~2.2", + "symfony/yaml": "~2.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "symfony/config": "", + "symfony/expression-language": "For using the 2.4 Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For using the 2.4 Validator API", + "symfony/yaml": "" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Validator\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Validator Component", + "homepage": "http://symfony.com" + }, + { + "name": "symfony/yaml", + "version": "v2.6.0-BETA1", + "version_normalized": "2.6.0.0-beta1", + "target-dir": "Symfony/Component/Yaml", + "source": { + "type": "git", + "url": "https://github.com/symfony/Yaml.git", + "reference": "9da3813f36985a4089f7e83c601a1034d125ff69" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/9da3813f36985a4089f7e83c601a1034d125ff69", + "reference": "9da3813f36985a4089f7e83c601a1034d125ff69", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2014-11-03 03:55:50", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.6-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Symfony\\Component\\Yaml\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Symfony Yaml Component", + "homepage": "http://symfony.com" + }, + { + "name": "egulias/email-validator", + "version": "1.2.5", + "version_normalized": "1.2.5.0", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "518f80a0ff7c1a35780e7702f4262c8c6f2b807f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/518f80a0ff7c1a35780e7702f4262c8c6f2b807f", + "reference": "518f80a0ff7c1a35780e7702f4262c8c6f2b807f", + "shasum": "" + }, + "require": { + "doctrine/lexer": "~1.0", + "php": ">= 5.3.3" + }, + "require-dev": { + "satooshi/php-coveralls": "dev-master" + }, + "time": "2014-11-06 08:59:44", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Egulias\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "validation", + "validator" + ] + }, + { + "name": "sebastian/environment", + "version": "1.2.0", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/0d9bf79554d2a999da194a60416c15cf461eb67d", + "reference": "0d9bf79554d2a999da194a60416c15cf461eb67d", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.3" + }, + "time": "2014-10-22 06:38:05", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ] + }, + { + "name": "guzzlehttp/ringphp", + "version": "1.0.3", + "version_normalized": "1.0.3.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/RingPHP.git", + "reference": "e7c28f96c5ac12ab0e63412cfc15989756fcb964" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/e7c28f96c5ac12ab0e63412cfc15989756fcb964", + "reference": "e7c28f96c5ac12ab0e63412cfc15989756fcb964", + "shasum": "" + }, + "require": { + "guzzlehttp/streams": "~3.0", + "php": ">=5.4.0", + "react/promise": "~2.0" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "ext-curl": "Guzzle will use specific adapters if cURL is present" + }, + "time": "2014-11-04 07:01:14", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "GuzzleHttp\\Ring\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ] } ] diff --git a/core/vendor/egulias/email-validator/README.md b/core/vendor/egulias/email-validator/README.md index 4bfe310397ec..61ad6cb1e305 100644 --- a/core/vendor/egulias/email-validator/README.md +++ b/core/vendor/egulias/email-validator/README.md @@ -1,8 +1,13 @@ -EmailValidator [![Build Status](https://travis-ci.org/egulias/EmailValidator.png?branch=master)](https://travis-ci.org/egulias/EmailValidator) [![Coverage Status](https://coveralls.io/repos/egulias/EmailValidator/badge.png?branch=master)](https://coveralls.io/r/egulias/EmailValidator?branch=master) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/b18d473e-bd5a-4d88-a7b2-7aeaee0ebd7b/small.png)](https://insight.sensiolabs.com/projects/b18d473e-bd5a-4d88-a7b2-7aeaee0ebd7b)[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/egulias/EmailValidator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=master) +EmailValidator [![Build Status](https://travis-ci.org/egulias/EmailValidator.png?branch=master)](https://travis-ci.org/egulias/EmailValidator) [![Coverage Status](https://coveralls.io/repos/egulias/EmailValidator/badge.png?branch=master)](https://coveralls.io/r/egulias/EmailValidator?branch=master) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/22ba6692-9c02-42e5-a65d-1c5696bfffc6/small.png)](https://insight.sensiolabs.com/projects/22ba6692-9c02-42e5-a65d-1c5696bfffc6)[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/egulias/EmailValidator/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=master) ============================= ##Installation## -Install via composer. Add to your current compooser.json ```require``` key: ```"egulias/email-validator":"1.0.x-dev" ``` + +Run the command below to install via Composer + +```shell +composer require egulias/email-validator +``` ##Usage## @@ -24,7 +29,7 @@ More advanced example (returns detailed diagnostic error codes): ```php =3.0", + "guzzle/guzzle": ">=2.7", "php": ">=5.3", "psr/log": "1.0.0", "symfony/config": ">=2.0", @@ -216,7 +217,7 @@ }, "require-dev": { "apigen/apigen": "2.8.*@stable", - "pdepend/pdepend": "dev-master", + "pdepend/pdepend": "dev-master as 2.0.0", "phpmd/phpmd": "dev-master", "phpunit/php-invoker": ">=1.1.0,<1.2.0", "phpunit/phpunit": "3.7.*@stable", @@ -262,21 +263,21 @@ "github", "test" ], - "time": "2014-05-14 13:09:37" + "time": "2014-07-09 10:45:38" }, { "name": "symfony/config", - "version": "v2.4.5", + "version": "v2.5.4", "target-dir": "Symfony/Component/Config", "source": { "type": "git", "url": "https://github.com/symfony/Config.git", - "reference": "2effc67af6f21a0d267210b72d0b0b691d113528" + "reference": "080eabdc256c1d7a3a7cf6296271edb68eb1ab2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/2effc67af6f21a0d267210b72d0b0b691d113528", - "reference": "2effc67af6f21a0d267210b72d0b0b691d113528", + "url": "https://api.github.com/repos/symfony/Config/zipball/080eabdc256c1d7a3a7cf6296271edb68eb1ab2b", + "reference": "080eabdc256c1d7a3a7cf6296271edb68eb1ab2b", "shasum": "" }, "require": { @@ -286,7 +287,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -299,49 +300,49 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Config Component", "homepage": "http://symfony.com", - "time": "2014-04-22 08:11:06" + "time": "2014-08-31 03:22:04" }, { "name": "symfony/console", - "version": "v2.4.5", + "version": "v2.5.4", "target-dir": "Symfony/Component/Console", "source": { "type": "git", "url": "https://github.com/symfony/Console.git", - "reference": "24f723436e62598c9dddee2a8573d6992504dc5d" + "reference": "748beed2a1e73179c3f5154d33fe6ae100c1aeb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/24f723436e62598c9dddee2a8573d6992504dc5d", - "reference": "24f723436e62598c9dddee2a8573d6992504dc5d", + "url": "https://api.github.com/repos/symfony/Console/zipball/748beed2a1e73179c3f5154d33fe6ae100c1aeb1", + "reference": "748beed2a1e73179c3f5154d33fe6ae100c1aeb1", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { + "psr/log": "~1.0", "symfony/event-dispatcher": "~2.1" }, "suggest": { + "psr/log": "For using the console logger", "symfony/event-dispatcher": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -354,41 +355,42 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Console Component", "homepage": "http://symfony.com", - "time": "2014-05-14 21:48:29" + "time": "2014-08-14 16:10:54" }, { "name": "symfony/event-dispatcher", - "version": "v2.4.5", + "version": "v2.5.4", "target-dir": "Symfony/Component/EventDispatcher", "source": { "type": "git", "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "e539602e5455aa086c0e81e604745af7789e4d8a" + "reference": "8faf5cc7e80fde74a650a36e60d32ce3c3e0457b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e539602e5455aa086c0e81e604745af7789e4d8a", - "reference": "e539602e5455aa086c0e81e604745af7789e4d8a", + "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/8faf5cc7e80fde74a650a36e60d32ce3c3e0457b", + "reference": "8faf5cc7e80fde74a650a36e60d32ce3c3e0457b", "shasum": "" }, "require": { "php": ">=5.3.3" }, "require-dev": { - "symfony/dependency-injection": "~2.0" + "psr/log": "~1.0", + "symfony/config": "~2.0", + "symfony/dependency-injection": "~2.0", + "symfony/stopwatch": "~2.2" }, "suggest": { "symfony/dependency-injection": "", @@ -397,7 +399,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -410,34 +412,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony EventDispatcher Component", "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:31" + "time": "2014-07-28 13:20:46" }, { "name": "symfony/filesystem", - "version": "v2.4.5", + "version": "v2.5.4", "target-dir": "Symfony/Component/Filesystem", "source": { "type": "git", "url": "https://github.com/symfony/Filesystem.git", - "reference": "a3af8294bcce4a7c1b2892363b0c9d8109affad4" + "reference": "a765efd199e02ff4001c115c318e219030be9364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a3af8294bcce4a7c1b2892363b0c9d8109affad4", - "reference": "a3af8294bcce4a7c1b2892363b0c9d8109affad4", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a765efd199e02ff4001c115c318e219030be9364", + "reference": "a765efd199e02ff4001c115c318e219030be9364", "shasum": "" }, "require": { @@ -446,7 +446,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -459,34 +459,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Filesystem Component", "homepage": "http://symfony.com", - "time": "2014-04-16 10:34:31" + "time": "2014-09-03 09:00:14" }, { "name": "symfony/stopwatch", - "version": "v2.4.5", + "version": "v2.5.4", "target-dir": "Symfony/Component/Stopwatch", "source": { "type": "git", "url": "https://github.com/symfony/Stopwatch.git", - "reference": "343bcc0360f2c22f371884b8f6a9fee8d1aa431a" + "reference": "22ab4f76cdeefd38b00022a6be5709190a2fd046" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/343bcc0360f2c22f371884b8f6a9fee8d1aa431a", - "reference": "343bcc0360f2c22f371884b8f6a9fee8d1aa431a", + "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/22ab4f76cdeefd38b00022a6be5709190a2fd046", + "reference": "22ab4f76cdeefd38b00022a6be5709190a2fd046", "shasum": "" }, "require": { @@ -495,7 +493,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -508,34 +506,32 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Stopwatch Component", "homepage": "http://symfony.com", - "time": "2014-04-18 20:37:09" + "time": "2014-08-14 16:10:54" }, { "name": "symfony/yaml", - "version": "v2.4.5", + "version": "v2.5.4", "target-dir": "Symfony/Component/Yaml", "source": { "type": "git", "url": "https://github.com/symfony/Yaml.git", - "reference": "fd22bb88c3a6f73c898b39bec185a9e211b06265" + "reference": "01a7695bcfb013d0a15c6757e15aae120342986f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/fd22bb88c3a6f73c898b39bec185a9e211b06265", - "reference": "fd22bb88c3a6f73c898b39bec185a9e211b06265", + "url": "https://api.github.com/repos/symfony/Yaml/zipball/01a7695bcfb013d0a15c6757e15aae120342986f", + "reference": "01a7695bcfb013d0a15c6757e15aae120342986f", "shasum": "" }, "require": { @@ -544,7 +540,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -557,20 +553,18 @@ "MIT" ], "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, { "name": "Symfony Community", "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], "description": "Symfony Yaml Component", "homepage": "http://symfony.com", - "time": "2014-05-12 09:27:48" + "time": "2014-08-31 03:22:04" } ], "aliases": [ @@ -580,6 +574,7 @@ "stability-flags": { "satooshi/php-coveralls": 20 }, + "prefer-stable": false, "platform": { "php": ">= 5.3.3" }, diff --git a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php index 721190fdd008..7056235cd9ff 100644 --- a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php +++ b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailLexer.php @@ -31,10 +31,13 @@ class EmailLexer extends AbstractLexer const S_SEMICOLON = 275; const S_OPENQBRACKET = 276; const S_CLOSEQBRACKET = 277; + const S_SLASH = 278; const S_EMPTY = null; const GENERIC = 300; const CRLF = 301; const INVALID = 302; + const ASCII_INVALID_FROM = 127; + const ASCII_INVALID_TO = 199; /** * US-ASCII visible characters not valid for atext (@link http://tools.ietf.org/html/rfc5322#section-3.2.3) @@ -52,6 +55,7 @@ class EmailLexer extends AbstractLexer ';' => self::S_SEMICOLON, '@' => self::S_AT, '\\' => self::S_BACKSLASH, + '/' => self::S_SLASH, ',' => self::S_COMMA, '.' => self::S_DOT, '"' => self::S_DQUOTE, @@ -67,14 +71,31 @@ class EmailLexer extends AbstractLexer '>' => self::S_GREATERTHAN, '{' => self::S_OPENQBRACKET, '}' => self::S_CLOSEQBRACKET, - '' => self::S_EMPTY + '' => self::S_EMPTY, + '\0' => self::C_NUL, ); + protected $invalidASCII = array(226 => 1,); + + protected $hasInvalidTokens = false; + protected $previous; + public function reset() + { + $this->hasInvalidTokens = false; + parent::reset(); + } + + public function hasInvalidTokens() + { + return $this->hasInvalidTokens; + } + /** * @param $type * @throws \UnexpectedValueException + * @return boolean */ public function find($type) { @@ -100,7 +121,7 @@ class EmailLexer extends AbstractLexer /** * moveNext * - * @return mixed + * @return boolean */ public function moveNext() { @@ -112,7 +133,7 @@ class EmailLexer extends AbstractLexer /** * Lexical catchable patterns. * - * @return array + * @return string[] */ protected function getCatchablePatterns() { @@ -130,7 +151,7 @@ class EmailLexer extends AbstractLexer /** * Lexical non-catchable patterns. * - * @return array + * @return string[] */ protected function getNonCatchablePatterns() { @@ -146,14 +167,48 @@ class EmailLexer extends AbstractLexer */ protected function getType(&$value) { + + if ($this->isNullType($value)) { + return self::C_NUL; + } + if (isset($this->charValue[$value])) { return $this->charValue[$value]; } - if (preg_match('/[\x10-\x1F]+/', $value)) { + if ($this->isInvalid($value)) { + $this->hasInvalidTokens = true; return self::INVALID; } return self::GENERIC; } + + /** + * @param string $value + */ + protected function isNullType($value) + { + if ($value === "\0") { + return true; + } + + return false; + } + + /** + * @param string $value + */ + protected function isInvalid($value) + { + if (preg_match('/[\x10-\x1F]+/', $value)) { + return true; + } + + if (isset($this->invalidASCII[ord($value)])) { + return true; + } + + return false; + } } diff --git a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php index cfb9ce954d81..0c5d15684186 100644 --- a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php +++ b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailParser.php @@ -28,6 +28,9 @@ class EmailParser $this->domainPartParser = new DomainPart($this->lexer); } + /** + * @param string $str + */ public function parse($str) { $this->lexer->setInput($str); @@ -36,6 +39,10 @@ class EmailParser throw new \InvalidArgumentException('ERR_NOLOCALPART'); } + if ($this->lexer->hasInvalidTokens()) { + throw new \InvalidArgumentException('ERR_INVALID_ATEXT'); + } + $this->localPartParser->parse($str); $this->domainPartParser->parse($str); @@ -78,6 +85,10 @@ class EmailParser return true; } + /** + * @param string $localPart + * @param string $parsedDomainPart + */ protected function addLongEmailWarning($localPart, $parsedDomainPart) { if (strlen($localPart . '@' . $parsedDomainPart) > self::EMAIL_MAX_LENGTH) { diff --git a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php index 34da6364e0d0..d047decf20c3 100644 --- a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php +++ b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/EmailValidator.php @@ -2,8 +2,6 @@ namespace Egulias\EmailValidator; -use Egulias\EmailValidator\Parser\LocalPart; - /** * EmailValidator * @@ -97,7 +95,7 @@ class EmailValidator return false; } - return ($strict) ? (!$this->hasWarnings() && $dns) : true; + return !$strict || (!$this->hasWarnings() && $dns); } /** @@ -146,16 +144,9 @@ class EmailValidator protected function checkDNS() { - $checked = false; - if (!function_exists('dns_get_record') && ( - in_array(self::DNSWARN_NO_RECORD, $this->warnings) && - in_array(self::DNSWARN_NO_MX_RECORD, $this->warnings) - )) { - return $checked; - } + $checked = true; $result = checkdnsrr(trim($this->parser->getParsedDomainPart()), 'MX'); - $checked = true; if (!$result) { $this->warnings[] = self::DNSWARN_NO_RECORD; diff --git a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php index d622b947e0f0..33875a4930b1 100644 --- a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php +++ b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/DomainPart.php @@ -23,6 +23,9 @@ class DomainPart extends Parser if ($this->lexer->token['type'] === EmailLexer::S_EMPTY) { throw new \InvalidArgumentException('ERR_NODOMAIN'); } + if ($this->lexer->token['type'] === EmailLexer::S_HYPHEN) { + throw new \InvalidArgumentException('ERR_DOMAINHYPHENEND'); + } if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) { $this->warnings[] = EmailValidator::DEPREC_COMMENT; @@ -103,6 +106,10 @@ class DomainPart extends Parser do { $prev = $this->lexer->getPrevious(); + if ($this->lexer->token['type'] === EmailLexer::S_SLASH) { + throw new \InvalidArgumentException('ERR_DOMAIN_CHAR_NOT_ALLOWED'); + } + if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) { $this->parseComments(); $this->lexer->moveNext(); @@ -210,6 +217,9 @@ class DomainPart extends Parser return $addressLiteral; } + /** + * @param string $addressLiteral + */ protected function checkIPV4Tag($addressLiteral) { $matchesIP = array(); @@ -295,5 +305,4 @@ class DomainPart extends Parser throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT'); } } - -} \ No newline at end of file +} diff --git a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php index 47c7cc6597bc..4db0ea62a33f 100644 --- a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php +++ b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/LocalPart.php @@ -4,6 +4,7 @@ namespace Egulias\EmailValidator\Parser; use Egulias\EmailValidator\EmailLexer; use Egulias\EmailValidator\EmailValidator; +use \InvalidArgumentException; class LocalPart extends Parser @@ -21,8 +22,7 @@ class LocalPart extends Parser $closingQuote = $this->checkDQUOTE($closingQuote); if ($closingQuote && $parseDQuote) { - $this->parseDoubleQuote(); - $parseDQuote = false; + $parseDQuote = $this->parseDoubleQuote(); } if ($this->lexer->token['type'] === EmailLexer::S_OPENPARENTHESIS) { @@ -56,23 +56,51 @@ class LocalPart extends Parser protected function parseDoubleQuote() { - $special = array ( + $parseAgain = true; + $special = array( EmailLexer::S_CR => true, EmailLexer::S_HTAB => true, EmailLexer::S_LF => true ); + + $invalid = array( + EmailLexer::C_NUL => true, + EmailLexer::S_HTAB => true, + EmailLexer::S_CR => true, + EmailLexer::S_LF => true + ); $setSpecialsWarning = true; $this->lexer->moveNext(); + while ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE && $this->lexer->token) { + $parseAgain = false; if (isset($special[$this->lexer->token['type']]) && $setSpecialsWarning) { $this->warnings[] = EmailValidator::CFWS_FWS; $setSpecialsWarning = false; } - $this->lexer->moveNext(); - } - } + $this->lexer->moveNext(); + + if (!$this->escaped() && isset($invalid[$this->lexer->token['type']])) { + throw new InvalidArgumentException("ERR_EXPECTED_ATEXT"); + } + } + + $prev = $this->lexer->getPrevious(); + + if ($prev['type'] === EmailLexer::S_BACKSLASH) { + if (!$this->checkDQUOTE(false)) { + throw new \InvalidArgumentException("ERR_UNCLOSED_DQUOTE"); + } + } + + if (!$this->lexer->isNextToken(EmailLexer::S_AT) && $prev['type'] !== EmailLexer::S_BACKSLASH) { + throw new \InvalidArgumentException("ERR_EXPECED_AT"); + } + + return $parseAgain; + } protected function isInvalidToken($token, $closingQuote) { diff --git a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php index b62b4055b80a..b66279e299a7 100644 --- a/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php +++ b/core/vendor/egulias/email-validator/src/Egulias/EmailValidator/Parser/Parser.php @@ -124,8 +124,7 @@ abstract class Parser if ($previous['type'] === EmailLexer::S_BACKSLASH && - ($this->lexer->token['type'] === EmailLexer::S_SP || - $this->lexer->token['type'] === EmailLexer::S_HTAB) + $this->lexer->token['type'] !== EmailLexer::GENERIC ) { return true; } @@ -164,6 +163,7 @@ abstract class Parser if ($this->lexer->isNextToken(EmailLexer::GENERIC) && $previous['type'] === EmailLexer::GENERIC) { throw new \InvalidArgumentException('ERR_EXPECTING_ATEXT'); } + $this->warnings[] = EmailValidator::RFC5321_QUOTEDSTRING; try { $this->lexer->find(EmailLexer::S_DQUOTE); @@ -187,4 +187,4 @@ abstract class Parser throw new \InvalidArgumentException("ERR_FWS_CRLF_END"); } } -} \ No newline at end of file +} diff --git a/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailLexerTest.php b/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailLexerTest.php index 5ee3f3e0a8ed..4af771cf1213 100644 --- a/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailLexerTest.php +++ b/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailLexerTest.php @@ -44,6 +44,15 @@ class EmailLexerTests extends \PHPUnit_Framework_TestCase $this->assertTrue($lexer->find(EmailLexer::S_HTAB)); } + public function testLexerHasInvalidTokens() + { + $lexer = new EmailLexer(); + $lexer->setInput(chr(226)); + $lexer->moveNext(); + $lexer->moveNext(); + $this->assertTrue($lexer->hasInvalidTokens()); + } + public function getTokens() { return array( @@ -61,6 +70,7 @@ class EmailLexerTests extends \PHPUnit_Framework_TestCase array("\"", EmailLexer::S_DQUOTE), array("-", EmailLexer::S_HYPHEN), array("\\", EmailLexer::S_BACKSLASH), + array("/", EmailLexer::S_SLASH), array("(", EmailLexer::S_OPENPARENTHESIS), array(")", EmailLexer::S_CLOSEPARENTHESIS), array('<', EmailLexer::S_LOWERTHAN), @@ -74,7 +84,9 @@ class EmailLexerTests extends \PHPUnit_Framework_TestCase array('{', EmailLexer::S_OPENQBRACKET), array('}', EmailLexer::S_CLOSEQBRACKET), array('', EmailLexer::S_EMPTY), - array(chr(31), EmailLexer::INVALID) + array(chr(31), EmailLexer::INVALID), + array(chr(226), EmailLexer::INVALID), + array(chr(0), EmailLexer::C_NUL) ); } } diff --git a/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php b/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php index 81fcf4dff056..e72fde4dd7fe 100644 --- a/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php +++ b/core/vendor/egulias/email-validator/tests/egulias/Tests/EmailValidator/EmailValidatorTest.php @@ -43,6 +43,10 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase array('"user,name"@example.com'), array('"user name"@example.com'), array('"user@name"@example.com'), + array('"\a"@iana.org'), + array('"test\ test"@iana.org'), + array('""@iana.org'), + array('"\""@iana.org'), ); } @@ -57,9 +61,10 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase public function getInvalidEmails() { return array( + array('example.@example.co.uk'), array('example@example@example.co.uk'), - array('(fabien_potencier@example.fr)'), + array('(test_exampel@example.fr)'), array('example(example)example@example.co.uk'), array('.example@localhost'), array('ex\ample@localhost'), @@ -72,6 +77,27 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase array('username@example,com'), array('usern,ame@example.com'), array('user[na]me@example.com'), + array('"""@iana.org'), + array('"\"@iana.org'), + array('"test"test@iana.org'), + array('"test""test"@iana.org'), + array('"test"."test"@iana.org'), + array('"test".test@iana.org'), + array('"test"' . chr(0) . '@iana.org'), + array('"test\"@iana.org'), + array(chr(226) . '@iana.org'), + array('test@' . chr(226) . '.org'), + array('\r\ntest@iana.org'), + array('\r\n test@iana.org'), + array('\r\n \r\ntest@iana.org'), + array('\r\n \r\ntest@iana.org'), + array('\r\n \r\n test@iana.org'), + array('test@iana.org \r\n'), + array('test@iana.org \r\n '), + array('test@iana.org \r\n \r\n'), + array('test@iana.org \r\n\r\n'), + array('test@iana.org \r\n\r\n '), + array('test@iana/icann.org'), ); } @@ -124,6 +150,16 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase $this->assertEquals($warnings, $this->validator->getWarnings()); } + /** + * @dataProvider getInvalidEmailsWithWarnings + */ + public function testInvalidEmailsWithDnsCheckAndStrictMode($warnings, $email) + { + $this->assertFalse($this->validator->isValid($email, true, true)); + + $this->assertEquals($warnings, $this->validator->getWarnings()); + } + public function getInvalidEmailsWithWarnings() { return array( @@ -275,6 +311,17 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase 'parttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpart'. 'toolonglocalparttoolonglocalparttoolonglocalparttoolonglocalpar' ), + array( + array( + EmailValidator::DNSWARN_NO_RECORD, + ), + 'test@test' + ), ); } + + public function testInvalidEmailsWithStrict() + { + $this->assertFalse($this->validator->isValid('"test"@test', false, true)); + } } diff --git a/core/vendor/guzzlehttp/ringphp/CHANGELOG.md b/core/vendor/guzzlehttp/ringphp/CHANGELOG.md new file mode 100644 index 000000000000..ee3ce796e3a5 --- /dev/null +++ b/core/vendor/guzzlehttp/ringphp/CHANGELOG.md @@ -0,0 +1,22 @@ +# CHANGELOG + +## 1.0.3 - 2014-11-03 + +* Setting the `header` stream option as a string to be compatible with GAE. +* Header parsing now ensures that header order is maintained in the parsed + message. + +## 1.0.2 - 2014-10-28 + +* Now correctly honoring a `version` option is supplied in a request. + See https://github.com/guzzle/RingPHP/pull/8 + +## 1.0.1 - 2014-10-26 + +* Fixed a header parsing issue with the `CurlHandler` and `CurlMultiHandler` + that caused cURL requests with multiple responses to merge repsonses together + (e.g., requests with digest authentication). + +## 1.0.0 - 2014-10-12 + +* Initial release. diff --git a/core/vendor/guzzlehttp/ringphp/README.rst b/core/vendor/guzzlehttp/ringphp/README.rst index 1f7a0bc314d2..10374e813b1f 100644 --- a/core/vendor/guzzlehttp/ringphp/README.rst +++ b/core/vendor/guzzlehttp/ringphp/README.rst @@ -2,13 +2,45 @@ RingPHP ======= -Provides low level APIs used to power HTTP clients and servers through a -simple, PHP ``callable`` that accepts a request hash and returns a future -response hash. RingPHP supports both synchronous and asynchronous -workflows by utilizing both futures and `promises `_. +Provides a simple API and specification that abstracts away the details of HTTP +into a single PHP function. RingPHP be used to power HTTP clients and servers +through a PHP function that accepts a request hash and returns a response hash +that is fulfilled using a `promise `_, +allowing RingPHP to support both synchronous and asynchronous workflows. + +By abstracting the implementation details of different HTTP clients and +servers, RingPHP allows you to utilize pluggable HTTP clients and servers +without tying your application to a specific implementation. + +.. code-block:: php + + 'GET', + 'uri' => '/', + 'headers' => [ + 'host' => ['www.google.com'], + 'x-foo' => ['baz'] + ] + ]); + + $response->then(function (array $response) { + echo $response['status']; + }); + + $response->wait(); RingPHP is inspired by Clojure's `Ring `_, -but has been modified to accommodate clients and servers for both blocking -and non-blocking requests. +which, in turn, was inspired by Python's WSGI and Ruby's Rack. RingPHP is +utilized as the handler layer in `Guzzle `_ 5.0+ to send +HTTP requests. -See http://guzzle-ring.readthedocs.org/ for the full online documentation. +Documentation +------------- + +See http://ringphp.readthedocs.org/ for the full online documentation. diff --git a/core/vendor/guzzlehttp/ringphp/docs/index.rst b/core/vendor/guzzlehttp/ringphp/docs/index.rst index 892a50e2209a..3ac544796363 100644 --- a/core/vendor/guzzlehttp/ringphp/docs/index.rst +++ b/core/vendor/guzzlehttp/ringphp/docs/index.rst @@ -2,23 +2,49 @@ RingPHP ======= -Provides low level APIs used to power HTTP clients and servers through a -simple, PHP ``callable`` that accepts a request hash and returns a future -response hash. RingPHP supports both synchronous and asynchronous -workflows by utilizing both futures and `promises `_. +Provides a simple API and specification that abstracts away the details of HTTP +into a single PHP function. RingPHP be used to power HTTP clients and servers +through a PHP function that accepts a request hash and returns a response hash +that is fulfilled using a `promise `_, +allowing RingPHP to support both synchronous and asynchronous workflows. -RingPHP is inspired by Clojure's `Ring `_, -but has been modified to accommodate clients and servers for both blocking -and non-blocking requests. - -RingPHP is utilized as the handler layer in -`Guzzle `_ 5.0+ to send HTTP requests. +By abstracting the implementation details of different HTTP clients and +servers, RingPHP allows you to utilize pluggable HTTP clients and servers +without tying your application to a specific implementation. .. toctree:: - :maxdepth: 1 + :maxdepth: 2 - spec - futures - client_middleware - client_handlers - testing + spec + futures + client_middleware + client_handlers + testing + +.. code-block:: php + + 'GET', + 'uri' => '/', + 'headers' => [ + 'host' => ['www.google.com'], + 'x-foo' => ['baz'] + ] + ]); + + $response->then(function (array $response) { + echo $response['status']; + }); + + $response->wait(); + +RingPHP is inspired by Clojure's `Ring `_, +which, in turn, was inspired by Python's WSGI and Ruby's Rack. RingPHP is +utilized as the handler layer in `Guzzle `_ 5.0+ to send +HTTP requests. diff --git a/core/vendor/guzzlehttp/ringphp/docs/spec.rst b/core/vendor/guzzlehttp/ringphp/docs/spec.rst index a8cdffad3eeb..bc9107898f4a 100644 --- a/core/vendor/guzzlehttp/ringphp/docs/spec.rst +++ b/core/vendor/guzzlehttp/ringphp/docs/spec.rst @@ -8,7 +8,7 @@ middleware. Handlers -------- -Handlers are implemented as a PHP ``callable`` that accept a request array and +Handlers are implemented as a PHP ``callable`` that accept a request array and return a response array (``GuzzleHttp\Ring\Future\FutureArrayInterface``). For example: diff --git a/core/vendor/guzzlehttp/ringphp/src/Client/CurlFactory.php b/core/vendor/guzzlehttp/ringphp/src/Client/CurlFactory.php index 22d9f5cccaec..f535a3db1317 100644 --- a/core/vendor/guzzlehttp/ringphp/src/Client/CurlFactory.php +++ b/core/vendor/guzzlehttp/ringphp/src/Client/CurlFactory.php @@ -76,20 +76,17 @@ class CurlFactory $response['effective_url'] = $response['transfer_stats']['url']; } - if (isset($headers[0])) { + if (!empty($headers)) { $startLine = explode(' ', array_shift($headers), 3); - // Trim out 100-Continue start-lines - if ($startLine[1] == '100') { - $startLine = explode(' ', array_shift($headers), 3); - } - $response['headers'] = Core::headersFromLines($headers); + $headerList = Core::headersFromLines($headers); + $response['headers'] = $headerList; $response['status'] = isset($startLine[1]) ? (int) $startLine[1] : null; $response['reason'] = isset($startLine[2]) ? $startLine[2] : null; $response['body'] = $body; Core::rewindBody($response); } - return !empty($response['curl']['errno']) || !isset($startLine[1]) + return !empty($response['curl']['errno']) || !isset($response['status']) ? self::createErrorResponse($handler, $request, $response) : $response; } @@ -159,6 +156,7 @@ class CurlFactory private function getDefaultOptions(array $request, array &$headers) { $url = Core::url($request); + $startingResponse = false; $options = [ '_headers' => $request['headers'], @@ -167,15 +165,24 @@ class CurlFactory CURLOPT_RETURNTRANSFER => false, CURLOPT_HEADER => false, CURLOPT_CONNECTTIMEOUT => 150, - CURLOPT_HEADERFUNCTION => function ($ch, $h) use (&$headers) { - $length = strlen($h); - if ($value = trim($h)) { - $headers[] = trim($h); + CURLOPT_HEADERFUNCTION => function ($ch, $h) use (&$headers, &$startingResponse) { + $value = trim($h); + if ($value === '') { + $startingResponse = true; + } elseif ($startingResponse) { + $startingResponse = false; + $headers = [$value]; + } else { + $headers[] = $value; } - return $length; + return strlen($h); }, ]; + if (isset($request['version'])) { + $options[CURLOPT_HTTP_VERSION] = $request['version'] == 1.1 ? CURL_HTTP_VERSION_1_1 : CURL_HTTP_VERSION_1_0; + } + if (defined('CURLOPT_PROTOCOLS')) { $options[CURLOPT_PROTOCOLS] = CURLPROTO_HTTP | CURLPROTO_HTTPS; } diff --git a/core/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php b/core/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php index 905b2b6d6664..3a18ec6b89d2 100644 --- a/core/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php +++ b/core/vendor/guzzlehttp/ringphp/src/Client/StreamHandler.php @@ -214,10 +214,10 @@ class StreamHandler private function getDefaultOptions(array $request) { - $headers = []; + $headers = ""; foreach ($request['headers'] as $name => $value) { foreach ((array) $value as $val) { - $headers[] = "$name: $val"; + $headers .= "$name: $val\r\n"; } } @@ -225,7 +225,7 @@ class StreamHandler 'http' => [ 'method' => $request['http_method'], 'header' => $headers, - 'protocol_version' => '1.1', + 'protocol_version' => isset($request['version']) ? $request['version'] : 1.1, 'ignore_errors' => true, 'follow_location' => 0, ], @@ -236,10 +236,12 @@ class StreamHandler $context['http']['content'] = $body; // Prevent the HTTP handler from adding a Content-Type header. if (!Core::hasHeader($request, 'Content-Type')) { - $context['http']['header'][] .= "Content-Type:"; + $context['http']['header'] .= "Content-Type:\r\n"; } } + $context['http']['header'] = rtrim($context['http']['header']); + return $context; } diff --git a/core/vendor/guzzlehttp/ringphp/src/Core.php b/core/vendor/guzzlehttp/ringphp/src/Core.php index 112d755bd3fd..dd7d1a0c5a7f 100644 --- a/core/vendor/guzzlehttp/ringphp/src/Core.php +++ b/core/vendor/guzzlehttp/ringphp/src/Core.php @@ -41,24 +41,17 @@ class Core */ public static function headerLines($message, $header) { - // Slight optimization for exact matches. - if (isset($message['headers'][$header])) { - return $message['headers'][$header]; - } + $result = []; - // Check for message with no headers after the "fast" isset check. - if (!isset($message['headers'])) { - return []; - } - - // Iterate and case-insensitively find the header by name. - foreach ($message['headers'] as $name => $value) { - if (!strcasecmp($name, $header)) { - return $value; + if (!empty($message['headers'])) { + foreach ($message['headers'] as $name => $value) { + if (!strcasecmp($name, $header)) { + $result = array_merge($result, $value); + } } } - return []; + return $result; } /** @@ -91,18 +84,17 @@ class Core */ public static function firstHeader($message, $header) { - $match = self::headerLines($message, $header); - - if (!isset($match[0])) { - return null; + if (!empty($message['headers'])) { + foreach ($message['headers'] as $name => $value) { + if (!strcasecmp($name, $header)) { + // Return the match itself if it is a single value. + $pos = strpos($value[0], ','); + return $pos ? substr($value[0], 0, $pos) : $value[0]; + } + } } - // Return the match itself if it is a single value. - if (!($pos = strpos($match[0], ','))) { - return $match[0]; - } - - return substr($match[0], 0, $pos); + return null; } /** @@ -115,7 +107,15 @@ class Core */ public static function hasHeader($message, $header) { - return (bool) self::headerLines($message, $header); + if (!empty($message['headers'])) { + foreach ($message['headers'] as $name => $value) { + if (!strcasecmp($name, $header)) { + return true; + } + } + } + + return false; } /** diff --git a/core/vendor/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php b/core/vendor/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php index 0d15ed7c9550..e6a7ca77c3d9 100644 --- a/core/vendor/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php +++ b/core/vendor/guzzlehttp/ringphp/src/Future/BaseFutureTrait.php @@ -28,9 +28,7 @@ trait BaseFutureTrait private $isRealized = false; /** - * @param PromiseInterface $promise Promise to shadow with the future. Only - * supply if the promise is not owned - * by the deferred value. + * @param PromiseInterface $promise Promise to shadow with the future. * @param callable $wait Function that blocks until the deferred * computation has been resolved. This * function MUST resolve the deferred value diff --git a/core/vendor/guzzlehttp/ringphp/tests/Client/CurlFactoryTest.php b/core/vendor/guzzlehttp/ringphp/tests/Client/CurlFactoryTest.php index 055e43a3a40e..0f787c931b0f 100644 --- a/core/vendor/guzzlehttp/ringphp/tests/Client/CurlFactoryTest.php +++ b/core/vendor/guzzlehttp/ringphp/tests/Client/CurlFactoryTest.php @@ -404,6 +404,19 @@ class CurlFactoryTest extends \PHPUnit_Framework_TestCase $this->assertEquals($content, Core::body($response)); } + public function testProtocolVersion() + { + Server::flush(); + Server::enqueue([['status' => 200]]); + $a = new CurlMultiHandler(); + $a([ + 'http_method' => 'GET', + 'headers' => ['host' => [Server::$host]], + 'version' => 1.0, + ]); + $this->assertEquals(CURL_HTTP_VERSION_1_0, $_SERVER['_curl'][CURLOPT_HTTP_VERSION]); + } + /** * @expectedException \InvalidArgumentException */ @@ -570,7 +583,7 @@ class CurlFactoryTest extends \PHPUnit_Framework_TestCase 'http_method' => 'GET', 'headers' => [ 'host' => [Server::$host], - 'content-length' => 3, + 'content-length' => [3], ], 'body' => 'foo', ]); @@ -709,6 +722,71 @@ class CurlFactoryTest extends \PHPUnit_Framework_TestCase ); $this->assertInstanceOf('GuzzleHttp\Ring\Exception\ConnectException', $response['error']); } + + public function testParsesLastResponseOnly() + { + $response1 = [ + 'status' => 301, + 'headers' => [ + 'Content-Length' => ['0'], + 'Location' => ['/foo'] + ] + ]; + + $response2 = [ + 'status' => 200, + 'headers' => [ + 'Content-Length' => ['0'], + 'Foo' => ['bar'] + ] + ]; + + Server::flush(); + Server::enqueue([$response1, $response2]); + + $a = new CurlMultiHandler(); + $response = $a([ + 'http_method' => 'GET', + 'headers' => ['Host' => [Server::$host]], + 'client' => [ + 'curl' => [ + CURLOPT_FOLLOWLOCATION => true + ] + ] + ])->wait(); + + $this->assertEquals(1, $response['transfer_stats']['redirect_count']); + $this->assertEquals('http://127.0.0.1:8125/foo', $response['effective_url']); + $this->assertEquals(['bar'], $response['headers']['Foo']); + $this->assertEquals(200, $response['status']); + $this->assertFalse(Core::hasHeader($response, 'Location')); + } + + public function testMaintainsMultiHeaderOrder() + { + Server::flush(); + Server::enqueue([ + [ + 'status' => 200, + 'headers' => [ + 'Content-Length' => ['0'], + 'Foo' => ['a', 'b'], + 'foo' => ['c', 'd'], + ] + ] + ]); + + $a = new CurlMultiHandler(); + $response = $a([ + 'http_method' => 'GET', + 'headers' => ['Host' => [Server::$host]] + ])->wait(); + + $this->assertEquals( + ['a', 'b', 'c', 'd'], + Core::headerLines($response, 'Foo') + ); + } } } diff --git a/core/vendor/guzzlehttp/ringphp/tests/Client/StreamHandlerTest.php b/core/vendor/guzzlehttp/ringphp/tests/Client/StreamHandlerTest.php index 98ff7e7239aa..8f63e29558d9 100644 --- a/core/vendor/guzzlehttp/ringphp/tests/Client/StreamHandlerTest.php +++ b/core/vendor/guzzlehttp/ringphp/tests/Client/StreamHandlerTest.php @@ -202,6 +202,20 @@ class StreamHandlerTest extends \PHPUnit_Framework_TestCase $this->assertSame($content, Core::body($response)); } + public function testProtocolVersion() + { + $this->queueRes(); + $handler = new StreamHandler(); + $handler([ + 'http_method' => 'GET', + 'uri' => '/', + 'headers' => ['host' => [Server::$host]], + 'version' => 1.0, + ]); + + $this->assertEquals(1.0, Server::received()[0]['version']); + } + protected function getSendResult(array $opts) { $this->queueRes(); diff --git a/core/vendor/guzzlehttp/ringphp/tests/CoreTest.php b/core/vendor/guzzlehttp/ringphp/tests/CoreTest.php index 240fb69f3e84..49522f26b7e8 100644 --- a/core/vendor/guzzlehttp/ringphp/tests/CoreTest.php +++ b/core/vendor/guzzlehttp/ringphp/tests/CoreTest.php @@ -15,6 +15,22 @@ class CoreTest extends \PHPUnit_Framework_TestCase $this->assertNull(Core::firstHeader([], 'Foo')); } + public function testChecksIfHasHeader() + { + $message = [ + 'headers' => [ + 'Foo' => ['Bar', 'Baz'], + 'foo' => ['hello'], + 'bar' => ['1'] + ] + ]; + $this->assertTrue(Core::hasHeader($message, 'Foo')); + $this->assertTrue(Core::hasHeader($message, 'foo')); + $this->assertTrue(Core::hasHeader($message, 'FoO')); + $this->assertTrue(Core::hasHeader($message, 'bar')); + $this->assertFalse(Core::hasHeader($message, 'barr')); + } + public function testReturnsFirstHeaderWhenSimple() { $this->assertEquals('Bar', Core::firstHeader([ @@ -37,6 +53,19 @@ class CoreTest extends \PHPUnit_Framework_TestCase ); } + public function testExtractsCaseInsensitiveHeaderLines() + { + $this->assertEquals( + ['a', 'b', 'c', 'd'], + Core::headerLines([ + 'headers' => [ + 'foo' => ['a', 'b'], + 'Foo' => ['c', 'd'] + ] + ], 'foo') + ); + } + public function testExtractsHeaderLines() { $this->assertEquals( diff --git a/core/vendor/sebastian/environment/composer.json b/core/vendor/sebastian/environment/composer.json index 3625eca10cdb..15d81887b736 100644 --- a/core/vendor/sebastian/environment/composer.json +++ b/core/vendor/sebastian/environment/composer.json @@ -23,7 +23,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "1.2.x-dev" } } } diff --git a/core/vendor/sebastian/environment/src/Console.php b/core/vendor/sebastian/environment/src/Console.php index 38b3ba044b7c..3c7b7f9ebfb1 100644 --- a/core/vendor/sebastian/environment/src/Console.php +++ b/core/vendor/sebastian/environment/src/Console.php @@ -68,4 +68,28 @@ class Console return function_exists('posix_isatty') && @posix_isatty(STDOUT); } + + /** + * Returns the number of columns of the terminal. + * + * @return integer + */ + public function getNumberOfColumns() + { + // Windows terminals have a fixed size of 80 + // but one column is used for the cursor. + if (DIRECTORY_SEPARATOR == '\\') { + return 79; + } + + if (preg_match('#\d+ (\d+)#', shell_exec('stty size'), $match) === 1) { + return (int) $match[1]; + } + + if (preg_match('#columns = (\d+);#', shell_exec('stty'), $match) === 1) { + return (int) $match[1]; + } + + return 80; + } } diff --git a/core/vendor/sebastian/environment/tests/ConsoleTest.php b/core/vendor/sebastian/environment/tests/ConsoleTest.php index 0ac7a0b7dba7..cb80a62c3549 100644 --- a/core/vendor/sebastian/environment/tests/ConsoleTest.php +++ b/core/vendor/sebastian/environment/tests/ConsoleTest.php @@ -62,6 +62,14 @@ class ConsoleTest extends PHPUnit_Framework_TestCase */ public function testCanDetectColorSupport() { - $this->assertTrue($this->console->hasColorSupport()); + $this->assertInternalType('boolean', $this->console->hasColorSupport()); + } + + /** + * @covers \SebastianBergmann\Environment\Console::hasColorSupport + */ + public function testCanDetectNumberOfColumns() + { + $this->assertInternalType('integer', $this->console->getNumberOfColumns()); } } diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php index 023f7ba1a62e..4fdf39b222d2 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php @@ -37,8 +37,8 @@ namespace Symfony\Component\ClassLoader; * // register classes with namespaces * $loader->registerNamespaces(array( * 'Symfony\Component' => __DIR__.'/component', - * 'Symfony' => __DIR__.'/framework', - * 'Sensio' => array(__DIR__.'/src', __DIR__.'/vendor'), + * 'Symfony' => __DIR__.'/framework', + * 'Sensio' => array(__DIR__.'/src', __DIR__.'/vendor'), * )); * * // register a library using the PEAR naming convention diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassLoader.php index 1a5e35543541..b00f7da17f23 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassLoader.php +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassLoader.php @@ -107,7 +107,7 @@ class ClassLoader */ public function setUseIncludePath($useIncludePath) { - $this->useIncludePath = $useIncludePath; + $this->useIncludePath = (bool) $useIncludePath; } /** diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassMapGenerator.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassMapGenerator.php index efc95ec8be94..6b618cbe6328 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassMapGenerator.php +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassMapGenerator.php @@ -86,7 +86,7 @@ class ClassMapGenerator private static function findClasses($path) { $contents = file_get_contents($path); - $tokens = token_get_all($contents); + $tokens = token_get_all($contents); $classes = array(); diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md index fc222b1c9e39..d673688551dd 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md @@ -9,51 +9,63 @@ standard or the PEAR naming convention. First, register the autoloader: - require_once __DIR__.'/src/Symfony/Component/ClassLoader/UniversalClassLoader.php'; +```php +require_once __DIR__.'/src/Symfony/Component/ClassLoader/UniversalClassLoader.php'; - use Symfony\Component\ClassLoader\UniversalClassLoader; +use Symfony\Component\ClassLoader\UniversalClassLoader; - $loader = new UniversalClassLoader(); - $loader->register(); +$loader = new UniversalClassLoader(); +$loader->register(); +``` Then, register some namespaces with the `registerNamespace()` method: - $loader->registerNamespace('Symfony', __DIR__.'/src'); - $loader->registerNamespace('Monolog', __DIR__.'/vendor/monolog/src'); +```php +$loader->registerNamespace('Symfony', __DIR__.'/src'); +$loader->registerNamespace('Monolog', __DIR__.'/vendor/monolog/src'); +``` The `registerNamespace()` method takes a namespace prefix and a path where to look for the classes as arguments. You can also register a sub-namespaces: - $loader->registerNamespace('Doctrine\\Common', __DIR__.'/vendor/doctrine-common/lib'); +```php +$loader->registerNamespace('Doctrine\\Common', __DIR__.'/vendor/doctrine-common/lib'); +``` The order of registration is significant and the first registered namespace takes precedence over later registered one. You can also register more than one path for a given namespace: - $loader->registerNamespace('Symfony', array(__DIR__.'/src', __DIR__.'/symfony/src')); +```php +$loader->registerNamespace('Symfony', array(__DIR__.'/src', __DIR__.'/symfony/src')); +``` Alternatively, you can use the `registerNamespaces()` method to register more than one namespace at once: - $loader->registerNamespaces(array( - 'Symfony' => array(__DIR__.'/src', __DIR__.'/symfony/src'), - 'Doctrine\\Common' => __DIR__.'/vendor/doctrine-common/lib', - 'Doctrine' => __DIR__.'/vendor/doctrine/lib', - 'Monolog' => __DIR__.'/vendor/monolog/src', - )); +```php +$loader->registerNamespaces(array( + 'Symfony' => array(__DIR__.'/src', __DIR__.'/symfony/src'), + 'Doctrine\\Common' => __DIR__.'/vendor/doctrine-common/lib', + 'Doctrine' => __DIR__.'/vendor/doctrine/lib', + 'Monolog' => __DIR__.'/vendor/monolog/src', +)); +``` For better performance, you can use the APC based version of the universal class loader: - require_once __DIR__.'/src/Symfony/Component/ClassLoader/UniversalClassLoader.php'; - require_once __DIR__.'/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php'; +```php +require_once __DIR__.'/src/Symfony/Component/ClassLoader/UniversalClassLoader.php'; +require_once __DIR__.'/src/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php'; - use Symfony\Component\ClassLoader\ApcUniversalClassLoader; +use Symfony\Component\ClassLoader\ApcUniversalClassLoader; - $loader = new ApcUniversalClassLoader('apc.prefix.'); +$loader = new ApcUniversalClassLoader('apc.prefix.'); +``` Furthermore, the component provides tools to aggregate classes into a single file, which is especially useful to improve performance on servers that do not diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/Tests/ClassMapGeneratorTest.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/Tests/ClassMapGeneratorTest.php index 35617e363ea4..be2385ed9726 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/Tests/ClassMapGeneratorTest.php +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/Tests/ClassMapGeneratorTest.php @@ -72,9 +72,9 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase { $data = array( array(__DIR__.'/Fixtures/Namespaced', array( - 'Namespaced\\Bar' => realpath(__DIR__).'/Fixtures/Namespaced/Bar.php', - 'Namespaced\\Foo' => realpath(__DIR__).'/Fixtures/Namespaced/Foo.php', - 'Namespaced\\Baz' => realpath(__DIR__).'/Fixtures/Namespaced/Baz.php', + 'Namespaced\\Bar' => realpath(__DIR__).'/Fixtures/Namespaced/Bar.php', + 'Namespaced\\Foo' => realpath(__DIR__).'/Fixtures/Namespaced/Foo.php', + 'Namespaced\\Baz' => realpath(__DIR__).'/Fixtures/Namespaced/Baz.php', 'Namespaced\\WithComments' => realpath(__DIR__).'/Fixtures/Namespaced/WithComments.php', ), ), @@ -85,22 +85,22 @@ class ClassMapGeneratorTest extends \PHPUnit_Framework_TestCase 'NamespaceCollision\\C\\B\\Foo' => realpath(__DIR__).'/Fixtures/beta/NamespaceCollision/C/B/Foo.php', )), array(__DIR__.'/Fixtures/Pearlike', array( - 'Pearlike_Foo' => realpath(__DIR__).'/Fixtures/Pearlike/Foo.php', - 'Pearlike_Bar' => realpath(__DIR__).'/Fixtures/Pearlike/Bar.php', - 'Pearlike_Baz' => realpath(__DIR__).'/Fixtures/Pearlike/Baz.php', + 'Pearlike_Foo' => realpath(__DIR__).'/Fixtures/Pearlike/Foo.php', + 'Pearlike_Bar' => realpath(__DIR__).'/Fixtures/Pearlike/Bar.php', + 'Pearlike_Baz' => realpath(__DIR__).'/Fixtures/Pearlike/Baz.php', 'Pearlike_WithComments' => realpath(__DIR__).'/Fixtures/Pearlike/WithComments.php', )), array(__DIR__.'/Fixtures/classmap', array( - 'Foo\\Bar\\A' => realpath(__DIR__).'/Fixtures/classmap/sameNsMultipleClasses.php', - 'Foo\\Bar\\B' => realpath(__DIR__).'/Fixtures/classmap/sameNsMultipleClasses.php', - 'A' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', - 'Alpha\\A' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', - 'Alpha\\B' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', - 'Beta\\A' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', - 'Beta\\B' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', + 'Foo\\Bar\\A' => realpath(__DIR__).'/Fixtures/classmap/sameNsMultipleClasses.php', + 'Foo\\Bar\\B' => realpath(__DIR__).'/Fixtures/classmap/sameNsMultipleClasses.php', + 'A' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', + 'Alpha\\A' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', + 'Alpha\\B' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', + 'Beta\\A' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', + 'Beta\\B' => realpath(__DIR__).'/Fixtures/classmap/multipleNs.php', 'ClassMap\\SomeInterface' => realpath(__DIR__).'/Fixtures/classmap/SomeInterface.php', - 'ClassMap\\SomeParent' => realpath(__DIR__).'/Fixtures/classmap/SomeParent.php', - 'ClassMap\\SomeClass' => realpath(__DIR__).'/Fixtures/classmap/SomeClass.php', + 'ClassMap\\SomeParent' => realpath(__DIR__).'/Fixtures/classmap/SomeParent.php', + 'ClassMap\\SomeClass' => realpath(__DIR__).'/Fixtures/classmap/SomeClass.php', )), ); diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php index 8a3149f31988..9b2dff40374e 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php @@ -32,8 +32,8 @@ namespace Symfony\Component\ClassLoader; * // register classes with namespaces * $loader->registerNamespaces(array( * 'Symfony\Component' => __DIR__.'/component', - * 'Symfony' => __DIR__.'/framework', - * 'Sensio' => array(__DIR__.'/src', __DIR__.'/vendor'), + * 'Symfony' => __DIR__.'/framework', + * 'Sensio' => array(__DIR__.'/src', __DIR__.'/vendor'), * )); * * // register a library using the PEAR naming convention @@ -74,7 +74,7 @@ class UniversalClassLoader */ public function useIncludePath($useIncludePath) { - $this->useIncludePath = $useIncludePath; + $this->useIncludePath = (bool) $useIncludePath; } /** diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/composer.json b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/composer.json index 84ce6a0a633a..f323a76c6f5a 100644 --- a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/composer.json +++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/composer.json @@ -28,7 +28,7 @@ "target-dir": "Symfony/Component/ClassLoader", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } } } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Node/Specificity.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Node/Specificity.php index 96bbd11f515c..d0c215e0f2ed 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Node/Specificity.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Node/Specificity.php @@ -75,4 +75,28 @@ class Specificity { return $this->a * self::A_FACTOR + $this->b * self::B_FACTOR + $this->c * self::C_FACTOR; } + + /** + * Returns -1 if the object specificity is lower than the argument, + * 0 if they are equal, and 1 if the argument is lower + * + * @param Specificity $specificity + * @return int + */ + public function compareTo(Specificity $specificity) + { + if ($this->a !== $specificity->a) { + return $this->a > $specificity->a ? 1 : -1; + } + + if ($this->b !== $specificity->b) { + return $this->b > $specificity->b ? 1 : -1; + } + + if ($this->c !== $specificity->c) { + return $this->c > $specificity->c ? 1 : -1; + } + + return 0; + } } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Parser/Token.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Parser/Token.php index 4adfca889d86..ba5d657f7bff 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Parser/Token.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Parser/Token.php @@ -21,13 +21,13 @@ namespace Symfony\Component\CssSelector\Parser; */ class Token { - const TYPE_FILE_END = 'eof'; - const TYPE_DELIMITER = 'delimiter'; + const TYPE_FILE_END = 'eof'; + const TYPE_DELIMITER = 'delimiter'; const TYPE_WHITESPACE = 'whitespace'; const TYPE_IDENTIFIER = 'identifier'; - const TYPE_HASH = 'hash'; - const TYPE_NUMBER = 'number'; - const TYPE_STRING = 'string'; + const TYPE_HASH = 'hash'; + const TYPE_NUMBER = 'number'; + const TYPE_STRING = 'string'; /** * @var int diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/README.md b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/README.md index fae1d4bc9a45..e0212b1570cf 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/README.md +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/README.md @@ -6,9 +6,11 @@ CssSelector converts CSS selectors to XPath expressions. The component only goal is to convert CSS selectors to their XPath equivalents: - use Symfony\Component\CssSelector\CssSelector; +```php +use Symfony\Component\CssSelector\CssSelector; - print CssSelector::toXPath('div.item > h4 > a'); +print CssSelector::toXPath('div.item > h4 > a'); +``` HTML and XML are different -------------------------- @@ -18,11 +20,13 @@ default. If you need to use this component with `XML` documents, you have to disable this `HTML` extension. That's because, `HTML` tag & attribute names are always lower-cased, but case-sensitive in `XML`: - // disable `HTML` extension: - CssSelector::disableHtmlExtension(); +```php +// disable `HTML` extension: +CssSelector::disableHtmlExtension(); - // re-enable `HTML` extension: - CssSelector::enableHtmlExtension(); +// re-enable `HTML` extension: +CssSelector::enableHtmlExtension(); +``` When the `HTML` extension is enabled, tag names are lower-cased, attribute names are lower-cased, the following extra pseudo-classes are supported: diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Tests/Node/SpecificityTest.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Tests/Node/SpecificityTest.php index 1f200cffe4f0..c34fe5fc7348 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Tests/Node/SpecificityTest.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/Tests/Node/SpecificityTest.php @@ -37,4 +37,26 @@ class SpecificityTest extends \PHPUnit_Framework_TestCase array(new Specificity(4, 3, 2), 432), ); } + + /** @dataProvider getCompareTestData */ + public function testCompareTo(Specificity $a, Specificity $b, $result) + { + $this->assertEquals($result, $a->compareTo($b)); + } + + public function getCompareTestData() + { + return array( + array(new Specificity(0, 0, 0), new Specificity(0, 0, 0), 0), + array(new Specificity(0, 0, 1), new Specificity(0, 0, 1), 0), + array(new Specificity(0, 0, 2), new Specificity(0, 0, 1), 1), + array(new Specificity(0, 0, 2), new Specificity(0, 0, 3), -1), + array(new Specificity(0, 4, 0), new Specificity(0, 4, 0), 0), + array(new Specificity(0, 6, 0), new Specificity(0, 5, 11), 1), + array(new Specificity(0, 7, 0), new Specificity(0, 8, 0), -1), + array(new Specificity(9, 0, 0), new Specificity(9, 0, 0), 0), + array(new Specificity(11, 0, 0), new Specificity(10, 11, 0), 1), + array(new Specificity(12, 11, 0), new Specificity(13, 0, 0), -1), + ); + } } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/AttributeMatchingExtension.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/AttributeMatchingExtension.php index 1b1f00f2863e..31d24b28eff3 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/AttributeMatchingExtension.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/AttributeMatchingExtension.php @@ -31,13 +31,13 @@ class AttributeMatchingExtension extends AbstractExtension { return array( 'exists' => array($this, 'translateExists'), - '=' => array($this, 'translateEquals'), - '~=' => array($this, 'translateIncludes'), - '|=' => array($this, 'translateDashMatch'), - '^=' => array($this, 'translatePrefixMatch'), - '$=' => array($this, 'translateSuffixMatch'), - '*=' => array($this, 'translateSubstringMatch'), - '!=' => array($this, 'translateDifferent'), + '=' => array($this, 'translateEquals'), + '~=' => array($this, 'translateIncludes'), + '|=' => array($this, 'translateDashMatch'), + '^=' => array($this, 'translatePrefixMatch'), + '$=' => array($this, 'translateSuffixMatch'), + '*=' => array($this, 'translateSubstringMatch'), + '!=' => array($this, 'translateDifferent'), ); } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/FunctionExtension.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/FunctionExtension.php index ff8f333ada06..e84947438313 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/FunctionExtension.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/FunctionExtension.php @@ -34,12 +34,12 @@ class FunctionExtension extends AbstractExtension public function getFunctionTranslators() { return array( - 'nth-child' => array($this, 'translateNthChild'), - 'nth-last-child' => array($this, 'translateNthLastChild'), - 'nth-of-type' => array($this, 'translateNthOfType'), + 'nth-child' => array($this, 'translateNthChild'), + 'nth-last-child' => array($this, 'translateNthLastChild'), + 'nth-of-type' => array($this, 'translateNthOfType'), 'nth-last-of-type' => array($this, 'translateNthLastOfType'), - 'contains' => array($this, 'translateContains'), - 'lang' => array($this, 'translateLang'), + 'contains' => array($this, 'translateContains'), + 'lang' => array($this, 'translateLang'), ); } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/HtmlExtension.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/HtmlExtension.php index aef80523dd09..71ed4b4a795b 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/HtmlExtension.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/HtmlExtension.php @@ -45,14 +45,14 @@ class HtmlExtension extends AbstractExtension public function getPseudoClassTranslators() { return array( - 'checked' => array($this, 'translateChecked'), - 'link' => array($this, 'translateLink'), + 'checked' => array($this, 'translateChecked'), + 'link' => array($this, 'translateLink'), 'disabled' => array($this, 'translateDisabled'), - 'enabled' => array($this, 'translateEnabled'), + 'enabled' => array($this, 'translateEnabled'), 'selected' => array($this, 'translateSelected'), - 'invalid' => array($this, 'translateInvalid'), - 'hover' => array($this, 'translateHover'), - 'visited' => array($this, 'translateVisited'), + 'invalid' => array($this, 'translateInvalid'), + 'hover' => array($this, 'translateHover'), + 'visited' => array($this, 'translateVisited'), ); } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/NodeExtension.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/NodeExtension.php index d71baaa96bcd..302f373400ac 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/NodeExtension.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/NodeExtension.php @@ -25,8 +25,8 @@ use Symfony\Component\CssSelector\XPath\XPathExpr; */ class NodeExtension extends AbstractExtension { - const ELEMENT_NAME_IN_LOWER_CASE = 1; - const ATTRIBUTE_NAME_IN_LOWER_CASE = 2; + const ELEMENT_NAME_IN_LOWER_CASE = 1; + const ATTRIBUTE_NAME_IN_LOWER_CASE = 2; const ATTRIBUTE_VALUE_IN_LOWER_CASE = 4; /** @@ -79,15 +79,15 @@ class NodeExtension extends AbstractExtension public function getNodeTranslators() { return array( - 'Selector' => array($this, 'translateSelector'), + 'Selector' => array($this, 'translateSelector'), 'CombinedSelector' => array($this, 'translateCombinedSelector'), - 'Negation' => array($this, 'translateNegation'), - 'Function' => array($this, 'translateFunction'), - 'Pseudo' => array($this, 'translatePseudo'), - 'Attribute' => array($this, 'translateAttribute'), - 'Class' => array($this, 'translateClass'), - 'Hash' => array($this, 'translateHash'), - 'Element' => array($this, 'translateElement'), + 'Negation' => array($this, 'translateNegation'), + 'Function' => array($this, 'translateFunction'), + 'Pseudo' => array($this, 'translatePseudo'), + 'Attribute' => array($this, 'translateAttribute'), + 'Class' => array($this, 'translateClass'), + 'Hash' => array($this, 'translateHash'), + 'Element' => array($this, 'translateElement'), ); } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/PseudoClassExtension.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/PseudoClassExtension.php index d230dd7c483f..d59857225cff 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/PseudoClassExtension.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Extension/PseudoClassExtension.php @@ -30,14 +30,14 @@ class PseudoClassExtension extends AbstractExtension public function getPseudoClassTranslators() { return array( - 'root' => array($this, 'translateRoot'), - 'first-child' => array($this, 'translateFirstChild'), - 'last-child' => array($this, 'translateLastChild'), + 'root' => array($this, 'translateRoot'), + 'first-child' => array($this, 'translateFirstChild'), + 'last-child' => array($this, 'translateLastChild'), 'first-of-type' => array($this, 'translateFirstOfType'), - 'last-of-type' => array($this, 'translateLastOfType'), - 'only-child' => array($this, 'translateOnlyChild'), - 'only-of-type' => array($this, 'translateOnlyOfType'), - 'empty' => array($this, 'translateEmpty'), + 'last-of-type' => array($this, 'translateLastOfType'), + 'only-child' => array($this, 'translateOnlyChild'), + 'only-of-type' => array($this, 'translateOnlyOfType'), + 'empty' => array($this, 'translateEmpty'), ); } diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Translator.php b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Translator.php index 4676677ea488..5675aa610646 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Translator.php +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/XPath/Translator.php @@ -123,17 +123,15 @@ class Translator implements TranslatorInterface $selectors = $this->parseSelectors($cssExpr); /** @var SelectorNode $selector */ - foreach ($selectors as $selector) { + foreach ($selectors as $index => $selector) { if (null !== $selector->getPseudoElement()) { throw new ExpressionErrorException('Pseudo-elements are not supported.'); } + + $selectors[$index] = $this->selectorToXPath($selector, $prefix); } - $translator = $this; - - return implode(' | ', array_map(function (SelectorNode $selector) use ($translator, $prefix) { - return $translator->selectorToXPath($selector, $prefix); - }, $selectors)); + return implode(' | ', $selectors); } /** diff --git a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/composer.json b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/composer.json index 5b4231d79475..d47c77fe6444 100644 --- a/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/composer.json +++ b/core/vendor/symfony/css-selector/Symfony/Component/CssSelector/composer.json @@ -29,7 +29,7 @@ "minimum-stability": "dev", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } } } diff --git a/core/vendor/symfony/debug/Symfony/Component/Debug/CHANGELOG.md b/core/vendor/symfony/debug/Symfony/Component/Debug/CHANGELOG.md index 776468fb7a59..ff7c6af2b7d0 100644 --- a/core/vendor/symfony/debug/Symfony/Component/Debug/CHANGELOG.md +++ b/core/vendor/symfony/debug/Symfony/Component/Debug/CHANGELOG.md @@ -1,6 +1,13 @@ CHANGELOG ========= +2.6.0 +----- + +* generalized ErrorHandler and ExceptionHandler, + with some new methods and others deprecated +* enhanced error messages for uncaught exceptions + 2.5.0 ----- diff --git a/core/vendor/symfony/debug/Symfony/Component/Debug/Debug.php b/core/vendor/symfony/debug/Symfony/Component/Debug/Debug.php index e0710c59e677..fd308e80036b 100644 --- a/core/vendor/symfony/debug/Symfony/Component/Debug/Debug.php +++ b/core/vendor/symfony/debug/Symfony/Component/Debug/Debug.php @@ -39,15 +39,23 @@ class Debug static::$enabled = true; - error_reporting(-1); + if (null !== $errorReportingLevel) { + error_reporting($errorReportingLevel); + } else { + error_reporting(-1); + } - ErrorHandler::register($errorReportingLevel, $displayErrors); if ('cli' !== php_sapi_name()) { + ini_set('display_errors', 0); ExceptionHandler::register(); - // CLI - display errors only if they're not already logged to STDERR } elseif ($displayErrors && (!ini_get('log_errors') || ini_get('error_log'))) { + // CLI - display errors only if they're not already logged to STDERR ini_set('display_errors', 1); } + $handler = ErrorHandler::register(); + if (!$displayErrors) { + $handler->throwAt(0, true); + } DebugClassLoader::enable(); } diff --git a/core/vendor/symfony/debug/Symfony/Component/Debug/DebugClassLoader.php b/core/vendor/symfony/debug/Symfony/Component/Debug/DebugClassLoader.php index 4a02e616cce8..ac5536529496 100644 --- a/core/vendor/symfony/debug/Symfony/Component/Debug/DebugClassLoader.php +++ b/core/vendor/symfony/debug/Symfony/Component/Debug/DebugClassLoader.php @@ -78,7 +78,8 @@ class DebugClassLoader public static function enable() { // Ensures we don't hit https://bugs.php.net/42098 - class_exists(__NAMESPACE__.'\ErrorHandler', true); + class_exists('Symfony\Component\Debug\ErrorHandler'); + class_exists('Psr\Log\LogLevel'); if (!is_array($functions = spl_autoload_functions())) { return; diff --git a/core/vendor/symfony/debug/Symfony/Component/Debug/ErrorHandler.php b/core/vendor/symfony/debug/Symfony/Component/Debug/ErrorHandler.php index b0699f34a870..f6c043287b17 100644 --- a/core/vendor/symfony/debug/Symfony/Component/Debug/ErrorHandler.php +++ b/core/vendor/symfony/debug/Symfony/Component/Debug/ErrorHandler.php @@ -22,188 +22,511 @@ use Symfony\Component\Debug\FatalErrorHandler\ClassNotFoundFatalErrorHandler; use Symfony\Component\Debug\FatalErrorHandler\FatalErrorHandlerInterface; /** - * ErrorHandler. + * A generic ErrorHandler for the PHP engine. + * + * Provides five bit fields that control how errors are handled: + * - thrownErrors: errors thrown as \ErrorException + * - loggedErrors: logged errors, when not @-silenced + * - scopedErrors: errors thrown or logged with their local context + * - tracedErrors: errors logged with their stack trace, only once for repeated errors + * - screamedErrors: never @-silenced errors + * + * Each error level can be logged by a dedicated PSR-3 logger object. + * Screaming only applies to logging. + * Throwing takes precedence over logging. + * Uncaught exceptions are logged as E_ERROR. + * E_DEPRECATED and E_USER_DEPRECATED levels never throw. + * E_RECOVERABLE_ERROR and E_USER_ERROR levels always throw. + * Non catchable errors that can be detected at shutdown time are logged when the scream bit field allows so. + * As errors have a performance cost, repeated errors are all logged, so that the developer + * can see them and weight them as more important to fix than others of the same level. * - * @author Fabien Potencier - * @author Konstantin Myakshin * @author Nicolas Grekas */ class ErrorHandler { + /** + * @deprecated since 2.6, to be removed in 3.0. + */ 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_DEPRECATED => 'Deprecated', + E_USER_DEPRECATED => 'User Deprecated', + E_NOTICE => 'Notice', + E_USER_NOTICE => 'User Notice', + E_STRICT => 'Runtime Notice', + E_WARNING => 'Warning', + E_USER_WARNING => 'User Warning', + E_COMPILE_WARNING => 'Compile Warning', + E_CORE_WARNING => 'Core Warning', + E_USER_ERROR => 'User Error', 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', + E_COMPILE_ERROR => 'Compile Error', + E_PARSE => 'Parse Error', + E_ERROR => 'Error', + E_CORE_ERROR => 'Core Error', ); - private $level; + private $loggers = array( + E_DEPRECATED => array(null, LogLevel::INFO), + E_USER_DEPRECATED => array(null, LogLevel::INFO), + E_NOTICE => array(null, LogLevel::NOTICE), + E_USER_NOTICE => array(null, LogLevel::NOTICE), + E_STRICT => array(null, LogLevel::NOTICE), + E_WARNING => array(null, LogLevel::WARNING), + E_USER_WARNING => array(null, LogLevel::WARNING), + E_COMPILE_WARNING => array(null, LogLevel::WARNING), + E_CORE_WARNING => array(null, LogLevel::WARNING), + E_USER_ERROR => array(null, LogLevel::ERROR), + E_RECOVERABLE_ERROR => array(null, LogLevel::ERROR), + E_COMPILE_ERROR => array(null, LogLevel::EMERGENCY), + E_PARSE => array(null, LogLevel::EMERGENCY), + E_ERROR => array(null, LogLevel::EMERGENCY), + E_CORE_ERROR => array(null, LogLevel::EMERGENCY), + ); - private $reservedMemory; + private $thrownErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED + private $scopedErrors = 0x1FFF; // E_ALL - E_DEPRECATED - E_USER_DEPRECATED + private $tracedErrors = 0x77FB; // E_ALL - E_STRICT - E_PARSE + private $screamedErrors = 0x55; // E_ERROR + E_CORE_ERROR + E_COMPILE_ERROR + E_PARSE + private $loggedErrors = 0; - private $displayErrors; + private $loggedTraces = array(); + private $isRecursive = 0; + private $exceptionHandler; + + private static $reservedMemory; + private static $stackedErrors = array(); + private static $stackedErrorLevels = array(); /** - * @var LoggerInterface[] Loggers for channels + * Same init value as thrownErrors + * + * @deprecated since 2.6, to be removed in 3.0. */ - private static $loggers = array(); - - private static $stackedErrors = array(); - - private static $stackedErrorLevels = array(); + private $displayErrors = 0x1FFF; /** * Registers the error handler. * - * @param int $level The level at which the conversion to Exception is done (null to use the error_reporting() value and 0 to disable) - * @param bool $displayErrors Display errors (for dev environment) or just log them (production usage) + * @param self|null|int $handler The handler to register, or @deprecated (since 2.6, to be removed in 3.0) bit field of thrown levels + * @param bool $replace Whether to replace or not any existing handler * - * @return ErrorHandler The registered error handler + * @return self The registered error handler */ - public static function register($level = null, $displayErrors = true) + public static function register($handler = null, $replace = true) { - $handler = new static(); - $handler->setLevel($level); - $handler->setDisplayErrors($displayErrors); + if (null === self::$reservedMemory) { + self::$reservedMemory = str_repeat('x', 10240); + register_shutdown_function(__CLASS__.'::handleFatalError'); + } - ini_set('display_errors', 0); - set_error_handler(array($handler, 'handle')); - register_shutdown_function(array($handler, 'handleFatal')); - $handler->reservedMemory = str_repeat('x', 10240); + $levels = -1; + + if ($handlerIsNew = !$handler instanceof self) { + // @deprecated polymorphism, to be removed in 3.0 + if (null !== $handler) { + $levels = $replace ? $handler : 0; + $replace = true; + } + $handler = new static(); + } + + $prev = set_error_handler(array($handler, 'handleError'), $handler->thrownErrors | $handler->loggedErrors); + + if ($handlerIsNew && is_array($prev) && $prev[0] instanceof self) { + $handler = $prev[0]; + $replace = false; + } + if ($replace || !$prev) { + $handler->setExceptionHandler(set_exception_handler(array($handler, 'handleException'))); + } else { + restore_error_handler(); + } + + $handler->throwAt($levels & $handler->thrownErrors, true); return $handler; } /** - * Sets the level at which the conversion to Exception is done. + * Sets a logger to non assigned errors levels. * - * @param int|null $level The level (null to use the error_reporting() value and 0 to disable) + * @param LoggerInterface $logger A PSR-3 logger to put as default for the given levels + * @param array|int $levels An array map of E_* to LogLevel::* or an integer bit field of E_* constants + * @param bool $replace Whether to replace or not any existing logger */ - public function setLevel($level) + public function setDefaultLogger(LoggerInterface $logger, $levels = null, $replace = false) { - $this->level = null === $level ? error_reporting() : $level; + $loggers = array(); + + if (is_array($levels)) { + foreach ($levels as $type => $logLevel) { + if (empty($this->loggers[$type][0]) || $replace) { + $loggers[$type] = array($logger, $logLevel); + } + } + } else { + if (null === $levels) { + $levels = E_ALL | E_STRICT; + } + foreach ($this->loggers as $type => $log) { + if (($type & $levels) && (empty($log[0]) || $replace)) { + $log[0] = $logger; + $loggers[$type] = $log; + } + } + } + + $this->setLoggers($loggers); } /** - * Sets the display_errors flag value. + * Sets a logger for each error level. * - * @param int $displayErrors The display_errors flag value + * @param array $loggers Error levels to [LoggerInterface|null, LogLevel::*] map + * + * @return array The previous map + * + * @throws \InvalidArgumentException */ - public function setDisplayErrors($displayErrors) + public function setLoggers(array $loggers) { - $this->displayErrors = $displayErrors; + $prevLogged = $this->loggedErrors; + $prev = $this->loggers; + + foreach ($loggers as $type => $log) { + if (!isset($prev[$type])) { + throw new \InvalidArgumentException('Unknown error type: '.$type); + } + if (!is_array($log)) { + $log = array($log); + } elseif (!array_key_exists(0, $log)) { + throw new \InvalidArgumentException('No logger provided'); + } + if (null === $log[0]) { + $this->loggedErrors &= ~$type; + } elseif ($log[0] instanceof LoggerInterface) { + $this->loggedErrors |= $type; + } else { + throw new \InvalidArgumentException('Invalid logger provided'); + } + $this->loggers[$type] = $log + $prev[$type]; + } + $this->reRegister($prevLogged | $this->thrownErrors); + + return $prev; } /** - * Sets a logger for the given channel. + * Sets a user exception handler. * - * @param LoggerInterface $logger A logger interface - * @param string $channel The channel associated with the logger (deprecation, emergency or scream) + * @param callable $handler A handler that will be called on Exception + * + * @return callable|null The previous exception handler + * + * @throws \InvalidArgumentException */ - public static function setLogger(LoggerInterface $logger, $channel = 'deprecation') + public function setExceptionHandler($handler) { - self::$loggers[$channel] = $logger; + if (null !== $handler && !is_callable($handler)) { + throw new \LogicException('The exception handler must be a valid PHP callable.'); + } + $prev = $this->exceptionHandler; + $this->exceptionHandler = $handler; + + return $prev; } /** - * @throws \ErrorException When error_reporting returns error + * Sets the error levels that are to be thrown. + * + * @param int $levels A bit field of E_* constants for thrown errors + * @param bool $replace Replace or amend the previous value + * + * @return int The previous value */ - public function handle($level, $message, $file = 'unknown', $line = 0, $context = array()) + public function throwAt($levels, $replace = false) { - if ($level & (E_USER_DEPRECATED | E_DEPRECATED)) { - if (isset(self::$loggers['deprecation'])) { - if (self::$stackedErrorLevels) { - self::$stackedErrors[] = func_get_args(); + $prev = $this->thrownErrors; + $this->thrownErrors = ($levels | E_RECOVERABLE_ERROR | E_USER_ERROR) & ~E_USER_DEPRECATED & ~E_DEPRECATED; + if (!$replace) { + $this->thrownErrors |= $prev; + } + $this->reRegister($prev | $this->loggedErrors); + + // $this->displayErrors is @deprecated since 2.6 + $this->displayErrors = $this->thrownErrors; + + return $prev; + } + + /** + * Sets the error levels that are logged or thrown with their local scope. + * + * @param int $levels A bit field of E_* constants for scoped errors + * @param bool $replace Replace or amend the previous value + * + * @return int The previous value + */ + public function scopeAt($levels, $replace = false) + { + $prev = $this->scopedErrors; + $this->scopedErrors = (int) $levels; + if (!$replace) { + $this->scopedErrors |= $prev; + } + + return $prev; + } + + /** + * Sets the error levels that are logged with their stack trace. + * + * @param int $levels A bit field of E_* constants for traced errors + * @param bool $replace Replace or amend the previous value + * + * @return int The previous value + */ + public function traceAt($levels, $replace = false) + { + $prev = $this->tracedErrors; + $this->tracedErrors = (int) $levels; + if (!$replace) { + $this->tracedErrors |= $prev; + } + + return $prev; + } + + /** + * Sets the error levels where the @-operator is ignored. + * + * @param int $levels A bit field of E_* constants for screamed errors + * @param bool $replace Replace or amend the previous value + * + * @return int The previous value + */ + public function screamAt($levels, $replace = false) + { + $prev = $this->screamedErrors; + $this->screamedErrors = (int) $levels; + if (!$replace) { + $this->screamedErrors |= $prev; + } + + return $prev; + } + + /** + * Re-registers as a PHP error handler if levels changed. + */ + private function reRegister($prev) + { + if ($prev !== $this->thrownErrors | $this->loggedErrors) { + $handler = set_error_handler('var_dump', 0); + $handler = is_array($handler) ? $handler[0] : null; + restore_error_handler(); + if ($handler === $this) { + restore_error_handler(); + set_error_handler(array($this, 'handleError'), $this->thrownErrors | $this->loggedErrors); + } + } + } + + /** + * Handles errors by filtering then logging them according to the configured bit fields. + * + * @param int $type One of the E_* constants + * @param string $file + * @param int $line + * @param array $context + * + * @return bool Returns false when no handling happens so that the PHP engine can handle the error itself. + * + * @throws \ErrorException When $this->thrownErrors requests so + * + * @internal + */ + public function handleError($type, $message, $file, $line, array $context) + { + $level = error_reporting() | E_RECOVERABLE_ERROR | E_USER_ERROR; + $log = $this->loggedErrors & $type; + $throw = $this->thrownErrors & $type & $level; + $type &= $level | $this->screamedErrors; + + if ($type && ($log || $throw)) { + if (PHP_VERSION_ID < 50400 && isset($context['GLOBALS']) && ($this->scopedErrors & $type)) { + $e = $context; // Whatever the signature of the method, + unset($e['GLOBALS'], $context); // $context is always a reference in 5.3 + $context = $e; + } + + if ($throw) { + if (($this->scopedErrors & $type) && class_exists('Symfony\Component\Debug\Exception\ContextErrorException')) { + // Checking for class existence is a work around for https://bugs.php.net/42098 + $throw = new ContextErrorException($this->levels[$type].': '.$message, 0, $type, $file, $line, $context); } else { - if (version_compare(PHP_VERSION, '5.4', '<')) { - $stack = array_map( - function ($row) { - unset($row['args']); + $throw = new \ErrorException($this->levels[$type].': '.$message, 0, $type, $file, $line); + } - return $row; - }, - array_slice(debug_backtrace(false), 0, 10) - ); - } else { - $stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 10); + if (PHP_VERSION_ID <= 50407 && (PHP_VERSION_ID >= 50400 || PHP_VERSION_ID <= 50317)) { + // Exceptions thrown from error handlers are sometimes not caught by the exception + // handler and shutdown handlers are bypassed before 5.4.8/5.3.18. + // We temporarily re-enable display_errors to prevent any blank page related to this bug. + + $throw->errorHandlerCanary = new ErrorHandlerCanary(); + } + + throw $throw; + } + + // For duplicated errors, log the trace only once + $e = md5("{$type}/{$line}/{$file}\x00{$message}", true); + $trace = true; + + if (!($this->tracedErrors & $type) || isset($this->loggedTraces[$e])) { + $trace = false; + } else { + $this->loggedTraces[$e] = 1; + } + + $e = compact('type', 'file', 'line', 'level'); + + if ($type & $level) { + if ($this->scopedErrors & $type) { + $e['context'] = $context; + if ($trace) { + $e['stack'] = debug_backtrace(true); // Provide object } - - self::$loggers['deprecation']->warning($message, array('type' => self::TYPE_DEPRECATION, 'stack' => $stack)); + } elseif ($trace) { + $e['stack'] = debug_backtrace(PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false); } - - return true; - } - } elseif ($this->displayErrors && error_reporting() & $level && $this->level & $level) { - if (PHP_VERSION_ID < 50400 && isset($context['GLOBALS']) && is_array($context)) { - $c = $context; // Whatever the signature of the method, - unset($c['GLOBALS'], $context); // $context is always a reference in 5.3 - $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')) { - // Checking for class existence is a work around for https://bugs.php.net/42098 - $exception = new ContextErrorException($exception, 0, $level, $file, $line, $context); + if ($this->isRecursive) { + $log = 0; + } elseif (self::$stackedErrorLevels) { + self::$stackedErrors[] = array($this->loggers[$type], $message, $e); } else { - $exception = new \ErrorException($exception, 0, $level, $file, $line); - } + try { + $this->isRecursive = true; + $this->loggers[$type][0]->log($this->loggers[$type][1], $message, $e); + $this->isRecursive = false; + } catch (\Exception $e) { + $this->isRecursive = false; - if (PHP_VERSION_ID <= 50407 && (PHP_VERSION_ID >= 50400 || PHP_VERSION_ID <= 50317)) { - // Exceptions thrown from error handlers are sometimes not caught by the exception - // handler and shutdown handlers are bypassed before 5.4.8/5.3.18. - // We temporarily re-enable display_errors to prevent any blank page related to this bug. - - $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; + throw $e; } - - self::$loggers['scream']->log($logLevel, $message, array( - 'type' => $level, - 'file' => $file, - 'line' => $line, - 'scream' => error_reporting(), - )); } } - return false; + return $type && $log; } /** - * Configure the error handler for delayed handling. + * Handles an exception by logging then forwarding it to an other handler. + * + * @param \Exception $exception An exception to handle + * @param array $error An array as returned by error_get_last() + * + * @internal + */ + public function handleException(\Exception $exception, array $error = null) + { + $level = error_reporting(); + if ($this->loggedErrors & E_ERROR & ($level | $this->screamedErrors)) { + $e = array( + 'type' => E_ERROR, + 'file' => $exception->getFile(), + 'line' => $exception->getLine(), + 'level' => $level, + 'stack' => $exception->getTrace(), + ); + if ($exception instanceof FatalErrorException) { + $message = 'Fatal '.$exception->getMessage(); + } elseif ($exception instanceof \ErrorException) { + $message = 'Uncaught '.$exception->getMessage(); + if ($exception instanceof ContextErrorException) { + $e['context'] = $exception->getContext(); + } + } else { + $message = 'Uncaught Exception: '.$exception->getMessage(); + } + if ($this->loggedErrors & $e['type']) { + $this->loggers[$e['type']][0]->log($this->loggers[$e['type']][1], $message, $e); + } + } + if ($exception instanceof FatalErrorException && !$exception instanceof OutOfMemoryException && $error) { + foreach ($this->getFatalErrorHandlers() as $handler) { + if ($e = $handler->handleError($error, $exception)) { + $exception = $e; + break; + } + } + } + if (empty($this->exceptionHandler)) { + throw $exception; // Give back $exception to the native handler + } + try { + call_user_func($this->exceptionHandler, $exception); + } catch (\Exception $handlerException) { + $this->exceptionHandler = null; + $this->handleException($handlerException); + } + } + + /** + * Shutdown registered function for handling PHP fatal errors. + * + * @param array $error An array as returned by error_get_last() + * + * @internal + */ + public static function handleFatalError(array $error = null) + { + self::$reservedMemory = ''; + gc_collect_cycles(); + $handler = set_error_handler('var_dump', 0); + $handler = is_array($handler) ? $handler[0] : null; + restore_error_handler(); + if ($handler instanceof self) { + if (null === $error) { + $error = error_get_last(); + } + + try { + while (self::$stackedErrorLevels) { + static::unstackErrors(); + } + } catch (\Exception $exception) { + // Handled below + } + + if ($error && ($error['type'] & (E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR))) { + // Let's not throw anymore but keep logging + $handler->throwAt(0, true); + + if (0 === strpos($error['message'], 'Allowed memory') || 0 === strpos($error['message'], 'Out of memory')) { + $exception = new OutOfMemoryException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, false); + } else { + $exception = new FatalErrorException($handler->levels[$error['type']].': '.$error['message'], 0, $error['type'], $error['file'], $error['line'], 2, true); + } + } elseif (!isset($exception)) { + return; + } + + try { + $handler->handleException($exception, $error); + } catch (FatalErrorException $e) { + // Ignore this re-throw + } + } + } + + /** + * Configures the error handler for delayed handling. * Ensures also that non-catchable fatal errors are never silenced. * * As shown by http://bugs.php.net/42098 and http://bugs.php.net/60724 @@ -219,7 +542,7 @@ class ErrorHandler } /** - * Unstacks stacked errors and forwards to the regular handler + * Unstacks stacked errors and forwards to the logger */ public static function unstackErrors() { @@ -237,64 +560,12 @@ class ErrorHandler $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); - } + foreach ($errors as $e) { + $e[0][0]->log($e[0][1], $e[1], $e[2]); } } } - public function handleFatal() - { - $this->reservedMemory = ''; - gc_collect_cycles(); - $error = error_get_last(); - - // get current exception handler - $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); - } - } - /** * Gets the fatal error handlers. * @@ -311,33 +582,81 @@ class ErrorHandler ); } - private function handleFatalError($exceptionHandler, array $error) + /** + * Sets the level at which the conversion to Exception is done. + * + * @param int|null $level The level (null to use the error_reporting() value and 0 to disable) + * + * @deprecated since 2.6, to be removed in 3.0. Use throwAt() instead. + */ + public function setLevel($level) { - // Let PHP handle any further error - set_error_handler('var_dump', 0); - ini_set('display_errors', 1); + $level = null === $level ? error_reporting() : $level; + $this->throwAt($level, true); + } - $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); + /** + * Sets the display_errors flag value. + * + * @param int $displayErrors The display_errors flag value + * + * @deprecated since 2.6, to be removed in 3.0. Use throwAt() instead. + */ + public function setDisplayErrors($displayErrors) + { + if ($displayErrors) { + $this->throwAt($this->displayErrors, true); } 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; - } - } + $displayErrors = $this->displayErrors; + $this->throwAt(0, true); + $this->displayErrors = $displayErrors; } + } - try { - call_user_func($exceptionHandler, $exception); - } catch (\Exception $e) { - // The handler failed. Let PHP handle that now. - throw $exception; + /** + * Sets a logger for the given channel. + * + * @param LoggerInterface $logger A logger interface + * @param string $channel The channel associated with the logger (deprecation, emergency or scream) + * + * @deprecated since 2.6, to be removed in 3.0. Use setLoggers() or setDefaultLogger() instead. + */ + public static function setLogger(LoggerInterface $logger, $channel = 'deprecation') + { + $handler = set_error_handler('var_dump', 0); + $handler = is_array($handler) ? $handler[0] : null; + restore_error_handler(); + if (!$handler instanceof self) { + return; } + if ('deprecation' === $channel) { + $handler->setDefaultLogger($logger, E_DEPRECATED | E_USER_DEPRECATED, true); + $handler->screamAt(E_DEPRECATED | E_USER_DEPRECATED); + } elseif ('scream' === $channel) { + $handler->setDefaultLogger($logger, E_ALL | E_STRICT, false); + $handler->screamAt(E_ALL | E_STRICT); + } elseif ('emergency' === $channel) { + $handler->setDefaultLogger($logger, E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR, true); + $handler->screamAt(E_PARSE | E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR); + } + } + + /** + * @deprecated since 2.6, to be removed in 3.0. Use handleError() instead. + */ + public function handle($level, $message, $file = 'unknown', $line = 0, $context = array()) + { + return $this->handleError($level, $message, $file, $line, (array) $context); + } + + /** + * Handles PHP fatal errors. + * + * @deprecated since 2.6, to be removed in 3.0. Use handleFatalError() instead. + */ + public function handleFatal() + { + static::handleFatalError(); } } diff --git a/core/vendor/symfony/debug/Symfony/Component/Debug/Exception/FlattenException.php b/core/vendor/symfony/debug/Symfony/Component/Debug/Exception/FlattenException.php index eb49d4609fdf..fdfba709a7ff 100644 --- a/core/vendor/symfony/debug/Symfony/Component/Debug/Exception/FlattenException.php +++ b/core/vendor/symfony/debug/Symfony/Component/Debug/Exception/FlattenException.php @@ -66,8 +66,8 @@ class FlattenException foreach (array_merge(array($this), $this->getAllPrevious()) as $exception) { $exceptions[] = array( 'message' => $exception->getMessage(), - 'class' => $exception->getClass(), - 'trace' => $exception->getTrace(), + 'class' => $exception->getClass(), + 'trace' => $exception->getTrace(), ); } @@ -179,14 +179,14 @@ class FlattenException { $this->trace = array(); $this->trace[] = array( - 'namespace' => '', + 'namespace' => '', 'short_class' => '', - 'class' => '', - 'type' => '', - 'function' => '', - 'file' => $file, - 'line' => $line, - 'args' => array(), + 'class' => '', + 'type' => '', + 'function' => '', + 'file' => $file, + 'line' => $line, + 'args' => array(), ); foreach ($trace as $entry) { $class = ''; @@ -198,14 +198,14 @@ class FlattenException } $this->trace[] = array( - 'namespace' => $namespace, + 'namespace' => $namespace, 'short_class' => $class, - 'class' => isset($entry['class']) ? $entry['class'] : '', - 'type' => isset($entry['type']) ? $entry['type'] : '', - 'function' => isset($entry['function']) ? $entry['function'] : null, - 'file' => isset($entry['file']) ? $entry['file'] : null, - 'line' => isset($entry['line']) ? $entry['line'] : null, - 'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : array(), + 'class' => isset($entry['class']) ? $entry['class'] : '', + 'type' => isset($entry['type']) ? $entry['type'] : '', + 'function' => isset($entry['function']) ? $entry['function'] : null, + 'file' => isset($entry['file']) ? $entry['file'] : null, + 'line' => isset($entry['line']) ? $entry['line'] : null, + 'args' => isset($entry['args']) ? $this->flattenArgs($entry['args']) : array(), ); } } diff --git a/core/vendor/symfony/debug/Symfony/Component/Debug/ExceptionHandler.php b/core/vendor/symfony/debug/Symfony/Component/Debug/ExceptionHandler.php index 6c12979d6e0c..2c11619f1412 100644 --- a/core/vendor/symfony/debug/Symfony/Component/Debug/ExceptionHandler.php +++ b/core/vendor/symfony/debug/Symfony/Component/Debug/ExceptionHandler.php @@ -34,29 +34,33 @@ if (!defined('ENT_SUBSTITUTE')) { class ExceptionHandler { private $debug; - private $charset; private $handler; private $caughtBuffer; private $caughtLength; + private $fileLinkFormat; - public function __construct($debug = true, $charset = 'UTF-8') + public function __construct($debug = true, $fileLinkFormat = null) { $this->debug = $debug; - $this->charset = $charset; + $this->fileLinkFormat = $fileLinkFormat ?: ini_get('xdebug.file_link_format') ?: get_cfg_var('xdebug.file_link_format'); } /** * Registers the exception handler. * - * @param bool $debug + * @param bool $debug * * @return ExceptionHandler The registered exception handler */ - public static function register($debug = true) + public static function register($debug = true, $fileLinkFormat = null) { - $handler = new static($debug); + $handler = new static($debug, $fileLinkFormat = null); - set_exception_handler(array($handler, 'handle')); + $prev = set_exception_handler(array($handler, 'handle')); + if (is_array($prev) && $prev[0] instanceof ErrorHandler) { + restore_exception_handler(); + $prev[0]->setExceptionHandler(array($handler, 'handle')); + } return $handler; } @@ -79,6 +83,21 @@ class ExceptionHandler return $old; } + /** + * Sets the format for links to source files. + * + * @param string $format The format for links to source files + * + * @return string The previous file link format. + */ + public function setFileLinkFormat($format) + { + $old = $this->fileLinkFormat; + $this->fileLinkFormat = $format; + + return $old; + } + /** * Sends a response for the given Exception. * @@ -205,29 +224,26 @@ class ExceptionHandler $total = $count + 1; foreach ($exception->toArray() as $position => $e) { $ind = $count - $position + 1; - $class = $this->abbrClass($e['class']); - $message = nl2br($e['message']); + $class = $this->formatClass($e['class']); + $message = nl2br(self::utf8Htmlize($e['message'])); $content .= sprintf(<< -

%d/%d %s: %s

- +

+ %d/%d + %s%s: + %s +

    EOF - , $ind, $total, $class, $message); + , $ind, $total, $class, $this->formatPath($e['trace'][0]['file'], $e['trace'][0]['line']), $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'])); + $content .= sprintf('at %s%s%s(%s)', $this->formatClass($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 .= $this->formatPath($trace['file'], $trace['line']); } $content .= "
  2. \n"; } @@ -272,12 +288,14 @@ EOF; .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 { color:#6c6159; cursor: default; } .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 .exception_counter { background-color: #fff; color: #333; padding: 6px; float: left; margin-right: 10px; float: left; display: block; } + .sf-reset .exception_title { margin-left: 3em; margin-bottom: 0.7em; display: block; } + .sf-reset .exception_message { margin-left: 3em; display: block; } .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; @@ -303,8 +321,8 @@ EOF; 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 a { background:none; color:#868686; text-decoration:none; } + .sf-reset 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; @@ -321,7 +339,7 @@ EOF; - +