diff --git a/composer.json b/composer.json
index 32084d5..2cb4930 100644
--- a/composer.json
+++ b/composer.json
@@ -2,7 +2,7 @@
"name": "spip/logo_svg",
"require": {
"php": ">=5.3.3",
- "enshrined/svg-sanitize": "0.7.2"
+ "enshrined/svg-sanitize": "0.10.0"
},
"minimum-stability": "stable"
}
diff --git a/composer.lock b/composer.lock
index 873b5e3..2eee07c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,28 +1,28 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "6bddb8311f5275b3f50fa4445261fe5e",
+ "content-hash": "abb79f488da716bb48d85154413267e8",
"packages": [
{
"name": "enshrined/svg-sanitize",
- "version": "0.7.2",
+ "version": "0.10.0",
"source": {
"type": "git",
"url": "https://github.com/darylldoyle/svg-sanitizer.git",
- "reference": "2768fb1c8868d97145e8f2a5457caf590c8d2062"
+ "reference": "5344d8511e494adf160f71f4b34024d3a3c66c82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/2768fb1c8868d97145e8f2a5457caf590c8d2062",
- "reference": "2768fb1c8868d97145e8f2a5457caf590c8d2062",
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/5344d8511e494adf160f71f4b34024d3a3c66c82",
+ "reference": "5344d8511e494adf160f71f4b34024d3a3c66c82",
"shasum": ""
},
"require-dev": {
"codeclimate/php-test-reporter": "^0.1.2",
- "phpunit/phpunit": "^4.7"
+ "phpunit/phpunit": "^6"
},
"type": "library",
"autoload": {
@@ -41,7 +41,7 @@
}
],
"description": "An SVG sanitizer for PHP",
- "time": "2017-08-31T00:10:18+00:00"
+ "time": "2019-01-11T12:31:32+00:00"
}
],
"packages-dev": [],
diff --git a/paquet.xml b/paquet.xml
index 9e5af2b..09eec24 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,9 +1,9 @@
@@ -11,11 +11,11 @@
Logo SVG
Collectif SPIP
- Julien Tessier, Agence Cahri
+ Julien Tessier, Agence Cari
GNU/GPL
-
+
diff --git a/vendor/composer/ClassLoader.php b/vendor/composer/ClassLoader.php
index 2c72175..dc02dfb 100644
--- a/vendor/composer/ClassLoader.php
+++ b/vendor/composer/ClassLoader.php
@@ -379,9 +379,9 @@ private function findFileWithExtension($class, $ext)
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath.'\\';
if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
- $length = $this->prefixLengthsPsr4[$first][$search];
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json
index 20c6244..ec2fdf5 100644
--- a/vendor/composer/installed.json
+++ b/vendor/composer/installed.json
@@ -1,24 +1,24 @@
[
{
"name": "enshrined/svg-sanitize",
- "version": "0.7.2",
- "version_normalized": "0.7.2.0",
+ "version": "0.10.0",
+ "version_normalized": "0.10.0.0",
"source": {
"type": "git",
"url": "https://github.com/darylldoyle/svg-sanitizer.git",
- "reference": "2768fb1c8868d97145e8f2a5457caf590c8d2062"
+ "reference": "5344d8511e494adf160f71f4b34024d3a3c66c82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/2768fb1c8868d97145e8f2a5457caf590c8d2062",
- "reference": "2768fb1c8868d97145e8f2a5457caf590c8d2062",
+ "url": "https://api.github.com/repos/darylldoyle/svg-sanitizer/zipball/5344d8511e494adf160f71f4b34024d3a3c66c82",
+ "reference": "5344d8511e494adf160f71f4b34024d3a3c66c82",
"shasum": ""
},
"require-dev": {
"codeclimate/php-test-reporter": "^0.1.2",
- "phpunit/phpunit": "^4.7"
+ "phpunit/phpunit": "^6"
},
- "time": "2017-08-31T00:10:18+00:00",
+ "time": "2019-01-11T12:31:32+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
diff --git a/vendor/enshrined/svg-sanitize/.travis.yml b/vendor/enshrined/svg-sanitize/.travis.yml
index c2c4fce..6a32d11 100644
--- a/vendor/enshrined/svg-sanitize/.travis.yml
+++ b/vendor/enshrined/svg-sanitize/.travis.yml
@@ -1,10 +1,8 @@
language: php
php:
- - 5.3
- - 5.4
- - 5.5
- - 5.6
- 7.0
+ - 7.1
+ - 7.2
before_script:
- composer install --dev
diff --git a/vendor/enshrined/svg-sanitize/README.md b/vendor/enshrined/svg-sanitize/README.md
index a80c721..aef40e6 100644
--- a/vendor/enshrined/svg-sanitize/README.md
+++ b/vendor/enshrined/svg-sanitize/README.md
@@ -48,6 +48,14 @@ This defaults to false, set to true to remove references.
`$sanitizer->removeRemoteReferences(true);`
+## Viewing Sanitisation Issues
+
+You may use the `getXmlIssues()` method to return an array of issues that occurred during sanitisation.
+
+This may be useful for logging or providing feedback to the user on why an SVG was refused.
+
+`$issues = $sanitizer->getXmlIssues();`
+
## Minification
You can minify the XML output by calling `$sanitiser->minify(true);`.
@@ -67,6 +75,14 @@ I've just released a WordPress plugin containing this code so you can sanitize y
You can run these by running `phpunit`
+## Standalone scanning of files via CLI
+
+Thanks to the work by [gudmdharalds](https://github.com/gudmdharalds) there's now a standalone scanner that can be used via the CLI.
+
+Any errors will be output in JSON format. See [the PR](https://github.com/darylldoyle/svg-sanitizer/pull/25) for an example.
+
+Use it as follows: `php svg-scanner.php ~/svgs/myfile.svg`
+
## To-Do
More extensive testing for the SVGs/XML would be lovely, I'll try and add these soon. If you feel like doing it for me, please do and make a PR!
\ No newline at end of file
diff --git a/vendor/enshrined/svg-sanitize/composer.json b/vendor/enshrined/svg-sanitize/composer.json
index c0d95dc..910cd73 100644
--- a/vendor/enshrined/svg-sanitize/composer.json
+++ b/vendor/enshrined/svg-sanitize/composer.json
@@ -16,7 +16,7 @@
"minimum-stability": "stable",
"require": {},
"require-dev": {
- "phpunit/phpunit": "^4.7",
+ "phpunit/phpunit": "^6",
"codeclimate/php-test-reporter": "^0.1.2"
}
}
diff --git a/vendor/enshrined/svg-sanitize/composer.lock b/vendor/enshrined/svg-sanitize/composer.lock
index 196af8b..02a0382 100644
--- a/vendor/enshrined/svg-sanitize/composer.lock
+++ b/vendor/enshrined/svg-sanitize/composer.lock
@@ -1,10 +1,10 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "hash": "5de16e26bfc22a583a99a771e94688b8",
+ "content-hash": "cf1f0e14b588378abe1857f6f62083e9",
"packages": [],
"packages-dev": [
{
@@ -62,7 +62,7 @@
"codeclimate",
"coverage"
],
- "time": "2014-07-23 13:42:41"
+ "time": "2014-07-23T13:42:41+00:00"
},
{
"name": "doctrine/instantiator",
@@ -116,7 +116,7 @@
"constructor",
"instantiate"
],
- "time": "2015-06-14 21:17:01"
+ "time": "2015-06-14T21:17:01+00:00"
},
{
"name": "guzzle/guzzle",
@@ -211,41 +211,292 @@
"rest",
"web service"
],
- "time": "2015-03-18 18:23:50"
+ "abandoned": "guzzlehttp/guzzle",
+ "time": "2015-03-18T18:23:50+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^4.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "time": "2017-10-19T19:58:43+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "phar-io/version": "^1.0.1",
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "time": "2017-03-05T18:14:27+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "time": "2017-03-05T17:38:23+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "2.0.4",
+ "version": "4.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8"
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8",
- "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
+ "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": "^7.0",
+ "phpdocumentor/reflection-common": "^1.0.0",
+ "phpdocumentor/type-resolver": "^0.4.0",
+ "webmozart/assert": "^1.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.0"
+ "doctrine/instantiator": "~1.0.5",
+ "mockery/mockery": "^1.0",
+ "phpunit/phpunit": "^6.4"
},
- "suggest": {
- "dflydev/markdown": "~1.0",
- "erusev/parsedown": "~1.0"
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2017-11-30T07:14:17+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
- "psr-0": {
- "phpDocumentor": [
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
"src/"
]
}
@@ -257,37 +508,40 @@
"authors": [
{
"name": "Mike van Riel",
- "email": "mike.vanriel@naenius.com"
+ "email": "me@mikevanriel.com"
}
],
- "time": "2015-02-03 12:10:50"
+ "time": "2017-07-14T14:27:02+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "v1.4.1",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
+ "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
- "phpdocumentor/reflection-docblock": "~2.0",
- "sebastian/comparator": "~1.1"
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0|^3.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
},
"require-dev": {
- "phpspec/phpspec": "~2.0"
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4.x-dev"
+ "dev-master": "1.8.x-dev"
}
},
"autoload": {
@@ -320,43 +574,44 @@
"spy",
"stub"
],
- "time": "2015-04-27 22:15:08"
+ "time": "2018-08-05T17:53:17+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "2.1.5",
+ "version": "5.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "be2286cb8c7e1773eded49d9719219e6f74f9e3e"
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/be2286cb8c7e1773eded49d9719219e6f74f9e3e",
- "reference": "be2286cb8c7e1773eded49d9719219e6f74f9e3e",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
+ "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "phpunit/php-file-iterator": "~1.3",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "~1.0",
- "sebastian/version": "~1.0"
+ "ext-dom": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0",
+ "phpunit/php-file-iterator": "^1.4.2",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-token-stream": "^2.0.1",
+ "sebastian/code-unit-reverse-lookup": "^1.0.1",
+ "sebastian/environment": "^3.0",
+ "sebastian/version": "^2.0.1",
+ "theseer/tokenizer": "^1.1"
},
"require-dev": {
- "ext-xdebug": ">=2.1.4",
- "phpunit/phpunit": "~4"
+ "phpunit/phpunit": "^6.0"
},
"suggest": {
- "ext-dom": "*",
- "ext-xdebug": ">=2.2.1",
- "ext-xmlwriter": "*"
+ "ext-xdebug": "^2.5.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1.x-dev"
+ "dev-master": "5.3.x-dev"
}
},
"autoload": {
@@ -371,7 +626,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -382,20 +637,20 @@
"testing",
"xunit"
],
- "time": "2015-06-09 13:05:42"
+ "time": "2018-04-06T15:36:58+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "1.4.0",
+ "version": "1.4.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb",
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
"shasum": ""
},
"require": {
@@ -429,20 +684,20 @@
"filesystem",
"iterator"
],
- "time": "2015-04-02 05:19:05"
+ "time": "2017-11-27T13:52:08+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
- "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
"shasum": ""
},
"require": {
@@ -451,20 +706,17 @@
"type": "library",
"autoload": {
"classmap": [
- "Text/"
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
- "include-path": [
- ""
- ],
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -473,26 +725,34 @@
"keywords": [
"template"
],
- "time": "2014-01-30 17:20:04"
+ "time": "2015-06-21T13:50:34+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "1.0.6",
+ "version": "1.0.9",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/83fe1bdc5d47658b727595c14da140da92b3d66d",
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
"autoload": {
"classmap": [
"src/"
@@ -514,33 +774,33 @@
"keywords": [
"timer"
],
- "time": "2015-06-13 07:35:30"
+ "time": "2017-02-26T11:10:40+00:00"
},
{
"name": "phpunit/php-token-stream",
- "version": "1.4.2",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "db63be1159c81df649cd0260e30249a586d4129e"
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/db63be1159c81df649cd0260e30249a586d4129e",
- "reference": "db63be1159c81df649cd0260e30249a586d4129e",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
+ "reference": "791198a2c6254db10131eecfe8c06670700904db",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
- "php": ">=5.3.3"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.2"
+ "phpunit/phpunit": "^6.2.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -563,45 +823,57 @@
"keywords": [
"tokenizer"
],
- "time": "2015-06-12 07:34:24"
+ "time": "2017-11-27T05:48:46+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "4.7.4",
+ "version": "6.5.13",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "e5f851f324f7add846316f39e668e9deac97a103"
+ "reference": "0973426fb012359b2f18d3bd1e90ef1172839693"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e5f851f324f7add846316f39e668e9deac97a103",
- "reference": "e5f851f324f7add846316f39e668e9deac97a103",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693",
+ "reference": "0973426fb012359b2f18d3bd1e90ef1172839693",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-json": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-spl": "*",
- "php": ">=5.3.3",
- "phpspec/prophecy": "~1.3,>=1.3.1",
- "phpunit/php-code-coverage": "~2.1",
- "phpunit/php-file-iterator": "~1.4",
- "phpunit/php-text-template": "~1.2",
- "phpunit/php-timer": ">=1.0.6",
- "phpunit/phpunit-mock-objects": "~2.3",
- "sebastian/comparator": "~1.1",
- "sebastian/diff": "~1.2",
- "sebastian/environment": "~1.2",
- "sebastian/exporter": "~1.2",
- "sebastian/global-state": "~1.0",
- "sebastian/version": "~1.0",
- "symfony/yaml": "~2.1|~3.0"
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "myclabs/deep-copy": "^1.6.1",
+ "phar-io/manifest": "^1.0.1",
+ "phar-io/version": "^1.0",
+ "php": "^7.0",
+ "phpspec/prophecy": "^1.7",
+ "phpunit/php-code-coverage": "^5.3",
+ "phpunit/php-file-iterator": "^1.4.3",
+ "phpunit/php-text-template": "^1.2.1",
+ "phpunit/php-timer": "^1.0.9",
+ "phpunit/phpunit-mock-objects": "^5.0.9",
+ "sebastian/comparator": "^2.1",
+ "sebastian/diff": "^2.0",
+ "sebastian/environment": "^3.1",
+ "sebastian/exporter": "^3.1",
+ "sebastian/global-state": "^2.0",
+ "sebastian/object-enumerator": "^3.0.3",
+ "sebastian/resource-operations": "^1.0",
+ "sebastian/version": "^2.0.1"
+ },
+ "conflict": {
+ "phpdocumentor/reflection-docblock": "3.0.2",
+ "phpunit/dbunit": "<3.0"
+ },
+ "require-dev": {
+ "ext-pdo": "*"
},
"suggest": {
- "phpunit/php-invoker": "~1.1"
+ "ext-xdebug": "*",
+ "phpunit/php-invoker": "^1.1"
},
"bin": [
"phpunit"
@@ -609,7 +881,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.7.x-dev"
+ "dev-master": "6.5.x-dev"
}
},
"autoload": {
@@ -635,29 +907,33 @@
"testing",
"xunit"
],
- "time": "2015-06-18 13:33:26"
+ "time": "2018-09-08T15:10:43+00:00"
},
{
"name": "phpunit/phpunit-mock-objects",
- "version": "2.3.4",
+ "version": "5.0.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35"
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/92408bb1968a81b3217a6fdf6c1a198da83caa35",
- "reference": "92408bb1968a81b3217a6fdf6c1a198da83caa35",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f",
+ "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "~1.0,>=1.0.2",
- "php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2"
+ "doctrine/instantiator": "^1.0.5",
+ "php": "^7.0",
+ "phpunit/php-text-template": "^1.2.1",
+ "sebastian/exporter": "^3.1"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<6.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^6.5.11"
},
"suggest": {
"ext-soap": "*"
@@ -665,7 +941,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3.x-dev"
+ "dev-master": "5.0.x-dev"
}
},
"autoload": {
@@ -680,7 +956,7 @@
"authors": [
{
"name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
+ "email": "sebastian@phpunit.de",
"role": "lead"
}
],
@@ -690,7 +966,7 @@
"mock",
"xunit"
],
- "time": "2015-06-11 15:55:48"
+ "time": "2018-08-09T05:50:03+00:00"
},
{
"name": "psr/log",
@@ -728,7 +1004,7 @@
"psr",
"psr-3"
],
- "time": "2012-12-21 11:40:51"
+ "time": "2012-12-21T11:40:51+00:00"
},
{
"name": "satooshi/php-coveralls",
@@ -796,34 +1072,80 @@
"github",
"test"
],
- "time": "2013-05-04 08:07:33"
+ "abandoned": "php-coveralls/php-coveralls",
+ "time": "2013-05-04T08:07:33+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.6 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "time": "2017-03-04T06:30:41+00:00"
},
{
"name": "sebastian/comparator",
- "version": "1.1.1",
+ "version": "2.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
+ "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "sebastian/diff": "~1.2",
- "sebastian/exporter": "~1.2"
+ "php": "^7.0",
+ "sebastian/diff": "^2.0 || ^3.0",
+ "sebastian/exporter": "^3.1"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "2.1.x-dev"
}
},
"autoload": {
@@ -854,38 +1176,38 @@
}
],
"description": "Provides the functionality to compare PHP values for equality",
- "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
"keywords": [
"comparator",
"compare",
"equality"
],
- "time": "2015-01-29 16:28:08"
+ "time": "2018-02-01T13:46:46+00:00"
},
{
"name": "sebastian/diff",
- "version": "1.3.0",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3"
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3",
- "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
+ "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.2"
+ "phpunit/phpunit": "^6.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.3-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -908,36 +1230,36 @@
}
],
"description": "Diff implementation",
- "homepage": "http://www.github.com/sebastianbergmann/diff",
+ "homepage": "https://github.com/sebastianbergmann/diff",
"keywords": [
"diff"
],
- "time": "2015-02-22 15:13:53"
+ "time": "2017-08-03T08:09:46+00:00"
},
{
"name": "sebastian/environment",
- "version": "1.2.2",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
+ "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^6.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.3.x-dev"
+ "dev-master": "3.1.x-dev"
}
},
"autoload": {
@@ -962,33 +1284,34 @@
"environment",
"hhvm"
],
- "time": "2015-01-01 10:01:08"
+ "time": "2017-07-01T08:51:00+00:00"
},
{
"name": "sebastian/exporter",
- "version": "1.2.0",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "84839970d05254c73cde183a721c7af13aede943"
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
- "reference": "84839970d05254c73cde183a721c7af13aede943",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
+ "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "sebastian/recursion-context": "~1.0"
+ "php": "^7.0",
+ "sebastian/recursion-context": "^3.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2.x-dev"
+ "dev-master": "3.1.x-dev"
}
},
"autoload": {
@@ -1028,27 +1351,27 @@
"export",
"exporter"
],
- "time": "2015-01-27 07:23:06"
+ "time": "2017-04-03T13:19:02+00:00"
},
{
"name": "sebastian/global-state",
- "version": "1.0.0",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
- "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
+ "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": "^7.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.2"
+ "phpunit/phpunit": "^6.0"
},
"suggest": {
"ext-uopz": "*"
@@ -1056,7 +1379,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -1079,32 +1402,34 @@
"keywords": [
"global state"
],
- "time": "2014-10-06 09:23:50"
+ "time": "2017-04-27T15:39:26+00:00"
},
{
- "name": "sebastian/recursion-context",
- "version": "1.0.0",
+ "name": "sebastian/object-enumerator",
+ "version": "3.0.3",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
+ "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": "^7.0",
+ "sebastian/object-reflector": "^1.1.1",
+ "sebastian/recursion-context": "^3.0"
},
"require-dev": {
- "phpunit/phpunit": "~4.4"
+ "phpunit/phpunit": "^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "3.0.x-dev"
}
},
"autoload": {
@@ -1117,38 +1442,178 @@
"BSD-3-Clause"
],
"authors": [
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
{
"name": "Sebastian Bergmann",
"email": "sebastian@phpunit.de"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
}
],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-01-24 09:48:32"
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "time": "2017-08-03T12:35:26+00:00"
},
{
- "name": "sebastian/version",
- "version": "1.0.5",
+ "name": "sebastian/object-reflector",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
+ "reference": "773f97c67f28de00d397be301821b06708fca0be",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "time": "2017-03-29T09:07:27+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "3.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2017-03-03T06:23:57+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "time": "2015-07-28T20:34:47+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4"
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
- "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
+ "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
"shasum": ""
},
+ "require": {
+ "php": ">=5.6"
+ },
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
"autoload": {
"classmap": [
"src/"
@@ -1167,39 +1632,53 @@
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
- "time": "2015-02-24 06:35:25"
+ "time": "2016-10-03T07:35:21+00:00"
},
{
"name": "symfony/config",
- "version": "v2.7.1",
+ "version": "v3.4.16",
"source": {
"type": "git",
- "url": "https://github.com/symfony/Config.git",
- "reference": "58ded81f1f582a87c528ef3dae9a859f78b5f374"
+ "url": "https://github.com/symfony/config.git",
+ "reference": "e5389132dc6320682de3643091121c048ff796b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Config/zipball/58ded81f1f582a87c528ef3dae9a859f78b5f374",
- "reference": "58ded81f1f582a87c528ef3dae9a859f78b5f374",
+ "url": "https://api.github.com/repos/symfony/config/zipball/e5389132dc6320682de3643091121c048ff796b3",
+ "reference": "e5389132dc6320682de3643091121c048ff796b3",
"shasum": ""
},
"require": {
- "php": ">=5.3.9",
- "symfony/filesystem": "~2.3"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/filesystem": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.3",
+ "symfony/finder": "<3.3"
},
"require-dev": {
- "symfony/phpunit-bridge": "~2.7"
+ "symfony/dependency-injection": "~3.3|~4.0",
+ "symfony/event-dispatcher": "~3.3|~4.0",
+ "symfony/finder": "~3.3|~4.0",
+ "symfony/yaml": "~3.0|~4.0"
+ },
+ "suggest": {
+ "symfony/yaml": "To use the yaml reference dumper"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.7-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Config\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1217,46 +1696,58 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
- "time": "2015-06-11 14:06:56"
+ "time": "2018-09-08T13:15:14+00:00"
},
{
"name": "symfony/console",
- "version": "v2.7.1",
+ "version": "v3.4.16",
"source": {
"type": "git",
- "url": "https://github.com/symfony/Console.git",
- "reference": "564398bc1f33faf92fc2ec86859983d30eb81806"
+ "url": "https://github.com/symfony/console.git",
+ "reference": "1cbaac35024c9dfc9612b7e2310e82677bf85709"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/564398bc1f33faf92fc2ec86859983d30eb81806",
- "reference": "564398bc1f33faf92fc2ec86859983d30eb81806",
+ "url": "https://api.github.com/repos/symfony/console/zipball/1cbaac35024c9dfc9612b7e2310e82677bf85709",
+ "reference": "1cbaac35024c9dfc9612b7e2310e82677bf85709",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/debug": "~2.8|~3.0|~4.0",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/process": "<3.3"
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/event-dispatcher": "~2.1",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/process": "~2.1"
+ "symfony/config": "~3.3|~4.0",
+ "symfony/dependency-injection": "~3.4|~4.0",
+ "symfony/event-dispatcher": "~2.8|~3.0|~4.0",
+ "symfony/lock": "~3.4|~4.0",
+ "symfony/process": "~3.3|~4.0"
},
"suggest": {
- "psr/log": "For using the console logger",
+ "psr/log-implementation": "For using the console logger",
"symfony/event-dispatcher": "",
+ "symfony/lock": "",
"symfony/process": ""
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.7-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Console\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1274,20 +1765,76 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2015-06-10 15:30:22"
+ "time": "2018-09-30T03:37:36+00:00"
+ },
+ {
+ "name": "symfony/debug",
+ "version": "v3.4.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/debug.git",
+ "reference": "b70cfaae39009ecde3164bb8cba4d029220d27b1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/b70cfaae39009ecde3164bb8cba4d029220d27b1",
+ "reference": "b70cfaae39009ecde3164bb8cba4d029220d27b1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "psr/log": "~1.0"
+ },
+ "conflict": {
+ "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2"
+ },
+ "require-dev": {
+ "symfony/http-kernel": "~2.8|~3.0|~4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Debug\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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 Debug Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-09-22T18:25:03+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v2.7.1",
+ "version": "v2.8.46",
"source": {
"type": "git",
- "url": "https://github.com/symfony/EventDispatcher.git",
- "reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9"
+ "url": "https://github.com/symfony/event-dispatcher.git",
+ "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
- "reference": "be3c5ff8d503c46768aeb78ce6333051aa6f26d9",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12",
+ "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12",
"shasum": ""
},
"require": {
@@ -1295,11 +1842,10 @@
},
"require-dev": {
"psr/log": "~1.0",
- "symfony/config": "~2.0,>=2.0.5",
- "symfony/dependency-injection": "~2.6",
- "symfony/expression-language": "~2.6",
- "symfony/phpunit-bridge": "~2.7",
- "symfony/stopwatch": "~2.3"
+ "symfony/config": "^2.0.5|~3.0.0",
+ "symfony/dependency-injection": "~2.6|~3.0.0",
+ "symfony/expression-language": "~2.6|~3.0.0",
+ "symfony/stopwatch": "~2.3|~3.0.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -1308,13 +1854,16 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.7-dev"
+ "dev-master": "2.8-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\EventDispatcher\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1332,38 +1881,39 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
- "time": "2015-06-08 09:37:21"
+ "time": "2018-07-26T09:03:18+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v2.7.1",
+ "version": "v3.4.16",
"source": {
"type": "git",
- "url": "https://github.com/symfony/Filesystem.git",
- "reference": "a0d43eb3e17d4f4c6990289805a488a0482a07f3"
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "f89ab242d915d188fca95ee3291c72c5a094a195"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a0d43eb3e17d4f4c6990289805a488a0482a07f3",
- "reference": "a0d43eb3e17d4f4c6990289805a488a0482a07f3",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/f89ab242d915d188fca95ee3291c72c5a094a195",
+ "reference": "f89ab242d915d188fca95ee3291c72c5a094a195",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "~2.7"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.7-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Filesystem\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1381,38 +1931,155 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
- "time": "2015-06-08 09:37:21"
+ "time": "2018-09-30T03:32:28+00:00"
},
{
- "name": "symfony/stopwatch",
- "version": "v2.7.1",
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.9.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/Stopwatch.git",
- "reference": "c653f1985f6c2b7dbffd04d48b9c0a96aaef814b"
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/c653f1985f6c2b7dbffd04d48b9c0a96aaef814b",
- "reference": "c653f1985f6c2b7dbffd04d48b9c0a96aaef814b",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
+ "reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": ">=5.3.3"
},
- "require-dev": {
- "symfony/phpunit-bridge": "~2.7"
+ "suggest": {
+ "ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.7-dev"
+ "dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ },
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
}
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "time": "2018-08-06T14:22:27+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
+ "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "time": "2018-08-06T14:22:27+00:00"
+ },
+ {
+ "name": "symfony/stopwatch",
+ "version": "v3.4.16",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "deda2765e8dab2fc38492e926ea690f2a681f59d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/deda2765e8dab2fc38492e926ea690f2a681f59d",
+ "reference": "deda2765e8dab2fc38492e926ea690f2a681f59d",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1430,38 +2097,48 @@
],
"description": "Symfony Stopwatch Component",
"homepage": "https://symfony.com",
- "time": "2015-06-04 20:11:48"
+ "time": "2018-07-26T10:03:52+00:00"
},
{
"name": "symfony/yaml",
- "version": "v2.7.1",
+ "version": "v3.4.16",
"source": {
"type": "git",
- "url": "https://github.com/symfony/Yaml.git",
- "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160"
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "61973ecda60e9f3561e929e19c07d4878b960fc1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/9808e75c609a14f6db02f70fccf4ca4aab53c160",
- "reference": "9808e75c609a14f6db02f70fccf4ca4aab53c160",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/61973ecda60e9f3561e929e19c07d4878b960fc1",
+ "reference": "61973ecda60e9f3561e929e19c07d4878b960fc1",
"shasum": ""
},
"require": {
- "php": ">=5.3.9"
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "conflict": {
+ "symfony/console": "<3.4"
},
"require-dev": {
- "symfony/phpunit-bridge": "~2.7"
+ "symfony/console": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.7-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1479,7 +2156,97 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2015-06-10 15:30:22"
+ "time": "2018-09-24T08:15:45+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+ "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "time": "2017-04-07T12:08:54+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2018-01-29T19:49:41+00:00"
}
],
"aliases": [],
diff --git a/vendor/enshrined/svg-sanitize/phpunit.xml.dist b/vendor/enshrined/svg-sanitize/phpunit.xml.dist
index e405ce3..c05b76b 100644
--- a/vendor/enshrined/svg-sanitize/phpunit.xml.dist
+++ b/vendor/enshrined/svg-sanitize/phpunit.xml.dist
@@ -14,4 +14,10 @@
+
+
+ ./src
+
+
+
\ No newline at end of file
diff --git a/vendor/enshrined/svg-sanitize/src/Sanitizer.php b/vendor/enshrined/svg-sanitize/src/Sanitizer.php
index f846192..b621987 100644
--- a/vendor/enshrined/svg-sanitize/src/Sanitizer.php
+++ b/vendor/enshrined/svg-sanitize/src/Sanitizer.php
@@ -1,9 +1,7 @@
resetInternal();
-
// Load default tags/attributes
- $this->allowedAttrs = AllowedAttributes::getAttributes();
- $this->allowedTags = AllowedTags::getTags();
+ $this->allowedAttrs = array_map('strtolower', AllowedAttributes::getAttributes());
+ $this->allowedTags = array_map('strtolower', AllowedTags::getTags());
}
/**
@@ -78,12 +84,29 @@ protected function resetInternal()
$this->xmlDocument = new DOMDocument();
$this->xmlDocument->preserveWhiteSpace = false;
$this->xmlDocument->strictErrorChecking = false;
- $this->xmlDocument->formatOutput = true;
+ $this->xmlDocument->formatOutput = !$this->minifyXML;
+ }
- // Maybe don't format the output
- if($this->minifyXML) {
- $this->xmlDocument->formatOutput = false;
- }
+ /**
+ * Set XML options to use when saving XML
+ * See: DOMDocument::saveXML
+ *
+ * @param int $xmlOptions
+ */
+ public function setXMLOptions($xmlOptions)
+ {
+ $this->xmlOptions = $xmlOptions;
+ }
+
+ /**
+ * Get XML options to use when saving XML
+ * See: DOMDocument::saveXML
+ *
+ * @return int
+ */
+ public function getXMLOptions()
+ {
+ return $this->xmlOptions;
}
/**
@@ -103,7 +126,7 @@ public function getAllowedTags()
*/
public function setAllowedTags(TagInterface $allowedTags)
{
- $this->allowedTags = $allowedTags::getTags();
+ $this->allowedTags = array_map('strtolower', $allowedTags::getTags());
}
/**
@@ -123,7 +146,7 @@ public function getAllowedAttrs()
*/
public function setAllowedAttrs(AttributeInterface $allowedAttrs)
{
- $this->allowedAttrs = $allowedAttrs::getAttributes();
+ $this->allowedAttrs = array_map('strtolower', $allowedAttrs::getAttributes());
}
/**
@@ -136,6 +159,16 @@ public function removeRemoteReferences($removeRemoteRefs = false)
$this->removeRemoteReferences = $removeRemoteRefs;
}
+ /**
+ * Get XML issues.
+ *
+ * @return array
+ */
+ public function getXmlIssues() {
+ return $this->xmlIssues;
+ }
+
+
/**
* Sanitize the passed string
*
@@ -152,6 +185,7 @@ public function sanitize($dirty)
// Strip php tags
$dirty = preg_replace('/<\?(=|php)(.+?)\?>/i', '', $dirty);
+ $this->resetInternal();
$this->setUpBefore();
$loaded = $this->xmlDocument->loadXML($dirty);
@@ -171,16 +205,16 @@ public function sanitize($dirty)
$this->startClean($allElements);
// Save cleaned XML to a variable
- if($this->removeXMLTag) {
- $clean = $this->xmlDocument->saveXML($this->xmlDocument->documentElement, LIBXML_NOEMPTYTAG);
+ if ($this->removeXMLTag) {
+ $clean = $this->xmlDocument->saveXML($this->xmlDocument->documentElement, $this->xmlOptions);
} else {
- $clean = $this->xmlDocument->saveXML($this->xmlDocument, LIBXML_NOEMPTYTAG);
+ $clean = $this->xmlDocument->saveXML($this->xmlDocument, $this->xmlOptions);
}
$this->resetAfter();
// Remove any extra whitespaces when minifying
- if($this->minifyXML) {
+ if ($this->minifyXML) {
$clean = preg_replace('/\s+/', ' ', $clean);
}
@@ -198,6 +232,9 @@ protected function setUpBefore()
// Suppress the errors because we don't really have to worry about formation before cleansing
libxml_use_internal_errors(true);
+
+ // Reset array of altered XML
+ $this->xmlIssues = array();
}
/**
@@ -205,10 +242,7 @@ protected function setUpBefore()
*/
protected function resetAfter()
{
- // Reset DOMDocument to a clean state in case we use it again
- $this->resetInternal();
-
- // Reset the entity loader3
+ // Reset the entity loader
libxml_disable_entity_loader($this->xmlLoaderValue);
}
@@ -241,6 +275,10 @@ protected function startClean(\DOMNodeList $elements)
// If the tag isn't in the whitelist, remove it and continue with next iteration
if (!in_array(strtolower($currentElement->tagName), $this->allowedTags)) {
$currentElement->parentNode->removeChild($currentElement);
+ $this->xmlIssues[] = array(
+ 'message' => 'Suspicious tag \'' . $currentElement->tagName . '\'',
+ 'line' => $currentElement->getLineNo(),
+ );
continue;
}
@@ -249,6 +287,17 @@ protected function startClean(\DOMNodeList $elements)
$this->cleanXlinkHrefs($currentElement);
$this->cleanHrefs($currentElement);
+
+ if (strtolower($currentElement->tagName) === 'use') {
+ if ($this->isUseTagDirty($currentElement)) {
+ $currentElement->parentNode->removeChild($currentElement);
+ $this->xmlIssues[] = array(
+ 'message' => 'Suspicious \'' . $currentElement->tagName . '\'',
+ 'line' => $currentElement->getLineNo(),
+ );
+ continue;
+ }
+ }
}
}
@@ -265,7 +314,12 @@ protected function cleanAttributesOnWhitelist(\DOMElement $element)
// Remove attribute if not in whitelist
if (!in_array(strtolower($attrName), $this->allowedAttrs) && !$this->isAriaAttribute(strtolower($attrName)) && !$this->isDataAttribute(strtolower($attrName))) {
+
$element->removeAttribute($attrName);
+ $this->xmlIssues[] = array(
+ 'message' => 'Suspicious attribute \'' . $attrName . '\'',
+ 'line' => $element->getLineNo(),
+ );
}
// Do we want to strip remote references?
@@ -273,6 +327,10 @@ protected function cleanAttributesOnWhitelist(\DOMElement $element)
// Remove attribute if it has a remote reference
if (isset($element->attributes->item($x)->value) && $this->hasRemoteReference($element->attributes->item($x)->value)) {
$element->removeAttribute($attrName);
+ $this->xmlIssues[] = array(
+ 'message' => 'Suspicious attribute \'' . $attrName . '\'',
+ 'line' => $element->getLineNo(),
+ );
}
}
}
@@ -283,11 +341,25 @@ protected function cleanAttributesOnWhitelist(\DOMElement $element)
*
* @param \DOMElement $element
*/
- protected function cleanXlinkHrefs(\DOMElement &$element)
+ protected function cleanXlinkHrefs(\DOMElement $element)
{
$xlinks = $element->getAttributeNS('http://www.w3.org/1999/xlink', 'href');
if (preg_match(self::SCRIPT_REGEX, $xlinks) === 1) {
- $element->removeAttributeNS('http://www.w3.org/1999/xlink', 'href');
+ if (!in_array(substr($xlinks, 0, 14), array(
+ 'data:image/png', // PNG
+ 'data:image/gif', // GIF
+ 'data:image/jpg', // JPG
+ 'data:image/jpe', // JPEG
+ 'data:image/pjp', // PJPEG
+ ))) {
+ $element->removeAttributeNS( 'http://www.w3.org/1999/xlink', 'href' );
+ $this->xmlIssues[] = array(
+ 'message' => 'Suspicious attribute \'href\'',
+ 'line' => $element->getLineNo(),
+ );
+
+
+ }
}
}
@@ -296,11 +368,15 @@ protected function cleanXlinkHrefs(\DOMElement &$element)
*
* @param \DOMElement $element
*/
- protected function cleanHrefs(\DOMElement &$element)
+ protected function cleanHrefs(\DOMElement $element)
{
$href = $element->getAttribute('href');
if (preg_match(self::SCRIPT_REGEX, $href) === 1) {
$element->removeAttribute('href');
+ $this->xmlIssues[] = array(
+ 'message' => 'Suspicious attribute \'href\'',
+ 'line' => $element->getLineNo(),
+ );
}
}
@@ -321,7 +397,8 @@ protected function removeNonPrintableCharacters($value)
* @param $value
* @return bool
*/
- protected function hasRemoteReference($value){
+ protected function hasRemoteReference($value)
+ {
$value = $this->removeNonPrintableCharacters($value);
$wrapped_in_url = preg_match('~^url\(\s*[\'"]\s*(.*)\s*[\'"]\s*\)$~xi', $value, $match);
@@ -331,11 +408,7 @@ protected function hasRemoteReference($value){
$value = trim($match[1], '\'"');
- if (preg_match('~^((https?|ftp|file):)?//~xi', $value)){
- return true;
- }
-
- return false;
+ return preg_match('~^((https?|ftp|file):)?//~xi', $value);
}
/**
@@ -353,7 +426,7 @@ public function minify($shouldMinify = false)
*
* @param bool $removeXMLTag
*/
- public function removeXMLTag ($removeXMLTag = false)
+ public function removeXMLTag($removeXMLTag = false)
{
$this->removeXMLTag = (bool) $removeXMLTag;
}
@@ -365,15 +438,9 @@ public function removeXMLTag ($removeXMLTag = false)
*
* @return bool
*/
- protected function isAriaAttribute( $attributeName )
+ protected function isAriaAttribute($attributeName)
{
- $position = strpos($attributeName, 'aria-');
-
- if($position === 0) {
- return true;
- }
-
- return false;
+ return strpos($attributeName, 'aria-') === 0;
}
/**
@@ -383,11 +450,21 @@ protected function isAriaAttribute( $attributeName )
*
* @return bool
*/
- protected function isDataAttribute( $attributeName )
+ protected function isDataAttribute($attributeName)
{
- $position = strpos($attributeName, 'data-');
+ return strpos($attributeName, 'data-') === 0;
+ }
- if($position === 0) {
+ /**
+ * Make sure our use tag is only referencing internal resources
+ *
+ * @param \DOMElement $element
+ * @return bool
+ */
+ protected function isUseTagDirty(\DOMElement $element)
+ {
+ $xlinks = $element->getAttributeNS('http://www.w3.org/1999/xlink', 'href');
+ if ($xlinks && substr($xlinks, 0, 1) !== '#') {
return true;
}
diff --git a/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php b/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php
index 11b81c0..a0c9788 100644
--- a/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php
+++ b/vendor/enshrined/svg-sanitize/src/data/AllowedAttributes.php
@@ -39,6 +39,7 @@ public static function getAttributes()
'cols',
'colspan',
'coords',
+ 'crossorigin',
'datetime',
'default',
'dir',
@@ -54,6 +55,7 @@ public static function getAttributes()
'href',
'hreflang',
'id',
+ 'integrity',
'ismap',
'label',
'lang',
@@ -91,10 +93,12 @@ public static function getAttributes()
'selected',
'shape',
'size',
+ 'sizes',
'span',
'srclang',
'start',
'src',
+ 'srcset',
'step',
'style',
'summary',
@@ -121,6 +125,7 @@ public static function getAttributes()
'begin',
'bias',
'by',
+ 'class',
'clip',
'clip-path',
'clip-rule',
@@ -163,6 +168,9 @@ public static function getAttributes()
'glyphref',
'gradientunits',
'gradienttransform',
+ 'height',
+ 'href',
+ 'id',
'image-rendering',
'in',
'in2',
@@ -175,6 +183,7 @@ public static function getAttributes()
'keypoints',
'keysplines',
'keytimes',
+ 'lang',
'lengthadjust',
'letter-spacing',
'kernelmatrix',
@@ -191,8 +200,11 @@ public static function getAttributes()
'maskunits',
'max',
'mask',
+ 'media',
+ 'method',
'mode',
'min',
+ 'name',
'numoctaves',
'offset',
'operator',
@@ -210,6 +222,7 @@ public static function getAttributes()
'patternunits',
'points',
'preservealpha',
+ 'preserveaspectratio',
'r',
'rx',
'ry',
@@ -239,7 +252,9 @@ public static function getAttributes()
'stroke-opacity',
'stroke',
'stroke-width',
+ 'style',
'surfacescale',
+ 'tabindex',
'targetx',
'targety',
'transform',
@@ -247,6 +262,7 @@ public static function getAttributes()
'text-decoration',
'text-rendering',
'textlength',
+ 'type',
'u1',
'u2',
'unicode',
@@ -256,6 +272,7 @@ public static function getAttributes()
'vert-adv-y',
'vert-origin-x',
'vert-origin-y',
+ 'width',
'word-spacing',
'wrap',
'writing-mode',
@@ -264,6 +281,7 @@ public static function getAttributes()
'x',
'x1',
'x2',
+ 'xmlns',
'y',
'y1',
'y2',
@@ -273,6 +291,7 @@ public static function getAttributes()
// MathML
'accent',
'accentunder',
+ 'align',
'bevelled',
'close',
'columnsalign',
@@ -280,10 +299,14 @@ public static function getAttributes()
'columnspan',
'denomalign',
'depth',
+ 'dir',
'display',
'displaystyle',
'fence',
'frame',
+ 'height',
+ 'href',
+ 'id',
'largeop',
'length',
'linethickness',
@@ -311,11 +334,14 @@ public static function getAttributes()
'selection',
'separator',
'separators',
+ 'slope',
'stretchy',
'subscriptshift',
'supscriptshift',
'symmetric',
'voffset',
+ 'width',
+ 'xmlns',
// XML
'xlink:href',
@@ -323,73 +349,6 @@ public static function getAttributes()
'xlink:title',
'xml:space',
'xmlns:xlink',
-
-
- // Camel Case
- 'allowreorder',
- 'attributename',
- 'attributetype',
- 'autoreverse',
- 'basefrequency',
- 'baseprofile',
- 'calcmode',
- 'clippathunits',
- 'contentscripttype',
- 'contentstyletype',
- 'diffuseconstant',
- 'edgemode',
- 'externalresourcesrequired',
- 'filterres',
- 'filterunits',
- 'glyphref',
- 'gradienttransform',
- 'gradientunits',
- 'kernelmatrix',
- 'kernelunitlength',
- 'keypoints',
- 'keysplines',
- 'keytimes',
- 'lengthadjust',
- 'limitingconeangle',
- 'markerheight',
- 'markerunits',
- 'markerwidth',
- 'maskcontentunits',
- 'maskunits',
- 'numoctaves',
- 'pathlength',
- 'patterncontentunits',
- 'patterntransform',
- 'patternunits',
- 'pointsatx',
- 'pointsaty',
- 'pointsatz',
- 'preservealpha',
- 'preserveaspectratio',
- 'primitiveunits',
- 'refx',
- 'refy',
- 'repeatcount',
- 'repeatdur',
- 'requiredextensions',
- 'requiredfeatures',
- 'specularconstant',
- 'specularexponent',
- 'spreadmethod',
- 'startoffset',
- 'stddeviation',
- 'stitchtiles',
- 'surfacescale',
- 'systemlanguage',
- 'tablevalues',
- 'targetx',
- 'targety',
- 'textlength',
- 'viewbox',
- 'viewtarget',
- 'xchannelselector',
- 'ychannelselector',
- 'zoomandpan',
);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/enshrined/svg-sanitize/src/data/AllowedTags.php b/vendor/enshrined/svg-sanitize/src/data/AllowedTags.php
index b6a2df0..5b0f3de 100644
--- a/vendor/enshrined/svg-sanitize/src/data/AllowedTags.php
+++ b/vendor/enshrined/svg-sanitize/src/data/AllowedTags.php
@@ -21,43 +21,225 @@ public static function getTags()
{
return array (
// HTML
- 'a','abbr','acronym','address','area','article','aside','audio','b',
- 'bdi','bdo','big','blink','blockquote','body','br','button','canvas',
- 'caption','center','cite','code','col','colgroup','content','data',
- 'datalist','dd','decorator','del','details','dfn','dir','div','dl','dt',
- 'element','em','fieldset','figcaption','figure','font','footer','form',
- 'h1','h2','h3','h4','h5','h6','head','header','hgroup','hr','html','i',
- 'img','input','ins','kbd','label','legend','li','main','map','mark',
- 'marquee','menu','menuitem','meter','nav','nobr','ol','optgroup',
- 'option','output','p','pre','progress','q','rp','rt','ruby','s','samp',
- 'section','select','shadow','small','source','spacer','span','strike',
- 'strong','style','sub','summary','sup','table','tbody','td','template',
- 'textarea','tfoot','th','thead','time','tr','track','tt','u','ul','use','var',
- 'video','wbr',
+ 'a',
+ 'abbr',
+ 'acronym',
+ 'address',
+ 'area',
+ 'article',
+ 'aside',
+ 'audio',
+ 'b',
+ 'bdi',
+ 'bdo',
+ 'big',
+ 'blink',
+ 'blockquote',
+ 'body',
+ 'br',
+ 'button',
+ 'canvas',
+ 'caption',
+ 'center',
+ 'cite',
+ 'code',
+ 'col',
+ 'colgroup',
+ 'content',
+ 'data',
+ 'datalist',
+ 'dd',
+ 'decorator',
+ 'del',
+ 'details',
+ 'dfn',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'element',
+ 'em',
+ 'fieldset',
+ 'figcaption',
+ 'figure',
+ 'font',
+ 'footer',
+ 'form',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'header',
+ 'hgroup',
+ 'hr',
+ 'html',
+ 'i',
+ 'image',
+ 'img',
+ 'input',
+ 'ins',
+ 'kbd',
+ 'label',
+ 'legend',
+ 'li',
+ 'main',
+ 'map',
+ 'mark',
+ 'marquee',
+ 'menu',
+ 'menuitem',
+ 'meter',
+ 'nav',
+ 'nobr',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'output',
+ 'p',
+ 'pre',
+ 'progress',
+ 'q',
+ 'rp',
+ 'rt',
+ 'ruby',
+ 's',
+ 'samp',
+ 'section',
+ 'select',
+ 'shadow',
+ 'small',
+ 'source',
+ 'spacer',
+ 'span',
+ 'strike',
+ 'strong',
+ 'style',
+ 'sub',
+ 'summary',
+ 'sup',
+ 'table',
+ 'tbody',
+ 'td',
+ 'template',
+ 'textarea',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'time',
+ 'tr',
+ 'track',
+ 'tt',
+ 'u',
+ 'ul',
+ 'var',
+ 'video',
+ 'wbr',
// SVG
- 'svg','altglyph','altglyphdef','altglyphitem','animatecolor',
- 'animatemotion','animatetransform','circle','clippath','defs','desc',
- 'ellipse','filter','font','g','glyph','glyphref','hkern','image','line',
- 'lineargradient','marker','mask','metadata','mpath','path','pattern',
- 'polygon','polyline','radialgradient','rect','stop','switch','symbol',
- 'text','textpath','title','tref','tspan','view','vkern',
+ 'svg',
+ 'altglyph',
+ 'altglyphdef',
+ 'altglyphitem',
+ 'animatecolor',
+ 'animatemotion',
+ 'animatetransform',
+ 'circle',
+ 'clippath',
+ 'defs',
+ 'desc',
+ 'ellipse',
+ 'filter',
+ 'font',
+ 'g',
+ 'glyph',
+ 'glyphref',
+ 'hkern',
+ 'image',
+ 'line',
+ 'lineargradient',
+ 'marker',
+ 'mask',
+ 'metadata',
+ 'mpath',
+ 'path',
+ 'pattern',
+ 'polygon',
+ 'polyline',
+ 'radialgradient',
+ 'rect',
+ 'stop',
+ 'switch',
+ 'symbol',
+ 'text',
+ 'textpath',
+ 'title',
+ 'tref',
+ 'tspan',
+ 'use',
+ 'view',
+ 'vkern',
// SVG Filters
- 'feblend','fecolormatrix','fecomponenttransfer','fecomposite',
- 'feconvolvematrix','fediffuselighting','fedisplacementmap',
- 'feflood','fefunca','fefuncb','fefuncg','fefuncr','fegaussianblur',
- 'femerge','femergenode','femorphology','feoffset',
- 'fespecularlighting','fetile','feturbulence',
+ 'feBlend',
+ 'feColorMatrix',
+ 'feComponentTransfer',
+ 'feComposite',
+ 'feConvolveMatrix',
+ 'feDiffuseLighting',
+ 'feDisplacementMap',
+ 'feDistantLight',
+ 'feFlood',
+ 'feFuncA',
+ 'feFuncB',
+ 'feFuncG',
+ 'feFuncR',
+ 'feGaussianBlur',
+ 'feMerge',
+ 'feMergeNode',
+ 'feMorphology',
+ 'feOffset',
+ 'fePointLight',
+ 'feSpecularLighting',
+ 'feSpotLight',
+ 'feTile',
+ 'feTurbulence',
//MathML
- 'math','menclose','merror','mfenced','mfrac','mglyph','mi','mlabeledtr',
- 'mmuliscripts','mn','mo','mover','mpadded','mphantom','mroot','mrow',
- 'ms','mpspace','msqrt','mystyle','msub','msup','msubsup','mtable','mtd',
- 'mtext','mtr','munder','munderover',
+ 'math',
+ 'menclose',
+ 'merror',
+ 'mfenced',
+ 'mfrac',
+ 'mglyph',
+ 'mi',
+ 'mlabeledtr',
+ 'mmuliscripts',
+ 'mn',
+ 'mo',
+ 'mover',
+ 'mpadded',
+ 'mphantom',
+ 'mroot',
+ 'mrow',
+ 'ms',
+ 'mpspace',
+ 'msqrt',
+ 'mystyle',
+ 'msub',
+ 'msup',
+ 'msubsup',
+ 'mtable',
+ 'mtd',
+ 'mtext',
+ 'mtr',
+ 'munder',
+ 'munderover',
//text
'#text'
);
}
-}
\ No newline at end of file
+}
diff --git a/vendor/enshrined/svg-sanitize/src/svg-scanner.php b/vendor/enshrined/svg-sanitize/src/svg-scanner.php
new file mode 100644
index 0000000..0da242f
--- /dev/null
+++ b/vendor/enshrined/svg-sanitize/src/svg-scanner.php
@@ -0,0 +1,187 @@
+#!/usr/bin/env php
+ array(
+ 'errors' => 0,
+ ),
+
+ 'files' => array(
+ ),
+);
+
+
+/*
+ * Catch files to scan from $argv.
+ */
+
+$files_to_scan = $argv;
+unset( $files_to_scan[0] );
+
+$files_to_scan = array_values(
+ $files_to_scan
+);
+
+/*
+ * Catch no file specified.
+ */
+
+if ( empty( $files_to_scan ) ) {
+ $results['totals']['errors']++;
+ $results['messages'] = array(
+ array( 'No files to scan specified' ),
+ );
+
+ sysexit(
+ $results,
+ 1
+ );
+}
+
+/*
+ * Initialize the SVG scanner.
+ *
+ * Make sure to allow custom attributes,
+ * and to remove remote references.
+ */
+$sanitizer = new enshrined\svgSanitize\Sanitizer();
+
+$sanitizer->removeRemoteReferences( true );
+
+/*
+ * Scan each file specified to be scanned.
+ */
+
+foreach( $files_to_scan as $file_name ) {
+ /*
+ * Read SVG file.
+ */
+ $svg_file = @file_get_contents( $file_name );
+
+ /*
+ * If not found, report that and continue.
+ */
+ if ( false === $svg_file ) {
+ $results['totals']['errors']++;
+
+ $results['files'][ $file_name ][] = array(
+ 'errors' => 1,
+ 'messages' => array(
+ array(
+ 'message' => 'File specified could not be read (' . $file_name . ')',
+ 'line' => null,
+ ),
+ ),
+ );
+
+ continue;
+ }
+
+ /*
+ * Sanitize file and get issues found.
+ */
+ $sanitize_status = $sanitizer->sanitize( $svg_file );
+
+ $xml_issues = $sanitizer->getXmlIssues();
+
+ /*
+ * If we find no issues, simply note that.
+ */
+ if ( empty( $xml_issues ) && ( false !== $sanitize_status ) ) {
+ $results['files'][ $file_name ] = array(
+ 'errors' => 0,
+ 'messages' => array()
+ );
+ }
+
+ /*
+ * Could not sanitize the file.
+ */
+ else if (
+ ( '' === $sanitize_status ) ||
+ ( false === $sanitize_status )
+ ) {
+ $results['totals']['errors']++;
+
+ $results['files'][ $file_name ] = array(
+ 'errors' => 1,
+ 'messages' => array(
+ array(
+ 'message' => 'Unable to sanitize file \'' . $file_name . '\'' ,
+ 'line' => null,
+ )
+ ),
+ );
+ }
+
+ /*
+ * If we find issues, note it and update statistics.
+ */
+
+ else {
+ $results['totals']['errors'] += count( $xml_issues );
+
+ $results['files'][ $file_name ] = array(
+ 'errors' => count( $xml_issues ),
+ 'messages' => $xml_issues,
+ );
+ }
+
+ unset( $svg_file );
+ unset( $xml_issues );
+ unset( $sanitize_status );
+}
+
+
+/*
+ * Exit with a status
+ * that reflects what issues
+ * we found.
+ */
+sysexit(
+ $results,
+ ( $results['totals']['errors'] === 0 ? 0 : 1 )
+);
diff --git a/vendor/enshrined/svg-sanitize/tests/AllowedAttributesTest.php b/vendor/enshrined/svg-sanitize/tests/AllowedAttributesTest.php
index f668cd3..9e224ac 100644
--- a/vendor/enshrined/svg-sanitize/tests/AllowedAttributesTest.php
+++ b/vendor/enshrined/svg-sanitize/tests/AllowedAttributesTest.php
@@ -1,11 +1,12 @@
class->getAllowedTags();
$this->assertInternalType('array', $tags);
- $this->assertEquals(TestAllowedTags::getTags(), $tags);
+
+ $this->assertEquals(array_map('strtolower', TestAllowedTags::getTags()), $tags);
}
/**
@@ -65,7 +67,8 @@ public function testSetCustomAttributes()
$attributes = $this->class->getAllowedAttrs();
$this->assertInternalType('array', $attributes);
- $this->assertEquals(TestAllowedAttributes::getAttributes(), $attributes);
+
+ $this->assertEquals( array_map('strtolower', TestAllowedAttributes::getAttributes()), $attributes);
}
/**
@@ -163,4 +166,33 @@ public function testThatAriaAndDataAttributesAreAllowed()
$this->assertXmlStringEqualsXmlString($expected, $cleanData);
}
-}
\ No newline at end of file
+
+ /**
+ * Test that ARIA and Data Attributes are allowed
+ */
+ public function testThatExternalUseElementsAreStripped()
+ {
+ $initialData = file_get_contents('tests/data/useTest.svg');
+ $expected = file_get_contents('tests/data/useClean.svg');
+
+ $this->class->minify(false);
+ $cleanData = $this->class->sanitize($initialData);
+ $this->class->minify(false);
+
+ $this->assertXmlStringEqualsXmlString($expected, $cleanData);
+ }
+
+ /**
+ * Test setXMLOptions and minifying works as expected
+ */
+ public function testMinifiedOptions()
+ {
+ $this->class->minify(true);
+ $this->class->removeXMLTag(true);
+ $this->class->setXMLOptions(0);
+
+ $input = '';
+ $output = $this->class->sanitize($input);
+ $this->assertEquals($input, $output);
+ }
+}
diff --git a/vendor/enshrined/svg-sanitize/tests/data/useClean.svg b/vendor/enshrined/svg-sanitize/tests/data/useClean.svg
new file mode 100644
index 0000000..5f8b8be
--- /dev/null
+++ b/vendor/enshrined/svg-sanitize/tests/data/useClean.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/vendor/enshrined/svg-sanitize/tests/data/useTest.svg b/vendor/enshrined/svg-sanitize/tests/data/useTest.svg
new file mode 100644
index 0000000..888416a
--- /dev/null
+++ b/vendor/enshrined/svg-sanitize/tests/data/useTest.svg
@@ -0,0 +1,5 @@
+
\ No newline at end of file