diff --git a/.gitignore b/.gitignore
index e896aa6a1..4d1d2ccbf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
.env
.idea
+.env
.DS_Store
/node_modules/
/vendor/
diff --git a/.travis.yml b/.travis.yml
index 1e235e49f..d0a000236 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -50,6 +50,7 @@ jobs:
if: branch IS present AND type = push
script: npm run release
before_deploy:
+ - git restore composer.json
- openssl aes-256-cbc -K $encrypted_49634e5b1863_key -iv $encrypted_49634e5b1863_iv -in ./local/travis/travis_deploy_key.enc -out ~/.ssh/id_rsa -d
- chmod 600 ~/.ssh/id_rsa
deploy:
@@ -71,7 +72,25 @@ before_install:
- composer self-update --1
install:
+ - |
+ composer config repositories."1" "{
+ \"type\": \"package\",
+ \"package\": {
+ \"name\": \"gravityforms/gravityforms\",
+ \"version\": \"2.4.21.3\",
+ \"type\": \"wordpress-plugin\",
+ \"dist\": {
+ \"type\": \"zip\",
+ \"url\": \"https://www.gravityhelp.com/wp-content/plugins/gravitymanager/api.php?op=get_plugin&slug=gravityforms&key=$GRAVITYFORMS_KEY\"
+ },
+ \"require\": {
+ \"composer/installers\": \"^1.4\",
+ \"gotoandplay/gravityforms-composer-installer\": \"^2.3\"
+ }
+ }
+ }"
- npm install
+ - composer require --dev gravityforms/gravityforms:2.4.21.3
script:
- npm run lint
diff --git a/composer.json b/composer.json
index b04a148fe..86c7261f6 100644
--- a/composer.json
+++ b/composer.json
@@ -7,7 +7,7 @@
"repositories": [
{
"type": "composer",
- "url": "https://wpackagist.org"
+ "url":"https://wpackagist.org"
}
],
"require": {
@@ -29,10 +29,7 @@
},
"config": {
"process-timeout": 600,
- "sort-packages": true,
- "platform": {
- "php": "5.6.20"
- }
+ "sort-packages": true
},
"extra": {
"wordpress-install-dir": "local/public",
diff --git a/composer.lock b/composer.lock
index 03b357a70..683c0ba61 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "c025a44ff83e162076363f15803df9da",
+ "content-hash": "f99215c75138a90c45a7b929cf25d346",
"packages": [
{
"name": "composer/installers",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/composer/installers.git",
- "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca"
+ "reference": "1a0357fccad9d1cc1ea0c9a05b8847fbccccb78d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/installers/zipball/b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
- "reference": "b93bcf0fa1fccb0b7d176b0967d969691cd74cca",
+ "url": "https://api.github.com/repos/composer/installers/zipball/1a0357fccad9d1cc1ea0c9a05b8847fbccccb78d",
+ "reference": "1a0357fccad9d1cc1ea0c9a05b8847fbccccb78d",
"shasum": ""
},
"require": {
@@ -28,17 +28,18 @@
"shama/baton": "*"
},
"require-dev": {
- "composer/composer": "1.6.* || 2.0.*@dev",
- "composer/semver": "1.0.* || 2.0.*@dev",
- "phpunit/phpunit": "^4.8.36",
- "sebastian/comparator": "^1.2.4",
+ "composer/composer": "1.6.* || ^2.0",
+ "composer/semver": "^1 || ^3",
+ "phpstan/phpstan": "^0.12.55",
+ "phpstan/phpstan-phpunit": "^0.12.16",
+ "symfony/phpunit-bridge": "^4.2 || ^5",
"symfony/process": "^2.3"
},
"type": "composer-plugin",
"extra": {
"class": "Composer\\Installers\\Plugin",
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "1.x-dev"
}
},
"autoload": {
@@ -76,6 +77,7 @@
"Porto",
"RadPHP",
"SMF",
+ "Starbug",
"Thelia",
"Whmcs",
"WolfCMS",
@@ -116,6 +118,7 @@
"phpbb",
"piwik",
"ppi",
+ "processwire",
"puppet",
"pxcms",
"reindex",
@@ -133,19 +136,23 @@
],
"support": {
"issues": "https://github.com/composer/installers/issues",
- "source": "https://github.com/composer/installers/tree/v1.9.0"
+ "source": "https://github.com/composer/installers/tree/v1.10.0"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
- "time": "2020-04-07T06:57:05+00:00"
+ "time": "2021-01-14T11:07:16+00:00"
}
],
"packages-dev": [
@@ -279,16 +286,16 @@
},
{
"name": "composer/composer",
- "version": "1.10.19",
+ "version": "1.10.20",
"source": {
"type": "git",
"url": "https://github.com/composer/composer.git",
- "reference": "196601d50c08c3fae389a417a7689367fcf37cef"
+ "reference": "e55d297525f0ecc805c813a0f63a40114fd670f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/196601d50c08c3fae389a417a7689367fcf37cef",
- "reference": "196601d50c08c3fae389a417a7689367fcf37cef",
+ "url": "https://api.github.com/repos/composer/composer/zipball/e55d297525f0ecc805c813a0f63a40114fd670f6",
+ "reference": "e55d297525f0ecc805c813a0f63a40114fd670f6",
"shasum": ""
},
"require": {
@@ -358,7 +365,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/composer/issues",
- "source": "https://github.com/composer/composer/tree/1.10.19"
+ "source": "https://github.com/composer/composer/tree/1.10.20"
},
"funding": [
{
@@ -374,7 +381,7 @@
"type": "tidelift"
}
],
- "time": "2020-12-04T08:14:16+00:00"
+ "time": "2021-01-27T14:41:06+00:00"
},
{
"name": "composer/semver",
@@ -648,34 +655,31 @@
},
{
"name": "doctrine/instantiator",
- "version": "1.0.5",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
- "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
"shasum": ""
},
"require": {
- "php": ">=5.3,<8.0-DEV"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "athletic/athletic": "~0.1.8",
+ "doctrine/coding-standard": "^8.0",
"ext-pdo": "*",
"ext-phar": "*",
- "phpunit/phpunit": "~4.0",
- "squizlabs/php_codesniffer": "~2.0"
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
@@ -689,20 +693,101 @@
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.com/"
+ "homepage": "https://ocramius.github.io/"
}
],
"description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
- "homepage": "https://github.com/doctrine/instantiator",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
"keywords": [
"constructor",
"instantiate"
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/master"
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "ffraenz/private-composer-installer",
+ "version": "v5.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ffraenz/private-composer-installer.git",
+ "reference": "8655e3da4e8f99203f13ccca33b9ab953ad30a31"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ffraenz/private-composer-installer/zipball/8655e3da4e8f99203f13ccca33b9ab953ad30a31",
+ "reference": "8655e3da4e8f99203f13ccca33b9ab953ad30a31",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": "^7.1 || ^8.0",
+ "vlucas/phpdotenv": "^4.1 || ^5.2"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0 || ^2.0",
+ "laminas/laminas-coding-standard": "^2.0",
+ "symfony/phpunit-bridge": "^5.1",
+ "symfony/process": "^4.4 || ^5.1"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "FFraenz\\PrivateComposerInstaller\\Plugin",
+ "plugin-modifies-downloads": true
+ },
+ "autoload": {
+ "psr-4": {
+ "FFraenz\\PrivateComposerInstaller\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fränz Friederes",
+ "email": "fraenz@frieder.es",
+ "homepage": "https://fraenz.frieder.es"
+ }
+ ],
+ "description": "A composer install helper for private packages",
+ "keywords": [
+ "composer",
+ "env",
+ "plugin",
+ "private",
+ "wordpress",
+ "wp"
+ ],
+ "support": {
+ "issues": "https://github.com/ffraenz/private-composer-installer/issues",
+ "source": "https://github.com/ffraenz/private-composer-installer/tree/v5.0.1"
},
- "time": "2015-06-14T21:17:01+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/ffraenz",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-30T09:35:33+00:00"
},
{
"name": "gettext/gettext",
@@ -836,39 +921,185 @@
},
"time": "2019-11-13T10:30:21+00:00"
},
+ {
+ "name": "gotoandplay/gravityforms-composer-installer",
+ "version": "v2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/gtap-dev/gravityforms-composer-installer.git",
+ "reference": "00b70f94660f7819aa3746cc7f96f4a85bf1977c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/gtap-dev/gravityforms-composer-installer/zipball/00b70f94660f7819aa3746cc7f96f4a85bf1977c",
+ "reference": "00b70f94660f7819aa3746cc7f96f4a85bf1977c",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "ffraenz/private-composer-installer": "^5.0",
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0 || ^2.0",
+ "phpunit/phpunit": "^8.0",
+ "zendframework/zend-coding-standard": "^1.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "gotoAndDev\\GravityFormsComposerInstaller\\Plugin",
+ "plugin-modifies-downloads": true
+ },
+ "autoload": {
+ "psr-4": {
+ "gotoAndDev\\GravityFormsComposerInstaller\\": "src/GravityFormsComposerInstaller"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mihkel Eidast",
+ "email": "mihkel@play.ee",
+ "homepage": "https://play.ee"
+ }
+ ],
+ "description": "A composer install helper for Gravity Forms",
+ "keywords": [
+ "composer",
+ "env",
+ "gravityforms",
+ "plugin",
+ "private",
+ "wordpress",
+ "wp"
+ ],
+ "support": {
+ "issues": "https://github.com/gtap-dev/gravityforms-composer-installer/issues",
+ "source": "https://github.com/gtap-dev/gravityforms-composer-installer/tree/v2.3.0"
+ },
+ "time": "2020-11-02T18:05:49+00:00"
+ },
+ {
+ "name": "graham-campbell/result-type",
+ "version": "v1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/GrahamCampbell/Result-Type.git",
+ "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb",
+ "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.0|^8.0",
+ "phpoption/phpoption": "^1.7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GrahamCampbell\\ResultType\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.com"
+ }
+ ],
+ "description": "An Implementation Of The Result Type",
+ "keywords": [
+ "Graham Campbell",
+ "GrahamCampbell",
+ "Result Type",
+ "Result-Type",
+ "result"
+ ],
+ "support": {
+ "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-04-13T13:17:36+00:00"
+ },
+ {
+ "name": "gravityforms/gravityforms",
+ "version": "2.4.21.3",
+ "dist": {
+ "type": "zip",
+ "url": "https://www.gravityhelp.com/wp-content/plugins/gravitymanager/api.php?op=get_plugin&slug=gravityforms&key=77b1a7aadef0a06dac8c535d992a4e97"
+ },
+ "require": {
+ "composer/installers": "^1.4",
+ "gotoandplay/gravityforms-composer-installer": "^2.3"
+ },
+ "type": "wordpress-plugin"
+ },
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.5",
+ "version": "7.2.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
+ "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79",
+ "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.6.1",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17.0"
+ "guzzlehttp/promises": "^1.4",
+ "guzzlehttp/psr7": "^1.7",
+ "php": "^7.2.5 || ^8.0",
+ "psr/http-client": "^1.0"
+ },
+ "provide": {
+ "psr/http-client-implementation": "1.0"
},
"require-dev": {
"ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "php-http/client-integration-tests": "^3.0",
+ "phpunit/phpunit": "^8.5.5 || ^9.3.5",
"psr/log": "^1.1"
},
"suggest": {
+ "ext-curl": "Required for CURL handler support",
+ "ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "6.5-dev"
+ "dev-master": "7.1-dev"
}
},
"autoload": {
@@ -888,6 +1119,11 @@
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://sagikazarmark.hu"
}
],
"description": "Guzzle is a PHP HTTP client library",
@@ -898,14 +1134,34 @@
"framework",
"http",
"http client",
+ "psr-18",
+ "psr-7",
"rest",
"web service"
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/6.5"
+ "source": "https://github.com/guzzle/guzzle/tree/7.2.0"
},
- "time": "2020-06-16T21:01:06+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/alexeyshockov",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/gmponos",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-10T11:47:56+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -1079,20 +1335,20 @@
},
{
"name": "johnpbloch/wordpress",
- "version": "5.6.0",
+ "version": "5.6.2",
"source": {
"type": "git",
"url": "https://github.com/johnpbloch/wordpress.git",
- "reference": "3055975734646c8d0b8caf7b5af168ced6ec4309"
+ "reference": "784b3440c9a11c3b65b988cc441db332ab0e6c49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/johnpbloch/wordpress/zipball/3055975734646c8d0b8caf7b5af168ced6ec4309",
- "reference": "3055975734646c8d0b8caf7b5af168ced6ec4309",
+ "url": "https://api.github.com/repos/johnpbloch/wordpress/zipball/784b3440c9a11c3b65b988cc441db332ab0e6c49",
+ "reference": "784b3440c9a11c3b65b988cc441db332ab0e6c49",
"shasum": ""
},
"require": {
- "johnpbloch/wordpress-core": "5.6.0",
+ "johnpbloch/wordpress-core": "5.6.2",
"johnpbloch/wordpress-core-installer": "^1.0 || ^2.0",
"php": ">=5.6.20"
},
@@ -1121,20 +1377,20 @@
"source": "http://core.trac.wordpress.org/browser",
"wiki": "http://codex.wordpress.org/"
},
- "time": "2020-12-08T22:34:35+00:00"
+ "time": "2021-02-22T15:30:37+00:00"
},
{
"name": "johnpbloch/wordpress-core",
- "version": "5.6.0",
+ "version": "5.6.2",
"source": {
"type": "git",
"url": "https://github.com/johnpbloch/wordpress-core.git",
- "reference": "f074617dd69f466302836d1ae5de75c0bd7b6dfd"
+ "reference": "e48e723c0d7e38c5580631e6ffea29a4388c5dd0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/johnpbloch/wordpress-core/zipball/f074617dd69f466302836d1ae5de75c0bd7b6dfd",
- "reference": "f074617dd69f466302836d1ae5de75c0bd7b6dfd",
+ "url": "https://api.github.com/repos/johnpbloch/wordpress-core/zipball/e48e723c0d7e38c5580631e6ffea29a4388c5dd0",
+ "reference": "e48e723c0d7e38c5580631e6ffea29a4388c5dd0",
"shasum": ""
},
"require": {
@@ -1142,7 +1398,7 @@
"php": ">=5.6.20"
},
"provide": {
- "wordpress/core-implementation": "5.6.0"
+ "wordpress/core-implementation": "5.6.2"
},
"type": "wordpress-core",
"notification-url": "https://packagist.org/downloads/",
@@ -1169,7 +1425,7 @@
"source": "https://core.trac.wordpress.org/browser",
"wiki": "https://codex.wordpress.org/"
},
- "time": "2020-12-08T22:34:23+00:00"
+ "time": "2021-02-22T15:30:31+00:00"
},
{
"name": "johnpbloch/wordpress-core-installer",
@@ -1396,25 +1652,28 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.7.0",
+ "version": "1.10.2",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
- "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0"
+ "php": "^7.1 || ^8.0"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
},
"require-dev": {
"doctrine/collections": "^1.0",
"doctrine/common": "^2.6",
- "phpunit/phpunit": "^4.1"
+ "phpunit/phpunit": "^7.1"
},
"type": "library",
"autoload": {
@@ -1439,9 +1698,15 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
},
- "time": "2017-10-19T19:58:43+00:00"
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
},
{
"name": "nb/oxymel",
@@ -1488,60 +1753,6 @@
},
"time": "2013-02-24T15:01:54+00:00"
},
- {
- "name": "paragonie/random_compat",
- "version": "v2.0.19",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/446fc9faa5c2a9ddf65eb7121c0af7e857295241",
- "reference": "446fc9faa5c2a9ddf65eb7121c0af7e857295241",
- "shasum": ""
- },
- "require": {
- "php": ">=5.2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "autoload": {
- "files": [
- "lib/random.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "support": {
- "email": "info@paragonie.com",
- "issues": "https://github.com/paragonie/random_compat/issues",
- "source": "https://github.com/paragonie/random_compat"
- },
- "time": "2020-10-15T10:06:57+00:00"
- },
{
"name": "php-coveralls/php-coveralls",
"version": "v2.4.3",
@@ -1627,35 +1838,30 @@
},
{
"name": "phpdocumentor/reflection-common",
- "version": "1.0.1",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
- "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
"shasum": ""
},
"require": {
- "php": ">=5.5"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.6"
+ "php": "^7.2 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-2.x": "2.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src"
- ]
+ "phpDocumentor\\Reflection\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1679,40 +1885,43 @@
],
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master"
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
},
- "time": "2017-09-11T18:02:19+00:00"
+ "time": "2020-06-27T09:03:43+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "3.3.2",
+ "version": "5.2.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2"
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2",
- "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0",
- "phpdocumentor/reflection-common": "^1.0.0",
- "phpdocumentor/type-resolver": "^0.4.0",
- "webmozart/assert": "^1.0"
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
},
"require-dev": {
- "mockery/mockery": "^0.9.4",
- "phpunit/phpunit": "^4.4"
+ "mockery/mockery": "~1.3.2"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src/"
- ]
+ "phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1723,48 +1932,49 @@
{
"name": "Mike van Riel",
"email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/release/3.x"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
},
- "time": "2017-11-10T14:09:06+00:00"
+ "time": "2020-09-03T19:13:55+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "0.4.0",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
- "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
"shasum": ""
},
"require": {
- "php": "^5.5 || ^7.0",
- "phpdocumentor/reflection-common": "^1.0"
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
- "mockery/mockery": "^0.9.4",
- "phpunit/phpunit": "^5.2||^4.8.24"
+ "ext-tokenizer": "*"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-1.x": "1.x-dev"
}
},
"autoload": {
"psr-4": {
- "phpDocumentor\\Reflection\\": [
- "src/"
- ]
+ "phpDocumentor\\Reflection\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1777,11 +1987,81 @@
"email": "me@mikevanriel.com"
}
],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/master"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ },
+ "time": "2020-09-17T18:55:26+00:00"
+ },
+ {
+ "name": "phpoption/phpoption",
+ "version": "1.7.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/schmittjoh/php-option.git",
+ "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525",
+ "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0"
},
- "time": "2017-07-14T14:27:02+00:00"
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpOption\\": "src/PhpOption/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Johannes M. Schmitt",
+ "email": "schmittjoh@gmail.com"
+ },
+ {
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.com"
+ }
+ ],
+ "description": "Option Type for PHP",
+ "keywords": [
+ "language",
+ "option",
+ "php",
+ "type"
+ ],
+ "support": {
+ "issues": "https://github.com/schmittjoh/php-option/issues",
+ "source": "https://github.com/schmittjoh/php-option/tree/1.7.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-07-20T17:29:33+00:00"
},
{
"name": "phpspec/prophecy",
@@ -2070,29 +2350,29 @@
},
{
"name": "phpunit/php-token-stream",
- "version": "1.4.12",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
- "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+ "reference": "791198a2c6254db10131eecfe8c06670700904db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
- "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+ "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": {
@@ -2117,10 +2397,10 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-token-stream/issues",
- "source": "https://github.com/sebastianbergmann/php-token-stream/tree/1.4"
+ "source": "https://github.com/sebastianbergmann/php-token-stream/tree/master"
},
"abandoned": true,
- "time": "2017-12-04T08:55:13+00:00"
+ "time": "2017-11-27T05:48:46+00:00"
},
{
"name": "phpunit/phpunit",
@@ -2195,83 +2475,188 @@
"role": "lead"
}
],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/5.7.27"
+ },
+ "time": "2018-02-01T05:50:59+00:00"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "3.4.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
+ "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.6 || ^7.0",
+ "phpunit/php-text-template": "^1.2",
+ "sebastian/exporter": "^1.2 || ^2.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^5.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.net/phpunit",
+ "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.4"
+ },
+ "abandoned": true,
+ "time": "2017-06-30T09:13:00+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
"keywords": [
- "phpunit",
- "testing",
- "xunit"
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
],
"support": {
- "issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/5.7.27"
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/master"
},
- "time": "2018-02-01T05:50:59+00:00"
+ "time": "2017-02-14T16:28:37+00:00"
},
{
- "name": "phpunit/phpunit-mock-objects",
- "version": "3.4.4",
+ "name": "psr/http-client",
+ "version": "1.0.1",
"source": {
"type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
- "reference": "a23b761686d50a560cc56233b9ecf49597cc9118"
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118",
- "reference": "a23b761686d50a560cc56233b9ecf49597cc9118",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
+ "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.0.2",
- "php": "^5.6 || ^7.0",
- "phpunit/php-text-template": "^1.2",
- "sebastian/exporter": "^1.2 || ^2.0"
- },
- "conflict": {
- "phpunit/phpunit": "<5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^5.4"
- },
- "suggest": {
- "ext-soap": "*"
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-4": {
+ "Psr\\Http\\Client\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
"authors": [
{
- "name": "Sebastian Bergmann",
- "email": "sb@sebastian-bergmann.de",
- "role": "lead"
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
}
],
- "description": "Mock Object library for PHPUnit",
- "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
"keywords": [
- "mock",
- "xunit"
+ "http",
+ "http-client",
+ "psr",
+ "psr-18"
],
"support": {
- "irc": "irc://irc.freenode.net/phpunit",
- "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues",
- "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/3.4"
+ "source": "https://github.com/php-fig/http-client/tree/master"
},
- "abandoned": true,
- "time": "2017-06-30T09:13:00+00:00"
+ "time": "2020-06-29T06:28:15+00:00"
},
{
"name": "psr/http-message",
@@ -3145,16 +3530,16 @@
},
{
"name": "sirbrillig/phpcs-variable-analysis",
- "version": "v2.10.1",
+ "version": "v2.10.2",
"source": {
"type": "git",
"url": "https://github.com/sirbrillig/phpcs-variable-analysis.git",
- "reference": "c6716a98fe7bee25d31306e14fb62c3ffa16d70a"
+ "reference": "0775e0c683badad52c03b11c2cd86a9fdecb937a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/c6716a98fe7bee25d31306e14fb62c3ffa16d70a",
- "reference": "c6716a98fe7bee25d31306e14fb62c3ffa16d70a",
+ "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/0775e0c683badad52c03b11c2cd86a9fdecb937a",
+ "reference": "0775e0c683badad52c03b11c2cd86a9fdecb937a",
"shasum": ""
},
"require": {
@@ -3194,7 +3579,7 @@
"source": "https://github.com/sirbrillig/phpcs-variable-analysis",
"wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki"
},
- "time": "2020-12-12T18:28:57+00:00"
+ "time": "2021-01-08T16:31:05+00:00"
},
{
"name": "squizlabs/php_codesniffer",
@@ -3254,32 +3639,34 @@
},
{
"name": "symfony/config",
- "version": "v3.4.47",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f"
+ "reference": "50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f",
- "reference": "bc6b3fd3930d4b53a60b42fe2ed6fc466b75f03f",
+ "url": "https://api.github.com/repos/symfony/config/zipball/50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab",
+ "reference": "50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8",
- "symfony/filesystem": "~2.8|~3.0|~4.0",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1",
+ "symfony/filesystem": "^4.4|^5.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-php80": "^1.15"
},
"conflict": {
- "symfony/dependency-injection": "<3.3",
- "symfony/finder": "<3.3"
+ "symfony/finder": "<4.4"
},
"require-dev": {
- "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"
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/finder": "^4.4|^5.0",
+ "symfony/messenger": "^4.4|^5.0",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/yaml": "^4.4|^5.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
@@ -3307,10 +3694,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Config Component",
+ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v3.4.47"
+ "source": "https://github.com/symfony/config/tree/v5.2.3"
},
"funding": [
{
@@ -3326,41 +3713,48 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2021-01-27T10:15:41+00:00"
},
{
"name": "symfony/console",
- "version": "v3.4.47",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81"
+ "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/a10b1da6fc93080c180bba7219b5ff5b7518fe81",
- "reference": "a10b1da6fc93080c180bba7219b5ff5b7518fe81",
+ "url": "https://api.github.com/repos/symfony/console/zipball/89d4b176d12a2946a1ae4e34906a025b7b6b135a",
+ "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8",
- "symfony/debug": "~2.8|~3.0|~4.0",
- "symfony/polyfill-mbstring": "~1.0"
+ "php": ">=7.2.5",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/string": "^5.1"
},
"conflict": {
- "symfony/dependency-injection": "<3.4",
- "symfony/process": "<3.3"
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
},
"provide": {
"psr/log-implementation": "1.0"
},
"require-dev": {
"psr/log": "~1.0",
- "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"
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/event-dispatcher": "^4.4|^5.0",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^4.4|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -3391,10 +3785,16 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Console Component",
+ "description": "Eases the creation of beautiful and testable command line interfaces",
"homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
"support": {
- "source": "https://github.com/symfony/console/tree/v3.4.47"
+ "source": "https://github.com/symfony/console/tree/v5.2.3"
},
"funding": [
{
@@ -3410,39 +3810,38 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2021-01-28T22:06:19+00:00"
},
{
- "name": "symfony/debug",
- "version": "v3.4.47",
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.2.0",
"source": {
"type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae"
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
- "reference": "ab42889de57fdfcfcc0759ab102e2fd4ea72dcae",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665",
+ "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665",
"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"
+ "php": ">=7.1"
},
"type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
},
- "exclude-from-classmap": [
- "/Tests/"
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -3451,18 +3850,18 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Debug Component",
+ "description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/debug/tree/v3.4.47"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/master"
},
"funding": [
{
@@ -3478,24 +3877,24 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v3.4.47",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3"
+ "reference": "262d033b57c73e8b59cd6e68a45c528318b15038"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/e58d7841cddfed6e846829040dca2cca0ebbbbb3",
- "reference": "e58d7841cddfed6e846829040dca2cca0ebbbbb3",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/262d033b57c73e8b59cd6e68a45c528318b15038",
+ "reference": "262d033b57c73e8b59cd6e68a45c528318b15038",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8",
+ "php": ">=7.2.5",
"symfony/polyfill-ctype": "~1.8"
},
"type": "library",
@@ -3521,10 +3920,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Filesystem Component",
+ "description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v3.4.47"
+ "source": "https://github.com/symfony/filesystem/tree/v5.2.3"
},
"funding": [
{
@@ -3540,24 +3939,24 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2021-01-27T10:01:46+00:00"
},
{
"name": "symfony/finder",
- "version": "v3.4.47",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e"
+ "reference": "4adc8d172d602008c204c2e16956f99257248e03"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
- "reference": "b6b6ad3db3edb1b4b1c1896b1975fb684994de6e",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/4adc8d172d602008c204c2e16956f99257248e03",
+ "reference": "4adc8d172d602008c204c2e16956f99257248e03",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8"
+ "php": ">=7.2.5"
},
"type": "library",
"autoload": {
@@ -3582,10 +3981,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Finder Component",
+ "description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v3.4.47"
+ "source": "https://github.com/symfony/finder/tree/v5.2.3"
},
"funding": [
{
@@ -3601,24 +4000,24 @@
"type": "tidelift"
}
],
- "time": "2020-11-16T17:02:08+00:00"
+ "time": "2021-01-28T22:06:19+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.19.0",
+ "version": "v1.22.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
+ "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
- "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
+ "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-ctype": "For best performance"
@@ -3626,7 +4025,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3664,7 +4063,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1"
},
"funding": [
{
@@ -3680,27 +4079,24 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.19.0",
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.22.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826"
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/4ad5115c0f5d5172a9fe8147675ec6de266d8826",
- "reference": "4ad5115c0f5d5172a9fe8147675ec6de266d8826",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170",
+ "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php70": "^1.10",
- "symfony/polyfill-php72": "^1.10"
+ "php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
@@ -3708,7 +4104,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3717,7 +4113,7 @@
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
},
"files": [
"bootstrap.php"
@@ -3729,30 +4125,26 @@
],
"authors": [
{
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
+ "description": "Symfony polyfill for intl's grapheme_* functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
- "idn",
+ "grapheme",
"intl",
"polyfill",
"portable",
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1"
},
"funding": [
{
@@ -3768,24 +4160,24 @@
"type": "tidelift"
}
],
- "time": "2020-10-21T09:57:48+00:00"
+ "time": "2021-01-22T09:19:47+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.19.0",
+ "version": "v1.22.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27"
+ "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27",
- "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248",
+ "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
@@ -3793,7 +4185,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3836,7 +4228,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1"
},
"funding": [
{
@@ -3852,24 +4244,24 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2021-01-22T09:19:47+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.19.0",
+ "version": "v1.22.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
+ "reference": "5232de97ee3b75b0360528dae24e73db49566ab1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
- "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1",
+ "reference": "5232de97ee3b75b0360528dae24e73db49566ab1",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-mbstring": "For best performance"
@@ -3877,7 +4269,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3916,7 +4308,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1"
},
"funding": [
{
@@ -3932,30 +4324,29 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2021-01-22T09:19:47+00:00"
},
{
- "name": "symfony/polyfill-php70",
- "version": "v1.19.0",
+ "name": "symfony/polyfill-php73",
+ "version": "v1.22.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
- "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
+ "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2",
"shasum": ""
},
"require": {
- "paragonie/random_compat": "~1.0|~2.0|~9.99",
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3964,7 +4355,7 @@
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php70\\": ""
+ "Symfony\\Polyfill\\Php73\\": ""
},
"files": [
"bootstrap.php"
@@ -3987,7 +4378,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -3996,7 +4387,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php70/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1"
},
"funding": [
{
@@ -4012,29 +4403,29 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
- "name": "symfony/polyfill-php72",
- "version": "v1.19.0",
+ "name": "symfony/polyfill-php80",
+ "version": "v1.22.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "beecef6b463b06954638f02378f52496cb84bacc"
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
- "reference": "beecef6b463b06954638f02378f52496cb84bacc",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91",
+ "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.22-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4043,10 +4434,13 @@
},
"autoload": {
"psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
+ "Symfony\\Polyfill\\Php80\\": ""
},
"files": [
"bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -4054,6 +4448,10 @@
"MIT"
],
"authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
@@ -4063,7 +4461,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -4072,7 +4470,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1"
},
"funding": [
{
@@ -4088,24 +4486,25 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2021-01-07T16:49:33+00:00"
},
{
"name": "symfony/process",
- "version": "v3.4.47",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca"
+ "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/b8648cf1d5af12a44a51d07ef9bf980921f15fca",
- "reference": "b8648cf1d5af12a44a51d07ef9bf980921f15fca",
+ "url": "https://api.github.com/repos/symfony/process/zipball/313a38f09c77fbcdc1d223e57d368cea76a2fd2f",
+ "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8"
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15"
},
"type": "library",
"autoload": {
@@ -4130,10 +4529,89 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Process Component",
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.2.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-01-27T10:15:41+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "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": "Generic abstractions related to writing services",
"homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
"support": {
- "source": "https://github.com/symfony/process/tree/v3.4.47"
+ "source": "https://github.com/symfony/service-contracts/tree/master"
},
"funding": [
{
@@ -4149,24 +4627,25 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2020-09-07T11:33:47+00:00"
},
{
"name": "symfony/stopwatch",
- "version": "v3.4.47",
+ "version": "v5.2.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "298b81faad4ce60e94466226b2abbb8c9bca7462"
+ "reference": "b12274acfab9d9850c52583d136a24398cdf1a0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/298b81faad4ce60e94466226b2abbb8c9bca7462",
- "reference": "298b81faad4ce60e94466226b2abbb8c9bca7462",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b12274acfab9d9850c52583d136a24398cdf1a0c",
+ "reference": "b12274acfab9d9850c52583d136a24398cdf1a0c",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8"
+ "php": ">=7.2.5",
+ "symfony/service-contracts": "^1.0|^2"
},
"type": "library",
"autoload": {
@@ -4191,10 +4670,93 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Stopwatch Component",
+ "description": "Provides a way to profile code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/stopwatch/tree/v5.2.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-01-27T10:15:41+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "c95468897f408dd0aca2ff582074423dd0455122"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122",
+ "reference": "c95468897f408dd0aca2ff582074423dd0455122",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0",
+ "symfony/http-client": "^4.4|^5.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
"homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v3.4.47"
+ "source": "https://github.com/symfony/string/tree/v5.2.3"
},
"funding": [
{
@@ -4210,31 +4772,31 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2021-01-25T15:14:59+00:00"
},
{
"name": "symfony/yaml",
- "version": "v3.4.47",
+ "version": "v4.4.19",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "88289caa3c166321883f67fe5130188ebbb47094"
+ "reference": "17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094",
- "reference": "88289caa3c166321883f67fe5130188ebbb47094",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9",
+ "reference": "17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9",
"shasum": ""
},
"require": {
- "php": "^5.5.9|>=7.0.8",
+ "php": ">=7.1.3",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/console": "<3.4"
},
"require-dev": {
- "symfony/console": "~3.4|~4.0"
+ "symfony/console": "^3.4|^4.0|^5.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
@@ -4262,10 +4824,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony Yaml Component",
+ "description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v3.4.47"
+ "source": "https://github.com/symfony/yaml/tree/v4.4.19"
},
"funding": [
{
@@ -4281,19 +4843,99 @@
"type": "tidelift"
}
],
- "time": "2020-10-24T10:57:07+00:00"
+ "time": "2021-01-27T09:09:26+00:00"
+ },
+ {
+ "name": "vlucas/phpdotenv",
+ "version": "v5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vlucas/phpdotenv.git",
+ "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b3eac5c7ac896e52deab4a99068e3f4ab12d9e56",
+ "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "graham-campbell/result-type": "^1.0.1",
+ "php": "^7.1.3 || ^8.0",
+ "phpoption/phpoption": "^1.7.4",
+ "symfony/polyfill-ctype": "^1.17",
+ "symfony/polyfill-mbstring": "^1.17",
+ "symfony/polyfill-php80": "^1.17"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "ext-filter": "*",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5.1"
+ },
+ "suggest": {
+ "ext-filter": "Required to use the boolean validator."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Dotenv\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "graham@alt-three.com",
+ "homepage": "https://gjcampbell.co.uk/"
+ },
+ {
+ "name": "Vance Lucas",
+ "email": "vance@vancelucas.com",
+ "homepage": "https://vancelucas.com/"
+ }
+ ],
+ "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "keywords": [
+ "dotenv",
+ "env",
+ "environment"
+ ],
+ "support": {
+ "issues": "https://github.com/vlucas/phpdotenv/issues",
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-01-20T15:23:13+00:00"
},
{
"name": "webmozart/assert",
"version": "1.9.1",
"source": {
"type": "git",
- "url": "https://github.com/webmozart/assert.git",
+ "url": "https://github.com/webmozarts/assert.git",
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
"reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
"shasum": ""
},
@@ -4331,8 +4973,8 @@
"validate"
],
"support": {
- "issues": "https://github.com/webmozart/assert/issues",
- "source": "https://github.com/webmozart/assert/tree/master"
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.9.1"
},
"time": "2020-07-08T17:02:28+00:00"
},
@@ -6476,16 +7118,16 @@
},
{
"name": "wp-phpunit/wp-phpunit",
- "version": "5.6.0",
+ "version": "5.6.2",
"source": {
"type": "git",
"url": "https://github.com/wp-phpunit/wp-phpunit.git",
- "reference": "7130a214573cc8c12a0f8fe8a74b18b453bce1e9"
+ "reference": "f6b3fb65bccc0ff70b3bc7cc241935597dbd5562"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wp-phpunit/wp-phpunit/zipball/7130a214573cc8c12a0f8fe8a74b18b453bce1e9",
- "reference": "7130a214573cc8c12a0f8fe8a74b18b453bce1e9",
+ "url": "https://api.github.com/repos/wp-phpunit/wp-phpunit/zipball/f6b3fb65bccc0ff70b3bc7cc241935597dbd5562",
+ "reference": "f6b3fb65bccc0ff70b3bc7cc241935597dbd5562",
"shasum": ""
},
"type": "library",
@@ -6520,7 +7162,7 @@
"issues": "https://github.com/wp-phpunit/issues",
"source": "https://github.com/wp-phpunit/wp-phpunit"
},
- "time": "2020-12-09T18:06:02+00:00"
+ "time": "2021-02-04T18:24:14+00:00"
},
{
"name": "wpackagist-plugin/advanced-custom-fields",
@@ -6610,8 +7252,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
- "platform-overrides": {
- "php": "5.6.20"
- },
"plugin-api-version": "2.0.0"
}
diff --git a/connectors/class-connector-gravityforms.php b/connectors/class-connector-gravityforms.php
index 667aca24d..321428575 100644
--- a/connectors/class-connector-gravityforms.php
+++ b/connectors/class-connector-gravityforms.php
@@ -45,6 +45,7 @@ class Connector_GravityForms extends Connector {
'gform_post_form_views_deleted',
'gform_post_export_entries',
'gform_forms_post_import',
+ 'gform_export_form',
'gform_delete_lead',
'gform_post_note_added',
'gform_pre_note_deleted',
@@ -225,16 +226,11 @@ public function callback_gform_after_save_form( $form, $is_new ) {
$id = $form['id'];
$this->log(
- sprintf(
- /* translators: %1$s a form title, %2$s a status (e.g. "Contact Form", "created") */
- __( '"%1$s" form %2$s', 'stream' ),
- $title,
- $is_new ? esc_html__( 'created', 'stream' ) : esc_html__( 'updated', 'stream' )
- ),
+ /* translators: %1$s a form title, %2$s an action (e.g. "Contact Form", "created") */
+ __( '"%1$s" form %2$s', 'stream' ),
array(
- 'action' => $is_new,
- 'id' => $id,
'title' => $title,
+ 'action' => $is_new ? esc_html__( 'created', 'stream' ) : esc_html__( 'updated', 'stream' ),
),
$id,
'forms',
@@ -255,16 +251,12 @@ public function callback_gform_pre_confirmation_save( $confirmation, $form, $is_
}
$this->log(
- sprintf(
- /* translators: %1$s: a confirmation name, %2$s: a status, %3$s: a form title (e.g. "Email", "created", "Contact Form") */
- __( '"%1$s" confirmation %2$s for "%3$s"', 'stream' ),
- $confirmation['name'],
- $is_new ? esc_html__( 'created', 'stream' ) : esc_html__( 'updated', 'stream' ),
- $form['title']
- ),
+ /* translators: %1$s: a confirmation name, %2$s: a status, %3$s: a form title (e.g. "Email", "created", "Contact Form") */
+ __( '"%1$s" confirmation %2$s for "%3$s"', 'stream' ),
array(
- 'is_new' => $is_new,
- 'form_id' => $form['id'],
+ 'title' => $confirmation['name'],
+ 'action' => $is_new ? esc_html__( 'created', 'stream' ) : esc_html__( 'updated', 'stream' ),
+ 'form_title' => $form['title'],
),
$form['id'],
'forms',
@@ -288,16 +280,12 @@ public function callback_gform_pre_notification_save( $notification, $form, $is_
}
$this->log(
- sprintf(
- /* translators: %1$s: a notification name, %2$s: a status, %3$s: a form title (e.g. "Email", "created", "Contact Form") */
- __( '"%1$s" notification %2$s for "%3$s"', 'stream' ),
- $notification['name'],
- $is_new ? esc_html__( 'created', 'stream' ) : esc_html__( 'updated', 'stream' ),
- $form['title']
- ),
+ /* translators: %1$s: a notification name, %2$s: a status, %3$s: a form title (e.g. "Email", "created", "Contact Form") */
+ __( '"%1$s" notification %2$s for "%3$s"', 'stream' ),
array(
- 'is_update' => $is_new,
- 'form_id' => $form['id'],
+ 'title' => $notification['name'],
+ 'action' => $is_new ? esc_html__( 'created', 'stream' ) : esc_html__( 'updated', 'stream' ),
+ 'form_title' => $form['title'],
),
$form['id'],
'forms',
@@ -315,15 +303,11 @@ public function callback_gform_pre_notification_save( $notification, $form, $is_
*/
public function callback_gform_pre_notification_deleted( $notification, $form ) {
$this->log(
- sprintf(
- /* translators: %1$s: a notification name, %2$s: a form title (e.g. "Email", "Contact Form") */
- __( '"%1$s" notification deleted from "%2$s"', 'stream' ),
- $notification['name'],
- $form['title']
- ),
+ /* translators: %1$s: a notification name, %2$s: a form title (e.g. "Email", "Contact Form") */
+ __( '"%1$s" notification deleted from "%2$s"', 'stream' ),
array(
- 'form_id' => $form['id'],
- 'notification' => $notification,
+ 'title' => $notification['name'],
+ 'form_title' => $form['title'],
),
$form['id'],
'forms',
@@ -339,15 +323,11 @@ public function callback_gform_pre_notification_deleted( $notification, $form )
*/
public function callback_gform_pre_confirmation_deleted( $confirmation, $form ) {
$this->log(
- sprintf(
- /* translators: %1$s: a confirmation name, %2$s: a form title (e.g. "Email", "Contact Form") */
- __( '"%1$s" confirmation deleted from "%2$s"', 'stream' ),
- $confirmation['name'],
- $form['title']
- ),
+ /* translators: %1$s: a confirmation name, %2$s: a form title (e.g. "Email", "Contact Form") */
+ __( '"%1$s" confirmation deleted from "%2$s"', 'stream' ),
array(
- 'form_id' => $form['id'],
- 'confirmation' => $confirmation,
+ 'title' => $confirmation['name'],
+ 'form_title' => $form['title'],
),
$form['id'],
'forms',
@@ -361,6 +341,9 @@ public function callback_gform_pre_confirmation_deleted( $confirmation, $form )
* @param array $confirmation Confirmation data.
* @param array $form Form data.
* @param bool $is_active Is this form active?.
+ *
+ * @TODO See if this needs to be removed.
+ * Can't find action or logic relating to status of the confirmation in the GF code.
*/
public function callback_gform_confirmation_status( $confirmation, $form, $is_active ) {
$this->log(
@@ -388,6 +371,9 @@ public function callback_gform_confirmation_status( $confirmation, $form, $is_ac
* @param array $notification Notification data.
* @param array $form Form data.
* @param bool $is_active Is this form active?.
+ *
+ * @TODO See if this needs to be removed.
+ * Can't find action or logic relating to status of the confirmation in the GF code.
*/
public function callback_gform_notification_status( $notification, $form, $is_active ) {
$this->log(
@@ -581,25 +567,22 @@ public function callback_gform_forms_post_import( $forms ) {
*
* @action gform_export_separator
*
- * @param string $dummy Unused.
- * @param int $form_id Form ID.
+ * @param array $form Form object.
*/
- public function callback_gform_export_separator( $dummy, $form_id ) {
- $form = $this->get_form( $form_id );
-
+ public function callback_gform_export_form( $form ) {
$this->log(
/* translators: %s: a form title (e.g. "Contact Form") */
__( '"%s" form exported', 'stream' ),
array(
'form_title' => $form['title'],
- 'form_id' => $form_id,
+ 'form_id' => $form['id'],
),
- $form_id,
+ $form['id'],
'export',
'exported'
);
- return $dummy;
+ return $form;
}
/**
@@ -607,6 +590,8 @@ public function callback_gform_export_separator( $dummy, $form_id ) {
*
* @param string $dummy Unused.
* @param array $forms Form data.
+ *
+ * @TODO See if this callback should be removed.
*/
public function callback_gform_export_options( $dummy, $forms ) {
$ids = wp_list_pluck( $forms, 'id' );
@@ -746,17 +731,12 @@ public function callback_gform_update_status( $lead_id, $status, $prev = '' ) {
}
$this->log(
- sprintf(
- /* translators: %1$d: an ID, %2$s: a status, %3$s: a form title (e.g. "42", "activated", "Contact Form") */
- __( 'Lead #%1$d %2$s on "%3$s" form', 'stream' ),
- $lead_id,
- $actions[ $status ],
- $form['title']
- ),
+ /* translators: %1$d: an ID, %2$s: a status, %3$s: a form title (e.g. "42", "activated", "Contact Form") */
+ __( 'Lead #%1$d %2$s on "%3$s" form', 'stream' ),
array(
'lead_id' => $lead_id,
+ 'action' => $actions[ $status ],
'form_title' => $form['title'],
- 'form_id' => $form['id'],
'status' => $status,
'prev' => $prev,
),
@@ -780,14 +760,8 @@ public function callback_gform_update_is_read( $lead_id, $status ) {
$status = ( ! empty( $status ) ) ? esc_html__( 'read', 'stream' ) : esc_html__( 'unread', 'stream' );
$this->log(
- sprintf(
- /* translators: %1$d: a lead ID, %2$s: a status, %3$s: a form ID, %4$s: a form title (e.g. "42", "unread", "Contact Form") */
- __( 'Entry #%1$d marked as %2$s on form #%3$d ("%4$s")', 'stream' ),
- $lead_id,
- $status,
- $form['id'],
- $form['title']
- ),
+ /* translators: %1$d: a lead ID, %2$s: a status, %3$s: a form ID, %4$s: a form title (e.g. "42", "unread", "Contact Form") */
+ __( 'Entry #%1$d marked as %2$s on form #%3$d ("%4$s")', 'stream' ),
array(
'lead_id' => $lead_id,
'lead_status' => $status,
@@ -815,14 +789,8 @@ public function callback_gform_update_is_starred( $lead_id, $status ) {
$action = $status;
$this->log(
- sprintf(
- /* translators: %1$d: an ID, %2$s: a status, %3$d: a form title (e.g. "42", "starred", "Contact Form") */
- __( 'Entry #%1$d %2$s on form #%3$d ("%4$s")', 'stream' ),
- $lead_id,
- $status,
- $form['id'],
- $form['title']
- ),
+ /* translators: %1$d: an ID, %2$s: a status, %3$d: a form title (e.g. "42", "starred", "Contact Form") */
+ __( 'Entry #%1$d %2$s on form #%3$d ("%4$s")', 'stream' ),
array(
'lead_id' => $lead_id,
'lead_status' => $status,
@@ -936,17 +904,12 @@ public function log_form_action( $form_id, $action ) {
);
$this->log(
- sprintf(
- /* translators: %1$d: an ID, %2$s: a form title, %3$s: a status (e.g. "42", "Contact Form", "Activated") */
- __( 'Form #%1$d ("%2$s") %3$s', 'stream' ),
- $form_id,
- $form['title'],
- strtolower( $actions[ $action ] )
- ),
+ /* translators: %1$d: an ID, %2$s: a form title, %3$s: a status (e.g. "42", "Contact Form", "Activated") */
+ __( 'Form #%1$d ("%2$s") %3$s', 'stream' ),
array(
'form_id' => $form_id,
'form_title' => $form['title'],
- 'form_status' => strtolower( $action ),
+ 'form_status' => strtolower( $actions[ $action ] ),
),
$form['id'],
'forms',
diff --git a/phpunit.xml b/phpunit.xml
index af2b1c44b..8df86a355 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -10,7 +10,7 @@
diff --git a/tests/tests/connectors/test-class-connector-gravityforms.php b/tests/tests/connectors/test-class-connector-gravityforms.php
new file mode 100644
index 000000000..52dc1f837
--- /dev/null
+++ b/tests/tests/connectors/test-class-connector-gravityforms.php
@@ -0,0 +1,1063 @@
+plugin->connectors->unload_connectors();
+
+ $post_connector = new Connector_Posts();
+ $post_connector->register();
+
+ // Make partial of Connector_GravityForms class, with mocked "log" function.
+ $this->mock = $this->getMockBuilder( Connector_GravityForms::class )
+ ->setMethods( array( 'log' ) )
+ ->getMock();
+
+ $this->mock->register();
+
+ if ( ! $this->mock->is_dependency_satisfied() ) {
+ $this->markTestSkipped( 'A GravityForms is needed to run this test.' );
+ }
+
+ // Load needed Gravity Forms files.
+ require_once( \GFCommon::get_base_path() . '/form_settings.php' );
+ require_once( \GFCommon::get_base_path() . '/notification.php' );
+ require_once( \GFCommon::get_base_path() . '/export.php' );
+ }
+
+ /**
+ * Runs after each test
+ */
+ public function tearDown() {
+ parent::tearDown();
+ }
+
+ public function test_gravityforms_installed_and_activated() {
+ $this->assertTrue( class_exists( 'GFForms' ) );
+ }
+
+ /**
+ * Creates a new form.
+ *
+ * @param array $form Form configurations.
+ * @param array $fields Form fields configurations.
+ *
+ * @return int
+ */
+ public function create_form( $form = array(), $fields = array() ) {
+ $form = array_merge(
+ $form,
+ array(
+ 'title' => 'Test form',
+ 'description' => 'Form for Field Tests Description',
+ 'fields' => $this->create_fields( $fields )
+ )
+ );
+ $form_id = \GFAPI::add_form( $form );
+
+ return $form_id;
+ }
+
+ /**
+ * Returns form field object.
+ *
+ * @param array $fields Form field configurations.
+ *
+ * @return array
+ */
+ public function create_fields( $fields = array() ) {
+ $fields = ! empty( $fields ) ? $fields : array(
+ array(
+ 'type' => 'text',
+ 'id' => 1,
+ 'label' => 'Single Line Text',
+ 'adminLabel' => '',
+ 'isRequired' => false,
+ 'size' => 'medium',
+ 'errorMessage' => '',
+ 'visibility' => 'visible',
+ 'inputs' => null,
+ 'formId' => 2,
+ 'description' => 'I am a single line text field.',
+ 'allowsPrepopulate' => false,
+ 'inputMask' => false,
+ 'inputMaskValue' => '',
+ 'inputMaskIsCustom' => false,
+ 'maxLength' => '',
+ 'inputType' => '',
+ 'labelPlacement' => '',
+ 'descriptionPlacement' => '',
+ 'subLabelPlacement' => '',
+ 'placeholder' => '',
+ 'cssClass' => '',
+ 'inputName' => '',
+ 'noDuplicates' => false,
+ 'defaultValue' => '',
+ 'choices' => '',
+ 'productField' => '',
+ 'enablePasswordInput' => '',
+ 'multipleFiles' => false,
+ 'maxFiles' => '',
+ 'calculationFormula' => '',
+ 'calculationRounding' => '',
+ 'enableCalculation' => '',
+ 'disableQuantity' => false,
+ 'displayAllCategories' => false,
+ 'useRichTextEditor' => false,
+ 'checkboxLabel' => '',
+ 'pageNumber' => 1,
+ 'fields' => '',
+ 'displayOnly' => '',
+ ),
+ );
+
+ return $fields;
+ }
+
+ public function test_callback_gform_after_save_form() {
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%1$s" form %2$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'title' => 'Test form',
+ 'action' => 'created',
+ )
+ ),
+ $this->greaterThan( 0 ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'created' )
+ );
+
+ // Create form to trigger save callback.
+ $form_id = $this->create_form();
+
+ $form_meta = \GFFormsModel::get_form_meta( $form_id );
+ do_action( 'gform_after_save_form', $form_meta, true, array() );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_after_save_form' ) );
+ }
+
+ public function test_callback_gform_pre_confirmation_save() {
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%1$s" confirmation %2$s for "%3$s"', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'title' => 'Test confirmation',
+ 'action' => 'created',
+ 'form_title' => 'Test form',
+ )
+ ),
+ $this->greaterThan( 0 ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'updated' )
+ );
+
+ // Create form and confirmation to trigger callback.
+ $confirmation = array(
+ 'id' => uniqid(),
+ 'name' => 'Test confirmation',
+ 'isDefault' => true,
+ 'type' => 'message',
+ 'message' => 'Lorem ipsum dolor...',
+ 'url' => '',
+ 'pageId' => '',
+ 'queryString' => '',
+ );
+
+ $form_id = $this->create_form(
+ array( 'confirmations' => array( $confirmation['id'] => $confirmation ) )
+ );
+ $form = \GFAPI::get_form( $form_id );
+
+ \gf_apply_filters( array( 'gform_pre_confirmation_save', $form_id ), $confirmation, $form, true );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_pre_confirmation_save' ) );
+ }
+
+ public function test_callback_gform_pre_notification_save() {
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%1$s" notification %2$s for "%3$s"', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'title' => 'Test notification',
+ 'action' => 'created',
+ 'form_title' => 'Test form',
+ )
+ ),
+ $this->greaterThan( 0 ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'updated' )
+ );
+
+ // Create form and notification to trigger callback.
+ $notification = array(
+ 'id' => uniqid(),
+ 'to' => '{admin_email}',
+ 'name' => 'Test notification',
+ 'event' => 'form_submission',
+ 'toType' => 'email',
+ 'subject' => 'New submission from {form_title}',
+ 'message' => '{all_fields}',
+ );
+
+ $form_id = $this->create_form(
+ array( 'notifications' => array( $notification['id'] => $notification ) )
+ );
+ $form = \GFAPI::get_form( $form_id );
+
+ \gf_apply_filters( array( 'gform_pre_notification_save', $form_id ), $notification, $form, true );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_pre_notification_save' ) );
+ }
+
+ public function test_callback_gform_pre_notification_deleted() {
+ // Create form and notification for later use.
+ $notification = array(
+ 'id' => uniqid(),
+ 'to' => '{admin_email}',
+ 'name' => 'Test notification',
+ 'event' => 'form_submission',
+ 'toType' => 'email',
+ 'subject' => 'New submission from {form_title}',
+ 'message' => '{all_fields}',
+ );
+
+ $form_id = $this->create_form(
+ array( 'notifications' => array( $notification['id'] => $notification ) )
+ );
+ $form = \GFAPI::get_form( $form_id );
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%1$s" notification deleted from "%2$s"', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'title' => 'Test notification',
+ 'form_title' => 'Test form',
+ )
+ ),
+ $this->greaterThan( 0 ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'updated' )
+ );
+
+ // Delete notification to trigger callback.
+ \GFNotification::delete_notification( $notification['id'], $form_id );
+
+ // Check callback test action..
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_pre_notification_deleted' ) );
+ }
+
+ public function test_callback_gform_pre_confirmation_deleted() {
+ // Create form and notification for later use.
+ $confirmation = array(
+ 'id' => uniqid(),
+ 'name' => 'Test confirmation',
+ 'isDefault' => true,
+ 'type' => 'message',
+ 'message' => 'Lorem ipsum dolor...',
+ 'url' => '',
+ 'pageId' => '',
+ 'queryString' => '',
+ );
+
+ $form_id = $this->create_form(
+ array( 'confirmations' => array( $confirmation['id'] => $confirmation ) )
+ );
+ $form = \GFAPI::get_form( $form_id );
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%1$s" confirmation deleted from "%2$s"', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'title' => 'Test confirmation',
+ 'form_title' => 'Test form',
+ )
+ ),
+ $this->greaterThan( 0 ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'updated' )
+ );
+
+ // Delete confirmation to trigger callback.
+ \GFFormSettings::delete_confirmation( $confirmation['id'], $form_id );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_pre_confirmation_deleted' ) );
+ }
+
+ public function test_check() {
+ // Expected log calls.
+ $this->mock->expects( $this->exactly( 4 ) )
+ ->method( 'log' )
+ ->withConsecutive(
+ array(
+ $this->equalTo( __( '"%s" setting updated', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'option_title' => 'Currency',
+ 'option' => 'rg_gforms_currency',
+ 'old_value' => null,
+ 'new_value' => '$',
+ )
+ ),
+ $this->equalTo( null ),
+ $this->equalTo( 'settings' ),
+ $this->equalTo( 'updated' ),
+ ),
+ array(
+ $this->equalTo( 'Gravity Forms license key updated' ),
+ $this->equalTo(
+ array(
+ 'option' => 'rg_gforms_key',
+ 'old_value' => null,
+ 'new_value' => 'blahblahblah'
+ )
+ ),
+ $this->equalTo( null ),
+ $this->equalTo( 'settings' ),
+ $this->equalTo( 'updated' ),
+ ),
+ array(
+ $this->equalTo( __( '"%s" setting updated', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'option_title' => 'Currency',
+ 'option' => 'rg_gforms_currency',
+ 'old_value' => '$',
+ 'new_value' => '£',
+ )
+ ),
+ $this->equalTo( null ),
+ $this->equalTo( 'settings' ),
+ $this->equalTo( 'updated' ),
+ ),
+ array(
+ $this->equalTo( 'Gravity Forms license key deleted' ),
+ $this->equalTo(
+ array(
+ 'option' => 'rg_gforms_key',
+ 'old_value' => 'blahblahblah',
+ 'new_value' => ''
+ )
+ ),
+ $this->equalTo( null ),
+ $this->equalTo( 'settings' ),
+ $this->equalTo( 'deleted' ),
+ )
+ );
+
+ // Update options to trigger callbacks.
+ update_option( 'rg_gforms_currency', '$' );
+ update_option( 'rg_gforms_key', 'blahblahblah' );
+ update_option( 'rg_gforms_currency', '£' );
+ update_option( 'rg_gforms_key', '' );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_add_option' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_update_option' ) );
+ }
+
+ public function test_callback_gform_delete_lead() {
+ // Create form and entry for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( 'Lead #%1$d from "%2$s" deleted', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'form_title' => 'Test form',
+ 'form_id' => $form_id,
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'deleted' )
+ );
+
+ // Delete entry to trigger callback.
+ \GFFormsModel::delete_entry( $entry_id );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_delete_lead' ) );
+ }
+
+ public function test_callback_gform_post_note_added() {
+ // Create and authenticate user.
+ $user_id = self::factory()->user->create(
+ array(
+ 'username' => 'johndoe',
+ 'user_role' => 'admin',
+ )
+ );
+ \wp_set_current_user( $user_id );
+
+ // Create form and entry for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( 'Note #%1$d added to lead #%2$d on "%3$s" form', 'stream' ) ),
+ $this->callback(
+ function( $args ) {
+ return ! empty( $args['form_title' ] ) && $args['form_title'] === 'Test form';
+ }
+ ),
+ $this->greaterThan( 0 ),
+ $this->equalTo( 'notes' ),
+ $this->equalTo( 'added' )
+ );
+
+ // Create note to trigger callback.
+ $note = 'Lorem ipsum dolor...';
+ \GFFormsModel::add_note( $entry_id, $user_id, 'johndoe', $note, 'user' );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_note_added' ) );
+ }
+
+ public function test_callback_gform_pre_note_deleted() {
+ global $wpdb;
+
+ // Create and authenticate user.
+ $user_id = self::factory()->user->create(
+ array(
+ 'username' => 'johndoe',
+ 'user_role' => 'admin',
+ )
+ );
+ \wp_set_current_user( $user_id );
+
+ // Create form, entry, and note for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Wow, I actually had to do this just to get the Note ID.
+ $note_id = null;
+ add_action(
+ 'gform_post_note_added',
+ function( $id ) use ( &$note_id ) {
+ $note_id = $id;
+ }
+ );
+ \GFFormsModel::add_note( $entry_id, $user_id, 'johndoe', 'Lorem ipsum dolor...' );
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( 'Note #%1$d deleted from lead #%2$d on "%3$s" form', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'note_id' => $note_id,
+ 'lead_id' => $entry_id,
+ 'form_title' => $form['title'],
+ 'form_id' => $form['id'],
+ )
+ ),
+ $this->equalTo( $note_id ),
+ $this->equalTo( 'notes' ),
+ $this->equalTo( 'deleted' )
+ );
+
+ // Delete note and trigger callback.
+ \GFFormsModel::delete_note( $note_id );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_pre_note_deleted' ) );
+ }
+
+ public function test_callback_gform_update_status() {
+ // Create form and entry for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Expected log calls.
+ $this->mock->expects( $this->exactly( 2 ) )
+ ->method( 'log' )
+ ->withConsecutive(
+ array(
+ $this->equalTo( __( 'Lead #%1$d %2$s on "%3$s" form', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'action' => 'trashed',
+ 'form_title' => 'Test form',
+ 'status' => 'trash',
+ 'prev' => 'active',
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'trash' ),
+ ),
+ array(
+ $this->equalTo( __( 'Lead #%1$d %2$s on "%3$s" form', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'action' => 'restored',
+ 'form_title' => 'Test form',
+ 'status' => 'restore',
+ 'prev' => 'trash',
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'restore' )
+ )
+ );
+
+ // Update form status and manually trigger callback.
+ \gform_update_meta( $entry_id, 'status', 'trash' );
+ do_action( 'gform_update_status', $entry_id, 'trash', 'active' );
+ \gform_update_meta( $entry_id, 'status', 'active' );
+ do_action( 'gform_update_status', $entry_id, 'active', 'trash' );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_update_status' ) );
+ }
+
+ public function test_callback_gform_update_is_read() {
+ // Create form for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Expected log calls.
+ $this->mock->expects( $this->exactly( 2 ) )
+ ->method( 'log' )
+ ->withConsecutive(
+ array(
+ $this->equalTo( __( 'Entry #%1$d marked as %2$s on form #%3$d ("%4$s")', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'lead_status' => 'read',
+ 'form_id' => $form['id'],
+ 'form_title' => $form['title'],
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'updated' )
+ ),
+ array(
+ $this->equalTo( __( 'Entry #%1$d marked as %2$s on form #%3$d ("%4$s")', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'lead_status' => 'unread',
+ 'form_id' => $form['id'],
+ 'form_title' => $form['title'],
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'updated' )
+ )
+ );
+
+ // Update entry "is_read" and trigger callback.
+ \GFFormsModel::update_entry_property( $entry_id, 'is_read', 1 );
+ \GFFormsModel::update_entry_property( $entry_id, 'is_read', 0 );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_update_is_read' ) );
+ }
+
+ public function test_callback_gform_update_is_starred() {
+ // Create form and entry for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Expected log calls.
+ $this->mock->expects( $this->exactly( 2 ) )
+ ->method( 'log' )
+ ->withConsecutive(
+ array(
+ $this->equalTo( __( 'Entry #%1$d %2$s on form #%3$d ("%4$s")', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'lead_status' => 'starred',
+ 'form_id' => $form['id'],
+ 'form_title' => $form['title'],
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'starred' )
+ ),
+ array(
+ $this->equalTo( __( 'Entry #%1$d %2$s on form #%3$d ("%4$s")', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'lead_status' => 'unstarred',
+ 'form_id' => $form['id'],
+ 'form_title' => $form['title'],
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'unstarred' )
+ )
+ );
+
+ // Update entry "is_starred" and trigger callback.
+ \GFFormsModel::update_entry_property( $entry_id, 'is_starred', 1 );
+ \GFFormsModel::update_entry_property( $entry_id, 'is_starred', 0 );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_update_is_starred' ) );
+ }
+
+ public function test_log_form_action() {
+ // Create form and entry for later use.
+ $form_id = $this->create_form();
+ $form = \GFAPI::get_form( $form_id );
+ $entry_id = \GFAPI::add_entry(
+ array(
+ 'id' => '1',
+ 'form_id' => $form_id,
+ 'date_created' => '2016-03-22 19 => 13 => 19',
+ 'is_starred' => 0,
+ 'is_read' => 0,
+ 'ip' => '192.168.50.1',
+ 'source_url' => 'http => \/\/local.wordpress.dev\/?gf_page=preview&id=1',
+ 'post_id' => null,
+ 'currency' => 'USD',
+ 'payment_status' => null,
+ 'payment_date' => null,
+ 'transaction_id' => null,
+ 'payment_amount' => null,
+ 'payment_method' => null,
+ 'is_fulfilled' => null,
+ 'created_by' => '1',
+ 'transaction_type' => null,
+ 'user_agent' => 'Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/48.0.2564.116 Safari\/537.36',
+ 'status' => 'active',
+ )
+ );
+
+ // Expected log calls.
+ $this->mock->expects( $this->exactly( 10 ) )
+ ->method( 'log' )
+ ->withConsecutive(
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'deactivated',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'deactivated' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'activated',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'activated' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'trashed',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'trashed' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'restored',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'untrashed' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id + 1,
+ 'form_title' => 'Test form (1)',
+ 'form_status' => 'activated',
+ )
+ ),
+ $this->equalTo( $form_id + 1 ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'activated' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'duplicated',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'duplicated' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'views reset',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'views_deleted' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'deleted',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'deleted' )
+ ),
+ array(
+ $this->equalTo( __( 'Lead #%1$d from "%2$s" deleted', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'lead_id' => $entry_id,
+ 'form_title' => 'Test form',
+ 'form_id' => $form_id,
+ )
+ ),
+ $this->equalTo( $entry_id ),
+ $this->equalTo( 'entries' ),
+ $this->equalTo( 'deleted' )
+ ),
+ array(
+ $this->equalTo( __( 'Form #%1$d ("%2$s") %3$s', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_id' => $form_id,
+ 'form_title' => 'Test form',
+ 'form_status' => 'views reset',
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'forms' ),
+ $this->equalTo( 'views_deleted' )
+ )
+ );
+
+ // Update form "status" to trigger callback.
+ \GFFormsModel::update_form_active( $form_id, 0 );
+ \GFFormsModel::update_form_active( $form_id, 1 );
+ \RGFormsModel::trash_form( $form_id );
+ \RGFormsModel::restore_form( $form_id );
+ \RGFormsModel::duplicate_form( $form_id );
+ \GFFormsModel::delete_views( $form_id );
+ \RGFormsModel::delete_form( $form_id );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_before_delete_form' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_form_trashed' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_form_restored' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_form_activated' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_form_deactivated' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_form_duplicated' ) );
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_form_views_deleted' ) );
+ }
+
+ public function test_callback_gform_post_export_entries() {
+ // Create form for later use.
+ $form_id = $this->create_form();
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%s" form entries exported', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_title' => 'Test form',
+ 'form_id' => $form_id,
+ 'start_date' => null,
+ 'end_date' => null,
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'export' ),
+ $this->equalTo( 'exported' )
+ );
+
+ // Execute form export and trigger callback.
+ $form = \RGFormsModel::get_form_meta( $form_id );
+ $export_id = sanitize_key( wp_hash( uniqid( 'export', true ) ) );
+ $_POST['export_field'] = array( 'id' );
+ \GFExport::start_export( $form, 0, $export_id );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_post_export_entries' ) );
+ }
+
+ public function test_callback_gform_forms_post_import() {
+ // Create form and export as json string for later use.
+ $form_id = $this->create_form();
+ $forms = \GFFormsModel::get_form_meta_by_id( [ $form_id ] );
+ $forms = \GFExport::prepare_forms_for_export( $forms );
+ $forms['version'] = \GFForms::$version;
+ $forms_json = json_encode( $forms );
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( '%d form imported' ),
+ $this->equalTo(
+ array(
+ 'count' => 1,
+ 'ids' => [ $form_id + 1 ],
+ 'titles' => [ 'Test form(2)' ],
+ )
+ ),
+ $this->equalTo( null ),
+ $this->equalTo( 'export' ),
+ $this->equalTo( 'imported' )
+ );
+
+ // Import form and trigger callback.
+ \GFExport::import_json( $forms_json );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_forms_post_import' ) );
+ }
+
+ public function test_callback_gform_export_form() {
+ // Create form for later use.
+ $form_id = $this->create_form();
+
+ // Expected log calls.
+ $this->mock->expects( $this->once() )
+ ->method( 'log' )
+ ->with(
+ $this->equalTo( __( '"%s" form exported', 'stream' ) ),
+ $this->equalTo(
+ array(
+ 'form_title' => 'Test form',
+ 'form_id' => $form_id,
+ )
+ ),
+ $this->equalTo( $form_id ),
+ $this->equalTo( 'export' ),
+ $this->equalTo( 'exported' )
+ );
+
+ // Export forms to trigger callback.
+ $forms = \GFFormsModel::get_form_meta_by_id( array( $form_id ) );
+ \GFExport::prepare_forms_for_export( $forms );
+
+ // Check callback test action.
+ $this->assertFalse( 0 === did_action( $this->action_prefix . 'callback_gform_export_form' ) );
+ }
+}