1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-12 01:00:43 +02:00

Compare commits

..

378 Commits

Author SHA1 Message Date
Marc Alexander
72ae28d583 [prep-release-3.3.14] Update changelog for 3.3.14 2024-11-18 21:34:22 +01:00
Marc Alexander
ff08756ea0 [prep-release-3.3.14] Add migration for 3.3.14 2024-11-18 21:23:18 +01:00
Marc Alexander
1f48926b1d [prep-release-3.3.14] Update version numbers to 3.3.14 2024-11-18 21:19:37 +01:00
Marc Alexander
bf83c73a60 Merge pull request #6743 from marc1706/ticket/17421
[ticket/17421] Rename extensions section to "not installed"
2024-11-10 10:31:53 +01:00
Marc Alexander
c252fb9bfb [ticket/17421] Rename extensions section to "not installed"
PHPBB-17421
2024-10-28 20:20:36 +01:00
Marc Alexander
c992272036 [prep-release-3.3.14] Update changelog for 3.3.14-RC1 2024-10-21 20:15:47 +02:00
Marc Alexander
7c090c6e2a [prep-release-3.3.14] Add migration for 3.3.14-RC1 2024-10-21 19:39:11 +02:00
Marc Alexander
4c419c5acd [prep-release-3.3.14] Update version numbers to 3.3.14 2024-10-21 19:36:43 +02:00
Marc Alexander
eaa0c779a6 [prep-release-3.3.14] Update version numbers to 3.3.14-RC1 2024-10-21 19:36:42 +02:00
Marc Alexander
3c7bf782a7 Merge pull request #6738 from rxu/ticket/17388
[ticket/17388] Add core events to bump_topic_allowed()
2024-10-20 17:31:29 +02:00
Marc Alexander
aa21aff080 Merge pull request #6736 from rxu/ticket/17411
[ticket/17411] Add core event to search.php
2024-10-20 17:29:33 +02:00
rxu
443d82d082 [ticket/17388] Add core events to bump_topic_allowed()
PHPBB-16852
PHPBB-17388
2024-10-20 20:05:55 +07:00
Marc Alexander
5abc36f651 Merge pull request #6734 from marc1706/ticket/17410
[ticket/17410] Only fall back acp main page when in ACP with test permission
2024-10-19 21:06:24 +02:00
Marc Alexander
f971d7ffcb Merge pull request #6722 from rxu/ticket/17402
[ticket/17402] Add CLI reparser option to force reparsing BBCode - 3.3.x
2024-10-19 17:14:58 +02:00
rxu
ed145b8317 [ticket/17411] Fix docblock typo
PHPBB-17411
2024-10-18 23:28:56 +07:00
Marc Alexander
26e49d4b15 Merge pull request #6732 from marc1706/ticket/17398
[ticket/17398] Add referer to delete cookies route to ensure proper URLs
2024-10-17 22:38:33 +02:00
rxu
43ff56a7a7 [ticket/17411] Add core event to search.php
PHPBB-17411
2024-10-17 11:01:43 +07:00
rxu
6c35cea146 [ticket/17402] Adjust description
PHPBB-17402
2024-10-17 00:31:42 +07:00
Marc Alexander
62f9f53f46 Merge pull request #6699 from danieltj27/ticket/17376
[ticket/17376] Add aria label to quote reference link
2024-10-16 19:18:30 +02:00
Marc Alexander
4a039d853f [ticket/17376] Update default formatting test
PHPBB-17376
2024-10-11 20:13:22 +02:00
Marc Alexander
b1282fcbc7 [ticket/17410] Only fall back acp main page when in ACP with test permission
PHPBB-17410
2024-10-10 21:38:19 +02:00
Marc Alexander
58d87c7c06 Merge pull request #6719 from ClutchEngineering/ticket-17397
[ticket/17397] Add core.viewforum_modify_sql event
2024-10-09 21:31:20 +02:00
Marc Alexander
fd58e4f338 [ticket/17398] Use referer for web paths in ajax requests
PHPBB-17398
2024-10-09 20:16:30 +02:00
Jeff Verkoeyen
8129208e56 [ticket/17397] Add core.viewforum_modify_sql event
PHPBB-17397
2024-10-06 18:58:26 +00:00
Marc Alexander
ecceeab709 [ticket/17398] Add referer to delete cookies route to ensure proper URLs
PHPBB-17398
2024-10-06 14:57:17 +02:00
rxu
660f3d2b86 [ticket/17402] Adjust precaution text
PHPBB-17402
2024-10-04 22:53:32 +07:00
Marc Alexander
ae1d830e84 Merge pull request #6729 from rxu/ticket/17391
[ticket/17391] Fix PHP warning on creating group with the name already in use
2024-10-03 13:43:04 +02:00
Marc Alexander
688c7cad49 Merge pull request #6731 from marc1706/ticket/17407
[ticket/17407] Combine create and update step and use replace edit-mode
2024-10-03 11:33:36 +02:00
Marc Alexander
44f04a91f3 [ticket/17407] Combine create and update step and use replace edit-mode
[skip ci] Since this change won't run until merged.

PHPBB-17407
2024-10-03 11:29:51 +02:00
Marc Alexander
db7b4c999d Merge pull request #6730 from marc1706/ticket/17407
[ticket/17407] Update comment in merge check if possible
2024-10-03 10:20:18 +02:00
Marc Alexander
1b0c9b22e0 [ticket/17407] Update comment in merge check if possible
PHPBB-17407
2024-10-03 09:32:43 +02:00
rxu
4217dc46ca [ticket/17391] Add simple functional test
PHPBB-17391
2024-10-03 13:24:52 +07:00
rxu
46ea7a8ffd [ticket/17391] Fix PHP warning on creating group with the name already in use
PHPBB-17391
2024-10-03 12:37:30 +07:00
Marc Alexander
f80b41aa77 Merge pull request #6704 from danieltj27/ticket/17382
[ticket/17382] Update the find a member FAQ text to fix grammar
2024-09-30 21:05:09 +02:00
Daniel James
501ecf5dec [ticket/17382] Update FAQ string with new suggestion
PHPBB-17382
2024-09-29 23:38:09 +01:00
Marc Alexander
13b267ca6f Merge pull request #6715 from marc1706/ticket/17385
[ticket/17385] Backport file_downloader with guzzle for versioncheck with redirect support
2024-09-29 19:57:33 +02:00
Marc Alexander
6db142b8ef Merge pull request #6705 from rxu/ticket/17383
[ticket/17383] Fix HELO/EHLO error in email messenger on PHP8
2024-09-29 19:29:37 +02:00
rxu
4ba4b94fe0 [ticket/17402] Add precaution
PHPBB-17402
2024-09-29 16:42:28 +07:00
Marc Alexander
7c95839951 Merge pull request #6725 from iMattPro/ticket/17404
[ticket/17404] Update workflow test badges
2024-09-29 11:26:09 +02:00
Marc Alexander
cd619d350b Merge pull request #6727 from marc1706/ticket/17396
[ticket/17396] Use GitHub App to merge to master
2024-09-29 11:13:59 +02:00
Marc Alexander
fe4d8bfa7e [ticket/17396] Use GitHub App to merge to master
[skip actions] Due to no code changes that run in PRs.

PHPBB-17396
2024-09-29 11:09:46 +02:00
Marc Alexander
283b4f8171 Merge pull request #6726 from rxu/ticket/17405
[ticket/17405] Fix getting UTC date/time information logic
2024-09-29 09:38:13 +02:00
rxu
990cbe093b [ticket/17405] Fix getting UTC date/time information logic
PHPBB-17405
2024-09-29 01:57:53 +07:00
Matt Friedman
80957d12eb [ticket/17404] Update workflow test badges
PHPBB-17404

Signed-off-by: Matt Friedman <maf675@gmail.com>
2024-09-28 09:26:04 -07:00
Marc Alexander
d8dc1204c2 Merge pull request #6723 from marc1706/ticket/17394
[ticket/17394] Merge local 3.3.x and not remote into master
2024-09-28 16:52:12 +01:00
Marc Alexander
d5e94f1d97 [ticket/17394] Merge local 3.3.x and not remote into master
PHPBB-17394
2024-09-28 16:14:22 +01:00
Marc Alexander
9ace4dc585 [ticket/17385] Change default value in docblock
PHPBB-17385
2024-09-28 16:01:02 +01:00
rxu
2ac9c0ae7c [ticket/17402] Add CLI reparser option to force reparsing BBCode
PHPBB-17402
2024-09-28 21:47:09 +07:00
Marc Alexander
914383a581 Merge pull request #6714 from danieltj27/ticket/17390
[ticket/17390] Fix unset template variable for topic approval in mcp
2024-09-25 16:12:07 +01:00
Marc Alexander
45a43e85d8 Merge pull request #6720 from marc1706/ticket/17396
[ticket/17396] Fetch full history and branch 3.3.x if merging to master
2024-09-25 16:14:45 +02:00
Marc Alexander
08d184b0fa [ticket/17396] Try running other-tests on ubuntu-20.04
PHPBB-17396
2024-09-25 14:34:54 +01:00
Marc Alexander
d6a17c1fe7 [ticket/17396] Fetch full history and branch 3.3.x if merging to master
PHPBB-17396
2024-09-19 20:48:21 +02:00
Marc Alexander
ba03a05d27 Merge pull request #6718 from marc1706/ticket/17396
[ticket/17396] Only try pushing if merge was successful
2024-09-18 22:31:45 +02:00
Marc Alexander
17d066a980 [ticket/17396] Only try pushing if merge was successful
PHPBB-17396
2024-09-18 20:41:03 +02:00
Marc Alexander
b574a0294c Merge pull request #6717 from marc1706/ticket/17396
[ticket/17396] Add workflow for merging 3.3.x into master
2024-09-18 20:29:43 +02:00
Marc Alexander
4fb06b00b7 [ticket/17396] Adjust merge code
PHPBB-17396
2024-09-17 22:10:28 +02:00
Marc Alexander
3d70d87b57 [ticket/17396] Split merge check to master to separate yml file
PHPBB-17396
2024-09-17 21:46:03 +02:00
Marc Alexander
f55d747bb4 [ticket/17396] Add workflow for merging 3.3.x into master
PHPBB-17396
2024-09-17 20:38:14 +02:00
Marc Alexander
c5f13dd327 Merge pull request #6716 from marc1706/ticket/17394
[ticket/17394] Check mergeability of 3.3.x PRs
2024-09-17 20:26:46 +02:00
Marc Alexander
e406308244 [ticket/17394] Specify pull_request_target types
PHPBB-17394
2024-09-16 21:38:39 +02:00
Marc Alexander
15556319d9 [ticket/17394] Try using pull_request_target event
PHPBB-17394
2024-09-16 20:13:16 +02:00
Marc Alexander
7a21119d17 [ticket/17394] Check mergeability of 3.3.x PRs
PHPBB-17394
2024-09-15 20:34:25 +02:00
Marc Alexander
5a09105c3c [ticket/17385] Backport tests for updated file downloader to 3.3.x
PHPBB-17385
2024-09-10 22:04:55 +02:00
Marc Alexander
48c2ca9dfe [ticket/12479] Add missing file fixture
PHPBB-12479
2024-09-10 22:01:29 +02:00
Marc Alexander
d6ed21f3f2 [ticket/12479] Use separate mock in "remote" file test
PHPBB-12479
2024-09-10 22:01:14 +02:00
Marc Alexander
929013388f [ticket/12479] Fix use statements in file_downloader
PHPBB-12479
2024-09-10 22:00:58 +02:00
Marc Alexander
d844f82f56 [ticket/12479] Remove dns check from test as we don't test against host anymore
PHPBB-12479
2024-09-10 22:00:43 +02:00
Marc Alexander
f7d16fc626 [ticket/12479] Convert file_downloader to use guzzle instead of fsockopen
PHPBB-12479
2024-09-10 22:00:07 +02:00
Marc Alexander
9eb30b5d8e Merge pull request #6712 from rxu/ticket/17387
[ticket/17387] Fix PHP warnings in search results
2024-09-09 21:04:04 +02:00
rxu
544e0900e6 [ticket/17387] Add more unicode tests
PHPBB-17387
2024-09-03 00:16:05 +07:00
rxu
c26ded6025 [ticket/17387] Fix handling unicode strings
PHPBB-17387
2024-09-02 23:24:24 +07:00
Daniel James
1c73b7ab19 [ticket/17390] Fix unset template variable for topic approval in mcp
Fixes a bug that was introduced in 558b8ae whereby a template
variable was added to wrap around the approve / disapprove UI
however that variable was not set in mcp_queue so the check
failed every time meaning you couldn't approve from the MCP.

PHPBB-17390
2024-09-02 17:13:49 +01:00
Ruben Calvo
472b36877c [ticket/17387] Add test for when words are separated by a non-space character
PHPBB-17387
2024-09-02 14:38:50 +02:00
rxu
66b6a5e1f3 [ticket/17387] Make regex match unicode characters
PHPBB-17387
2024-09-02 17:46:16 +07:00
rxu
8acba2db02 [ticket/17387] Return entire post text for zero or negative length value
In according to 'Default number of returned characters' setting ACP explanation
`A value of 0 will return the entire post`. Do the same for negative values too

PHPBB-17387
2024-09-02 16:37:15 +07:00
Marc Alexander
bf4e26a0b8 Merge pull request #6713 from rxu/ticket/17386-master
[ticket/17386] Unify user based permissions test for 3.3.x and master branches
2024-09-01 20:05:41 +02:00
rxu
7c4b6cde8b [ticket/17386] Fix user based permissions test
PHPBB-17386
2024-09-02 00:19:20 +07:00
Marc Alexander
7f08efb04c Merge pull request #6709 from rxu/ticket/17386
[ticket/17386] Fix resulting permission for user-based tracing
2024-09-01 16:51:05 +02:00
Marc Alexander
6ca926c146 Merge pull request #6665 from rxu/ticket/17359
[ticket/17359] Distinct disabled and available extensions list
2024-09-01 16:44:43 +02:00
rxu
a7b673a1b6 [ticket/17387] Fix PHP warnings in search results
PHPBB-17387
2024-08-31 23:23:10 +07:00
rxu
03f315f7b7 [ticket/17386] Add test
PHPBB-17386
2024-08-31 22:15:03 +07:00
rxu
76752800c2 [ticket/17386] Fix resulting permission for user-based tracing
PHPBB-17386
2024-08-31 22:14:52 +07:00
Marc Alexander
23f872d138 Merge pull request #6710 from marc1706/ticket/17384
[ticket/17384] Stop overriding error handler in test case
2024-08-31 15:30:38 +02:00
Marc Alexander
92730af7a4 [ticket/17384] Stop overriding error handler in test case
PHPBB-17384
2024-08-31 08:59:57 +02:00
Marc Alexander
80f4c07bc5 Merge pull request #6695 from battye/ticket/17181
[ticket/17181] Remove unused PM report code
2024-08-30 11:42:02 +02:00
Marc Alexander
dc0561c8bf Merge pull request #6706 from rxu/ticket/17384
[ticket/17384] Handle E_USER_ERROR for PHP 8.4 tests - 3.3.x
2024-08-30 11:12:40 +02:00
Marc Alexander
9c9dcb1e35 Merge branch 'prep-release-3.3.13' into 3.3.x 2024-08-29 20:34:46 +02:00
Marc Alexander
b083e223e2 [prep-release-3.3.13] Update changelog for 3.3.13 2024-08-28 20:18:39 +02:00
Marc Alexander
88243d296c [prep-release-3.3.13] Add migration for 3.3.13 2024-08-28 20:12:25 +02:00
Marc Alexander
53c60419b4 [prep-release-3.3.13] Update version numbers to 3.3.13 2024-08-28 20:09:41 +02:00
rxu
45515b7072 [ticket/17384] Handle E_USER_ERROR for PHP 8.4 tests
PHPBB-17384
2024-08-18 18:15:52 +07:00
rxu
cc4579ee04 [ticket/17383] Validate php_uname() output too
PHPBB-17383
2024-08-16 00:30:40 +07:00
rxu
6d0a965db2 [ticket/17383] Fix HELO/EHLO error in email messenger on PHP8
PHPBB-17383
2024-08-15 23:49:50 +07:00
rxu
629a909b65 [ticket/17359] Adjust template event target phpBB version
PHPBB-17359
2024-08-13 15:33:18 +07:00
Daniel James
331bea8b22 [ticket/17382] Undo rename of install folder to check front-end changes!
PHPBB-17382
2024-08-12 21:21:14 +01:00
Daniel James
9b4743c028 [ticket/17382] Update the find a member FAQ text to fix grammar
Updated the text of an answer on the FAQ page that explained how
to search for members on the forum. Originally the text read as
`Visit to the “Members” page` which is grammatically incorrect,
specifically `visit to the`.

PHPBB-17382
2024-08-12 21:17:52 +01:00
Daniel James
6623e7fe1d [ticket/17376] Update quote template and change icon to FA arrow
PHPBB-17376
2024-08-07 11:40:12 +01:00
Marc Alexander
9d64579dea Merge branch 'prep-release-3.3.13' into 3.3.x 2024-08-06 22:11:16 +02:00
Marc Alexander
092f583422 Merge pull request #6700 from marc1706/ticket/17377
[ticket/17377] Use specific mssql docker images to have uniform builds
2024-08-06 22:10:49 +02:00
Marc Alexander
8b7f215309 [ticket/17377] Use specific mssql docker images to have uniform builds
PHPBB-17377
2024-08-06 21:08:10 +02:00
Marc Alexander
31f0e7b882 [3.3.x] Update versions to 3.3.14-dev 2024-08-05 20:30:55 +02:00
Marc Alexander
ee3b351419 Merge branch 'prep-release-3.3.13' into 3.3.x 2024-08-05 20:29:22 +02:00
Daniel James
99861a8c10 [ticket/17376] Add aria label to quote reference link
Adds an aria label attribute to the quoted post reference link so
that screen readers can inform the user of what the link is used
for. Before this change the link was too vague and would not have
been well described to users of its purpose if they couldn't see it.

PHPBB-17376
2024-08-04 15:09:34 +01:00
Marc Alexander
2973c2f6db [prep-release-3.3.13] Update changelog for 3.3.13-RC1 2024-08-02 19:22:23 +02:00
Marc Alexander
57ef18ecc0 [prep-release-3.3.13] Update stylesheet hashes for 3.3.13-RC1 2024-08-02 19:20:35 +02:00
Marc Alexander
e9e305ee9f [prep-release-3.3.13] Add migration for 3.3.13-RC1 2024-08-02 19:20:35 +02:00
Marc Alexander
1d256fef61 [prep-release-3.3.13] Update version numbers to 3.3.13 2024-08-02 19:20:32 +02:00
Marc Alexander
599073cab2 [prep-release-3.3.13] Update version numbers to 3.3.13-RC1 2024-08-02 19:20:32 +02:00
Marc Alexander
b7ffee0945 Merge pull request #6698 from marc1706/ticket/17375
[ticket/17375] Ensure user last visit does not get updated for active sessions in session gc
2024-08-01 22:18:23 +02:00
Marc Alexander
56c1b9b5bd Merge pull request #6662 from rxu/ticket/17358
[ticket/17358] Properly handle Redis cache expiration time - 3.3.x
2024-08-01 20:24:23 +02:00
Marc Alexander
18c00a902f [ticket/17375] User last active should be updated to current time
PHPBB-17375
2024-07-31 21:25:33 +02:00
Marc Alexander
8497104bdb [ticket/17375] Ensure session garbage collection only happens for expired ones
PHPBB-17375
2024-07-31 21:24:45 +02:00
Marc Alexander
4038bb9dc3 Merge pull request #6691 from marc1706/ticket/13933
[ticket/13933] Extend tokens' definitions in ACP bbcodes
2024-07-28 21:02:11 +02:00
Marc Alexander
935c1a3ea2 Merge pull request #6680 from marc1706/ticket/17366
[ticket/17366] Resolve issues with form submissions and recaptcha
2024-07-28 20:47:14 +02:00
Marc Alexander
6eb49d0907 Merge pull request #6681 from marc1706/ticket/16213
[ticket/16213] Add .htaccess for phpbb and vendor folders
2024-07-28 20:44:56 +02:00
Marc Alexander
7fe0cc7f26 Merge pull request #6686 from marc1706/ticket/15576
[ticket/15576] Handle subject max length same as in form input
2024-07-28 20:43:20 +02:00
Marc Alexander
28cf33eb2f Merge pull request #6688 from marc1706/ticket/14454
[ticket/14454] Handle special case of testing user permissions in ACP modules
2024-07-28 20:37:34 +02:00
Marc Alexander
cf47bed67e Merge pull request #6689 from marc1706/ticket/17370
[ticket/17370] Move delete cookies functionality to controller
2024-07-28 20:35:42 +02:00
Marc Alexander
1e28669407 Merge pull request #6696 from marc1706/ticket/17374
[ticket/17374] Only delete marked logs if entries have been marked
2024-07-28 20:31:52 +02:00
Marc Alexander
58cc1f4ef3 [ticket/17374] Only delete marked logs if entries have been marked
PHPBB-17374
2024-07-23 20:18:28 +02:00
battye
8104facb30 [ticket/17181] Remove unused PM report code
PHPBB-17181
2024-07-22 02:41:20 +00:00
Marc Alexander
45d64a1627 Merge pull request #6660 from marc1706/ticket/17353
[ticket/17353] Get gravatar img src and fix incorrect treatment of height
2024-07-16 21:03:44 +02:00
Marc Alexander
10f92dbb68 [ticket/13933] Extend tokens' definitions in ACP bbcodes
PHPBB-13933
2024-07-16 21:01:57 +02:00
Marc Alexander
bc7bd15312 Merge pull request #5385 from rubencm/ticket/15043
[ticket/15043] Rewrite get_context()
2024-07-15 19:49:59 +02:00
Ruben Calvo
5c40766dc4 [ticket/15403] Remove last element of array only if needed
PHPBB-15403
2024-07-15 12:30:40 +02:00
Marc Alexander
661140c50b [ticket/17370] Redirect from UCP to delete cookies controller
PHPBB-17370
2024-07-14 20:44:01 +02:00
Marc Alexander
294c517256 [ticket/17370] Add controller for deleting cookies
PHPBB-17370
2024-07-14 20:42:03 +02:00
Marc Alexander
de660fe0c8 Merge pull request #6677 from marc1706/ticket/16907
[ticket/16907] Adjust request filtering for phpbb paths
2024-07-14 14:46:20 +02:00
Ruben Calvo
e602889213 [ticket/15403] Add another test
PHPBB-15403
2024-07-14 12:47:06 +02:00
Ruben Calvo
f4b1444248 [ticket/15403] Handle ellipsis at the beginning of context and add tests
PHPBB-15403
2024-07-14 12:45:20 +02:00
Marc Alexander
13e6cd5992 [ticket/14454] Remove extra commas
PHPBB-14454
2024-07-14 08:17:12 +02:00
Ruben Calvo
dd9267b678 [ticket/15403] Use substr over the fragment and not the whole text
PHPBB-15403
2024-07-14 01:10:25 +02:00
Marc Alexander
f646fcdefa [ticket/14454] Handle special case of testing user permissions in ACP modules
PHPBB-14454
2024-07-13 23:46:28 +02:00
Marc Alexander
99c97b951f Merge pull request #6642 from rxu/ticket/17338
[ticket/17338] Prefer user_last_active to display user last activity info
2024-07-13 19:42:48 +02:00
Ruben Calvo
f41c8eef47 [ticket/15403] Refactor get_context
PHPBB-15403
2024-07-13 17:54:17 +02:00
Marc Alexander
17b4838ee3 Merge pull request #6684 from crowjake/ticket/17365
[ticket/17365] Prevent search limit being bypassed with operators
2024-07-10 22:45:09 +02:00
Marc Alexander
a0092bdd18 Merge pull request #6678 from marc1706/ticket/13916
[ticket/13916] Add notify to fields to store during save draft
2024-07-10 21:34:52 +02:00
Marc Alexander
c0b81a1a48 [ticket/17365] Add a test for max search keywords
PHPBB-17365
2024-07-10 21:32:15 +02:00
Marc Alexander
89afa0cb5e [ticket/15043] Small code cleanup
PHPBB-15043
2024-07-09 21:46:37 +02:00
Marc Alexander
a62a303318 [ticket/15043] Add unit test for get_context
PHPBB-15043
2024-07-09 21:20:09 +02:00
Marc Alexander
cacd9375fd Merge pull request #6685 from danieltj27/ticket/17369
[ticket/17369] Add forum id to approve action url for redirection
2024-07-09 19:22:31 +02:00
Ruben Calvo
7763969625 [ticket/15403] Return first fragment of text if there is no coincidences
PHPBB-15403
2024-07-09 17:09:06 +02:00
Ruben Calvo
a2e7205154 [ticket/15403] Fix order of parameters in implode
PHPBB-15403
2024-07-09 00:25:05 +02:00
Rubén Calvo
350c9213ee [ticket/15043] Update regexp
PHPBB3-15043
2024-07-08 21:43:54 +02:00
Rubén Calvo
7365764476 [ticket/15043] New get_context displays more text
PHPBB3-15043
2024-07-08 21:43:52 +02:00
Rubén Calvo
dd4c982792 [ticket/15043] Rewrite get_context()
PHPBB3-15043
2024-07-08 21:42:03 +02:00
Marc Alexander
2088ee5e84 [ticket/15576] Handle subject max length same as in form input
PHPBB-15576
2024-07-08 21:37:05 +02:00
Daniel James
926a0a4e33 [ticket/17369] Add forum id to approve action url for redirection
Added the forum_id to the approve action link which ensures that when
a topic is permanently deleted, the forum_id is present so that it can
be used in the redirection link to go to the previous forum. This addresses
a bug in which the forum_id is not provided and after deleting a topic, the
user will be taken to a 404 page as the forum id fallbacks to 0.

PHPBB-17369
2024-07-08 16:35:41 +01:00
crowjake
30144052da [ticket/17365] Prevent keyword limit being bypassed with the use of +, - and |
Provided `$countable_keywords` wherein the existing `$keywords` value is
modified so that any `-`, `+` and `|` characters without preceding spaces
is replaced with the same but with a space in front of each.

These spaces allow the string to be more accurately split when used instead
of $keywords inside the $num_keywords calculation.

This prevents the word limit being bypassed in search by the use of
operators without whitespace.

PHPBB-17365
2024-07-07 23:04:19 +01:00
Marc Alexander
8298095421 [ticket/16213] Add .htaccess for phpbb and vendor folders
PHPBB-16213
2024-07-07 15:22:23 +02:00
Marc Alexander
55dbe070e3 [ticket/17366] Remove javascript sanity check as this can break with recaptcha
PHPBB-17366
2024-07-07 14:52:00 +02:00
Marc Alexander
8639be4bd4 [ticket/17366] Remember confirm code if recaptcha v3 is solved
PHPBB-17366
2024-07-07 11:31:18 +02:00
Marc Alexander
ffc655a1ba [ticket/13916] Add notify to fields to store during save draft
PHPBB-13916
2024-07-06 21:44:06 +02:00
Marc Alexander
922e7699ed [ticket/16907] Adjust request filtering for phpbb paths
PHPBB-16907
2024-07-06 17:39:49 +02:00
Marc Alexander
c790e81fb6 Merge pull request #6676 from marc1706/ticket/16890
[ticket/16890] Deny access to config file and folder in nginx sample
2024-07-06 13:01:50 +02:00
Marc Alexander
42851d0d9f [ticket/16890] Add rewrite for installer in lighttpd
PHPBB-16890
2024-07-06 11:53:21 +02:00
Marc Alexander
00d1351e55 [ticket/16890] Deny access to config file and folder in nginx sample
PHPBB-16890
2024-07-06 10:47:49 +02:00
Marc Alexander
48a233e415 Merge pull request #6661 from rubencm/ticket/17356
[ticket/17356] Correctly handle errors hidden with at
2024-07-05 21:56:34 +02:00
Marc Alexander
6798c337f8 Merge pull request #6656 from danieltj27/ticket/17350
[ticket/17350] Add IP Address of user during install process
2024-07-05 21:45:16 +02:00
Marc Alexander
99b745982e [ticket/17353] Clean up test code for compatibility with 3.3.x
PHPBB-17353
2024-07-03 21:44:40 +02:00
Marc Alexander
bde7b119b2 [ticket/17355] Update tests after changing gravatar URL
PHPBB-17355
2024-07-03 21:36:51 +02:00
Marc Alexander
5013075af7 [ticket/17355] Change gravatar URL to new format
PHPBB-17355
2024-07-03 21:36:51 +02:00
Marc Alexander
40881b537e [ticket/17353] Return image src for gravatar image
PHPBB-17353
2024-07-03 21:36:51 +02:00
Marc Alexander
efece4136b [ticket/17353] Add test for gravatar driver and fix request var issue
PHPBB-17353
2024-07-03 21:36:51 +02:00
Marc Alexander
38177e9052 Merge pull request #6655 from danieltj27/ticket/17352
[ticket/17352] Fix overflow of long rank titles on profile page
2024-07-01 21:52:47 +02:00
Marc Alexander
a4296a9e6b Merge pull request #6667 from m-ober/ticket/17362
[ticket/17362] Declare property to avoid PHP 8.2 deprecation notice
2024-07-01 19:13:11 +02:00
Micha Ober
d7477760d6 [ticket/17362] Declare property to avoid PHP 8.2 deprecation notice
PHPBB-17362
2024-07-01 13:48:59 +02:00
rxu
e53db0775a [ticket/17359] Get rid of template code duplication
PHPBB-17359
2024-07-01 00:54:20 +07:00
Marc Alexander
294b3ff922 Merge pull request #6651 from marc1706/ticket/17347
[ticket/17347] Add console command to delete users by user IDs
2024-06-30 17:20:35 +02:00
rxu
8aef7b5659 [ticket/17359] Fix template events
PHPBB-17359
2024-06-30 20:35:58 +07:00
rxu
9e11624693 [ticket/17359] Fix tests
PHPBB-17359
2024-06-30 19:59:45 +07:00
rxu
e6bdecbfee [ticket/17359] Distinct disabled and available extensions list
PHPBB-17359
2024-06-30 19:07:41 +07:00
Marc Alexander
ad77f0d0ab Merge pull request #6658 from rxu/ticket/17351
[ticket/17351] Correctly handle md5 passwords rehashing - 3.3.x
2024-06-30 12:39:48 +02:00
rxu
5a9c01716f [ticket/17358] Properly handle Redis cache expiration time
PHPBB-17358
2024-06-30 12:45:14 +07:00
Ruben Calvo
5b03cd422a [ticket/17356] Correctly handle errors hidden by at
PHPBB-17356
2024-06-28 21:45:33 +02:00
rxu
e5d2e82ef5 [ticket/17351] Correctly handle md5 passwords rehashing
PHPBB-17351
2024-06-28 11:36:14 +07:00
Daniel James
8eacbf8305 [ticket/17350] Add IP Address of user during install process
Adds the IP address of the user completing the installation process
while extensions are being installed or updated. Prior to this change
the IP address field was being left blank however other logs created
during the install process for other actions does record the users IP.

PHPBB-17350
2024-06-25 16:24:58 +01:00
Daniel James
5976dc2141 [ticket/17352] Fix overflow of long rank titles on profile page
Users that had very long rank titles would cause the rest of their
profile details to be pushed down below the avatar and rank details
breaking the layout. This change limits the width of the avatar
and rank details.

PHPBB-17352
2024-06-25 16:09:52 +01:00
Marc Alexander
3647cf2cfe Merge pull request #6637 from rxu/ticket/17337
[ticket/17337] Fix mysqli driver is missing transaction begin statement - 3.3.x
2024-06-24 20:35:00 +02:00
rxu
dd3ebe2b71 [ticket/17337] Correctly handle transaction test on MyISAM (non-transactional)
PHPBB-17337
2024-06-24 21:32:18 +07:00
Marc Alexander
f3460fe9eb [ticket/17337] Extend write tests with simple transaction test
PHPBB-17337
2024-06-23 23:26:13 +02:00
Marc Alexander
15960a7918 Merge pull request #6639 from marc1706/ticket/17301
[ticket/17301] Ensure reading invalid cache files is aborted
2024-06-22 11:56:21 +02:00
Marc Alexander
fa893f092b [ticket/17347] Get rid of not needed code duplication
PHPBB-17347
2024-06-22 07:33:06 +02:00
Marc Alexander
99b07b884b Merge pull request #6647 from marc1706/ticket/17342-3.3.x
[ticket/17342] Add tests for PHP 8.4 to GitHub Actions
2024-06-22 07:28:23 +02:00
Marc Alexander
7f9bcc2743 [ticket/17347] Change command to be called user:delete_id
PHPBB-17347
2024-06-21 21:12:38 +02:00
Marc Alexander
d875eaa405 [ticket/17347] Update tests for delete_id command
PHPBB-17347
2024-06-21 21:12:09 +02:00
Marc Alexander
db40145fd5 [ticket/17347] Use progress bar and test bot deletion only
PHPBB-17347
2024-06-21 20:59:04 +02:00
Marc Alexander
8c77da9c30 [ticket/17347] Add special handling for deletion of bots
PHPBB-17347
2024-06-21 20:48:41 +02:00
Marc Alexander
09f0b417be [ticket/17347] Fix issues noticed in tests
PHPBB-17347
2024-06-20 22:38:24 +02:00
Marc Alexander
8432e506c4 [ticket/17347] Add tests for delete ids
PHPBB-17347
2024-06-20 22:23:38 +02:00
Marc Alexander
77d1010081 [ticket/17347] Add console command to delete users by user IDs
PHPBB-17347
2024-06-20 21:17:48 +02:00
rxu
4003f54d0b [ticket/17338] Do not update user_last_active to outdated session_time value
PHPBB-17338
2024-06-17 11:55:35 +07:00
Marc Alexander
abaef09a14 [ticket/17342] Add tests for PHP 8.4 to GitHub Actions
PHPBB-17342
2024-06-16 20:31:57 +02:00
Marc Alexander
127121f1d2 Merge pull request #6633 from rxu/ticket/17332
[ticket/17332] Fix permission migrator tool to work with copied permissions
2024-06-14 22:28:58 +02:00
Marc Alexander
e53cd79067 Merge pull request #6643 from marc1706/ticket/17340
[ticket/17340] Update composer and dependencies
2024-06-14 21:51:50 +02:00
Marc Alexander
8bdff227d9 [ticket/17340] Update composer dependencies
PHPBB-17340
2024-06-14 17:04:22 +02:00
Marc Alexander
df7dae9600 [ticket/17340] Update composer to 2.7.7
PHPBB-17340
2024-06-14 17:02:36 +02:00
rxu
e21a8e02cd [ticket/17338] Update user_last_active on session removal and login keys reset
PHPBB-17338
2024-06-14 15:22:20 +07:00
rxu
db9874546b [ticket/17338] Add user_last_active to session_gc()
PHPBB-17338
2024-06-14 11:03:02 +07:00
rxu
e125f1f709 [ticket/17338] Prefer user_last_active to display user last activity info
PHPBB-17338
2024-06-13 13:27:03 +07:00
Marc Alexander
9e15802805 [ticket/17301] Do not test unreadable files on windows
PHPBB-17301
2024-06-11 20:29:23 +02:00
Marc Alexander
f98f2c5896 [ticket/17301] Ensure reading invalid cache files is aborted
PHPBB-17301
2024-06-11 20:12:01 +02:00
rxu
c2d91650bd [ticket/17337] Fix mysqli driver is missing transaction begin statement
PHPBB-17337
2024-06-11 16:08:39 +07:00
rxu
51b773e588 [ticket/17332] Add test
PHPBB-17332
2024-06-05 12:50:03 +07:00
rxu
ef4db99709 [ticket/17332] Fix permission migrator tool to work with copied permissions
PHPBB-17332
2024-06-05 00:22:04 +07:00
Marc Alexander
cd0e682984 Merge pull request #6619 from marc1706/ticket/17308
[ticket/17308] Change project key to start with PHPBB-
2024-06-01 08:31:59 +02:00
Marc Alexander
431b399c68 Merge pull request #6628 from marc1706/ticket/17327
[ticket/17327] Use class name from use statement
2024-06-01 08:15:26 +02:00
Marc Alexander
56d8a7e43f [ticket/17327] Use class name from use statement
PHPBB3-17327
2024-05-31 22:30:05 +02:00
Marc Alexander
2976314205 Merge branch 'prep-release-3.3.12' into 3.3.x 2024-05-31 21:41:03 +02:00
Marc Alexander
be6bb09984 [prep-release-3.3.12] Update changelog for 3.3.12 2024-05-31 20:05:39 +02:00
Marc Alexander
8a8232109c Merge pull request #6609 from battye/ticket/17175
[ticket/17175] Fix topic title in the breadcrumbs when emailing a topic
2024-05-31 11:08:06 +02:00
Marc Alexander
f3ead808f3 Merge pull request #6615 from danieltj27/ticket/17316
[ticket/17316] Add template events to ucp_groups_manage
2024-05-31 10:46:06 +02:00
Marc Alexander
276502ce58 Merge pull request #6613 from danieltj27/ticket/17315
[ticket/17315] add template events to acp_groups
2024-05-31 10:41:00 +02:00
Marc Alexander
8899fcfdc2 Merge pull request #6626 from LukeWCS/ticket/17325
[ticket/17325] Show message for "Re-Check version" if phpBB is still up to date
2024-05-31 09:50:54 +02:00
Marc Alexander
2aba9b0e3f [prep-release-3.3.12] Remove columns from user_add
These have default values and do not require setting in user_add().
2024-05-30 20:39:52 +02:00
Marc Alexander
80a12f7108 [prep-release-3.3.12] Update changelog for 3.3.12 2024-05-30 11:03:06 +02:00
Marc Alexander
6cef48af2f [prep-release-3.3.12] Add migration for 3.3.12 2024-05-30 11:00:23 +02:00
Marc Alexander
607fe555af [prep-release-3.3.12] Update version numbers to 3.3.12 2024-05-30 11:00:22 +02:00
Daniel James
166c4eeb7e [ticket/17316] Add template events to ucp_groups_manage
PHPBB3-17316
2024-05-30 10:45:30 +02:00
Marc Alexander
bf55502c62 [ticket/17325] Use not instead of ! in template
PHPBB3-17325
2024-05-30 10:40:25 +02:00
Marc Alexander
df5fcafcb9 Merge pull request #6616 from danieltj27/ticket/17317
[ticket/17317] Change button text for pm recipient to increase readability
2024-05-30 08:54:55 +02:00
Marc Alexander
1fb7e6d2c8 [ticket/security/278] Always release cron lock, even invalid task is passed
SECURITY-278
2024-05-29 22:04:16 +02:00
Marc Alexander
1c1c981b17 [ticket/security/276] Centralise call for token expiration
SECURITY-276
2024-05-29 22:04:15 +02:00
Marc Alexander
7c661746cf [ticket/security/276] Add test for expiration timer
SECURITY-276
2024-05-29 22:04:15 +02:00
Marc Alexander
24dd47adcf [ticket/security/276] Add missing information message
SECURITY-276
2024-05-29 22:04:15 +02:00
Marc Alexander
f853f6523f [ticket/security/276] Prevent sending activation emails multiple times per day
SECURITY-276
2024-05-29 22:04:15 +02:00
Marc Alexander
a63a1913fa [ticket/security-276] Add migration for user_actkey expiration column
SECURITY-276
2024-05-29 22:04:15 +02:00
Marc Alexander
ef593afec5 Merge branch 'prep-release-3.3.12' into 3.3.x 2024-05-29 21:53:47 +02:00
Marc Alexander
51da43f77f [prep-release-3.3.12] Fix since version and undo md exporter change 2024-05-29 21:53:11 +02:00
Marc Alexander
e328ee96d2 Merge pull request #6625 from rxu/ticket/17324
[ticket/17324] Add template event to notification_dropdown.html
2024-05-29 21:42:46 +02:00
Marc Alexander
7f11c1b46d Merge pull request #6624 from battye/ticket/16553
[ticket/16553] Fix for General Error when approving/disapproving a reported post through the MCP
2024-05-28 21:08:15 +02:00
LukeWCS
ae18669fcd [ticket/17325] Show message for "Re-Check version" if phpBB is still up to date
Show explicit message for "Re-Check version" if installed version is still up
to date

PHPBB3-17325
2024-05-28 20:55:49 +02:00
rxu
9ea4aabe9a [ticket/17324] Allow targeting events to prep-releases
PHPBB3-17324
2024-05-28 20:36:40 +02:00
rxu
a88040df85 [ticket/17324] Adjust target version
PHPBB3-17324
2024-05-28 20:36:40 +02:00
rxu
fcf89208cf [ticket/17324] Add template event to notification_dropdown.html
PHPBB3-17324
2024-05-28 20:36:40 +02:00
Marc Alexander
d365f17ebd Merge pull request #6621 from danieltj27/ticket/17320
[ticket/17320] Remove unused js code from prosilver
2024-05-27 20:17:25 +02:00
battye
6f345e43cb [ticket/16553] Change double quotes to single quotes
PHPBB3-16553
2024-05-27 07:55:08 +00:00
battye
874fb7bf8a [ticket/16553] Use env variables in Codespaces for server name
PHPBB3-16553
2024-05-27 07:12:51 +00:00
battye
558b8ae7ed [ticket/16553] Fix approve reported posts bug
Fixes the module not accessible error when trying to approve a reported post.

PHPBB3-16553
2024-05-27 05:18:08 +00:00
Marc Alexander
477f5d9e1d Merge pull request #6617 from battye/ticket/17109
[ticket/17109] Don't show the attach signature option if the user doesn't have permission
2024-05-23 21:34:26 +02:00
Daniel James
92e545fc26 [ticket/17317] Remove unused CSS styling for inputs
PHPBB3-17317
2024-05-23 20:57:36 +02:00
Daniel James
c330500c4d [ticket/17317] Add new icon for groups and remove CSS change
PHPBB3-17317
2024-05-23 20:57:34 +02:00
Daniel James
9fcf956888 [ticket/17317] Replace button with small red fa-icon
Updated the button to a small red X using Font Awesome
rather than using the default phpBB button with text
which adds a better visual distinction in the interface
between the username and action. Credit to @iMattPro for
the suggestion in the ticket comments.

PHPBB3-17317
2024-05-23 20:57:33 +02:00
Daniel James
40ed6c6458 [ticket/17317] Fix padding on button, left and right not top and bottom
PHPBB3-17317
2024-05-23 20:57:31 +02:00
Daniel James
cd34cdedee [ticket/17317] Change button text for pm recipient to increase readability
PHPBB3-17317
2024-05-23 20:57:26 +02:00
Daniel James
e850915190 [ticket/17320] Remove unused js code from prosilver
The forum_fn.js file contained a small block of code
that was commented out so there is no need to keep it
in the codebase, especially as it was a fix for IE8
and older browsers.

PHPBB3-17320
2024-05-23 16:35:28 +01:00
Marc Alexander
d14f98f672 Merge branch 'prep-release-3.3.12' into 3.3.x 2024-05-22 21:54:10 +02:00
Marc Alexander
130c10915e Merge pull request #6618 from marc1706/ticket/17312
[ticket/17312] Add column for tracking user last active time
2024-05-22 21:53:15 +02:00
Marc Alexander
9ecf09dbe8 [ticket/17312] Add and use user_last_active where needed and useful
PHPBB3-17312
2024-05-18 20:58:07 +02:00
Marc Alexander
8954a68953 [ticket/17308] Change project key to start with PHPBB-
PHPBB-17308
2024-05-18 08:27:19 +02:00
Marc Alexander
f986138467 [ticket/17312] Update tests for new column
PHPBB3-17312
2024-05-17 16:41:40 +02:00
battye
611faafaf3 [ticket/17109] Check attach signature permissions
Don't show the attach signature option if the
user doesn't have permission or if the signature
feature is disabled for the board.

PHPBB3-17109
2024-05-17 14:38:18 +00:00
Marc Alexander
ed0b5020a9 [ticket/17312] Use user_last_active instead of user_lastvisit where possible
PHPBB3-17312
2024-05-16 20:44:38 +02:00
Marc Alexander
b2d2216b87 [ticket/17315] Rename events and add them to events.md
PHPBB3-17315
2024-05-16 16:47:04 +02:00
Daniel James
766ecaed5a [ticket/17315] Add template events to acp_groups
PHPBB3-17315
2024-05-16 16:46:55 +02:00
Marc Alexander
a7a53de34d [ticket/17312] Add migration for user_last_active column
PHPBB3-17312
2024-05-14 21:42:02 +02:00
Marc Alexander
6aa980eadb Merge branch 'prep-release-3.3.12' into 3.3.x 2024-05-13 20:51:08 +02:00
Marc Alexander
dbf0b9ebe6 Merge pull request #6610 from Crizz0/ticket/17311
[ticket/17311] Update PHP requirements and tested version
2024-05-13 20:50:11 +02:00
Christian Schnegelberger
874fb8c59c [ticket/17311] Update PHP requirements and tested version
PHPBB3-17176
2024-05-13 19:21:52 +02:00
Marc Alexander
e195e2ad82 [3.3.x] Update version to 3.3.13-dev 2024-05-12 21:10:16 +02:00
Marc Alexander
9aebbcc1a0 Merge branch 'prep-release-3.3.12' into 3.3.x 2024-05-12 21:08:01 +02:00
battye
de31c4e797 [ticket/17175] Fix topic title in the breadcrumbs when emailing a topic
PHPBB3-17175
2024-05-12 09:53:07 +00:00
Marc Alexander
7b734ef529 [prep-release-3.3.12] Update changelog for 3.3.12-RC1 2024-05-09 13:01:53 +02:00
Marc Alexander
6753961756 [prep-release-3.3.12] Update stylesheet hashes for 3.3.12-RC1 2024-05-09 12:59:38 +02:00
Marc Alexander
d2295b82f1 [prep-release-3.3.12] Add migration for 3.3.12-RC1 2024-05-09 12:59:37 +02:00
Marc Alexander
74845a6b3a [prep-release-3.3.12] Update version numbers to 3.3.12 2024-05-09 12:59:36 +02:00
Marc Alexander
f13b17fd00 [prep-release-3.3.12] Update version numbers to 3.3.12-RC1 2024-05-09 12:59:35 +02:00
Marc Alexander
149d0bd227 Merge pull request #6607 from marc1706/ticket/17310
[ticket/17310] Update workflow actions to v4
2024-05-08 17:24:26 +02:00
Marc Alexander
eb12d385a0 Merge pull request #6549 from marc1706/ticket/15325
[ticket/15325] Do not show non-local permissions for local data
2024-05-08 17:22:15 +02:00
Marc Alexander
d318768634 [ticket/17176] Use correct ldap URI
PHPBB3-17176
2024-05-07 21:57:48 +02:00
Marc Alexander
843cb97048 [ticket/17176] Use ldapuri instead of removed ldaphost
PHPBB3-17176
2024-05-07 21:57:35 +02:00
Marc Alexander
a85c36b15e [ticket/17310] Update workflow actions to v4
PHPBB3-17310
2024-05-07 21:21:10 +02:00
Marc Alexander
76ab83893b [ticket/15325] Rename variable for sql is local exclude
PHPBB3-15325
2024-05-06 20:06:10 +02:00
Marc Alexander
9aec69413f Merge pull request #6594 from marc1706/ticket/17077
[ticket/17077] Improve handling of posting to reduce double submit possibility
2024-05-06 18:22:58 +02:00
Marc Alexander
42108b5e11 [ticket/15325] Remove no longer needed note about permissions being global
PHPBB3-15325
2024-05-04 09:00:30 +02:00
Marc Alexander
2267ef1ac2 Merge pull request #6604 from marc1706/ticket/17130
[ticket/17130] Reparse magic urls in posts based on actual content
2024-05-03 22:16:28 +02:00
Marc Alexander
3f73ae8545 [ticket/17130] Reparse magic urls in posts based on actual content
PHPBB3-17130
2024-05-03 20:25:44 +02:00
Marc Alexander
6f45b46746 [ticket/17077] Add proper locking in PHP without releasing form tokens
PHPBB3-17077
2024-05-01 11:22:29 +02:00
Marc Alexander
df43810f55 Merge pull request #6600 from Crizz0/ticket/17306
[ticket/17306] Add type declaration to get_context and array for $words
2024-04-28 21:07:08 +02:00
Marc Alexander
42252460a9 Merge pull request #6603 from marc1706/ticket/17305
[ticket/17305] Add missing space to sql_sort
2024-04-23 21:43:44 +02:00
Marc Alexander
8dd6b5373d [ticket/15325] Add test for displayed permissions
PHPBB3-15325
2024-04-23 21:33:09 +02:00
Marc Alexander
6c45c1ff6b [ticket/15325] Do not show non-local permissions for local data
PHPBB3-15325
2024-04-23 20:49:02 +02:00
Marc Alexander
18a672c16e [ticket/17305] Add missing space to sql_sort
PHPBB3-17305
2024-04-23 20:17:59 +02:00
Marc Alexander
d60998ba69 Merge pull request #6601 from marc1706/ticket/17305
[ticket/17305] Change sql_sort to be more in line with previous code
2024-04-22 21:42:51 +02:00
Christian Schnegelberger
17a50027b1 [ticket/17306] Change type description for get_context()
PHPBB3-17306
2024-04-21 21:21:09 +02:00
Marc Alexander
663100a44f Merge pull request #6596 from rxu/ticket/17303
[ticket/17303] Update jQuery to the version 3.7.1 - 3.3.x version
2024-04-21 21:15:04 +02:00
Marc Alexander
1c8128292c [ticket/17305] Change sql_sort to be more in line with previous code
PHPBB3-17305
2024-04-21 21:01:22 +02:00
Marc Alexander
25bd56c254 Merge pull request #6598 from marc1706/ticket/17305
[ticket/17305] Improve queries for unanswered posts/topics
2024-04-19 08:51:17 +02:00
Marc Alexander
d0c48f3fde [ticket/17305] Improve queries for unanswered posts/topics
PHPBB3-17305
2024-04-16 20:47:39 +02:00
rxu
abffd0f662 [ticket/17303] Update jQuery to the version 3.7.1
PHPBB3-17303
2024-04-15 00:19:52 +07:00
Marc Alexander
adf53d3264 Merge pull request #6592 from rxu/ticket/17299
[ticket/17299] Allow event to modify email core vars before sending a message
2024-04-10 16:37:35 +02:00
Marc Alexander
a9576a4084 Merge pull request #6593 from LukeWCS/ticket/17302
[ticket/17302] Fix password reset function
2024-04-09 22:02:25 +02:00
Marc Alexander
98929ca983 [ticket/17077] Add test for posting lock
PHPBB3-17077
2024-04-09 21:13:28 +02:00
Marc Alexander
3b5777f900 [ticket/17077] Move request handling outside locking and add release
PHPBB3-17077
2024-04-09 20:53:05 +02:00
LukeWCS
6943fbba89 [ticket/17302] Fix password reset function
Password reset function does not update all necessary data

PHPBB3-17302
2024-04-09 19:06:09 +02:00
Marc Alexander
c07c6816fc [ticket/17077] Improve handling of accidental double submission of posts
PHPBB3-17077
2024-04-08 21:50:27 +02:00
rxu
b38e8a2c84 [ticket/17299] Allow event to modify email core vars before sending a message
PHPBB3-17299
2024-03-31 09:55:57 +07:00
Marc Alexander
b2459edaf3 Merge pull request #6589 from rxu/ticket/17284
[ticket/17284] Add viewtopic_body_online_list_after template event
2024-03-20 20:47:39 +01:00
Marc Alexander
ff96c1a907 Merge pull request #6588 from marc1706/ticket/17296
[ticket/17296] Reduce complexity of relative paths on adm pages
2024-03-19 22:11:46 +01:00
Marc Alexander
b4a343bdc9 [ticket/17296] Enforce unique session entry for admin user with delete
PHPBB3-17296
2024-03-19 20:36:38 +01:00
rxu
6ee64c94a2 [ticket/17284] Add viewtopic_body_online_list_after template event
PHPBB3-17284
2024-03-13 23:25:02 +07:00
Marc Alexander
9c51a7866b [ticket/17296] Fix session page update test
PHPBB3-17296
2024-03-10 09:26:05 +01:00
Marc Alexander
51b3d9de63 [ticket/17296] Ensure session page update test actually runs
PHPBB3-17296
2024-03-07 21:25:08 +01:00
Marc Alexander
bda99e1c35 [ticket/17296] Reduce complexity of relative paths on adm pages
PHPBB3-17296
2024-03-07 20:57:19 +01:00
Marc Alexander
763c6f625f Merge pull request #6584 from Crizz0/ticket/17292
[ticket/17292] Use new spamhaus.org check url
2024-02-23 20:36:36 +01:00
Marc Alexander
06672d896b Merge pull request #6585 from marc1706/ticket/17293
[ticket/17293] Update composer and dependencies to latest versions
2024-02-23 20:05:18 +01:00
Marc Alexander
4afa184110 [ticket/17292] Add needed www prefix for spamcop
PHPBB3-17292
2024-02-23 20:01:41 +01:00
Marc Alexander
602841fd11 [ticket/17293] Update composer dependencies to latest versions
PHPBB3-17293
2024-02-23 18:20:30 +01:00
Marc Alexander
ae3c294a2f [ticket/17293] Update composer to 2.7.1
PHPBB3-17293
2024-02-23 18:19:53 +01:00
Christian Schnegelberger
00b8cb1e52 [ticket/17292] Use new spamhaus.org check url
PHPBB3-17292
2024-02-22 19:16:54 +01:00
Marc Alexander
eabe2632dc Merge pull request #6582 from rxu/ticket/17286
[ticket/17286] Do not update user session page if it does not exist
2024-02-18 20:34:32 +01:00
rxu
112392bcf3 [ticket/17286] Remove test pauses
PHPBB3-17286
2024-02-03 12:09:47 +07:00
rxu
9401ce1c5f [ticket/17286] Add test
PHPBB3-17286
2024-02-03 00:02:03 +07:00
rxu
ec7180db4f [ticket/17286] Do not update user session page if it does not exist
PHPBB3-17286
2024-02-02 23:33:12 +07:00
Marc Alexander
512a93727a Merge pull request #6568 from Prosk8er/ticket/17235
[ticket/17235] missing autocomplete for username
2024-01-04 21:04:17 +01:00
Marc Alexander
c4642d2502 Merge pull request #6580 from rxu/ticket/17117
[ticket/17117] Do not load non-existent/disabled notification methods
2024-01-02 16:47:49 +01:00
Prosk8er
f3a596b78b [ticket/17235] Fixes for issues mentioned in code review
PHPBB3-17235
2024-01-02 16:46:04 +01:00
rxu
887b1e25fb [ticket/17117] Add test for non=existent notification method
PHPBB3-17117
2024-01-02 16:30:44 +07:00
rxu
f31ea59a1a [ticket/17117] Do not load non-existent/disabled notification methods
Non-existent or disabled notification methods (f.e. added
by extensions which were later disabled/purged) should not be loaded.

PHPBB3-17117
2024-01-02 15:45:42 +07:00
Marc Alexander
61a28c154b Merge pull request #6563 from marc1706/ticket/17212
[ticket/17212] Support updating session info when editing post with p=
2024-01-01 21:35:53 +01:00
Marc Alexander
565053f508 Merge pull request #6573 from rxu/ticket/17232
[ticket/17232] Improve SQL error messages handling
2023-12-31 10:43:05 +01:00
Marc Alexander
5a922ffa5b Merge pull request #6578 from marc1706/ticket/17280
[ticket/17280] Fall back to branch when no valid title found
2023-12-31 09:38:20 +01:00
Marc Alexander
b4ff57e2a4 [ticket/17280] Fall back to branch when no valid title found
PHPBB3-17280
2023-12-30 10:07:49 +01:00
Marc Alexander
e4d5cbbc76 Merge pull request #6575 from rxu/ticket/17277
[ticket/17277] Add template events to UCP
2023-12-30 09:19:25 +01:00
rxu
dc415768a8 [ticket/17277] Add template events to UCP
PHPBB3-17277
2023-12-26 00:35:55 +07:00
rxu
6a8140e82b [ticket/17232] Improve SQL error messages handling
PHP 7 changes how most errors are reported by PHP. Instead of reporting errors
through the traditional error reporting mechanism used by PHP 5, most errors
are now reported by throwing Error exceptions.
Use it to display meaningful SQL error messages instead of PHP fatal errors
for SQL errors.

PHPBB3-17232
2023-12-20 15:07:14 +07:00
Marc Alexander
213d092f6f Merge pull request #6570 from Crizz0/ticket/17237
[ticket/17237] Use single quotes for QUICKMOD_ACTION_NOT_ALLOWED var
2023-12-17 20:04:30 +01:00
Marc Alexander
3477562c58 Merge pull request #6569 from marc1706/ticket/17236
[ticket/17236] Update composer dependencies to improve PHP 8.3 compatibility
2023-12-17 10:25:11 +01:00
Marc Alexander
d5d449b78e [ticket/17236] Update more dependencies
PHPBB3-17236
2023-12-16 20:36:43 +01:00
Christian Schnegelberger
6c43f81e8d [ticket/17237] Use single quotes for QUICKMOD_ACTION_NOT_ALLOWED var
PHPBB3-17237
2023-11-30 12:34:48 +01:00
Marc Alexander
856ce16a87 [ticket/17236] Update composer dependencies to improve PHP 8.3 compatibility
PHPBB3-17236
2023-11-29 20:39:30 +01:00
Prosk8er
bc5c095363 [ticket/17235] missing autocomplete for username
PHPBB3-17235
2023-11-29 09:14:51 -05:00
Marc Alexander
9ba6e9b60d Merge pull request #6567 from rxu/ticket/17233
[ticket/17233] Add PHP 8.3 tests to the 3.3.x branch - 3.3.x version
2023-11-26 20:52:33 +01:00
rxu
bf26da660a [ticket/17233] Add PHP 8.3 tests to the 3.3.x branch
PHPBB3-17233
2023-11-26 22:44:40 +07:00
Marc Alexander
a9b5dcd954 [ticket/17176] Use different call to cause a notice
The previous call was upgraded to cause a warning in PHP 8.3

PHPBB3-17176
2023-11-26 22:41:30 +07:00
Marc Alexander
303f8f55cb Merge pull request #6565 from marc1706/ticket/17230
[ticket/17230] Update doctum to 5.5.3 for PHP 8.1 compatibility
2023-11-21 20:52:12 +01:00
Marc Alexander
c6fe842bc8 [ticket/17230] Update doctum to 5.5.3 for PHP 8.1 compatibility
PHPBB3-17230
2023-11-21 20:00:59 +01:00
Marc Alexander
92e678a116 [ticket/17212] Extend viewonline test for editing post
PHPBB3-17212
2023-11-11 10:36:17 +01:00
Marc Alexander
c098468699 [ticket/17212] Add comment on the need for updating session info
PHPBB3-17212
2023-11-09 21:10:07 +01:00
Marc Alexander
613582e2c5 [ticket/17212] Support updating session info when editing post with p=
PHPBB3-17212
2023-11-09 21:08:31 +01:00
Marc Alexander
43e69df080 Merge pull request #6562 from marc1706/ticket/14047
[ticket/14047] Check for stream close handshake before closing stream
2023-11-05 15:35:53 +01:00
Marc Alexander
f6b4c5b70d Merge pull request #6557 from marc1706/ticket/17204
[ticket/17204] Update composer dependencies to latest versions
2023-11-04 08:28:59 +01:00
Marc Alexander
fe84120bf2 Merge pull request #6490 from rxu/ticket/16470
[ticket/16470] Update user last visit time on session begin
2023-11-04 08:26:45 +01:00
Marc Alexander
0e1e792574 [ticket/14047] Check for stream close handshake before closing stream
PHPBB3-14047
2023-11-03 22:21:44 +01:00
Marc Alexander
d4178511a2 Merge pull request #6559 from marc1706/ticket/17207
[ticket/17207] Lazily call get_web_root_path() in twig environment
2023-11-02 21:57:27 +01:00
Marc Alexander
0e3bc638e9 Merge pull request #6560 from marc1706/ticket/17208
[ticket/17208] Skip profile field data update if youtube cpf doesn't exist
2023-11-02 21:50:42 +01:00
Marc Alexander
dd549a5e43 [ticket/17208] Ensure to not run the previous migration with missing column
PHPBB3-17208
2023-11-01 16:54:19 +01:00
Marc Alexander
526c79d2e2 [ticket/17208] Skip profile field data update if youtube cpf doesn't exist
PHPBB3-17208
2023-11-01 16:50:20 +01:00
Marc Alexander
8afc638171 [ticket/17207] Lazily call get_web_root_path() in twig environment
PHPBB3-17207
2023-11-01 16:23:23 +01:00
rxu
9e130333c0 [ticket/16470] remove unneeded migration, adjust code
PHPBB3-16470
2023-11-01 21:03:07 +07:00
Marc Alexander
2b7d8020b9 [ticket/17204] Update composer to latest version
PHPBB3-17204
2023-10-31 22:33:08 +01:00
Marc Alexander
bb7e7b682d [ticket/17204] Update composer dependencies to latest versions
PHPBB3-17204
2023-10-31 22:20:35 +01:00
Marc Alexander
37039f95d2 Merge pull request #6555 from GanstaZ/ticket/17203
[ticket/17203] Add CSS ol for group desc
2023-10-31 22:10:04 +01:00
Marc Alexander
993e28098d Merge pull request #6554 from GanstaZ/ticket/17202
[ticket/17202] Include bidi.css to print only in RTL languages
2023-10-31 22:02:30 +01:00
Marc Alexander
25c20cbcf3 Merge pull request #6553 from marc1706/ticket/17201
[ticket/17201] Do not run dirname() on dir path during install redirect
2023-10-31 20:21:31 +01:00
Marc Alexander
88bbd0fca6 Merge pull request #6556 from GanstaZ/ticket/17200
[ticket/17200] Fix color parse error in viewonline legend
2023-10-30 21:40:33 +01:00
Marc Alexander
eed57fd089 Merge pull request #6543 from Crizz0/ticket/17187
[ticket/17187] Repair mcp link to first unread post
2023-10-30 21:37:25 +01:00
Marc Alexander
58fc9e042a [ticket/17201] Add comment on need to add dot to script_name
PHPBB3-17201
2023-10-29 16:54:07 +01:00
GanstaZ
5ab3916311 [ticket/17200] Remove not needed addition
PHPBB3-17200
2023-10-29 16:45:33 +01:00
GanstaZ
79b8f56427 [ticket/17200] Fix color error in viewonline legend
PHPBB3-17200
2023-10-25 15:56:03 +03:00
Marc Alexander
593c4b875c [ticket/17201] Split off logic into function and add tests
PHPBB3-17201
2023-10-23 21:10:53 +02:00
GanstaZ
2e93f5f3e8 [ticket/17202] Include bidi.css to print only in RTL languages
PHPBB3-17202
2023-10-23 21:47:10 +03:00
GanstaZ
959f60a591 [ticket/17203] Add CSS ol for group desc
PHPBB3-17203
2023-10-23 21:36:31 +03:00
Marc Alexander
607a2c483a [ticket/17201] Add dot for improved dirname for URI ending in slash
PHPBB3-17201
2023-10-23 17:26:10 +02:00
Marc Alexander
70ba9dac03 [ticket/17201] Do not run dirname() on dir path during install redirect
PHPBB3-17201
2023-10-22 20:46:29 +02:00
Marc Alexander
7e6c5df710 Merge branch 'prep-release-3.3.11' into 3.3.x 2023-10-21 08:09:41 +02:00
Marc Alexander
4eef6a4de4 [3.3.x] Update version numbers to 3.3.12-dev 2023-10-15 16:56:54 +02:00
Marc Alexander
01b8d6a58e Merge branch 'prep-release-3.3.11' into 3.3.x 2023-10-15 16:55:16 +02:00
Christian Schnegelberger
b0248d2d78 [ticket/17187] Repair mcp link to first unread post
PHPBB3-17187
2023-09-23 15:54:21 +02:00
rxu
7ba5f8f22a [ticket/16470] Revert session_time sync back
This reverts changes made by last 2 commits as they seem to break things.

PHPBB3-16470
2023-06-26 10:05:47 +07:00
rxu
f99d1a7a51 [ticket/16470] Remove tests for user_lastvisit vs session_time sync
PHPBB3-16470
PHPBB3-14173
2023-06-22 14:33:27 +07:00
rxu
33dfaa478c [ticket/16470] Further do not rely on session_time displaying user activity
session_time has not been updated during session_length, so relying on it last
activity data will be incorrect, especially if session_length value is high.
Thus rely on regular and properly updated user_lastvisit.
Remove user_lastvisit vs with session_time sync for the same reason.
Also get rid of the session_last_visit field as it floats between
user_lastvisit and session_time and actually is meaningless.

PHPBB3-16470
PHPBB3-14173
2023-06-22 13:09:51 +07:00
rxu
735b826063 [ticket/16470] Do not sync user last visit time with expired sessions time
PHPBB3-16470
PHPBB3-14173
2023-06-21 00:02:29 +07:00
rxu
bbe2b21310 [ticket/16470] Correctly handle user last visit update on session create
PHPBB3-16470
PHPBB3-14173
2023-06-18 23:56:44 +07:00
rxu
9e55d3cb44 [ticket/16470] Adjust user last visit time update logic
Previous logic doesn't work correctly as session_time value got updated
in regular manner, so that its 60 seconds lag with time_now
can be unreachable in some cases. So update user_lastvisit if it lags
for 60 sec of session_time.

PHPBB3-16470
PHPBB3-14173
2023-06-17 00:50:22 +07:00
rxu
a14e8f8ce5 [ticket/16470] Adjust method result type
PHPBB3-16470
PHPBB3-14173
2023-06-15 23:21:34 +07:00
rxu
aefdd86020 [ticket/16470] Add migration to update existing data
PHPBB3-16470
PHPBB3-14173
2023-06-12 01:37:34 +07:00
rxu
aafb522538 [ticket/16470] Update user last visit time on session begin
Update user last visit time on session begin same way as on session create.

PHPBB3-16470
PHPBB3-14173
2023-06-11 15:51:41 +07:00
190 changed files with 4393 additions and 846 deletions

View File

@@ -30,7 +30,7 @@ installer:
server:
cookie_secure: false
server_protocol: http://
force_server_vars: false
force_server_vars: true
server_name: localhost
server_port: 80
script_path: /

View File

@@ -34,6 +34,14 @@ sudo ln -s /workspaces/phpbb/phpBB /var/www/html
echo "[Codespaces] Copy phpBB configuration"
cp /workspaces/phpbb/.devcontainer/resources/phpbb-config.yml /workspaces/phpbb/phpBB/install/install-config.yml
# Force the server URL to reflect the Codespace
# https://docs.github.com/en/codespaces/developing-in-a-codespace/default-environment-variables-for-your-codespace
if [ "$CODESPACES" = true ] ; then
echo "[Codespaces] Set the phpBB server name using default environment variables"
codespaces_url="${CODESPACE_NAME}-80.${GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN}"
sed -i "s/localhost/$codespaces_url/g" /workspaces/phpbb/phpBB/install/install-config.yml
fi
# Install phpBB
echo "[Codespaces] Run phpBB CLI installation"
cd /workspaces/phpbb/phpBB && composer install --no-interaction

View File

@@ -7,4 +7,4 @@ Checklist:
Tracker ticket:
https://tracker.phpbb.com/browse/PHPBB3-12345
https://tracker.phpbb.com/browse/PHPBB-12345

View File

@@ -16,4 +16,4 @@ mkdir /var/tmp/slapd
cp .github/ldap/slapd.conf /var/tmp/slapd/slapd.conf
slapd -d 256 -d 128 -f /var/tmp/slapd/slapd.conf -h ldap://localhost:3389 &
sleep 3
ldapadd -h localhost:3389 -D "cn=admin,dc=example,dc=com" -w adminadmin -f .github/ldap/base.ldif
ldapadd -H ldap://localhost:3389 -D "cn=admin,dc=example,dc=com" -w adminadmin -f .github/ldap/base.ldif

View File

@@ -0,0 +1,70 @@
name: Check merge to master
on:
pull_request_target:
types: [ opened, synchronize, reopened ]
branches:
- 3.3.x
jobs:
merge-check:
if: github.event_name == 'pull_request_target' && github.event.pull_request.base.ref == '3.3.x'
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Ensure full history is fetched
- name: Set up Git user
run: |
git config --global user.name "github-actions"
git config --global user.email "github-actions@github.com"
- name: Fetch all branches
run: git fetch origin
- name: Simulate merging PR into 3.3.x
id: simulate_merge
run: |
git checkout 3.3.x
git fetch origin pull/${{ github.event.pull_request.number }}/head
git merge --no-ff FETCH_HEAD || exit 1
- name: Attempt to merge updated 3.3.x into master
id: merge_master
run: |
git checkout master
if git merge --no-ff 3.3.x --no-commit; then
echo "mergeable=true" >> $GITHUB_OUTPUT
else
echo "mergeable=false" >> $GITHUB_OUTPUT
git merge --abort
fi
- name: Find Comment
uses: peter-evans/find-comment@v3
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: The attempt to merge branch `3.3.x` into `master` has completed
- name: Post comment on PR
if: always() # Ensure this step always runs, regardless of merge result
uses: peter-evans/create-or-update-comment@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
issue-number: ${{ github.event.pull_request.number }}
comment-id: ${{ steps.fc.outputs.comment-id }}
edit-mode: replace
body: |
The attempt to merge branch `3.3.x` into `master` has completed after considering the changes in this PR.
- Merge result: ${{ steps.merge_master.outputs.mergeable == 'true' && 'Success ✅' || 'Conflict ❌' }}
${{ steps.merge_master.outputs.mergeable == 'true' && 'This PR is ready to be merged.' || 'A separate PR will be needed to merge `3.3.x` into `master`.' }}
- name: Mark job as succeeded
if: always()
run: echo "Merge check completed. Ignoring the result to avoid failed status."

View File

@@ -0,0 +1,60 @@
name: Merge 3.3.x into master
on:
push:
branches:
- 3.3.x
jobs:
merge-branch:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@v1
id: app-token
with:
app-id: ${{ vars.MERGE_MASTER_APP_ID }}
private-key: ${{ secrets.MERGE_MASTER_SECRET }}
- name: Checkout the repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch full history for proper merging
ref: 3.3.x # Checkout the 3.3.x branch
token: ${{ steps.app-token.outputs.token }}
- name: Fetch the latest commit information
id: get-commit-info
run: |
# Get the latest commit SHA and its author details
COMMIT_SHA=$(git rev-parse HEAD)
COMMIT_AUTHOR_NAME=$(git log -1 --pretty=format:'%an' $COMMIT_SHA)
COMMIT_AUTHOR_EMAIL=$(git log -1 --pretty=format:'%ae' $COMMIT_SHA)
# Save them as output for later steps
echo "commit_sha=$COMMIT_SHA" >> $GITHUB_ENV
echo "commit_author_name=$COMMIT_AUTHOR_NAME" >> $GITHUB_ENV
echo "commit_author_email=$COMMIT_AUTHOR_EMAIL" >> $GITHUB_ENV
- name: Set up Git with the pull request author's info
run: |
git config --global user.name "${{ env.commit_author_name }}"
git config --global user.email "${{ env.commit_author_email }}"
- name: Fetch all branches
run: git fetch --all
- name: Merge 3.3.x into master
run: |
git checkout master
if git merge --no-ff 3.3.x; then
echo "merge_failed=false" >> $GITHUB_ENV
else
echo "merge_failed=true" >> $GITHUB_ENV
fi
- name: Push changes to master if merge was successful
if: env.merge_failed == 'false'
run: git push origin master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -17,7 +17,7 @@ on:
jobs:
# Basic checks, e.g. parse errors, commit messages, etc.
basic-checks:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
include:
@@ -29,7 +29,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 100
@@ -51,7 +51,7 @@ jobs:
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -88,7 +88,7 @@ jobs:
# Tests for MySQL and MariaDB
mysql-tests:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
include:
@@ -126,6 +126,10 @@ jobs:
db: "mysql:5.7"
- php: '8.2'
db: "mysql:5.7"
- php: '8.3'
db: "mysql:5.7"
- php: '8.4'
db: "mysql:5.7"
name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }}
@@ -155,7 +159,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- id: database-type
env:
@@ -182,7 +186,7 @@ jobs:
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -227,7 +231,7 @@ jobs:
# Tests for PostgreSQL
postgres-tests:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
strategy:
matrix:
include:
@@ -257,6 +261,10 @@ jobs:
db: "postgres:14"
- php: '8.2'
db: "postgres:14"
- php: '8.3'
db: "postgres:14"
- php: '8.4'
db: "postgres:14"
name: PHP ${{ matrix.php }} - ${{ matrix.db }}
@@ -288,7 +296,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- id: database-type
env:
@@ -315,7 +323,7 @@ jobs:
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -353,14 +361,14 @@ jobs:
db: "mcr.microsoft.com/mssql/server:2017-latest"
db_alias: 'MSSQL 2017'
- php: '7.2'
db: "mcr.microsoft.com/mssql/server:2019-latest"
db: "mcr.microsoft.com/mssql/server:2019-CU27-ubuntu-20.04"
db_alias: 'MSSQL 2019'
name: PHP ${{ matrix.php }} - ${{ matrix.db_alias != '' && matrix.db_alias || matrix.db }}
services:
mssql:
image: ${{ matrix.db != 'mcr.microsoft.com/mssql/server:2017-latest' && matrix.db != 'mcr.microsoft.com/mssql/server:2019-latest' && 'mcr.microsoft.com/mssql/server:2017-latest' || matrix.db }}
image: ${{ matrix.db != 'mcr.microsoft.com/mssql/server:2017-latest' && matrix.db != 'mcr.microsoft.com/mssql/server:2019-CU27-ubuntu-20.04' && 'mcr.microsoft.com/mssql/server:2017-latest' || matrix.db }}
env:
SA_PASSWORD: "Pssw0rd_12"
ACCEPT_EULA: "y"
@@ -386,13 +394,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- id: database-type
env:
MATRIX_DB: ${{ matrix.db }}
run: |
if [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2017-latest' ] || [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2019-latest' ]
if [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2017-latest' ] || [ $MATRIX_DB == 'mcr.microsoft.com/mssql/server:2019-CU27-ubuntu-20.04' ]
then
db='mssql'
else
@@ -418,7 +426,7 @@ jobs:
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -462,6 +470,12 @@ jobs:
- php: '8.2'
db: "postgres"
type: 'unit'
- php: '8.3'
db: "postgres"
type: 'unit'
- php: '8.4'
db: "postgres"
type: 'unit'
- php: '7.4'
db: "postgres"
type: 'functional'
@@ -474,6 +488,12 @@ jobs:
- php: '8.2'
db: "postgres"
type: 'functional'
- php: '8.3'
db: "postgres"
type: 'functional'
- php: '8.4'
db: "postgres"
type: 'functional'
name: Windows - PHP ${{ matrix.php }} - ${{ matrix.db }} - ${{ matrix.type }}
@@ -483,7 +503,7 @@ jobs:
git config --system core.autocrlf false
git config --system core.eol lf
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -503,7 +523,7 @@ jobs:
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}

View File

@@ -42,8 +42,8 @@ We have unit and functional tests in order to prevent regressions. You can view
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) |
**master** | Latest development version | ![Tests](https://github.com/phpbb/phpbb/actions/workflows/tests.yml/badge.svg?branch=master) |
**3.3.x** | Development of version 3.3.x | ![Tests](https://github.com/phpbb/phpbb/actions/workflows/tests.yml/badge.svg?branch=3.3.x) |
## 📜 License

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.11" />
<property name="prevversion" value="3.3.10" />
<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, 3.3.8, 3.3.9" />
<property name="newversion" value="3.3.14" />
<property name="prevversion" value="3.3.13" />
<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, 3.3.8, 3.3.9, 3.3.10, 3.3.11, 3.3.12, 3.3.14-RC1" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />
@@ -181,6 +181,7 @@
<!-- create an empty config.php file (not for diffs) -->
<touch file="build/new_version/phpBB3/config.php" />
<copy file="build/new_version/phpBB3/phpbb/.htaccess" tofile="build/new_version/phpBB3/vendor/.htaccess" />
</target>

Binary file not shown.

Binary file not shown.

View File

@@ -224,7 +224,7 @@ do
"footer")
err=$ERR_FOOTER;
# Each ticket is on its own line
echo "$line" | grep -Eq "^PHPBB3-[0-9]+$";
echo "$line" | grep -Eq "^PHPBB3?-[0-9]+$";
;;
"eof")
err=$ERR_EOF;
@@ -356,7 +356,7 @@ echo "$expecting" | grep -q "eof" || (
# Check the branch ticket is mentioned, doesn't make sense otherwise
if [ $ticket -gt 0 ]
then
echo "$tickets" | grep -Eq "\bPHPBB3-$ticket\b" || (
echo "$tickets" | grep -Eq "\bPHPBB3?-$ticket\b" || (
complain "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
complain "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
quit $ERR_FOOTER;

View File

@@ -34,6 +34,12 @@ then
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");
# Fall back to branch name if no ticket ID
if [ -z "$branch_title" ];
then
branch_title="$branch";
fi
if [ "security/" = "$(sed -E 's/(ticket\/)(security\/)?([0-9]+)(.+$)?/\2/gm;t;d' <<< "$branch")" ];
then
tail="$(printf '\n\nSECURITY-%s' "$ticket_id")";
@@ -41,7 +47,7 @@ then
# Branch is prefixed with 'ticket/', append ticket ID to message
if [ "$branch" != "${branch##ticket/}" ];
then
tail="$(printf '\n\nPHPBB3-%s' "$ticket_id")";
tail="$(printf '\n\nPHPBB-%s' "$ticket_id")";
fi
fi

View File

@@ -61,8 +61,8 @@ $template->set_custom_style(array(
),
), $phpbb_admin_path . 'style');
$template->assign_var('T_ASSETS_PATH', $phpbb_root_path . 'assets');
$template->assign_var('T_TEMPLATE_PATH', $phpbb_admin_path . 'style');
$template->assign_var('T_ASSETS_PATH', $phpbb_path_helper->update_web_root_path($phpbb_root_path . 'assets'));
$template->assign_var('T_TEMPLATE_PATH', $phpbb_path_helper->update_web_root_path($phpbb_root_path . 'style'));
// Instantiate new module
$module = new p_master();

View File

@@ -42,59 +42,52 @@
</tr>
</thead>
<tbody>
<!-- IF .enabled -->
<tr>
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_ENABLED}</strong><!-- EVENT acp_ext_list_enabled_title_after --></td>
</tr>
<!-- BEGIN enabled -->
<tr class="ext_enabled row-highlight">
<td><strong title="{enabled.NAME}">{enabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_enabled_name_after --></td>
<td style="text-align: center;">
<!-- IF enabled.S_VERSIONCHECK -->
<strong class="<!-- IF enabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{enabled.META_VERSION}</strong>
<!-- IF not enabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
<!-- ELSE -->
{enabled.META_VERSION}
<!-- ENDIF -->
</td>
<td style="text-align: center;"><a href="{enabled.U_DETAILS}">{L_DETAILS}</a></td>
<td style="text-align: center;">
<!-- BEGIN actions -->
<a href="{enabled.actions.U_ACTION}"<!-- IF enabled.actions.L_ACTION_EXPLAIN --> title="{enabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{enabled.actions.L_ACTION}</a>
<!-- IF not enabled.actions.S_LAST_ROW -->&nbsp;|&nbsp;<!-- ENDIF -->
<!-- END actions -->
</td>
</tr>
<!-- END enabled -->
<!-- ENDIF -->
<!-- IF .disabled -->
<tr>
<td class="row3" colspan="4"><strong>{L_EXTENSIONS_DISABLED}</strong><!-- EVENT acp_ext_list_disabled_title_after --></td>
</tr>
<!-- BEGIN disabled -->
<tr class="ext_disabled row-highlight">
<td><strong title="{disabled.NAME}">{disabled.META_DISPLAY_NAME}</strong><!-- EVENT acp_ext_list_disabled_name_after --></td>
<td style="text-align: center;">
<!-- IF disabled.S_VERSIONCHECK -->
<strong class="<!-- IF disabled.S_UP_TO_DATE -->current-ext<!-- ELSE -->outdated-ext<!-- ENDIF -->">{disabled.META_VERSION}</strong>
<!-- IF not disabled.S_UP_TO_DATE --><i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i><!-- ENDIF -->
<!-- ELSE -->
{disabled.META_VERSION}
<!-- ENDIF -->
</td>
<td style="text-align: center;">
<!-- IF disabled.U_DETAILS --><a href="{disabled.U_DETAILS}">{L_DETAILS}</a><!-- ENDIF -->
</td>
<td style="text-align: center;">
<!-- BEGIN actions -->
<a href="{disabled.actions.U_ACTION}"<!-- IF disabled.actions.L_ACTION_EXPLAIN --> title="{disabled.actions.L_ACTION_EXPLAIN}"<!-- ENDIF -->>{disabled.actions.L_ACTION}</a>
<!-- IF not disabled.actions.S_LAST_ROW -->&nbsp;|&nbsp;<!-- ENDIF -->
<!-- END actions -->
</td>
</tr>
<!-- END disabled -->
<!-- ENDIF -->
{% for list in ['enabled', 'disabled', 'not_installed'] %}
{% set blockname = attribute(loops, list) %}
{% if blockname|length %}
<tr>
<td class="row3" colspan="4"><strong>{{ lang('EXTENSIONS_' ~ list|upper) }}</strong>
{% if list == 'enabled' %}
{% EVENT acp_ext_list_enabled_title_after %}
{% elseif list == 'disabled' %}
{% EVENT acp_ext_list_disabled_title_after %}
{% elseif list == 'not_installed' %}
{% EVENT acp_ext_list_not_installed_title_after %}
{% endif %}
</td>
</tr>
{% for data in blockname %}
<tr class="ext_{{ list }} row-highlight">
<td><strong title="{{ data.NAME }}">{{ data.META_DISPLAY_NAME }}</strong>
{% if list == 'enabled' %}
{% EVENT acp_ext_list_enabled_name_after %}
{% elseif list == 'disabled' %}
{% EVENT acp_ext_list_disabled_name_after %}
{% elseif list == 'not_installed' %}
{% EVENT acp_ext_list_not_installed_name_after %}
{% endif %}
</td>
<td style="text-align: center;">
{% if data.S_VERSIONCHECK %}
<strong class="{% if data.S_UP_TO_DATE %}current-ext{% else %}outdated-ext{% endif %}">{{ data.META_VERSION }}</strong>
{% if not data.S_UP_TO_DATE %}<i class="fa fa-exclamation-circle outdated-ext" aria-hidden="true"></i>{% endif %}
{% else %}
{{ data.META_VERSION }}
{% endif %}
</td>
<td style="text-align: center;">
{% if data.U_DETAILS %}<a href="{{ data.U_DETAILS }}">{{ lang ('DETAILS') }}</a>{% endif %}
</td>
<td style="text-align: center;">
{% for actions in data.actions %}
<a href="{{ actions.U_ACTION }}"{% if actions.L_ACTION_EXPLAIN %} title="{{ actions.L_ACTION_EXPLAIN }}"{% endif %}>{{ actions.L_ACTION }}</a>
{% if not actions.S_LAST_ROW %}&nbsp;|&nbsp;{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}
{% endif %}
{% endfor %}
</tbody>
</table>

View File

@@ -225,6 +225,7 @@
<fieldset>
<legend>{L_ADD_USERS}</legend>
{% EVENT acp_groups_add_user_options_before %}
<dl>
<dt><label for="leader">{L_USER_GROUP_LEADER}{L_COLON}</label></dt>
<dd><label><input name="leader" type="radio" class="radio" value="1" /> {L_YES}</label>
@@ -235,11 +236,13 @@
<dd><label><input name="default" type="radio" class="radio" value="1" /> {L_YES}</label>
<label><input name="default" type="radio" class="radio" id="default" value="0" checked="checked" /> {L_NO}</label></dd>
</dl>
{% EVENT acp_groups_add_user_usernames_before %}
<dl>
<dt><label for="usernames">{L_USERNAME}{L_COLON}</label><br /><span>{L_USERNAMES_EXPLAIN}</span></dt>
<dd><textarea id="usernames" name="usernames" cols="40" rows="5"></textarea></dd>
<dd><!-- EVENT acp_groups_find_username_prepend -->[ <a href="{U_FIND_USERNAME}" onclick="find_username(this.href); return false;">{L_FIND_USERNAME}</a> ]<!-- EVENT acp_groups_find_username_append --></dd>
</dl>
{% EVENT acp_groups_add_user_options_after %}
<p class="quick">
<input class="button2" type="submit" name="addusers" value="{L_SUBMIT}" />

View File

@@ -14,27 +14,31 @@
<p>{L_ADMIN_INTRO}</p>
<!-- IF S_UPDATE_INCOMPLETE -->
{% if S_UPDATE_INCOMPLETE %}
<div class="errorbox">
<p>{L_UPDATE_INCOMPLETE} <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
<p>{{ lang('UPDATE_INCOMPLETE') }} <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
</div>
<!-- ELSEIF S_VERSIONCHECK_FAIL -->
{% elseif S_VERSIONCHECK_FAIL %}
<div class="errorbox notice">
<p>{L_VERSIONCHECK_FAIL}</p>
<p>{VERSIONCHECK_FAIL_REASON}</p>
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> &middot; <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
<p>{{ lang('VERSIONCHECK_FAIL') }}</p>
<p>{{ VERSIONCHECK_FAIL_REASON }}</p>
<p><a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> &middot; <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
</div>
<!-- ELSEIF not S_VERSION_UP_TO_DATE -->
{% elseif not S_VERSION_UP_TO_DATE %}
<div class="errorbox">
<p>{L_VERSION_NOT_UP_TO_DATE_TITLE}</p>
<p><a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a> &middot; <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
<p>{{ lang('VERSION_NOT_UP_TO_DATE_TITLE') }}</p>
<p><a href="{{ U_VERSIONCHECK_FORCE }}">{{ lang('VERSIONCHECK_FORCE_UPDATE') }}</a> &middot; <a href="{{ U_VERSIONCHECK }}">{{ lang('MORE_INFORMATION') }}</a></p>
</div>
<!-- ENDIF -->
<!-- IF S_VERSION_UPGRADEABLE -->
{% elseif S_VERSION_UP_TO_DATE && S_VERSIONCHECK_FORCE %}
<div class="successbox">
<p>{{ lang('VERSION_UP_TO_DATE_ACP') }}</p>
</div>
{% endif %}
{% if S_VERSION_UPGRADEABLE %}
<div class="errorbox notice">
<p>{UPGRADE_INSTRUCTIONS}</p>
<p>{{ UPGRADE_INSTRUCTIONS }}</p>
</div>
<!-- ENDIF -->
{% endif %}
<!-- IF S_SEARCH_INDEX_MISSING -->
<div class="errorbox">

View File

@@ -23,7 +23,7 @@ installLang = {
</script>
<script src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.6.0.min.js">\x3C/script>');</script><!-- ENDIF -->
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js">\x3C/script>');</script><!-- ENDIF -->
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
<!-- INCLUDEJS admin.js -->
{$SCRIPTS}

View File

@@ -34,7 +34,7 @@
</div>
<script src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.6.0.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
<!-- INCLUDEJS ajax.js -->
<!-- INCLUDEJS admin.js -->

View File

@@ -17,7 +17,7 @@
</div>
<script src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.6.0.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery-3.7.1.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
<script src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
<!-- EVENT acp_simple_footer_after -->

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -51,20 +51,10 @@ if (!defined('PHPBB_INSTALLED'))
$server_port = 443;
}
$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
if (!$script_name)
{
$script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF');
}
// $phpbb_root_path accounts for redirects from e.g. /adm
$script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/app.' . $phpEx;
// Replace any number of consecutive backslashes and/or slashes with a single slash
// (could happen on some proxy setups and/or Windows servers)
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);
$script_path = phpbb_get_install_redirect($phpbb_root_path, $phpEx);
// Eliminate . and .. from the path
require($phpbb_root_path . 'phpbb/filesystem.' . $phpEx);
require($phpbb_root_path . 'phpbb/filesystem/filesystem.' . $phpEx);
$phpbb_filesystem = new phpbb\filesystem\filesystem();
$script_path = $phpbb_filesystem->clean_path($script_path);

331
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": "50f5adcf8f574163ea58373031852768",
"content-hash": "eb658f95a4047347f31406a96a021c80",
"packages": [
{
"name": "bantu/ini-get-wrapper",
@@ -915,16 +915,16 @@
},
{
"name": "s9e/sweetdom",
"version": "2.1.0",
"version": "2.1.0.1",
"source": {
"type": "git",
"url": "https://github.com/s9e/SweetDOM.git",
"reference": "9e34ff8f353234daed102274012c840bda56aff2"
"reference": "daf6c04c56ef986d346c2fd57c2cf03406307dad"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/s9e/SweetDOM/zipball/9e34ff8f353234daed102274012c840bda56aff2",
"reference": "9e34ff8f353234daed102274012c840bda56aff2",
"url": "https://api.github.com/repos/s9e/SweetDOM/zipball/daf6c04c56ef986d346c2fd57c2cf03406307dad",
"reference": "daf6c04c56ef986d346c2fd57c2cf03406307dad",
"shasum": ""
},
"require": {
@@ -953,9 +953,9 @@
],
"support": {
"issues": "https://github.com/s9e/SweetDOM/issues",
"source": "https://github.com/s9e/SweetDOM/tree/2.1.0"
"source": "https://github.com/s9e/SweetDOM/tree/2.1.0.1"
},
"time": "2021-05-24T21:06:33+00:00"
"time": "2023-11-27T20:27:28+00:00"
},
{
"name": "s9e/text-formatter",
@@ -1712,16 +1712,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
"reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
"shasum": ""
},
"require": {
@@ -1735,9 +1735,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1774,7 +1771,7 @@
"portable"
],
"support": {
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0"
},
"funding": [
{
@@ -1790,20 +1787,20 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "639084e360537a19f9ee352433b84ce831f3d2da"
"reference": "a287ed7475f85bf6f61890146edbc932c0fff919"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da",
"reference": "639084e360537a19f9ee352433b84ce831f3d2da",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919",
"reference": "a287ed7475f85bf6f61890146edbc932c0fff919",
"shasum": ""
},
"require": {
@@ -1816,9 +1813,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1861,7 +1855,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0"
},
"funding": [
{
@@ -1877,20 +1871,20 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d",
"reference": "bc45c394692b948b4d383a08d7753968bed9a83d",
"shasum": ""
},
"require": {
@@ -1901,9 +1895,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -1945,7 +1936,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0"
},
"funding": [
{
@@ -1961,20 +1952,20 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": ""
},
"require": {
@@ -1988,9 +1979,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -2028,7 +2016,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
},
"funding": [
{
@@ -2044,7 +2032,7 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-php56",
@@ -2184,16 +2172,16 @@
},
{
"name": "symfony/polyfill-php72",
"version": "v1.27.0",
"version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
"reference": "869329b1e9894268a8a61dabb69153029b7a8c97"
"reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97",
"reference": "869329b1e9894268a8a61dabb69153029b7a8c97",
"url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25",
"reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25",
"shasum": ""
},
"require": {
@@ -2201,9 +2189,6 @@
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.27-dev"
},
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -2240,7 +2225,7 @@
"shim"
],
"support": {
"source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0"
"source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0"
},
"funding": [
{
@@ -2256,7 +2241,7 @@
"type": "tidelift"
}
],
"time": "2022-11-03T14:55:06+00:00"
"time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/process",
@@ -2650,16 +2635,16 @@
},
{
"name": "twig/twig",
"version": "v2.15.5",
"version": "v2.16.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e"
"reference": "0c9cc7ef2e0ec6d20c5af1200522a89ba101f623"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/fc02a6af3eeb97c4bf5650debc76c2eda85ac22e",
"reference": "fc02a6af3eeb97c4bf5650debc76c2eda85ac22e",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/0c9cc7ef2e0ec6d20c5af1200522a89ba101f623",
"reference": "0c9cc7ef2e0ec6d20c5af1200522a89ba101f623",
"shasum": ""
},
"require": {
@@ -2670,12 +2655,12 @@
},
"require-dev": {
"psr/container": "^1.0",
"symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
"symfony/phpunit-bridge": "^5.4.9|^6.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.15-dev"
"dev-master": "2.16-dev"
}
},
"autoload": {
@@ -2714,7 +2699,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
"source": "https://github.com/twigphp/Twig/tree/v2.15.5"
"source": "https://github.com/twigphp/Twig/tree/v2.16.0"
},
"funding": [
{
@@ -2726,7 +2711,7 @@
"type": "tidelift"
}
],
"time": "2023-05-03T17:49:41+00:00"
"time": "2023-12-22T07:22:15+00:00"
},
{
"name": "zendframework/zend-code",
@@ -3042,16 +3027,16 @@
},
{
"name": "myclabs/deep-copy",
"version": "1.11.1",
"version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
"reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
"shasum": ""
},
"require": {
@@ -3059,11 +3044,12 @@
},
"conflict": {
"doctrine/collections": "<1.6.8",
"doctrine/common": "<2.13.3 || >=3,<3.2.2"
"doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
"phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
@@ -3089,7 +3075,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
"source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
},
"funding": [
{
@@ -3097,7 +3083,7 @@
"type": "tidelift"
}
],
"time": "2023-03-08T13:26:56+00:00"
"time": "2024-06-12T14:39:25+00:00"
},
{
"name": "phar-io/manifest",
@@ -3548,29 +3534,29 @@
},
{
"name": "phpspec/prophecy",
"version": "v1.17.0",
"version": "v1.19.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2"
"reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2",
"reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/67a759e7d8746d501c41536ba40cd9c0a07d6a87",
"reference": "67a759e7d8746d501c41536ba40cd9c0a07d6a87",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2 || ^2.0",
"php": "^7.2 || 8.0.* || 8.1.* || 8.2.*",
"php": "^7.2 || 8.0.* || 8.1.* || 8.2.* || 8.3.*",
"phpdocumentor/reflection-docblock": "^5.2",
"sebastian/comparator": "^3.0 || ^4.0",
"sebastian/recursion-context": "^3.0 || ^4.0"
"sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0",
"sebastian/recursion-context": "^3.0 || ^4.0 || ^5.0 || ^6.0"
},
"require-dev": {
"phpspec/phpspec": "^6.0 || ^7.0",
"phpstan/phpstan": "^1.9",
"phpunit/phpunit": "^8.0 || ^9.0"
"phpunit/phpunit": "^8.0 || ^9.0 || ^10.0"
},
"type": "library",
"extra": {
@@ -3603,6 +3589,7 @@
"keywords": [
"Double",
"Dummy",
"dev",
"fake",
"mock",
"spy",
@@ -3610,9 +3597,9 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
"source": "https://github.com/phpspec/prophecy/tree/v1.17.0"
"source": "https://github.com/phpspec/prophecy/tree/v1.19.0"
},
"time": "2023-02-02T15:41:36+00:00"
"time": "2024-02-29T11:52:51+00:00"
},
{
"name": "phpunit/dbunit",
@@ -3740,16 +3727,16 @@
},
{
"name": "phpunit/php-file-iterator",
"version": "2.0.5",
"version": "2.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
"reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5"
"reference": "69deeb8664f611f156a924154985fbd4911eb36b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5",
"reference": "42c5ba5220e6904cbfe8b1a1bda7c0cfdc8c12f5",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/69deeb8664f611f156a924154985fbd4911eb36b",
"reference": "69deeb8664f611f156a924154985fbd4911eb36b",
"shasum": ""
},
"require": {
@@ -3788,7 +3775,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.5"
"source": "https://github.com/sebastianbergmann/php-file-iterator/tree/2.0.6"
},
"funding": [
{
@@ -3796,7 +3783,7 @@
"type": "github"
}
],
"time": "2021-12-02T12:42:26+00:00"
"time": "2024-03-01T13:39:50+00:00"
},
{
"name": "phpunit/php-text-template",
@@ -3845,16 +3832,16 @@
},
{
"name": "phpunit/php-timer",
"version": "2.1.3",
"version": "2.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662"
"reference": "a691211e94ff39a34811abd521c31bd5b305b0bb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/2454ae1765516d20c4ffe103d85a58a9a3bd5662",
"reference": "2454ae1765516d20c4ffe103d85a58a9a3bd5662",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a691211e94ff39a34811abd521c31bd5b305b0bb",
"reference": "a691211e94ff39a34811abd521c31bd5b305b0bb",
"shasum": ""
},
"require": {
@@ -3892,7 +3879,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
"source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.3"
"source": "https://github.com/sebastianbergmann/php-timer/tree/2.1.4"
},
"funding": [
{
@@ -3900,7 +3887,7 @@
"type": "github"
}
],
"time": "2020-11-30T08:20:02+00:00"
"time": "2024-03-01T13:42:41+00:00"
},
{
"name": "phpunit/php-token-stream",
@@ -4052,16 +4039,16 @@
},
{
"name": "sebastian/code-unit-reverse-lookup",
"version": "1.0.2",
"version": "1.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
"reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619"
"reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/1de8cd5c010cb153fcd68b8d0f64606f523f7619",
"reference": "1de8cd5c010cb153fcd68b8d0f64606f523f7619",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54",
"reference": "92a1a52e86d34cde6caa54f1b5ffa9fda18e5d54",
"shasum": ""
},
"require": {
@@ -4095,7 +4082,7 @@
"homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
"support": {
"issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
"source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.2"
"source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/1.0.3"
},
"funding": [
{
@@ -4103,7 +4090,7 @@
"type": "github"
}
],
"time": "2020-11-30T08:15:22+00:00"
"time": "2024-03-01T13:45:45+00:00"
},
{
"name": "sebastian/comparator",
@@ -4181,16 +4168,16 @@
},
{
"name": "sebastian/diff",
"version": "3.0.4",
"version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae"
"reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6296a0c086dd0117c1b78b059374d7fcbe7545ae",
"reference": "6296a0c086dd0117c1b78b059374d7fcbe7545ae",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98ff311ca519c3aa73ccd3de053bdb377171d7b6",
"reference": "98ff311ca519c3aa73ccd3de053bdb377171d7b6",
"shasum": ""
},
"require": {
@@ -4235,7 +4222,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"source": "https://github.com/sebastianbergmann/diff/tree/3.0.4"
"source": "https://github.com/sebastianbergmann/diff/tree/3.0.6"
},
"funding": [
{
@@ -4243,20 +4230,20 @@
"type": "github"
}
],
"time": "2023-05-07T05:30:20+00:00"
"time": "2024-03-02T06:16:36+00:00"
},
{
"name": "sebastian/environment",
"version": "4.2.4",
"version": "4.2.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0"
"reference": "56932f6049a0482853056ffd617c91ffcc754205"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
"reference": "d47bbbad83711771f167c72d4e3f25f7fcc1f8b0",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/56932f6049a0482853056ffd617c91ffcc754205",
"reference": "56932f6049a0482853056ffd617c91ffcc754205",
"shasum": ""
},
"require": {
@@ -4298,7 +4285,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
"source": "https://github.com/sebastianbergmann/environment/tree/4.2.4"
"source": "https://github.com/sebastianbergmann/environment/tree/4.2.5"
},
"funding": [
{
@@ -4306,24 +4293,24 @@
"type": "github"
}
],
"time": "2020-11-30T07:53:42+00:00"
"time": "2024-03-01T13:49:59+00:00"
},
{
"name": "sebastian/exporter",
"version": "3.1.5",
"version": "3.1.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6"
"reference": "1939bc8fd1d39adcfa88c5b35335910869214c56"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6",
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1939bc8fd1d39adcfa88c5b35335910869214c56",
"reference": "1939bc8fd1d39adcfa88c5b35335910869214c56",
"shasum": ""
},
"require": {
"php": ">=7.0",
"php": ">=7.2",
"sebastian/recursion-context": "^3.0"
},
"require-dev": {
@@ -4375,7 +4362,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5"
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.6"
},
"funding": [
{
@@ -4383,7 +4370,7 @@
"type": "github"
}
],
"time": "2022-09-14T06:00:17+00:00"
"time": "2024-03-02T06:21:38+00:00"
},
{
"name": "sebastian/global-state",
@@ -4442,16 +4429,16 @@
},
{
"name": "sebastian/object-enumerator",
"version": "3.0.4",
"version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
"reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2"
"reference": "ac5b293dba925751b808e02923399fb44ff0d541"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
"reference": "e67f6d32ebd0c749cf9d1dbd9f226c727043cdf2",
"url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ac5b293dba925751b808e02923399fb44ff0d541",
"reference": "ac5b293dba925751b808e02923399fb44ff0d541",
"shasum": ""
},
"require": {
@@ -4487,7 +4474,7 @@
"homepage": "https://github.com/sebastianbergmann/object-enumerator/",
"support": {
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
"source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.4"
"source": "https://github.com/sebastianbergmann/object-enumerator/tree/3.0.5"
},
"funding": [
{
@@ -4495,20 +4482,20 @@
"type": "github"
}
],
"time": "2020-11-30T07:40:27+00:00"
"time": "2024-03-01T13:54:02+00:00"
},
{
"name": "sebastian/object-reflector",
"version": "1.1.2",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
"reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d"
"reference": "1d439c229e61f244ff1f211e5c99737f90c67def"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
"reference": "9b8772b9cbd456ab45d4a598d2dd1a1bced6363d",
"url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/1d439c229e61f244ff1f211e5c99737f90c67def",
"reference": "1d439c229e61f244ff1f211e5c99737f90c67def",
"shasum": ""
},
"require": {
@@ -4542,7 +4529,7 @@
"homepage": "https://github.com/sebastianbergmann/object-reflector/",
"support": {
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
"source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.2"
"source": "https://github.com/sebastianbergmann/object-reflector/tree/1.1.3"
},
"funding": [
{
@@ -4550,20 +4537,20 @@
"type": "github"
}
],
"time": "2020-11-30T07:37:18+00:00"
"time": "2024-03-01T13:56:04+00:00"
},
{
"name": "sebastian/recursion-context",
"version": "3.0.1",
"version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
"reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb"
"reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/367dcba38d6e1977be014dc4b22f47a484dac7fb",
"reference": "367dcba38d6e1977be014dc4b22f47a484dac7fb",
"url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/9bfd3c6f1f08c026f542032dfb42813544f7d64c",
"reference": "9bfd3c6f1f08c026f542032dfb42813544f7d64c",
"shasum": ""
},
"require": {
@@ -4605,7 +4592,7 @@
"homepage": "http://www.github.com/sebastianbergmann/recursion-context",
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
"source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.1"
"source": "https://github.com/sebastianbergmann/recursion-context/tree/3.0.2"
},
"funding": [
{
@@ -4613,20 +4600,20 @@
"type": "github"
}
],
"time": "2020-11-30T07:34:24+00:00"
"time": "2024-03-01T14:07:30+00:00"
},
{
"name": "sebastian/resource-operations",
"version": "2.0.2",
"version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
"reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3"
"reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/31d35ca87926450c44eae7e2611d45a7a65ea8b3",
"reference": "31d35ca87926450c44eae7e2611d45a7a65ea8b3",
"url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/72a7f7674d053d548003b16ff5a106e7e0e06eee",
"reference": "72a7f7674d053d548003b16ff5a106e7e0e06eee",
"shasum": ""
},
"require": {
@@ -4656,8 +4643,7 @@
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
"support": {
"issues": "https://github.com/sebastianbergmann/resource-operations/issues",
"source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.2"
"source": "https://github.com/sebastianbergmann/resource-operations/tree/2.0.3"
},
"funding": [
{
@@ -4665,7 +4651,7 @@
"type": "github"
}
],
"time": "2020-11-30T07:30:19+00:00"
"time": "2024-03-01T13:59:09+00:00"
},
{
"name": "sebastian/version",
@@ -4716,16 +4702,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "3.7.2",
"version": "3.10.1",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879"
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
"reference": "8f90f7a53ce271935282967f53d0894f8f1ff877"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879",
"reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879",
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877",
"reference": "8f90f7a53ce271935282967f53d0894f8f1ff877",
"shasum": ""
},
"require": {
@@ -4735,11 +4721,11 @@
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
"phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
},
"bin": [
"bin/phpcs",
"bin/phpcbf"
"bin/phpcbf",
"bin/phpcs"
],
"type": "library",
"extra": {
@@ -4754,22 +4740,45 @@
"authors": [
{
"name": "Greg Sherwood",
"role": "lead"
"role": "Former lead"
},
{
"name": "Juliette Reinders Folmer",
"role": "Current lead"
},
{
"name": "Contributors",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
"standards",
"static analysis"
],
"support": {
"issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
"source": "https://github.com/squizlabs/PHP_CodeSniffer",
"wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
"issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
"security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
"source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
},
"time": "2023-02-22T23:07:41+00:00"
"funding": [
{
"url": "https://github.com/PHPCSStandards",
"type": "github"
},
{
"url": "https://github.com/jrfnl",
"type": "github"
},
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
}
],
"time": "2024-05-22T21:24:41+00:00"
},
{
"name": "symfony/browser-kit",
@@ -4976,16 +4985,16 @@
},
{
"name": "theseer/tokenizer",
"version": "1.2.1",
"version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
"reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
"reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"shasum": ""
},
"require": {
@@ -5014,7 +5023,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
"source": "https://github.com/theseer/tokenizer/tree/1.2.1"
"source": "https://github.com/theseer/tokenizer/tree/1.2.3"
},
"funding": [
{
@@ -5022,7 +5031,7 @@
"type": "github"
}
],
"time": "2021-07-28T10:34:58+00:00"
"time": "2024-03-03T12:36:25+00:00"
},
{
"name": "webmozart/assert",
@@ -5089,7 +5098,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
"php": "^7.1.3 || ^8.0.0",
"php": "^7.2 || ^8.0.0",
"ext-json": "*",
"ext-mbstring": "*"
},
@@ -5097,5 +5106,5 @@
"platform-overrides": {
"php": "7.2"
},
"plugin-api-version": "2.2.0"
"plugin-api-version": "2.6.0"
}

View File

@@ -281,6 +281,22 @@ services:
tags:
- { name: console.command }
console.command.user.delete_id:
class: phpbb\console\command\user\delete_id
arguments:
- '@dbal.conn'
- '@language'
- '@log'
- '@user'
- '@user_loader'
- '%tables.bots%'
- '%tables.user_group%'
- '%tables.users%'
- '%core.root_path%'
- '%core.php_ext%'
tags:
- { name: console.command }
console.command.user.reclean:
class: phpbb\console\command\user\reclean
arguments:

View File

@@ -67,6 +67,13 @@ services:
- '@controller.helper'
- '@dispatcher'
posting.lock:
class: phpbb\lock\posting
shared: false
arguments:
- '@cache.driver'
- '@config'
viewonline_helper:
class: phpbb\viewonline_helper
arguments:

View File

@@ -9,6 +9,7 @@ services:
arguments:
- '@template'
- '@language'
- '@user'
- '%debug.exceptions%'
tags:
- { name: kernel.event_subscriber }

View File

@@ -1,4 +1,15 @@
services:
phpbb.ucp.controller.delete_cookies:
class: phpbb\ucp\controller\delete_cookies
arguments:
- '@config'
- '@dispatcher'
- '@language'
- '@request'
- '@user'
- '%core.root_path%'
- '%core.php_ext%'
phpbb.ucp.controller.reset_password:
class: phpbb\ucp\controller\reset_password
arguments:

View File

@@ -1,3 +1,7 @@
phpbb_ucp_delete_cookies_controller:
path: /delete_cookies
defaults: { _controller: phpbb.ucp.controller.delete_cookies:handle }
phpbb_ucp_reset_password_controller:
path: /reset_password
defaults: { _controller: phpbb.ucp.controller.reset_password:reset }

View File

@@ -50,6 +50,12 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<li><a href="#v3314rc1">Changes since 3.3.14-RC1</a></li>
<li><a href="#v3313">Changes since 3.3.13</a></li>
<li><a href="#v3313rc1">Changes since 3.3.13-RC1</a></li>
<li><a href="#v3312">Changes since 3.3.12</a></li>
<li><a href="#v3312rc1">Changes since 3.3.12-RC1</a></li>
<li><a href="#v3311">Changes since 3.3.11</a></li>
<li><a href="#v3310">Changes since 3.3.10</a></li>
<li><a href="#v3310rc1">Changes since 3.3.10-RC1</a></li>
<li><a href="#v339">Changes since 3.3.9</a></li>
@@ -167,6 +173,157 @@
<div class="inner">
<div class="content">
<a name="v3314rc1"></a><h3>Changes since 3.3.14-RC1</h3>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17421">PHPBB-17421</a>] - Rename section for not installed extensions to not installed</li>
</ul>
<a name="v3313"></a><h3>Changes since 3.3.13</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17181">PHPBB-17181</a>] - If statement to highlight Reported PMS on the view message page doesn't work.</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17383">PHPBB-17383</a>] - HELO/EHLO error while using gethostbyaddr()</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17384">PHPBB-17384</a>] - Passing E_USER_ERROR to trigger_error() is deprecated in PHP 8.4</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17385">PHPBB-17385</a>] - Version check without SSL flag for CDB extensions fails</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17386">PHPBB-17386</a>] - Incorrect trace result while tracing user-based permissions</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17387">PHPBB-17387</a>] - PHP warnings in search results</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17390">PHPBB-17390</a>] - Missing buttons for approval of new messages</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17391">PHPBB-17391</a>] - PHP warnings on attempt to create user group having name already in use</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17398">PHPBB-17398</a>] - Ajax error on deleting cookies</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17405">PHPBB-17405</a>] - Function phpbb_gmgetdate() returns incorrect result for edge cases</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17410">PHPBB-17410</a>] - UCP tabs do not work when testing out another user's permissions</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-16852">PHPBB-16852</a>] - Addition of a new PHP event concerning bump topics</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17359">PHPBB-17359</a>] - Distinct disabled and not installed extensions in the list</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17376">PHPBB-17376</a>] - Link reference to quote post is a poor accessibility experience</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17382">PHPBB-17382</a>] - Incorrect grammar on FAQ page regarding searching for members</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17388">PHPBB-17388</a>] - Add php event to bump_topic_allowed function</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17394">PHPBB-17394</a>] - Check mergeability of PR on GitHub Actions</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17396">PHPBB-17396</a>] - Automatically handle merges of 3.3.x into master</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17397">PHPBB-17397</a>] - Add event for forum_data query in viewforum</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17402">PHPBB-17402</a>] - Add possibility to force reparsing BBCode via CLI</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17407">PHPBB-17407</a>] - Limit mergeability check to single comment</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17411">PHPBB-17411</a>] - Add core event to search.php</li>
</ul>
<a name="v3313rc1"></a><h3>Changes since 3.3.13-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17377">PHPBB-17377</a>] - MSSQL builds on GitHub actions broken</li>
</ul>
<a name="v3312"></a><h3>Changes since 3.3.12</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-13916">PHPBB-13916</a>] - Cancelling save draft removes previous notify setting on posting page</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-14454">PHPBB-14454</a>] - Accessing ACP modules while testing user permissions returns a General Error</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-15043">PHPBB-15043</a>] - Searching no longer working in 3.2.0</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-15576">PHPBB-15576</a>] - PM subject truncated to shorter length than maxlength</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-16213">PHPBB-16213</a>] - vendor and phpbb folders should have .htaccess files</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-16907">PHPBB-16907</a>] - &quot;phpbb&quot; value in &quot;hiddenSegments&quot; blocks client requests for extensions in IIS</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17109">PHPBB-17109</a>] - Users without the &quot;Can use signature&quot; permission should not see checkboxes for signature</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17175">PHPBB-17175</a>] - Breadcrumbs show wrong forum and topic when using 'email topic'</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17301">PHPBB-17301</a>] - Wrong length parameter for fread in phpbb/cache/driver/file.php can lead to unusable forum</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17327">PHPBB-17327</a>] - Fix linting issue in console user add command</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17332">PHPBB-17332</a>] - New permission copied from existing permission ignores permission set options</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17337">PHPBB-17337</a>] - Transaction begin is missing from mysqli driver </li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17338">PHPBB-17338</a>] - Incorrect members list sorting by user_last_visit</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17351">PHPBB-17351</a>] - phpBB2 password hashes incorrectly handled during rehash cron</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17352">PHPBB-17352</a>] - Long rank titles push other profile details below</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17353">PHPBB-17353</a>] - Gravatar avatar src is not image src</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17356">PHPBB-17356</a>] - Errors hidden by at are being displayed in PHP 8 or newer</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17358">PHPBB-17358</a>] - Redis cache never expires with the TTL of 0</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17362">PHPBB-17362</a>] - Missing declaration of property in extension manager</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17365">PHPBB-17365</a>] - Enforce the search word limit on queries containing operators without white space</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17366">PHPBB-17366</a>] - Captcha disappears on error message from registration &amp; posting</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17369">PHPBB-17369</a>] - Permanently deleting soft-deleted topics returns incorrect forum in redirect link</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17370">PHPBB-17370</a>] - Deleting Cookies on FAQ/other pages</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17374">PHPBB-17374</a>] - ACP - Maintenance - Logs: Deleting Error / Bug</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17375">PHPBB-17375</a>] - User lastvisit gets updated too often in session garbage collection</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-16553">PHPBB-16553</a>] - Disapproving a reported post causes a &quot;Module not accessible&quot; error</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17308">PHPBB-17308</a>] - Rename tracker project key to PHPBB-</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17315">PHPBB-17315</a>] - Add new template events to group</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17316">PHPBB-17316</a>] - Add template events to ucp_groups_manage</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17317">PHPBB-17317</a>] - Update button text and make it more readable</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17325">PHPBB-17325</a>] - Show explicit message for &quot;Re-Check version&quot; if installed version is still up to date</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17340">PHPBB-17340</a>] - Update composer to 2.7.7</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17342">PHPBB-17342</a>] - Add PHP 8.4-dev tests to GitHub Actions</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17347">PHPBB-17347</a>] - Support deleting users by ID via console</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17350">PHPBB-17350</a>] - Add user IP address to log when installing extensions on fresh installs</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-17355">PHPBB-17355</a>] - Update gravatar hash to sha256</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-13933">PHPBB-13933</a>] - Update tokens' definitions in acp_bbcodes</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB-16890">PHPBB-16890</a>] - Edit the config sample files and web.config to deny access to the &quot;config&quot; directory</li>
</ul>
<a name="v3312rc1"></a><h3>Changes since 3.3.12-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17312">PHPBB3-17312</a>] - User last visit gets updated too often</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17324">PHPBB3-17324</a>] - Add template event to notification_dropdown.html</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/SECURITY-276">SECURITY-276</a>] - Prevent resending activation email too often</li>
<li>[<a href="https://tracker.phpbb.com/browse/SECURITY-278">SECURITY-278</a>] - Always release cron lock, even invalid task is passed</li>
</ul>
<a name="v3311"></a><h3>Changes since 3.3.11</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-14047">PHPBB3-14047</a>] - Jabber discards messages when stream gets closed without waiting for acknowledgement</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-15325">PHPBB3-15325</a>] - Global moderator permissions shown in forum moderator permissions</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16470">PHPBB3-16470</a>] - Memberlist bug - sorting by Last active date is incorrect</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17077">PHPBB3-17077</a>] - Multiple posts at once, even if the user shouldn't ignore the flood interval</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17117">PHPBB3-17117</a>] - Deactivated notification method leads to crash</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17130">PHPBB3-17130</a>] - Text reparser changes magic URL state in posts</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17187">PHPBB3-17187</a>] - Unread Topic URL Link Not Working On MCP View Forum Topic List</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17200">PHPBB3-17200</a>] - Color Parse Error In viewonline.php Legend</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17201">PHPBB3-17201</a>] - Redirect to installer might be invalid when accessing subfolder</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17202">PHPBB3-17202</a>] - The bidi.css File Is Loaded When Viewing LTR Topic Print View Page</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17203">PHPBB3-17203</a>] - Group Description With BBCode Ordered List Breaks Layout</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17207">PHPBB3-17207</a>] - Extensions are unable to use PHPBB_USE_BOARD_URL_PATH</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17208">PHPBB3-17208</a>] - Update Error YouTube Profilfeld</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17212">PHPBB3-17212</a>] - Who is online incorrectly reports page when posting with only post URL parameter</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17237">PHPBB3-17237</a>] - QUICKMOD_ACTION_NOT_ALLOWED uses &quot; instead of ' </li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17286">PHPBB3-17286</a>] - Non-existent urls to be written down to session_page</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17292">PHPBB3-17292</a>] - Link to spamhaus.org no longer valid</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17296">PHPBB3-17296</a>] - mod_security false positive denies access to ACP</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17302">PHPBB3-17302</a>] - Password reset function does not update all necessary data</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17306">PHPBB3-17306</a>] - Wrong declaration of function input values</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17230">PHPBB3-17230</a>] - Update doctum for PHP 8.1 support</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17232">PHPBB3-17232</a>] - Improve MySQL error messages in PHP 8.1+</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17233">PHPBB3-17233</a>] - Add PHP 8.3 tests to the 3.3.x branch</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17235">PHPBB3-17235</a>] - Missing autocomplete for username &amp; password</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17236">PHPBB3-17236</a>] - Update symfony dependencies to improve PHP 8.3 compatibility</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17277">PHPBB3-17277</a>] - Add template events to UCP</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17284">PHPBB3-17284</a>] - Add event to add content after the online users list in viewtopic</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17293">PHPBB3-17293</a>] - Update composer and dependencies to latest versions</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17299">PHPBB3-17299</a>] - Allow core event to modify variables while sending email</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17303">PHPBB3-17303</a>] - Update jQuery to 3.7+</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17305">PHPBB3-17305</a>] - Improve queries for unanswered topics and posts</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17310">PHPBB3-17310</a>] - Update GitHub actions workflows to Node.js 20</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17204">PHPBB3-17204</a>] - Update composer and node dependencies</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17280">PHPBB3-17280</a>] - Fallback to branch name on branches without ticket ID</li>
</ul>
<a name="v3310"></a><h3>Changes since 3.3.10</h3>
<h4>Bug</h4>
<ul>

View File

@@ -147,7 +147,7 @@
<li>Oracle</li>
</ul>
</li>
<li><strong>PHP 7.2.0+</strong> up to and including <strong>PHP 8.1</strong> with support for the database you intend to use.</li>
<li><strong>PHP 7.2.0+</strong> up to and including <strong>PHP 8.3</strong> with support for the database you intend to use.</li>
<li>The following PHP modules are required:
<ul>
<li>json</li>

View File

@@ -327,7 +327,7 @@
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQLi 4.1.3, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 7.2.0 to 7.4.x, 8.0.x and 8.1.x.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQLi 4.1.3, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 7.2.0 to 7.4.x and 8.0.x to 8.3.x.</p>
<a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>

View File

@@ -94,6 +94,20 @@ acp_ext_list_enabled_title_after
* Since: 3.1.11-RC1
* Purpose: Add text after enabled extensions section title.
acp_ext_list_not_installed_name_after
===
* Location: adm/style/acp_ext_list.html
* Since: 3.3.14-RC1
* Changed: 3.3.14 Renamed from acp_ext_list_available_name_after
* Purpose: Add content after the name of not installed extensions in the list
acp_ext_list_not_installed_title_after
===
* Location: adm/style/acp_ext_list.html
* Since: 3.3.14-RC1
* Changed: 3.3.14 Renamed from acp_ext_list_available_title_after
* Purpose: Add text after not installed extensions section title.
acp_forums_custom_settings
===
* Location: adm/style/acp_forums.html
@@ -184,6 +198,24 @@ acp_group_types_prepend
* Since: 3.2.9-RC1
* Purpose: Add additional group type options to group settings (prepend the list)
acp_groups_add_user_options_after
===
* Location: adm/style/acp_groups.html
* Since: 3.3.13-RC1
* Purpose: Add content after options for adding user to group in the ACP
acp_groups_add_user_options_before
===
* Location: adm/style/acp_groups.html
* Since: 3.3.13-RC1
* Purpose: Add content before options for adding user to group in the ACP
acp_groups_add_user_usernames_before
===
* Location: adm/style/acp_groups.html
* Since: 3.3.13-RC1
* Purpose: Add content before usernames option for adding user to group in the ACP
acp_groups_find_username_append
===
* Location: adm/style/acp_groups.html
@@ -1597,6 +1629,20 @@ navbar_header_username_prepend
* Since: 3.1.0-RC1
* Purpose: Add text and HTMl before the username shown in the navbar.
notification_dropdown_footer_after
===
* Locations:
+ styles/prosilver/template/notification_dropdown.html
* Since: 3.3.12
* Purpose: Add content after notifications list footer.
notification_dropdown_footer_before
===
* Locations:
+ styles/prosilver/template/notification_dropdown.html
* Since: 3.3.12
* Purpose: Add content before notifications list footer.
overall_footer_after
===
* Locations:
@@ -2500,6 +2546,13 @@ ucp_agreement_terms_before
* Since: 3.1.0-b3
* Purpose: Add content before the terms of agreement text at user registration
ucp_footer_content_after
===
* Locations:
+ styles/prosilver/template/ucp_footer.html
* Since: 3.3.12-RC1
* Purpose: Add optional elements after tab panels content in UCP
ucp_friend_list_after
===
* Locations:
@@ -2514,6 +2567,27 @@ ucp_friend_list_before
* Since: 3.1.0-a4
* Purpose: Add optional elements before list of friends in UCP
ucp_group_settings_after
===
* Locations:
+ styles/prosilver/template/ucp_groups_manage.html
* Since: 3.3.13-RC1
* Purpose: Add content after options for managing a group in the UCP
ucp_group_settings_before
===
* Locations:
+ styles/prosilver/template/ucp_groups_manage.html
* Since: 3.3.13-RC1
* Purpose: Add content before options for managing a group in the UCP
ucp_header_content_before
===
* Locations:
+ styles/prosilver/template/ucp_header.html
* Since: 3.3.12-RC1
* Purpose: Add optional elements before tab panels content in UCP
ucp_header_friends_offline_username_full_append
===
* Locations:
@@ -2584,6 +2658,34 @@ ucp_main_subscribed_topic_title_after
* Since: 3.3.8-RC1
* Purpose: Add content right after the topic title viewing UCP subscribed topics
ucp_notifications_content_after
===
* Locations:
+ styles/prosilver/template/ucp_notifications.html
* Since: 3.3.12-RC1
* Purpose: Add optional elements after UCP notification options tab content
ucp_notifications_content_before
===
* Locations:
+ styles/prosilver/template/ucp_notifications.html
* Since: 3.3.12-RC1
* Purpose: Add optional elements before UCP notification options tab content
ucp_notifications_form_after
===
* Locations:
+ styles/prosilver/template/ucp_notifications.html
* Since: 3.3.12-RC1
* Purpose: Add optional elements after HTMP form in UCP notification options tab
ucp_notifications_form_before
===
* Locations:
+ styles/prosilver/template/ucp_notifications.html
* Since: 3.3.12-RC1
* Purpose: Add optional elements before HTMP form in UCP notificationoptions tab
ucp_pm_history_post_buttons_after
===
* Locations:
@@ -3158,6 +3260,13 @@ viewtopic_body_footer_before
* Purpose: Add content to the bottom of the View topic screen below the posts
and quick reply, directly before the jumpbox in Prosilver.
viewtopic_body_online_list_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.3.12-RC1
* Purpose: Add content after the online users list
viewtopic_body_online_list_before
===
* Locations:

View File

@@ -1,7 +1,7 @@
# Sample lighttpd configuration file for phpBB.
# Global settings have been removed, copy them
# from your system's lighttpd.conf.
# Tested with lighttpd 1.4.35
# Tested with lighttpd 1.4.36
# If you want to use the X-Sendfile feature,
# uncomment the 'allow-x-send-file' for the fastcgi
@@ -13,7 +13,7 @@
# for the details on X-Sendfile.
# Load moules
server.modules += (
server.modules += (
"mod_access",
"mod_fastcgi",
"mod_rewrite",
@@ -32,12 +32,12 @@ $HTTP["host"] == "www.myforums.com" {
server.name = "www.myforums.com"
server.document-root = "/path/to/phpbb"
server.dir-listing = "disable"
index-file.names = ( "index.php", "index.htm", "index.html" )
accesslog.filename = "/var/log/lighttpd/access-www.myforums.com.log"
# Deny access to internal phpbb files.
$HTTP["url"] =~ "^/(config\.php|common\.php|cache|files|images/avatars/upload|includes|phpbb|store|vendor)" {
# Deny access to internal phpbb files.
$HTTP["url"] =~ "^/(config|common\.php|cache|files|images/avatars/upload|includes|phpbb|store|vendor)" {
url.access-deny = ( "" )
}
@@ -45,27 +45,28 @@ $HTTP["host"] == "www.myforums.com" {
$HTTP["url"] =~ "/\.svn|/\.git" {
url.access-deny = ( "" )
}
# Deny access to apache configuration files.
$HTTP["url"] =~ "/\.htaccess|/\.htpasswd|/\.htgroups" {
url.access-deny = ( "" )
}
# The following 3 lines will rewrite URLs passed through the front controller
# to not require app.php in the actual URL. In other words, a controller is
# by default accessed at /app.php/my/controller, but can also be accessed at
# /my/controller
url.rewrite-if-not-file = (
"^/(.*)$" => "/app.php/$1"
"^/install/(.*)$" => "/install/app.php/$1",
"^/(.*)$" => "/app.php/$1"
)
fastcgi.server = ( ".php" =>
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php-cgi",
"socket" => "/tmp/php.socket",
"max-procs" => 4,
"idle-timeout" => 30,
"bin-environment" => (
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "10",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),

View File

@@ -63,7 +63,7 @@ server {
}
# Deny access to internal phpbb files.
location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
location ~ /(config|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
deny all;
# deny was ignored before 0.8.40 for connections over IPv6.
# Use internal directive to prohibit access on older versions.

View File

@@ -110,6 +110,7 @@ class acp_bbcodes
);
$bbcode_tokens = array('TEXT', 'SIMPLETEXT', 'INTTEXT', 'IDENTIFIER', 'NUMBER', 'EMAIL', 'URL', 'LOCAL_URL', 'RELATIVE_URL', 'COLOR');
$bbcode_tokens = array_merge($bbcode_tokens, ['ALNUM', 'CHOICE', 'FLOAT', 'HASHMAP', 'INT', 'IP', 'IPPORT', 'IPV4', 'IPV6', 'MAP', 'RANGE', 'REGEXP', 'TIMESTAMP', 'UINT']);
/**
* Modify custom bbcode template data before we display the add/edit form

View File

@@ -575,7 +575,7 @@ class acp_extensions
catch (exception_interface $e)
{
$message = call_user_func_array(array($this->user, 'lang'), array_merge(array($e->getMessage()), $e->get_parameters()));
$this->template->assign_block_vars('disabled', array(
$this->template->assign_block_vars('not_installed', array(
'META_DISPLAY_NAME' => $this->user->lang('EXTENSION_INVALID_LIST', $name, $message),
'S_VERSIONCHECK' => false,
));
@@ -589,9 +589,9 @@ class acp_extensions
$block_vars['NAME'] = $name;
$block_vars['U_DETAILS'] = $this->u_action . '&amp;action=details&amp;ext_name=' . urlencode($name);
$this->template->assign_block_vars('disabled', $block_vars);
$this->template->assign_block_vars('not_installed', $block_vars);
$this->output_actions('disabled', array(
$this->output_actions('not_installed', array(
'ENABLE' => $this->u_action . '&amp;action=enable_pre&amp;ext_name=' . urlencode($name),
));
}

View File

@@ -396,7 +396,7 @@ class acp_groups
$allow_desc_urls = $request->variable('desc_parse_urls', false);
$allow_desc_smilies = $request->variable('desc_parse_smilies', false);
$submit_ary = array(
$submit_ary = [
'colour' => $request->variable('group_colour', ''),
'rank' => $request->variable('group_rank', 0),
'receive_pm' => isset($_REQUEST['group_receive_pm']) ? 1 : 0,
@@ -406,7 +406,13 @@ class acp_groups
'max_recipients' => $request->variable('group_max_recipients', 0),
'founder_manage' => 0,
'skip_auth' => $request->variable('group_skip_auth', 0),
);
// Initialize avatar data
'avatar' => $avatar_data['avatar'] ?? '',
'avatar_type' => $avatar_data['avatar_type'] ?? '',
'avatar_height' => $avatar_data['avatar_height'] ?? 0,
'avatar_width' => $avatar_data['avatar_width'] ?? 0,
];
if ($user->data['user_type'] == USER_FOUNDER)
{

View File

@@ -238,10 +238,11 @@ class acp_inactive
$messenger->save_queue();
// Add the remind state to the database
// Add the remind state to the database and increase activation expiration by one day
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_reminded = user_reminded + 1,
user_reminded_time = ' . time() . '
user_reminded_time = ' . time() . ',
user_actkey_expiration = ' . (int) $user::get_token_expiration() . '
WHERE ' . $db->sql_in_set('user_id', $user_ids);
$db->sql_query($sql);

View File

@@ -51,7 +51,7 @@ class acp_logs
$pagination = $phpbb_container->get('pagination');
// Delete entries if requested and able
if (($deletemark || $deleteall) && $auth->acl_get('a_clearlogs'))
if (($deleteall || ($deletemark && count($marked))) && $auth->acl_get('a_clearlogs'))
{
if (confirm_box(true))
{

View File

@@ -454,6 +454,7 @@ class acp_main
$template->assign_vars(array(
'S_VERSION_UP_TO_DATE' => empty($updates_available),
'S_VERSION_UPGRADEABLE' => !empty($upgrades_available),
'S_VERSIONCHECK_FORCE' => (bool) $recheck,
'UPGRADE_INSTRUCTIONS' => !empty($upgrades_available) ? $user->lang('UPGRADE_INSTRUCTIONS', $upgrades_available['current'], $upgrades_available['announcement']) : false,
));
}

View File

@@ -385,14 +385,18 @@ class acp_users
$user_actkey = empty($user_activation_key) ? $user_actkey : $user_activation_key;
}
if ($user_row['user_type'] == USER_NORMAL || empty($user_activation_key))
{
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_actkey = '" . $db->sql_escape($user_actkey) . "'
WHERE user_id = $user_id";
$db->sql_query($sql);
}
// Always update actkey even if same and also update actkey expiration to 24 hours from now
$sql_ary = [
'user_actkey' => $user_actkey,
'user_actkey_expiration' => $user::get_token_expiration(),
];
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . (int) $user_id;
$db->sql_query($sql);
// Start sending email
$messenger = new messenger(false);
$messenger->template($email_template, $user_row['user_lang']);
@@ -1084,7 +1088,7 @@ class acp_users
$s_action_options .= '<option value="' . $value . '">' . $user->lang['USER_ADMIN_' . $lang] . '</option>';
}
$last_active = (!empty($user_row['session_time'])) ? $user_row['session_time'] : $user_row['user_lastvisit'];
$last_active = $user_row['user_last_active'] ?: ($user_row['session_time'] ?? 0);
$inactive_reason = '';
if ($user_row['user_type'] == USER_INACTIVE)

View File

@@ -95,7 +95,7 @@ class auth_admin extends \phpbb\auth\auth
}
else
{
$hold_ary = ($group_id !== false) ? $this->acl_group_raw_data($group_id, $auth_option . '%', ($scope == 'global') ? 0 : false) : $this->$acl_user_function($user_id, $auth_option . '%', ($scope == 'global') ? 0 : false);
$hold_ary = ($group_id !== false) ? $this->acl_group_raw_data($group_id, $auth_option . '%') : $this->$acl_user_function($user_id, $auth_option . '%', ($scope == 'global') ? 0 : false);
}
}

View File

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

View File

@@ -107,9 +107,17 @@ function phpbb_gmgetdate($time = false)
}
// getdate() interprets timestamps in local time.
// What follows uses the fact that getdate() and
// date('Z') balance each other out.
return getdate($time - date('Z'));
// So use UTC timezone temporarily to get UTC date info array.
$current_timezone = date_default_timezone_get();
// Set UTC timezone and get respective date info
date_default_timezone_set('UTC');
$date_info = getdate($time);
// Restore timezone back
date_default_timezone_set($current_timezone);
return $date_info;
}
/**
@@ -1814,6 +1822,31 @@ function redirect($url, $return = false, $disable_cd_check = false)
exit;
}
/**
* Returns the install redirect path for phpBB.
*
* @param string $phpbb_root_path The root path of the phpBB installation.
* @param string $phpEx The file extension of php files, e.g., "php".
* @return string The install redirect path.
*/
function phpbb_get_install_redirect(string $phpbb_root_path, string $phpEx): string
{
$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
if (!$script_name)
{
$script_name = (!empty($_SERVER['PHP_SELF'])) ? $_SERVER['PHP_SELF'] : getenv('PHP_SELF');
}
// Add trailing dot to prevent dirname() from returning parent directory if $script_name is a directory
$script_name = substr($script_name, -1) === '/' ? $script_name . '.' : $script_name;
// $phpbb_root_path accounts for redirects from e.g. /adm
$script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/app.' . $phpEx;
// Replace any number of consecutive backslashes and/or slashes with a single slash
// (could happen on some proxy setups and/or Windows servers)
return preg_replace('#[\\\\/]{2,}#', '/', $script_path);
}
/**
* Re-Apply session id after page reloads
*/
@@ -3003,8 +3036,16 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
global $phpbb_root_path, $msg_title, $msg_long_text, $phpbb_log;
global $phpbb_container;
// https://www.php.net/manual/en/language.operators.errorcontrol.php
// error_reporting() return a different error code inside the error handler after php 8.0
$suppresed = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE;
if (PHP_VERSION_ID < 80000)
{
$suppresed = 0;
}
// Do not display notices if we suppress them via @
if (error_reporting() == 0 && $errno != E_USER_ERROR && $errno != E_USER_WARNING && $errno != E_USER_NOTICE)
if (error_reporting() == $suppresed && $errno != E_USER_ERROR && $errno != E_USER_WARNING && $errno != E_USER_NOTICE)
{
return;
}
@@ -4028,7 +4069,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
'U_SEARCH_UNANSWERED' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unanswered'),
'U_SEARCH_UNREAD' => append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=unreadposts'),
'U_SEARCH_ACTIVE_TOPICS'=> append_sid("{$phpbb_root_path}search.$phpEx", 'search_id=active_topics'),
'U_DELETE_COOKIES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=delete_cookies'),
'U_DELETE_COOKIES' => $controller_helper->route('phpbb_ucp_delete_cookies_controller'),
'U_CONTACT_US' => ($config['contact_admin_form_enable'] && $config['email_enable']) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contactadmin') : '',
'U_TEAM' => (!$auth->acl_get('u_viewprofile')) ? '' : append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=team'),
'U_TERMS_USE' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=terms'),
@@ -4090,7 +4131,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
'T_FONT_AWESOME_LINK' => !empty($config['allow_cdn']) && !empty($config['load_font_awesome_url']) ? $config['load_font_awesome_url'] : "{$web_path}assets/css/font-awesome.min.css?assets_version=" . $config['assets_version'],
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$web_path}assets/javascript/jquery-3.6.0.min.js?assets_version=" . $config['assets_version'],
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$web_path}assets/javascript/jquery-3.7.1.min.js?assets_version=" . $config['assets_version'],
'S_ALLOW_CDN' => !empty($config['allow_cdn']),
'S_COOKIE_NOTICE' => !empty($config['cookie_notice']),

View File

@@ -178,7 +178,7 @@ function adm_page_footer($copyright_html = true)
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
'S_COPYRIGHT_HTML' => $copyright_html,
'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited'),
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$phpbb_root_path}assets/javascript/jquery-3.6.0.min.js",
'T_JQUERY_LINK' => !empty($config['allow_cdn']) && !empty($config['load_jquery_url']) ? $config['load_jquery_url'] : "{$phpbb_root_path}assets/javascript/jquery-3.7.1.min.js",
'S_ALLOW_CDN' => !empty($config['allow_cdn']),
'VERSION' => $config['version'])
);

View File

@@ -289,7 +289,27 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
*/
function bump_topic_allowed($forum_id, $topic_bumped, $last_post_time, $topic_poster, $last_topic_poster)
{
global $config, $auth, $user;
global $config, $auth, $user, $phpbb_dispatcher;
/**
* Event to run code before the topic bump checks
*
* @event core.bump_topic_allowed_before
* @var int forum_id ID of the forum
* @var int topic_bumped Flag indicating if the topic was already bumped (0/1)
* @var int last_post_time The time of the topic last post
* @var int topic_poster User ID of the topic author
* @var int last_topic_poster User ID of the topic last post author
* @since 3.3.14-RC1
*/
$vars = [
'forum_id',
'topic_bumped',
'last_post_time',
'topic_poster',
'last_topic_poster',
];
extract($phpbb_dispatcher->trigger_event('core.bump_topic_allowed_before', compact($vars)));
// Check permission and make sure the last post was not already bumped
if (!$auth->acl_get('f_bump', $forum_id) || $topic_bumped)
@@ -312,6 +332,28 @@ function bump_topic_allowed($forum_id, $topic_bumped, $last_post_time, $topic_po
return false;
}
/**
* Event to run code after the topic bump checks
*
* @event core.bump_topic_allowed_after
* @var int forum_id ID of the forum
* @var int topic_bumped Flag indicating if the topic was already bumped (0/1)
* @var int last_post_time The time of the topic last post
* @var int topic_poster User ID of the topic author
* @var int last_topic_poster User ID of the topic last post author
* @var int bump_time Bump time range
* @since 3.3.14-RC1
*/
$vars = [
'forum_id',
'topic_bumped',
'last_post_time',
'topic_poster',
'last_topic_poster',
'bump_time',
];
extract($phpbb_dispatcher->trigger_event('core.bump_topic_allowed_after', compact($vars)));
// A bump time of 0 will completely disable the bump feature... not intended but might be useful.
return $bump_time;
}
@@ -320,124 +362,100 @@ function bump_topic_allowed($forum_id, $topic_bumped, $last_post_time, $topic_po
* Generates a text with approx. the specified length which contains the specified words and their context
*
* @param string $text The full text from which context shall be extracted
* @param string $words An array of words which should be contained in the result, has to be a valid part of a PCRE pattern (escape with preg_quote!)
* @param array $words An array of words which should be contained in the result, has to be a valid part of a PCRE pattern (escape with preg_quote!)
* @param int $length The desired length of the resulting text, however the result might be shorter or longer than this value
*
* @return string Context of the specified words separated by "..."
*/
function get_context($text, $words, $length = 400)
function get_context(string $text, array $words, int $length = 400): string
{
// first replace all whitespaces with single spaces
$text = preg_replace('/ +/', ' ', strtr($text, "\t\n\r\x0C ", ' '));
// we need to turn the entities back into their original form, to not cut the message in between them
$entities = array('&lt;', '&gt;', '&#91;', '&#93;', '&#46;', '&#58;', '&#058;');
$characters = array('<', '>', '[', ']', '.', ':', ':');
$text = str_replace($entities, $characters, $text);
$word_indizes = array();
if (count($words))
if ($length <= 0)
{
$match = '';
// find the starting indizes of all words
foreach ($words as $word)
{
if ($word)
{
if (preg_match('#(?:[^\w]|^)(' . $word . ')(?:[^\w]|$)#i', $text, $match))
{
if (empty($match[1]))
{
continue;
}
$pos = utf8_strpos($text, $match[1]);
if ($pos !== false)
{
$word_indizes[] = $pos;
}
}
}
}
unset($match);
if (count($word_indizes))
{
$word_indizes = array_unique($word_indizes);
sort($word_indizes);
$wordnum = count($word_indizes);
// number of characters on the right and left side of each word
$sequence_length = (int) ($length / (2 * $wordnum)) - 2;
$final_text = '';
$word = $j = 0;
$final_text_index = -1;
// cycle through every character in the original text
for ($i = $word_indizes[$word], $n = utf8_strlen($text); $i < $n; $i++)
{
// if the current position is the start of one of the words then append $sequence_length characters to the final text
if (isset($word_indizes[$word]) && ($i == $word_indizes[$word]))
{
if ($final_text_index < $i - $sequence_length - 1)
{
$final_text .= '... ' . preg_replace('#^([^ ]*)#', '', utf8_substr($text, $i - $sequence_length, $sequence_length));
}
else
{
// if the final text is already nearer to the current word than $sequence_length we only append the text
// from its current index on and distribute the unused length to all other sequenes
$sequence_length += (int) (($final_text_index - $i + $sequence_length + 1) / (2 * $wordnum));
$final_text .= utf8_substr($text, $final_text_index + 1, $i - $final_text_index - 1);
}
$final_text_index = $i - 1;
// add the following characters to the final text (see below)
$word++;
$j = 1;
}
if ($j > 0)
{
// add the character to the final text and increment the sequence counter
$final_text .= utf8_substr($text, $i, 1);
$final_text_index++;
$j++;
// if this is a whitespace then check whether we are done with this sequence
if (utf8_substr($text, $i, 1) == ' ')
{
// only check whether we have to exit the context generation completely if we haven't already reached the end anyway
if ($i + 4 < $n)
{
if (($j > $sequence_length && $word >= $wordnum) || utf8_strlen($final_text) > $length)
{
$final_text .= ' ...';
break;
}
}
else
{
// make sure the text really reaches the end
$j -= 4;
}
// stop context generation and wait for the next word
if ($j > $sequence_length)
{
$j = 0;
}
}
}
}
return str_replace($characters, $entities, $final_text);
}
return $text;
}
if (!count($words) || !count($word_indizes))
// We need to turn the entities back into their original form, to not cut the message in between them
$text = htmlspecialchars_decode($text);
// Replace all spaces/invisible characters with single spaces
$text = preg_replace("/[\p{Z}\h\v]+/u", ' ', $text);
$text_length = utf8_strlen($text);
// Get first occurrence of each word
$word_indexes = [];
foreach ($words as $word)
{
return str_replace($characters, $entities, ((utf8_strlen($text) >= $length + 3) ? utf8_substr($text, 0, $length) . '...' : $text));
$pos = utf8_stripos($text, $word);
if ($pos !== false)
{
$word_indexes[$pos] = $word;
}
}
if (!empty($word_indexes))
{
ksort($word_indexes);
// Size of the fragment of text per word
$num_indexes = count($word_indexes);
$characters_per_word = (int) ($length / $num_indexes) + 2; // 2 to leave one character of margin at the sides to don't cut words
// Get text fragment indexes
$fragments = [];
foreach ($word_indexes as $index => $word)
{
$word_length = utf8_strlen($word);
$start = max(0, min($text_length - 1 - $characters_per_word, (int) ($index + ($word_length / 2) - ($characters_per_word / 2))));
$end = $start + $characters_per_word;
// Check if we can merge this fragment into the previous fragment
if (!empty($fragments))
{
[$prev_start, $prev_end] = end($fragments);
if ($prev_end + $characters_per_word >= $index + $word_length)
{
array_pop($fragments);
$start = $prev_start;
$end = $prev_end + $characters_per_word;
}
}
$fragments[] = [$start, $end];
}
}
else
{
// There is no coincidences, so we just create a fragment with the first $length characters
$fragments[] = [0, $length];
$end = $length;
}
$output = [];
foreach ($fragments as [$start, $end])
{
$fragment = utf8_substr($text, $start, $end - $start + 1);
$fragment_start = 0;
$fragment_end = $end - $start + 1;
// Find the first valid alphanumeric character in the fragment to don't cut words
if ($start > 0 && preg_match('/[^\p{L}\p{N}][\p{L}\p{N}]/u', $fragment, $matches, PREG_OFFSET_CAPTURE))
{
$fragment_start = utf8_strlen(substr($fragment, 0, (int) $matches[0][1])) + 1;
}
// Find the last valid alphanumeric character in the fragment to don't cut words
if ($end < $text_length - 1 && preg_match_all('/[\p{L}\p{N}][^\p{L}\p{N}]/u', $fragment, $matches, PREG_OFFSET_CAPTURE))
{
$fragment_end = utf8_strlen(substr($fragment, 0, end($matches[0])[1]));
}
$output[] = utf8_substr($fragment, $fragment_start, $fragment_end - $fragment_start + 1);
}
return ($fragments[0][0] !== 0 ? '... ' : '') . utf8_htmlspecialchars(implode(' ... ', $output)) . ($end < $text_length - 1 ? ' ...' : '');
}
/**

View File

@@ -1603,7 +1603,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
if ($data['user_allow_viewonline'] || $auth->acl_get('u_viewonline'))
{
$last_active = (!empty($data['session_time'])) ? $data['session_time'] : $data['user_lastvisit'];
$last_active = $data['user_last_active'] ?: ($data['session_time'] ?? 0);
}
else
{

View File

@@ -51,6 +51,9 @@ class jabber
var $features = array();
/** @var string Stream close handshake */
private const STREAM_CLOSE_HANDSHAKE = '</stream:stream>';
/**
* Constructor
*
@@ -58,7 +61,7 @@ class jabber
* @param int $port Jabber server port
* @param string $username Jabber username or JID
* @param string $password Jabber password
* @param boold $use_ssl Use ssl
* @param bool $use_ssl Use ssl
* @param bool $verify_peer Verify SSL certificate
* @param bool $verify_peer_name Verify Jabber peer name
* @param bool $allow_self_signed Allow self signed certificates
@@ -183,7 +186,15 @@ class jabber
$this->send_presence('offline', '', true);
}
$this->send('</stream:stream>');
$this->send(self::STREAM_CLOSE_HANDSHAKE);
// Check stream close handshake reply
$stream_close_reply = $this->listen();
if ($stream_close_reply != self::STREAM_CLOSE_HANDSHAKE)
{
$this->add_to_log("Error: Unexpected stream close handshake reply ”{$stream_close_reply}");
}
$this->session = array();
return fclose($this->connection);
}

View File

@@ -582,6 +582,11 @@ class messenger
);
extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars)));
$this->addresses = $addresses;
$this->subject = $subject;
$this->msg = $msg;
unset($addresses, $subject, $msg);
if ($break)
{
return true;
@@ -1413,22 +1418,22 @@ class smtp_class
global $user;
// Here we try to determine the *real* hostname (reverse DNS entry preferrably)
$local_host = $user->host;
if (function_exists('php_uname'))
if (function_exists('php_uname') && !empty($local_host = php_uname('n')))
{
$local_host = php_uname('n');
// Able to resolve name to IP
if (($addr = @gethostbyname($local_host)) !== $local_host)
{
// Able to resolve IP back to name
if (($name = @gethostbyaddr($addr)) !== $addr)
if (!empty($name = @gethostbyaddr($addr)) && $name !== $addr)
{
$local_host = $name;
}
}
}
else
{
$local_host = $user->host;
}
// If we are authenticating through pop-before-smtp, we
// have to login ones before we get authenticated

View File

@@ -480,7 +480,7 @@ class p_master
*/
function set_active($id = false, $mode = false)
{
global $request;
global $auth, $request, $user;
$icat = false;
$this->active_module = false;
@@ -502,6 +502,14 @@ class p_master
$id = $this->p_class . '_' . $id;
}
// Fallback to acp main page for special test permission mode
if ($this->p_class === 'acp' && $user->data['user_perm_from'] && $auth->acl_get('a_switchperm'))
{
$id = '';
$mode = '';
$icat = false;
}
$category = false;
foreach ($this->module_ary as $row_id => $item_ary)
{

View File

@@ -1689,7 +1689,7 @@ function submit_pm($mode, $subject, &$data_ary, $put_in_outbox = true)
}
// First of all make sure the subject are having the correct length.
$subject = truncate_string($subject);
$subject = truncate_string($subject, $mode === 'post' ? 120 : 124);
$db->sql_transaction('begin');

View File

@@ -210,18 +210,18 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)
// These are the additional vars able to be specified
$additional_vars = array(
'user_permissions' => '',
'user_timezone' => $config['board_timezone'],
'user_dateformat' => $config['default_dateformat'],
'user_lang' => $config['default_lang'],
'user_style' => (int) $config['default_style'],
'user_actkey' => '',
'user_ip' => '',
'user_regdate' => time(),
'user_passchg' => time(),
'user_options' => 230271,
'user_permissions' => '',
'user_timezone' => $config['board_timezone'],
'user_dateformat' => $config['default_dateformat'],
'user_lang' => $config['default_lang'],
'user_style' => (int) $config['default_style'],
'user_actkey' => '',
'user_ip' => '',
'user_regdate' => time(),
'user_passchg' => time(),
'user_options' => 230271,
// We do not set the new flag here - registration scripts need to specify it
'user_new' => 0,
'user_new' => 0,
'user_inactive_reason' => 0,
'user_inactive_time' => 0,

View File

@@ -344,6 +344,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)
}
$topic_row = array_merge($topic_row, array(
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&amp;f=$forum_id&amp;t={$row_ary['topic_id']}&amp;mode=topic_view"),
'U_NEWEST_POST' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&amp;f=$forum_id&amp;t={$row_ary['topic_id']}&amp;mode=topic_view&amp;view=unread#unread"),
'S_SELECT_TOPIC' => ($merge_select && !in_array($row_ary['topic_id'], $source_topic_ids)) ? true : false,
'U_SELECT_TOPIC' => $u_select_topic,

View File

@@ -222,6 +222,7 @@ function mcp_post_details($id, $mode, $action)
'U_POST_ACTION' => "$url&amp;i=$id&amp;mode=post_details", // Use this for action parameters
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&amp;p=$post_id"),
'S_CAN_APPROVE' => $auth->acl_get('m_approve', $post_info['forum_id']),
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
'S_CAN_CHGPOSTER' => $auth->acl_get('m_chgposter', $post_info['forum_id']),
'S_CAN_LOCK_POST' => $auth->acl_get('m_lock', $post_info['forum_id']),

View File

@@ -284,6 +284,7 @@ class mcp_queue
$post_data = array(
'S_MCP_QUEUE' => true,
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&amp;p=$post_id"),
'S_CAN_APPROVE' => $auth->acl_get('m_approve', $post_info['forum_id']),
'S_CAN_DELETE_POST' => $auth->acl_get('m_delete', $post_info['forum_id']),
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
'S_POST_REPORTED' => $post_info['post_reported'],

View File

@@ -252,6 +252,7 @@ class mcp_reports
$report_template = array(
'S_MCP_REPORT' => true,
'S_CLOSE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;p=' . $post_id),
'S_CAN_APPROVE' => $auth->acl_get('m_approve', $post_info['forum_id']),
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
'S_POST_REPORTED' => $post_info['post_reported'],
'S_POST_UNAPPROVED' => $post_info['post_visibility'] == ITEM_UNAPPROVED || $post_info['post_visibility'] == ITEM_REAPPROVE,
@@ -260,6 +261,7 @@ class mcp_reports
'S_USER_NOTES' => true,
'U_EDIT' => ($auth->acl_get('m_edit', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=edit&amp;p={$post_info['post_id']}") : '',
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;p=' . $post_id),
'U_MCP_APPROVE' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=approve_details&amp;p=' . $post_id),
'U_MCP_REPORT' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;p=' . $post_id),
'U_MCP_REPORTER_NOTES' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $report['user_id']),

View File

@@ -54,6 +54,7 @@ function mcp_topic_view($id, $mode, $action)
$sort = isset($_POST['sort']) ? true : false;
$submitted_id_list = $request->variable('post_ids', array(0));
$checked_ids = $post_id_list = $request->variable('post_id_list', array(0));
$view = $request->variable('view', '');
// Resync Topic?
if ($action == 'resync')
@@ -179,6 +180,7 @@ function mcp_topic_view($id, $mode, $action)
{
$rowset[] = $row;
$post_id_list[] = $row['post_id'];
$rowset_posttime['post_time'] = $row['post_time'];
}
$db->sql_freeresult($result);
@@ -194,6 +196,16 @@ function mcp_topic_view($id, $mode, $action)
$topic_tracking_info = get_complete_topic_tracking($topic_info['forum_id'], $topic_id);
}
$first_unread = $post_unread = false;
$post_unread = (isset($topic_tracking_info[$topic_id]) && $rowset_posttime['post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$s_first_unread = false;
if (!$first_unread && $post_unread)
{
$s_first_unread = $first_unread = true;
}
$has_unapproved_posts = $has_deleted_posts = false;
// Grab extensions
@@ -287,10 +299,13 @@ function mcp_topic_view($id, $mode, $action)
'S_POST_DELETED' => ($row['post_visibility'] == ITEM_DELETED && $auth->acl_get('m_approve', $topic_info['forum_id'])),
'S_CHECKED' => (($submitted_id_list && !in_array(intval($row['post_id']), $submitted_id_list)) || in_array(intval($row['post_id']), $checked_ids)) ? true : false,
'S_HAS_ATTACHMENTS' => (!empty($attachments[$row['post_id']])) ? true : false,
'S_FIRST_UNREAD' => $s_first_unread,
'S_UNREAD_VIEW' => $view == 'unread',
'U_POST_DETAILS' => "$url&amp;i=$id&amp;p={$row['post_id']}&amp;mode=post_details",
'U_MCP_APPROVE' => ($auth->acl_get('m_approve', $topic_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&amp;mode=approve_details&amp;p=' . $row['post_id']) : '',
'U_MCP_REPORT' => ($auth->acl_get('m_report', $topic_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;p=' . $row['post_id']) : '',
'U_MINI_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'p=' . $row['post_id']) . '#p' . $row['post_id'],
);
/**

View File

@@ -488,6 +488,8 @@ class ucp_prefs
}
$template->assign_vars(array(
'S_SIG_ALLOWED' => $config['allow_sig'] && $auth->acl_get('u_sig'),
'S_BBCODE' => $data['bbcode'],
'S_SMILIES' => $data['smilies'],
'S_SIG' => $data['sig'],

View File

@@ -196,9 +196,10 @@ class ucp_profile
{
$notifications_manager = $phpbb_container->get('notification_manager');
$notifications_manager->add_notifications('notification.type.admin_activate_user', array(
'user_id' => $user->data['user_id'],
'user_actkey' => $user_actkey,
'user_regdate' => time(), // Notification time
'user_id' => $user->data['user_id'],
'user_actkey' => $user_actkey,
'user_actkey_expiration' => $user::get_token_expiration(),
'user_regdate' => time(), // Notification time
));
}

View File

@@ -381,18 +381,19 @@ class ucp_register
$passwords_manager = $phpbb_container->get('passwords.manager');
$user_row = array(
'username' => $data['username'],
'user_password' => $passwords_manager->hash($data['new_password']),
'user_email' => $data['email'],
'group_id' => (int) $group_id,
'user_timezone' => $data['tz'],
'user_lang' => $data['lang'],
'user_type' => $user_type,
'user_actkey' => $user_actkey,
'user_ip' => $user->ip,
'user_regdate' => time(),
'user_inactive_reason' => $user_inactive_reason,
'user_inactive_time' => $user_inactive_time,
'username' => $data['username'],
'user_password' => $passwords_manager->hash($data['new_password']),
'user_email' => $data['email'],
'group_id' => (int) $group_id,
'user_timezone' => $data['tz'],
'user_lang' => $data['lang'],
'user_type' => $user_type,
'user_actkey' => $user_actkey,
'user_actkey_expiration' => $user::get_token_expiration(),
'user_ip' => $user->ip,
'user_regdate' => time(),
'user_inactive_reason' => $user_inactive_reason,
'user_inactive_time' => $user_inactive_time,
);
if ($config['new_member_post_limit'])

View File

@@ -45,7 +45,7 @@ class ucp_resend
trigger_error('FORM_INVALID');
}
$sql = 'SELECT user_id, group_id, username, user_email, user_type, user_lang, user_actkey, user_inactive_reason
$sql = 'SELECT user_id, group_id, username, user_email, user_type, user_lang, user_actkey, user_actkey_expiration, user_inactive_reason
FROM ' . USERS_TABLE . "
WHERE user_email = '" . $db->sql_escape($email) . "'
AND username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'";
@@ -73,6 +73,12 @@ class ucp_resend
trigger_error('ACCOUNT_DEACTIVATED');
}
// Do not resend activation email if valid one still exists
if (!empty($user_row['user_actkey']) && (int) $user_row['user_actkey_expiration'] >= time())
{
trigger_error('ACTIVATION_ALREADY_SENT');
}
// Determine coppa status on group (REGISTERED(_COPPA))
$sql = 'SELECT group_name, group_type
FROM ' . GROUPS_TABLE . '
@@ -144,6 +150,8 @@ class ucp_resend
$db->sql_freeresult($result);
}
$this->update_activation_expiration();
meta_refresh(3, append_sid("{$phpbb_root_path}index.$phpEx"));
$message = ($config['require_activation'] == USER_ACTIVATION_ADMIN) ? $user->lang['ACTIVATION_EMAIL_SENT_ADMIN'] : $user->lang['ACTIVATION_EMAIL_SENT'];
@@ -160,4 +168,23 @@ class ucp_resend
$this->tpl_name = 'ucp_resend';
$this->page_title = 'UCP_RESEND';
}
/**
* Update activation expiration to 1 day from now
*
* @return void
*/
protected function update_activation_expiration(): void
{
global $db, $user;
$sql_ary = [
'user_actkey_expiration' => $user::get_token_expiration(),
];
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . (int) $user->id();
$db->sql_query($sql);
}
}

View File

@@ -72,6 +72,22 @@ function utf8_strpos($str, $needle, $offset = null)
}
}
/**
* UTF-8 aware alternative to stripos
* @ignore
*/
function utf8_stripos($str, $needle, $offset = null)
{
if (is_null($offset))
{
return mb_stripos($str, $needle);
}
else
{
return mb_stripos($str, $needle, $offset);
}
}
/**
* UTF-8 aware alternative to strtolower
* @ignore

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.11',
'phpbb_version' => '3.3.14',
'author' => '<a href="https://www.phpbb.com/">phpBB Limited</a>',
'dbms' => $dbms,
'dbhost' => $dbhost,
@@ -901,6 +901,7 @@ if (!$get_info)
array('user_email', 'users.user_email', 'strtolower'),
array('user_birthday', ((defined('MOD_BIRTHDAY')) ? 'users.user_birthday' : ''), 'phpbb_get_birthday'),
array('user_lastvisit', 'users.user_lastvisit', 'intval'),
array('user_last_active', 'users.user_lastvisit', 'intval'),
array('user_lastmark', 'users.user_lastvisit', 'intval'),
array('user_lang', $config['default_lang'], ''),
array('', 'users.user_lang', ''),

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

View File

@@ -200,7 +200,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_cpf_viewtopic
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_db_lastread', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_db_track', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_font_awesome_url', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jquery_url', '//ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jquery_url', '//ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_jumpbox', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_moderators', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('load_notifications', '1');
@@ -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.11');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.3.14');
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');
@@ -527,10 +527,10 @@ INSERT INTO phpbb_forums (forum_name, forum_desc, left_id, right_id, parent_id,
INSERT INTO phpbb_forums (forum_name, forum_desc, left_id, right_id, parent_id, forum_type, forum_posts_approved, forum_posts_unapproved, forum_posts_softdeleted, forum_topics_approved, forum_topics_unapproved, forum_topics_softdeleted, forum_last_post_id, forum_last_poster_id, forum_last_poster_name, forum_last_poster_colour, forum_last_post_subject, forum_last_post_time, forum_link, forum_password, forum_image, forum_rules, forum_rules_link, forum_rules_uid, forum_desc_uid, prune_freq, prune_days, prune_viewed, forum_parents, forum_flags) VALUES ('{L_FORUMS_TEST_FORUM_TITLE}', '{L_FORUMS_TEST_FORUM_DESC}', 2, 3, 1, 1, 1, 0, 0, 1, 0, 0, 1, 2, 'Admin', 'AA0000', '{L_TOPICS_TOPIC_TITLE}', 972086460, '', '', '', '', '', '', '', 1, 7, 7, '', 48);
# -- Users / Anonymous user
INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_jabber, user_actkey, user_newpasswd, user_allow_massemail) VALUES (2, 1, 'Anonymous', 'anonymous', 0, '', '', 'en', 1, 0, '', 0, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', '', 0);
INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_jabber, user_actkey, user_actkey_expiration, user_newpasswd, user_allow_massemail) VALUES (2, 1, 'Anonymous', 'anonymous', 0, '', '', 'en', 1, 0, '', 0, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', 0, '', 0);
# -- username: Admin password: admin (change this or remove it once everything is working!)
INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_jabber, user_actkey, user_newpasswd) VALUES (3, 5, 'Admin', 'admin', 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', 'en', 1, 1, 'AA0000', 1, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', '');
INSERT INTO phpbb_users (user_type, group_id, username, username_clean, user_regdate, user_password, user_email, user_lang, user_style, user_rank, user_colour, user_posts, user_permissions, user_ip, user_birthday, user_lastpage, user_last_confirm_key, user_post_sortby_type, user_post_sortby_dir, user_topic_sortby_type, user_topic_sortby_dir, user_avatar, user_sig, user_sig_bbcode_uid, user_jabber, user_actkey, user_actkey_expiration, user_newpasswd) VALUES (3, 5, 'Admin', 'admin', 0, '21232f297a57a5a743894a0e4a801fc3', 'admin@yourdomain.com', 'en', 1, 1, 'AA0000', 1, '', '', '', '', '', 't', 'a', 't', 'd', '', '', '', '', '', 0, '');
# -- Groups
INSERT INTO phpbb_groups (group_name, group_type, group_founder_manage, group_colour, group_legend, group_avatar, group_desc, group_desc_uid, group_max_recipients) VALUES ('GUESTS', 3, 0, '', 0, '', '', '', 5);

View File

@@ -51,7 +51,15 @@ function installer_msg_handler($errno, $msg_text, $errfile, $errline)
{
global $phpbb_installer_container, $msg_long_text;
if (error_reporting() == 0)
// Acording to https://www.php.net/manual/en/language.operators.errorcontrol.php
// error_reporting() return a different error code inside the error handler after php 8.0
$suppresed = E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE;
if (PHP_VERSION_ID < 80000)
{
$suppresed = 0;
}
if (error_reporting() == $suppresed)
{
return true;
}

View File

@@ -47,8 +47,9 @@ $lang = array_merge($lang, array(
'DETAILS' => 'Details',
'EXTENSIONS_DISABLED' => 'Disabled Extensions',
'EXTENSIONS_ENABLED' => 'Enabled Extensions',
'EXTENSIONS_NOT_INSTALLED' => 'Not installed Extensions',
'EXTENSIONS_DISABLED' => 'Disabled Extensions',
'EXTENSIONS_ENABLED' => 'Enabled Extensions',
'EXTENSION_DELETE_DATA' => 'Delete data',
'EXTENSION_DISABLE' => 'Disable',

View File

@@ -159,9 +159,9 @@ $lang = array_merge($lang, array(
'ACL_M_MERGE' => 'Can merge topics',
'ACL_M_INFO' => 'Can view post details',
'ACL_M_WARN' => 'Can issue warnings<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local)
'ACL_M_PM_REPORT' => 'Can close and delete reports of private messages<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local)
'ACL_M_BAN' => 'Can manage bans<br /><em>This setting is only assigned globally. It is not forum based.</em>', // This moderator setting is only global (and not local)
'ACL_M_WARN' => 'Can issue warnings',
'ACL_M_PM_REPORT' => 'Can close and delete reports of private messages',
'ACL_M_BAN' => 'Can manage bans',
));
// Admin Permissions

View File

@@ -88,6 +88,20 @@ $lang = array_merge($lang, array(
'LOCAL_URL' => 'A local URL. The URL must be relative to the topic page and cannot contain a server name or protocol, as links are prefixed with “%s”',
'RELATIVE_URL' => 'A relative URL. You can use this to match parts of a URL, but be careful: a full URL is a valid relative URL. When you want to use relative URLs of your board, use the LOCAL_URL token.',
'COLOR' => 'A HTML colour, can be either in the numeric form <samp>#FF1234</samp> or a <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS colour keyword</a> such as <samp>fuchsia</samp> or <samp>InactiveBorder</samp>',
'ALNUM' => 'Characters from the latin alphabet (A-Z) and numbers.',
'CHOICE' => 'A choice of specified values, e.g. <samp>{CHOICE=spades,hearts,diamonds,clubs}</samp>. The values are treated as case-insensitive by default and can be treated case-sensitive by specifying the <samp>caseSensitive</samp> option: <samp>{CHOICE=Spades,Hearts,Diamonds,Clubs;caseSensitive}</samp>',
'FLOAT' => 'A decimal value, e.g. <samp>0.5</samp>.',
'HASHMAP' => 'Maps strings to their replacement in the form <samp>{HASHMAP=string1:replacement1,string2:replacement2}</samp>. Case-sensitive. Preserves unknown values by default.',
'INT' => 'An integer value, e.g. <samp>2</samp>.',
'IP' => 'A valid IPv4 or IPv6 address.',
'IPPORT' => 'A valid IPv4 or IPv6 address with port number.',
'IPV4' => 'A valid IPv4 address.',
'IPV6' => 'A valid IPv6 address.',
'MAP' => 'Maps strings to their replacement in the form <samp>{MAP=string1:replacement1,string2:replacement2}</samp>. Case-insensitive. Preserves unknown values by default.',
'RANGE' => 'Accepts an integer in the given range, e.g. <samp>{RANGE=-10,42}</samp>.',
'REGEXP' => 'Validates its value against a given regexp, e.g. <samp>{REGEXP=/^foo\w+bar$/}</samp>.',
'TIMESTAMP' => 'A timestamp such as <samp>1h30m10s</samp> which will be converted to a number of seconds. Also accepts a number.',
'UINT' => 'An unsigned integer value. Same as <samp>{INT}</samp>, but rejects values less than 0.',
),
));

View File

@@ -75,6 +75,7 @@ $lang = array_merge($lang, array(
'CLI_DESCRIPTION_REPARSER_REPARSE' => 'Reparses stored text with the current text_formatter services.',
'CLI_DESCRIPTION_REPARSER_REPARSE_ARG_1' => 'Type of text to reparse. Leave blank to reparse everything.',
'CLI_DESCRIPTION_REPARSER_REPARSE_OPT_DRY_RUN' => 'Do not save any changes; just print what would happen',
'CLI_DESCRIPTION_REPARSER_REPARSE_OPT_FORCE_BBCODE' => 'Re-parse all BBCodes without exception. Note that any previously disabled BBCodes will be reprocessed, enabled, and fully rendered.',
'CLI_DESCRIPTION_REPARSER_REPARSE_OPT_RANGE_MIN' => 'Lowest record ID to process',
'CLI_DESCRIPTION_REPARSER_REPARSE_OPT_RANGE_MAX' => 'Highest record ID to process',
'CLI_DESCRIPTION_REPARSER_REPARSE_OPT_RANGE_SIZE' => 'Approximate number of records to process at a time',
@@ -108,6 +109,8 @@ $lang = array_merge($lang, array(
'CLI_DESCRIPTION_USER_ADD_OPTION_NOTIFY' => 'Send account activation email to the new user (not sent by default)',
'CLI_DESCRIPTION_USER_DELETE' => 'Delete a user account.',
'CLI_DESCRIPTION_USER_DELETE_USERNAME' => 'Username of the user to delete',
'CLI_DESCRIPTION_USER_DELETE_ID' => 'Delete user accounts by ID.',
'CLI_DESCRIPTION_USER_DELETE_ID_OPTION_ID' => 'User IDs of the users to delete',
'CLI_DESCRIPTION_USER_DELETE_OPTION_POSTS' => 'Delete all posts by the user. Without this option, the users posts will be retained.',
'CLI_DESCRIPTION_USER_RECLEAN' => 'Re-clean usernames.',
@@ -155,10 +158,14 @@ $lang = array_merge($lang, array(
'CLI_THUMBNAIL_NOTHING_TO_GENERATE' => 'No thumbnails to generate.',
'CLI_THUMBNAIL_NOTHING_TO_DELETE' => 'No thumbnails to delete.',
'CLI_USER_ADD_SUCCESS' => 'Successfully added user %s.',
'CLI_USER_DELETE_CONFIRM' => 'Are you sure you want to delete %s? [y/N]',
'CLI_USER_RECLEAN_START' => 'Re-cleaning usernames',
'CLI_USER_RECLEAN_DONE' => [
'CLI_USER_ADD_SUCCESS' => 'Successfully added user %s.',
'CLI_USER_DELETE_CONFIRM' => 'Are you sure you want to delete %s? [y/N]',
'CLI_USER_DELETE_ID_CONFIRM' => 'Are you sure you want to delete the user IDs %s? [y/N]',
'CLI_USER_DELETE_ID_SUCCESS' => 'Successfully deleted user IDs.',
'CLI_USER_DELETE_ID_START' => 'Deleting users by ID',
'CLI_USER_DELETE_NONE' => 'No users were deleted by user ID.',
'CLI_USER_RECLEAN_START' => 'Re-cleaning usernames',
'CLI_USER_RECLEAN_DONE' => [
0 => 'Re-cleaning complete. No usernames needed to be cleaned.',
1 => 'Re-cleaning complete. %d username was cleaned.',
2 => 'Re-cleaning complete. %d usernames were cleaned.',

View File

@@ -64,6 +64,7 @@ $lang = array_merge($lang, array(
'ACCOUNT_DEACTIVATED' => 'Your account has been manually deactivated and is only able to be reactivated by an administrator.',
'ACP' => 'Administration Control Panel',
'ACP_SHORT' => 'ACP',
'ACTIVATION_ALREADY_SENT' => 'The activation email has already been sent to your email address. You can try again after 24 hours. If you continue to have problems activating your account, please contact a board administrator.',
'ACTIVE' => 'active',
'ACTIVE_ERROR' => 'The specified username is currently inactive. If you have problems activating your account, please contact a board administrator.',
'ADMINISTRATOR' => 'Administrator',

View File

@@ -158,7 +158,7 @@ $lang = array_merge($lang, array(
'HELP_FAQ_SEARCH_BLANK_QUESTION' => 'Why does my search return a blank page!?',
'HELP_FAQ_SEARCH_FORUM_ANSWER' => 'Enter a search term in the search box located on the index, forum or topic pages. Advanced search can be accessed by clicking the “Advance Search” link which is available on all pages on the forum. How to access the search may depend on the style used.',
'HELP_FAQ_SEARCH_FORUM_QUESTION' => 'How can I search a forum or forums?',
'HELP_FAQ_SEARCH_MEMBERS_ANSWER' => 'Visit to the “Members” page and click the “Find a member” link.',
'HELP_FAQ_SEARCH_MEMBERS_ANSWER' => 'Visit the memberlist and click the “Find a member” link.',
'HELP_FAQ_SEARCH_MEMBERS_QUESTION' => 'How do I search for members?',
'HELP_FAQ_SEARCH_NO_RESULT_ANSWER' => 'Your search was probably too vague and included many common terms which are not indexed by phpBB. Be more specific and use the options available within Advanced search.',
'HELP_FAQ_SEARCH_NO_RESULT_QUESTION' => 'Why does my search return no results?',

View File

@@ -259,7 +259,7 @@ $lang = array_merge($lang, array(
'ONLY_TOPIC' => 'Only topic “%s”',
'OTHER_USERS' => 'Other users posting from this IP',
'QUICKMOD_ACTION_NOT_ALLOWED' => "%s not allowed as quickmod",
'QUICKMOD_ACTION_NOT_ALLOWED' => '%s not allowed as quickmod',
'PM_REPORT_CLOSED_SUCCESS' => 'The selected PM report has been closed successfully.',
'PM_REPORT_DELETED_SUCCESS' => 'The selected PM report has been deleted successfully.',

View File

@@ -112,6 +112,7 @@ $lang = array_merge($lang, array(
'VIEW_INFO' => 'Post details',
'VIEW_NEXT_TOPIC' => 'Next topic',
'VIEW_PREVIOUS_TOPIC' => 'Previous topic',
'VIEW_QUOTED_POST' => 'View quoted post',
'VIEW_RESULTS' => 'View results',
'VIEW_TOPIC_POSTS' => array(
1 => '%d post',

View File

@@ -941,10 +941,19 @@ switch ($mode)
}
else if ($topic_id)
{
$sql = 'SELECT f.parent_id, f.forum_parents, f.left_id, f.right_id, f.forum_type, f.forum_name, f.forum_id, f.forum_desc, f.forum_desc_uid, f.forum_desc_bitfield, f.forum_desc_options, f.forum_options, t.topic_title
FROM ' . FORUMS_TABLE . ' as f,
' . TOPICS_TABLE . ' as t
WHERE t.forum_id = f.forum_id';
// Generate the navlinks based on the selected topic
$navlinks_sql_array = [
'SELECT' => 'f.parent_id, f.forum_parents, f.left_id, f.right_id, f.forum_type, f.forum_name,
f.forum_id, f.forum_desc, f.forum_desc_uid, f.forum_desc_bitfield, f.forum_desc_options,
f.forum_options, t.topic_title',
'FROM' => [
FORUMS_TABLE => 'f',
TOPICS_TABLE => 't',
],
'WHERE' => 't.forum_id = f.forum_id AND t.topic_id = ' . (int) $topic_id,
];
$sql = $db->sql_build_query('SELECT', $navlinks_sql_array);
$result = $db->sql_query($sql);
$topic_data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
@@ -1036,7 +1045,7 @@ switch ($mode)
if ($auth->acl_get('u_viewonline'))
{
$sort_key_text['l'] = $user->lang['SORT_LAST_ACTIVE'];
$sort_key_sql['l'] = 'u.user_lastvisit';
$sort_key_sql['l'] = 'u.user_last_active';
}
$sort_key_text['m'] = $user->lang['SORT_RANK'];
@@ -1138,15 +1147,15 @@ switch ($mode)
{
if ($active_select === 'lt' && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
{
$sql_where .= ' AND u.user_lastvisit = 0';
$sql_where .= ' AND u.user_last_active = 0';
}
else if ($active_select === 'gt')
{
$sql_where .= ' AND u.user_lastvisit ' . $find_key_match[$active_select] . ' ' . $active_time;
$sql_where .= ' AND u.user_last_active ' . $find_key_match[$active_select] . ' ' . $active_time;
}
else
{
$sql_where .= ' AND (u.user_lastvisit > 0 AND u.user_lastvisit < ' . $active_time . ')';
$sql_where .= ' AND (u.user_last_active > 0 AND u.user_last_active < ' . $active_time . ')';
}
}
}
@@ -1713,7 +1722,7 @@ switch ($mode)
{
$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'];
$row['last_visit'] = $row['user_last_active'] ?: $row['session_time'];
$id_cache[$row['user_id']] = $row;
}

25
phpBB/phpbb/.htaccess Normal file
View File

@@ -0,0 +1,25 @@
# With Apache 2.4 the "Order, Deny" syntax has been deprecated and moved from
# module mod_authz_host to a new module called mod_access_compat (which may be
# disabled) and a new "Require" syntax has been introduced to mod_authz_core.
# We could just conditionally provide both versions, but unfortunately Apache
# does not explicitly tell us its version if the module mod_version is not
# available. In this case, we check for the availability of module
# mod_authz_core (which should be on 2.4 or higher only) as a best guess.
<IfModule mod_version.c>
<IfVersion < 2.4>
Order Allow,Deny
Deny from All
</IfVersion>
<IfVersion >= 2.4>
Require all denied
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from All
</IfModule>
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
</IfModule>

View File

@@ -776,6 +776,7 @@ class auth
$sql_group = ($group_id !== false) ? ((!is_array($group_id)) ? 'group_id = ' . (int) $group_id : $db->sql_in_set('group_id', array_map('intval', $group_id))) : '';
$sql_forum = ($forum_id !== false) ? ((!is_array($forum_id)) ? 'AND a.forum_id = ' . (int) $forum_id : 'AND ' . $db->sql_in_set('a.forum_id', array_map('intval', $forum_id))) : '';
$sql_is_local = !empty($forum_id) ? 'AND ao.is_local <> 0' : '';
$sql_opts = '';
$hold_ary = $sql_ary = array();
@@ -787,9 +788,10 @@ class auth
// Grab group settings - non-role specific...
$sql_ary[] = 'SELECT a.group_id, a.forum_id, a.auth_setting, a.auth_option_id, ao.auth_option
FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . ' ao
FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_OPTIONS_TABLE . " ao
WHERE a.auth_role_id = 0
AND a.auth_option_id = ao.auth_option_id ' .
AND a.auth_option_id = ao.auth_option_id
$sql_is_local " .
(($sql_group) ? 'AND a.' . $sql_group : '') . "
$sql_forum
$sql_opts
@@ -797,9 +799,10 @@ class auth
// Now grab group settings - role specific...
$sql_ary[] = 'SELECT a.group_id, a.forum_id, r.auth_setting, r.auth_option_id, ao.auth_option
FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r, ' . ACL_OPTIONS_TABLE . ' ao
FROM ' . ACL_GROUPS_TABLE . ' a, ' . ACL_ROLES_DATA_TABLE . ' r, ' . ACL_OPTIONS_TABLE . " ao
WHERE a.auth_role_id = r.role_id
AND r.auth_option_id = ao.auth_option_id ' .
$sql_is_local
AND r.auth_option_id = ao.auth_option_id " .
(($sql_group) ? 'AND a.' . $sql_group : '') . "
$sql_forum
$sql_opts

View File

@@ -21,7 +21,7 @@ class gravatar extends \phpbb\avatar\driver\driver
/**
* The URL for the gravatar service
*/
const GRAVATAR_URL = '//secure.gravatar.com/avatar/';
const GRAVATAR_URL = '//gravatar.com/avatar/';
/**
* {@inheritdoc}
@@ -29,7 +29,7 @@ class gravatar extends \phpbb\avatar\driver\driver
public function get_data($row)
{
return array(
'src' => $row['avatar'],
'src' => $this->get_gravatar_url($row),
'width' => $row['avatar_width'],
'height' => $row['avatar_height'],
);
@@ -53,7 +53,7 @@ class gravatar extends \phpbb\avatar\driver\driver
{
$template->assign_vars(array(
'AVATAR_GRAVATAR_WIDTH' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_width']) ? $row['avatar_width'] : $request->variable('avatar_gravatar_width', ''),
'AVATAR_GRAVATAR_HEIGHT' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_height']) ? $row['avatar_height'] : $request->variable('avatar_gravatar_width', ''),
'AVATAR_GRAVATAR_HEIGHT' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_height']) ? $row['avatar_height'] : $request->variable('avatar_gravatar_height', ''),
'AVATAR_GRAVATAR_EMAIL' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar']) ? $row['avatar'] : '',
));
@@ -175,7 +175,7 @@ class gravatar extends \phpbb\avatar\driver\driver
global $phpbb_dispatcher;
$url = self::GRAVATAR_URL;
$url .= md5(strtolower(trim($row['avatar'])));
$url .= hash('sha256', strtolower(trim($row['avatar'])));
if ($row['avatar_width'] || $row['avatar_height'])
{

View File

@@ -330,6 +330,27 @@ class file extends \phpbb\cache\driver\base
return $query_result;
}
/**
* Cleanup when loading invalid data global file
*
* @param string $file Filename
* @param resource $handle
*
* @return void
*/
private function cleanup_invalid_data_global(string $file, $handle): void
{
if (is_resource($handle))
{
fclose($handle);
}
$this->vars = $this->var_expires = [];
$this->is_modified = false;
$this->remove_file($file);
}
/**
* Read cached data from a specified file
*
@@ -372,14 +393,7 @@ class file extends \phpbb\cache\driver\base
if (!is_numeric($bytes) || ($bytes = (int) $bytes) === 0)
{
// We cannot process the file without a valid number of bytes
// so we discard it
fclose($handle);
$this->vars = $this->var_expires = array();
$this->is_modified = false;
$this->remove_file($file);
$this->cleanup_invalid_data_global($file, $handle);
return false;
}
@@ -392,9 +406,17 @@ class file extends \phpbb\cache\driver\base
}
$var_name = substr(fgets($handle), 0, -1);
$data_length = $bytes - strlen($var_name);
if ($data_length <= 0)
{
$this->cleanup_invalid_data_global($file, $handle);
return false;
}
// Read the length of bytes that consists of data.
$data = fread($handle, $bytes - strlen($var_name));
$data = fread($handle, $data_length);
$data = @unserialize($data);
// Don't use the data if it was invalid

View File

@@ -129,6 +129,10 @@ class redis extends \phpbb\cache\driver\memory
/**
* Store data in the cache
*
* For the info, see https://phpredis.github.io/phpredis/Redis.html#method_set,
* https://redis.io/docs/latest/commands/set/
* and https://redis.io/docs/latest/commands/expire/#appendix-redis-expires
*
* @access protected
* @param string $var Cache key
* @param mixed $data Data to store
@@ -137,11 +141,7 @@ class redis extends \phpbb\cache\driver\memory
*/
function _write($var, $data, $ttl = 2592000)
{
if ($ttl == 0)
{
return $this->redis->set($var, $data);
}
return $this->redis->setex($var, $ttl, $data);
return $this->redis->set($var, $data, ['EXAT' => time() + $ttl]);
}
/**

View File

@@ -359,6 +359,7 @@ class recaptcha_v3 extends captcha_abstract
if ($result->isSuccess())
{
$this->solved = true;
$this->confirm_code = $this->code;
return false;
}

View File

@@ -100,7 +100,15 @@ class update_hashes extends \phpbb\console\command\command
while ($row = $this->db->sql_fetchrow($result))
{
$old_hash = preg_replace('/^\$CP\$/', '', $row['user_password']);
$new_hash = $this->passwords_manager->hash($old_hash, array($this->default_type));
// If stored hash type is unknown then it's md5 hash with no prefix
// First rehash it using $H$ as hash type identifier (salted_md5)
if (!$this->passwords_manager->detect_algorithm($old_hash))
{
$old_hash = $this->passwords_manager->hash($old_hash, '$H$');
}
$new_hash = $this->passwords_manager->hash($old_hash, [$this->default_type]);
$sql = 'UPDATE ' . USERS_TABLE . "
SET user_password = '" . $this->db->sql_escape($new_hash) . "'

View File

@@ -92,6 +92,12 @@ class reparse extends \phpbb\console\command\command
InputOption::VALUE_NONE,
$this->user->lang('CLI_DESCRIPTION_REPARSER_REPARSE_OPT_DRY_RUN')
)
->addOption(
'force-bbcode-reparsing',
null,
InputOption::VALUE_NONE,
$this->user->lang('CLI_DESCRIPTION_REPARSER_REPARSE_OPT_FORCE_BBCODE')
)
->addOption(
'resume',
null,
@@ -222,13 +228,15 @@ class reparse extends \phpbb\console\command\command
// Start from $max and decrement $current by $size until we reach $min
$current = $max;
$force_bbcode_reparsing = (bool) $this->get_option('force-bbcode-reparsing');
while ($current >= $min)
{
$start = max($min, $current + 1 - $size);
$end = max($min, $current);
$progress->setMessage($this->user->lang('CLI_REPARSER_REPARSE_REPARSING', $reparser->get_name(), $start, $end));
$reparser->reparse_range($start, $end);
$reparser->reparse_range($start, $end, $force_bbcode_reparsing);
$current = $start - 1;
$progress->setProgress($max + 1 - $start);

View File

@@ -290,18 +290,17 @@ class add extends command
{
case USER_ACTIVATION_SELF:
$email_template = 'user_welcome_inactive';
$user_actkey = gen_rand_string(mt_rand(6, 10));
break;
case USER_ACTIVATION_ADMIN:
$email_template = 'admin_welcome_inactive';
$user_actkey = gen_rand_string(mt_rand(6, 10));
break;
default:
$email_template = 'user_welcome';
$user_actkey = '';
break;
}
$user_actkey = $this->get_activation_key($user_id);
if (!class_exists('messenger'))
{
require($this->phpbb_root_path . 'includes/functions_messenger.' . $this->php_ext);
@@ -321,6 +320,35 @@ class add extends command
$messenger->send(NOTIFY_EMAIL);
}
/**
* Get user activation key
*
* @param int $user_id User ID
*
* @return string User activation key for user
*/
protected function get_activation_key(int $user_id): string
{
$user_actkey = '';
if ($this->config['require_activation'] == USER_ACTIVATION_SELF || $this->config['require_activation'] == USER_ACTIVATION_ADMIN)
{
$user_actkey = gen_rand_string(mt_rand(6, 10));
$sql_ary = [
'user_actkey' => $user_actkey,
'user_actkey_expiration' => user::get_token_expiration(),
];
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . (int) $user_id;
$this->db->sql_query($sql);
}
return $user_actkey;
}
/**
* Helper to translate questions to the user
*

View File

@@ -0,0 +1,227 @@
<?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\console\command\user;
use phpbb\console\command\command;
use phpbb\db\driver\driver_interface;
use phpbb\language\language;
use phpbb\log\log_interface;
use phpbb\user;
use phpbb\user_loader;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Question\ConfirmationQuestion;
use Symfony\Component\Console\Style\SymfonyStyle;
class delete_id extends command
{
/** @var driver_interface */
protected $db;
/** @var language */
protected $language;
/** @var log_interface */
protected $log;
/** @var user_loader */
protected $user_loader;
/** @var string Bots table */
protected $bots_table;
/** @var string User group table */
protected $user_group_table;
/** @var string Users table */
protected $users_table;
/** @var string phpBB root path */
protected $phpbb_root_path;
/** @var string PHP extension */
protected $php_ext;
/**
* Construct method
*
* @param driver_interface $db
* @param language $language
* @param log_interface $log
* @param user $user
* @param user_loader $user_loader
* @param string $bots_table
* @param string $user_group_table
* @param string $users_table
* @param string $phpbb_root_path
* @param string $php_ext
*/
public function __construct(driver_interface $db, language $language, log_interface $log, user $user, user_loader $user_loader,
string $bots_table, string $user_group_table, string $users_table, string $phpbb_root_path, string $php_ext)
{
$this->db = $db;
$this->language = $language;
$this->log = $log;
$this->user_loader = $user_loader;
$this->bots_table = $bots_table;
$this->user_group_table = $user_group_table;
$this->users_table = $users_table;
$this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext;
$this->language->add_lang('acp/users');
parent::__construct($user);
}
/**
* Sets the command name and description
*
* @return void
*/
protected function configure(): void
{
$this
->setName('user:delete_id')
->setDescription($this->language->lang('CLI_DESCRIPTION_USER_DELETE_ID'))
->addArgument(
'user_ids',
InputArgument::REQUIRED | InputArgument::IS_ARRAY,
$this->language->lang('CLI_DESCRIPTION_USER_DELETE_ID_OPTION_ID')
)
->addOption(
'delete-posts',
null,
InputOption::VALUE_NONE,
$this->language->lang('CLI_DESCRIPTION_USER_DELETE_OPTION_POSTS')
)
;
}
/**
* Executes the command user:delete_ids
*
* Deletes a list of user ids from the database. An option to delete the users' posts
* is available, by default posts will be retained.
*
* @param InputInterface $input The input stream used to get the options
* @param OutputInterface $output The output stream, used to print messages
*
* @return int 0 if all is well, 1 if any errors occurred
*/
protected function execute(InputInterface $input, OutputInterface $output): int
{
$user_ids = $input->getArgument('user_ids');
$mode = ($input->getOption('delete-posts')) ? 'remove' : 'retain';
$deleted_users = 0;
$io = new SymfonyStyle($input, $output);
if (count($user_ids) > 0)
{
$this->user_loader->load_users($user_ids);
$progress = $this->create_progress_bar(count($user_ids), $io, $output);
$progress->setMessage($this->language->lang('CLI_USER_DELETE_ID_START'));
$progress->start();
foreach ($user_ids as $user_id)
{
$user_row = $this->user_loader->get_user($user_id);
// Skip anonymous user
if ($user_row['user_id'] == ANONYMOUS)
{
$progress->advance();
continue;
}
else if ($user_row['user_type'] == USER_IGNORE)
{
$this->delete_bot_user($user_row);
}
else
{
if (!function_exists('user_delete'))
{
require($this->phpbb_root_path . 'includes/functions_user.' . $this->php_ext);
}
user_delete($mode, $user_row['user_id'], $user_row['username']);
$this->log->add('admin', ANONYMOUS, '', 'LOG_USER_DELETED', false, array($user_row['username']));
}
$progress->advance();
$deleted_users++;
}
$progress->finish();
if ($deleted_users > 0)
{
$io->success($this->language->lang('CLI_USER_DELETE_ID_SUCCESS'));
}
}
if (!$deleted_users)
{
$io->note($this->language->lang('CLI_USER_DELETE_NONE'));
}
return 0;
}
/**
* Interacts with the user.
* Confirm they really want to delete the account...last chance!
*
* @param InputInterface $input An InputInterface instance
* @param OutputInterface $output An OutputInterface instance
*/
protected function interact(InputInterface $input, OutputInterface $output): void
{
$helper = $this->getHelper('question');
$user_ids = $input->getArgument('user_ids');
if (count($user_ids) > 0)
{
$question = new ConfirmationQuestion(
$this->language->lang('CLI_USER_DELETE_ID_CONFIRM', implode(',', $user_ids)),
false
);
if (!$helper->ask($input, $output, $question))
{
$input->setArgument('user_ids', []);
}
}
}
/**
* Deletes a bot user
*
* @param array $user_row
* @return void
*/
protected function delete_bot_user(array $user_row): void
{
$delete_tables = [$this->bots_table, $this->user_group_table, $this->users_table];
foreach ($delete_tables as $table)
{
$sql = "DELETE FROM $table
WHERE user_id = " . (int) $user_row['user_id'];
$this->db->sql_query($sql);
}
}
}

View File

@@ -85,9 +85,8 @@ class cron_runner_listener implements EventSubscriberInterface
{
$task->run();
}
$this->cron_lock->release();
}
$this->cron_lock->release();
}
}

View File

@@ -107,7 +107,15 @@ class update_hashes extends \phpbb\cron\task\base
while ($row = $this->db->sql_fetchrow($result))
{
$old_hash = preg_replace('/^\$CP\$/', '', $row['user_password']);
$new_hash = $this->passwords_manager->hash($old_hash, array($this->default_type));
// If stored hash type is unknown then it's md5 hash with no prefix
// First rehash it using $H$ as hash type identifier (salted_md5)
if (!$this->passwords_manager->detect_algorithm($old_hash))
{
$old_hash = $this->passwords_manager->hash($old_hash, '$H$');
}
$new_hash = $this->passwords_manager->hash($old_hash, [$this->default_type]);
// Increase number so we know that users were selected from the database
$affected_rows++;

View File

@@ -166,7 +166,16 @@ class mssql_odbc extends \phpbb\db\driver\mssql_base
if ($this->query_result === false)
{
if (($this->query_result = @odbc_exec($this->db_connect_id, $query)) === false)
try
{
$this->query_result = @odbc_exec($this->db_connect_id, $query);
}
catch (\Error $e)
{
// Do nothing as SQL driver will report the error
}
if ($this->query_result === false)
{
$this->sql_error($query);
}

View File

@@ -138,12 +138,22 @@ class mssqlnative extends \phpbb\db\driver\mssql_base
if ($this->query_result === false)
{
if (($this->query_result = @sqlsrv_query($this->db_connect_id, $query, array(), $this->query_options)) === false)
try
{
$this->query_result = @sqlsrv_query($this->db_connect_id, $query, array(), $this->query_options);
}
catch (\Error $e)
{
// Do nothing as SQL driver will report the error
}
if ($this->query_result === false)
{
$this->sql_error($query);
}
// reset options for next query
$this->query_options = array();
// Reset options for the next query
$this->query_options = [];
if ($this->debug_sql_explain)
{

View File

@@ -155,7 +155,9 @@ class mysqli extends \phpbb\db\driver\mysql_base
switch ($status)
{
case 'begin':
return @mysqli_autocommit($this->db_connect_id, false);
@mysqli_autocommit($this->db_connect_id, false);
$result = @mysqli_begin_transaction($this->db_connect_id);
return $result;
break;
case 'commit':
@@ -197,7 +199,16 @@ class mysqli extends \phpbb\db\driver\mysql_base
if ($this->query_result === false)
{
if (($this->query_result = @mysqli_query($this->db_connect_id, $query)) === false)
try
{
$this->query_result = @mysqli_query($this->db_connect_id, $query);
}
catch (\Error $e)
{
// Do nothing as SQL driver will report the error
}
if ($this->query_result === false)
{
$this->sql_error($query);
}
@@ -345,24 +356,24 @@ class mysqli extends \phpbb\db\driver\mysql_base
{
if ($this->db_connect_id)
{
$error = array(
'message' => @mysqli_error($this->db_connect_id),
'code' => @mysqli_errno($this->db_connect_id)
);
$error = [
'message' => $this->db_connect_id->error,
'code' => $this->db_connect_id->errno,
];
}
else if (function_exists('mysqli_connect_error'))
{
$error = array(
'message' => @mysqli_connect_error(),
'code' => @mysqli_connect_errno(),
);
$error = [
'message' => $this->db_connect_id->connect_error,
'code' => $this->db_connect_id->connect_errno,
];
}
else
{
$error = array(
$error = [
'message' => $this->connect_error,
'code' => '',
);
];
}
return $error;

View File

@@ -188,7 +188,16 @@ class postgres extends \phpbb\db\driver\driver
if ($this->query_result === false)
{
if (($this->query_result = @pg_query($this->db_connect_id, $query)) === false)
try
{
$this->query_result = @pg_query($this->db_connect_id, $query);
}
catch (\Error $e)
{
// Do nothing as SQL driver will report the error
}
if ($this->query_result === false)
{
$this->sql_error($query);
}

View File

@@ -138,7 +138,16 @@ class sqlite3 extends \phpbb\db\driver\driver
$query = preg_replace('/^INSERT INTO/', 'INSERT OR ROLLBACK INTO', $query);
}
if (($this->query_result = @$this->dbo->query($query)) === false)
try
{
$this->query_result = @$this->dbo->query($query);
}
catch (\Error $e)
{
// Do nothing as SQL driver will report the error
}
if ($this->query_result === false)
{
// Try to recover a lost database connection
if ($this->dbo && !@$this->dbo->lastErrorMsg())

View File

@@ -0,0 +1,48 @@
<?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;
use phpbb\db\migration\migration;
class add_resend_activation_expiration extends migration
{
public static function depends_on(): array
{
return [
'\phpbb\db\migration\data\v33x\v3311',
];
}
public function update_schema(): array
{
return [
'add_columns' => [
$this->table_prefix . 'users' => [
'user_actkey_expiration' => ['TIMESTAMP', 0, 'after' => 'user_actkey'],
],
],
];
}
public function revert_schema(): array
{
return [
'drop_columns' => [
$this->table_prefix . 'users' => [
'user_actkey_expiration',
],
],
];
}
}

View File

@@ -0,0 +1,79 @@
<?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;
use phpbb\db\migration\migration;
class add_user_last_active extends migration
{
public static function depends_on()
{
return [
'\phpbb\db\migration\data\v33x\v3311',
];
}
public function update_schema()
{
return [
'add_columns' => [
$this->table_prefix . 'users' => [
'user_last_active' => ['TIMESTAMP', 0, 'after' => 'user_lastvisit'],
],
],
];
}
public function revert_schema()
{
return [
'drop_columns' => [
$this->table_prefix . 'users' => ['user_last_active'],
],
];
}
public function update_data()
{
return [
['custom', [[$this, 'set_user_last_active']]],
];
}
public function set_user_last_active($start = 0)
{
// Get maximum user id from database
$sql = "SELECT MAX(user_id) AS max_user_id
FROM {$this->table_prefix}users";
$result = $this->db->sql_query($sql);
$max_id = (int) $this->db->sql_fetchfield('max_user_id');
$this->db->sql_freeresult($result);
if ($start > $max_id)
{
return;
}
// Keep setting user_last_active time
$next_start = $start + 10000;
$sql = 'UPDATE ' . $this->table_prefix . 'users
SET user_last_active = user_lastvisit
WHERE user_id > ' . (int) $start . '
AND user_id <= ' . (int) ($next_start);
$this->db->sql_query($sql);
return $next_start;
}
}

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;
use phpbb\db\migration\migration;
class jquery_update_v3 extends migration
{
public function effectively_installed()
{
return $this->config['load_jquery_url'] === '//ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js';
}
public static function depends_on()
{
return ['\phpbb\db\migration\data\v33x\v3311'];
}
public function update_data()
{
return [
['config.update', ['load_jquery_url', '//ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js']],
];
}
}

View File

@@ -71,6 +71,12 @@ class profilefield_youtube_update extends \phpbb\db\migration\migration
. $this->db->get_any_char()
);
// We're done if the profile field doesn't exist
if (!$this->db_tools->sql_column_exists($profile_fields_data, $yt_profile_field))
{
return;
}
$this->db->sql_query(
"UPDATE $profile_fields_data SET
$yt_profile_field = $prepend_legacy_youtube_url

View File

@@ -87,6 +87,12 @@ class profilefields_update extends \phpbb\db\migration\migration
$yt_profile_field = 'pf_phpbb_youtube';
$has_youtube_url = $this->db->sql_like_expression($this->db->get_any_char() . 'youtube.com/' . $this->db->get_any_char());
// We're done if the profile field doesn't exist
if (!$this->db_tools->sql_column_exists($profile_fields_data, $yt_profile_field))
{
return true;
}
$update_aborted = false;
$sql = 'SELECT user_id, pf_phpbb_youtube
@@ -153,6 +159,13 @@ class profilefields_update extends \phpbb\db\migration\migration
$this->db->sql_query($sql);
$yt_profile_field = 'pf_phpbb_youtube';
// We're done if the profile field doesn't exist
if (!$this->db_tools->sql_column_exists($profile_fields_data, $yt_profile_field))
{
return;
}
$prepend_legacy_youtube_url = $this->db->sql_concatenate(
"'https://youtube.com/'", $yt_profile_field
);

View File

@@ -0,0 +1,38 @@
<?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 v3312 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return version_compare($this->config['version'], '3.3.12', '>=');
}
public static function depends_on()
{
return [
'\phpbb\db\migration\data\v33x\add_resend_activation_expiration',
'\phpbb\db\migration\data\v33x\add_user_last_active',
'\phpbb\db\migration\data\v33x\v3312rc1',
];
}
public function update_data()
{
return [
['config.update', ['version', '3.3.12']],
];
}
}

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

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