Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml16
-rw-r--r--composer.json2
-rw-r--r--composer.lock252
-rw-r--r--core/Composer/ScriptHandler.php15
-rw-r--r--core/Db/Adapter.php8
-rw-r--r--core/ExceptionHandler.php20
-rw-r--r--core/Plugin/Dimension/VisitDimension.php49
-rw-r--r--plugins/Diagnostics/Diagnostic/PhpSettingsCheck.php8
-rw-r--r--plugins/Insights/tests/Unit/FilterOrderByTest.php7
-rwxr-xr-xtests/PHPUnit/Framework/TestCase/SystemTestCase.php5
-rw-r--r--tests/PHPUnit/Integration/PiwikTest.php8
-rw-r--r--tests/PHPUnit/Integration/Plugin/Dimension/VisitDimensionTest.php33
-rw-r--r--tests/PHPUnit/Unit/FilesystemTest.php6
-rw-r--r--tests/PHPUnit/Unit/Period/DayTest.php2
14 files changed, 286 insertions, 145 deletions
diff --git a/.travis.yml b/.travis.yml
index eef27e1d5e..3e8905be9c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,6 +10,7 @@
language: php
php:
+ - 7
- 5.6
- 5.3.3
# - hhvm
@@ -43,6 +44,7 @@ matrix:
fast_finish: true
allow_failures:
- php: hhvm
+ - php: 7
exclude:
# Run test suites separately only on PHP 5.6 with PDO
- php: 5.3.3
@@ -51,6 +53,8 @@ matrix:
env: TEST_SUITE=IntegrationTests MYSQL_ADAPTER=PDO_MYSQL
- php: 5.3.3
env: TEST_SUITE=AllTests MYSQL_ADAPTER=PDO_MYSQL
+ - php: 7
+ env: TEST_SUITE=AllTests MYSQL_ADAPTER=PDO_MYSQL
- php: 5.3.3
env: TEST_SUITE=UnitTests MYSQL_ADAPTER=PDO_MYSQL
- php: hhvm
@@ -69,6 +73,8 @@ matrix:
env: TEST_SUITE=AllTests MYSQL_ADAPTER=PDO_MYSQL
- php: 5.3.3
env: TEST_SUITE=AllTests MYSQL_ADAPTER=MYSQLI
+ - php: 7
+ env: TEST_SUITE=AllTests MYSQL_ADAPTER=MYSQLI
- php: hhvm
env: TEST_SUITE=AllTests MYSQL_ADAPTER=MYSQLI
# Javascript tests need to run only on one PHP version
@@ -76,11 +82,15 @@ matrix:
env: TEST_SUITE=JavascriptTests MYSQL_ADAPTER=PDO_MYSQL SKIP_COMPOSER_INSTALL=1
- php: hhvm
env: TEST_SUITE=JavascriptTests MYSQL_ADAPTER=PDO_MYSQL SKIP_COMPOSER_INSTALL=1
+ - php: 7
+ env: TEST_SUITE=JavascriptTests MYSQL_ADAPTER=PDO_MYSQL SKIP_COMPOSER_INSTALL=1
# AngularJS tests need to run only on one PHP version
- php: 5.3.3
env: TEST_SUITE=AngularJSTests MYSQL_ADAPTER=PDO_MYSQL SKIP_COMPOSER_INSTALL=1
- php: hhvm
env: TEST_SUITE=AngularJSTests MYSQL_ADAPTER=PDO_MYSQL SKIP_COMPOSER_INSTALL=1
+ - php: 7
+ env: TEST_SUITE=AngularJSTests MYSQL_ADAPTER=PDO_MYSQL SKIP_COMPOSER_INSTALL=1
sudo: required
@@ -93,8 +103,8 @@ before_install:
install:
- git fetch -q
- - export GENERATE_TRAVIS_YML_COMMAND="php ./tests/travis/generator/main.php generate:travis-yml --core --verbose"
- - '[[ "$TRAVIS_JOB_NUMBER" != *.1 || "$TRAVIS_PULL_REQUEST" != "false" ]] || ./tests/travis/autoupdate_travis_yml.sh'
+# - export GENERATE_TRAVIS_YML_COMMAND="php ./tests/travis/generator/main.php generate:travis-yml --core --verbose"
+# - '[[ "$TRAVIS_JOB_NUMBER" != *.1 || "$TRAVIS_PULL_REQUEST" != "false" ]] || ./tests/travis/autoupdate_travis_yml.sh'
- '[ ! -f ./tests/travis/install_mysql_5.6.sh ] || ./tests/travis/install_mysql_5.6.sh'
@@ -110,7 +120,7 @@ install:
before_script:
- - phpenv config-rm xdebug.ini;
+ - if [[ "$TRAVIS_PHP_VERSION" != 7* ]]; then phpenv config-rm xdebug.ini; fi
# add always_populate_raw_post_data=-1 to php.ini
- echo "always_populate_raw_post_data=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
diff --git a/composer.json b/composer.json
index 8cc4cfdadb..1943bd6c2f 100644
--- a/composer.json
+++ b/composer.json
@@ -58,7 +58,7 @@
},
"require-dev": {
"aws/aws-sdk-php": "2.7.1",
- "phpunit/phpunit": "~4.1",
+ "phpunit/phpunit": "~4.8",
"facebook/xhprof": "dev-master",
"phpseclib/phpseclib": "~0.3.8",
"symfony/var-dumper": "~2.6.0",
diff --git a/composer.lock b/composer.lock
index 7879657d88..ca7c89576c 100644
--- a/composer.lock
+++ b/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": "1f60c1756d33943d2da85062b6d2c4d1",
+ "hash": "500550a2b3c6f91d0a34461f2e6f8654",
"packages": [
{
"name": "container-interop/container-interop",
@@ -35,16 +35,16 @@
},
{
"name": "doctrine/annotations",
- "version": "v1.2.6",
+ "version": "v1.2.7",
"source": {
"type": "git",
"url": "https://github.com/doctrine/annotations.git",
- "reference": "f4a91702ca3cd2e568c3736aa031ed00c3752af4"
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/f4a91702ca3cd2e568c3736aa031ed00c3752af4",
- "reference": "f4a91702ca3cd2e568c3736aa031ed00c3752af4",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
+ "reference": "f25c8aab83e0c3e976fd7d19875f198ccf2f7535",
"shasum": ""
},
"require": {
@@ -99,20 +99,20 @@
"docblock",
"parser"
],
- "time": "2015-06-17 12:21:22"
+ "time": "2015-08-31 12:32:49"
},
{
"name": "doctrine/cache",
- "version": "v1.4.1",
+ "version": "v1.4.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03"
+ "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/c9eadeb743ac6199f7eec423cb9426bc518b7b03",
- "reference": "c9eadeb743ac6199f7eec423cb9426bc518b7b03",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/8c434000f420ade76a07c64cbe08ca47e5c101ca",
+ "reference": "8c434000f420ade76a07c64cbe08ca47e5c101ca",
"shasum": ""
},
"require": {
@@ -169,7 +169,7 @@
"cache",
"caching"
],
- "time": "2015-04-15 00:11:59"
+ "time": "2015-08-31 12:36:41"
},
{
"name": "doctrine/lexer",
@@ -303,16 +303,16 @@
},
{
"name": "monolog/monolog",
- "version": "1.15.0",
+ "version": "1.17.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "dc5150cc608f2334c72c3b6a553ec9668a4156b0"
+ "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/dc5150cc608f2334c72c3b6a553ec9668a4156b0",
- "reference": "dc5150cc608f2334c72c3b6a553ec9668a4156b0",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/0524c87587ab85bc4c2d6f5b41253ccb930a5422",
+ "reference": "0524c87587ab85bc4c2d6f5b41253ccb930a5422",
"shasum": ""
},
"require": {
@@ -329,7 +329,7 @@
"php-console/php-console": "^3.1.3",
"phpunit/phpunit": "~4.5",
"phpunit/phpunit-mock-objects": "2.3.0",
- "raven/raven": "~0.8",
+ "raven/raven": "~0.11",
"ruflin/elastica": ">=0.90 <3.0",
"swiftmailer/swiftmailer": "~5.3",
"videlalvaro/php-amqplib": "~2.4"
@@ -349,7 +349,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.15.x-dev"
+ "dev-master": "1.16.x-dev"
}
},
"autoload": {
@@ -375,7 +375,7 @@
"logging",
"psr-3"
],
- "time": "2015-07-12 13:54:09"
+ "time": "2015-08-31 09:17:37"
},
{
"name": "mustangostang/spyc",
@@ -426,16 +426,16 @@
},
{
"name": "pear/archive_tar",
- "version": "1.3.16",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/pear/Archive_Tar.git",
- "reference": "fd358553f84a4587ad38f6da98936af494dda94b"
+ "reference": "e337c40bf467a1fcde6b770fce8ca6dc32dcc38f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/fd358553f84a4587ad38f6da98936af494dda94b",
- "reference": "fd358553f84a4587ad38f6da98936af494dda94b",
+ "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/e337c40bf467a1fcde6b770fce8ca6dc32dcc38f",
+ "reference": "e337c40bf467a1fcde6b770fce8ca6dc32dcc38f",
"shasum": ""
},
"require": {
@@ -451,6 +451,11 @@
"ext-zlib": "Gzip compression support."
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
"autoload": {
"psr-0": {
"Archive_Tar": ""
@@ -483,20 +488,20 @@
"archive",
"tar"
],
- "time": "2015-04-14 12:24:20"
+ "time": "2015-07-20 07:52:03"
},
{
"name": "pear/console_getopt",
- "version": "v1.4.0",
+ "version": "v1.4.1",
"source": {
"type": "git",
"url": "https://github.com/pear/Console_Getopt.git",
- "reference": "ff3eecbbc5d6e9a243f70f7cf51ca7554e4bb470"
+ "reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/ff3eecbbc5d6e9a243f70f7cf51ca7554e4bb470",
- "reference": "ff3eecbbc5d6e9a243f70f7cf51ca7554e4bb470",
+ "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f",
+ "reference": "82f05cd1aa3edf34e19aa7c8ca312ce13a6a577f",
"shasum": ""
},
"type": "library",
@@ -530,7 +535,7 @@
}
],
"description": "More info available on: http://pear.php.net/package/Console_Getopt",
- "time": "2015-02-22 13:26:45"
+ "time": "2015-07-20 20:28:12"
},
{
"name": "pear/pear-core-minimal",
@@ -633,16 +638,16 @@
},
{
"name": "php-di/invoker",
- "version": "1.0.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "7ea703c62dbb29d64763fa85258826034ce3c97d"
+ "reference": "2eb8f3a9b44c1427865134ef585d986ca89bce36"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/7ea703c62dbb29d64763fa85258826034ce3c97d",
- "reference": "7ea703c62dbb29d64763fa85258826034ce3c97d",
+ "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/2eb8f3a9b44c1427865134ef585d986ca89bce36",
+ "reference": "2eb8f3a9b44c1427865134ef585d986ca89bce36",
"shasum": ""
},
"require": {
@@ -672,7 +677,7 @@
"invoke",
"invoker"
],
- "time": "2015-04-24 10:18:34"
+ "time": "2015-09-02 16:01:10"
},
{
"name": "php-di/php-di",
@@ -992,17 +997,17 @@
},
{
"name": "symfony/console",
- "version": "v2.6.10",
+ "version": "v2.6.11",
"target-dir": "Symfony/Component/Console",
"source": {
"type": "git",
"url": "https://github.com/symfony/Console.git",
- "reference": "042107bc202845086739414339e551fbe81293d7"
+ "reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Console/zipball/042107bc202845086739414339e551fbe81293d7",
- "reference": "042107bc202845086739414339e551fbe81293d7",
+ "url": "https://api.github.com/repos/symfony/Console/zipball/0e5e18ae09d3f5c06367759be940e9ed3f568359",
+ "reference": "0e5e18ae09d3f5c06367759be940e9ed3f568359",
"shasum": ""
},
"require": {
@@ -1046,11 +1051,11 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
- "time": "2015-07-13 09:09:47"
+ "time": "2015-07-26 09:08:40"
},
{
"name": "symfony/event-dispatcher",
- "version": "v2.6.10",
+ "version": "v2.6.11",
"target-dir": "Symfony/Component/EventDispatcher",
"source": {
"type": "git",
@@ -1109,7 +1114,7 @@
},
{
"name": "symfony/monolog-bridge",
- "version": "v2.6.10",
+ "version": "v2.6.11",
"target-dir": "Symfony/Bridge/Monolog",
"source": {
"type": "git",
@@ -1168,16 +1173,16 @@
},
{
"name": "tecnick.com/tcpdf",
- "version": "6.2.9",
+ "version": "6.2.11",
"source": {
"type": "git",
"url": "https://github.com/tecnickcom/TCPDF.git",
- "reference": "fa6ab8a1e1fbabb9e6cfd2f807514fa1497240e4"
+ "reference": "354433a33946ae7497c3eab291eaaf814bccbfab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/fa6ab8a1e1fbabb9e6cfd2f807514fa1497240e4",
- "reference": "fa6ab8a1e1fbabb9e6cfd2f807514fa1497240e4",
+ "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/354433a33946ae7497c3eab291eaaf814bccbfab",
+ "reference": "354433a33946ae7497c3eab291eaaf814bccbfab",
"shasum": ""
},
"require": {
@@ -1227,7 +1232,7 @@
"pdf417",
"qrcode"
],
- "time": "2015-06-18 09:12:38"
+ "time": "2015-08-02 12:30:27"
},
{
"name": "tedivm/jshrink",
@@ -1272,25 +1277,29 @@
},
{
"name": "twig/twig",
- "version": "v1.18.2",
+ "version": "v1.21.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "e8e6575abf6102af53ec283f7f14b89e304fa602"
+ "reference": "ca8d3aa90b6a01c82e07909fe815d6b443e75a23"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/e8e6575abf6102af53ec283f7f14b89e304fa602",
- "reference": "e8e6575abf6102af53ec283f7f14b89e304fa602",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/ca8d3aa90b6a01c82e07909fe815d6b443e75a23",
+ "reference": "ca8d3aa90b6a01c82e07909fe815d6b443e75a23",
"shasum": ""
},
"require": {
"php": ">=5.2.7"
},
+ "require-dev": {
+ "symfony/debug": "~2.7",
+ "symfony/phpunit-bridge": "~2.7"
+ },
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.18-dev"
+ "dev-master": "1.21-dev"
}
},
"autoload": {
@@ -1325,7 +1334,7 @@
"keywords": [
"templating"
],
- "time": "2015-06-06 23:31:24"
+ "time": "2015-08-26 08:58:31"
}
],
"packages-dev": [
@@ -1477,7 +1486,7 @@
"performance",
"profiling"
],
- "time": "2015-02-26 14:37:51"
+ "time": "2014-08-28 17:34:52"
},
{
"name": "guzzle/guzzle",
@@ -1723,16 +1732,16 @@
},
{
"name": "phpspec/prophecy",
- "version": "v1.4.1",
+ "version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373"
+ "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
- "reference": "3132b1f44c7bf2ec4c7eb2d3cb78fdeca760d373",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4745ded9307786b730d7a60df5cb5a6c43cf95f7",
+ "reference": "4745ded9307786b730d7a60df5cb5a6c43cf95f7",
"shasum": ""
},
"require": {
@@ -1779,20 +1788,20 @@
"spy",
"stub"
],
- "time": "2015-04-27 22:15:08"
+ "time": "2015-08-13 10:07:40"
},
{
"name": "phpunit/php-code-coverage",
- "version": "2.1.8",
+ "version": "2.2.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "6044546998c7627ab997501a3d0db972b3db9790"
+ "reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6044546998c7627ab997501a3d0db972b3db9790",
- "reference": "6044546998c7627ab997501a3d0db972b3db9790",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2d7c03c0e4e080901b8f33b2897b0577be18a13c",
+ "reference": "2d7c03c0e4e080901b8f33b2897b0577be18a13c",
"shasum": ""
},
"require": {
@@ -1800,7 +1809,7 @@
"phpunit/php-file-iterator": "~1.3",
"phpunit/php-text-template": "~1.2",
"phpunit/php-token-stream": "~1.3",
- "sebastian/environment": "~1.0",
+ "sebastian/environment": "^1.3.2",
"sebastian/version": "~1.0"
},
"require-dev": {
@@ -1815,7 +1824,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1.x-dev"
+ "dev-master": "2.2.x-dev"
}
},
"autoload": {
@@ -1841,20 +1850,20 @@
"testing",
"xunit"
],
- "time": "2015-07-13 11:25:58"
+ "time": "2015-08-04 03:42:39"
},
{
"name": "phpunit/php-file-iterator",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb"
+ "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0"
},
"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/6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
+ "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0",
"shasum": ""
},
"require": {
@@ -1888,7 +1897,7 @@
"filesystem",
"iterator"
],
- "time": "2015-04-02 05:19:05"
+ "time": "2015-06-21 13:08:43"
},
{
"name": "phpunit/php-text-template",
@@ -1933,16 +1942,16 @@
},
{
"name": "phpunit/php-timer",
- "version": "1.0.6",
+ "version": "1.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "83fe1bdc5d47658b727595c14da140da92b3d66d"
+ "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
},
"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/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
+ "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
"shasum": ""
},
"require": {
@@ -1970,20 +1979,20 @@
"keywords": [
"timer"
],
- "time": "2015-06-13 07:35:30"
+ "time": "2015-06-21 08:01:12"
},
{
"name": "phpunit/php-token-stream",
- "version": "1.4.3",
+ "version": "1.4.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9"
+ "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
- "reference": "7a9b0969488c3c54fd62b4d504b3ec758fd005d9",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
+ "reference": "3ab72c62e550370a6cd5dc873e1a04ab57562f5b",
"shasum": ""
},
"require": {
@@ -2019,20 +2028,20 @@
"keywords": [
"tokenizer"
],
- "time": "2015-06-19 03:43:16"
+ "time": "2015-08-16 08:51:00"
},
{
"name": "phpunit/phpunit",
- "version": "4.7.7",
+ "version": "4.8.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "9b97f9d807b862c2de2a36e86690000801c85724"
+ "reference": "2246830f4a1a551c67933e4171bf2126dc29d357"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9b97f9d807b862c2de2a36e86690000801c85724",
- "reference": "9b97f9d807b862c2de2a36e86690000801c85724",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2246830f4a1a551c67933e4171bf2126dc29d357",
+ "reference": "2246830f4a1a551c67933e4171bf2126dc29d357",
"shasum": ""
},
"require": {
@@ -2042,7 +2051,7 @@
"ext-reflection": "*",
"ext-spl": "*",
"php": ">=5.3.3",
- "phpspec/prophecy": "~1.3,>=1.3.1",
+ "phpspec/prophecy": "^1.3.1",
"phpunit/php-code-coverage": "~2.1",
"phpunit/php-file-iterator": "~1.4",
"phpunit/php-text-template": "~1.2",
@@ -2050,7 +2059,7 @@
"phpunit/phpunit-mock-objects": "~2.3",
"sebastian/comparator": "~1.1",
"sebastian/diff": "~1.2",
- "sebastian/environment": "~1.2",
+ "sebastian/environment": "~1.3",
"sebastian/exporter": "~1.2",
"sebastian/global-state": "~1.0",
"sebastian/version": "~1.0",
@@ -2065,7 +2074,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.7.x-dev"
+ "dev-master": "4.8.x-dev"
}
},
"autoload": {
@@ -2091,26 +2100,27 @@
"testing",
"xunit"
],
- "time": "2015-07-13 11:28:34"
+ "time": "2015-08-24 04:09:38"
},
{
"name": "phpunit/phpunit-mock-objects",
- "version": "2.3.5",
+ "version": "2.3.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "1c330b1b6e1ea8fd15f2fbea46770576e366855c"
+ "reference": "5e2645ad49d196e020b85598d7c97e482725786a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/1c330b1b6e1ea8fd15f2fbea46770576e366855c",
- "reference": "1c330b1b6e1ea8fd15f2fbea46770576e366855c",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/5e2645ad49d196e020b85598d7c97e482725786a",
+ "reference": "5e2645ad49d196e020b85598d7c97e482725786a",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "~1.0,>=1.0.2",
+ "doctrine/instantiator": "^1.0.2",
"php": ">=5.3.3",
- "phpunit/php-text-template": "~1.2"
+ "phpunit/php-text-template": "~1.2",
+ "sebastian/exporter": "~1.2"
},
"require-dev": {
"phpunit/phpunit": "~4.4"
@@ -2146,20 +2156,20 @@
"mock",
"xunit"
],
- "time": "2015-07-04 05:41:32"
+ "time": "2015-08-19 09:14:08"
},
{
"name": "sebastian/comparator",
- "version": "1.1.1",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e"
+ "reference": "937efb279bd37a375bcadf584dec0726f84dbf22"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e",
- "reference": "1dd8869519a225f7f2b9eb663e225298fade819e",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22",
+ "reference": "937efb279bd37a375bcadf584dec0726f84dbf22",
"shasum": ""
},
"require": {
@@ -2173,7 +2183,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "1.2.x-dev"
}
},
"autoload": {
@@ -2210,7 +2220,7 @@
"compare",
"equality"
],
- "time": "2015-01-29 16:28:08"
+ "time": "2015-07-26 15:48:44"
},
{
"name": "sebastian/diff",
@@ -2266,16 +2276,16 @@
},
{
"name": "sebastian/environment",
- "version": "1.2.2",
+ "version": "1.3.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e"
+ "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e",
- "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6324c907ce7a52478eeeaede764f48733ef5ae44",
+ "reference": "6324c907ce7a52478eeeaede764f48733ef5ae44",
"shasum": ""
},
"require": {
@@ -2312,20 +2322,20 @@
"environment",
"hhvm"
],
- "time": "2015-01-01 10:01:08"
+ "time": "2015-08-03 06:14:51"
},
{
"name": "sebastian/exporter",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "84839970d05254c73cde183a721c7af13aede943"
+ "reference": "7ae5513327cb536431847bcc0c10edba2701064e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943",
- "reference": "84839970d05254c73cde183a721c7af13aede943",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
+ "reference": "7ae5513327cb536431847bcc0c10edba2701064e",
"shasum": ""
},
"require": {
@@ -2378,7 +2388,7 @@
"export",
"exporter"
],
- "time": "2015-01-27 07:23:06"
+ "time": "2015-06-21 07:55:53"
},
{
"name": "sebastian/global-state",
@@ -2433,16 +2443,16 @@
},
{
"name": "sebastian/recursion-context",
- "version": "1.0.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252"
+ "reference": "994d4a811bafe801fb06dccbee797863ba2792ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252",
- "reference": "3989662bbb30a29d20d9faa04a846af79b276252",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/994d4a811bafe801fb06dccbee797863ba2792ba",
+ "reference": "994d4a811bafe801fb06dccbee797863ba2792ba",
"shasum": ""
},
"require": {
@@ -2482,7 +2492,7 @@
],
"description": "Provides functionality to recursively process PHP variables",
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
- "time": "2015-01-24 09:48:32"
+ "time": "2015-06-21 08:04:50"
},
{
"name": "sebastian/version",
@@ -2521,7 +2531,7 @@
},
{
"name": "symfony/var-dumper",
- "version": "v2.6.10",
+ "version": "v2.6.11",
"target-dir": "Symfony/Component/VarDumper",
"source": {
"type": "git",
@@ -2581,17 +2591,17 @@
},
{
"name": "symfony/yaml",
- "version": "v2.6.10",
+ "version": "v2.6.11",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
- "reference": "446353cc05339e676fb57e35232d2bfd055a47cd"
+ "reference": "c044d1744b8e91aaaa0d9bac683ab87ec7cbf359"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/446353cc05339e676fb57e35232d2bfd055a47cd",
- "reference": "446353cc05339e676fb57e35232d2bfd055a47cd",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/c044d1744b8e91aaaa0d9bac683ab87ec7cbf359",
+ "reference": "c044d1744b8e91aaaa0d9bac683ab87ec7cbf359",
"shasum": ""
},
"require": {
@@ -2627,7 +2637,7 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
- "time": "2015-06-30 16:10:16"
+ "time": "2015-07-26 08:59:42"
}
],
"aliases": [],
diff --git a/core/Composer/ScriptHandler.php b/core/Composer/ScriptHandler.php
index d4db6536b0..0595473f48 100644
--- a/core/Composer/ScriptHandler.php
+++ b/core/Composer/ScriptHandler.php
@@ -16,13 +16,21 @@ namespace Piwik\Composer;
*/
class ScriptHandler
{
+ private static function isPhp7orLater()
+ {
+ return version_compare('7.0.0-dev', PHP_VERSION) < 1;
+ }
+
public static function cleanXhprof()
{
if (! is_dir('vendor/facebook/xhprof/extension')) {
return;
}
- passthru('misc/composer/clean-xhprof.sh');
+ if (!self::isPhp7orLater()) {
+ // doesn't work with PHP 7 at the moment
+ passthru('misc/composer/clean-xhprof.sh');
+ }
}
public static function buildXhprof()
@@ -31,6 +39,9 @@ class ScriptHandler
return;
}
- passthru('misc/composer/build-xhprof.sh');
+
+ if (!self::isPhp7orLater()) {
+ passthru('misc/composer/clean-xhprof.sh');
+ }
}
}
diff --git a/core/Db/Adapter.php b/core/Db/Adapter.php
index 4e245c84d3..bea69e1d04 100644
--- a/core/Db/Adapter.php
+++ b/core/Db/Adapter.php
@@ -39,7 +39,13 @@ class Adapter
$className = self::getAdapterClassName($adapterName);
- $adapter = new $className($dbInfos);
+ // make sure not to pass any references otherwise they will modify $dbInfos
+ $infos = array();
+ foreach ($dbInfos as $key => $val) {
+ $infos[$key] = $val;
+ }
+
+ $adapter = new $className($infos);
if ($connect) {
$adapter->getConnection();
diff --git a/core/ExceptionHandler.php b/core/ExceptionHandler.php
index aa20344dd1..b1a8a408db 100644
--- a/core/ExceptionHandler.php
+++ b/core/ExceptionHandler.php
@@ -24,7 +24,10 @@ class ExceptionHandler
set_exception_handler(array('Piwik\ExceptionHandler', 'handleException'));
}
- public static function handleException(Exception $exception)
+ /**
+ * @param Exception $exception
+ */
+ public static function handleException($exception)
{
if (Common::isPhpCliMode()) {
self::dieWithCliError($exception);
@@ -33,7 +36,10 @@ class ExceptionHandler
self::dieWithHtmlErrorPage($exception);
}
- public static function dieWithCliError(Exception $exception)
+ /**
+ * @param Exception $exception
+ */
+ public static function dieWithCliError($exception)
{
$message = $exception->getMessage();
@@ -54,7 +60,10 @@ class ExceptionHandler
exit(1);
}
- public static function dieWithHtmlErrorPage(Exception $exception)
+ /**
+ * @param Exception $exception
+ */
+ public static function dieWithHtmlErrorPage($exception)
{
Common::sendHeader('Content-Type: text/html; charset=utf-8');
@@ -63,7 +72,10 @@ class ExceptionHandler
exit(1);
}
- private static function getErrorResponse(Exception $ex)
+ /**
+ * @param Exception $ex
+ */
+ private static function getErrorResponse($ex)
{
$debugTrace = $ex->getTraceAsString();
diff --git a/core/Plugin/Dimension/VisitDimension.php b/core/Plugin/Dimension/VisitDimension.php
index 48bcf70516..6932161d1b 100644
--- a/core/Plugin/Dimension/VisitDimension.php
+++ b/core/Plugin/Dimension/VisitDimension.php
@@ -309,7 +309,7 @@ abstract class VisitDimension extends Dimension
}
}
- usort($instances, array('self', 'sortByRequiredFields'));
+ $instances = self::sortDimensions($instances);
$cache->save($cacheId, $instances);
}
@@ -319,20 +319,53 @@ abstract class VisitDimension extends Dimension
/**
* @ignore
+ * @param VisitDimension[] $dimensions
*/
- public static function sortByRequiredFields($a, $b)
+ public static function sortDimensions($dimensions)
{
- $fields = $a->getRequiredVisitFields();
+ $sorted = array();
+ $exists = array();
+
+ // we first handle all the once without dependency
+ foreach ($dimensions as $index => $dimension) {
+ $fields = $dimension->getRequiredVisitFields();
+ if (empty($fields)) {
+ $sorted[] = $dimension;
+ $exists[] = $dimension->getColumnName();
+ unset($dimensions[$index]);
+ }
+ }
- if (empty($fields)) {
- return -1;
+ // find circular references
+ // and remove dependencies whose column cannot be resolved because it is not installed / does not exist / is defined by core
+ $depenencies = array();
+ foreach ($dimensions as $dimension) {
+ $depenencies[$dimension->getColumnName()] = $dimension->getRequiredVisitFields();
}
- if (in_array($b->columnName, $fields)) {
- return 1;
+ foreach ($depenencies as $column => $fields) {
+ foreach ($fields as $key => $field) {
+ if (empty($depenencies[$field]) && !in_array($field, $exists)) {
+ // we cannot resolve that dependency as it does not exist
+ unset($depenencies[$column][$key]);
+ } elseif (!empty($depenencies[$field]) && in_array($column, $depenencies[$field])) {
+ throw new Exception("Circular reference detected for required field $field in dimension $column");
+ }
+ }
+ }
+
+ while (count($dimensions) > 0) {
+ foreach ($dimensions as $key => $dimension) {
+ $fields = $depenencies[$dimension->getColumnName()];
+ if (count(array_intersect($fields, $exists)) === count($fields)) {
+ $sorted[] = $dimension;
+ $exists[] = $dimension->getColumnName();
+ unset($dimensions[$key]);
+ }
+ }
}
- return 0;
+ return $sorted;
}
/**
diff --git a/plugins/Diagnostics/Diagnostic/PhpSettingsCheck.php b/plugins/Diagnostics/Diagnostic/PhpSettingsCheck.php
index 533676e232..41142214f1 100644
--- a/plugins/Diagnostics/Diagnostic/PhpSettingsCheck.php
+++ b/plugins/Diagnostics/Diagnostic/PhpSettingsCheck.php
@@ -65,8 +65,9 @@ class PhpSettingsCheck implements Diagnostic
'session.auto_start=0',
);
- if ($this->isPhpVersionAtLeast56() && ! defined("HHVM_VERSION")) {
+ if ($this->isPhpVersionAtLeast56() && ! defined("HHVM_VERSION") && !$this->isPhpVersionAtLeast70()) {
// always_populate_raw_post_data must be -1
+ // removed in PHP 7
$requiredSettings[] = 'always_populate_raw_post_data=-1';
}
@@ -77,4 +78,9 @@ class PhpSettingsCheck implements Diagnostic
{
return version_compare(PHP_VERSION, '5.6', '>=');
}
+
+ private function isPhpVersionAtLeast70()
+ {
+ return version_compare(PHP_VERSION, '7.0.0-dev', '>=');
+ }
}
diff --git a/plugins/Insights/tests/Unit/FilterOrderByTest.php b/plugins/Insights/tests/Unit/FilterOrderByTest.php
index 8239204a2f..7c12164291 100644
--- a/plugins/Insights/tests/Unit/FilterOrderByTest.php
+++ b/plugins/Insights/tests/Unit/FilterOrderByTest.php
@@ -11,6 +11,7 @@ namespace Piwik\Plugins\Insights\tests;
use Piwik\DataTable;
use Piwik\DataTable\Row;
use Piwik\Plugins\Insights\DataTable\Filter\OrderBy;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* @group Insights
@@ -43,7 +44,11 @@ class FilterOrderByTest extends BaseUnitTest
$this->applyOrderByFilter();
- $this->assertOrder(array('pos1', 'pos5', 'pos3', 'pos4', 'pos2', 'pos6', 'neg3', 'neg2', 'neg1', 'neg5', 'neg4'));
+ if (SystemTestCase::isPhp7orLater()) {
+ $this->assertOrder(array('pos1', 'pos3', 'pos5', 'pos4', 'pos2', 'pos6', 'neg3', 'neg2', 'neg1', 'neg5', 'neg4'));
+ } else {
+ $this->assertOrder(array('pos1', 'pos5', 'pos3', 'pos4', 'pos2', 'pos6', 'neg3', 'neg2', 'neg1', 'neg5', 'neg4'));
+ }
}
public function testOrderByShouldSortDependingOnNbVisitsIfColumnsHaveSameValue()
diff --git a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
index 40ee09eaae..b7b2f2f555 100755
--- a/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
+++ b/tests/PHPUnit/Framework/TestCase/SystemTestCase.php
@@ -104,6 +104,11 @@ abstract class SystemTestCase extends PHPUnit_Framework_TestCase
return strpos(PHP_VERSION, '5.3') === 0;
}
+ public static function isPhp7orLater()
+ {
+ return version_compare('7.0.0-dev', PHP_VERSION) < 1;
+ }
+
public static function isMysqli()
{
return getenv('MYSQL_ADAPTER') == 'MYSQLI';
diff --git a/tests/PHPUnit/Integration/PiwikTest.php b/tests/PHPUnit/Integration/PiwikTest.php
index 6839b66df3..aad756ee5e 100644
--- a/tests/PHPUnit/Integration/PiwikTest.php
+++ b/tests/PHPUnit/Integration/PiwikTest.php
@@ -29,8 +29,14 @@ class PiwikTest extends IntegrationTestCase
(float)-1, (float)0, (float)1, (float)1.5, (float)-1.5, (float)21111, (float)89898, (float)99999999999, (float)-4565656,
(int)-1, (int)0, (int)1, (int)1.5, (int)-1.5, (int)21111, (int)89898, (int)99999999999, (int)-4565656,
'-1', '0', '1', '1.5', '-1.5', '21111', '89898', '99999999999', '-4565656',
- '1e3', '0x123', "-1e-2",
+ '1e3', 0x123, "-1e-2",
);
+
+ if (!self::isPhp7orLater()) {
+ // this seems to be no longer considered valid in PHP 7+
+ $value[] = '0x123';
+ }
+
foreach ($valid as $key => $value) {
$valid[$key] = array($value);
}
diff --git a/tests/PHPUnit/Integration/Plugin/Dimension/VisitDimensionTest.php b/tests/PHPUnit/Integration/Plugin/Dimension/VisitDimensionTest.php
index 2f3d8149a6..505880b8a8 100644
--- a/tests/PHPUnit/Integration/Plugin/Dimension/VisitDimensionTest.php
+++ b/tests/PHPUnit/Integration/Plugin/Dimension/VisitDimensionTest.php
@@ -201,7 +201,7 @@ class VisitDimensionTest extends IntegrationTestCase
$this->assertEquals(Segment::TYPE_METRIC, $segments[1]->getType());
}
- public function test_sortByRequiredFields_ShouldResolveDependencies()
+ public function test_sortDimensions_ShouldResolveDependencies()
{
$dimension1 = new FakeVisitDimension();
$dimension1->set('columnName', 'column1');
@@ -221,7 +221,36 @@ class VisitDimensionTest extends IntegrationTestCase
$instances = array($dimension1, $dimension2, $dimension3, $dimension4);
- usort($instances, array('\Piwik\Plugin\Dimension\VisitDimension', 'sortByRequiredFields'));
+ $instances = VisitDimension::sortDimensions($instances);
+
+ $this->assertSame(array($dimension3, $dimension4, $dimension2, $dimension1), $instances);
+ }
+
+ /**
+ * @expectedException \Exception
+ * @expectedExceptionMessage Circular reference detected for required field column4 in dimension column2
+ */
+ public function test_sortDimensions_ShouldThrowAnException_IfCircularReferenceDetected()
+ {
+ $dimension1 = new FakeVisitDimension();
+ $dimension1->set('columnName', 'column1');
+ $dimension1->requiredFields = array('column3');
+
+ $dimension2 = new FakeVisitDimension();
+ $dimension2->set('columnName', 'column2');
+ $dimension2->requiredFields = array('column3', 'column4');
+
+ $dimension3 = new FakeVisitDimension();
+ $dimension3->set('columnName', 'column3');
+ $dimension3->requiredFields = array();
+
+ $dimension4 = new FakeVisitDimension();
+ $dimension4->set('columnName', 'column4');
+ $dimension4->requiredFields = array('column2');
+
+ $instances = array($dimension1, $dimension2, $dimension3, $dimension4);
+
+ $instances = VisitDimension::sortDimensions($instances);
$this->assertSame(array($dimension3, $dimension4, $dimension2, $dimension1), $instances);
}
diff --git a/tests/PHPUnit/Unit/FilesystemTest.php b/tests/PHPUnit/Unit/FilesystemTest.php
index 166c13df1c..86894d13e1 100644
--- a/tests/PHPUnit/Unit/FilesystemTest.php
+++ b/tests/PHPUnit/Unit/FilesystemTest.php
@@ -10,6 +10,7 @@ namespace Piwik\Tests\Unit;
use Piwik\Filesystem;
use Piwik\Tests\Framework\Mock\File;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* @group Core
@@ -42,6 +43,11 @@ class FilesystemTest extends \PHPUnit_Framework_TestCase
{
$input = array('xyz/1.gif', 'x/xyz.gif', 'xxyyzzgg');
$result = Filesystem::sortFilesDescByPathLength($input);
+
+ if (SystemTestCase::isPhp7orLater()) {
+ $input = array('x/xyz.gif', 'xyz/1.gif', 'xxyyzzgg');
+ }
+
$this->assertEquals($input, $result);
}
diff --git a/tests/PHPUnit/Unit/Period/DayTest.php b/tests/PHPUnit/Unit/Period/DayTest.php
index c2b4a05a5b..7b1c4a6422 100644
--- a/tests/PHPUnit/Unit/Period/DayTest.php
+++ b/tests/PHPUnit/Unit/Period/DayTest.php
@@ -22,6 +22,8 @@ class DayTest extends BasePeriodTest
new Day('Invalid Date');
} catch (\Exception $e) {
return;
+ } catch (\Throwable $e) {
+ return;
}
$this->fail('Expected Exception not raised');
}