diff options
32 files changed, 455 insertions, 194 deletions
| diff --git a/build/build.xml b/build/build.xml index 5e7c672195..b4fab62c29 100644 --- a/build/build.xml +++ b/build/build.xml @@ -3,8 +3,8 @@  <project name="phpBB" description="The phpBB forum software" default="all" basedir="../">  	<!-- a few settings for the build -->  	<property name="newversion" value="3.2.4-dev" /> -	<property name="prevversion" value="3.2.2" /> -	<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0, 3.2.1" /> +	<property name="prevversion" value="3.2.3" /> +	<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0, 3.2.1, 3.2.2" />  	<!-- no configuration should be needed beyond this point -->  	<property name="oldversions" value="${olderversions}, ${prevversion}" /> diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index 752dfa4ab2..32be1cf6ed 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -935,9 +935,9 @@ phpbb.addAjaxCallback('alt_text', function() {  	$anchor.each(function() {  		var $this = $(this);  		altText = $this.attr('data-alt-text'); -		$this.attr('data-alt-text', $this.text()); -		$this.attr('title', $.trim(altText)); -		$this.text(altText); +		$this.attr('data-alt-text', $.trim($this.text())); +		$this.attr('title', altText); +		$this.children('span').text(altText);  	});  }); diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 8b3543880f..495d756c79 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -211,7 +211,7 @@ phpbb.plupload.updateHiddenData = function(row, attach, index) {  			.attr('type', 'hidden')  			.attr('name', 'attachment_data[' + index + '][' + key + ']')  			.attr('value', attach[key]); -		$('textarea', row).after(input); +		$(row).append(input);  	}  }; diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 5b948eddc1..c83ff7aa51 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -84,16 +84,16 @@          },          {              "name": "guzzlehttp/guzzle", -            "version": "5.3.2", +            "version": "5.3.3",              "source": {                  "type": "git",                  "url": "https://github.com/guzzle/guzzle.git", -                "reference": "f9acb4761844317e626a32259205bec1f1bc60d2" +                "reference": "93bbdb30d59be6cd9839495306c65f2907370eb9"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f9acb4761844317e626a32259205bec1f1bc60d2", -                "reference": "f9acb4761844317e626a32259205bec1f1bc60d2", +                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/93bbdb30d59be6cd9839495306c65f2907370eb9", +                "reference": "93bbdb30d59be6cd9839495306c65f2907370eb9",                  "shasum": ""              },              "require": { @@ -133,20 +133,20 @@                  "rest",                  "web service"              ], -            "time": "2018-01-15 07:18:01" +            "time": "2018-07-31 13:33:10"          },          {              "name": "guzzlehttp/ringphp", -            "version": "1.1.0", +            "version": "1.1.1",              "source": {                  "type": "git",                  "url": "https://github.com/guzzle/RingPHP.git", -                "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b" +                "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", -                "reference": "dbbb91d7f6c191e5e405e900e3102ac7f261bc0b", +                "url": "https://api.github.com/repos/guzzle/RingPHP/zipball/5e2a174052995663dd68e6b5ad838afd47dd615b", +                "reference": "5e2a174052995663dd68e6b5ad838afd47dd615b",                  "shasum": ""              },              "require": { @@ -184,7 +184,7 @@                  }              ],              "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", -            "time": "2015-05-20 03:37:09" +            "time": "2018-07-31 13:22:33"          },          {              "name": "guzzlehttp/streams", @@ -280,16 +280,16 @@          },          {              "name": "lusitanian/oauth", -            "version": "v0.8.10", +            "version": "v0.8.11",              "source": {                  "type": "git",                  "url": "https://github.com/Lusitanian/PHPoAuthLib.git", -                "reference": "09f4af38f17db6938253f4d1b171d537913ac1ed" +                "reference": "fc11a53db4b66da555a6a11fce294f574a8374f9"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/09f4af38f17db6938253f4d1b171d537913ac1ed", -                "reference": "09f4af38f17db6938253f4d1b171d537913ac1ed", +                "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/fc11a53db4b66da555a6a11fce294f574a8374f9", +                "reference": "fc11a53db4b66da555a6a11fce294f574a8374f9",                  "shasum": ""              },              "require": { @@ -462,16 +462,16 @@          },          {              "name": "paragonie/random_compat", -            "version": "v1.4.2", +            "version": "v1.4.3",              "source": {                  "type": "git",                  "url": "https://github.com/paragonie/random_compat.git", -                "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66" +                "reference": "9b3899e3c3ddde89016f576edb8c489708ad64cd"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/965cdeb01fdcab7653253aa81d40441d261f1e66", -                "reference": "965cdeb01fdcab7653253aa81d40441d261f1e66", +                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/9b3899e3c3ddde89016f576edb8c489708ad64cd", +                "reference": "9b3899e3c3ddde89016f576edb8c489708ad64cd",                  "shasum": ""              },              "require": { @@ -616,16 +616,16 @@          },          {              "name": "react/promise", -            "version": "v2.5.1", +            "version": "v2.7.0",              "source": {                  "type": "git",                  "url": "https://github.com/reactphp/promise.git", -                "reference": "62785ae604c8d69725d693eb370e1d67e94c4053" +                "reference": "f4edc2581617431aea50430749db55cc3fc031b3"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/reactphp/promise/zipball/62785ae604c8d69725d693eb370e1d67e94c4053", -                "reference": "62785ae604c8d69725d693eb370e1d67e94c4053", +                "url": "https://api.github.com/repos/reactphp/promise/zipball/f4edc2581617431aea50430749db55cc3fc031b3", +                "reference": "f4edc2581617431aea50430749db55cc3fc031b3",                  "shasum": ""              },              "require": { @@ -658,7 +658,7 @@                  "promise",                  "promises"              ], -            "time": "2017-03-25 12:08:31" +            "time": "2018-06-13 15:59:06"          },          {              "name": "s9e/text-formatter", @@ -727,21 +727,22 @@          },          {              "name": "symfony/config", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/config.git", -                "reference": "17605ff58313d9fe94e507620a399721fc347b6d" +                "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/config/zipball/17605ff58313d9fe94e507620a399721fc347b6d", -                "reference": "17605ff58313d9fe94e507620a399721fc347b6d", +                "url": "https://api.github.com/repos/symfony/config/zipball/06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", +                "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af",                  "shasum": ""              },              "require": {                  "php": ">=5.3.9", -                "symfony/filesystem": "~2.3|~3.0.0" +                "symfony/filesystem": "~2.3|~3.0.0", +                "symfony/polyfill-ctype": "~1.8"              },              "require-dev": {                  "symfony/yaml": "~2.7|~3.0.0" @@ -779,20 +780,20 @@              ],              "description": "Symfony Config Component",              "homepage": "https://symfony.com", -            "time": "2018-01-21 19:03:25" +            "time": "2018-07-26 11:13:39"          },          {              "name": "symfony/console", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/console.git", -                "reference": "162ca7d0ea597599967aa63b23418e747da0896b" +                "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/console/zipball/162ca7d0ea597599967aa63b23418e747da0896b", -                "reference": "162ca7d0ea597599967aa63b23418e747da0896b", +                "url": "https://api.github.com/repos/symfony/console/zipball/0c1fcbb9afb5cff992c982ff99c0434f0146dcfc", +                "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc",                  "shasum": ""              },              "require": { @@ -806,7 +807,7 @@                  "symfony/process": "~2.1|~3.0.0"              },              "suggest": { -                "psr/log": "For using the console logger", +                "psr/log-implementation": "For using the console logger",                  "symfony/event-dispatcher": "",                  "symfony/process": ""              }, @@ -840,20 +841,20 @@              ],              "description": "Symfony Console Component",              "homepage": "https://symfony.com", -            "time": "2018-01-29 08:54:45" +            "time": "2018-07-26 11:13:39"          },          {              "name": "symfony/debug", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/debug.git", -                "reference": "35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55" +                "reference": "cbb8a5f212148964efbc414838c527229f9951b7"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/debug/zipball/35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55", -                "reference": "35e36287fc0fdc8a08f70efcd4865ae6d8a6ee55", +                "url": "https://api.github.com/repos/symfony/debug/zipball/cbb8a5f212148964efbc414838c527229f9951b7", +                "reference": "cbb8a5f212148964efbc414838c527229f9951b7",                  "shasum": ""              },              "require": { @@ -897,20 +898,20 @@              ],              "description": "Symfony Debug Component",              "homepage": "https://symfony.com", -            "time": "2018-01-18 22:12:33" +            "time": "2018-08-03 09:45:57"          },          {              "name": "symfony/dependency-injection", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/dependency-injection.git", -                "reference": "91ad61e6f140b050eba4aa39bc52eece713f2a71" +                "reference": "ad2446d39d11c3daaa7f147d957941a187e47357"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/91ad61e6f140b050eba4aa39bc52eece713f2a71", -                "reference": "91ad61e6f140b050eba4aa39bc52eece713f2a71", +                "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad2446d39d11c3daaa7f147d957941a187e47357", +                "reference": "ad2446d39d11c3daaa7f147d957941a187e47357",                  "shasum": ""              },              "require": { @@ -960,20 +961,20 @@              ],              "description": "Symfony DependencyInjection Component",              "homepage": "https://symfony.com", -            "time": "2018-01-29 08:55:23" +            "time": "2018-07-26 11:13:39"          },          {              "name": "symfony/event-dispatcher", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/event-dispatcher.git", -                "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc" +                "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d64be24fc1eba62f9daace8a8918f797fc8e87cc", -                "reference": "d64be24fc1eba62f9daace8a8918f797fc8e87cc", +                "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12", +                "reference": "84ae343f39947aa084426ed1138bb96bf94d1f12",                  "shasum": ""              },              "require": { @@ -1020,24 +1021,25 @@              ],              "description": "Symfony EventDispatcher Component",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-07-26 09:03:18"          },          {              "name": "symfony/filesystem", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/filesystem.git", -                "reference": "1f4e8351e0196562f5e8ec584baeceeb8e2e92f6" +                "reference": "0b252f4e25b7da17abb5a98eb60755b71d082c9c"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/filesystem/zipball/1f4e8351e0196562f5e8ec584baeceeb8e2e92f6", -                "reference": "1f4e8351e0196562f5e8ec584baeceeb8e2e92f6", +                "url": "https://api.github.com/repos/symfony/filesystem/zipball/0b252f4e25b7da17abb5a98eb60755b71d082c9c", +                "reference": "0b252f4e25b7da17abb5a98eb60755b71d082c9c",                  "shasum": ""              },              "require": { -                "php": ">=5.3.9" +                "php": ">=5.3.9", +                "symfony/polyfill-ctype": "~1.8"              },              "type": "library",              "extra": { @@ -1069,20 +1071,20 @@              ],              "description": "Symfony Filesystem Component",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-08-07 09:12:42"          },          {              "name": "symfony/finder", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/finder.git", -                "reference": "9786ccb6a1f94a89ae18fc6a1b68de1f070823ed" +                "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/finder/zipball/9786ccb6a1f94a89ae18fc6a1b68de1f070823ed", -                "reference": "9786ccb6a1f94a89ae18fc6a1b68de1f070823ed", +                "url": "https://api.github.com/repos/symfony/finder/zipball/f0de0b51913eb2caab7dfed6413b87e14fca780e", +                "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e",                  "shasum": ""              },              "require": { @@ -1118,20 +1120,20 @@              ],              "description": "Symfony Finder Component",              "homepage": "https://symfony.com", -            "time": "2018-01-29 08:54:45" +            "time": "2018-07-26 11:13:39"          },          {              "name": "symfony/http-foundation", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/http-foundation.git", -                "reference": "686464910bbe58a2b38eb1f898aa45dc6c4de0cb" +                "reference": "dc02e684171d0696edb6d4266e9d93af5e3f44d3"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/686464910bbe58a2b38eb1f898aa45dc6c4de0cb", -                "reference": "686464910bbe58a2b38eb1f898aa45dc6c4de0cb", +                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/dc02e684171d0696edb6d4266e9d93af5e3f44d3", +                "reference": "dc02e684171d0696edb6d4266e9d93af5e3f44d3",                  "shasum": ""              },              "require": { @@ -1173,20 +1175,20 @@              ],              "description": "Symfony HttpFoundation Component",              "homepage": "https://symfony.com", -            "time": "2018-01-29 08:54:45" +            "time": "2018-08-27 15:52:41"          },          {              "name": "symfony/http-kernel", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/http-kernel.git", -                "reference": "af74cd947d63ae1294aed71b9456f2a04f7f6d45" +                "reference": "5424d38f10dc62752e655740224681a478d9f5bb"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/af74cd947d63ae1294aed71b9456f2a04f7f6d45", -                "reference": "af74cd947d63ae1294aed71b9456f2a04f7f6d45", +                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5424d38f10dc62752e655740224681a478d9f5bb", +                "reference": "5424d38f10dc62752e655740224681a478d9f5bb",                  "shasum": ""              },              "require": { @@ -1194,7 +1196,8 @@                  "psr/log": "~1.0",                  "symfony/debug": "^2.6.2",                  "symfony/event-dispatcher": "^2.6.7|~3.0.0", -                "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6" +                "symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6", +                "symfony/polyfill-ctype": "~1.8"              },              "conflict": {                  "symfony/config": "<2.7", @@ -1256,20 +1259,78 @@              ],              "description": "Symfony HttpKernel Component",              "homepage": "https://symfony.com", -            "time": "2018-01-29 10:48:12" +            "time": "2018-08-27 17:33:38" +        }, +        { +            "name": "symfony/polyfill-ctype", +            "version": "v1.9.0", +            "source": { +                "type": "git", +                "url": "https://github.com/symfony/polyfill-ctype.git", +                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" +            }, +            "dist": { +                "type": "zip", +                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", +                "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", +                "shasum": "" +            }, +            "require": { +                "php": ">=5.3.3" +            }, +            "suggest": { +                "ext-ctype": "For best performance" +            }, +            "type": "library", +            "extra": { +                "branch-alias": { +                    "dev-master": "1.9-dev" +                } +            }, +            "autoload": { +                "psr-4": { +                    "Symfony\\Polyfill\\Ctype\\": "" +                }, +                "files": [ +                    "bootstrap.php" +                ] +            }, +            "notification-url": "https://packagist.org/downloads/", +            "license": [ +                "MIT" +            ], +            "authors": [ +                { +                    "name": "Symfony Community", +                    "homepage": "https://symfony.com/contributors" +                }, +                { +                    "name": "Gert de Pagter", +                    "email": "BackEndTea@gmail.com" +                } +            ], +            "description": "Symfony polyfill for ctype functions", +            "homepage": "https://symfony.com", +            "keywords": [ +                "compatibility", +                "ctype", +                "polyfill", +                "portable" +            ], +            "time": "2018-08-06 14:22:27"          },          {              "name": "symfony/polyfill-mbstring", -            "version": "v1.7.0", +            "version": "v1.9.0",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/polyfill-mbstring.git", -                "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" +                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", -                "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", +                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", +                "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",                  "shasum": ""              },              "require": { @@ -1281,7 +1342,7 @@              "type": "library",              "extra": {                  "branch-alias": { -                    "dev-master": "1.7-dev" +                    "dev-master": "1.9-dev"                  }              },              "autoload": { @@ -1315,20 +1376,20 @@                  "portable",                  "shim"              ], -            "time": "2018-01-30 19:27:44" +            "time": "2018-08-06 14:22:27"          },          {              "name": "symfony/polyfill-php54", -            "version": "v1.7.0", +            "version": "v1.9.0",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/polyfill-php54.git", -                "reference": "84e2b616c197ef400c6d0556a0606cee7c9e21d5" +                "reference": "412977e090c6a8472dc39d50d1beb7d59495a965"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/84e2b616c197ef400c6d0556a0606cee7c9e21d5", -                "reference": "84e2b616c197ef400c6d0556a0606cee7c9e21d5", +                "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/412977e090c6a8472dc39d50d1beb7d59495a965", +                "reference": "412977e090c6a8472dc39d50d1beb7d59495a965",                  "shasum": ""              },              "require": { @@ -1337,7 +1398,7 @@              "type": "library",              "extra": {                  "branch-alias": { -                    "dev-master": "1.7-dev" +                    "dev-master": "1.9-dev"                  }              },              "autoload": { @@ -1373,20 +1434,20 @@                  "portable",                  "shim"              ], -            "time": "2018-01-30 19:27:44" +            "time": "2018-08-06 14:22:27"          },          {              "name": "symfony/polyfill-php55", -            "version": "v1.7.0", +            "version": "v1.9.0",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/polyfill-php55.git", -                "reference": "168371cb3dfb10e0afde96e7c2688be02470d143" +                "reference": "578b8528da843de0fc65ec395900fa3181f2ead7"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/168371cb3dfb10e0afde96e7c2688be02470d143", -                "reference": "168371cb3dfb10e0afde96e7c2688be02470d143", +                "url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/578b8528da843de0fc65ec395900fa3181f2ead7", +                "reference": "578b8528da843de0fc65ec395900fa3181f2ead7",                  "shasum": ""              },              "require": { @@ -1396,7 +1457,7 @@              "type": "library",              "extra": {                  "branch-alias": { -                    "dev-master": "1.7-dev" +                    "dev-master": "1.9-dev"                  }              },              "autoload": { @@ -1429,20 +1490,20 @@                  "portable",                  "shim"              ], -            "time": "2018-01-30 19:27:44" +            "time": "2018-08-06 14:22:27"          },          {              "name": "symfony/proxy-manager-bridge", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/proxy-manager-bridge.git", -                "reference": "d73283cfe025d73c70551c45d22c54bd43c2c53b" +                "reference": "0fd7ab039e26a33c5e3d1e00642bc83412c0896a"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/d73283cfe025d73c70551c45d22c54bd43c2c53b", -                "reference": "d73283cfe025d73c70551c45d22c54bd43c2c53b", +                "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/0fd7ab039e26a33c5e3d1e00642bc83412c0896a", +                "reference": "0fd7ab039e26a33c5e3d1e00642bc83412c0896a",                  "shasum": ""              },              "require": { @@ -1483,20 +1544,20 @@              ],              "description": "Symfony ProxyManager Bridge",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-07-26 09:03:18"          },          {              "name": "symfony/routing", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/routing.git", -                "reference": "627ea100720dac15d8165648caac57456dda84aa" +                "reference": "e26f791e8669603e9dc0a601e75a50f914eaa144"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/routing/zipball/627ea100720dac15d8165648caac57456dda84aa", -                "reference": "627ea100720dac15d8165648caac57456dda84aa", +                "url": "https://api.github.com/repos/symfony/routing/zipball/e26f791e8669603e9dc0a601e75a50f914eaa144", +                "reference": "e26f791e8669603e9dc0a601e75a50f914eaa144",                  "shasum": ""              },              "require": { @@ -1507,7 +1568,6 @@              },              "require-dev": {                  "doctrine/annotations": "~1.0", -                "doctrine/common": "~2.2",                  "psr/log": "~1.0",                  "symfony/config": "~2.7|~3.0.0",                  "symfony/expression-language": "~2.4|~3.0.0", @@ -1558,20 +1618,20 @@                  "uri",                  "url"              ], -            "time": "2018-01-16 18:00:04" +            "time": "2018-07-26 11:13:39"          },          {              "name": "symfony/twig-bridge", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/twig-bridge.git", -                "reference": "efdc8b39b5a05def32824e578ccf3fcdec8190cc" +                "reference": "2bb814a4554a7188275be36503dc27c0dd12cd2f"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/efdc8b39b5a05def32824e578ccf3fcdec8190cc", -                "reference": "efdc8b39b5a05def32824e578ccf3fcdec8190cc", +                "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/2bb814a4554a7188275be36503dc27c0dd12cd2f", +                "reference": "2bb814a4554a7188275be36503dc27c0dd12cd2f",                  "shasum": ""              },              "require": { @@ -1591,7 +1651,7 @@                  "symfony/http-kernel": "~2.8|~3.0.0",                  "symfony/polyfill-intl-icu": "~1.0",                  "symfony/routing": "~2.2|~3.0.0", -                "symfony/security": "~2.6|~3.0.0", +                "symfony/security": "^2.8.31|^3.3.13",                  "symfony/security-acl": "~2.6|~3.0.0",                  "symfony/stopwatch": "~2.2|~3.0.0",                  "symfony/templating": "~2.1|~3.0.0", @@ -1643,24 +1703,25 @@              ],              "description": "Symfony Twig Bridge",              "homepage": "https://symfony.com", -            "time": "2018-01-03 17:12:09" +            "time": "2018-07-26 11:13:39"          },          {              "name": "symfony/yaml", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/yaml.git", -                "reference": "be720fcfae4614df204190d57795351059946a77" +                "reference": "fbf876678e29dc634430dcf0096e216eb0004467"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/yaml/zipball/be720fcfae4614df204190d57795351059946a77", -                "reference": "be720fcfae4614df204190d57795351059946a77", +                "url": "https://api.github.com/repos/symfony/yaml/zipball/fbf876678e29dc634430dcf0096e216eb0004467", +                "reference": "fbf876678e29dc634430dcf0096e216eb0004467",                  "shasum": ""              },              "require": { -                "php": ">=5.3.9" +                "php": ">=5.3.9", +                "symfony/polyfill-ctype": "~1.8"              },              "type": "library",              "extra": { @@ -1692,29 +1753,30 @@              ],              "description": "Symfony Yaml Component",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-07-26 09:03:18"          },          {              "name": "twig/twig", -            "version": "v1.35.0", +            "version": "v1.35.4",              "source": {                  "type": "git",                  "url": "https://github.com/twigphp/Twig.git", -                "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f" +                "reference": "7e081e98378a1e78c29cc9eba4aefa5d78a05d2a"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/twigphp/Twig/zipball/daa657073e55b0a78cce8fdd22682fddecc6385f", -                "reference": "daa657073e55b0a78cce8fdd22682fddecc6385f", +                "url": "https://api.github.com/repos/twigphp/Twig/zipball/7e081e98378a1e78c29cc9eba4aefa5d78a05d2a", +                "reference": "7e081e98378a1e78c29cc9eba4aefa5d78a05d2a",                  "shasum": ""              },              "require": { -                "php": ">=5.3.3" +                "php": ">=5.3.3", +                "symfony/polyfill-ctype": "^1.8"              },              "require-dev": {                  "psr/container": "^1.0", -                "symfony/debug": "~2.7", -                "symfony/phpunit-bridge": "~3.3@dev" +                "symfony/debug": "^2.7", +                "symfony/phpunit-bridge": "^3.3"              },              "type": "library",              "extra": { @@ -1748,16 +1810,16 @@                  },                  {                      "name": "Twig Team", -                    "homepage": "http://twig.sensiolabs.org/contributors", +                    "homepage": "https://twig.symfony.com/contributors",                      "role": "Contributors"                  }              ],              "description": "Twig, the flexible, fast, and secure template language for PHP", -            "homepage": "http://twig.sensiolabs.org", +            "homepage": "https://twig.symfony.com",              "keywords": [                  "templating"              ], -            "time": "2017-09-27 18:06:46" +            "time": "2018-07-13 07:12:17"          },          {              "name": "zendframework/zend-code", @@ -2299,33 +2361,33 @@          },          {              "name": "phpspec/prophecy", -            "version": "1.7.5", +            "version": "1.8.0",              "source": {                  "type": "git",                  "url": "https://github.com/phpspec/prophecy.git", -                "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" +                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", -                "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", +                "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", +                "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",                  "shasum": ""              },              "require": {                  "doctrine/instantiator": "^1.0.2",                  "php": "^5.3|^7.0",                  "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", -                "sebastian/comparator": "^1.1|^2.0", +                "sebastian/comparator": "^1.1|^2.0|^3.0",                  "sebastian/recursion-context": "^1.0|^2.0|^3.0"              },              "require-dev": {                  "phpspec/phpspec": "^2.5|^3.2", -                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" +                "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"              },              "type": "library",              "extra": {                  "branch-alias": { -                    "dev-master": "1.7.x-dev" +                    "dev-master": "1.8.x-dev"                  }              },              "autoload": { @@ -2358,7 +2420,7 @@                  "spy",                  "stub"              ], -            "time": "2018-02-19 10:16:54" +            "time": "2018-08-05 17:53:17"          },          {              "name": "phpunit/dbunit", @@ -3352,16 +3414,16 @@          },          {              "name": "symfony/browser-kit", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/browser-kit.git", -                "reference": "e49a78bcf09ba2e6d03e63e80211f889c037add5" +                "reference": "fe44362c97307e7935996cb09d320fcc22619656"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/e49a78bcf09ba2e6d03e63e80211f889c037add5", -                "reference": "e49a78bcf09ba2e6d03e63e80211f889c037add5", +                "url": "https://api.github.com/repos/symfony/browser-kit/zipball/fe44362c97307e7935996cb09d320fcc22619656", +                "reference": "fe44362c97307e7935996cb09d320fcc22619656",                  "shasum": ""              },              "require": { @@ -3405,20 +3467,20 @@              ],              "description": "Symfony BrowserKit Component",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-07-26 09:03:18"          },          {              "name": "symfony/css-selector", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/css-selector.git", -                "reference": "c5b39674eacd34adedbef78227c57109caa9e318" +                "reference": "294611f3a0d265bcf049e2da62cb4f712e3ed927"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/css-selector/zipball/c5b39674eacd34adedbef78227c57109caa9e318", -                "reference": "c5b39674eacd34adedbef78227c57109caa9e318", +                "url": "https://api.github.com/repos/symfony/css-selector/zipball/294611f3a0d265bcf049e2da62cb4f712e3ed927", +                "reference": "294611f3a0d265bcf049e2da62cb4f712e3ed927",                  "shasum": ""              },              "require": { @@ -3458,24 +3520,25 @@              ],              "description": "Symfony CssSelector Component",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-07-26 09:03:18"          },          {              "name": "symfony/dom-crawler", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/dom-crawler.git", -                "reference": "31ff8f1d7a3de4b43b35ff821e6e223d81a8988b" +                "reference": "2fd6513f2dd3b08446da420070084db376c0134c"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/31ff8f1d7a3de4b43b35ff821e6e223d81a8988b", -                "reference": "31ff8f1d7a3de4b43b35ff821e6e223d81a8988b", +                "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2fd6513f2dd3b08446da420070084db376c0134c", +                "reference": "2fd6513f2dd3b08446da420070084db376c0134c",                  "shasum": ""              },              "require": {                  "php": ">=5.3.9", +                "symfony/polyfill-ctype": "~1.8",                  "symfony/polyfill-mbstring": "~1.0"              },              "require-dev": { @@ -3514,20 +3577,20 @@              ],              "description": "Symfony DomCrawler Component",              "homepage": "https://symfony.com", -            "time": "2018-01-03 07:36:31" +            "time": "2018-07-24 10:05:38"          },          {              "name": "symfony/process", -            "version": "v2.8.34", +            "version": "v2.8.45",              "source": {                  "type": "git",                  "url": "https://github.com/symfony/process.git", -                "reference": "905efe90024caa75a2fc93f54e14b26f2a099d96" +                "reference": "4be278e19064c3492095de50c9e375caae569ae1"              },              "dist": {                  "type": "zip", -                "url": "https://api.github.com/repos/symfony/process/zipball/905efe90024caa75a2fc93f54e14b26f2a099d96", -                "reference": "905efe90024caa75a2fc93f54e14b26f2a099d96", +                "url": "https://api.github.com/repos/symfony/process/zipball/4be278e19064c3492095de50c9e375caae569ae1", +                "reference": "4be278e19064c3492095de50c9e375caae569ae1",                  "shasum": ""              },              "require": { @@ -3563,7 +3626,7 @@              ],              "description": "Symfony Process Component",              "homepage": "https://symfony.com", -            "time": "2018-01-29 08:54:45" +            "time": "2018-08-03 09:45:57"          }      ],      "aliases": [], diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index eee4f3efcc..b5c9790a45 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -50,6 +50,8 @@  <ol>  	<li><a href="#changelog">Changelog</a>  	<ul> +		<li><a href="#v323rc2">Changes since 3.2.3-RC2</a></li> +		<li><a href="#v323rc1">Changes since 3.2.3-RC1</a></li>  		<li><a href="#v322">Changes since 3.2.2</a></li>  		<li><a href="#v321">Changes since 3.2.1</a></li>  		<li><a href="#v320">Changes since 3.2.0</a></li> @@ -129,6 +131,39 @@  		<div class="inner">  		<div class="content"> +			<a name="v323rc2"></a><h3>Changes since 3.2.3-RC2</h3> +			<h4>Bug</h4> +			<ul> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15504">PHPBB3-15504</a>] - phpBB Debug warning in 3.2.2</li> +			</ul> +			<h4>Improvement</h4> +			<ul> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15740">PHPBB3-15740</a>] - Terms & Privavy hardcoded</li> +			</ul> + +			<a name="v323rc1"></a><h3>Changes since 3.2.3-RC1</h3> +			<h4>Bug</h4> +			<ul> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11847">PHPBB3-11847</a>] - auth_provider_oauth migration must depend on at least one migration that ensures the module tables exist as expected</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15548">PHPBB3-15548</a>] - Dead link in ACP_COOKIE_SETTINGS_EXPLAIN language entry</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15586">PHPBB3-15586</a>] - When creating a module without the modes array a missing 'module_langname' index is accessed</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15613">PHPBB3-15613</a>] - Notification dropdown said to be not RTL compliant</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15627">PHPBB3-15627</a>] - Improve wording of YES_ACCURATE_PM_BUTTON + EXPLAIN</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15678">PHPBB3-15678</a>] - PHP warning in filesystem.php</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15731">PHPBB3-15731</a>] - Fix acp_search language parameters when deleting index</li> +			</ul> +			<h4>Improvement</h4> +			<ul> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15630">PHPBB3-15630</a>] - Change <b> to <strong> </li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15633">PHPBB3-15633</a>] - Remove extra space in GROUP_MAX_RECIPIENTS_EXPLAIN</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15657">PHPBB3-15657</a>] - Add core.mcp_queue_get_posts_for_posts_query_before and core.mcp_queue_get_posts_modify_post_row</li> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15676">PHPBB3-15676</a>] - Display privacy policy & terms of use more prominently</li> +			</ul> +			<h4>Task</h4> +			<ul> +				<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15677">PHPBB3-15677</a>] - Updated dependencies for 3.2.3-RC2</li> +			</ul> +  			<a name="v322"></a><h3>Changes since 3.2.2</h3>  			<h4>Bug</h4>  			<ul> diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index f2b87ce7f1..6672353296 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -1707,6 +1707,13 @@ posting_poll_body_options_after  * Since: 3.1.4-RC1  * Purpose: Add content after the poll options on creating a poll +posting_preview_content_after +=== +* Locations: +    + styles/prosilver/template/posting_preview.html +* Since: 3.2.4-RC1 +* Purpose: Add content after the message content preview +  posting_preview_poll_after  ===  * Locations: @@ -1714,6 +1721,13 @@ posting_preview_poll_after  * Since: 3.1.7-RC1  * Purpose: Add content after the poll preview block +posting_topic_review_row_content_after +=== +* Locations: +    + styles/prosilver/template/posting_topic_review.html +* Since: 3.2.4-RC1 +* Purpose: Add content after the message content in topic review +  posting_topic_review_row_post_details_after  ===  * Locations: @@ -1875,6 +1889,13 @@ search_body_search_query_prepend  * Since: 3.1.7-RC1  * Purpose: Put content at the top of the search query fields set +search_results_content_after +=== +* Locations: +    + styles/prosilver/template/search_results.html +* Since: 3.2.4-RC1 +* Purpose: Add content after the message content in search results +  search_results_header_after  ===  * Locations: @@ -2653,6 +2674,13 @@ viewtopic_body_postrow_back2top_prepend  * Since: 3.1.8-RC1  * Purpose: Add content to the post's bottom directly before the back to top link  +viewtopic_body_postrow_content_after +=== +* Locations: +    + styles/prosilver/template/viewtopic_body.html +* Since: 3.2.4-RC1 +* Purpose: Add content after the message content in topics views +  viewtopic_body_postrow_custom_fields_after  ===  * Locations: diff --git a/phpBB/includes/acp/acp_attachments.php b/phpBB/includes/acp/acp_attachments.php index dc4eb66cf8..6c2df8d999 100644 --- a/phpBB/includes/acp/acp_attachments.php +++ b/phpBB/includes/acp/acp_attachments.php @@ -1270,7 +1270,7 @@ class acp_attachments  					$row['extension'] = strtolower(trim((string) $row['extension']));  					$comment = ($row['attach_comment'] && !$row['in_message']) ? str_replace(array("\n", "\r"), array('<br />', "\n"), $row['attach_comment']) : ''; -					$display_cat = $extensions[$row['extension']]['display_cat']; +					$display_cat = isset($extensions[$row['extension']]['display_cat']) ? $extensions[$row['extension']]['display_cat'] : ATTACHMENT_CATEGORY_NONE;  					$l_downloaded_viewed = ($display_cat == ATTACHMENT_CATEGORY_NONE) ? 'DOWNLOAD_COUNTS' : 'VIEWED_COUNTS';  					$template->assign_block_vars('attachments', array( diff --git a/phpBB/includes/acp/acp_bbcodes.php b/phpBB/includes/acp/acp_bbcodes.php index 2634ae1874..1f7374a07f 100644 --- a/phpBB/includes/acp/acp_bbcodes.php +++ b/phpBB/includes/acp/acp_bbcodes.php @@ -295,6 +295,22 @@ class acp_bbcodes  					$phpbb_log->add('admin', $user->data['user_id'], $user->ip, $log_action, false, array($data['bbcode_tag'])); +					/** +					* Event after a BBCode has been added or updated +					* +					* @event core.acp_bbcodes_modify_create_after +					* @var	string	action		Type of the action: modify|create +					* @var	int		bbcode_id	The id of the added or updated bbcode +					* @var	array	sql_ary		Array with bbcode data (read only) +					* @since 3.2.4-RC1 +					*/ +					$vars = array( +						'action', +						'bbcode_id', +						'sql_ary', +					); +					extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_modify_create_after', compact($vars))); +  					trigger_error($user->lang[$lang] . adm_back_link($this->u_action));  				}  				else @@ -325,10 +341,28 @@ class acp_bbcodes  				{  					if (confirm_box(true))  					{ +						$bbcode_tag = $row['bbcode_tag']; +  						$db->sql_query('DELETE FROM ' . BBCODES_TABLE . " WHERE bbcode_id = $bbcode_id");  						$cache->destroy('sql', BBCODES_TABLE);  						$phpbb_container->get('text_formatter.cache')->invalidate(); -						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_BBCODE_DELETE', false, array($row['bbcode_tag'])); +						$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_BBCODE_DELETE', false, array($bbcode_tag)); + +						/** +						* Event after a BBCode has been deleted +						* +						* @event core.acp_bbcodes_delete_after +						* @var	string	action		Type of the action: delete +						* @var	int		bbcode_id	The id of the deleted bbcode +						* @var	string	bbcode_tag	The tag of the deleted bbcode +						* @since 3.2.4-RC1 +						*/ +						$vars = array( +							'action', +							'bbcode_id', +							'bbcode_tag', +						); +						extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_delete_after', compact($vars)));  						if ($request->is_ajax())  						{ diff --git a/phpBB/includes/acp/acp_search.php b/phpBB/includes/acp/acp_search.php index 8cad7c927c..538a28a926 100644 --- a/phpBB/includes/acp/acp_search.php +++ b/phpBB/includes/acp/acp_search.php @@ -349,7 +349,7 @@ class acp_search  							$totaltime = microtime(true) - $starttime;  							$rows_per_second = $row_count / $totaltime;  							meta_refresh(1, append_sid($this->u_action . '&action=delete&skip_rows=' . $post_counter . '&hash=' . generate_link_hash('acp_search'))); -							trigger_error($user->lang('SEARCH_INDEX_DELETE_REDIRECT', (int) $row_count, $post_counter, $rows_per_second)); +							trigger_error($user->lang('SEARCH_INDEX_DELETE_REDIRECT', (int) $row_count, $post_counter) . $user->lang('SEARCH_INDEX_DELETE_REDIRECT_RATE', $rows_per_second));  						}  					} diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 245d263720..f7be2d2760 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -461,9 +461,11 @@ function user_delete($mode, $user_ids, $retain_username = true)  	* @var	array	user_ids	IDs of the deleted user  	* @var	mixed	retain_username	True if username should be retained  	*				or false if not +	* @var	array	user_rows	Array containing data of the deleted users  	* @since 3.1.0-a1 +	* @changed 3.2.4-RC1 Added user_rows  	*/ -	$vars = array('mode', 'user_ids', 'retain_username'); +	$vars = array('mode', 'user_ids', 'retain_username', 'user_rows');  	extract($phpbb_dispatcher->trigger_event('core.delete_user_before', compact($vars)));  	// Before we begin, we will remove the reports the user issued. diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index bf18e76568..f35812b90a 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -48,7 +48,6 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	$to_group_id	= $request->variable('g', 0);  	$msg_id			= $request->variable('p', 0);  	$draft_id		= $request->variable('d', 0); -	$lastclick		= $request->variable('lastclick', 0);  	// Reply to all triggered (quote/reply)  	$reply_to_all	= $request->variable('reply_to_all', 0); @@ -80,7 +79,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())  	$group_helper = $phpbb_container->get('group_helper');  	// Was cancel pressed? If so then redirect to the appropriate page -	if ($cancel || ($current_time - $lastclick < 2 && $submit)) +	if ($cancel)  	{  		if ($msg_id)  		{ @@ -1174,8 +1173,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())  		break;  	} -	$s_hidden_fields = '<input type="hidden" name="lastclick" value="' . $current_time . '" />'; -	$s_hidden_fields .= (isset($check_value)) ? '<input type="hidden" name="status_switch" value="' . $check_value . '" />' : ''; +	$s_hidden_fields = (isset($check_value)) ? '<input type="hidden" name="status_switch" value="' . $check_value . '" />' : '';  	$s_hidden_fields .= ($draft_id || isset($_REQUEST['draft_loaded'])) ? '<input type="hidden" name="draft_loaded" value="' . ((isset($_REQUEST['draft_loaded'])) ? $request->variable('draft_loaded', 0) : $draft_id) . '" />' : '';  	$form_enctype = (@ini_get('file_uploads') == '0' || strtolower(@ini_get('file_uploads')) == 'off' || !$config['allow_pm_attach'] || !$auth->acl_get('u_pm_attach')) ? '' : ' enctype="multipart/form-data"'; diff --git a/phpBB/install/phpbbcli.php b/phpBB/install/phpbbcli.php index 611e4ec53b..7d8311ca0b 100755 --- a/phpBB/install/phpbbcli.php +++ b/phpBB/install/phpbbcli.php @@ -23,7 +23,7 @@ if (php_sapi_name() !== 'cli')  define('IN_PHPBB', true);  define('IN_INSTALL', true);  define('PHPBB_ENVIRONMENT', 'production'); -define('PHPBB_VERSION', '3.2.3-RC1'); +define('PHPBB_VERSION', '3.2.3');  $phpbb_root_path = __DIR__ . '/../';  $phpEx = substr(strrchr(__FILE__, '.'), 1); diff --git a/phpBB/language/en/acp/search.php b/phpBB/language/en/acp/search.php index c52b71c121..443dbb7fb7 100644 --- a/phpBB/language/en/acp/search.php +++ b/phpBB/language/en/acp/search.php @@ -116,7 +116,10 @@ $lang = array_merge($lang, array(  		2	=> 'The current rate of indexing is approximately %1$.1f posts per second.<br />Indexing in progress…',  	),  	'SEARCH_INDEX_DELETE_REDIRECT'			=> array( -		2	=> 'All posts up to post id %2$d have been removed from the search index.<br />Deleting in progress…', +		2	=> 'All posts up to post id %2$d have been removed from the search index, of which %1$d posts were within this step.<br />', +	), +	'SEARCH_INDEX_DELETE_REDIRECT_RATE'		=> array( +		2	=> 'The current rate of deleting is approximately %1$.1f posts per second.<br />Deleting in progress…',  	),  	'SEARCH_INDEX_CREATED'					=> 'Successfully indexed all posts in the board database.',  	'SEARCH_INDEX_REMOVED'					=> 'Successfully deleted the search index for this backend.', diff --git a/phpBB/phpbb/cache/driver/apcu.php b/phpBB/phpbb/cache/driver/apcu.php index 40192e4026..c96cf0de57 100644 --- a/phpBB/phpbb/cache/driver/apcu.php +++ b/phpBB/phpbb/cache/driver/apcu.php @@ -25,7 +25,11 @@ class apcu extends \phpbb\cache\driver\memory  	*/  	function purge()  	{ -		apcu_clear_cache(); +		/* +		* Use an iterator to selectively delete our cache entries without disturbing +		* any other cache users (e.g. other phpBB boards hosted on this server) +		*/ +		apcu_delete(new \APCUIterator('#^' . $this->key_prefix . '#'));  		parent::purge();  	} diff --git a/phpBB/phpbb/cache/driver/memory.php b/phpBB/phpbb/cache/driver/memory.php index 052f40c243..eba9549877 100644 --- a/phpBB/phpbb/cache/driver/memory.php +++ b/phpBB/phpbb/cache/driver/memory.php @@ -51,10 +51,11 @@ abstract class memory extends \phpbb\cache\driver\base  	function load()  	{  		// grab the global cache -		$this->vars = $this->_read('global'); +		$data = $this->_read('global'); -		if ($this->vars !== false) +		if ($data !== false)  		{ +			$this->vars = $data;  			return true;  		} diff --git a/phpBB/phpbb/db/driver/mssqlnative.php b/phpBB/phpbb/db/driver/mssqlnative.php index de81a6a0c8..a4dcac5966 100644 --- a/phpBB/phpbb/db/driver/mssqlnative.php +++ b/phpBB/phpbb/db/driver/mssqlnative.php @@ -268,7 +268,7 @@ class mssqlnative extends \phpbb\db\driver\mssql_base  				unset($row['line2'], $row['line3']);  			}  		} -		return (count($row)) ? $row : false; +		return ($row !== null) ? $row : false;  	}  	/** diff --git a/phpBB/phpbb/db/migration/data/v310/auth_provider_oauth.php b/phpBB/phpbb/db/migration/data/v310/auth_provider_oauth.php index 508a31fba9..1e2024a071 100644 --- a/phpBB/phpbb/db/migration/data/v310/auth_provider_oauth.php +++ b/phpBB/phpbb/db/migration/data/v310/auth_provider_oauth.php @@ -17,7 +17,12 @@ class auth_provider_oauth extends \phpbb\db\migration\migration  {  	public function effectively_installed()  	{ -		return $this->db_tools->sql_table_exists($this->table_prefix . 'auth_provider_oauth'); +		return $this->db_tools->sql_table_exists($this->table_prefix . 'oauth_tokens'); +	} + +	static public function depends_on() +	{ +		return array('\phpbb\db\migration\data\v30x\release_3_0_0');  	}  	public function update_schema() diff --git a/phpBB/phpbb/db/migration/data/v320/remove_outdated_media.php b/phpBB/phpbb/db/migration/data/v320/remove_outdated_media.php index 98b1c2d039..88fe59ccc9 100644 --- a/phpBB/phpbb/db/migration/data/v320/remove_outdated_media.php +++ b/phpBB/phpbb/db/migration/data/v320/remove_outdated_media.php @@ -85,13 +85,11 @@ class remove_outdated_media extends \phpbb\db\migration\migration  				WHERE ' . $this->db->sql_in_set('group_id', $group_ids);  		} -		$result = $this->db->sql_query($sql); -		$this->db->sql_freeresult($result); +		$this->db->sql_query($sql);  		// delete the now empty, outdated media extension groups  		$sql = 'DELETE FROM ' . EXTENSION_GROUPS_TABLE . '  			WHERE ' . $this->db->sql_in_set('group_id', $group_ids); -		$result = $this->db->sql_query($sql); -		$this->db->sql_freeresult($result); +		$this->db->sql_query($sql);  	}  } diff --git a/phpBB/phpbb/db/migration/data/v32x/v323.php b/phpBB/phpbb/db/migration/data/v32x/v323.php new file mode 100644 index 0000000000..1ec28ceb37 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v32x/v323.php @@ -0,0 +1,37 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v32x; + +class v323 extends \phpbb\db\migration\migration +{ +	public function effectively_installed() +	{ +		return phpbb_version_compare($this->config['version'], '3.2.3', '>='); +	} + +	static public function depends_on() +	{ +		return array( +			'\phpbb\db\migration\data\v32x\v323rc2', +		); + +	} + +	public function update_data() +	{ +		return array( +			array('config.update', array('version', '3.2.3')), +		); +	} +} diff --git a/phpBB/phpbb/db/migration/data/v32x/v323rc2.php b/phpBB/phpbb/db/migration/data/v32x/v323rc2.php new file mode 100644 index 0000000000..32235ee067 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v32x/v323rc2.php @@ -0,0 +1,36 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v32x; + +class v323rc2 extends \phpbb\db\migration\migration +{ +	public function effectively_installed() +	{ +		return phpbb_version_compare($this->config['version'], '3.2.3-RC2', '>='); +	} + +	static public function depends_on() +	{ +		return array( +			'\phpbb\db\migration\data\v32x\v323rc1', +		); +	} + +	public function update_data() +	{ +		return array( +			array('config.update', array('version', '3.2.3-RC2')), +		); +	} +} diff --git a/phpBB/phpbb/notification/method/messenger_base.php b/phpBB/phpbb/notification/method/messenger_base.php index 32e79aa936..f82017b70e 100644 --- a/phpBB/phpbb/notification/method/messenger_base.php +++ b/phpBB/phpbb/notification/method/messenger_base.php @@ -87,7 +87,7 @@ abstract class messenger_base extends \phpbb\notification\method\base  		$banned_users = phpbb_get_banned_user_ids($user_ids);  		// Load all the users we need -		$this->user_loader->load_users($user_ids); +		$this->user_loader->load_users(array_diff($user_ids, $banned_users), array(USER_IGNORE));  		// Load the messenger  		if (!class_exists('messenger')) @@ -107,7 +107,7 @@ abstract class messenger_base extends \phpbb\notification\method\base  			$user = $this->user_loader->get_user($notification->user_id); -			if ($user['user_type'] == USER_IGNORE || ($user['user_type'] == USER_INACTIVE && $user['user_inactive_reason'] == INACTIVE_MANUAL) || in_array($notification->user_id, $banned_users)) +			if ($user['user_type'] == USER_INACTIVE && $user['user_inactive_reason'] == INACTIVE_MANUAL)  			{  				continue;  			} diff --git a/phpBB/phpbb/user_loader.php b/phpBB/phpbb/user_loader.php index 294f5208d5..9297450f3e 100644 --- a/phpBB/phpbb/user_loader.php +++ b/phpBB/phpbb/user_loader.php @@ -64,8 +64,9 @@ class user_loader  	* Load user helper  	*  	* @param array $user_ids +	* @param array $ignore_types user types to ignore  	*/ -	public function load_users(array $user_ids) +	public function load_users(array $user_ids, array $ignore_types = array())  	{  		$user_ids[] = ANONYMOUS; @@ -79,7 +80,8 @@ class user_loader  		{  			$sql = 'SELECT *  				FROM ' . $this->users_table . ' -				WHERE ' . $this->db->sql_in_set('user_id', $user_ids); +				WHERE ' . $this->db->sql_in_set('user_id', $user_ids) . ' +					AND ' . $this->db->sql_in_set('user_type', $ignore_types, true, true);  			$result = $this->db->sql_query($sql);  			while ($row = $this->db->sql_fetchrow($result)) diff --git a/phpBB/posting.php b/phpBB/posting.php index 3530bb5048..d97a22209f 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -33,7 +33,6 @@ $post_id	= $request->variable('p', 0);  $topic_id	= $request->variable('t', 0);  $forum_id	= $request->variable('f', 0);  $draft_id	= $request->variable('d', 0); -$lastclick	= $request->variable('lastclick', 0);  $preview	= (isset($_POST['preview'])) ? true : false;  $save		= (isset($_POST['save'])) ? true : false; @@ -68,7 +67,6 @@ $current_time = time();  * @var	int		topic_id	ID of the topic  * @var	int		forum_id	ID of the forum  * @var	int		draft_id	ID of the draft -* @var	int		lastclick	Timestamp of when the form was last loaded  * @var	bool	submit		Whether or not the form has been submitted  * @var	bool	preview		Whether or not the post is being previewed  * @var	bool	save		Whether or not a draft is being saved @@ -85,13 +83,13 @@ $current_time = time();  *							language keys.  * @since 3.1.0-a1  * @changed 3.1.2-RC1			Removed 'delete' var as it does not exist +* @changed 3.2.4-RC1		Remove unused 'lastclick' var  */  $vars = array(  	'post_id',  	'topic_id',  	'forum_id',  	'draft_id', -	'lastclick',  	'submit',  	'preview',  	'save', @@ -354,7 +352,6 @@ switch ($mode)  * @var	int		topic_id	ID of the topic  * @var	int		forum_id	ID of the forum  * @var	int		draft_id	ID of the draft -* @var	int		lastclick	Timestamp of when the form was last loaded  * @var	bool	submit		Whether or not the form has been submitted  * @var	bool	preview		Whether or not the post is being previewed  * @var	bool	save		Whether or not a draft is being saved @@ -370,13 +367,13 @@ switch ($mode)  * @var	array	post_data	All post data from database  * @since 3.1.3-RC1  * @changed 3.1.10-RC1 Added post_data +* @changed 3.2.4-RC1 		Remove unused 'lastclick' var  */  $vars = array(  	'post_id',  	'topic_id',  	'forum_id',  	'draft_id', -	'lastclick',  	'submit',  	'preview',  	'save', @@ -1762,7 +1759,6 @@ if ($config['enable_post_confirm'] && !$user->data['is_registered'] && (isset($c  }  $s_hidden_fields = ($mode == 'reply' || $mode == 'quote') ? '<input type="hidden" name="topic_cur_post_id" value="' . $post_data['topic_last_post_id'] . '" />' : ''; -$s_hidden_fields .= '<input type="hidden" name="lastclick" value="' . $current_time . '" />';  $s_hidden_fields .= ($draft_id || isset($_REQUEST['draft_loaded'])) ? '<input type="hidden" name="draft_loaded" value="' . $request->variable('draft_loaded', $draft_id) . '" />' : '';  if ($mode == 'edit') diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index 5bad7baeb1..bdff1a0c05 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -19,11 +19,11 @@  		<!-- EVENT overall_footer_copyright_append -->  		<p class="footer-row">  			<a class="footer-link" href="{{ U_PRIVACY }}" title="{{ lang('PRIVACY_LINK') }}" role="menuitem"> -				<span class="footer-link-text">Privacy</span> +				<span class="footer-link-text">{{ lang('PRIVACY_LINK') }}</span>  			</a>  			|  			<a class="footer-link" href="{{ U_TERMS_USE }}" title="{{ lang('TERMS_LINK') }}" role="menuitem"> -				<span class="footer-link-text">Terms</span> +				<span class="footer-link-text">{{ lang('TERMS_LINK') }}</span>  			</a>  		</p>  		<!-- IF DEBUG_OUTPUT --> diff --git a/phpBB/styles/prosilver/template/posting_preview.html b/phpBB/styles/prosilver/template/posting_preview.html index aac117c090..781d0de06b 100644 --- a/phpBB/styles/prosilver/template/posting_preview.html +++ b/phpBB/styles/prosilver/template/posting_preview.html @@ -31,6 +31,8 @@  		<div class="content">{PREVIEW_MESSAGE}</div> +		<!-- EVENT posting_preview_content_after --> +  		<!-- IF .attachment -->  		<dl class="attachbox">  			<dt>{L_ATTACHMENTS}</dt> diff --git a/phpBB/styles/prosilver/template/posting_topic_review.html b/phpBB/styles/prosilver/template/posting_topic_review.html index 55739070ae..93c4484ff8 100644 --- a/phpBB/styles/prosilver/template/posting_topic_review.html +++ b/phpBB/styles/prosilver/template/posting_topic_review.html @@ -60,6 +60,8 @@  			<div class="content">{topic_review_row.MESSAGE}</div> +			<!-- EVENT posting_topic_review_row_content_after --> +  			<!-- IF topic_review_row.S_HAS_ATTACHMENTS -->  				<dl class="attachbox">  					<dt>{L_ATTACHMENTS}</dt> diff --git a/phpBB/styles/prosilver/template/search_results.html b/phpBB/styles/prosilver/template/search_results.html index 6bc5c72a87..b6755e3d4a 100644 --- a/phpBB/styles/prosilver/template/search_results.html +++ b/phpBB/styles/prosilver/template/search_results.html @@ -194,6 +194,7 @@  		<div class="postbody">  			<h3><a href="{searchresults.U_VIEW_POST}">{searchresults.POST_SUBJECT}</a></h3>  			<div class="content">{searchresults.MESSAGE}</div> +			<!-- EVENT search_results_content_after -->  		</div>  	<!-- ENDIF --> diff --git a/phpBB/styles/prosilver/template/viewtopic_body.html b/phpBB/styles/prosilver/template/viewtopic_body.html index a9136e1810..8d7e26f099 100644 --- a/phpBB/styles/prosilver/template/viewtopic_body.html +++ b/phpBB/styles/prosilver/template/viewtopic_body.html @@ -326,6 +326,8 @@  			<div class="content">{postrow.MESSAGE}</div> +			<!-- EVENT viewtopic_body_postrow_content_after --> +  			<!-- IF postrow.S_HAS_ATTACHMENTS -->  				<dl class="attachbox">  					<dt> diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 3c25c3b037..79852330d9 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -2249,7 +2249,6 @@ if ($s_can_vote || $s_quick_reply)  		$qr_hidden_fields = array(  			'topic_cur_post_id'		=> (int) $topic_data['topic_last_post_id'], -			'lastclick'				=> (int) time(),  			'topic_id'				=> (int) $topic_data['topic_id'],  			'forum_id'				=> (int) $forum_id,  		); diff --git a/tests/cache/apcu_driver_test.php b/tests/cache/apcu_driver_test.php index 9de1d82a15..57f640c313 100644 --- a/tests/cache/apcu_driver_test.php +++ b/tests/cache/apcu_driver_test.php @@ -49,10 +49,27 @@ class phpbb_cache_apcu_driver_test extends phpbb_cache_common_test_case  	protected function setUp()  	{ +		global $phpbb_container, $phpbb_root_path; +  		parent::setUp(); +		$phpbb_container = new phpbb_mock_container_builder(); +		$phpbb_container->setParameter('core.cache_dir', $phpbb_root_path . 'cache/' . PHPBB_ENVIRONMENT . '/'); +  		$this->driver = new \phpbb\cache\driver\apcu;  		$this->driver->purge();  	} + +	public function test_purge() +	{ +		/* add a cache entry which does not match our key */ +		$foreign_key = 'test_' . $this->driver->key_prefix . 'test'; +		$this->assertSame(true, apcu_store($foreign_key, 0, 600)); +		$this->assertSame(true, apcu_exists($foreign_key)); + +		parent::test_purge(); + +		$this->assertSame(true, apcu_exists($foreign_key)); +	}  } diff --git a/tests/template/template_test.php b/tests/template/template_test.php index 0f761abc76..727f35e9d2 100644 --- a/tests/template/template_test.php +++ b/tests/template/template_test.php @@ -364,7 +364,7 @@ class phpbb_template_template_test extends phpbb_template_template_test_case  				array(),  				array(),  				array(), -				"Value'\n1 O'Clock\nValue\\x27\n1\\x20O\\x27Clock", +				"Value'\n1 O'Clock\nValue\\u0027\n1\\u0020O\\u0027Clock",  				array('VARIABLE' => "Value'", '1_VARIABLE' => "1 O'Clock"),  			),  			array( diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index e1daa4558a..12a296a4bf 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -1176,10 +1176,6 @@ class phpbb_functional_test_case extends phpbb_test_case  			}  		} -		// Bypass time restriction that said that if the lastclick time (i.e. time when the form was opened) -		// is not at least 2 seconds before submission, cancel the form -		$form_data['lastclick'] = 0; -  		// I use a request because the form submission method does not allow you to send data that is not  		// contained in one of the actual form fields that the browser sees (i.e. it ignores "hidden" inputs)  		// Instead, I send it as a request with the submit button "post" set to true. | 
