From 7149ce197f873004ec85cc02506e0cc4df1e0ed1 Mon Sep 17 00:00:00 2001
From: Rob Loach <robloach@gmail.com>
Date: Sun, 4 Mar 2012 12:19:24 -0500
Subject: [PATCH] Issue #1424924 by Rob Loach: Introduce Composer for Symfony component management.

---
 core/composer.json                                 |   13 ++++
 core/includes/bootstrap.inc                        |   25 ++-------
 core/vendor/.composer/ClassLoader.php              |    2 +
 core/vendor/.composer/autoload.php                 |   20 +++++++
 core/vendor/.composer/autoload_namespaces.php      |   12 ++++
 .../ClassLoader/ApcUniversalClassLoader.php        |    0
 .../ClassLoader/ClassCollectionLoader.php          |    0
 .../ClassLoader/DebugUniversalClassLoader.php      |    0
 .../Symfony/Component/ClassLoader/LICENSE          |    0
 .../Component/ClassLoader/MapClassLoader.php       |    0
 .../Symfony/Component/ClassLoader/README.md        |   60 ++++++++++++++++++++
 .../Component/ClassLoader/UniversalClassLoader.php |    0
 .../Symfony/Component/ClassLoader/composer.json    |    0
 .../Component/HttpFoundation/ApacheRequest.php     |    0
 .../Symfony/Component/HttpFoundation/Cookie.php    |    0
 .../File/Exception/AccessDeniedException.php       |    0
 .../File/Exception/FileException.php               |    0
 .../File/Exception/FileNotFoundException.php       |    0
 .../File/Exception/UnexpectedTypeException.php     |    0
 .../File/Exception/UploadException.php             |    0
 .../Symfony/Component/HttpFoundation/File/File.php |    0
 .../File/MimeType/ContentTypeMimeTypeGuesser.php   |    0
 .../File/MimeType/FileBinaryMimeTypeGuesser.php    |    0
 .../File/MimeType/FileinfoMimeTypeGuesser.php      |    0
 .../File/MimeType/MimeTypeGuesser.php              |    0
 .../File/MimeType/MimeTypeGuesserInterface.php     |    0
 .../Component/HttpFoundation/File/UploadedFile.php |    0
 .../Symfony/Component/HttpFoundation/FileBag.php   |    0
 .../Symfony/Component/HttpFoundation/HeaderBag.php |    0
 .../Symfony/Component/HttpFoundation/LICENSE       |    0
 .../Component/HttpFoundation/ParameterBag.php      |    0
 .../Symfony/Component/HttpFoundation/README.md     |   36 ++++++++++++
 .../Component/HttpFoundation/RedirectResponse.php  |    0
 .../Symfony/Component/HttpFoundation/Request.php   |    0
 .../Component/HttpFoundation/RequestMatcher.php    |    0
 .../HttpFoundation/RequestMatcherInterface.php     |    0
 .../Symfony/Component/HttpFoundation/Response.php  |    0
 .../Component/HttpFoundation/ResponseHeaderBag.php |    0
 .../Symfony/Component/HttpFoundation/ServerBag.php |    0
 .../Symfony/Component/HttpFoundation/Session.php   |    0
 .../SessionStorage/ArraySessionStorage.php         |    0
 .../SessionStorage/FilesystemSessionStorage.php    |    0
 .../SessionStorage/NativeSessionStorage.php        |    0
 .../SessionStorage/PdoSessionStorage.php           |    0
 .../SessionStorage/SessionStorageInterface.php     |    0
 .../Symfony/Component/HttpFoundation/composer.json |    0
 46 files changed, 148 insertions(+), 20 deletions(-)
 create mode 100644 core/composer.json
 create mode 100644 core/vendor/.composer/ClassLoader.php
 create mode 100644 core/vendor/.composer/autoload.php
 create mode 100644 core/vendor/.composer/autoload_namespaces.php
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php (100%)
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/ClassCollectionLoader.php (100%)
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php (100%)
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/LICENSE (100%)
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/MapClassLoader.php (100%)
 create mode 100644 core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/UniversalClassLoader.php (100%)
 rename core/vendor/{ => symfony/class-loader}/Symfony/Component/ClassLoader/composer.json (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/ApacheRequest.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/Cookie.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/Exception/FileException.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/Exception/UploadException.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/File.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/File/UploadedFile.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/FileBag.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/HeaderBag.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/LICENSE (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/ParameterBag.php (100%)
 create mode 100644 core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/RedirectResponse.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/Request.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/RequestMatcher.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/RequestMatcherInterface.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/Response.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/ResponseHeaderBag.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/ServerBag.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/Session.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php (100%)
 rename core/vendor/{ => symfony/http-foundation}/Symfony/Component/HttpFoundation/composer.json (100%)

diff --git a/core/composer.json b/core/composer.json
new file mode 100644
index 0000000..81a8d7e
--- /dev/null
+++ b/core/composer.json
@@ -0,0 +1,13 @@
+{
+    "require": {
+        "php": ">=5.3.2",
+        "symfony/class-loader": "2.0.10",
+        "symfony/http-foundation": "2.0.10"
+    },
+    "autoload": {
+        "psr-0": {
+            "Drupal\\Core": "lib/",
+            "Drupal\\Component": "lib/"
+        }
+    }
+}
diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 39bc55c..24b4573 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -2303,23 +2303,7 @@ function _drupal_bootstrap_configuration() {
   drupal_settings_initialize();
 
   // Include and activate the class loader.
-  $loader = drupal_classloader();
-
-  // Register explicit vendor namespaces.
-  $loader->registerNamespaces(array(
-    // All Symfony-borrowed code lives in /core/vendor/Symfony.
-    'Symfony' => DRUPAL_ROOT . '/core/vendor',
-  ));
-  // Register the Drupal namespace for classes in core as a fallback.
-  // This allows to register additional namespaces within the Drupal namespace
-  // (e.g., for modules) and avoids an additional file_exists() on the Drupal
-  // core namespace, since the class loader can already determine the best
-  // namespace match based on a string comparison. It further allows modules to
-  // register/overload namespaces in Drupal core.
-  $loader->registerNamespaceFallbacks(array(
-    // All Drupal-namespaced code in core lives in /core/lib/Drupal.
-    'Drupal' => DRUPAL_ROOT . '/core/lib',
-  ));
+  drupal_classloader();
 }
 
 /**
@@ -3060,8 +3044,10 @@ function drupal_get_complete_schema($rebuild = FALSE) {
  *   A UniversalClassLoader class instance (or extension thereof).
  */
 function drupal_classloader() {
-  // Include the Symfony ClassLoader for loading PSR-0-compatible classes.
-  require_once DRUPAL_ROOT . '/core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php';
+  // Include the auto-generated Composer ClassLoader for loading classes that
+  // are PSR-0-compatible. This registers Drupal Core's core/lib namespaces,
+  // as well as the provided Symfony components in the core/vendor directory.
+  require_once DRUPAL_ROOT . '/core/vendor/.composer/autoload.php';
 
   // By default, use the UniversalClassLoader which is best for development,
   // as it does not break when code is moved on the file system. However, as it
@@ -3073,7 +3059,6 @@ function drupal_classloader() {
     switch (variable_get('autoloader_mode', 'default')) {
       case 'apc':
         if (function_exists('apc_store')) {
-          require_once DRUPAL_ROOT . '/core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php';
           $loader = new ApcUniversalClassLoader('drupal.' . $GLOBALS['drupal_hash_salt']);
           break;
         }
diff --git a/core/vendor/.composer/ClassLoader.php b/core/vendor/.composer/ClassLoader.php
new file mode 100644
index 0000000..24a1374
--- /dev/null
+++ b/core/vendor/.composer/ClassLoader.php
@@ -0,0 +1,2 @@
+<?php
+ namespace Composer\Autoload; class ClassLoader { private $prefixes = array(); private $fallbackDirs = array(); private $useIncludePath = false; public function getPrefixes() { return $this->prefixes; } public function getFallbackDirs() { return $this->fallbackDirs; } public function add($prefix, $paths) { if (!$prefix) { foreach ((array) $paths as $path) { $this->fallbackDirs[] = $path; } return; } if (isset($this->prefixes[$prefix])) { $this->prefixes[$prefix] = array_merge( $this->prefixes[$prefix], (array) $paths ); } else { $this->prefixes[$prefix] = (array) $paths; } } public function setUseIncludePath($useIncludePath) { $this->useIncludePath = $useIncludePath; } public function getUseIncludePath() { return $this->useIncludePath; } public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); } public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); } public function loadClass($class) { if ($file = $this->findFile($class)) { require $file; return true; } } public function findFile($class) { if ('\\' == $class[0]) { $class = substr($class, 1); } if (false !== $pos = strrpos($class, '\\')) { $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)) . DIRECTORY_SEPARATOR; $className = substr($class, $pos + 1); } else { $classPath = null; $className = $class; } $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php'; foreach ($this->prefixes as $prefix => $dirs) { foreach ($dirs as $dir) { if (0 === strpos($class, $prefix)) { if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) { return $dir . DIRECTORY_SEPARATOR . $classPath; } } } } foreach ($this->fallbackDirs as $dir) { if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) { return $dir . DIRECTORY_SEPARATOR . $classPath; } } if ($this->useIncludePath && $file = stream_resolve_include_path($classPath)) { return $file; } } } 
\ No newline at end of file
diff --git a/core/vendor/.composer/autoload.php b/core/vendor/.composer/autoload.php
new file mode 100644
index 0000000..2ed2a11
--- /dev/null
+++ b/core/vendor/.composer/autoload.php
@@ -0,0 +1,20 @@
+<?php
+
+// autoload.php generated by Composer
+if (!class_exists('Composer\\Autoload\\ClassLoader', false)) {
+    require __DIR__.'/ClassLoader.php';
+}
+
+return call_user_func(function() {
+    $loader = new \Composer\Autoload\ClassLoader();
+
+    $map = require __DIR__.'/autoload_namespaces.php';
+
+    foreach ($map as $namespace => $path) {
+        $loader->add($namespace, $path);
+    }
+
+    $loader->register();
+
+    return $loader;
+});
diff --git a/core/vendor/.composer/autoload_namespaces.php b/core/vendor/.composer/autoload_namespaces.php
new file mode 100644
index 0000000..6cfd42c
--- /dev/null
+++ b/core/vendor/.composer/autoload_namespaces.php
@@ -0,0 +1,12 @@
+<?php
+
+// autoload_namespace.php generated by Composer
+
+$vendorDir = dirname(__DIR__);
+
+return array(
+    'Symfony\\Component\\HttpFoundation' => $vendorDir . '/symfony/http-foundation/',
+    'Symfony\\Component\\ClassLoader' => $vendorDir . '/symfony/class-loader/',
+    'Drupal\\Core' => dirname($vendorDir) . '/lib/',
+    'Drupal\\Component' => dirname($vendorDir) . '/lib/',
+);
diff --git a/core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ApcUniversalClassLoader.php
diff --git a/core/vendor/Symfony/Component/ClassLoader/ClassCollectionLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassCollectionLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/ClassCollectionLoader.php
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassCollectionLoader.php
diff --git a/core/vendor/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/DebugUniversalClassLoader.php
diff --git a/core/vendor/Symfony/Component/ClassLoader/LICENSE b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/LICENSE
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/LICENSE
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/LICENSE
diff --git a/core/vendor/Symfony/Component/ClassLoader/MapClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/MapClassLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/MapClassLoader.php
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/MapClassLoader.php
diff --git a/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md
new file mode 100644
index 0000000..bdfcb8e
--- /dev/null
+++ b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/README.md
@@ -0,0 +1,60 @@
+ClassLoader Component
+=====================
+
+ClassLoader loads your project classes automatically if they follow some
+standard PHP conventions.
+
+The Universal ClassLoader is able to autoload classes that implement the PSR-0
+standard or the PEAR naming convention.
+
+First, register the autoloader:
+
+    require_once __DIR__.'/src/Symfony/Component/ClassLoader/UniversalClassLoader.php';
+
+    use Symfony\Component\ClassLoader\UniversalClassLoader;
+
+    $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');
+
+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');
+
+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'));
+
+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',
+    ));
+
+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';
+
+    use Symfony\Component\ClassLoader\ApcUniversalClassLoader;
+
+    $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
+provide byte caches.
diff --git a/core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/UniversalClassLoader.php
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php
diff --git a/core/vendor/Symfony/Component/ClassLoader/composer.json b/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/composer.json
similarity index 100%
rename from core/vendor/Symfony/Component/ClassLoader/composer.json
rename to core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/composer.json
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ApacheRequest.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ApacheRequest.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ApacheRequest.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ApacheRequest.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Cookie.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Cookie.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Cookie.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Cookie.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/AccessDeniedException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/FileNotFoundException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UnexpectedTypeException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/Exception/UploadException.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UploadException.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/Exception/UploadException.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/Exception/UploadException.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/File.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/File.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/File.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/File.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/ContentTypeMimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileBinaryMimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/FileinfoMimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesser.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/MimeType/MimeTypeGuesserInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/File/UploadedFile.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/UploadedFile.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/File/UploadedFile.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/File/UploadedFile.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/FileBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/FileBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/FileBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/FileBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/HeaderBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/HeaderBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/HeaderBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/HeaderBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/LICENSE b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/LICENSE
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/LICENSE
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/LICENSE
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ParameterBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ParameterBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ParameterBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ParameterBag.php
diff --git a/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md
new file mode 100644
index 0000000..67823e7
--- /dev/null
+++ b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/README.md
@@ -0,0 +1,36 @@
+HttpFoundation Component
+========================
+
+HttpFoundation defines an object-oriented layer for the HTTP specification.
+
+It provides an abstraction for requests, responses, uploaded files, cookies,
+sessions, ...
+
+In this example, we get a Request object from the current PHP global
+variables:
+
+    use Symfony\Component\HttpFoundation\Request;
+    use Symfony\Component\HttpFoundation\Response;
+
+    $request = Request::createFromGlobals();
+    echo $request->getPathInfo();
+
+You can also create a Request directly -- that's interesting for unit testing:
+
+    $request = Request::create('/?foo=bar', 'GET');
+    echo $request->getPathInfo();
+
+And here is how to create and send a Response:
+
+    $response = new Response('Not Found', 404, array('Content-Type' => 'text/plain'));
+    $response->send();
+
+The Request and the Response classes have many other methods that implement
+the HTTP specification.
+
+Resources
+---------
+
+Unit tests:
+
+https://github.com/symfony/symfony/tree/master/tests/Symfony/Tests/Component/HttpFoundation
diff --git a/core/vendor/Symfony/Component/HttpFoundation/RedirectResponse.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RedirectResponse.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/RedirectResponse.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RedirectResponse.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Request.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Request.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Request.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Request.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/RequestMatcher.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcher.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/RequestMatcher.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcher.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/RequestMatcherInterface.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcherInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/RequestMatcherInterface.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/RequestMatcherInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Response.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Response.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ResponseHeaderBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ResponseHeaderBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ResponseHeaderBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ResponseHeaderBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/ServerBag.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ServerBag.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/ServerBag.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ServerBag.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/Session.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/Session.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/ArraySessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/FilesystemSessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/NativeSessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/PdoSessionStorage.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/SessionStorage/SessionStorageInterface.php
diff --git a/core/vendor/Symfony/Component/HttpFoundation/composer.json b/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/composer.json
similarity index 100%
rename from core/vendor/Symfony/Component/HttpFoundation/composer.json
rename to core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/composer.json
-- 
1.7.4.1

