diff --git a/core/composer.json b/core/composer.json
index 0a6874f..a08d75e 100644
--- a/core/composer.json
+++ b/core/composer.json
@@ -11,6 +11,7 @@
"symfony/css-selector": "2.7.*",
"symfony/dependency-injection": "2.7.*",
"symfony/event-dispatcher": "2.7.*",
+ "symfony/finder": "2.7.*",
"symfony/http-foundation": "2.7.*",
"symfony/http-kernel": "2.7.*",
"symfony/routing": "2.7.*",
diff --git a/core/composer.lock b/core/composer.lock
index 5363898..7dded13 100644
--- a/core/composer.lock
+++ b/core/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "61a2b6dec8252d78e904d37fbf1637d7",
+ "hash": "3ce07df73f599541ead1aff92cd4207f",
"packages": [
{
"name": "behat/mink",
@@ -170,16 +170,16 @@
},
{
"name": "doctrine/annotations",
- "version": "v1.2.1",
+ "version": "v1.2.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633"
+ "reference": "b5202eb9e83f8db52e0e58867e0a46e63be8332e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/6a6bec0670bb6e71a263b08bc1b98ea242928633",
- "reference": "6a6bec0670bb6e71a263b08bc1b98ea242928633",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/b5202eb9e83f8db52e0e58867e0a46e63be8332e",
+ "reference": "b5202eb9e83f8db52e0e58867e0a46e63be8332e",
"shasum": ""
},
"require": {
@@ -234,20 +234,20 @@
"docblock",
"parser"
],
- "time": "2014-09-25 16:45:30"
+ "time": "2014-12-23 22:40:37"
},
{
"name": "doctrine/cache",
- "version": "v1.3.1",
+ "version": "v1.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "cf483685798a72c93bf4206e3dd6358ea07d64e7"
+ "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/cf483685798a72c93bf4206e3dd6358ea07d64e7",
- "reference": "cf483685798a72c93bf4206e3dd6358ea07d64e7",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/c9eadeb743ac6199f7eec423cb9426bc518b7b03",
+ "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03",
"shasum": ""
},
"require": {
@@ -258,12 +258,13 @@
},
"require-dev": {
"phpunit/phpunit": ">=3.7",
+ "predis/predis": "~1.0",
"satooshi/php-coveralls": "~0.6"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4.x-dev"
+ "dev-master": "1.5.x-dev"
}
},
"autoload": {
@@ -303,25 +304,28 @@
"cache",
"caching"
],
- "time": "2014-09-17 14:24:04"
+ "time": "2015-04-15 00:11:59"
},
{
"name": "doctrine/collections",
- "version": "v1.2",
+ "version": "v1.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2"
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2",
- "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
+ "reference": "6c1e4eef75f310ea1b3e30945e9f06e652128b8a",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
"type": "library",
"extra": {
"branch-alias": {
@@ -339,17 +343,6 @@
],
"authors": [
{
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com",
- "homepage": "http://www.jwage.com/",
- "role": "Creator"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com",
- "homepage": "http://www.instaclick.com"
- },
- {
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
@@ -358,10 +351,16 @@
"email": "kontakt@beberlei.de"
},
{
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
"name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com",
- "homepage": "https://github.com/schmittjoh",
- "role": "Developer of wrapped JMSSerializerBundle"
+ "email": "schmittjoh@gmail.com"
}
],
"description": "Collections Abstraction library",
@@ -371,7 +370,7 @@
"collections",
"iterator"
],
- "time": "2014-02-03 23:07:43"
+ "time": "2015-04-14 22:21:58"
},
{
"name": "doctrine/common",
@@ -453,22 +452,30 @@
},
{
"name": "doctrine/inflector",
- "version": "v1.0",
+ "version": "v1.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "v1.0"
+ "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/54b8333d2a5682afdc690060c1cf384ba9f47f08",
- "reference": "v1.0",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/0bcb2e79d8571787f18b7eb036ed3d004908e604",
+ "reference": "0bcb2e79d8571787f18b7eb036ed3d004908e604",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
+ "require-dev": {
+ "phpunit/phpunit": "4.*"
+ },
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
"autoload": {
"psr-0": {
"Doctrine\\Common\\Inflector\\": "lib/"
@@ -480,16 +487,6 @@
],
"authors": [
{
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com",
- "homepage": "http://www.jwage.com/"
- },
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com",
- "homepage": "http://www.instaclick.com"
- },
- {
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
@@ -498,21 +495,27 @@
"email": "kontakt@beberlei.de"
},
{
- "name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com",
- "homepage": "https://github.com/schmittjoh",
- "role": "Developer of wrapped JMSSerializerBundle"
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
}
],
"description": "Common String Manipulations with regard to casing and singular/plural rules.",
"homepage": "http://www.doctrine-project.org",
"keywords": [
"inflection",
- "pluarlize",
- "singuarlize",
+ "pluralize",
+ "singularize",
"string"
],
- "time": "2013-01-10 21:49:15"
+ "time": "2014-12-20 21:24:13"
},
{
"name": "doctrine/instantiator",
@@ -570,22 +573,27 @@
},
{
"name": "doctrine/lexer",
- "version": "v1.0",
+ "version": "v1.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "v1.0"
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/2f708a85bb3aab5d99dab8be435abd73e0b18acb",
- "reference": "v1.0",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c",
+ "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
"autoload": {
"psr-0": {
"Doctrine\\Common\\Lexer\\": "lib/"
@@ -597,19 +605,16 @@
],
"authors": [
{
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com",
- "homepage": "http://www.instaclick.com"
- },
- {
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
- "name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com",
- "homepage": "https://github.com/schmittjoh",
- "role": "Developer of wrapped JMSSerializerBundle"
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
}
],
"description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.",
@@ -618,20 +623,20 @@
"lexer",
"parser"
],
- "time": "2013-01-12 18:59:04"
+ "time": "2014-09-09 13:34:57"
},
{
"name": "easyrdf/easyrdf",
- "version": "0.9.0",
+ "version": "0.9.1",
"source": {
"type": "git",
"url": "https://github.com/njh/easyrdf.git",
- "reference": "bb9fd99768d23af0c5b7b55cec5baddc201272b8"
+ "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/njh/easyrdf/zipball/bb9fd99768d23af0c5b7b55cec5baddc201272b8",
- "reference": "bb9fd99768d23af0c5b7b55cec5baddc201272b8",
+ "url": "https://api.github.com/repos/njh/easyrdf/zipball/acd09dfe0555fbcfa254291e433c45fdd4652566",
+ "reference": "acd09dfe0555fbcfa254291e433c45fdd4652566",
"shasum": ""
},
"require": {
@@ -680,27 +685,28 @@
"rdfa",
"sparql"
],
- "time": "2014-11-07 18:02:16"
+ "time": "2015-02-27 09:45:49"
},
{
"name": "egulias/email-validator",
- "version": "1.2.5",
+ "version": "1.2.8",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
- "reference": "518f80a0ff7c1a35780e7702f4262c8c6f2b807f"
+ "reference": "5631c3fe2e56cd5a3f79b20fae970d884a5ff951"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/518f80a0ff7c1a35780e7702f4262c8c6f2b807f",
- "reference": "518f80a0ff7c1a35780e7702f4262c8c6f2b807f",
+ "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/5631c3fe2e56cd5a3f79b20fae970d884a5ff951",
+ "reference": "5631c3fe2e56cd5a3f79b20fae970d884a5ff951",
"shasum": ""
},
"require": {
- "doctrine/lexer": "~1.0",
+ "doctrine/lexer": "~1.0,>=1.0.1",
"php": ">= 5.3.3"
},
"require-dev": {
+ "phpunit/phpunit": "~4.4",
"satooshi/php-coveralls": "dev-master"
},
"type": "library",
@@ -730,20 +736,20 @@
"validation",
"validator"
],
- "time": "2014-11-06 08:59:44"
+ "time": "2015-04-26 15:49:00"
},
{
"name": "fabpot/goutte",
- "version": "v2.0.3",
+ "version": "v2.0.4",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/Goutte.git",
- "reference": "65ab61eae03d670b93a9044ad2328eb81aa1bde5"
+ "reference": "0ad3ee6dc2d0aaa832a80041a1e09bf394e99802"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/65ab61eae03d670b93a9044ad2328eb81aa1bde5",
- "reference": "65ab61eae03d670b93a9044ad2328eb81aa1bde5",
+ "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/0ad3ee6dc2d0aaa832a80041a1e09bf394e99802",
+ "reference": "0ad3ee6dc2d0aaa832a80041a1e09bf394e99802",
"shasum": ""
},
"require": {
@@ -779,30 +785,30 @@
"keywords": [
"scraper"
],
- "time": "2014-11-28 09:48:17"
+ "time": "2015-05-05 21:14:57"
},
{
"name": "guzzlehttp/guzzle",
- "version": "5.2.0",
+ "version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "475b29ccd411f2fa8a408e64576418728c032cfa"
+ "reference": "f3c8c22471cb55475105c14769644a49c3262b93"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/475b29ccd411f2fa8a408e64576418728c032cfa",
- "reference": "475b29ccd411f2fa8a408e64576418728c032cfa",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f3c8c22471cb55475105c14769644a49c3262b93",
+ "reference": "f3c8c22471cb55475105c14769644a49c3262b93",
"shasum": ""
},
"require": {
- "guzzlehttp/ringphp": "~1.0",
+ "guzzlehttp/ringphp": "^1.1",
"php": ">=5.4.0"
},
"require-dev": {
"ext-curl": "*",
- "phpunit/phpunit": "~4.0",
- "psr/log": "~1.0"
+ "phpunit/phpunit": "^4.0",
+ "psr/log": "^1.0"
},
"type": "library",
"extra": {
@@ -837,20 +843,20 @@
"rest",
"web service"
],
- "time": "2015-01-28 01:03:29"
+ "time": "2015-05-20 03:47:55"
},
{
"name": "guzzlehttp/ringphp",
- "version": "1.0.7",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/RingPHP.git",
- "reference": "52d868f13570a9a56e5fce6614e0ec75d0f13ac2"
+ "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/52d868f13570a9a56e5fce6614e0ec75d0f13ac2",
- "reference": "52d868f13570a9a56e5fce6614e0ec75d0f13ac2",
+ "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b",
+ "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b",
"shasum": ""
},
"require": {
@@ -868,7 +874,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "1.1-dev"
}
},
"autoload": {
@@ -888,7 +894,7 @@
}
],
"description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.",
- "time": "2015-03-30 01:43:20"
+ "time": "2015-05-20 03:37:09"
},
{
"name": "guzzlehttp/streams",
@@ -942,16 +948,16 @@
},
{
"name": "masterminds/html5",
- "version": "2.1.0",
+ "version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
- "reference": "a10f8d392e1aad0b500f7b440c8f0d3bc9189704"
+ "reference": "28490e9e0caea10f5ca09ab68f88d1f26e80ff9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/a10f8d392e1aad0b500f7b440c8f0d3bc9189704",
- "reference": "a10f8d392e1aad0b500f7b440c8f0d3bc9189704",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/28490e9e0caea10f5ca09ab68f88d1f26e80ff9d",
+ "reference": "28490e9e0caea10f5ca09ab68f88d1f26e80ff9d",
"shasum": ""
},
"require": {
@@ -1003,7 +1009,7 @@
"serializer",
"xml"
],
- "time": "2015-02-09 16:26:00"
+ "time": "2015-03-23 22:56:43"
},
{
"name": "mikey179/vfsStream",
@@ -1102,16 +1108,16 @@
},
{
"name": "phpspec/prophecy",
- "version": "1.4.0",
+ "version": "v1.4.1",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5"
+ "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5",
- "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
+ "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
"shasum": ""
},
"require": {
@@ -1158,20 +1164,20 @@
"spy",
"stub"
],
- "time": "2015-03-27 19:31:25"
+ "time": "2015-04-27 22:15:08"
},
{
"name": "phpunit/php-code-coverage",
- "version": "2.0.16",
+ "version": "2.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c"
+ "reference": "3703c4bb67c8700957dd41c843254658539d091d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/934fd03eb6840508231a7f73eb8940cf32c3b66c",
- "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/3703c4bb67c8700957dd41c843254658539d091d",
+ "reference": "3703c4bb67c8700957dd41c843254658539d091d",
"shasum": ""
},
"require": {
@@ -1194,7 +1200,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "2.1.x-dev"
}
},
"autoload": {
@@ -1220,7 +1226,7 @@
"testing",
"xunit"
],
- "time": "2015-04-11 04:35:00"
+ "time": "2015-06-06 08:33:23"
},
{
"name": "phpunit/php-file-iterator",
@@ -1408,16 +1414,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "4.6.4",
+ "version": "4.6.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "163232991e652e6efed2f8470326fffa61e848e2"
+ "reference": "7b5fe98b28302a8b25693b2298bca74463336975"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/163232991e652e6efed2f8470326fffa61e848e2",
- "reference": "163232991e652e6efed2f8470326fffa61e848e2",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7b5fe98b28302a8b25693b2298bca74463336975",
+ "reference": "7b5fe98b28302a8b25693b2298bca74463336975",
"shasum": ""
},
"require": {
@@ -1476,20 +1482,20 @@
"testing",
"xunit"
],
- "time": "2015-04-11 05:23:21"
+ "time": "2015-06-03 05:03:30"
},
{
"name": "phpunit/phpunit-mock-objects",
- "version": "2.3.1",
+ "version": "2.3.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "74ffb87f527f24616f72460e54b595f508dccb5c"
+ "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c",
- "reference": "74ffb87f527f24616f72460e54b595f508dccb5c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/253c005852591fd547fc18cd5b7b43a1ec82d8f7",
+ "reference": "253c005852591fd547fc18cd5b7b43a1ec82d8f7",
"shasum": ""
},
"require": {
@@ -1531,7 +1537,7 @@
"mock",
"xunit"
],
- "time": "2015-04-02 05:36:41"
+ "time": "2015-05-29 05:19:18"
},
{
"name": "psr/log",
@@ -2036,16 +2042,16 @@
},
{
"name": "stack/builder",
- "version": "v1.0.2",
+ "version": "v1.0.3",
"source": {
"type": "git",
"url": "https://github.com/stackphp/builder.git",
- "reference": "b4af43e7b7f3f7fac919ff475b29f7c5dc7b23b7"
+ "reference": "c1f8a4693b55c563405024f708a76ef576c3b276"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/stackphp/builder/zipball/b4af43e7b7f3f7fac919ff475b29f7c5dc7b23b7",
- "reference": "b4af43e7b7f3f7fac919ff475b29f7c5dc7b23b7",
+ "url": "https://api.github.com/repos/stackphp/builder/zipball/c1f8a4693b55c563405024f708a76ef576c3b276",
+ "reference": "c1f8a4693b55c563405024f708a76ef576c3b276",
"shasum": ""
},
"require": {
@@ -2074,15 +2080,14 @@
"authors": [
{
"name": "Igor Wiedler",
- "email": "igor@wiedler.ch",
- "homepage": "http://wiedler.ch/igor/"
+ "email": "igor@wiedler.ch"
}
],
"description": "Builder for stack middlewares based on HttpKernelInterface.",
"keywords": [
"stack"
],
- "time": "2014-01-28 19:42:24"
+ "time": "2014-11-23 20:37:11"
},
{
"name": "symfony-cmf/routing",
@@ -2588,6 +2593,55 @@
"time": "2015-05-02 15:21:08"
},
{
+ "name": "symfony/finder",
+ "version": "v2.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Finder.git",
+ "reference": "ccb8ed8339cf24824f2ef35dacec30d92ff44368"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Finder/zipball/ccb8ed8339cf24824f2ef35dacec30d92ff44368",
+ "reference": "ccb8ed8339cf24824f2ef35dacec30d92ff44368",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "~2.7"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "time": "2015-05-15 14:02:48"
+ },
+ {
"name": "symfony/http-foundation",
"version": "v2.7.0",
"source": {
@@ -2903,16 +2957,16 @@
},
{
"name": "symfony/translation",
- "version": "v2.7.0-BETA2",
+ "version": "v2.7.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/Translation.git",
- "reference": "1be5bbed3938247acd7c5f4e4f29dd32db636b1f"
+ "reference": "cc1907bbeacfcc703c031b67545400d6e7d1eb79"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Translation/zipball/1be5bbed3938247acd7c5f4e4f29dd32db636b1f",
- "reference": "1be5bbed3938247acd7c5f4e4f29dd32db636b1f",
+ "url": "https://api.github.com/repos/symfony/Translation/zipball/cc1907bbeacfcc703c031b67545400d6e7d1eb79",
+ "reference": "cc1907bbeacfcc703c031b67545400d6e7d1eb79",
"shasum": ""
},
"require": {
@@ -2960,7 +3014,7 @@
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com",
- "time": "2015-05-11 02:35:29"
+ "time": "2015-05-29 14:44:44"
},
{
"name": "symfony/validator",
@@ -3083,16 +3137,16 @@
},
{
"name": "twig/twig",
- "version": "v1.18.1",
+ "version": "v1.18.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "9f70492f44398e276d1b81c1b43adfe6751c7b7f"
+ "reference": "e8e6575abf6102af53ec283f7f14b89e304fa602"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/9f70492f44398e276d1b81c1b43adfe6751c7b7f",
- "reference": "9f70492f44398e276d1b81c1b43adfe6751c7b7f",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/e8e6575abf6102af53ec283f7f14b89e304fa602",
+ "reference": "e8e6575abf6102af53ec283f7f14b89e304fa602",
"shasum": ""
},
"require": {
@@ -3136,60 +3190,65 @@
"keywords": [
"templating"
],
- "time": "2015-04-19 08:30:27"
+ "time": "2015-06-06 23:31:24"
},
{
"name": "zendframework/zend-escaper",
- "version": "2.4.0",
+ "version": "2.4.2",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-escaper.git",
- "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96"
+ "reference": "13f468ff824f3c83018b90aff892a1b3201383a9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/15e5769e4fcdb4bf07ebd76500810e7070e23a97",
- "reference": "65b3328627362b0be1d5e9067bc846511d1fbc96",
+ "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/13f468ff824f3c83018b90aff892a1b3201383a9",
+ "reference": "13f468ff824f3c83018b90aff892a1b3201383a9",
"shasum": ""
},
"require": {
"php": ">=5.3.23"
},
+ "require-dev": {
+ "fabpot/php-cs-fixer": "1.7.*",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "dev-master"
+ },
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev",
- "dev-develop": "2.4-dev"
+ "dev-master": "2.4-dev",
+ "dev-develop": "2.5-dev"
}
},
"autoload": {
"psr-4": {
- "Zend\\Escaper\\": ""
+ "Zend\\Escaper\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
- "homepage": "https://github.com/zendframework/zf2",
+ "homepage": "https://github.com/zendframework/zend-escaper",
"keywords": [
"escaper",
"zf2"
],
- "time": "2015-04-01 18:02:07"
+ "time": "2015-05-07 14:55:31"
},
{
"name": "zendframework/zend-feed",
- "version": "2.4.0",
+ "version": "2.4.2",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-feed.git",
- "reference": "aca2b42ecf06d94c621e3c3be8e95d61d3a79bf5"
+ "reference": "5bec1d5217191bde466d7bf737e5affff0e7fd6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/0f59e560364f1f1fcb09a96874328ae3ff690db2",
- "reference": "aca2b42ecf06d94c621e3c3be8e95d61d3a79bf5",
+ "url": "https://api.github.com/repos/zendframework/zend-feed/zipball/5bec1d5217191bde466d7bf737e5affff0e7fd6b",
+ "reference": "5bec1d5217191bde466d7bf737e5affff0e7fd6b",
"shasum": ""
},
"require": {
@@ -3198,6 +3257,9 @@
"zendframework/zend-stdlib": "self.version"
},
"require-dev": {
+ "fabpot/php-cs-fixer": "1.7.*",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "dev-master",
"zendframework/zend-cache": "self.version",
"zendframework/zend-db": "self.version",
"zendframework/zend-http": "self.version",
@@ -3214,13 +3276,13 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev",
- "dev-develop": "2.4-dev"
+ "dev-master": "2.4-dev",
+ "dev-develop": "2.5-dev"
}
},
"autoload": {
"psr-4": {
- "Zend\\Feed\\": ""
+ "Zend\\Feed\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -3228,31 +3290,34 @@
"BSD-3-Clause"
],
"description": "provides functionality for consuming RSS and Atom feeds",
- "homepage": "https://github.com/zendframework/zf2",
+ "homepage": "https://github.com/zendframework/zend-feed",
"keywords": [
"feed",
"zf2"
],
- "time": "2015-04-01 18:09:25"
+ "time": "2015-05-07 14:55:31"
},
{
"name": "zendframework/zend-stdlib",
- "version": "2.4.0",
+ "version": "2.4.2",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-stdlib.git",
- "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030"
+ "reference": "a5dd7fd2ba6e8f6c6ea5a12db0605d3aa48af1e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/cf05c5ba75606e47ffee91cedc72778da46f74c3",
- "reference": "eab586f4c18af3fa63c977611939f1f4a3cf1030",
+ "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/a5dd7fd2ba6e8f6c6ea5a12db0605d3aa48af1e7",
+ "reference": "a5dd7fd2ba6e8f6c6ea5a12db0605d3aa48af1e7",
"shasum": ""
},
"require": {
"php": ">=5.3.23"
},
"require-dev": {
+ "fabpot/php-cs-fixer": "1.7.*",
+ "phpunit/phpunit": "~4.0",
+ "satooshi/php-coveralls": "dev-master",
"zendframework/zend-eventmanager": "self.version",
"zendframework/zend-filter": "self.version",
"zendframework/zend-serializer": "self.version",
@@ -3267,25 +3332,25 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev",
- "dev-develop": "2.4-dev"
+ "dev-master": "2.4-dev",
+ "dev-develop": "2.5-dev"
}
},
"autoload": {
"psr-4": {
- "Zend\\Stdlib\\": ""
+ "Zend\\Stdlib\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
- "homepage": "https://github.com/zendframework/zf2",
+ "homepage": "https://github.com/zendframework/zend-stdlib",
"keywords": [
"stdlib",
"zf2"
],
- "time": "2015-04-01 18:09:29"
+ "time": "2015-05-07 14:55:31"
}
],
"packages-dev": [],
diff --git a/core/console b/core/console
new file mode 100755
index 0000000..361aaa5
--- /dev/null
+++ b/core/console
@@ -0,0 +1,34 @@
+#!/usr/bin/env php
+load($file->getPathname());
+}
+
+$pass = new CompilerPass();
+$container->addCompilerPass($pass);
+$container->compile();
+
+$app = $container->get('console.app');
+$app->run();
+
diff --git a/core/core.console.services.yml b/core/core.console.services.yml
new file mode 100644
index 0000000..6f70991
--- /dev/null
+++ b/core/core.console.services.yml
@@ -0,0 +1,22 @@
+parameters:
+ # Make the class a property so we can change it for testing.
+ console.app.class: Drupal\Core\Console\Application
+
+services:
+ console.app:
+ class: "%console.app.class%"
+
+ console.bootstrap:
+ class: Drupal\Core\Console\Bootstrap
+
+ console.command.cache_clear:
+ class: Drupal\Core\Console\Command\ClearCache
+ arguments: ['@console.bootstrap']
+ tags:
+ - { name: console.command }
+
+ console.command.run_cron:
+ class: Drupal\Core\Console\Command\RunCron
+ arguments: ['@console.bootstrap']
+ tags:
+ - { name: console.command }
diff --git a/core/lib/Drupal/Core/Console/Application.php b/core/lib/Drupal/Core/Console/Application.php
new file mode 100644
index 0000000..aa7deed
--- /dev/null
+++ b/core/lib/Drupal/Core/Console/Application.php
@@ -0,0 +1,21 @@
+getOption('environment');
+ if (!$request) {
+ // Create a meaningful request object. We shouldn't really need this but
+ // Drupal complains if it's not present.
+ $request = Request::createFromGlobals();
+ }
+ try {
+ $class_loader = require __DIR__ . '/../../../../../autoload.php';
+ $kernel = DrupalKernel::createFromRequest($request, $class_loader, $env);
+ $kernel->boot();
+
+ $container = $kernel->getContainer();
+ $container->set('request', $request);
+ $container->get('request_stack')->push($request);
+
+ return $kernel;
+ } catch (\Exception $e) {
+ /** @var \Symfony\Component\Console\Helper\FormatterHelper $formatter */
+ $formatter = $command->getHelperSet()->get('formatter');
+ $error_messages = array(
+ 'Insufficient Drupal to proceed.',
+ 'This command requires a bootable Drupal installation.',
+ $e->getMessage(),
+ );
+ $formatted_block = $formatter->formatBlock($error_messages, 'error', TRUE);
+ $output->writeln($formatted_block);
+ }
+ return FALSE;
+ }
+
+}
diff --git a/core/lib/Drupal/Core/Console/BootstrapInterface.php b/core/lib/Drupal/Core/Console/BootstrapInterface.php
new file mode 100644
index 0000000..ae7767e
--- /dev/null
+++ b/core/lib/Drupal/Core/Console/BootstrapInterface.php
@@ -0,0 +1,38 @@
+setName('drupal:cache-clear')
+ ->setAliases(array('cc'))
+ ->setDescription('Clears all caches.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $kernel = $this->bootstrap->bootstrap($this, $input, $output);
+ if ($kernel) {
+ // @todo: This doesn't actually clear all caches.
+ $cache = $kernel->getContainer()->get('cache.default');
+ $cache->deleteAll();
+ $output->writeln('Caches cleared.');
+ }
+ }
+
+}
diff --git a/core/lib/Drupal/Core/Console/Command/CommandBootstrapBase.php b/core/lib/Drupal/Core/Console/Command/CommandBootstrapBase.php
new file mode 100644
index 0000000..f9fb61a
--- /dev/null
+++ b/core/lib/Drupal/Core/Console/Command/CommandBootstrapBase.php
@@ -0,0 +1,54 @@
+bootstrap = $bootstrap;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function configure() {
+ parent::configure();
+ $this
+ ->addOption(
+ 'environment', 'e', InputOption::VALUE_REQUIRED, 'Kernel environment.', 'prod'
+ );
+ }
+
+}
diff --git a/core/lib/Drupal/Core/Console/Command/RunCron.php b/core/lib/Drupal/Core/Console/Command/RunCron.php
new file mode 100644
index 0000000..f47cedc
--- /dev/null
+++ b/core/lib/Drupal/Core/Console/Command/RunCron.php
@@ -0,0 +1,43 @@
+setName('drupal:cron')
+ ->setAliases(array('cron'))
+ ->setDescription('Performs a cron run.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function execute(InputInterface $input, OutputInterface $output) {
+ $kernel = $this->bootstrap->bootstrap($this, $input, $output);
+ if ($kernel) {
+ $output->writeln('Running cron...');
+ /** @var \Drupal\Core\CronInterface $cron */
+ $cron = $kernel->getContainer()->get('cron');
+ $cron->run();
+ $output->writeln('Done.');
+ }
+ }
+
+}
diff --git a/core/lib/Drupal/Core/Console/CompilerPass.php b/core/lib/Drupal/Core/Console/CompilerPass.php
new file mode 100644
index 0000000..39fda13
--- /dev/null
+++ b/core/lib/Drupal/Core/Console/CompilerPass.php
@@ -0,0 +1,42 @@
+findTaggedServiceIds('console.command');
+ $definition = $container->getDefinition('console.app');
+ foreach (array_keys($tagged_services) as $id) {
+ $definition->addMethodCall(
+ 'add', array(new Reference($id))
+ );
+ }
+ }
+
+}
diff --git a/core/lib/Drupal/Core/Console/ServicesFinder.php b/core/lib/Drupal/Core/Console/ServicesFinder.php
new file mode 100644
index 0000000..baa32de
--- /dev/null
+++ b/core/lib/Drupal/Core/Console/ServicesFinder.php
@@ -0,0 +1,24 @@
+inDrupalCore()
+ ->inContrib()
+ ->excludeVendor()
+ ->files()
+ ->ignoreUnreadableDirs()
+ ->ignoreVCS(TRUE)
+ ->name('*.console.services.yml');
+ }
+
+}
diff --git a/core/lib/Drupal/Core/Discovery/DrupalFinder.php b/core/lib/Drupal/Core/Discovery/DrupalFinder.php
new file mode 100644
index 0000000..9baf4a6
--- /dev/null
+++ b/core/lib/Drupal/Core/Discovery/DrupalFinder.php
@@ -0,0 +1,95 @@
+drupalRoot = $drupal_root;
+ }
+
+ /**
+ * Gets the path to the root of the Drupal installation.
+ *
+ * @return string
+ * The path to the root of the Drupal installation.
+ */
+ public function getDrupalRootPath() {
+ return $this->drupalRoot;
+ }
+
+ /**
+ * Gets the path to the Drupal installation's ./core directory.
+ *
+ * @return string
+ * The path to the Drupal installation's core directory.
+ */
+ public function getDrupalCorePath() {
+ return $this->getDrupalRootPath() . '/core';
+ }
+
+ /**
+ * Sets the iterator to search the Drupal root directory.
+ *
+ * @return $this
+ */
+ public function inDrupalRoot() {
+ return $this->in($this->getDrupalRootPath());
+ }
+
+ /**
+ * Sets the iterator to search the Drupal core directory.
+ *
+ * @return $this
+ */
+ public function inDrupalCore() {
+ return $this->in($this->getDrupalCorePath());
+ }
+
+ /**
+ * Sets the iterator to search within Drupal's contrib directories.
+ *
+ * @return $this
+ */
+ public function inContrib() {
+ $this->in($this->getDrupalRootPath() . '/modules');
+ return $this->in($this->getDrupalRootPath() . '/sites');
+ }
+
+ /**
+ * Sets the iterator to exclude Composer's vendor directory.
+ *
+ * @return $this
+ */
+ public function excludeVendor() {
+ return $this->exclude($this->getDrupalCorePath() . '/vendor');
+ }
+
+}
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index d21a8fa..85a512a 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -297,7 +297,7 @@ public static function findSitePath(Request $request, $require_settings = TRUE)
}
// Check for a simpletest override.
- if ($test_prefix = drupal_valid_test_ua()) {
+ if ($test_prefix = \drupal_valid_test_ua()) {
return 'sites/simpletest/' . substr($test_prefix, 10);
}
diff --git a/core/tests/Drupal/Tests/Core/Console/ApplicationTest.php b/core/tests/Drupal/Tests/Core/Console/ApplicationTest.php
new file mode 100644
index 0000000..7b7a74c
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Console/ApplicationTest.php
@@ -0,0 +1,27 @@
+bootstrap = $this->getMock('\Drupal\Core\Console\BootstrapInterface');
+
+ $this->command = new ClearCache($this->bootstrap);
+ }
+
+ /**
+ * @covers ::execute
+ */
+ public function testExecute() {
+ $input = $this->getMock('\Symfony\Component\Console\Input\InputInterface');
+
+ $output = $this->getMock('\Symfony\Component\Console\Output\OutputInterface');
+ $output->expects($this->atLeastOnce())
+ ->method('writeln');
+
+ $kernel = $this->getMock('\Drupal\Core\DrupalKernelInterface');
+
+ $this->bootstrap->expects($this->once())
+ ->method('bootstrap')
+ ->with($this->command, $input, $output)
+ ->will($this->returnValue($kernel));
+
+ // @todo: mock this so when ClearCache says $kernel->getContainer()->get() we're OK.
+
+ $method = new \ReflectionMethod($this->command, 'execute');
+ $method->setAccessible(TRUE);
+ $method->invoke($this->command, $input, $output);
+ }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Console/Command/RunCronTest.php b/core/tests/Drupal/Tests/Core/Console/Command/RunCronTest.php
new file mode 100644
index 0000000..865472b
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Console/Command/RunCronTest.php
@@ -0,0 +1,84 @@
+bootstrap = $this->getMock('\Drupal\Core\Console\BootstrapInterface');
+
+ $this->command = new RunCron($this->bootstrap);
+ }
+
+ /**
+ * @covers ::execute
+ */
+ public function testExecute() {
+ $input = $this->getMock('\Symfony\Component\Console\Input\InputInterface');
+
+ $output = $this->getMock('\Symfony\Component\Console\Output\OutputInterface');
+ $output->expects($this->atLeastOnce())
+ ->method('writeln');
+
+ $cron = $this->getMock('\Drupal\Core\CronInterface');
+ $cron->expects($this->once())
+ ->method('run');
+
+ $container = $this->getMock('\Symfony\Component\DependencyInjection\ContainerInterface');
+ $container->expects($this->once())
+ ->method('get')
+ ->with('cron')
+ ->will($this->returnValue($cron));
+
+ $kernel = $this->getMock('\Drupal\Core\DrupalKernelInterface');
+ $kernel->expects($this->atLeastOnce())
+ ->method('getContainer')
+ ->will($this->returnValue($container));
+
+ $this->bootstrap->expects($this->once())
+ ->method('bootstrap')
+ ->with($this->command, $input, $output)
+ ->will($this->returnValue($kernel));
+
+ $method = new \ReflectionMethod($this->command, 'execute');
+ $method->setAccessible(TRUE);
+ $method->invoke($this->command, $input, $output);
+ }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Console/CompilerPassTest.php b/core/tests/Drupal/Tests/Core/Console/CompilerPassTest.php
new file mode 100644
index 0000000..59814a7
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Console/CompilerPassTest.php
@@ -0,0 +1,84 @@
+command = new CompilerPass();
+ }
+
+ /**
+ * Test the process() method.
+ *
+ * @covers ::process
+ */
+ public function testProcess() {
+ $service_ids = array($this->randomMachineName(), $this->randomMachineName());
+ $references[] = new Reference($service_ids[0]);
+ $references[] = new Reference($service_ids[1]);
+
+ $definition = $this->getMockBuilder('\Symfony\Component\DependencyInjection\Definition')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $definition->expects($this->at(0))
+ ->method('addMethodCall')
+ ->with('add', array($references[0]));
+ $definition->expects($this->at(1))
+ ->method('addMethodCall')
+ ->with('add', array($references[1]));
+
+ $container_builder = $this->getMockBuilder('\Symfony\Component\DependencyInjection\ContainerBuilder')
+ ->setMethods(array(
+ 'get',
+ 'findTaggedServiceIds',
+ 'getDefinition',
+ ))
+ ->disableOriginalConstructor()
+ ->getMock();
+ $container_builder->expects($this->once())
+ ->method('findTaggedServiceIds')
+ ->with('console.command')
+ ->will($this->returnValue(array_fill_keys($service_ids, array())));
+ $container_builder->expects($this->once())
+ ->method('getDefinition')
+ ->with('console.app')
+ ->will($this->returnValue($definition));
+
+ $this->command->process($container_builder);
+ }
+
+}
diff --git a/core/tests/Drupal/Tests/Core/Console/ServicesFinderTest.php b/core/tests/Drupal/Tests/Core/Console/ServicesFinderTest.php
new file mode 100644
index 0000000..fe2ac0f
--- /dev/null
+++ b/core/tests/Drupal/Tests/Core/Console/ServicesFinderTest.php
@@ -0,0 +1,49 @@
+ '',
+ 'name' => '\Drupal\Core\Console\ServicesFinder unit test',
+ 'group' => 'Console',
+ );
+ }
+
+ /**
+ * Basic test of constructing a new services finder.
+ *
+ * @covers ::__construct
+ */
+ public function testConstruct() {
+ $finder = new ServicesFinder();
+ $files = array();
+ foreach ($finder as $file) {
+ /** @var \Symfony\Component\Finder\SplFileInfo $file */
+ $files[] = $file->getRealPath();
+ $this->assertFileExists($file->getRealPath());
+ }
+ $this->assertNotCount(0, $files);
+ }
+
+}