1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-08 23:31:04 +02:00

Compare commits

...

112 Commits

Author SHA1 Message Date
Marc Alexander
cd36a68645 [prep-release-3.3.9] Update changelog for 3.3.9-RC1 2022-10-22 20:56:04 +02:00
Marc Alexander
5225ac8a9a [prep-release-3.3.9] Add migration for 3.3.9-RC1 2022-10-22 20:55:14 +02:00
Marc Alexander
aaaef71b60 [prep-release-3.3.9] Update version numbers to 3.3.9 2022-10-22 20:55:12 +02:00
Marc Alexander
1fe8bbf47a [prep-release-3.3.9] Update version numbers to 3.3.9-RC1 2022-10-22 20:55:12 +02:00
Marc Alexander
67c41633a2 Merge pull request #6422 from marc1706/ticket/17050
[ticket/17050] Remove trailing slash from generated css includes
2022-10-22 11:34:54 +02:00
Marc Alexander
92cebdd624 Merge pull request #6421 from marc1706/ticket/17051
[ticket/17051] Fallback to default values for possible undefined user data
2022-10-22 11:21:46 +02:00
Marc Alexander
7017c73156 [ticket/17050] Remove trailing slash from generated css includes
PHPBB3-17050
2022-10-21 21:40:44 +02:00
Marc Alexander
2e025be53a [ticket/17051] Fallback to default values for possible undefined user data
PHPBB3-17051
2022-10-21 20:18:32 +02:00
Marc Alexander
2126738598 Merge pull request #6418 from marc1706/ticket/17048
[ticket/17048] Update composer dependencies for 3.3.9
2022-10-20 17:17:26 +02:00
Marc Alexander
99286b1fdd [ticket/17048] Update composer dependencies for 3.3.9
PHPBB3-17048
2022-10-15 23:29:12 +02:00
Marc Alexander
64717d0270 Merge pull request #6414 from imhunterand/patch-1
[ticket/17036] Fix failure to strip Authorization header on HTTP downgrade
2022-09-30 20:07:43 +02:00
ANDRI H.U
f197662653 [ticket/17036] Update guzzle and it's dependencies to latest version
PHPBB3-17036
2022-09-25 22:00:49 +02:00
Marc Alexander
e080a8533d Merge pull request #6415 from marc1706/ticket/17032
[ticket/17032] Prevent endlessly cycling to load user
2022-09-09 07:12:45 +02:00
Marc Alexander
f84e03f646 [ticket/17032] Prevent endlessly cycling to load user
PHPBB3-17032
2022-09-08 22:18:13 +02:00
Marc Alexander
7c02b58114 Merge pull request #6413 from rubencm/ticket/17030
[ticket/17030] Fix feed to return valid RFC-3339 dates
2022-08-26 21:46:53 +02:00
Marc Alexander
12256eabb6 Merge pull request #6412 from DaRk1V0iD/ticket/17026
[ticket/17026] Session viewonline not defined in Memberlist
2022-08-26 20:47:07 +02:00
Dark❶
9b1bae858f [ticket/17026] Session viewonline not defined in Memberlist
PHPBB3-17026
2022-08-26 10:55:20 +05:30
Ruben Calvo
db3c143b73 [ticket/17030] Fix feed to return valid RFC-3339 dates
PHPBB3-17030
2022-08-21 21:56:11 +02:00
Dark❶
ea19638f4e [ticket/17026] Session viewonline not defined in Memberlist
PHPBB3-17026
2022-08-12 20:40:52 +05:30
Marc Alexander
89b07af756 Merge pull request #6406 from Noxwizard/ticket/17003
[ticket/17003] Include topic icon on UCP front page
2022-07-28 20:11:19 +02:00
Marc Alexander
7275f9e7f1 [ticket/17003] Small code style adjustmens
PHPBB3-17003
2022-07-27 18:17:46 +02:00
Marc Alexander
8fbbaf97ab Merge pull request #6408 from Crizz0/ticket/17023
[ticket/17023] Adds PHP >=8.0  to composer require php version
2022-07-23 16:41:24 -04:00
Marc Alexander
b8a3d8f25d [ticket/17023] Update composer.lock as well
PHPBB3-17023
2022-07-22 20:16:11 -05:00
Christian Schnegelberger
495986ff5d [ticket/17023] Adds PHP >=8.0 to composer require php version
PHPBB3-17023
2022-07-19 17:47:53 +02:00
Marc Alexander
3ed3abb446 Merge pull request #6407 from Noxwizard/ticket/16917
[ticket/16917] Update phpbbcli.php's permissions in release archive
2022-07-16 19:02:52 -04:00
Marc Alexander
ca8c402796 Merge pull request #6405 from Noxwizard/ticket/16916
[ticket/16916] Include PHP version number in startup/install error
2022-07-16 18:47:56 -04:00
Marc Alexander
fafe250b0d Merge pull request #6404 from marc1706/ticket/17019
[ticket/17019] Treat removed youtube profile field as effectively installed
2022-07-16 18:44:56 -04:00
Marc Alexander
256ea96cd9 Merge pull request #6403 from marc1706/ticket/17006
[ticket/17006] Remove www. from server domain name example
2022-07-16 18:43:30 -04:00
Marc Alexander
5cdd22e058 Merge pull request #6402 from marc1706/ticket/16932
[ticket/16932] Ensure special characters are encoded for ASCII in emails
2022-07-16 18:39:02 -04:00
Patrick Webster
47e30a2e21 [ticket/16917] Update phpbbcli.php's permissions in release archive
For those employing cron on *nix, these will be the expected permissions.

PHPBB3-16917
2022-07-09 15:46:31 -05:00
Patrick Webster
040c2e9b78 [ticket/17003] Include topic icon on UCP front page
Prosilver already supports rendering topic icons on this view, but the backend
didn't populate the needed topicrow values.

PHPBB3-17003
2022-07-09 14:57:01 -05:00
Patrick Webster
2c661205e4 [ticket/16916] Include PHP version number in startup/install error
If the PHP version is too low, an error is displayed. This error does not
include the current PHP version number, which often becomes a debate with
users who believe they are running a supported version.

PHPBB3-16916
2022-07-04 21:12:43 -05:00
Marc Alexander
b5d2ff4074 [ticket/17019] Treat removed youtube profile field as effectively installed
PHPBB3-17019
2022-06-30 21:35:50 +02:00
Marc Alexander
b3d93a09f2 [ticket/17006] Remove www. from server domain name example
PHPBB3-17006
2022-06-28 21:49:01 +02:00
Marc Alexander
2f72950d2d Merge pull request #6401 from marc1706/ticket/17005
[ticket/17005] Add missing slash to li closing tag
2022-06-28 21:42:58 +02:00
Marc Alexander
064a96ec07 [ticket/16932] Ensure special characters are encoded for ASCII in emails
PHPBB3-16932
2022-06-27 22:36:25 +02:00
Marc Alexander
a8feaeafe8 [ticket/17005] Add missing slash to li closing tag
PHPBB3-17005
2022-06-27 21:00:58 +02:00
Marc Alexander
fc83f213d5 Merge branch 'prep-release-3.3.8' into 3.3.x 2022-06-26 20:28:13 +02:00
Marc Alexander
5e3dd4b55e [prep-release-3.3.8] Add migration for 3.3.8 2022-06-26 09:39:25 +02:00
Marc Alexander
53e5113893 [prep-release-3.3.8] Update version numbers to 3.3.8 2022-06-26 09:39:23 +02:00
Marc Alexander
f930f8821f [3.3.x] Update versions to 3.3.9-dev 2022-06-06 22:54:43 +02:00
Marc Alexander
b84b875cd2 Merge branch 'prep-release-3.3.8' into 3.3.x 2022-06-06 22:53:26 +02:00
Marc Alexander
bc4a787470 [prep-release-3.3.8] Update changelog for 3.3.8-RC1 2022-06-06 14:40:59 +02:00
Marc Alexander
c6ef628589 [prep-release-3.3.8] Add migration for 3.3.8-RC1 2022-06-06 14:40:31 +02:00
Marc Alexander
d4415d4ad8 [prep-release-3.3.8] Update version numbers to 3.3.8 2022-06-06 14:40:30 +02:00
Marc Alexander
2b92ff372b [prep-release-3.3.8] Update version numbers to 3.3.8-RC1 2022-06-06 14:40:29 +02:00
Marc Alexander
c410c9bc47 Merge pull request #6399 from marc1706/ticket/16987
[ticket/16987] Update composer dependencies to latest versions
2022-06-06 14:38:46 +02:00
Marc Alexander
52f625a88c [ticket/16987] Update composer dependencies to latest versions
PHPBB3-16987
2022-06-06 09:54:17 +02:00
Marc Alexander
feea7958f7 Merge pull request #6378 from hanakin/ticket/16978
[ticket/16978] add missing ul closeing tag
2022-06-06 09:45:44 +02:00
Marc Alexander
c61c130596 Merge pull request #6390 from marc1706/ticket/16988
[ticket/16988] Improve handling of appended branch info and security branches
2022-06-03 21:21:24 +02:00
Marc Alexander
59a95a3c35 Merge pull request #6396 from lionel-rowe/ticket/13859
[ticket/13859] Allow up-to-date format for Youtube profile field URLs
2022-05-02 20:49:59 +02:00
lionel-rowe
60af39b38c [ticket/13859] Reorder static & public in migration
PHPBB3-13859
2022-05-02 17:38:38 +02:00
Marc Alexander
8376012f9a Merge pull request #6393 from LukeWCS/3.3.x
[ticket/16990] Fix for the style template code in the post editor
2022-05-01 20:20:43 +02:00
lionel-rowe
dd6e110210 [ticket/13859] Allow up-to-date format for Youtube profile field URLs
Per the tracker issue:

> In 3.1 a youtube profilefield was added in which we can insert our youtube
> username to link to it.... There is just one major problem though...
>
> New youtube members no longer get an username. So I think we should decide on
> providing different ways to access their profile.

This PR will allow users to use any valid YouTube-domain URL, which allows for
all 3 formats (`/channel/...`, `/c/...`, and the now-legacy `/user/...`).

Per [YouTube's docs](https://support.google.com/youtube/answer/6180214?hl=en):

> ## Channel URL (ID-based)
> Example: youtube.com/channel/UCUZHFZ9jIKrLroW8LcyJEQQ
>
> This is the standard URL that YouTube channels use.
>
> ...
>
> ## Custom URL
> Example: youtube.com/c/YouTubeCreators
>
> A custom URL is a shorter, easy-to-remember URL that you can share with your
> audience.
>
> ...
>
> ## Legacy username URL
> Example: youtube.com/user/YouTube
>
> Depending on when your channel was created, it may have a username. Usernames
> are no longer required for channels today, but you can still use this URL to
> direct to your channel — even if your channel name has changed since you chose
> your username. Existing usernames can't be changed.

PHPBB3-13859
2022-05-01 14:54:39 +01:00
Marc Alexander
898075f0f8 Merge pull request #6391 from battye/ticket/16800
[ticket/16800] Fix 'No Posts' bug when no date format supplied
2022-04-30 23:02:10 +02:00
Marc Alexander
3308318524 Merge pull request #6377 from lionel-rowe/ticket/16981
[ticket/16981] Fix HTML-encoded emojis in email subject line
2022-04-30 22:27:37 +02:00
Marc Alexander
54c27e3e67 Merge pull request #6382 from marc1706/ticket/16967-3.3.x
[ticket/16967] Deprecate PHP in templates
2022-04-30 22:22:49 +02:00
Marc Alexander
54156dd9d8 Merge pull request #6358 from MichaIng/ticket/16959
[ticket/16959] Remove redundant URL parameters from notification mails
2022-04-30 22:21:51 +02:00
Marc Alexander
8084d977fb Merge pull request #6395 from kaileysnay/ticket/16991
[ticket/16991] Add events for bookmarks and subscribed topics in UCP
2022-04-30 21:56:06 +02:00
kaileysnay
997f1b92cf [ticket/16991] Add events for bookmarks and subscribed topics in UCP
PHPBB3-16991
2022-04-28 17:31:39 -04:00
kaileysnay
e1069bcbde [ticket/16991] Add events for bookmarks and subscribed topics in UCP
PHPBB3-16991
2022-04-28 17:31:39 -04:00
LukeWCS
9e22bc8691 [ticket/16990] Removed XHTML tag format
PHPBB3-16990
2022-04-27 23:18:52 +02:00
LukeWCS
751b0e2ede [ticket/16990] Fix for the style template code in the post editor
The code present in the prosilver style template causes the wrong
checkbox to be displayed in the post editor if the combination
`f_delete`:true and `f_softdelete`:false is active in the user
context. With this combination, this effectively prevents a forum
post from being deleted via the editor options.

Corrected the relevant section and switched to Twig syntax

PHPBB3-16990
2022-04-26 22:13:50 +02:00
battye
b9f7c3ff6e [ticket/16800] Fix 'No Posts' bug when no date format supplied
PHPBB3-16800
2022-04-17 18:03:48 +08:00
Marc Alexander
0d84769d66 [ticket/16988] Apply fixes suggested by shellcheck
PHPBB3-16988
2022-04-17 09:40:56 +02:00
Marc Alexander
cd9aea32b9 [ticket/16988] Improve handling of appended branch info and security branches
PHPBB3-16988
2022-04-17 09:35:12 +02:00
Marc Alexander
a12a6f52ae Merge pull request #6387 from marc1706/ticket/16987
[ticket/16987] Update composer and dependencies to latest versions
2022-04-16 22:20:23 +02:00
Marc Alexander
9739fabd68 Merge pull request #6385 from battye/ticket/16871
[ticket/16871] Do not allow negative forum and topic IDs in page_header
2022-04-15 23:48:28 +02:00
Marc Alexander
32ce101541 Merge pull request #6386 from battye/ticket/15947
[ticket/15947] Fix X out of 0 messages stored bug
2022-04-15 23:19:25 +02:00
Marc Alexander
89d2fcf5ed [ticket/16987] Move back to composer 2.2 for PHP 7.1 compatibility
PHPBB3-16987
2022-04-15 22:35:23 +02:00
Marc Alexander
5e10b02103 [ticket/16987] Update composer dependencies to latest versions
PHPBB3-16987
2022-04-15 22:23:55 +02:00
Marc Alexander
1ce11e39e1 [ticket/16987] Update composer to latest version
PHPBB3-16987
2022-04-15 22:22:55 +02:00
battye
aed2d00373 [ticket/15947] Fix X out of 0 messages stored bug
PHPBB3-15947
2022-04-15 22:36:12 +08:00
battye
691a891634 [ticket/16871] Do not allow negative forum and topic IDs in page_header
PHPBB3-16871
2022-04-15 19:58:42 +08:00
Marc Alexander
33af6d0f0a [ticket/16967] Fix typo
PHPBB3-16967
2022-04-13 20:33:09 +02:00
Marc Alexander
7a034a8c1e Merge pull request #6371 from nomind60s/ticket/19969
[ticket/19969] Hide flash status when post settings disallow [FLASH] …
2022-04-11 21:19:17 +02:00
Marc Alexander
4d857c4be7 [ticket/16967] Deprecate PHP in templates
PHPBB3-16967
2022-04-11 21:09:01 +02:00
Marc Alexander
3ee1efe7e0 Merge pull request #6376 from lionel-rowe/ticket/16977
[ticket/16977] Fix cron-job img tag layout and accessibility
2022-04-10 22:34:03 +02:00
hanakin
6fa019e23a [ticket/16978] add missing ul closeing tag
PHPBB3-16978
2022-04-05 12:51:03 -04:00
lionel-rowe
9b2f42748c [ticket/16981] Fix HTML-encoded emojis in email subject line
PHPBB3-16981
2022-04-05 17:18:33 +01:00
lionel-rowe
e53102fead [ticket/16977] Fix broken tests
PHPBB3-16977
2022-04-03 21:31:42 +01:00
lionel-rowe
87c1e631ef [ticket/16977] Move HTML rendering logic to template
PHPBB3-16977
2022-04-03 17:11:09 +01:00
lionel-rowe
8c982c7aa0 [ticket/16977] Fix cron-job img tag layout and accessibility
PHPBB3-16977
2022-04-03 17:11:00 +01:00
Marc Alexander
8cfec5370a Merge pull request #6374 from rxu/ticket/16976
[ticket/16976] Fix search results count
2022-04-03 15:10:14 +02:00
rxu
6cc0fe5f95 [ticket/16976] Fix search results count for in-topic/in-forum search
PHPBB3-16976
2022-03-27 12:59:03 +07:00
rxu
16b27be2d0 [ticket/16976] Fix search results count for PostgreSQL
PHPBB3-16976
2022-03-25 20:58:36 +07:00
rxu
0dd053eeba [ticket/16976] Fix search results count
PHPBB3-16976
2022-03-25 00:01:23 +07:00
Marc Alexander
4ed0201ffe Merge branch 'prep-release-3.3.7' into 3.3.x 2022-03-17 21:46:31 +01:00
Marc Alexander
5a3a91b464 Merge pull request #6367 from rxu/ticket/16966
[ticket/16966] Fix redirect link after permanently deleting posts
2022-03-16 16:23:21 +01:00
Marc Alexander
1f972f0ee7 Merge branch 'prep-release-3.3.6' into 3.3.x 2022-03-15 21:32:09 +01:00
nomind60s
a5899494b9 [ticket/19969] Hide flash status when post settings disallow [FLASH] BBCode
Add check for S_BBCODE_FLASH around FLASH_STATUS

PHPBB3-16969
2022-03-06 17:08:31 -07:00
MichaIng
86e009ad15 [ticket/16959] Remove redundant URL parameters from notification mails
Some phpBB forum notification emails send URLs to the forum with redundant URL
parameters, notably a forum IDs with topic URLs.

To have shorter and cleaner URLs, those are hereby removed.

Signed-off-by: MichaIng <micha@dietpi.com>

PHPBB3-16959
2022-03-04 01:21:00 +01:00
Marc Alexander
cc60a63f22 Merge pull request #6370 from rxu/ticket/16962
[ticket/16962] Fix datetime format test
2022-02-22 22:38:04 +01:00
rxu
e84cf2e5ba [ticket/16962] Fix datetime format test
PHPBB3-16962
2022-02-22 14:55:38 +07:00
rxu
a466be10c2 [ticket/16966] Fix redirect link after permanently deleting posts
PHPBB3-16966
2022-02-11 20:18:56 +07:00
Marc Alexander
c9db94f91c Merge branch 'prep-release-3.3.6' into 3.3.x 2022-02-10 21:19:01 +01:00
Marc Alexander
6a6d83c674 Merge branch 'prep-release-3.3.6' into 3.3.x 2022-02-05 08:55:58 +01:00
Marc Alexander
4f9252568a Merge pull request #6359 from marc1706/ticket/16891
ticket/16891] Add new method for deferring cache purge to end of request
2022-02-01 20:20:10 +01:00
Marc Alexander
5017dbd58d [ticket/16891] Rename constant for event name of deferred purge
PHPBB3-16891
2022-01-31 20:34:24 +01:00
Marc Alexander
c4fcbc2cbd [ticket/16891] Add mock to purge extension manager cache in tests
PHPBB3-16891
2022-01-31 20:34:24 +01:00
Marc Alexander
3be1e3029e [ticket/16891] Remove unused use statements
PHPBB3-16891
2022-01-31 20:34:23 +01:00
Marc Alexander
7992b3f476 [ticket/16891] Update test files to work with changed cache service
PHPBB3-16891
2022-01-31 20:34:23 +01:00
Marc Alexander
9dc25510a1 [ticket/16891] Add new method for deferring cache purge to end of request
PHPBB3-16891
2022-01-31 20:34:23 +01:00
Marc Alexander
420f494628 Merge branch 'prep-release-3.3.6' into 3.3.x 2022-01-31 20:33:10 +01:00
Marc Alexander
9446db9cde Merge pull request #6360 from marc1706/ticket/16960
[ticket/16960] Set config.php service even if container is not compiled
2022-01-30 21:45:07 +01:00
Marc Alexander
adea3e734a [ticket/16960] Set config.php service even if container is not compiled
PHPBB3-16960
2022-01-30 15:19:28 +01:00
Marc Alexander
919ff4575b Merge pull request #6356 from marc1706/ticket/13821
[ticket/13821] Support displaying ignored posts on post review page
2022-01-25 22:13:21 +01:00
Marc Alexander
ee56f0fe7d Merge branch 'prep-release-3.3.6' into 3.3.x 2022-01-25 22:10:59 +01:00
Marc Alexander
97356d9879 [ticket/13821] Remove HTML from PHP files and deduplicate lang variable
PHPBB3-13821
2022-01-22 23:50:33 +01:00
Marc Alexander
9f09dec049 [ticket/13821] Support displaying ignored posts on post review page
PHPBB3-13821
2022-01-22 22:28:04 +01:00
Marc Alexander
6caf2f83ad [3.3.x] Update versions to 3.3.7-dev 2022-01-21 22:15:12 +01:00
Marc Alexander
4805e705ad Merge branch 'prep-release-3.3.6' into 3.3.x 2022-01-21 22:13:26 +01:00
136 changed files with 1090 additions and 453 deletions

View File

@@ -35,9 +35,9 @@ phpBB's [Development Documentation](https://area51.phpbb.com/docs/dev/index.html
## 🔬 Automated Testing
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our travis builds below:
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our GitHub Actions below:
Branch | Description | Github Actions |
Branch | Description | GitHub Actions |
------- | ----------- | -------------- |
**master** | Latest development version | ![Tests](https://github.com/phpbb/phpbb/workflows/Tests/badge.svg?branch=master) |
**3.3.x** | Development of version 3.3.x | ![Tests](https://github.com/phpbb/phpbb/workflows/Tests/badge.svg?branch=3.3.x) |

View File

@@ -2,9 +2,9 @@
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build -->
<property name="newversion" value="3.3.7" />
<property name="prevversion" value="3.3.6" />
<property name="olderversions" value="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, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5" />
<property name="newversion" value="3.3.9-RC1" />
<property name="prevversion" value="3.3.8" />
<property name="olderversions" value="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, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />
@@ -362,6 +362,8 @@
<chmod mode="0777" file="${dir}/store" />
<chmod mode="0777" file="${dir}/files" />
<chmod mode="0777" file="${dir}/images/avatars/upload" />
<!-- set permissions of executable scripts to 755 -->
<chmod mode="0755" file="${dir}/bin/phpbbcli.php" />
</target>
<target name="clean-vendor-dir">

Binary file not shown.

View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
#
# A hook to add [$branch] to the beginning of a commit message
# if certain conditions are met.
@@ -31,12 +31,19 @@ branch="$(echo "$branch" | sed "s/refs\/heads\///g")"
if [ "$2" = "" ]
then
tail="";
ticket_id=$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\3/gm;t;d' <<< "$branch");
branch_title=$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\1\2\3/gm;t;d' <<< "$branch");
# Branch is prefixed with 'ticket/', append ticket ID to message
if [ "$branch" != "${branch##ticket/}" ];
if [ "security/" = "$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\2/gm;t;d' <<< "$branch")" ];
then
tail="$(printf "\n\nPHPBB3-${branch##ticket/}")";
tail="$(printf '\n\nSECURITY-%s' "$ticket_id")";
else
# Branch is prefixed with 'ticket/', append ticket ID to message
if [ "$branch" != "${branch##ticket/}" ];
then
tail="$(printf '\n\nPHPBB3-%s' "$ticket_id")";
fi
fi
echo "[$branch] $tail$(cat "$1")" > "$1"
echo "[$branch_title] $tail$(cat "$1")" > "$1"
fi

View File

@@ -26,7 +26,7 @@
"phpbb/phpbb-core": "self.version"
},
"require": {
"php": "^7.1.3",
"php": "^7.1.3 || ^8.0.0",
"ext-json": "*",
"ext-mbstring": "*",
"bantu/ini-get-wrapper": "~1.0",

380
phpBB/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1b58e9d5054a0881d4c29cb2e9523908",
"content-hash": "0201f3008dec8046725fd5e9afd61ba7",
"packages": [
{
"name": "bantu/ini-get-wrapper",
@@ -167,24 +167,24 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "6.5.5",
"version": "6.5.8",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
"reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
"reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.6.1",
"guzzlehttp/psr7": "^1.9",
"php": ">=5.5",
"symfony/polyfill-intl-idn": "^1.17.0"
"symfony/polyfill-intl-idn": "^1.17"
},
"require-dev": {
"ext-curl": "*",
@@ -201,22 +201,52 @@
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\": "src/"
},
"files": [
"src/functions_include.php"
]
],
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Graham Campbell",
"email": "hello@gjcampbell.co.uk",
"homepage": "https://github.com/GrahamCampbell"
},
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Jeremy Lindblom",
"email": "jeremeamia@gmail.com",
"homepage": "https://github.com/jeremeamia"
},
{
"name": "George Mponos",
"email": "gmponos@gmail.com",
"homepage": "https://github.com/gmponos"
},
{
"name": "Tobias Nyholm",
"email": "tobias.nyholm@gmail.com",
"homepage": "https://github.com/Nyholm"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://github.com/sagikazarmark"
},
{
"name": "Tobias Schultze",
"email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
}
],
"description": "Guzzle is a PHP HTTP client library",
@@ -232,22 +262,36 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/6.5"
"source": "https://github.com/guzzle/guzzle/tree/6.5.8"
},
"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://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
"type": "tidelift"
}
],
"time": "2022-06-20T22:16:07+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "1.5.1",
"version": "1.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
"reference": "b94b2807d85443f9719887892882d0329d1e2598"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598",
"reference": "b94b2807d85443f9719887892882d0329d1e2598",
"shasum": ""
},
"require": {
@@ -263,12 +307,12 @@
}
},
"autoload": {
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
},
"files": [
"src/functions_include.php"
]
],
"psr-4": {
"GuzzleHttp\\Promise\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -302,7 +346,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
"source": "https://github.com/guzzle/promises/tree/1.5.1"
"source": "https://github.com/guzzle/promises/tree/1.5.2"
},
"funding": [
{
@@ -318,20 +362,20 @@
"type": "tidelift"
}
],
"time": "2021-10-22T20:56:57+00:00"
"time": "2022-08-28T14:55:35+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "1.8.3",
"version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
"reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318",
"shasum": ""
},
"require": {
@@ -352,7 +396,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.7-dev"
"dev-master": "1.9-dev"
}
},
"autoload": {
@@ -412,7 +456,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
"source": "https://github.com/guzzle/psr7/tree/1.8.3"
"source": "https://github.com/guzzle/psr7/tree/1.9.0"
},
"funding": [
{
@@ -428,7 +472,7 @@
"type": "tidelift"
}
],
"time": "2021-10-05T13:56:00+00:00"
"time": "2022-06-20T21:43:03+00:00"
},
{
"name": "lusitanian/oauth",
@@ -836,16 +880,16 @@
},
{
"name": "s9e/regexp-builder",
"version": "1.4.5",
"version": "1.4.6",
"source": {
"type": "git",
"url": "https://github.com/s9e/RegexpBuilder.git",
"reference": "45992e3389e0179672f3a3605d66891a8b64918c"
"reference": "3a646bc7c40dba41903b7065f32230721e00df3a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/s9e/RegexpBuilder/zipball/45992e3389e0179672f3a3605d66891a8b64918c",
"reference": "45992e3389e0179672f3a3605d66891a8b64918c",
"url": "https://api.github.com/repos/s9e/RegexpBuilder/zipball/3a646bc7c40dba41903b7065f32230721e00df3a",
"reference": "3a646bc7c40dba41903b7065f32230721e00df3a",
"shasum": ""
},
"require": {
@@ -853,7 +897,7 @@
"php": ">=7.1"
},
"require-dev": {
"phpunit/phpunit": "*"
"phpunit/phpunit": ">=9.1"
},
"type": "library",
"autoload": {
@@ -872,22 +916,22 @@
],
"support": {
"issues": "https://github.com/s9e/RegexpBuilder/issues",
"source": "https://github.com/s9e/RegexpBuilder/tree/1.4.5"
"source": "https://github.com/s9e/RegexpBuilder/tree/1.4.6"
},
"time": "2021-04-28T21:45:11+00:00"
"time": "2022-03-05T16:22:35+00:00"
},
{
"name": "s9e/sweetdom",
"version": "2.0.0",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/s9e/SweetDOM.git",
"reference": "5fc62bc1f4756650924e5cd1b429afcf34542722"
"reference": "9e34ff8f353234daed102274012c840bda56aff2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/s9e/SweetDOM/zipball/5fc62bc1f4756650924e5cd1b429afcf34542722",
"reference": "5fc62bc1f4756650924e5cd1b429afcf34542722",
"url": "https://api.github.com/repos/s9e/SweetDOM/zipball/9e34ff8f353234daed102274012c840bda56aff2",
"reference": "9e34ff8f353234daed102274012c840bda56aff2",
"shasum": ""
},
"require": {
@@ -916,22 +960,22 @@
],
"support": {
"issues": "https://github.com/s9e/SweetDOM/issues",
"source": "https://github.com/s9e/SweetDOM/tree/2.0.0"
"source": "https://github.com/s9e/SweetDOM/tree/2.1.0"
},
"time": "2020-12-08T16:34:58+00:00"
"time": "2021-05-24T21:06:33+00:00"
},
{
"name": "s9e/text-formatter",
"version": "2.11.0",
"version": "2.11.5",
"source": {
"type": "git",
"url": "https://github.com/s9e/TextFormatter.git",
"reference": "b9d9d7ac480301f0cf718345daf591ddf475d9f1"
"reference": "186b633ee825a93e0060368bfdf8bd46311e3163"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/s9e/TextFormatter/zipball/b9d9d7ac480301f0cf718345daf591ddf475d9f1",
"reference": "b9d9d7ac480301f0cf718345daf591ddf475d9f1",
"url": "https://api.github.com/repos/s9e/TextFormatter/zipball/186b633ee825a93e0060368bfdf8bd46311e3163",
"reference": "186b633ee825a93e0060368bfdf8bd46311e3163",
"shasum": ""
},
"require": {
@@ -958,7 +1002,7 @@
},
"type": "library",
"extra": {
"version": "2.11.0"
"version": "2.11.5"
},
"autoload": {
"psr-4": {
@@ -990,9 +1034,9 @@
],
"support": {
"issues": "https://github.com/s9e/TextFormatter/issues",
"source": "https://github.com/s9e/TextFormatter/tree/2.11.0"
"source": "https://github.com/s9e/TextFormatter/tree/2.11.5"
},
"time": "2021-10-02T19:08:06+00:00"
"time": "2022-09-19T00:20:37+00:00"
},
{
"name": "symfony/config",
@@ -1220,6 +1264,7 @@
"type": "tidelift"
}
],
"abandoned": "symfony/error-handler",
"time": "2020-10-24T10:57:07+00:00"
},
{
@@ -1674,16 +1719,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "30885182c981ab175d4d034db0f6f469898070ab"
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
"reference": "30885182c981ab175d4d034db0f6f469898070ab",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"shasum": ""
},
"require": {
@@ -1698,7 +1743,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1706,12 +1751,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1736,7 +1781,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
},
"funding": [
{
@@ -1752,20 +1797,20 @@
"type": "tidelift"
}
],
"time": "2021-10-20T20:35:02+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44"
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
"reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": ""
},
"require": {
@@ -1779,7 +1824,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1787,12 +1832,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1823,7 +1868,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
},
"funding": [
{
@@ -1839,20 +1884,20 @@
"type": "tidelift"
}
],
"time": "2021-09-14T14:02:44+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
"reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": ""
},
"require": {
@@ -1864,7 +1909,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1872,12 +1917,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"files": [
"bootstrap.php"
],
"psr-4": {
"Symfony\\Polyfill\\Intl\\Normalizer\\": ""
},
"classmap": [
"Resources/stubs"
]
@@ -1907,7 +1952,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
},
"funding": [
{
@@ -1923,20 +1968,20 @@
"type": "tidelift"
}
],
"time": "2021-02-19T12:13:01+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
"reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": ""
},
"require": {
@@ -1951,7 +1996,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1959,12 +2004,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1990,7 +2035,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
},
"funding": [
{
@@ -2006,7 +2051,7 @@
"type": "tidelift"
}
],
"time": "2021-11-30T18:21:41+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php56",
@@ -2146,16 +2191,16 @@
},
{
"name": "symfony/polyfill-php72",
"version": "v1.24.0",
"version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
"reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
"reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
"reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
"shasum": ""
},
"require": {
@@ -2164,7 +2209,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.23-dev"
"dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -2172,12 +2217,12 @@
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
},
"files": [
"bootstrap.php"
]
],
"psr-4": {
"Symfony\\Polyfill\\Php72\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2202,7 +2247,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0"
"source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
},
"funding": [
{
@@ -2218,7 +2263,7 @@
"type": "tidelift"
}
],
"time": "2021-05-27T09:17:38+00:00"
"time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/process",
@@ -2612,16 +2657,16 @@
},
{
"name": "twig/twig",
"version": "v2.14.11",
"version": "v2.15.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "66baa66f29ee30e487e05f1679903e36eb01d727"
"reference": "ab402673db8746cb3a4c46f3869d6253699f614a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/66baa66f29ee30e487e05f1679903e36eb01d727",
"reference": "66baa66f29ee30e487e05f1679903e36eb01d727",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/ab402673db8746cb3a4c46f3869d6253699f614a",
"reference": "ab402673db8746cb3a4c46f3869d6253699f614a",
"shasum": ""
},
"require": {
@@ -2637,7 +2682,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.14-dev"
"dev-master": "2.15-dev"
}
},
"autoload": {
@@ -2676,7 +2721,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v2.14.11"
"source": "https://github.com/twigphp/Twig/tree/v2.15.3"
},
"funding": [
{
@@ -2688,7 +2733,7 @@
"type": "tidelift"
}
],
"time": "2022-02-04T06:57:25+00:00"
"time": "2022-09-28T08:40:08+00:00"
},
{
"name": "zendframework/zend-code",
@@ -2819,29 +2864,30 @@
"packages-dev": [
{
"name": "doctrine/instantiator",
"version": "1.4.0",
"version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
"reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^8.0",
"doctrine/coding-standard": "^9",
"ext-pdo": "*",
"ext-phar": "*",
"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"
"phpbench/phpbench": "^0.16 || ^1",
"phpstan/phpstan": "^1.4",
"phpstan/phpstan-phpunit": "^1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.22"
},
"type": "library",
"autoload": {
@@ -2868,7 +2914,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
"source": "https://github.com/doctrine/instantiator/tree/1.4.0"
"source": "https://github.com/doctrine/instantiator/tree/1.4.1"
},
"funding": [
{
@@ -2884,7 +2930,7 @@
"type": "tidelift"
}
],
"time": "2020-11-10T18:47:58+00:00"
"time": "2022-03-03T08:28:38+00:00"
},
{
"name": "fabpot/goutte",
@@ -3002,25 +3048,29 @@
},
{
"name": "myclabs/deep-copy",
"version": "1.10.2",
"version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
"reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
"reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/collections": "<1.6.8",
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.0",
"doctrine/common": "^2.6",
"phpunit/phpunit": "^7.1"
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
@@ -3045,7 +3095,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
},
"funding": [
{
@@ -3053,7 +3103,7 @@
"type": "tidelift"
}
],
"time": "2020-11-13T09:40:50+00:00"
"time": "2022-03-03T13:19:32+00:00"
},
{
"name": "phar-io/manifest",
@@ -3167,16 +3217,16 @@
},
{
"name": "phing/phing",
"version": "2.17.1",
"version": "2.17.4",
"source": {
"type": "git",
"url": "https://github.com/phingofficial/phing.git",
"reference": "a386de3986429c07434476844726a9f2679e8af2"
"reference": "9f3bc8c72e65452686dcf64497e02a082f138908"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phingofficial/phing/zipball/a386de3986429c07434476844726a9f2679e8af2",
"reference": "a386de3986429c07434476844726a9f2679e8af2",
"url": "https://api.github.com/repos/phingofficial/phing/zipball/9f3bc8c72e65452686dcf64497e02a082f138908",
"reference": "9f3bc8c72e65452686dcf64497e02a082f138908",
"shasum": ""
},
"require": {
@@ -3259,7 +3309,7 @@
"support": {
"irc": "irc://irc.freenode.net/phing",
"issues": "https://www.phing.info/trac/report",
"source": "https://github.com/phingofficial/phing/tree/2.17.1"
"source": "https://github.com/phingofficial/phing/tree/2.17.4"
},
"funding": [
{
@@ -3275,20 +3325,20 @@
"type": "patreon"
}
],
"time": "2022-01-17T11:33:15+00:00"
"time": "2022-07-08T09:07:07+00:00"
},
{
"name": "php-webdriver/webdriver",
"version": "1.12.0",
"version": "1.13.1",
"source": {
"type": "git",
"url": "https://github.com/php-webdriver/php-webdriver.git",
"reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb"
"reference": "6dfe5f814b796c1b5748850aa19f781b9274c36c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/99d4856ed7dffcdf6a52eccd6551e83d8d557ceb",
"reference": "99d4856ed7dffcdf6a52eccd6551e83d8d557ceb",
"url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/6dfe5f814b796c1b5748850aa19f781b9274c36c",
"reference": "6dfe5f814b796c1b5748850aa19f781b9274c36c",
"shasum": ""
},
"require": {
@@ -3316,12 +3366,12 @@
},
"type": "library",
"autoload": {
"psr-4": {
"Facebook\\WebDriver\\": "lib/"
},
"files": [
"lib/Exception/TimeoutException.php"
]
],
"psr-4": {
"Facebook\\WebDriver\\": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -3338,9 +3388,9 @@
],
"support": {
"issues": "https://github.com/php-webdriver/php-webdriver/issues",
"source": "https://github.com/php-webdriver/php-webdriver/tree/1.12.0"
"source": "https://github.com/php-webdriver/php-webdriver/tree/1.13.1"
},
"time": "2021-10-14T09:30:02+00:00"
"time": "2022-10-11T11:49:44+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -4062,16 +4112,16 @@
},
{
"name": "sebastian/comparator",
"version": "3.0.3",
"version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
"reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
"reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
"reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770",
"reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770",
"shasum": ""
},
"require": {
@@ -4124,7 +4174,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
"source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5"
},
"funding": [
{
@@ -4132,7 +4182,7 @@
"type": "github"
}
],
"time": "2020-11-30T08:04:30+00:00"
"time": "2022-09-14T12:31:48+00:00"
},
{
"name": "sebastian/diff",
@@ -4265,16 +4315,16 @@
},
{
"name": "sebastian/exporter",
"version": "3.1.4",
"version": "3.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db"
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
"reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6",
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6",
"shasum": ""
},
"require": {
@@ -4330,7 +4380,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4"
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5"
},
"funding": [
{
@@ -4338,7 +4388,7 @@
"type": "github"
}
],
"time": "2021-11-11T13:51:24+00:00"
"time": "2022-09-14T06:00:17+00:00"
},
{
"name": "sebastian/global-state",
@@ -4671,16 +4721,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.6.2",
"version": "3.7.1",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "5e4e71592f69da17871dba6e80dd51bce74a351a"
"reference": "1359e176e9307e906dc3d890bcc9603ff6d90619"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a",
"reference": "5e4e71592f69da17871dba6e80dd51bce74a351a",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619",
"reference": "1359e176e9307e906dc3d890bcc9603ff6d90619",
"shasum": ""
},
"require": {
@@ -4723,7 +4773,7 @@
"source": "https://github.com/squizlabs/PHP_CodeSniffer",
"wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
},
"time": "2021-12-12T21:44:58+00:00"
"time": "2022-06-18T07:21:10+00:00"
},
{
"name": "symfony/browser-kit",
@@ -5032,7 +5082,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "^7.1.3",
"php": "^7.1.3 || ^8.0.0",
"ext-json": "*",
"ext-mbstring": "*"
},

View File

@@ -40,6 +40,7 @@ services:
- '@cache.driver'
- '@config'
- '@dbal.conn'
- '@dispatcher'
- '%core.root_path%'
- '%core.php_ext%'

View File

@@ -6,6 +6,7 @@ services:
- '@routing.helper'
- '%core.root_path%'
- '%core.php_ext%'
- '@template'
cron.lock_db:
class: phpbb\lock\db

View File

@@ -50,6 +50,8 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<li><a href="#v338">Changes since 3.3.8</a></li>
<li><a href="#v337">Changes since 3.3.7</a></li>
<li><a href="#v336">Changes since 3.3.6</a></li>
<li><a href="#v336rc1">Changes since 3.3.6-RC1</a></li>
<li><a href="#v335">Changes since 3.3.5</a></li>
@@ -161,6 +163,59 @@
<div class="inner">
<div class="content">
<a name="v338"></a><h3>Changes since 3.3.8</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16917">PHPBB3-16917</a>] - bin/phpbb.cli requires 755 permissions</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16932">PHPBB3-16932</a>] - Invalid email To: header on notifications to users with @ in name</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17003">PHPBB3-17003</a>] - Icon of a topic do not show up in the UCP &gt; Front Page.</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17019">PHPBB3-17019</a>] - Missing &quot;youtube&quot; profilefield stops Database update</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17023">PHPBB3-17023</a>] - phpBB 3.3: PHP8 supported but not indicated by composer.json</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17026">PHPBB3-17026</a>] - Session viewonline not defined in Memberlist</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17030">PHPBB3-17030</a>] - Feed doesn't generate valid RFC-3339 dates</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17032">PHPBB3-17032</a>] - Missing or invalid user entry for anonymous user may result in stack overflow</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17036">PHPBB3-17036</a>] - Update guzzle to latest version</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17050">PHPBB3-17050</a>] - Unnecessary trailing slash in void HTML elements</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17051">PHPBB3-17051</a>] - Textformatter may generate PHP warnings if user is not fully initialized in PHP 8.1</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16916">PHPBB3-16916</a>] - Enhance the PHP version error message on startup and install</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17005">PHPBB3-17005</a>] - List item closing tag missing slash in posting_topic_review</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17006">PHPBB3-17006</a>] - &quot;www.&quot; not needed and may lead to confusion</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17048">PHPBB3-17048</a>] - Update composer and dependencies for 3.3.9</li>
</ul>
<a name="v337"></a><h3>Changes since 3.3.7</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-13821">PHPBB3-13821</a>] - Always show &quot;Display this post&quot; for foes</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16871">PHPBB3-16871</a>] - S_FORUM_ID and S_TOPIC_ID variables set by page_header may cause fatal errors in feeds</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16891">PHPBB3-16891</a>] - Controller Helper Routing in ACP can break Extension Installation</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16960">PHPBB3-16960</a>] - Migrations table not populated at the end of installation</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16962">PHPBB3-16962</a>] - Possible bug related with format date</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16966">PHPBB3-16966</a>] - &quot;Insecure redirect&quot; error while permanently deleting posts</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16976">PHPBB3-16976</a>] - phpBB Native Search returns 1 match and one page of results</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16977">PHPBB3-16977</a>] - Cron-job &quot;img&quot; tag at bottom breaks some styles and is inaccessible</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16978">PHPBB3-16978</a>] - &lt;/ul&gt; Tag Missing From posting_pm_header.html Template</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16981">PHPBB3-16981</a>] - HTML-encoded emojis `&amp;#128396; &amp;#128208;` in email subject line</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16990">PHPBB3-16990</a>] - Wrong style template code in the post editor prevents deleting a post with certain permission combination</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-13859">PHPBB3-13859</a>] - Youtube profilefield needs an upgrade</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-15947">PHPBB3-15947</a>] - &quot;X out of 0 messages stored&quot; in UCP</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16800">PHPBB3-16800</a>] - Language string NO_POSTS should be changed</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16959">PHPBB3-16959</a>] - Remove redundant URL parameters from notification mails</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16967">PHPBB3-16967</a>] - Deprecate use of PHP and INCLUDEPHP in templates</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16969">PHPBB3-16969</a>] - Flash status displays when posting when posts settings don't allow [FLASH] - BBCode</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16988">PHPBB3-16988</a>] - Ignore appended branch info when preparing commit message</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16991">PHPBB3-16991</a>] - Add events for bookmarks and subscribed topics in UCP</li>
</ul>
<a name="v336"></a><h3>Changes since 3.3.6</h3>
<h4>Bug</h4>
<ul>

View File

@@ -1304,6 +1304,7 @@ parent = prosilver</pre>
</pre></div>
<h4>PHP</h4>
<p><strong class="error">The use of PHP in HTML files has been deprecated in phpBB 3.3 and will be removed in phpBB 4.0.</strong></p>
<p>A contentious decision has seen the ability to include PHP within the template introduced. This is achieved by enclosing the PHP within relevant tags:</p>
<div class="codebox"><pre>

View File

@@ -2530,6 +2530,13 @@ ucp_header_friends_online_username_full_prepend
* Since: 3.2.10-RC1
* Purpose: Prepend information to online friends username in UCP
ucp_main_bookmarks_topic_title_after
===
* Locations:
+ styles/prosilver/template/ucp_main_bookmarks.html
* Since: 3.3.8-RC1
* Purpose: Add content right after the topic title viewing UCP bookmarks
ucp_main_front_user_activity_after
===
* Locations:
@@ -2558,6 +2565,13 @@ ucp_main_front_user_activity_prepend
* Since: 3.1.11-RC1
* Purpose: Add content before first user activity info viewing UCP front page
ucp_main_subscribed_topic_title_after
===
* Locations:
+ styles/prosilver/template/ucp_main_subscribed.html
* Since: 3.3.8-RC1
* Purpose: Add content right after the topic title viewing UCP subscribed topics
ucp_pm_history_post_buttons_after
===
* Locations:

View File

@@ -86,7 +86,7 @@ class acp_bbcodes
$display_on_posting = $request->variable('display_on_posting', 0);
$bbcode_match = $request->variable('bbcode_match', '');
$bbcode_tpl = htmlspecialchars_decode($request->variable('bbcode_tpl', '', true), ENT_COMPAT);
$bbcode_tpl = html_entity_decode($request->variable('bbcode_tpl', '', true), ENT_COMPAT);
$bbcode_helpline = $request->variable('bbcode_helpline', '', true);
break;
}

View File

@@ -720,8 +720,8 @@ class acp_board
$messenger->set_addresses($user->data);
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($user->data['username'], ENT_COMPAT),
'MESSAGE' => htmlspecialchars_decode($request->variable('send_test_email_text', '', true), ENT_COMPAT),
'USERNAME' => html_entity_decode($user->data['username'], ENT_COMPAT),
'MESSAGE' => html_entity_decode($request->variable('send_test_email_text', '', true), ENT_COMPAT),
));
$messenger->send(NOTIFY_EMAIL);

View File

@@ -205,7 +205,7 @@ class acp_email
$email_template = 'admin_send_email';
$template_data = array(
'CONTACT_EMAIL' => phpbb_get_board_contact($config, $phpEx),
'MESSAGE' => htmlspecialchars_decode($message, ENT_COMPAT),
'MESSAGE' => html_entity_decode($message, ENT_COMPAT),
);
$generate_log_entry = true;
@@ -252,7 +252,7 @@ class acp_email
$messenger->anti_abuse_headers($config, $user);
$messenger->subject(htmlspecialchars_decode($subject, ENT_COMPAT));
$messenger->subject(html_entity_decode($subject, ENT_COMPAT));
$messenger->set_mail_priority($priority);
$messenger->assign_vars($template_data);

View File

@@ -90,7 +90,7 @@ class acp_help_phpbb
if (!empty($response))
{
$decoded_response = json_decode(htmlspecialchars_decode($response, ENT_COMPAT), true);
$decoded_response = json_decode(html_entity_decode($response, ENT_COMPAT), true);
if ($decoded_response && isset($decoded_response['status']) && $decoded_response['status'] == 'ok')
{

View File

@@ -130,7 +130,7 @@ class acp_inactive
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($row['username'], ENT_COMPAT))
'USERNAME' => html_entity_decode($row['username'], ENT_COMPAT))
);
$messenger->send(NOTIFY_EMAIL);
@@ -224,7 +224,7 @@ class acp_inactive
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($row['username'], ENT_COMPAT),
'USERNAME' => html_entity_decode($row['username'], ENT_COMPAT),
'REGISTER_DATE' => $user->format_date($row['user_regdate'], false, true),
'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u=" . $row['user_id'] . '&k=' . $row['user_actkey'])
);

View File

@@ -108,7 +108,7 @@ class acp_logs
$sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
$keywords = $request->variable('keywords', '', true);
$keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(htmlspecialchars_decode($keywords, ENT_COMPAT)) : '';
$keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(html_entity_decode($keywords, ENT_COMPAT)) : '';
$l_title = $user->lang['ACP_' . strtoupper($mode) . '_LOGS'];
$l_title_explain = $user->lang['ACP_' . strtoupper($mode) . '_LOGS_EXPLAIN'];

View File

@@ -70,7 +70,7 @@ class acp_ranks
'rank_title' => $rank_title,
'rank_special' => $special_rank,
'rank_min' => $min_posts,
'rank_image' => htmlspecialchars_decode($rank_image, ENT_COMPAT)
'rank_image' => html_entity_decode($rank_image, ENT_COMPAT)
);
/**

View File

@@ -402,8 +402,8 @@ class acp_users
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT),
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT),
'WELCOME_MSG' => html_entity_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT),
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT),
'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k=$user_actkey")
);
@@ -466,7 +466,7 @@ class acp_users
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT))
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT))
);
$messenger->send(NOTIFY_EMAIL);

View File

@@ -28,7 +28,7 @@ if (!defined('IN_PHPBB'))
*/
// phpBB Version
@define('PHPBB_VERSION', '3.3.7');
@define('PHPBB_VERSION', '3.3.9-RC1');
// QA-related
// define('PHPBB_QA', 1);

View File

@@ -3874,8 +3874,9 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
}
}
$forum_id = $request->variable('f', 0);
$topic_id = $request->variable('t', 0);
// Negative forum and topic IDs are not allowed
$forum_id = max(0, $request->variable('f', 0));
$topic_id = max(0, $request->variable('t', 0));
$s_feed_news = false;

View File

@@ -759,7 +759,7 @@ function phpbb_http_login($param)
{
if ($request->is_set($k, \phpbb\request\request_interface::SERVER))
{
$username = htmlspecialchars_decode($request->server($k), ENT_COMPAT);
$username = html_entity_decode($request->server($k), ENT_COMPAT);
break;
}
}
@@ -769,7 +769,7 @@ function phpbb_http_login($param)
{
if ($request->is_set($k, \phpbb\request\request_interface::SERVER))
{
$password = htmlspecialchars_decode($request->server($k), ENT_COMPAT);
$password = html_entity_decode($request->server($k), ENT_COMPAT);
break;
}
}

View File

@@ -803,8 +803,8 @@ function make_clickable_callback($type, $whitespace, $url, $relative_url, $class
$orig_url = $url;
$orig_relative = $relative_url;
$append = '';
$url = htmlspecialchars_decode($url, ENT_COMPAT);
$relative_url = htmlspecialchars_decode($relative_url, ENT_COMPAT);
$url = html_entity_decode($url, ENT_COMPAT);
$relative_url = html_entity_decode($relative_url, ENT_COMPAT);
// make sure no HTML entities were matched
$chars = array('<', '>', '"');
@@ -1456,7 +1456,7 @@ function truncate_string($string, $max_length = 60, $max_store_length = 255, $al
$string = substr($string, 4);
}
$_chars = utf8_str_split(htmlspecialchars_decode($string, ENT_COMPAT));
$_chars = utf8_str_split(html_entity_decode($string, ENT_COMPAT));
$chars = array_map('utf8_htmlspecialchars', $_chars);
// Now check the length ;)
@@ -1471,7 +1471,7 @@ function truncate_string($string, $max_length = 60, $max_store_length = 255, $al
if (utf8_strlen($string) > $max_store_length)
{
// let's split again, we do not want half-baked strings where entities are split
$_chars = utf8_str_split(htmlspecialchars_decode($string, ENT_COMPAT));
$_chars = utf8_str_split(html_entity_decode($string, ENT_COMPAT));
$chars = array_map('utf8_htmlspecialchars', $_chars);
do

View File

@@ -208,7 +208,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
if (empty($user->browser) || ((strpos(strtolower($user->browser), 'msie') !== false) && !phpbb_is_greater_ie_version($user->browser, 7)))
{
header('Content-Disposition: attachment; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'], ENT_COMPAT)));
header('Content-Disposition: attachment; ' . header_filename(html_entity_decode($attachment['real_filename'], ENT_COMPAT)));
if (empty($user->browser) || (strpos(strtolower($user->browser), 'msie 6.0') !== false))
{
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
@@ -216,7 +216,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
}
else
{
header('Content-Disposition: ' . ((strpos($attachment['mimetype'], 'image') === 0) ? 'inline' : 'attachment') . '; ' . header_filename(htmlspecialchars_decode($attachment['real_filename'], ENT_COMPAT)));
header('Content-Disposition: ' . ((strpos($attachment['mimetype'], 'image') === 0) ? 'inline' : 'attachment') . '; ' . header_filename(html_entity_decode($attachment['real_filename'], ENT_COMPAT)));
if (phpbb_is_greater_ie_version($user->browser, 7) && (strpos($attachment['mimetype'], 'image') !== 0))
{
header('X-Download-Options: noopen');
@@ -327,7 +327,7 @@ function download_allowed()
return true;
}
$url = htmlspecialchars_decode($request->header('Referer'), ENT_COMPAT);
$url = html_entity_decode($request->header('Referer'), ENT_COMPAT);
if (!$url)
{

View File

@@ -320,8 +320,8 @@ class messenger
// We add some standard variables we always use, no need to specify them always
$this->assign_vars(array(
'U_BOARD' => generate_board_url(),
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . htmlspecialchars_decode($config['board_email_sig'], ENT_COMPAT)),
'SITENAME' => htmlspecialchars_decode($config['sitename'], ENT_COMPAT),
'EMAIL_SIG' => str_replace('<br />', "\n", "-- \n" . html_entity_decode($config['board_email_sig'], ENT_COMPAT)),
'SITENAME' => html_entity_decode($config['sitename'], ENT_COMPAT),
));
$subject = $this->subject;
@@ -427,7 +427,7 @@ class messenger
$user->session_begin();
}
$calling_page = htmlspecialchars_decode($request->server('PHP_SELF'), ENT_COMPAT);
$calling_page = html_entity_decode($request->server('PHP_SELF'), ENT_COMPAT);
switch ($type)
{
@@ -557,7 +557,7 @@ class messenger
$use_queue = true;
}
$contact_name = htmlspecialchars_decode($config['board_contact_name'], ENT_COMPAT);
$contact_name = html_entity_decode($config['board_contact_name'], ENT_COMPAT);
$board_contact = (($contact_name !== '') ? '"' . mail_encode($contact_name) . '" ' : '') . '<' . $config['board_contact'] . '>';
$break = false;
@@ -691,7 +691,7 @@ class messenger
if (!$use_queue)
{
include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx);
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], htmlspecialchars_decode($config['jab_password'], ENT_COMPAT), $config['jab_use_ssl'], $config['jab_verify_peer'], $config['jab_verify_peer_name'], $config['jab_allow_self_signed']);
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], html_entity_decode($config['jab_password'], ENT_COMPAT), $config['jab_use_ssl'], $config['jab_verify_peer'], $config['jab_verify_peer_name'], $config['jab_allow_self_signed']);
if (!$this->jabber->connect())
{
@@ -891,7 +891,7 @@ class queue
}
include_once($phpbb_root_path . 'includes/functions_jabber.' . $phpEx);
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], htmlspecialchars_decode($config['jab_password'], ENT_COMPAT), $config['jab_use_ssl'], $config['jab_verify_peer'], $config['jab_verify_peer_name'], $config['jab_allow_self_signed']);
$this->jabber = new jabber($config['jab_host'], $config['jab_port'], $config['jab_username'], html_entity_decode($config['jab_password'], ENT_COMPAT), $config['jab_use_ssl'], $config['jab_verify_peer'], $config['jab_verify_peer_name'], $config['jab_allow_self_signed']);
if (!$this->jabber->connect())
{
@@ -1208,7 +1208,7 @@ function smtpmail($addresses, $subject, $message, &$err_msg, $headers = false)
}
// Let me in. This function handles the complete authentication process
if ($err_msg = $smtp->log_into_server($config['smtp_host'], $config['smtp_username'], htmlspecialchars_decode($config['smtp_password'], ENT_COMPAT), $config['smtp_auth_method']))
if ($err_msg = $smtp->log_into_server($config['smtp_host'], $config['smtp_username'], html_entity_decode($config['smtp_password'], ENT_COMPAT), $config['smtp_auth_method']))
{
$smtp->close_session($err_msg);
return false;
@@ -1882,7 +1882,7 @@ function mail_encode($str, $eol = "\r\n")
{
$encoded_char = $is_quoted_printable
? $char = preg_replace_callback(
'/[=_\?\x20\x00-\x1F\x80-\xFF]/',
'/[()<>@,;:\\\\".\[\]=_?\x20\x00-\x1F\x80-\xFF]/',
function ($matches)
{
$hex = dechex(ord($matches[0]));

View File

@@ -1253,11 +1253,11 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
'POST_AUTHOR' => get_username_string('username', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'U_POST_AUTHOR' => get_username_string('profile', $poster_id, $row['username'], $row['user_colour'], $row['post_username']),
'S_HAS_ATTACHMENTS' => (!empty($attachments[$row['post_id']])) ? true : false,
'S_FRIEND' => ($row['friend']) ? true : false,
'S_IGNORE_POST' => ($row['foe']) ? true : false,
'L_IGNORE_POST' => ($row['foe']) ? sprintf($user->lang['POST_BY_FOE'], get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), "<a href=\"{$u_show_post}\" onclick=\"phpbb.toggleDisplay('{$post_anchor}', 1); return false;\">", '</a>') : '',
'S_POST_DELETED' => ($row['post_visibility'] == ITEM_DELETED) ? true : false,
'S_HAS_ATTACHMENTS' => !empty($attachments[$row['post_id']]),
'S_FRIEND' => (bool) $row['friend'],
'S_IGNORE_POST' => (bool) $row['foe'],
'L_IGNORE_POST' => $row['foe'] ? $user->lang('POST_BY_FOE', get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), "<a href=\"{$u_show_post}\" onclick=\"phpbb.toggleDisplay('{$post_anchor}', 1); return false;\">", '</a>') : '',
'S_POST_DELETED' => $row['post_visibility'] == ITEM_DELETED,
'L_DELETE_POST' => $l_deleted_message,
'POST_SUBJECT' => $post_subject,

View File

@@ -1575,11 +1575,11 @@ function validate_string($string, $optional = false, $min = 0, $max = 0)
return false;
}
if ($min && utf8_strlen(htmlspecialchars_decode($string, ENT_COMPAT)) < $min)
if ($min && utf8_strlen(html_entity_decode($string, ENT_COMPAT)) < $min)
{
return 'TOO_SHORT';
}
else if ($max && utf8_strlen(htmlspecialchars_decode($string, ENT_COMPAT)) > $max)
else if ($max && utf8_strlen(html_entity_decode($string, ENT_COMPAT)) > $max)
{
return 'TOO_LONG';
}

View File

@@ -179,7 +179,7 @@ class mcp_logs
$sql_sort = $sort_by_sql[$sort_key] . ' ' . (($sort_dir == 'd') ? 'DESC' : 'ASC');
$keywords = $request->variable('keywords', '', true);
$keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(htmlspecialchars_decode($keywords, ENT_COMPAT)) : '';
$keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(html_entity_decode($keywords, ENT_COMPAT)) : '';
// Grab log data
$log_data = array();

View File

@@ -1245,7 +1245,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
else
{
// Remove any post id anchor
if ($anchor_pos = (strrpos($redirect, '#p')) !== false)
if (($anchor_pos = strrpos($redirect, '#p')) !== false)
{
$redirect = substr($redirect, 0, $anchor_pos);
}

View File

@@ -206,7 +206,7 @@ class mcp_notes
$sql_sort = $sort_by_sql[$sk] . ' ' . (($sd == 'd') ? 'DESC' : 'ASC');
$keywords = $request->variable('keywords', '', true);
$keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(htmlspecialchars_decode($keywords, ENT_COMPAT)) : '';
$keywords_param = !empty($keywords) ? '&amp;keywords=' . urlencode(html_entity_decode($keywords, ENT_COMPAT)) : '';
$log_data = array();
$log_count = 0;

View File

@@ -506,7 +506,7 @@ class bbcode_firstpass extends bbcode
}
// Because highlight_string is specialcharing the text (but we already did this before), we have to reverse this in order to get correct results
$code = htmlspecialchars_decode($code, ENT_COMPAT);
$code = html_entity_decode($code, ENT_COMPAT);
$code = highlight_string($code, true);
$str_from = array('<span style="color: ', '<font color="syntax', '</font>', '<code>', '</code>','[', ']', '.', ':');
@@ -1247,7 +1247,7 @@ class parse_message extends bbcode_firstpass
));
// Parse this message
$this->message = $parser->parse(htmlspecialchars_decode($this->message, ENT_QUOTES));
$this->message = $parser->parse(html_entity_decode($this->message, ENT_QUOTES));
// Remove quotes that are nested too deep
if ($config['max_quote_depth'] > 0)

View File

@@ -150,11 +150,11 @@ class phpbb_questionnaire_system_data_provider
// Start discovering the IPV4 server address, if available
// Try apache, IIS, fall back to 0.0.0.0
$server_address = htmlspecialchars_decode($request->server('SERVER_ADDR', $request->server('LOCAL_ADDR', '0.0.0.0')), ENT_COMPAT);
$server_address = html_entity_decode($request->server('SERVER_ADDR', $request->server('LOCAL_ADDR', '0.0.0.0')), ENT_COMPAT);
return array(
'os' => PHP_OS,
'httpd' => htmlspecialchars_decode($request->server('SERVER_SOFTWARE'), ENT_COMPAT),
'httpd' => html_entity_decode($request->server('SERVER_SOFTWARE'), ENT_COMPAT),
// we don't want the real IP address (for privacy policy reasons) but only
// a network address to see whether your installation is running on a private or public network.
'private_ip' => $this->is_private_ip($server_address),

View File

@@ -27,7 +27,7 @@ error_reporting($level);
*/
if (version_compare(PHP_VERSION, '7.1.3', '<'))
{
die('You are running an unsupported PHP version. Please upgrade to PHP 7.1.3 or higher before trying to install or update to phpBB 3.3');
die('You are running an unsupported PHP version (' . PHP_VERSION . '). Please upgrade to PHP 7.1.3 or higher before trying to install or update to phpBB 3.3');
}
// Register globals and magic quotes have been dropped in PHP 5.4 so no need for extra checks

View File

@@ -142,7 +142,7 @@ class ucp_activate
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT))
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT))
);
$messenger->send($user_row['user_notify_type']);

View File

@@ -35,7 +35,7 @@ class ucp_main
function main($id, $mode)
{
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $phpbb_dispatcher;
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $phpbb_dispatcher, $cache;
global $request;
switch ($mode)
@@ -44,8 +44,8 @@ class ucp_main
$user->add_lang('memberlist');
$sql_from = TOPICS_TABLE . ' t ';
$sql_select = '';
$sql_from = TOPICS_TABLE . ' t LEFT JOIN ' . FORUMS_TABLE . ' f ON (f.forum_id = t.forum_id) ';
$sql_select = ', f.enable_icons';
if ($config['load_db_track'])
{
@@ -137,6 +137,9 @@ class ucp_main
}
unset($topic_forum_list);
// Grab icons
$icons = $cache->obtain_icons();
foreach ($topic_list as $topic_id)
{
$row = &$rowset[$topic_id];
@@ -176,10 +179,14 @@ class ucp_main
'TOPIC_TITLE' => censor_text($row['topic_title']),
'TOPIC_TYPE' => $topic_type,
'TOPIC_ICON_IMG' => !empty($icons[$row['icon_id']]) ? $icons[$row['icon_id']]['img'] : '',
'TOPIC_ICON_IMG_WIDTH' => !empty($icons[$row['icon_id']]) ? $icons[$row['icon_id']]['width'] : '',
'TOPIC_ICON_IMG_HEIGHT' => !empty($icons[$row['icon_id']]) ? $icons[$row['icon_id']]['height'] : '',
'TOPIC_IMG_STYLE' => $folder_img,
'TOPIC_FOLDER_IMG' => $user->img($folder_img, $folder_alt),
'ATTACH_ICON_IMG' => ($auth->acl_get('u_download') && $auth->acl_get('f_download', $forum_id) && $row['topic_attachment']) ? $user->img('icon_topic_attach', '') : '',
'S_TOPIC_ICONS' => $row['enable_icons'] ? true : false,
'S_USER_POSTED' => (!empty($row['topic_posted']) && $row['topic_posted']) ? true : false,
'S_UNREAD' => $unread_topic,
@@ -396,23 +403,25 @@ class ucp_main
if ($row['forum_last_post_id'])
{
$last_post_time = $user->format_date($row['forum_last_post_time']);
$last_post_time_rfc3339 = gmdate(DATE_RFC3339, $row['forum_last_post_time']);
$last_post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=" . $row['forum_last_post_id']) . '#p' . $row['forum_last_post_id'];
}
else
{
$last_post_time = $last_post_url = '';
$last_post_time = $last_post_time_rfc3339 = $last_post_url = '';
}
$template_vars = array(
'FORUM_ID' => $forum_id,
'FORUM_IMG_STYLE' => $folder_image,
'FORUM_FOLDER_IMG' => $user->img($folder_image, $folder_alt),
'FORUM_IMAGE' => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang[$folder_alt] . '" />' : '',
'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
'FORUM_NAME' => $row['forum_name'],
'FORUM_DESC' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
'LAST_POST_SUBJECT' => $row['forum_last_post_subject'],
'LAST_POST_TIME' => $last_post_time,
'FORUM_ID' => $forum_id,
'FORUM_IMG_STYLE' => $folder_image,
'FORUM_FOLDER_IMG' => $user->img($folder_image, $folder_alt),
'FORUM_IMAGE' => ($row['forum_image']) ? '<img src="' . $phpbb_root_path . $row['forum_image'] . '" alt="' . $user->lang[$folder_alt] . '" />' : '',
'FORUM_IMAGE_SRC' => ($row['forum_image']) ? $phpbb_root_path . $row['forum_image'] : '',
'FORUM_NAME' => $row['forum_name'],
'FORUM_DESC' => generate_text_for_display($row['forum_desc'], $row['forum_desc_uid'], $row['forum_desc_bitfield'], $row['forum_desc_options']),
'LAST_POST_SUBJECT' => $row['forum_last_post_subject'],
'LAST_POST_TIME' => $last_post_time,
'LAST_POST_TIME_RFC3339' => $last_post_time_rfc3339,
'LAST_POST_AUTHOR' => get_username_string('username', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
'LAST_POST_AUTHOR_COLOUR' => get_username_string('colour', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),

View File

@@ -186,7 +186,7 @@ class ucp_profile
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($data['username'], ENT_COMPAT),
'USERNAME' => html_entity_decode($data['username'], ENT_COMPAT),
'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u={$user->data['user_id']}&k=$user_actkey")
);

View File

@@ -468,9 +468,9 @@ class ucp_register
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT),
'USERNAME' => htmlspecialchars_decode($data['username'], ENT_COMPAT),
'PASSWORD' => htmlspecialchars_decode($data['new_password'], ENT_COMPAT),
'WELCOME_MSG' => html_entity_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT),
'USERNAME' => html_entity_decode($data['username'], ENT_COMPAT),
'PASSWORD' => html_entity_decode($data['new_password'], ENT_COMPAT),
'U_ACTIVATE' => "$server_url/ucp.$phpEx?mode=activate&u=$user_id&k=$user_actkey")
);

View File

@@ -99,8 +99,8 @@ class ucp_resend
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'WELCOME_MSG' => htmlspecialchars_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT),
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT),
'WELCOME_MSG' => html_entity_decode(sprintf($user->lang['WELCOME_SUBJECT'], $config['sitename']), ENT_COMPAT),
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT),
'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}")
);
@@ -134,7 +134,7 @@ class ucp_resend
$messenger->anti_abuse_headers($config, $user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT),
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT),
'U_USER_DETAILS' => generate_board_url() . "/memberlist.$phpEx?mode=viewprofile&u={$user_row['user_id']}",
'U_ACTIVATE' => generate_board_url() . "/ucp.$phpEx?mode=activate&u={$user_row['user_id']}&k={$user_row['user_actkey']}")
);

View File

@@ -22,7 +22,7 @@ $phpEx = substr(strrchr(__FILE__, '.'), 1);
if (version_compare(PHP_VERSION, '7.1.3', '<'))
{
die('You are running an unsupported PHP version. Please upgrade to PHP 7.1.3 or higher before trying to install or update to phpBB 3.3');
die('You are running an unsupported PHP version (' . PHP_VERSION . '). Please upgrade to PHP 7.1.3 or higher before trying to install or update to phpBB 3.3');
}
$startup_new_path = $phpbb_root_path . 'install/update/update/new/install/startup.' . $phpEx;

View File

@@ -38,7 +38,7 @@ $dbms = $phpbb_config_php_file->convert_30_dbms_to_31($dbms);
$convertor_data = array(
'forum_name' => 'phpBB 2.0.x',
'version' => '1.0.3',
'phpbb_version' => '3.3.7',
'phpbb_version' => '3.3.9',
'author' => '<a href="https://www.phpbb.com/">phpBB Limited</a>',
'dbms' => $dbms,
'dbhost' => $dbhost,

View File

@@ -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.3.7');
define('PHPBB_VERSION', '3.3.9-RC1');
$phpbb_root_path = __DIR__ . '/../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

View File

@@ -316,7 +316,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('update_hashes_lock
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.3.7');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.3.9-RC1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');

View File

@@ -483,7 +483,7 @@ $lang = array_merge($lang, array(
'SCRIPT_PATH' => 'Script path',
'SCRIPT_PATH_EXPLAIN' => 'The path where phpBB is located relative to the domain name, e.g. <samp>/phpBB3</samp>.',
'SERVER_NAME' => 'Domain name',
'SERVER_NAME_EXPLAIN' => 'The domain name this board runs from (for example: <samp>www.example.com</samp>).',
'SERVER_NAME_EXPLAIN' => 'The domain name this board runs from (for example: <samp>example.com</samp>).',
'SERVER_PORT' => 'Server port',
'SERVER_PORT_EXPLAIN' => 'The port your server is running on, usually 80, only change if different.',
'SERVER_PROTOCOL' => 'Server protocol',

View File

@@ -432,6 +432,7 @@ $lang = array_merge($lang, array(
'MESSAGE' => 'Message',
'MESSAGES' => 'Messages',
'MESSAGES_COUNT' => array(
0 => 'unlimited messages',
1 => '%d message',
2 => '%d messages',
),
@@ -603,7 +604,7 @@ $lang = array_merge($lang, array(
'POSTS_UNAPPROVED_FORUM'=> 'At least one post in this forum has not been approved.',
'POST_BY_AUTHOR' => 'by',
'POST_BY_FOE' => '<strong>%1$s</strong>, who is currently on your ignore list, made this post.',
'POST_DISPLAY' => '%1$sDisplay this post%2$s.',
'POST_DISPLAY' => 'Display this post',
'POST_DAY' => '%.2f posts per day',
'POST_DELETED_ACTION' => 'Deleted post:',
'POST_DELETED' => 'This post has been deleted.',

View File

@@ -442,16 +442,16 @@ switch ($mode)
$messenger = new messenger(false);
$messenger->template('profile_send_im', $row['user_lang']);
$messenger->subject(htmlspecialchars_decode($subject, ENT_COMPAT));
$messenger->subject(html_entity_decode($subject, ENT_COMPAT));
$messenger->replyto($user->data['user_email']);
$messenger->set_addresses($row);
$messenger->assign_vars(array(
'BOARD_CONTACT' => phpbb_get_board_contact($config, $phpEx),
'FROM_USERNAME' => htmlspecialchars_decode($user->data['username'], ENT_COMPAT),
'TO_USERNAME' => htmlspecialchars_decode($row['username'], ENT_COMPAT),
'MESSAGE' => htmlspecialchars_decode($message, ENT_COMPAT))
'FROM_USERNAME' => html_entity_decode($user->data['username'], ENT_COMPAT),
'TO_USERNAME' => html_entity_decode($row['username'], ENT_COMPAT),
'MESSAGE' => html_entity_decode($message, ENT_COMPAT))
);
$messenger->send(NOTIFY_IM);
@@ -804,8 +804,8 @@ switch ($mode)
'S_USER_NOTES' => ($user_notes_enabled) ? true : false,
'S_WARN_USER' => ($warn_user_enabled) ? true : false,
'S_ZEBRA' => ($user->data['user_id'] != $user_id && $user->data['is_registered'] && $zebra_enabled) ? true : false,
'U_ADD_FRIEND' => (!$friend && !$foe && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;add=' . urlencode(htmlspecialchars_decode($member['username'], ENT_COMPAT))) : '',
'U_ADD_FOE' => (!$friend && !$foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;mode=foes&amp;add=' . urlencode(htmlspecialchars_decode($member['username'], ENT_COMPAT))) : '',
'U_ADD_FRIEND' => (!$friend && !$foe && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;add=' . urlencode(html_entity_decode($member['username'], ENT_COMPAT))) : '',
'U_ADD_FOE' => (!$friend && !$foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;mode=foes&amp;add=' . urlencode(html_entity_decode($member['username'], ENT_COMPAT))) : '',
'U_REMOVE_FRIEND' => ($friend && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;usernames[]=' . $user_id) : '',
'U_REMOVE_FOE' => ($foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;mode=foes&amp;usernames[]=' . $user_id) : '',
@@ -987,7 +987,7 @@ switch ($mode)
{
$user_list[] = [
'user_id' => (int) $row['user_id'],
'result' => htmlspecialchars_decode($row['username']),
'result' => html_entity_decode($row['username']),
'username_full' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
'display' => get_username_string('no_profile', $row['user_id'], $row['username'], $row['user_colour']),
];
@@ -1634,17 +1634,20 @@ switch ($mode)
if (count($user_list))
{
// Session time?! Session time...
$sql = 'SELECT session_user_id, MAX(session_time) AS session_time
$sql = 'SELECT session_user_id, MAX(session_time) AS session_time, MIN(session_viewonline) AS session_viewonline
FROM ' . SESSIONS_TABLE . '
WHERE session_time >= ' . (time() - $config['session_length']) . '
AND ' . $db->sql_in_set('session_user_id', $user_list) . '
GROUP BY session_user_id';
$result = $db->sql_query($sql);
$session_times = array();
$session_ary = [];
while ($row = $db->sql_fetchrow($result))
{
$session_times[$row['session_user_id']] = $row['session_time'];
$session_ary[$row['session_user_id']] = [
'session_time' => $row['session_time'],
'session_viewonline' => $row['session_viewonline'],
];
}
$db->sql_freeresult($result);
@@ -1708,7 +1711,8 @@ switch ($mode)
$id_cache = array();
while ($row = $db->sql_fetchrow($result))
{
$row['session_time'] = (!empty($session_times[$row['user_id']])) ? $session_times[$row['user_id']] : 0;
$row['session_time'] = $session_ary[$row['user_id']]['session_time'] ?? 0;
$row['session_viewonline'] = $session_ary[$row['user_id']]['session_viewonline'] ?? 0;
$row['last_visit'] = (!empty($row['session_time'])) ? $row['session_time'] : $row['user_lastvisit'];
$id_cache[$row['user_id']] = $row;

View File

@@ -73,7 +73,7 @@ class apache extends base
*/
public function init()
{
if (!$this->request->is_set('PHP_AUTH_USER', request_interface::SERVER) || $this->user->data['username'] !== htmlspecialchars_decode($this->request->server('PHP_AUTH_USER'), ENT_COMPAT))
if (!$this->request->is_set('PHP_AUTH_USER', request_interface::SERVER) || $this->user->data['username'] !== html_entity_decode($this->request->server('PHP_AUTH_USER'), ENT_COMPAT))
{
return $this->language->lang('APACHE_SETUP_BEFORE_USE');
}
@@ -113,8 +113,8 @@ class apache extends base
);
}
$php_auth_user = htmlspecialchars_decode($this->request->server('PHP_AUTH_USER'), ENT_COMPAT);
$php_auth_pw = htmlspecialchars_decode($this->request->server('PHP_AUTH_PW'), ENT_COMPAT);
$php_auth_user = html_entity_decode($this->request->server('PHP_AUTH_USER'), ENT_COMPAT);
$php_auth_pw = html_entity_decode($this->request->server('PHP_AUTH_PW'), ENT_COMPAT);
if (!empty($php_auth_user) && !empty($php_auth_pw))
{
@@ -180,8 +180,8 @@ class apache extends base
return array();
}
$php_auth_user = htmlspecialchars_decode($this->request->server('PHP_AUTH_USER'), ENT_COMPAT);
$php_auth_pw = htmlspecialchars_decode($this->request->server('PHP_AUTH_PW'), ENT_COMPAT);
$php_auth_user = html_entity_decode($this->request->server('PHP_AUTH_USER'), ENT_COMPAT);
$php_auth_pw = html_entity_decode($this->request->server('PHP_AUTH_PW'), ENT_COMPAT);
if (!empty($php_auth_user) && !empty($php_auth_pw))
{

View File

@@ -83,7 +83,7 @@ class ldap extends base
if ($this->config['ldap_user'] || $this->config['ldap_password'])
{
if (!@ldap_bind($ldap, htmlspecialchars_decode($this->config['ldap_user'], ENT_COMPAT), htmlspecialchars_decode($this->config['ldap_password'], ENT_COMPAT)))
if (!@ldap_bind($ldap, html_entity_decode($this->config['ldap_user'], ENT_COMPAT), html_entity_decode($this->config['ldap_password'], ENT_COMPAT)))
{
return $this->language->lang('LDAP_INCORRECT_USER_PASSWORD');
}
@@ -92,11 +92,11 @@ class ldap extends base
// ldap_connect only checks whether the specified server is valid, so the connection might still fail
$search = @ldap_search(
$ldap,
htmlspecialchars_decode($this->config['ldap_base_dn'], ENT_COMPAT),
html_entity_decode($this->config['ldap_base_dn'], ENT_COMPAT),
$this->ldap_user_filter($this->user->data['username']),
(empty($this->config['ldap_email'])) ?
array(htmlspecialchars_decode($this->config['ldap_uid'], ENT_COMPAT)) :
array(htmlspecialchars_decode($this->config['ldap_uid'], ENT_COMPAT), htmlspecialchars_decode($this->config['ldap_email'], ENT_COMPAT)),
array(html_entity_decode($this->config['ldap_uid'], ENT_COMPAT)) :
array(html_entity_decode($this->config['ldap_uid'], ENT_COMPAT), html_entity_decode($this->config['ldap_email'], ENT_COMPAT)),
0,
1
);
@@ -115,7 +115,7 @@ class ldap extends base
return $this->language->lang('LDAP_NO_IDENTITY', $this->user->data['username']);
}
if (!empty($this->config['ldap_email']) && !isset($result[0][htmlspecialchars_decode($this->config['ldap_email'])]))
if (!empty($this->config['ldap_email']) && !isset($result[0][html_entity_decode($this->config['ldap_email'])]))
{
return $this->language->lang('LDAP_NO_EMAIL');
}
@@ -180,7 +180,7 @@ class ldap extends base
if ($this->config['ldap_user'] || $this->config['ldap_password'])
{
if (!@ldap_bind($ldap, htmlspecialchars_decode($this->config['ldap_user'], ENT_COMPAT), htmlspecialchars_decode($this->config['ldap_password'], ENT_COMPAT)))
if (!@ldap_bind($ldap, html_entity_decode($this->config['ldap_user'], ENT_COMPAT), html_entity_decode($this->config['ldap_password'], ENT_COMPAT)))
{
return array(
'status' => LOGIN_ERROR_EXTERNAL_AUTH,
@@ -192,11 +192,11 @@ class ldap extends base
$search = @ldap_search(
$ldap,
htmlspecialchars_decode($this->config['ldap_base_dn'], ENT_COMPAT),
html_entity_decode($this->config['ldap_base_dn'], ENT_COMPAT),
$this->ldap_user_filter($username),
(empty($this->config['ldap_email'])) ?
array(htmlspecialchars_decode($this->config['ldap_uid'], ENT_COMPAT)) :
array(htmlspecialchars_decode($this->config['ldap_uid'], ENT_COMPAT), htmlspecialchars_decode($this->config['ldap_email'], ENT_COMPAT)),
array(html_entity_decode($this->config['ldap_uid'], ENT_COMPAT)) :
array(html_entity_decode($this->config['ldap_uid'], ENT_COMPAT), html_entity_decode($this->config['ldap_email'], ENT_COMPAT)),
0,
1
);
@@ -205,7 +205,7 @@ class ldap extends base
if (is_array($ldap_result) && count($ldap_result) > 1)
{
if (@ldap_bind($ldap, $ldap_result[0]['dn'], htmlspecialchars_decode($password, ENT_COMPAT)))
if (@ldap_bind($ldap, $ldap_result[0]['dn'], html_entity_decode($password, ENT_COMPAT)))
{
@ldap_close($ldap);
@@ -257,7 +257,7 @@ class ldap extends base
$ldap_user_row = array(
'username' => $username,
'user_password' => '',
'user_email' => (!empty($this->config['ldap_email'])) ? utf8_htmlspecialchars($ldap_result[0][htmlspecialchars_decode($this->config['ldap_email'], ENT_COMPAT)][0]) : '',
'user_email' => (!empty($this->config['ldap_email'])) ? utf8_htmlspecialchars($ldap_result[0][html_entity_decode($this->config['ldap_email'], ENT_COMPAT)][0]) : '',
'group_id' => (int) $row['group_id'],
'user_type' => USER_NORMAL,
'user_ip' => $this->user->ip,
@@ -337,7 +337,7 @@ class ldap extends base
*/
private function ldap_user_filter($username)
{
$filter = '(' . $this->config['ldap_uid'] . '=' . $this->ldap_escape(htmlspecialchars_decode($username, ENT_COMPAT)) . ')';
$filter = '(' . $this->config['ldap_uid'] . '=' . $this->ldap_escape(html_entity_decode($username, ENT_COMPAT)) . ')';
if ($this->config['ldap_user_filter'])
{
$_filter = ($this->config['ldap_user_filter'][0] == '(' && substr($this->config['ldap_user_filter'], -1) == ')') ? $this->config['ldap_user_filter'] : "({$this->config['ldap_user_filter']})";

View File

@@ -18,6 +18,12 @@ namespace phpbb\cache;
*/
class service
{
/** @var string Name of event used for cache purging */
private const PURGE_DEFERRED_ON_EVENT = 'core.garbage_collection';
/** @var bool Flag whether cache purge has been deferred */
private $cache_purge_deferred = false;
/**
* Cache driver.
*
@@ -39,6 +45,9 @@ class service
*/
protected $db;
/** @var \phpbb\event\dispatcher phpBB Event dispatcher */
protected $dispatcher;
/**
* Root path.
*
@@ -59,14 +68,16 @@ class service
* @param \phpbb\cache\driver\driver_interface $driver The cache driver
* @param \phpbb\config\config $config The config
* @param \phpbb\db\driver\driver_interface $db Database connection
* @param \phpbb\event\dispatcher $dispatcher Event dispatcher
* @param string $phpbb_root_path Root path
* @param string $php_ext PHP file extension
*/
public function __construct(\phpbb\cache\driver\driver_interface $driver, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, $phpbb_root_path, $php_ext)
public function __construct(\phpbb\cache\driver\driver_interface $driver, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\event\dispatcher $dispatcher, $phpbb_root_path, $php_ext)
{
$this->set_driver($driver);
$this->config = $config;
$this->db = $db;
$this->dispatcher = $dispatcher;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
}
@@ -81,6 +92,25 @@ class service
return $this->driver;
}
/**
* Deferred purge of the cache.
*
* A deferred purge will be executed after rendering a page.
* It is recommended to be used in cases where an instant purge of the cache
* is not required, i.e. when the goal of a cache purge is to start from a
* clear cache at the next page load.
*
* @return void
*/
public function deferred_purge(): void
{
if (!$this->cache_purge_deferred)
{
$this->dispatcher->addListener(self::PURGE_DEFERRED_ON_EVENT, [$this, 'purge']);
$this->cache_purge_deferred = true;
}
}
/**
* Replaces the cache driver used by this cache service.
*

View File

@@ -209,7 +209,7 @@ class activate extends command
$messenger->set_addresses($user_row);
$messenger->anti_abuse_headers($this->config, $this->user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT))
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT))
);
$messenger->send(NOTIFY_EMAIL);

View File

@@ -312,9 +312,9 @@ class add extends command
$messenger->to($this->data['email'], $this->data['username']);
$messenger->anti_abuse_headers($this->config, $this->user);
$messenger->assign_vars(array(
'WELCOME_MSG' => htmlspecialchars_decode($this->language->lang('WELCOME_SUBJECT', $this->config['sitename']), ENT_COMPAT),
'USERNAME' => htmlspecialchars_decode($this->data['username'], ENT_COMPAT),
'PASSWORD' => htmlspecialchars_decode($this->data['new_password'], ENT_COMPAT),
'WELCOME_MSG' => html_entity_decode($this->language->lang('WELCOME_SUBJECT', $this->config['sitename']), ENT_COMPAT),
'USERNAME' => html_entity_decode($this->data['username'], ENT_COMPAT),
'PASSWORD' => html_entity_decode($this->data['new_password'], ENT_COMPAT),
'U_ACTIVATE' => generate_board_url() . "/ucp.{$this->php_ext}?mode=activate&u=$user_id&k=$user_actkey")
);

View File

@@ -363,8 +363,8 @@ class helper
if ($task)
{
$url = $task->get_url();
$this->template->assign_var('RUN_CRON_TASK', '<img src="' . $url . '" width="1" height="1" alt="cron" />');
$cron_task_tag = $task->get_html_tag();
$this->template->assign_var('RUN_CRON_TASK', $cron_task_tag);
}
else
{

View File

@@ -59,6 +59,11 @@ class manager
*/
protected $php_ext;
/**
* @var \phpbb\template\template
*/
protected $template;
/**
* Constructor. Loads all available tasks.
*
@@ -66,13 +71,15 @@ class manager
* @param helper $routing_helper Routing helper
* @param string $phpbb_root_path Relative path to phpBB root
* @param string $php_ext PHP file extension
* @param \phpbb\template\template $template
*/
public function __construct(ContainerInterface $phpbb_container, helper $routing_helper, $phpbb_root_path, $php_ext)
public function __construct(ContainerInterface $phpbb_container, helper $routing_helper, $phpbb_root_path, $php_ext, $template)
{
$this->phpbb_container = $phpbb_container;
$this->routing_helper = $routing_helper;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
$this->template = $template;
}
/**
@@ -193,6 +200,6 @@ class manager
*/
public function wrap_task(\phpbb\cron\task\task $task)
{
return new wrapper($task, $this->routing_helper, $this->phpbb_root_path, $this->php_ext);
return new wrapper($task, $this->routing_helper, $this->phpbb_root_path, $this->php_ext, $this->template);
}
}

View File

@@ -41,6 +41,11 @@ class wrapper
*/
protected $php_ext;
/**
* @var \phpbb\template\template
*/
protected $template;
/**
* Constructor.
*
@@ -50,13 +55,15 @@ class wrapper
* @param helper $routing_helper Routing helper for route generation
* @param string $phpbb_root_path Relative path to phpBB root
* @param string $php_ext PHP file extension
* @param \phpbb\template\template $template
*/
public function __construct(task $task, helper $routing_helper, $phpbb_root_path, $php_ext)
public function __construct(task $task, helper $routing_helper, $phpbb_root_path, $php_ext, $template)
{
$this->task = $task;
$this->routing_helper = $routing_helper;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
$this->template = $template;
}
/**
@@ -105,6 +112,23 @@ class wrapper
return $this->routing_helper->route('phpbb_cron_run', $params);
}
/**
* Returns HTML for an invisible `img` tag that can be displayed on page
* load to trigger a request to the relevant cron task endpoint.
*
* @return string HTML to render to trigger cron task
*/
public function get_html_tag()
{
$this->template->set_filenames([
'cron_html_tag' => 'cron.html',
]);
$this->template->assign_var('CRON_TASK_URL', $this->get_url());
return $this->template->assign_display('cron_html_tag');
}
/**
* Forwards all other method calls to the wrapped task implementation.
*

View File

@@ -0,0 +1,82 @@
<?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\v33x;
class profilefield_youtube_update extends \phpbb\db\migration\migration
{
protected $youtube_url_matcher = 'https:\\/\\/(www\\.)?youtube\\.com\\/.+';
public function effectively_installed()
{
$profile_fields = $this->table_prefix . 'profile_fields';
$result = $this->db->sql_query(
"SELECT field_validation
FROM $profile_fields
WHERE field_name = 'phpbb_youtube'"
);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
return !$row || $row['field_validation'] === $this->youtube_url_matcher;
}
public static function depends_on()
{
return ['\phpbb\db\migration\data\v33x\v337'];
}
public function update_data()
{
return [['custom', [[$this, 'update_youtube_profile_field']]]];
}
public function update_youtube_profile_field()
{
$profile_fields = $this->table_prefix . 'profile_fields';
$profile_fields_data = $this->table_prefix . 'profile_fields_data';
$field_validation = $this->db->sql_escape($this->youtube_url_matcher);
$min_length = strlen('https://youtube.com/c/') + 1;
$this->db->sql_query(
"UPDATE $profile_fields SET
field_length = '40',
field_minlen = '$min_length',
field_maxlen = '255',
field_validation = '$field_validation',
field_contact_url = '%s'
WHERE field_name = 'phpbb_youtube'"
);
$yt_profile_field = 'pf_phpbb_youtube';
$prepend_legacy_youtube_url = $this->db->sql_concatenate(
"'https://youtube.com/user/'", $yt_profile_field
);
$is_not_already_youtube_url = $this->db->sql_not_like_expression(
$this->db->get_any_char()
. 'youtube.com/'
. $this->db->get_any_char()
);
$this->db->sql_query(
"UPDATE $profile_fields_data SET
$yt_profile_field = $prepend_legacy_youtube_url
WHERE $yt_profile_field <> ''
AND $yt_profile_field $is_not_already_youtube_url"
);
}
}

View File

@@ -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\v33x;
class v338 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return version_compare($this->config['version'], '3.3.8', '>=');
}
public static function depends_on()
{
return [
'\phpbb\db\migration\data\v33x\v338rc1',
];
}
public function update_data()
{
return [
['config.update', ['version', '3.3.8']],
];
}
}

View File

@@ -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\v33x;
class v338rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return version_compare($this->config['version'], '3.3.8-RC1', '>=');
}
public static function depends_on()
{
return [
'\phpbb\db\migration\data\v33x\profilefield_youtube_update',
];
}
public function update_data()
{
return [
['config.update', ['version', '3.3.8-RC1']],
];
}
}

View File

@@ -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\v33x;
class v339rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return version_compare($this->config['version'], '3.3.9-RC1', '>=');
}
public static function depends_on()
{
return [
'\phpbb\db\migration\data\v33x\v338',
];
}
public function update_data()
{
return [
['config.update', ['version', '3.3.9-RC1']],
];
}
}

View File

@@ -229,7 +229,7 @@ class container_builder
}
}
if ($this->compile_container && $this->config_php_file)
if ($this->config_php_file)
{
$this->container->set('config.php', $this->config_php_file);
}

View File

@@ -197,7 +197,7 @@ class manager
if ($this->cache)
{
$this->cache->purge();
$this->cache->deferred_purge();
}
}

View File

@@ -97,7 +97,7 @@ class helper
if (empty($offset_string))
{
$zone_offset = $this->user->create_datetime()->getOffset();
$offset_string = phpbb_format_timezone_offset($zone_offset);
$offset_string = phpbb_format_timezone_offset($zone_offset, true);
}
return gmdate("Y-m-d\TH:i:s", $time + $zone_offset) . $offset_string;

View File

@@ -418,7 +418,7 @@ class ajax_iohandler extends iohandler_base
if ($msg !== null)
{
$link_properties['msg'] = htmlspecialchars_decode($this->language->lang($msg), ENT_COMPAT);
$link_properties['msg'] = html_entity_decode($this->language->lang($msg), ENT_COMPAT);
}
$this->download[] = $link_properties;

View File

@@ -108,7 +108,7 @@ abstract class iohandler_base implements iohandler_interface
{
if (!is_array($error_title) && strpos($error_title, '<br />') !== false)
{
$error_title = strip_tags(htmlspecialchars_decode($error_title, ENT_COMPAT));
$error_title = strip_tags(html_entity_decode($error_title, ENT_COMPAT));
}
$this->errors[] = $this->translate_message($error_title, $error_description);
}

View File

@@ -120,8 +120,8 @@ class notify_user extends \phpbb\install\task_base
$messenger->to($this->config['board_email'], $this->install_config->get('admin_name'));
$messenger->anti_abuse_headers($this->config, $this->user);
$messenger->assign_vars(array(
'USERNAME' => htmlspecialchars_decode($this->install_config->get('admin_name'), ENT_COMPAT),
'PASSWORD' => htmlspecialchars_decode($this->install_config->get('admin_passwd'), ENT_COMPAT))
'USERNAME' => html_entity_decode($this->install_config->get('admin_name'), ENT_COMPAT),
'PASSWORD' => html_entity_decode($this->install_config->get('admin_passwd'), ENT_COMPAT))
);
$messenger->send(NOTIFY_EMAIL);
}

View File

@@ -54,7 +54,7 @@ class obtain_server_data extends \phpbb\install\task_base implements \phpbb\inst
$server_port = $this->io_handler->get_server_variable('SERVER_PORT', 0);
// HTTP_HOST is having the correct browser url in most cases...
$server_name = strtolower(htmlspecialchars_decode($this->io_handler->get_header_variable(
$server_name = strtolower(html_entity_decode($this->io_handler->get_header_variable(
'Host',
$this->io_handler->get_server_variable('SERVER_NAME')
), ENT_COMPAT));
@@ -65,11 +65,11 @@ class obtain_server_data extends \phpbb\install\task_base implements \phpbb\inst
$server_name = substr($server_name, 0, strpos($server_name, ':'));
}
$script_path = htmlspecialchars_decode($this->io_handler->get_server_variable('PHP_SELF'), ENT_COMPAT);
$script_path = html_entity_decode($this->io_handler->get_server_variable('PHP_SELF'), ENT_COMPAT);
if (!$script_path)
{
$script_path = htmlspecialchars_decode($this->io_handler->get_server_variable('REQUEST_URI'), ENT_COMPAT);
$script_path = html_entity_decode($this->io_handler->get_server_variable('REQUEST_URI'), ENT_COMPAT);
}
$script_path = str_replace(array('\\', '//'), '/', $script_path);

View File

@@ -87,7 +87,7 @@ class obtain_update_ftp_data extends task_base
$ftp_host = $this->iohandler->get_input('ftp_host', '', true);
$ftp_user = $this->iohandler->get_input('ftp_user', '', true);
$ftp_pass = htmlspecialchars_decode($this->iohandler->get_input('ftp_pass', '', true), ENT_COMPAT);
$ftp_pass = html_entity_decode($this->iohandler->get_input('ftp_pass', '', true), ENT_COMPAT);
$ftp_path = $this->iohandler->get_input('ftp_path', '', true);
$ftp_port = $this->iohandler->get_input('ftp_port', 21);
$ftp_time = $this->iohandler->get_input('ftp_timeout', 10);

View File

@@ -262,13 +262,13 @@ class message
$messenger->headers('X-AntiAbuse: Username - ' . $this->sender_username);
}
$messenger->subject(htmlspecialchars_decode($this->subject, ENT_COMPAT));
$messenger->subject(html_entity_decode($this->subject, ENT_COMPAT));
$messenger->assign_vars(array(
'BOARD_CONTACT' => $contact,
'TO_USERNAME' => htmlspecialchars_decode($recipient['to_name'], ENT_COMPAT),
'FROM_USERNAME' => htmlspecialchars_decode($this->sender_name, ENT_COMPAT),
'MESSAGE' => htmlspecialchars_decode($this->body, ENT_COMPAT))
'TO_USERNAME' => html_entity_decode($recipient['to_name'], ENT_COMPAT),
'FROM_USERNAME' => html_entity_decode($this->sender_name, ENT_COMPAT),
'MESSAGE' => html_entity_decode($this->body, ENT_COMPAT))
);
if (count($this->template_vars))

View File

@@ -122,7 +122,7 @@ class topic_form extends form
$this->message->set_template('email_notify');
$this->message->set_template_vars(array(
'TOPIC_NAME' => htmlspecialchars_decode($this->topic_row['topic_title'], ENT_COMPAT),
'TOPIC_NAME' => html_entity_decode($this->topic_row['topic_title'], ENT_COMPAT),
'U_TOPIC' => generate_board_url() . '/viewtopic.' . $this->phpEx . '?t=' . $this->topic_id,
));
$this->message->set_body($this->body);

View File

@@ -150,7 +150,7 @@ class admin_activate_user extends \phpbb\notification\type\base
$username = $this->user_loader->get_username($this->item_id, 'username');
return array(
'USERNAME' => htmlspecialchars_decode($username, ENT_COMPAT),
'USERNAME' => html_entity_decode($username, ENT_COMPAT),
'U_USER_DETAILS' => "{$board_url}/memberlist.{$this->php_ext}?mode=viewprofile&u={$this->item_id}",
'U_ACTIVATE' => "{$board_url}/ucp.{$this->php_ext}?mode=activate&u={$this->item_id}&k={$this->get_data('user_actkey')}",
);

View File

@@ -120,7 +120,7 @@ class disapprove_post extends \phpbb\notification\type\approve_post
public function get_email_template_variables()
{
return array_merge(parent::get_email_template_variables(), array(
'REASON' => htmlspecialchars_decode($this->get_data('disapprove_reason'), ENT_COMPAT),
'REASON' => html_entity_decode($this->get_data('disapprove_reason'), ENT_COMPAT),
));
}

View File

@@ -120,7 +120,7 @@ class disapprove_topic extends \phpbb\notification\type\approve_topic
public function get_email_template_variables()
{
return array_merge(parent::get_email_template_variables(), array(
'REASON' => htmlspecialchars_decode($this->get_data('disapprove_reason'), ENT_COMPAT),
'REASON' => html_entity_decode($this->get_data('disapprove_reason'), ENT_COMPAT),
));
}

View File

@@ -130,17 +130,17 @@ class forum extends \phpbb\notification\type\post
}
return [
'AUTHOR_NAME' => htmlspecialchars_decode($username, ENT_COMPAT),
'FORUM_NAME' => htmlspecialchars_decode(censor_text($this->get_data('forum_name')), ENT_COMPAT),
'POST_SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($username, ENT_COMPAT),
'FORUM_NAME' => html_entity_decode(censor_text($this->get_data('forum_name')), ENT_COMPAT),
'POST_SUBJECT' => html_entity_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => html_entity_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'U_VIEW_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?p={$this->item_id}#p{$this->item_id}",
'U_NEWEST_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}&e=1&view=unread#unread",
'U_TOPIC' => generate_board_url() . "/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}",
'U_VIEW_TOPIC' => generate_board_url() . "/viewtopic.{$this->php_ext}?f={$this->get_data('forum_id')}&t={$this->item_parent_id}",
'U_NEWEST_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?t={$this->item_parent_id}&e=1&view=unread#unread",
'U_TOPIC' => generate_board_url() . "/viewtopic.{$this->php_ext}?t={$this->item_parent_id}",
'U_VIEW_TOPIC' => generate_board_url() . "/viewtopic.{$this->php_ext}?t={$this->item_parent_id}",
'U_FORUM' => generate_board_url() . "/viewforum.{$this->php_ext}?f={$this->get_data('forum_id')}",
'U_STOP_WATCHING_FORUM' => generate_board_url() . "/viewtopic.{$this->php_ext}?uid={$this->user_id}&f={$this->get_data('forum_id')}&t={$this->item_parent_id}&unwatch=forum",
'U_STOP_WATCHING_FORUM' => generate_board_url() . "/viewforum.{$this->php_ext}?uid={$this->user_id}&f={$this->get_data('forum_id')}&unwatch=forum",
];
}
}

View File

@@ -133,8 +133,8 @@ class group_request extends \phpbb\notification\type\base
$user_data = $this->user_loader->get_user($this->item_id);
return array(
'GROUP_NAME' => htmlspecialchars_decode($this->get_data('group_name'), ENT_COMPAT),
'REQUEST_USERNAME' => htmlspecialchars_decode($user_data['username'], ENT_COMPAT),
'GROUP_NAME' => html_entity_decode($this->get_data('group_name'), ENT_COMPAT),
'REQUEST_USERNAME' => html_entity_decode($user_data['username'], ENT_COMPAT),
'U_PENDING' => generate_board_url() . "/ucp.{$this->php_ext}?i=groups&mode=manage&action=list&g={$this->item_parent_id}",
'U_GROUP' => generate_board_url() . "/memberlist.{$this->php_ext}?mode=group&g={$this->item_parent_id}",

View File

@@ -164,8 +164,8 @@ class pm extends \phpbb\notification\type\base
$user_data = $this->user_loader->get_user($this->get_data('from_user_id'));
return array(
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username'], ENT_COMPAT),
'SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($user_data['username'], ENT_COMPAT),
'SUBJECT' => html_entity_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'U_VIEW_MESSAGE' => generate_board_url() . '/ucp.' . $this->php_ext . "?i=pm&mode=view&p={$this->item_id}",
);

View File

@@ -262,9 +262,9 @@ class post extends \phpbb\notification\type\base
}
return array(
'AUTHOR_NAME' => htmlspecialchars_decode($username, ENT_COMPAT),
'POST_SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($username, ENT_COMPAT),
'POST_SUBJECT' => html_entity_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => html_entity_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'U_VIEW_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?p={$this->item_id}#p{$this->item_id}",
'U_NEWEST_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?t={$this->item_parent_id}&e=1&view=unread#unread",

View File

@@ -168,7 +168,7 @@ class quote extends \phpbb\notification\type\post
$user_data = $this->user_loader->get_user($this->get_data('poster_id'));
return array_merge(parent::get_email_template_variables(), array(
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username'], ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($user_data['username'], ENT_COMPAT),
));
}

View File

@@ -143,11 +143,11 @@ class report_pm extends \phpbb\notification\type\pm
$user_data = $this->user_loader->get_user($this->get_data('from_user_id'));
return [
'AUTHOR_NAME' => htmlspecialchars_decode($user_data['username'], ENT_COMPAT),
'SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($user_data['username'], ENT_COMPAT),
'SUBJECT' => html_entity_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
/** @deprecated 3.2.6-RC1 (to be removed in 4.0.0) use {SUBJECT} instead in report_pm.txt */
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'TOPIC_TITLE' => html_entity_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'U_VIEW_REPORT' => generate_board_url() . "/mcp.{$this->php_ext}?r={$this->item_parent_id}&i=pm_reports&mode=pm_report_details",
];

View File

@@ -104,9 +104,9 @@ class report_pm_closed extends \phpbb\notification\type\pm
$closer_username = $this->user_loader->get_username($this->get_data('closer_id'), 'username');
return [
'AUTHOR_NAME' => htmlspecialchars_decode($sender_username, ENT_COMPAT),
'CLOSER_NAME' => htmlspecialchars_decode($closer_username, ENT_COMPAT),
'SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($sender_username, ENT_COMPAT),
'CLOSER_NAME' => html_entity_decode($closer_username, ENT_COMPAT),
'SUBJECT' => html_entity_decode(censor_text($this->get_data('message_subject')), ENT_COMPAT),
'U_VIEW_MESSAGE'=> generate_board_url() . "/ucp.{$this->php_ext}?i=pm&amp;mode=view&amp;p={$this->item_id}",
];

View File

@@ -110,8 +110,8 @@ class report_post extends \phpbb\notification\type\post_in_queue
$board_url = generate_board_url();
return array(
'POST_SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'POST_SUBJECT' => html_entity_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => html_entity_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'U_VIEW_REPORT' => "{$board_url}/mcp.{$this->php_ext}?p={$this->item_id}&i=reports&mode=report_details#reports",
'U_VIEW_POST' => "{$board_url}/viewtopic.{$this->php_ext}?p={$this->item_id}#p{$this->item_id}",

View File

@@ -111,10 +111,10 @@ class report_post_closed extends \phpbb\notification\type\post
$closer_username = $this->user_loader->get_username($this->get_data('closer_id'), 'username');
return [
'AUTHOR_NAME' => htmlspecialchars_decode($post_username, ENT_COMPAT),
'CLOSER_NAME' => htmlspecialchars_decode($closer_username, ENT_COMPAT),
'POST_SUBJECT' => htmlspecialchars_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($post_username, ENT_COMPAT),
'CLOSER_NAME' => html_entity_decode($closer_username, ENT_COMPAT),
'POST_SUBJECT' => html_entity_decode(censor_text($this->get_data('post_subject')), ENT_COMPAT),
'TOPIC_TITLE' => html_entity_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'U_VIEW_POST' => generate_board_url() . "/viewtopic.{$this->php_ext}?p={$this->item_id}#p{$this->item_id}",
];

View File

@@ -217,9 +217,9 @@ class topic extends \phpbb\notification\type\base
}
return array(
'AUTHOR_NAME' => htmlspecialchars_decode($username, ENT_COMPAT),
'FORUM_NAME' => htmlspecialchars_decode($this->get_data('forum_name'), ENT_COMPAT),
'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'AUTHOR_NAME' => html_entity_decode($username, ENT_COMPAT),
'FORUM_NAME' => html_entity_decode($this->get_data('forum_name'), ENT_COMPAT),
'TOPIC_TITLE' => html_entity_decode(censor_text($this->get_data('topic_title')), ENT_COMPAT),
'U_TOPIC' => "{$board_url}/viewtopic.{$this->php_ext}?t={$this->item_id}",
'U_VIEW_TOPIC' => "{$board_url}/viewtopic.{$this->php_ext}?t={$this->item_id}",

View File

@@ -163,7 +163,7 @@ class plupload
'S_PLUPLOAD' => true,
'FILTERS' => $filters,
'CHUNK_SIZE' => $chunk_size,
'S_PLUPLOAD_URL' => htmlspecialchars_decode($s_action, ENT_COMPAT),
'S_PLUPLOAD_URL' => html_entity_decode($s_action, ENT_COMPAT),
'MAX_ATTACHMENTS' => $max_files,
'ATTACH_ORDER' => ($this->config['display_order']) ? 'asc' : 'desc',
'L_TOO_MANY_ATTACHMENTS' => $this->user->lang('TOO_MANY_ATTACHMENTS', $max_files),

View File

@@ -232,7 +232,7 @@ class fulltext_mysql extends \phpbb\search\base
}
// Filter out as above
$split_keywords = preg_replace("#[\n\r\t]+#", ' ', trim(htmlspecialchars_decode($keywords, ENT_COMPAT)));
$split_keywords = preg_replace("#[\n\r\t]+#", ' ', trim(html_entity_decode($keywords, ENT_COMPAT)));
// Split words
$split_keywords = preg_replace('#([^\p{L}\p{N}\'*"()])#u', '$1$1', str_replace('\'\'', '\' \'', trim($split_keywords)));
@@ -568,7 +568,7 @@ class fulltext_mysql extends \phpbb\search\base
);
extract($this->phpbb_dispatcher->trigger_event('core.search_mysql_keywords_main_query_before', compact($vars)));
$sql_select = ($type == 'posts') ? 'p.post_id' : 'DISTINCT t.topic_id';
$sql_select = ($type == 'posts') ? 'DISTINCT p.post_id' : 'DISTINCT t.topic_id';
$sql_select .= $sort_by_sql[$sort_key] ? ", {$sort_by_sql[$sort_key]}" : '';
$sql_from = ($join_topic) ? TOPICS_TABLE . ' t, ' : '';
$field = ($type == 'posts') ? 'post_id' : 'topic_id';
@@ -597,7 +597,7 @@ class fulltext_mysql extends \phpbb\search\base
$sql = "SELECT $sql_select
FROM $sql_from$sql_sort_table" . POSTS_TABLE . " p
WHERE MATCH ($sql_match) AGAINST ('" . $this->db->sql_escape(htmlspecialchars_decode($this->search_query, ENT_COMPAT)) . "' IN BOOLEAN MODE)
WHERE MATCH ($sql_match) AGAINST ('" . $this->db->sql_escape(html_entity_decode($this->search_query, ENT_COMPAT)) . "' IN BOOLEAN MODE)
$sql_where_options
ORDER BY $sql_sort";
$this->db->sql_return_on_error(true);
@@ -613,7 +613,7 @@ class fulltext_mysql extends \phpbb\search\base
// if the total result count is not cached yet, retrieve it from the db
if (!$result_count && count($id_ary))
{
$sql_found_rows = str_replace("SELECT $sql_select", "SELECT COUNT(*) as result_count", $sql);
$sql_found_rows = str_replace("SELECT $sql_select", "SELECT COUNT($sql_select) as result_count", $sql);
$result = $this->db->sql_query($sql_found_rows);
$result_count = (int) $this->db->sql_fetchfield('result_count');
$this->db->sql_freeresult($result);

View File

@@ -634,7 +634,7 @@ class fulltext_native extends \phpbb\search\base
$w_num = 0;
$sql_array = array(
'SELECT' => ($type == 'posts') ? 'p.post_id' : 'p.topic_id',
'SELECT' => ($type == 'posts') ? 'DISTINCT p.post_id' : 'DISTINCT p.topic_id',
'FROM' => array(
SEARCH_WORDMATCH_TABLE => array(),
SEARCH_WORDLIST_TABLE => array(),
@@ -984,9 +984,9 @@ class fulltext_native extends \phpbb\search\base
// If using mysql and the total result count is not calculated yet, get it from the db
if (!$total_results && $is_mysql)
{
$sql_count = str_replace("SELECT {$sql_array['SELECT']}", "SELECT COUNT(DISTINCT {$sql_array['SELECT']}) as total_results", $sql);
$sql_count = str_replace("SELECT {$sql_array['SELECT']}", "SELECT COUNT({$sql_array['SELECT']}) as total_results", $sql);
$result = $this->db->sql_query($sql_count);
$total_results = (int) $this->db->sql_fetchfield('total_results');
$total_results = $sql_array['GROUP_BY'] ? count($this->db->sql_fetchrowset($result)) : $this->db->sql_fetchfield('total_results');
$this->db->sql_freeresult($result);
if (!$total_results)
@@ -1824,7 +1824,7 @@ class fulltext_native extends \phpbb\search\base
/**
* Replace HTML entities and NCRs
*/
$text = htmlspecialchars_decode(utf8_decode_ncr($text), ENT_QUOTES);
$text = html_entity_decode(utf8_decode_ncr($text), ENT_QUOTES);
/**
* Normalize to NFC

View File

@@ -204,7 +204,7 @@ class fulltext_postgres extends \phpbb\search\base
}
// Filter out as above
$split_keywords = preg_replace("#[\"\n\r\t]+#", ' ', trim(htmlspecialchars_decode($keywords, ENT_COMPAT)));
$split_keywords = preg_replace("#[\"\n\r\t]+#", ' ', trim(html_entity_decode($keywords, ENT_COMPAT)));
// Split words
$split_keywords = preg_replace('#([^\p{L}\p{N}\'*"()])#u', '$1$1', str_replace('\'\'', '\' \'', trim($split_keywords)));
@@ -550,7 +550,7 @@ class fulltext_postgres extends \phpbb\search\base
// if the total result count is not cached yet, retrieve it from the db
if (!$result_count)
{
$sql_count = "SELECT COUNT(*) as result_count
$sql_count = "SELECT COUNT(DISTINCT " . (($type == 'posts') ? 'p.post_id' : 't.topic_id') . ") as result_count
$sql_from
$sql_where";
$result = $this->db->sql_query($sql_count);

View File

@@ -49,7 +49,7 @@ class session
// If we are unable to get the script name we use REQUEST_URI as a failover and note it within the page array for easier support...
if (!$script_name)
{
$script_name = htmlspecialchars_decode($request->server('REQUEST_URI'), ENT_COMPAT);
$script_name = html_entity_decode($request->server('REQUEST_URI'), ENT_COMPAT);
$script_name = (($pos = strpos($script_name, '?')) !== false) ? substr($script_name, 0, $pos) : $script_name;
$page_array['failover'] = 1;
}
@@ -166,7 +166,7 @@ class session
global $config, $request;
// Get hostname
$host = htmlspecialchars_decode($request->header('Host', $request->server('SERVER_NAME')), ENT_COMPAT);
$host = html_entity_decode($request->header('Host', $request->server('SERVER_NAME')), ENT_COMPAT);
// Should be a string and lowered
$host = (string) strtolower($host);
@@ -289,7 +289,7 @@ class session
// Why no forwarded_for et al? Well, too easily spoofed. With the results of my recent requests
// it's pretty clear that in the majority of cases you'll at least be left with a proxy/cache ip.
$ip = htmlspecialchars_decode($request->server('REMOTE_ADDR'), ENT_COMPAT);
$ip = html_entity_decode($request->server('REMOTE_ADDR'), ENT_COMPAT);
$ip = preg_replace('# {2,}#', ' ', str_replace(',', ' ', $ip));
/**

View File

@@ -62,27 +62,27 @@ class assets_bag
}
/**
* Returns the HTML code to includes all css assets
* Returns the HTML code to include all css assets
*
* @return string
*/
public function get_stylesheets_content()
public function get_stylesheets_content(): string
{
$output = '';
foreach ($this->stylesheets as $stylesheet)
{
$output .= "<link href=\"{$stylesheet->get_url()}\" rel=\"stylesheet\" media=\"screen\" />\n";
$output .= "<link href=\"{$stylesheet->get_url()}\" rel=\"stylesheet\" media=\"screen\">\n";
}
return $output;
}
/**
* Returns the HTML code to includes all js assets
* Returns the HTML code to include all js assets
*
* @return string
*/
public function get_scripts_content()
public function get_scripts_content(): string
{
$output = '';
foreach ($this->scripts as $script)

View File

@@ -227,7 +227,7 @@ class data_access
{
foreach ($columns as $column)
{
$row[$column] = htmlspecialchars_decode($row[$column], ENT_COMPAT);
$row[$column] = html_entity_decode($row[$column], ENT_COMPAT);
}
}

View File

@@ -152,7 +152,7 @@ class renderer implements \phpbb\textformatter\renderer_interface
* @param \phpbb\user $user
* @param \phpbb\config\config $config
* @param \phpbb\auth\auth $auth
* @return null
* @return void
*/
public function configure_user(\phpbb\user $user, \phpbb\config\config $config, \phpbb\auth\auth $auth)
{
@@ -175,10 +175,10 @@ class renderer implements \phpbb\textformatter\renderer_interface
// Set this user's style id and other parameters
$this->renderer->setParameters(array(
'S_IS_BOT' => $user->data['is_bot'],
'S_REGISTERED_USER' => $user->data['is_registered'],
'S_USER_LOGGED_IN' => ($user->data['user_id'] != ANONYMOUS),
'STYLE_ID' => $user->style['style_id'],
'S_IS_BOT' => $user->data['is_bot'] ?? false,
'S_REGISTERED_USER' => $user->data['is_registered'] ?? false,
'S_USER_LOGGED_IN' => ($user->data['user_id'] != ANONYMOUS),
'STYLE_ID' => $user->style['style_id'],
));
}

View File

@@ -265,7 +265,7 @@ class reset_password
$messenger->anti_abuse_headers($this->config, $this->user);
$messenger->assign_vars([
'USERNAME' => htmlspecialchars_decode($user_row['username'], ENT_COMPAT),
'USERNAME' => html_entity_decode($user_row['username'], ENT_COMPAT),
'U_RESET_PASSWORD' => generate_board_url(true) . $this->helper->route('phpbb_ucp_reset_password_controller', [
'u' => $user_row['user_id'],
'token' => $reset_token,

View File

@@ -141,7 +141,7 @@ class user_loader
{
$this->load_users(array($user_id));
return $this->get_user($user_id);
return $user_id != ANONYMOUS ? $this->get_user($user_id) : $this->users[$user_id] ?? false;
}
return $this->get_user(ANONYMOUS);

View File

@@ -678,16 +678,16 @@ if ($keywords || $author || $author_id || $search_id || $submit)
$hilit = phpbb_clean_search_string(str_replace(array('+', '-', '|', '(', ')', '&quot;'), ' ', $keywords));
$hilit = str_replace(' ', '|', $hilit);
$u_hilit = urlencode(htmlspecialchars_decode(str_replace('|', ' ', $hilit), ENT_COMPAT));
$u_hilit = urlencode(html_entity_decode(str_replace('|', ' ', $hilit), ENT_COMPAT));
$u_show_results = '&amp;sr=' . $show_results;
$u_search_forum = implode('&amp;fid%5B%5D=', $search_forum);
$u_search = append_sid("{$phpbb_root_path}search.$phpEx", $u_sort_param . $u_show_results);
$u_search .= ($search_id) ? '&amp;search_id=' . $search_id : '';
$u_search .= ($u_hilit) ? '&amp;keywords=' . urlencode(htmlspecialchars_decode($keywords, ENT_COMPAT)) : '';
$u_search .= ($u_hilit) ? '&amp;keywords=' . urlencode(html_entity_decode($keywords, ENT_COMPAT)) : '';
$u_search .= ($search_terms != 'all') ? '&amp;terms=' . $search_terms : '';
$u_search .= ($topic_id) ? '&amp;t=' . $topic_id : '';
$u_search .= ($author) ? '&amp;author=' . urlencode(htmlspecialchars_decode($author, ENT_COMPAT)) : '';
$u_search .= ($author) ? '&amp;author=' . urlencode(html_entity_decode($author, ENT_COMPAT)) : '';
$u_search .= ($author_id) ? '&amp;author_id=' . $author_id : '';
$u_search .= ($u_search_forum) ? '&amp;fid%5B%5D=' . $u_search_forum : '';
$u_search .= (!$search_child) ? '&amp;sc=0' : '';
@@ -1564,7 +1564,7 @@ if ($auth->acl_get('a_search'))
'KEYWORDS' => $keywords,
'TIME' => $user->format_date($row['search_time']),
'U_KEYWORDS' => append_sid("{$phpbb_root_path}search.$phpEx", 'keywords=' . urlencode(htmlspecialchars_decode($keywords, ENT_COMPAT)))
'U_KEYWORDS' => append_sid("{$phpbb_root_path}search.$phpEx", 'keywords=' . urlencode(html_entity_decode($keywords, ENT_COMPAT)))
));
}
$db->sql_freeresult($result);

View File

@@ -0,0 +1,7 @@
{#
Runs the cron task by triggering server request to the URL on load. `img` is
preferred over JS to ensure maximum compatibility. We use `class="sr-only"`
to hide visually and `aria-hidden="true"` to hide from screen-readers; using
`hidden` or `display: none` would prevent the task from running.
#}
<img class="sr-only" aria-hidden="true" src="{{ CRON_TASK_URL|e('html_attr') }}" width="1" height="1" alt="">

View File

@@ -21,8 +21,8 @@
# General Information about this style
name = prosilver
copyright = © phpBB Limited, 2007
style_version = 3.3.7
phpbb_version = 3.3.7
style_version = 3.3.9
phpbb_version = 3.3.9
# Defining a different template bitfield
# template_bitfield = //g=

View File

@@ -361,6 +361,17 @@ $('.display_post').click(function(e) {
$('#post_hidden' + postId).hide();
});
/**
* Display hidden post on post review page
*/
$('.display_post_review').on('click', function(e) {
e.preventDefault();
let $displayPostLink = $(this);
$displayPostLink.closest('.post-ignore').removeClass('post-ignore');
$displayPostLink.hide();
});
/**
* Toggle the member search panel in memberlist.php.
*

View File

@@ -89,7 +89,7 @@
<i class="icon fa-question fa-fw icon-blue" aria-hidden="true"></i><span class="sr-only">{L_POSTS_UNAPPROVED_FORUM}</span>
</a>
<!-- ENDIF -->
<!-- IF forumrow.LAST_POST_TIME -->
<!-- IF forumrow.LAST_POST_TIME_RFC3339 -->
<dfn>{L_LAST_POST}</dfn>
<!-- IF forumrow.S_DISPLAY_SUBJECT -->
<!-- EVENT forumlist_body_last_post_title_prepend -->

View File

@@ -60,7 +60,7 @@
<div>
<a id="bottom" class="anchor" accesskey="z"></a>
<!-- IF not S_IS_BOT -->{RUN_CRON_TASK}<!-- ENDIF -->
{% if not S_IS_BOT %}{{ RUN_CRON_TASK }}{% endif %}
</div>
<script src="{T_JQUERY_LINK}"></script>

View File

@@ -65,7 +65,9 @@
{BBCODE_STATUS}<br />
<!-- IF S_BBCODE_ALLOWED -->
{IMG_STATUS}<br />
<!-- IF S_BBCODE_FLASH -->
{FLASH_STATUS}<br />
<!-- ENDIF -->
{URL_STATUS}<br />
<!-- ENDIF -->
{SMILIES_STATUS}
@@ -181,16 +183,18 @@
</dl>
<!-- ENDIF -->
<!-- IF S_SOFTDELETE_ALLOWED or S_DELETE_ALLOWED -->
<hr class="dashed" />
{% if S_SOFTDELETE_ALLOWED || S_DELETE_ALLOWED %}
<hr class="dashed">
<dl>
<dt><label for="delete">{L_DELETE_POST}{L_COLON}</label></dt>
<dd><label for="delete"><input type="checkbox" name="delete" id="delete" {S_SOFTDELETE_CHECKED} /> {L_DELETE_POST_WARN}</label></dd>
<!-- IF S_DELETE_ALLOWED and S_SOFTDELETE_ALLOWED -->
<dd><label for="delete_permanent"><input type="checkbox" name="delete_permanent" id="delete_permanent" /> {L_DELETE_POST_PERMANENTLY}</label></dd>
<!-- ENDIF -->
<dt><label for="delete">{{ lang('DELETE_POST') ~ lang('COLON') }}</label></dt>
{% if S_SOFTDELETE_ALLOWED %}
<dd><label for="delete"><input type="checkbox" name="delete" id="delete" {{ S_SOFTDELETE_CHECKED }}> {{ lang('DELETE_POST_WARN') }}</label></dd>
{% endif %}
{% if S_DELETE_ALLOWED %}
<dd><label for="delete_permanent"><input type="checkbox" name="delete_permanent" id="delete_permanent"> {{ lang('DELETE_POST_PERMANENTLY') }}</label></dd>
{% endif %}
</dl>
<!-- ENDIF -->
{% endif %}
<!-- IF S_EDIT_REASON -->
<dl>

View File

@@ -66,13 +66,14 @@
<!-- ENDIF -->
<!-- IF .to_recipient -->
<dd class="recipients">
<ul class="recipients">
<!-- BEGIN to_recipient -->
<li>
<!-- IF to_recipient.IS_GROUP --><a href="{to_recipient.U_VIEW}"><strong>{to_recipient.NAME}</strong></a><!-- ELSE -->{to_recipient.NAME_FULL}<!-- ENDIF -->&nbsp;
<!-- IF not S_EDIT_POST --><input type="submit" name="remove_{to_recipient.TYPE}[{to_recipient.UG_ID}]" value="x" class="button2" /><!-- ENDIF -->
</li>
<!-- END to_recipient -->
<ul class="recipients">
<!-- BEGIN to_recipient -->
<li>
<!-- IF to_recipient.IS_GROUP --><a href="{to_recipient.U_VIEW}"><strong>{to_recipient.NAME}</strong></a><!-- ELSE -->{to_recipient.NAME_FULL}<!-- ENDIF -->&nbsp;
<!-- IF not S_EDIT_POST --><input type="submit" name="remove_{to_recipient.TYPE}[{to_recipient.UG_ID}]" value="x" class="button2" /><!-- ENDIF -->
</li>
<!-- END to_recipient -->
</ul>
</dd>
<!-- ENDIF -->
</dl>

View File

@@ -6,7 +6,8 @@
<!-- IF post_review_row.S_IGNORE_POST -->
<div class="post bg3 post-ignore">
<div class="inner">
{post_review_row.L_IGNORE_POST}
{post_review_row.L_IGNORE_POST}<br>
<a class="display_post_review" href="{{ post_review_row.U_MINI_POST }}">{{ lang('POST_DISPLAY') }}</a>
<!-- ELSE -->
<div class="post <!-- IF post_review_row.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
<div class="inner">

View File

@@ -13,11 +13,13 @@
<!-- IF topic_review_row.S_IGNORE_POST -->
<div class="post bg3 post-ignore">
<div class="inner">
{topic_review_row.L_IGNORE_POST}
{topic_review_row.L_IGNORE_POST}<br>
<a class="display_post_review" href="{{ post_review_row.U_MINI_POST }}">{{ lang('POST_DISPLAY') }}</a>
<!-- ELSE IF topic_review_row.S_POST_DELETED -->
<div class="post bg3 post-ignore">
<div class="inner">
{topic_review_row.L_DELETE_POST}
{topic_review_row.L_DELETE_POST}<br>
<a class="display_post_review" href="{{ post_review_row.U_MINI_POST }}">{{ lang('POST_DISPLAY') }}</a>
<!-- ELSE -->
<div class="post <!-- IF topic_review_row.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF --><!-- IF topic_review_row.POST_ID == REPORTED_POST_ID --> reported<!-- ENDIF -->">
<div class="inner">
@@ -33,7 +35,7 @@
<a href="{topic_review_row.U_MCP_DETAILS}" title="{L_POST_DETAILS}" class="button button-icon-only">
<i class="icon fa-info fa-fw" aria-hidden="true"></i><span class="sr-only">{L_POST_DETAILS}</span>
</a>
<li>
</li>
<!-- ENDIF -->
<!-- IF topic_review_row.POSTER_QUOTE and topic_review_row.DECODED_MESSAGE -->
<li>

Some files were not shown because too many files have changed in this diff Show More