1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-13 17:42:08 +02:00

Compare commits

..

535 Commits

Author SHA1 Message Date
Marc Alexander
fdc827e066 [prep-release-3.2.10] Update Changelog for 3.2.10 2020-07-27 22:46:48 +02:00
Marc Alexander
40027e054c [prep-release-3.2.10] Fix incorrect version constrainst for packaging 2020-07-27 20:41:29 +02:00
Marc Alexander
0766a10ad3 [prep-release-3.2.10] Add migration for 3.2.10 2020-07-25 11:27:02 +02:00
Marc Alexander
ad43169065 [prep-release-3.2.10] Update version numbers to 3.2.10 2020-07-25 11:25:39 +02:00
Marc Alexander
a378e0eb0c Merge pull request #61 from phpbb/ticket/security-259
[ticket/security-259] Stop checking image size of images in img BBCode
2020-07-25 11:16:07 +02:00
Marc Alexander
8e5a635bfb Merge pull request #60 from phpbb/ticket/security/257
[ticket/security/257] Enforce http(s) for URLs in image BBCode
2020-07-25 11:16:04 +02:00
Marc Alexander
50177914a8 Merge pull request #6028 from marc1706/ticket/16417
[ticket/16417] Fix CLI database migration for phpBB 3.0.x
2020-07-25 11:14:07 +02:00
rxu
f3093a3740 [ticket/16417] Fix CLI database migration for phpBB 3.0.x
PHPBB3-16417
2020-07-24 10:50:56 +02:00
Marc Alexander
df49e0e993 Merge pull request #6006 from rxu/ticket/16524
[ticket/16524] Fix using out-of-bounds UTF8 characters in profile fields
2020-07-22 10:08:00 +02:00
Marc Alexander
4d9118447b Merge pull request #6023 from MichaIng/patch-1
[ticket/16554] Align all .htaccess files to support Apache 2.4 directives
2020-07-21 11:59:57 +02:00
Marc Alexander
361e97d097 Merge pull request #6025 from 3D-I/ticket/16550-3.2.x
[ticket/16550] Fix undefined variable url in PMs [3.2.x]
2020-07-21 11:55:19 +02:00
Marc Alexander
9da3adeda9 Merge pull request #6015 from rxu/ticket/16539
[ticket/16539] Fix general SQL error for smilies mode on posting
2020-07-21 11:53:09 +02:00
MichaIng
bd4887f660 [ticket/16554] Align all .htaccess files to support Apache 2.4 directives
While the main .htaccess as well as the ones in phpbb/db/migration/data/vXYZ/
do already support the Apache 2.4 mod_authz_core directive "Require all denied",
all others still use only the deprecated "Deny from All". To not force modern
system to use the mod_access_compat module, the modern directives should be
supported in every case.

For this, the method of phpbb/db/migration/data/vXYZ/.htaccess is copied to
update and align all .htaccess files across the source code.

PHPBB3-16554

Signed-off-by: MichaIng <micha@dietpi.com>
2020-07-21 11:21:29 +02:00
rxu
befab4f3c1 [ticket/16524] Remove u_emoji permission checks
PHPBB3-16524
2020-07-21 11:00:41 +02:00
rxu
b1c6b3bc94 [ticket/16524] Minor code adjustments
PHPBB3-16524
2020-07-21 11:00:17 +02:00
rxu
0ba0a9cbd3 [ticket/16524] Adjust u_emoji permission language entry
PHPBB3-16524
2020-07-21 11:00:16 +02:00
rxu
ab3d8ade72 [ticket/16524] Add test
PHPBB3-16524
2020-07-21 11:00:16 +02:00
rxu
acd824d432 [ticket/16524] Filter out-of-bounds UTF8 characters for profile fields
PHPBB3-16524
2020-07-21 11:00:15 +02:00
rxu
d0197a94fb [ticket/16539] Fix general SQL error for smilies mode on posting
PHPBB3-16539
2020-07-21 10:11:32 +02:00
3D-I
70c289fef0 [ticket/16550] Fix undefined variable url in PMs [3.2.x]
PHPBB3-16550
2020-07-21 10:01:31 +02:00
Marc Alexander
b0b78ee144 [ticket/security-259] Adjust wording of setting in ACP
SECURITY-259
2020-06-25 22:28:03 +02:00
Marc Alexander
d0e2023a63 [ticket/security-259] Stop checking image size of images in img bbcode
SECURITY-259
2020-06-25 22:20:58 +02:00
Marc Alexander
2afa989500 Merge pull request #6013 from marc1706/ticket/16534
[ticket/16534] Add conversion prefix to all passwords that need conversion
2020-06-21 14:32:53 +02:00
Marc Alexander
33306a0699 [ticket/16534] Add conversion prefix to all passwords that need conversion
PHPBB3-16534
2020-06-21 11:50:19 +02:00
Marc Alexander
47fcf3403f [prep-release-3.2.10] Update changelog for 3.2.10-RC2 2020-06-07 12:11:24 +02:00
Marc Alexander
6f96f8b01e [prep-release-3.2.10] Add migration for 3.2.10-RC2 2020-06-07 12:05:25 +02:00
Marc Alexander
6ab2821c34 [prep-release-3.2.10] Update version numbers for 3.2.10-RC2 2020-06-07 12:03:05 +02:00
Marc Alexander
de834b65e8 Merge pull request #5998 from 3D-I/ticket/16508
[ticket/16508] Fix WhoIs lookup
2020-06-07 09:23:58 +02:00
Marc Alexander
0df96f101b Merge pull request #5999 from kasimi/ticket/16510-3.2.x
[ticket/16510] [3.2.x] Add config values to schema_data.sql
2020-06-06 17:10:25 +02:00
Marc Alexander
8591108451 Merge pull request #5995 from rxu/ticket/16505
[ticket/16505] Fix use of count() on non-Countable
2020-06-06 14:25:19 +02:00
Marc Alexander
cc67e8b26f Merge pull request #6001 from marc1706/ticket/16511
[ticket/16511] Fix typo when checking for phpbb_delete_users_pms()
2020-06-06 12:03:34 +02:00
rxu
97a4114265 [ticket/16505] Forbid using of non-array as a second argument
PHPBB3-16505
2020-06-06 11:58:49 +02:00
rxu
e19dac0658 [ticket/16505] Fix use of count() on non-Countable
PHPBB3-16505
2020-06-06 11:58:49 +02:00
3D-I
481ca6190e [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:19 +02:00
3D-I
642b774530 [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:19 +02:00
3D-I
4d5e8df8e6 [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:19 +02:00
3D-I
568a74e22c [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:18 +02:00
3D-I
7b062b76c7 [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:18 +02:00
3D-I
3392f3aa09 [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:18 +02:00
3D-I
af6eebaa1a [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:17 +02:00
3D-I
f8acf53f72 [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:17 +02:00
3D-I
73c133c91d [ticket/16508] Fix WhoIs lookup
PHPBB3-16508
2020-06-04 21:20:17 +02:00
kasimi
0ac066aac7 [ticket/16510] Make sure config entry exists before updating it
PHPBB3-16510
2020-06-03 20:09:38 +02:00
kasimi
65d825b62c [ticket/16510] Added migration that adds missing config entries
PHPBB3-16510
2020-06-03 20:09:38 +02:00
kasimi
e9bea9dec0 [ticket/16510] Added feed_limit to schema_data.sql
PHPBB3-16510
2020-06-03 20:09:38 +02:00
kasimi
6cab65efb0 [ticket/16510] Added more config values
PHPBB3-16510
2020-06-03 20:09:38 +02:00
kasimi
8ef8df4b18 [ticket/16510] Added config values to schema_data.sql
PHPBB3-16510
2020-06-03 20:09:38 +02:00
Marc Alexander
6a24d72183 [ticket/16511] Fix typo when checking for phpbb_delete_users_pms()
PHPBB3-16511
2020-06-02 21:22:27 +02:00
Marc Alexander
e65c0171e4 Merge pull request #5997 from marc1706/ticket/16507
[ticket/16507] Fix incorrect call to sphinx_clean_search_string()
2020-06-02 10:48:31 +02:00
Marc Alexander
0ce55e897d [ticket/16507] Fix incorrect call to sphinx_clean_search_string()
PHPBB3-16507
2020-06-02 07:43:27 +02:00
Marc Alexander
8195035363 [prep-release-3.2.10] Add changelog for 3.2.10-RC1 2020-06-01 13:15:42 +02:00
Marc Alexander
eb7019d54a [prep-release-3.2.10] Add migration for 3.2.10-RC1 2020-06-01 13:14:06 +02:00
Marc Alexander
ab5ab01496 [prep-release-3.2.10] Update version numbers to 3.2.10 2020-06-01 13:12:35 +02:00
Marc Alexander
9d2c1f7602 [prep-release-3.2.10] Update version numbers to 3.2.10-RC1 2020-06-01 13:09:27 +02:00
Marc Alexander
e9a6f46bef Merge pull request #5996 from marc1706/ticket/16506
[ticket/16506] Update credits to latest state
2020-06-01 12:53:42 +02:00
Marc Alexander
5331a555f6 [ticket/16506] Update credits to latest state
PHPBB3-16506
2020-06-01 12:50:49 +02:00
Marc Alexander
dcae4f330e Merge pull request #5990 from 3D-I/ticket/16496
[ticket/16496] Fix html special chars in custom BBcode help line
2020-06-01 11:45:34 +02:00
Marc Alexander
7268c5ebfb Merge pull request #5993 from 3D-I/ticket/16503
[ticket/16503] Fix WhoIs lookup
2020-06-01 11:22:27 +02:00
Marc Alexander
fa13f06e64 Merge pull request #5994 from rxu/ticket/16500
[ticket/16500] Fix attachments ordering for copy topic feature
2020-06-01 11:19:14 +02:00
rxu
e2ced58517 [ticket/16500] Fix attachments ordering for copy topic feature
PHPBB3-16500
2020-06-01 14:40:49 +07:00
3D-I
555624decf [ticket/16503] Fix WhoIs lookup
PHPBB3-16503
2020-05-30 21:26:45 +02:00
3D-I
e9e9ab8919 [ticket/16496] Fix html special chars in custom BBcode help line
PHPBB3-16496
2020-05-28 13:09:54 +02:00
Marc Alexander
c66dd87f68 Merge pull request #5986 from 3D-I/ticket/16487
[ticket/16487] Fix URL for fontawesome 3.2.0 migration
2020-05-27 21:37:16 +02:00
Marc Alexander
6db29a7ae1 Merge pull request #5987 from marc1706/ticket/16494
[ticket/16494] Update composer & dependencies for 3.2.x
2020-05-27 10:08:08 +02:00
3D-I
bb32ec38da [ticket/16487] Fix URL for fontawesome 3.2.0 migration
PHPBB3-16487
2020-05-26 21:54:11 +02:00
3D-I
d40cb5f618 [ticket/16496] Fix html special chars in custom BBcode help line
PHPBB3-16496
2020-05-26 20:42:21 +02:00
3D-I
599adb3003 [ticket/16496] Fix html special chars in custom BBcode help line
PHPBB3-16496
2020-05-26 13:34:20 +02:00
3D-I
13914b91df [ticket/16496] Fix html special chars in custom BBcode help line
PHPBB3-16496
2020-05-25 02:01:58 +02:00
Marc Alexander
5882a9a3a2 [ticket/16494] Update composer dependencies to latest versions
PHPBB3-16494
2020-05-24 18:08:08 +02:00
Marc Alexander
a673858e13 [ticket/16494] Update composer to 1.10.6
PHPBB3-16494
2020-05-24 17:53:32 +02:00
Marc Alexander
4a4f62f29e Merge pull request #5985 from 3D-I/ticket/16486
[ticket/16486] Fix migration 3.2.0-a1
2020-05-24 14:15:37 +02:00
Marc Alexander
e01c998758 Merge pull request #5983 from 3D-I/ticket/16485
[ticket/16485] Fix Emoji in logs for warning message
2020-05-24 14:07:21 +02:00
Marc Alexander
3757caf449 Merge pull request #5982 from 3D-I/ticket/16480
[ticket/16480] Fix Emoji in report post
2020-05-18 21:41:01 +02:00
Marc Alexander
4eda5218d5 Merge pull request #5971 from ansavin/ticket/15591
[ticket/15591] Add jabber permission check
2020-05-17 21:37:17 +02:00
Marc Alexander
d0ca73caf8 Merge pull request #5972 from mrgoldy/ticket/15194
[ticket/15194] Group avatar delete
2020-05-17 21:04:13 +02:00
Marc Alexander
3bfeacaa88 Merge pull request #5973 from mrgoldy/ticket/16437
[ticket/16437] Display forum permissions
2020-05-17 17:00:48 +02:00
3D-I
d69049d6be [ticket/16487] Fix URL for fontawesome 3.2.0 migration
PHPBB3-16487
2020-05-16 15:13:16 +02:00
3D-I
2dd571bc5d [ticket/16487] Fix URL for fontawesome 3.2.0 migration
revert to 4.4.0 version

PHPBB3-16487
2020-05-16 15:05:07 +02:00
3D-I
73741e547b [ticket/16487] Fix URL for fontawesome 3.2.0 migration
PHPBB3-16487
2020-05-16 14:39:55 +02:00
3D-I
362541c2b1 [ticket/16486] Fix migration 3.2.0-a1
PHPBB3-16486
2020-05-16 14:10:10 +02:00
3D-I
bd29de880d [ticket/16485] Fix Emoji in logs for warning message
PHPBB3-16485
2020-05-14 22:08:00 +02:00
3D-I
7df35e8131 [ticket/16480] Fix Emoji in report post
PHPBB3-16480
2020-05-14 20:58:41 +02:00
Marc Alexander
697e4963db Merge pull request #5966 from 3D-I/ticket/16468
[ticket/16468] Amend DocBlocks for user_delete()
2020-05-14 17:48:10 +02:00
Marc Alexander
1c3585f575 Merge pull request #5920 from mrgoldy/ticket/13867
[ticket/13867] Manage new profile field types
2020-05-14 17:44:06 +02:00
Marc Alexander
bb43e732c8 Merge pull request #5939 from mrgoldy/ticket/16433
[ticket/16433] Add data array to core.ucp_register_user_row_after
2020-05-11 21:04:24 +02:00
ansavin
79ea63f164 [ticket/15591] Add jabber permission check
We want to make jabber address unvisible for those users who are not allowed
to send instant (jabber) messages.

PHPBB3-15591
2020-05-11 00:34:23 +03:00
3D-I
1b439cb6a0 [ticket/16468] Amend DocBlocks for user_delete()
PHPBB3-16468
2020-05-08 23:19:34 +02:00
mrgoldy
61e263ba8d [ticket/16437] Display forum permissions
PHPBB3-16437
2020-05-08 22:55:21 +02:00
mrgoldy
f958ea921c [ticket/15194] Group avatar delete
PHPBB3-15194
2020-05-08 22:09:30 +02:00
mrgoldy
8a8403ff8a Merge pull request #5228 from ioannisbat/ticket/15672
[ticket/15672] Keep same format in Submit changes.
2020-05-07 23:21:45 +02:00
mrgoldy
7330cdee2c [ticket/15672] Readd config setting and correct HTML adjustment
PHPBB3-15672
2020-05-07 16:23:09 +02:00
ioannisbat
b8b6625872 [ticket/15672] Keep same format in Submit changes.
PHPBB3-15672
2020-05-07 16:14:51 +02:00
mrgoldy
6be65cb512 Merge pull request #5963 from dark-1/ticket/16463
[ticket/16463] Fix "acp_board.php" for "ACP_SUBMIT_CHANGES".
2020-05-07 15:56:01 +02:00
3D-I
7e60a3c075 [ticket/16468] Amend DocBlocks for user_delete()
PHPBB3-16468
2020-05-05 00:38:42 +02:00
mrgoldy
56ddf5827f Merge pull request #5960 from rxu/ticket/16458
[ticket/16458] Add template events to acp_profile.html
2020-05-04 22:53:24 +02:00
mrgoldy
c44b366350 Merge pull request #5954 from kasimi/ticket/16448
[ticket/16448] Add event core.mcp_get_post_data_after
2020-05-04 22:50:54 +02:00
mrgoldy
27a95675d0 Merge pull request #5952 from kasimi/ticket/16446
[ticket/16446] Add event core.message_history_modify_rowset
2020-05-04 22:48:29 +02:00
mrgoldy
504901ccb6 Merge pull request #5950 from kasimi/ticket/16444
[ticket/16444] Add event core.ucp_pm_view_message_before
2020-05-04 22:46:17 +02:00
mrgoldy
48db45f85b Merge pull request #5949 from kasimi/ticket/16443
[ticket/16443] Add event core.ucp_pm_compose_modify_parse_after
2020-05-04 22:44:07 +02:00
mrgoldy
c8e92608fd [ticket/13867] Correct constructor comment for db tools
PHPBB3-13867
2020-05-04 22:05:07 +02:00
Marc Alexander
a8d2b819c4 Merge pull request #5965 from mrgoldy/ticket/16467
[ticket/16467] Fix PostgreSQL connection password
2020-05-04 20:37:12 +02:00
mrgoldy
ed974c2c84 [ticket/16467] Fix PostgreSQL connection password
PHPBB3-16467
2020-05-04 11:49:45 +02:00
Marc Alexander
38c3552908 Merge pull request #5953 from kasimi/ticket/16447
[ticket/16447] Add core.ucp_pm_compose_compose_pm_basic_info_query_after
2020-05-03 16:06:08 +02:00
Marc Alexander
8a4d7685f7 Merge pull request #5956 from kasimi/ticket/16450
[ticket/16450] Fix layout of ACP permission tabs
2020-05-03 14:03:50 +02:00
Marc Alexander
9c590dae7b Merge pull request #5961 from mrgoldy/ticket/16461
[ticket/16461] Update .gitignore to ignore node_modules and idea
2020-05-03 11:05:15 +02:00
Dark❶
277f7d906d [ticket/16463] Fix "acp_board.php" for "ACP_SUBMIT_CHANGES".
PHPBB3-16463
2020-05-03 11:56:48 +05:30
mrgoldy
ae4575369c Merge pull request #5951 from hanakin/ticket/16445
[ticket/16445] remove un-semantic erroneous hr.divider from viewtopic_body
2020-05-02 23:04:47 +02:00
mrgoldy
be74893e02 [ticket/16461] Update .gitignore to ignore node_modules and idea
PHPBB3-16461
2020-05-02 15:35:01 +02:00
Marc Alexander
3ecd2f150d [ticket/security/257] Enforce http(s) for URLs in image BBCode
SECURITY-257
2020-05-02 14:24:06 +02:00
Marc Alexander
20d64270a4 Merge pull request #5943 from mrgoldy/ticket/15560
[ticket/15560] Correct redirect on perma-deleting posts
2020-05-02 12:04:30 +02:00
Marc Alexander
e30d10288d Merge pull request #5918 from dark-1/ticket/16411
[ticket/16411] Add vars to notification core events
2020-04-29 22:21:05 +02:00
Marc Alexander
c11cb57c66 Merge pull request #5896 from mrgoldy/ticket/16310
[ticket/16310] Fix soft delete check when editing a post
2020-04-29 20:53:55 +02:00
rxu
c55d59e70a [ticket/16458] Add template events to acp_profile.html
PHPBB3-16458
2020-04-24 11:32:19 +07:00
Marc Alexander
a12b70468f Merge pull request #5931 from ansavin/ticket/16367
[ticket/16367] Add charset to Content-Type response header in feed controller
2020-04-23 21:58:18 +02:00
ansavin
8c8655863e [ticket/16367] Add charset to Content-Type response header in feed controller
PHPBB3-16367
2020-04-23 22:00:57 +03:00
Marc Alexander
6f99cf0fd5 Merge pull request #5959 from kasimi/ticket/16456
[ticket/16456] Add event core.text_formatter_s9e_get_errors
2020-04-22 22:00:08 +02:00
Marc Alexander
f3598d2f4d Merge pull request #5934 from kasimi/ticket/16425
[ticket/16425] Add event core.generate_smilies_modify_sql
2020-04-22 19:28:54 +02:00
kasimi
3de74e58b7 [ticket/16456] Add event core.text_formatter_s9e_get_errors
PHPBB3-16456
2020-04-22 13:26:31 +02:00
Dark❶
a5314f57af [ticket/16411] Add vars to notification core events
PHPBB3-16411
2020-04-22 11:38:49 +05:30
Dark❶
6f4d1cda13 [ticket/16411] Add vars to notification core events
Added missing `Since: 3.2.10-RC1 , 3.3.1-RC1` , in Events.MD .

PHPBB3-16411
2020-04-22 11:35:29 +05:30
Dark❶
0e69bcc282 [ticket/16411] Add vars to notification core events
Added missing `Since: 3.2.10-RC1 , 3.3.1-RC1` , in Events.MD .

PHPBB3-16411
2020-04-22 11:29:58 +05:30
Dark❶
bd23583431 [ticket/16411] Add vars to notification core events
Added missing `since 3.3.1-RC1`.

PHPBB3-16411
2020-04-22 11:12:39 +05:30
Dark❶
e0a7676c3f [ticket/16411] Add vars to notification core events
PHPBB3-16411
2020-04-22 10:32:29 +05:30
kasimi
09ce2ab70e [ticket/16425] Added @since 3.3.1-RC1
PHPBB3-16425
2020-04-21 23:47:09 +02:00
Marc Alexander
0f51a85d8f Merge pull request #5958 from kasimi/ticket/16453
[ticket/16453] Load permission lang files before core.permissions
2020-04-21 22:03:07 +02:00
Marc Alexander
66990474b9 Merge pull request #5937 from mrgoldy/ticket/16422
[ticket/16422] Strip BOM characters
2020-04-21 21:47:07 +02:00
Marc Alexander
c251ab51c0 Merge pull request #5936 from dark-1/ticket/16429
[ticket/16429] Add vars to 2 ACP User core events
2020-04-21 21:41:07 +02:00
Marc Alexander
bf36dd2036 Merge pull request #5935 from 3D-I/ticket/16428
[ticket/16428] Fix invalid scheme name (empty value)
2020-04-21 21:35:49 +02:00
Marc Alexander
14cd51056b Merge pull request #5933 from kasimi/ticket/16424
[ticket/16424] Add base_url to generate_smilies events
2020-04-21 21:21:25 +02:00
Marc Alexander
29450d8893 Merge pull request #5930 from 3D-I/ticket/16423
[ticket/16423] Add Aria Engine to list of Fulltext Supported
2020-04-21 20:07:47 +02:00
Marc Alexander
e10331f988 Merge pull request #5942 from mrgoldy/ticket/16432
[ticket/16432] Display APCu Cache notice when handling extensions through CLI
2020-04-21 17:19:47 +02:00
kasimi
573a1b7d35 [ticket/16453] Load permission lang files before core.permissions
PHPBB3-16453
2020-04-21 14:14:33 +02:00
kasimi
565a287d20 [ticket/16450] Fix layout of ACP permission tabs
PHPBB3-16450
2020-04-19 10:11:18 +02:00
Marc Alexander
7767648520 Merge pull request #5929 from rxu/ticket/16421
[ticket/16421] Add contact field icon template events to viewtopic_body.html
2020-04-17 21:10:15 +02:00
kasimi
64ce9d2218 [ticket/16448] Added $phpbb_dispatcher
PHPBB3-16448
2020-04-17 16:28:50 +02:00
kasimi
cd85541e19 [ticket/16448] Add event core.mcp_get_post_data_after
PHPBB3-16448
2020-04-17 16:05:42 +02:00
kasimi
c1583fa001 [ticket/16447] Add event core.ucp_pm_compose_compose_pm_basic_info_query_after
PHPBB3-16447
2020-04-17 15:32:24 +02:00
kasimi
5842b8416e [ticket/16446] Add event core.message_history_modify_rowset
PHPBB3-16446
2020-04-17 15:12:42 +02:00
hanakin
3e296a4a90 [ticket/16445] remove hr.divider from viewtopic
PHPBB3-16445
2020-04-16 16:21:54 -10:00
Marc Alexander
46cee69804 Merge pull request #5916 from rxu/ticket/13426
[ticket/13426] Improve user timezone initialization
2020-04-16 22:08:54 +02:00
kasimi
28c24c8c45 [ticket/16444] Add event core.core.ucp_pm_view_message_before
PHPBB3-16444
2020-04-16 21:35:07 +02:00
kasimi
43ce44cb3b [ticket/16443] Add event core.ucp_pm_compose_modify_parse_after
PHPBB3-16443
2020-04-16 20:23:16 +02:00
mrgoldy
d2fb48ce49 Merge pull request #5927 from marc1706/ticket/16415
[ticket/16415] Add COMPOSER_AUTH token to appveyor builds
2020-04-14 16:56:04 +02:00
mrgoldy
15a7a77bb6 Merge pull request #5924 from 3D-I/ticket/16416
[ticket/16416] Fix non-numeric value encountered - ACP attachments
2020-04-14 16:26:58 +02:00
mrgoldy
b4a900c993 Merge pull request #5925 from 3D-I/ticket/16418
[ticket/16418] Fix non-numeric value - ACP board start date
2020-04-14 16:19:04 +02:00
mrgoldy
5ca9674ced [ticket/15560] Remove correct anchor_pos variable name
PHPBB3-15560
2020-04-12 13:44:04 +02:00
mrgoldy
154ebc24c2 [ticket/15560] Correct redirect on perma-deleting posts
PHPBB3-15560
2020-04-12 13:39:41 +02:00
mrgoldy
3e128d06f4 [ticket/16432] Display APCu Cache notice when handling extensions through CLI
PHPBB3-16432
2020-04-12 00:46:00 +02:00
mrgoldy
04e15e6555 [ticket/16433] Add data array to core.ucp_register_user_row_after
PHPBB3-16433
2020-04-11 15:13:05 +02:00
kasimi
d927154217 [ticket/16425] Removed whitespace
PHPBB3-16425
2020-04-09 17:12:06 +02:00
mrgoldy
275ef147f6 [ticket/16422] Strip BOM characters
PHPBB3-16422
2020-04-08 22:19:40 +02:00
Dark❶
f4c45f3f21 [ticket/16429] Add vars to 2 ACP User core events
PHPBB3-16429
2020-04-07 12:39:52 +05:30
3D-I
33666c7817 [ticket/16428] Fix invalid scheme name (empty value)
PHPBB3-16428
2020-04-06 22:11:01 +02:00
mrgoldy
c990818200 Merge pull request #5908 from phpbb-es/ticket/16404
[ticket/16404] Small bug in prosilver
2020-04-06 17:16:43 +02:00
kasimi
6cab639d8e [ticket/16425] Added table alias
PHPBB3-16425
2020-04-05 16:02:32 +02:00
kasimi
21dbabe6f2 [ticket/16425] Add event core.generate_smilies_modify_sql
PHPBB3-16425
2020-04-05 11:12:21 +02:00
kasimi
fe9254790c [ticket/16424] Add base_url to generate_smilies events
PHPBB3-16424
2020-04-05 11:10:53 +02:00
3D-I
c190451098 [ticket/16423] Add Aria Engine to list of Fulltext Supported
PHPBB3-16423
2020-04-02 23:47:01 +02:00
3D-I
551a018613 [ticket/16423] Add Aria Engine to list of Fulltext Supported
PHPBB3-16423
2020-04-02 23:18:26 +02:00
rxu
45f0c77761 [ticket/16421] Add contact field icon template events to viewtopic_body.html
PHPBB3-16421
2020-04-02 12:31:38 +07:00
Marc Alexander
8877688ee4 Merge pull request #5901 from mrgoldy/ticket/16122
[ticket/16122] Display user rank in MCP user notes
2020-03-29 20:48:32 +02:00
mrgoldy
876dc581a8 Merge pull request #5928 from marc1706/ticket/16419
[ticket/16419] Add mrgoldy to CREDITS.txt
2020-03-29 11:59:23 +02:00
Marc Alexander
a267db851a [ticket/16419] Add mrgoldy to CREDITS.txt
PHPBB3-16419
2020-03-29 11:23:05 +02:00
Marc Alexander
26c150090a [ticket/16415] Add COMPOSER_AUTH token to appveyor builds
PHPBB3-16415
2020-03-29 11:09:56 +02:00
3D-I
39c6d11ed6 [ticket/16418] Fix non-numeric value - ACP board start date
PHPBB3-16418
2020-03-28 15:34:06 +01:00
3D-I
5b5a29849e [ticket/16416] Fix non-numeric value encountered - ACP attachments settings
PHPBB3-16416
2020-03-26 11:27:37 +01:00
3D-I
b9123cad7c [ticket/16416] Fix non-numeric value encountered - ACP attachments settings
PHPBB3-16416
2020-03-26 00:58:24 +01:00
mrgoldy
7149349e25 [ticket/13867] Use order by in profile fields manager test
PHPBB3-13867
2020-03-24 01:06:02 +01:00
mrgoldy
9080a0e778 [ticket/13867] Force data type in profile fields manager
PHPBB3-13867
2020-03-24 00:28:00 +01:00
mrgoldy
d26e0423f7 [ticket/13867] Amend profile fields manager constructor
PHPBB3-13867
2020-03-23 22:47:18 +01:00
mrgoldy
b602e0c014 [ticket/13867] Remove profile field test prophecy
PHPBB3-13867
2020-03-23 22:40:04 +01:00
mrgoldy
29d44973a7 [ticket/13867] Finish profile fields manager tests
PHPBB3-13867
2020-03-23 22:40:04 +01:00
mrgoldy
903185a69c [ticket/13867] Amend profile fields manager tests
PHPBB3-13867
2020-03-23 22:40:04 +01:00
mrgoldy
84cd7e496b [ticket/13867] Amend profile fields manager
PHPBB3-13867
2020-03-23 22:40:04 +01:00
Tristan Darricau
b3f3886cd9 [ticket/13867] Add tests
PHPBB3-13867
2020-03-23 22:37:51 +01:00
javiexin
b1e1ee7d55 [ticket/13867] Enable/disable mechanism for new profile field types
Adds methods to enable, disable and purge profile field types to the
profilefields\manager class. These methods are to be called from
extensions that add new profile field types on the enable, disable
and purge methods of the ext class. If not done, any profile field
of a new type that is left after extension is disabled or removed will
break the forum in several places.
Remove dependency from container, add dependencies with specific classes.
Change try/catch by !isset.
Execute requested changes: more meaningful var names, json_encode, empty.
Execute requested changes: separate a utilit list function, use
sql_in_set, use single quotes ('). Remove code approved in a different PR.

PHPBB3-13867
2020-03-23 22:37:50 +01:00
javiexin
b60322f729 [ticket/13867] Enable/disable mechanism for new profile field types
Adds methods to enable, disable and purge profile field types to the
profilefields\manager class. These methods are to be called from
extensions that add new profile field types on the enable, disable
and purge methods of the ext class. If not done, any profile field
of a new type that is left after extension is disabled or removed will
break the forum in several places.
Remove dependency from container, add dependencies with specific classes.
Change try/catch by !isset.
Execute requested changes: more meaningful var names, json_encode, empty.

PHPBB3-13867
2020-03-23 22:37:29 +01:00
javiexin
b89539a70e [ticket/13867] Enable/disable mechanism for new profile field types
Adds methods to enable, disable and purge profile field types to the
profilefields\manager class. These methods are to be called from
extensions that add new profile field types on the enable, disable
and purge methods of the ext class. If not done, any profile field
of a new type that is left after extension is disabled or removed will
break the forum in several places.
Remove dependency from container, add dependencies with specific classes.
Change try/catch by !isset.

PHPBB3-13867
2020-03-23 22:34:31 +01:00
javiexin
78ea308608 [ticket/13867] Enable/disable mechanism for new profile field types
Adds methods to enable, disable and purge profile field types to the
profilefields\manager class.  These methods are to be called from
extensions that add new profile field types on the enable, disable
and purge methods of the ext class.  If not done, any profile field
of a new type that is left after extension is disabled or removed will
break the forum in several places.

PHPBB3-13867
2020-03-23 22:34:31 +01:00
Marc Alexander
3539f9372d Merge pull request #5891 from mrgoldy/ticket/16391
[ticket/16391] Add extensions info_acp_ lang file to MCP logs
2020-03-22 18:03:45 +01:00
Marc Alexander
119261dc5d Merge pull request #5912 from mrgoldy/ticket/16407
[ticket/16407] Fix MCP Post reported message
2020-03-22 17:58:29 +01:00
Dark❶
2c0509a5c7 [ticket/16411] Add vars to notification core events
PHPBB3-16411
2020-03-22 03:40:37 +05:30
Dark❶
443b931b36 [ticket/16411] Add vars to notification core events
PHPBB3-16411
2020-03-22 01:47:53 +05:30
Marc Alexander
0fa0013a69 Merge pull request #5915 from mrgoldy/ticket/16222
[ticket/16222] Fix timezone suggestion for 00:00
2020-03-21 17:17:19 +01:00
rxu
5842c912a9 [ticket/13426] Improve user timezone initialization
PHPBB3-13426
2020-03-19 00:17:26 +07:00
mrgoldy
c6412a186c [ticket/16222] Fix timezone suggestion for 00:00
PHPBB3-16222
2020-03-18 16:17:42 +00:00
Marc Alexander
0788754a5f Merge pull request #5911 from dark-1/ticket/16406
[ticket/16406] Fix Core Event of notification
2020-03-17 17:48:32 +01:00
mrgoldy
a37f95e7db [ticket/16407] Fix MCP Post reported message
PHPBB3-16407
2020-03-16 22:41:52 +01:00
Marc Alexander
8b1f69c1a3 Merge pull request #5893 from mrgoldy/ticket/15275
[ticket/15275] Fix IP lookup pagination
2020-03-16 21:53:16 +01:00
Marc Alexander
4721a4ae19 Merge pull request #5899 from 3D-I/ticket/16400
[ticket/16400] Add posting_editor_* events
2020-03-16 17:24:23 +01:00
Marc Alexander
be343298e8 Merge pull request #5890 from mrgoldy/ticket/15979
[ticket/15979] Fix restoring/deleting when editing soft-deleted post
2020-03-16 16:34:12 +01:00
Marc Alexander
90a4ea4f9b Merge pull request #5889 from mrgoldy/ticket/15609
[ticket/15609] MCP Queue and Report forum and topic identifiers
2020-03-16 15:54:18 +01:00
Marc Alexander
46b4a74549 Merge pull request #5895 from 3D-I/ticket/16399
[ticket/16399] Fix Emoji in topic title for MCP split topic
2020-03-16 14:19:46 +01:00
Marc Alexander
1e7fc0f7df Merge pull request #5903 from 3D-I/ticket/16403
[ticket/16403] Fix attachment icon in MCP reports
2020-03-15 19:34:33 +01:00
Marc Alexander
8b8606349e Merge pull request #5904 from 3D-I/ticket/13914
[ticket/13914] Cast to INT mixed style ID data in user setup
2020-03-15 17:25:46 +01:00
Dark❶
b23c4dacb9 [ticket/16406] Fix Core Event of notification
PHPBB3-16406
2020-03-15 21:10:28 +05:30
Marc Alexander
2d39d34ab5 Merge pull request #5897 from mrgoldy/ticket/16245
[ticket/16245] Cast attachment filesize to bigint
2020-03-15 16:30:29 +01:00
Marc Alexander
d17b554666 Merge pull request #5888 from mrgoldy/ticket/16388
[ticket/16388] Add online_list_before template events
2020-03-15 15:44:37 +01:00
phpBB España
07576eb338 [ticket/16404] Small bug in prosilver
PHPBB3-16404
2020-03-15 14:45:45 +01:00
3D-I
e5f88a1462 [ticket/13914] Cast to INT mixed style ID data in user setup
PHPBB3-13914
2020-03-15 04:43:31 +01:00
3D-I
95d873574c [ticket/16403] Fix attachment icon in MCP reports
PHPBB3-16403
2020-03-15 04:05:03 +01:00
mrgoldy
962d3f1df0 [ticket/16122] Display user rank in MCP user notes
PHPBB3-16122
2020-03-13 00:49:32 +01:00
3D-I
b0e7221b3a [ticket/16400] Add posting_editor_* events
PHPBB3-16400
2020-03-12 23:35:29 +01:00
3D-I
f6b121758b [ticket/16400] Add posting_editor_* events
PHPBB3-16400
2020-03-12 23:27:23 +01:00
mrgoldy
8dd76e6e2f [ticket/16245] Cast attachment filesize to bigint
PHPBB3-16245
2020-03-12 22:13:14 +01:00
mrgoldy
edf27fdac5 [ticket/16310] Fix soft delete check when editing a post
PHPBB3-16310
2020-03-12 21:11:30 +01:00
3D-I
1c2f65f268 [ticket/16399] Fix Emoji in topic tile for MCP split topic
PHPBB3-16399
2020-03-12 15:27:28 +01:00
mrgoldy
291b865f17 [ticket/15275] Use base_url in lookup IP link
PHPBB3-15275
2020-03-10 15:24:39 +01:00
mrgoldy
f57a7826a8 [ticket/15275] Fix IP lookup pagination
PHPBB3-15275
2020-03-10 15:22:22 +01:00
mrgoldy
a66e640499 [ticket/16391] Add extensions info_acp_ lang file to MCP logs
PHPBB3-16391
2020-03-10 01:43:13 +01:00
mrgoldy
24fab91694 [ticket/15979] Fix restoring/deleting when editing deleted post
PHPBB3-15979
2020-03-10 00:24:19 +01:00
mrgoldy
5881a24faa [ticket/15609] MCP Queue and Report forum and topic identifiers
PHPBB3-15609
2020-03-09 23:33:59 +01:00
mrgoldy
3b82c8cb10 [ticket/16388] Add online_list_before template events
PHPBB3-16388
2020-03-09 22:04:20 +01:00
Marc Alexander
0a089c8656 Merge pull request #5877 from mrgoldy/ticket/16121
[ticket/16121] Footer classes in simple_footer
2020-03-09 17:48:14 +01:00
Marc Alexander
fccae1009b Merge pull request #5882 from marc1706/ticket/16392
[ticket/16392] Update composer dependencies for 3.2
2020-03-08 17:12:57 +01:00
Marc Alexander
3c07c8c2a0 Merge pull request #5862 from dark-1/ticket/16370
[ticket/16370] Add core events for Notification
2020-03-07 14:15:32 +01:00
Marc Alexander
7e589a529d [ticket/16392] Update composer dependencies for 3.2
PHPBB3-16392
2020-03-04 17:54:02 +01:00
Marc Alexander
6afa29eb5c [ticket/16392] Update composer to 1.9.3
PHPBB3-16392
2020-03-04 17:52:31 +01:00
Marc Alexander
a88e640924 Merge pull request #5880 from mrgoldy/ticket/15438
[ticket/15438] Correct log language strings: from > for
2020-03-04 17:45:30 +01:00
Marc Alexander
0614a1a57f Merge pull request #5857 from mrgoldy/ticket/16358
[ticket/16358] Hide attachment tab with no filters and display ACP notice
2020-03-03 21:59:00 +01:00
Marc Alexander
75abae80fd Merge pull request #5878 from mrgoldy/ticket/16377
[ticket/16377] Rename navlinks loop variable
2020-03-03 21:22:07 +01:00
Dark❶
70513f8da4 [ticket/16370] Add core events for Notification
PHPBB3-16370
2020-03-04 01:41:37 +05:30
Marc Alexander
83c886781d Merge pull request #5876 from mrgoldy/ticket/16163
[ticket/16163] Notice when no posts inside MCP topic
2020-03-03 19:47:38 +01:00
Marc Alexander
ea1a4ffbb8 Merge pull request #5875 from mrgoldy/ticket/16289
[ticket/16289] Correct ampersand in report notification email
2020-03-03 18:03:17 +01:00
mrgoldy
cada6f294d [ticket/15438] Correct log language strings: remove excessive o
PHPBB3-15438
2020-03-02 21:58:19 +01:00
mrgoldy
4ade2789f6 [ticket/15438] Correct log language strings
PHPBB3-15438
2020-03-02 21:22:19 +01:00
Marc Alexander
bb21336191 Merge pull request #5872 from dark-1/ticket/16384
[ticket/16384] Add template events friends list username {prepend/append}
2020-03-02 20:52:06 +01:00
Marc Alexander
adf10ef492 Merge pull request #5871 from dark-1/ticket/16383
[ticket/16383] Add core events to modify friends list
2020-03-02 20:46:50 +01:00
Marc Alexander
a470f0a6db Merge pull request #5870 from dark-1/ticket/16381
[ticket/16381] Add core event to Modify Topics SQL
2020-03-02 20:41:26 +01:00
mrgoldy
8ed41ea525 [ticket/16358] Update no attachment groups warning message
PHPBB3-16358
2020-03-01 20:27:54 +01:00
mrgoldy
558f672634 [ticket/15438] Correct log language strings: from > for
PHPBB3-15438
2020-03-01 20:20:40 +01:00
Marc Alexander
10a4d74190 Merge pull request #5879 from mrgoldy/ticket/15887
[ticket/15887] Reposition email after passwords in registration form
2020-03-01 18:42:53 +01:00
Marc Alexander
f59419ed7e Merge pull request #5856 from mrgoldy/ticket/16356
[ticket/16356] Delete attachments on saving a draft
2020-03-01 17:11:00 +01:00
Marc Alexander
aea5c3545c Merge pull request #5855 from mrgoldy/ticket/10506
[ticket/10506] Preserve attachments on not-saving PM draft
2020-03-01 16:50:20 +01:00
mrgoldy
d1d7ed1381 [ticket/15887] Reposition email after passwords in registration form
PHPBB3-15887
2020-03-01 16:01:00 +01:00
mrgoldy
44caadc723 [ticket/16377] Rename navlinks loop variable
PHPBB3-16377
2020-03-01 15:51:53 +01:00
mrgoldy
7c21eb84ea [ticket/16121] Footer classes in simple_footer
PHPBB3-16121
2020-03-01 15:40:04 +01:00
mrgoldy
07cbc847f0 [ticket/16163] Notice when no posts inside MCP topic
PHPBB3-16163
2020-03-01 11:32:09 +01:00
mrgoldy
f6fae7b536 [ticket/16289] Correct ampersand in report notification email
PHPBB3-16289
2020-03-01 11:21:34 +01:00
Dark❶
300f887c02 [ticket/16383] Add core events to modify friends list
PHPBB3-16383
2020-02-28 00:30:34 +05:30
Dark❶
2ee9d4f101 [ticket/16383] Add core events to modify friends list
PHPBB3-16383
2020-02-28 00:21:08 +05:30
Dark❶
255c79a8f7 [ticket/16370] Add core events for Notification
PHPBB3-16370
2020-02-28 00:19:10 +05:30
Dark❶
6f0f366780 [ticket/16381] Add core event to Modify Topics SQL
PHPBB3-16381
2020-02-28 00:14:47 +05:30
Dark❶
1e607a8041 [ticket/16384] Add template events friends list username {prepend/append}
PHPBB3-16384
2020-02-27 22:00:02 +05:30
Dark❶
f6e9e043d8 [ticket/16383] Add core events to modify friends list
PHPBB3-16383
2020-02-27 21:38:48 +05:30
Dark❶
081d16d907 [ticket/16381] Add core event to Modify Topics SQL
PHPBB3-16381
2020-02-27 21:14:30 +05:30
Dark❶
5f4522e55b [ticket/16370] Add core events for Notification
PHPBB3-16370
2020-02-21 12:22:26 +05:30
Marc Alexander
5ce1e1e7df Merge pull request #5849 from rubencm/ticket/16351
[ticket/16351] Use CHMOD constants from filesystem_interface
2020-02-15 16:45:57 +01:00
rubencm
2ed21c98d5 [ticket/16351] Update commends
PHPBB3-16351
2020-02-14 13:11:44 +00:00
Marc Alexander
486413731a Merge pull request #5854 from mrgoldy/ticket/16344
[ticket/16344] Move DOMAIN_NO_MX_RECORD_EMAIL to common.php
2020-02-14 07:32:15 +01:00
Marc Alexander
7735f22562 Merge pull request #5853 from mrgoldy/ticket/16060
[ticket/16060] Correct auto prune column for cron job
2020-02-14 07:31:19 +01:00
Marc Alexander
d75952394f Merge pull request #5852 from mrgoldy/ticket/16348
[ticket/16348] Prevent double freeing database results on user_ban
2020-02-14 07:30:27 +01:00
Marc Alexander
b6a320503e Merge pull request #5850 from rubencm/ticket/16352
[ticket/16352] Deprecate a few functions/classes
2020-02-14 07:11:12 +01:00
Marc Alexander
b4ecdae8e4 Merge pull request #5848 from rubencm/ticket/16350
[ticket/16350] Move shared code to functions_admin.php
2020-02-14 07:06:31 +01:00
Marc Alexander
e1ee0dfec1 Merge pull request #5840 from Kidounet/ticket/15395
[ticket/15395] change GIN tsvector indexes in Postgres Fulltext Search
2020-02-14 07:04:53 +01:00
Marc Alexander
8fcb5dcc4d Merge pull request #5815 from KYPREO/ticket/16234
[ticket/16234] Fix & enhance Sphinx search backend functionality
2020-02-14 07:00:48 +01:00
KYPREO
a4855decb8 [ticket/16234] Fix & enhance Sphinx search backend functionality
PHPBB3-16234
PHPBB3-16233
PHPBB3-15367
PHPBB3-13958
2020-02-12 22:29:17 +11:00
KYPREO
852959cf2b [ticket/16234] Fix & enhance Sphinx search backend functionality
PHPBB3-16234
PHPBB3-16233
PHPBB3-15367
PHPBB3-13958
2020-02-12 16:42:53 +11:00
Marc Alexander
11f2c076f6 Merge pull request #5858 from mrgoldy/ticket/16335
[ticket/16335] Ensure attachment event variables are always defined
2020-02-11 17:05:29 +01:00
Marc Alexander
1af967b00e Merge pull request #5842 from kasimi/ticket/16149
[ticket/16149] Always return default profile field data
2020-02-09 16:29:24 +01:00
Kidounet
a29d2e1149 [ticket/15395] change GIN tsvector indexes in Postgres Fulltext Search
PHPBB3-15395
2020-02-09 13:11:18 +01:00
Marc Alexander
ee2a59ad59 Merge pull request #5838 from 3D-I/ticket/16339
[ticket/16339] Fix Poll's voting options refresh
2020-02-09 12:49:01 +01:00
Marc Alexander
ee33976d1d Merge pull request #5835 from mrgoldy/ticket/15766
[ticket/15766] Check for role on changing permission settings
2020-02-09 12:24:00 +01:00
mrgoldy
76cca33525 [ticket/16335] Ensure event variables are always defined
PHPBB3-16335
2020-02-05 15:24:40 +01:00
mrgoldy
8bdc3940b1 [ticket/16358] Do not change plupload.html
PHPBB3-16358
2020-02-05 15:20:30 +01:00
mrgoldy
31cbb60a38 [ticket/16358] Hide attachment tab with no filters and display ACP notice
PHPBB3-16358
2020-02-05 13:03:01 +01:00
mrgoldy
582919804a [ticket/16356] Delete attachments on saving a draft
PHPBB3-16356
2020-02-05 11:04:01 +01:00
mrgoldy
eaa597a430 [ticket/10506] Preserve attachments on not-saving PM draft
PHPBB3-10506
2020-02-05 10:54:49 +01:00
mrgoldy
a6c5def4f4 [ticket/16344] Un-indent irrelevant language strings
PHPBB3-16344
2020-02-04 22:32:10 +01:00
mrgoldy
13f5997554 [ticket/16344] Move DOMAIN_NO_MX_RECORD_EMAIL to common.php
PHPBB3-16344
2020-02-04 19:16:43 +01:00
mrgoldy
846df59882 [ticket/16344] Add UCP language to memberlist's contact form
PHPBB3-16344
2020-02-04 18:39:23 +01:00
mrgoldy
2d2c0ab6cd [ticket/16060] Correct auto prune column for cron job
Also only log pruning once per forum

PHPBB3-16060
2020-02-04 17:58:28 +01:00
mrgoldy
5625078cfe [ticket/16348] Prevent double freeing database results on user_ban
PHPBB3-16348
2020-02-04 17:16:10 +01:00
rubencm
9e7dc9433a [ticket/16350] Move code to functions_admin
PHPBB3-16350
2020-02-04 06:33:11 +00:00
mrgoldy
87fe2847f0 [ticket/15766] Docblocks, comments and longhand variable names
PHPBB3-15766
2020-02-03 22:42:42 +01:00
rubencm
b07fb709ba [ticket/16352] Remove duplicated function
PHPBB3-16352
2020-02-03 02:24:56 +00:00
rubencm
96a7e04ea5 [ticket/16352] Deprecate phpbb_delete_user_pms
PHPBB3-16352
2020-02-03 02:20:35 +00:00
rubencm
2fea7969d3 [ticket/16352] Deprecate more functions
PHPBB3-16352
2020-02-03 01:44:02 +00:00
rubencm
d668f3a3c3 [ticket/16352] Deprecate a few function/classes
PHPBB3-16352
2020-02-03 00:44:44 +00:00
rubencm
9749aa936c [ticket/16351] Use CHMOD constants from filesystem_interface
PHPBB3-16351
2020-02-02 22:00:38 +00:00
rubencm
e2cc1aec26 [ticket/16350] Move shared code to functions.php
PHPBB3-16350
2020-02-02 21:45:08 +00:00
Marc Alexander
7de24bad2e Merge pull request #5832 from KYPREO/ticket/16329
[ticket/16329] Add configuration options for Plupload
2020-02-01 08:50:12 +01:00
Marc Alexander
e61761e9af Merge pull request #5834 from mrgoldy/ticket/15370
[ticket/15370] Loading indicator when submitting permissions
2020-01-30 21:16:37 +01:00
KYPREO
c927c31391 [ticket/16329] Add configuration options for Plupload
PHPBB3-16329
PHPBB3-16330
2020-01-28 23:57:31 +11:00
kasimi
9d5f9606a4 [ticket/16149] Always return default profile field data
PHPBB3-16149
2020-01-27 15:37:12 +01:00
Marc Alexander
ceaf6fcffe Merge pull request #5837 from 3D-I/ticket/16337
[ticket/16337] Fix Emoji in BBcode Helpline
2020-01-25 15:35:29 +01:00
3D-I
e72ae0a4b2 [ticket/16339] Fix Poll's voting options refresh
PHPBB3-16339
2020-01-25 02:11:40 +01:00
Marc Alexander
65cfd74b98 Merge pull request #5836 from 3D-I/ticket/16316
[ticket/16316] Fix breadcrumbs markup validation
2020-01-24 16:34:44 +01:00
3D-I
11e2cd925b [ticket/16337] Fix Emoji in BBcode Helpline
PHPBB3-16337
2020-01-24 04:46:57 +01:00
3D-I
f7797b89ed [ticket/16337] Fix Emoji in BBcode Helpline
PHPBB3-16337
2020-01-24 04:38:01 +01:00
3D-I
7d80314235 [ticket/16337] Fix Emoji in BBcode Helpline
PHPBB3-16337
2020-01-24 02:55:12 +01:00
3D-I
3d9845ebed [ticket/16316] Fix breadcrumbs markup validation
PHPBB3-16316
2020-01-24 00:21:50 +01:00
Marc Alexander
eff3b08d49 Merge pull request #5833 from mrgoldy/ticket/16332
[ticket/16332] Code and Quote language strings globally available
2020-01-22 21:21:01 +01:00
KYPREO
1f22248965 Merge branch '3.2.x' into ticket/16329 2020-01-22 20:24:47 +11:00
KYPREO
68677b8525 [ticket/16329] Add configuration options for Plupload
PHPBB3-16329
PHPBB3-16330
2020-01-22 20:21:12 +11:00
3D-I
8e538eebc5 [ticket/16316] Fix breadcrumbs markup validation
PHPBB3-16316
2020-01-21 22:48:20 +01:00
mrgoldy
5bc7723feb [ticket/16332] Amend formatting tests to expect translated code string
PHPBB3-16332
2020-01-21 17:43:11 +01:00
mrgoldy
18e75202d7 [ticket/15766] Use proper variable name for permission set
PHPBB3-15766
2020-01-21 17:27:03 +01:00
mrgoldy
11cf09b41a [ticket/15766] Check for role on changing permission settings
PHPBB3-15766
2020-01-21 17:25:27 +01:00
mrgoldy
908d04d0e8 [ticket/15370] Loading indicator when submitting permissions
PHPBB3-15370
2020-01-21 15:27:28 +01:00
mrgoldy
e7c028eed6 [ticket/16332] Code and Quote language strings globally available
PHPBB3-16332
2020-01-21 14:30:12 +01:00
Marc Alexander
d7be6e037b Merge pull request #5814 from 3D-I/ticket/15079
[ticket/15079] Fix Emoji and rich text in subject of post draft
2020-01-20 17:28:24 +01:00
Marc Alexander
830d16943b Merge pull request #5813 from 3D-I/ticket/15712
[ticket/15712] Fix Emoji and rich text in PM subject & draft
2020-01-20 17:25:48 +01:00
KYPREO
0b03fa963a [ticket/16329] Add configuration options for Plupload
PHPBB3-16329
PHPBB3-16330
2020-01-20 22:16:38 +11:00
KYPREO
a1617548cf [ticket/16329] Add configuration options for Plupload
PHPBB3-16329
PHPBB3-16330
2020-01-20 15:19:56 +11:00
Marc Alexander
880deabac1 Merge pull request #5821 from marc1706/ticket/16296
[ticket/16296] Adjust form token check for mark actions
2020-01-18 21:46:07 +01:00
Marc Alexander
7f4badc947 Merge pull request #5830 from marc1706/ticket/16328
[ticket/16328] Inform admins about PHP requirements in phpBB 3.3
2020-01-18 16:46:48 +01:00
Marc Alexander
bb5cf54e61 [ticket/16328] Inform admins about PHP requirements in phpBB 3.3
PHPBB3-16328
2020-01-18 14:03:27 +01:00
Marc Alexander
21f0a2b1b8 Merge pull request #5819 from mrgoldy/ticket/16291
[ticket/16291] Add missing report time
2020-01-13 17:45:00 +01:00
Marc Alexander
11d7b71959 [ticket/16296] Adjust form token check for mark actions
PHPBB3-16296
2020-01-07 20:26:56 +01:00
mrgoldy
c747d1d225 [ticket/16291] Add missing report time
PHPBB3-16291
2020-01-05 16:01:37 +01:00
Marc Alexander
ed9cbc89c1 Merge branch 'prep-release-3.2.9' into 3.2.x 2020-01-04 14:19:57 +01:00
Marc Alexander
2fdd46b364 [prep-release-3.2.9] Update changelog for 3.2.9 2020-01-04 11:32:26 +01:00
Marc Alexander
4f39da4343 [prep-release-3.2.9] Add migration for 3.2.9 2020-01-04 10:17:57 +01:00
Marc Alexander
a2a0038368 [prep-release-3.2.9] Update version numbers for 3.2.9 2020-01-04 10:16:06 +01:00
KYPREO
22417e3d9c [ticket/16234] Fix & enhance Sphinx search backend functionality
PHPBB3-16234
PHPBB3-16233
PHPBB3-15367
PHPBB3-13958
2020-01-04 04:15:10 +11:00
KYPREO
4fb9c1cd98 [ticket/16234] Fix & enhance Sphinx search backend functionality
PHPBB3-16234
PHPBB3-16233
PHPBB3-15367
PHPBB3-13958
2020-01-04 03:36:35 +11:00
Marc Alexander
cb833db5fb Merge pull request #56 from phpbb/ticket/security-250
[ticket/security-250] Check form key when approving group membership
2020-01-03 17:25:12 +01:00
Marc Alexander
4f007321e1 [ticket/security-250] Check form key when approving group membership
SECURITY-250
2020-01-03 17:24:33 +01:00
Marc Alexander
3aa4b67173 Merge pull request #57 from phpbb/ticket/security-251
[ticket/security-251] Check form token when moving PM to folder
2020-01-03 17:22:43 +01:00
Marc Alexander
25c80df156 [ticket/security-252] Check form token on marking PM
SECURITY-252
2020-01-03 17:21:42 +01:00
Marc Alexander
e7a6ed20e8 [ticket/security-251] Check form token when moving PM to folder
SECURITY-251
2020-01-03 17:21:35 +01:00
Marc Alexander
502407a1dd Merge pull request #58 from phpbb/ticket/security-253
[ticket/security-253] Check form key when exporting PM data
2020-01-03 17:19:06 +01:00
Marc Alexander
03757a0663 Merge pull request #59 from phpbb/ticket/security-249
[ticket/security-249] Do not handle avatar submit on invalid token
2020-01-03 17:18:54 +01:00
KYPREO
f0f1cd37dd Merge branch '3.2.x' into ticket/16234 2020-01-04 01:13:41 +11:00
KYPREO
83ccccb565 [ticket/16234] Fix & enhance Sphinx search backend functionality
PHPBB3-16234
PHPBB3-16233
PHPBB3-15367
PHPBB3-13958
2020-01-04 00:29:24 +11:00
3D-I
f0ebd6da0f [ticket/15712] Add Emoji and rich text in PM Draft subject
Extends to Drafts

PHPBB3-15712
2020-01-03 00:06:15 +01:00
3D-I
9f033cbf6d [ticket/15079] Fix Emoji and rich text in Draft subject
User can save Emoji in drafts since the topic title
is checked on post submission already.
Moreover this way the draft can not be lost somehow.

PHPBB3-15079
2020-01-02 21:41:36 +01:00
3D-I
0f3dbe1a30 [ticket/15079] Fix Emoji and rich text in Draft subject
PHPBB3-15079
2020-01-02 20:35:48 +01:00
3D-I
b0586b4f4d [ticket/15712] Add Emoji and rich text in PM subject
PHPBB3-15712
2020-01-02 20:09:32 +01:00
Marc Alexander
fcca5c5b58 Merge branch 'prep-release-3.2.9' into 3.2.x 2020-01-02 10:13:04 +01:00
Marc Alexander
36c370947c Merge branch 'ticket/16279' into prep-release-3.2.9 2020-01-02 10:02:17 +01:00
3D-I
fa099867a8 [ticket/16279] Add permission for Emoji in topic title
PHPBB3-16279
2020-01-02 10:02:01 +01:00
3D-I
88277e2d21 [ticket/16279] Add permission for Emoji in topic title
PHPBB3-16279
2020-01-02 10:01:55 +01:00
3D-I
48eb74cfcd [ticket/16279] Add permission for Emoji in topic title
PHPBB3-16279
2020-01-02 10:01:48 +01:00
Marc Alexander
bf58fafd76 Merge branch 'prep-release-3.2.9' into 3.2.x 2020-01-01 17:33:39 +01:00
Marc Alexander
693d008851 Merge pull request #5803 from marc1706/ticket/16282
[ticket/16282] Adjust jQuery cdn url in schema_data
2020-01-01 17:33:07 +01:00
Marc Alexander
53b3b1bb40 Merge branch 'prep-release-3.2.9' into 3.2.x 2020-01-01 17:27:31 +01:00
Marc Alexander
97e9357153 Merge branch 'ticket/15592' into prep-release-3.2.9 2020-01-01 17:26:38 +01:00
Marc Alexander
706a10d4cf Merge pull request #5792 from KYPREO/ticket/16269
[ticket/16269] Strip HTML markup from Sphinx search index
2020-01-01 17:26:10 +01:00
Alfredo Ramos
ec694bf8bd [ticket/15592] Fix attachments place inline button if BBCode is disabled
PHPBB3-15592
2020-01-01 17:24:57 +01:00
Marc Alexander
cfdc1ef62a Merge pull request #5799 from AlfredoRamos/ticket/15592
[ticket/15592] Fix attachments place inline button if BBCode is disabled
2020-01-01 16:47:34 +01:00
Marc Alexander
803ed6050f [ticket/16282] Adjust jQuery cdn url in schema_data
PHPBB3-16282
2019-12-31 16:40:20 +01:00
Marc Alexander
5aba63d5aa Merge pull request #5792 from KYPREO/ticket/16269
[ticket/16269] Strip HTML markup from Sphinx search index
2019-12-30 12:18:52 +01:00
Alfredo Ramos
580126cff3 [ticket/15592] Fix attachments place inline button if BBCode is disabled
PHPBB3-15592
2019-12-29 11:58:38 -06:00
Marc Alexander
3e5090e792 Merge pull request #5791 from marc1706/ticket/16271
[ticket/16271] Enable support for 3.3.x API documentation
2019-12-27 08:28:10 +01:00
KYPREO
48d038ead4 [ticket/16269] Strip HTML markup from Sphinx search index
PHPBB3-16269
2019-12-27 09:45:45 +11:00
Marc Alexander
8bcff3ac74 [ticket/16271] Enable support for 3.3.x API documentation
PHPBB3-16271
2019-12-26 23:00:29 +01:00
Marc Alexander
6320da67e4 [ticket/security-249] Do not handle avatar submit on invalid token
SECURITY-249
2019-12-26 15:05:53 +01:00
Marc Alexander
c44c398626 [ticket/security-253] Check form key when exporting PM data
SECURITY-253
2019-12-26 14:59:14 +01:00
Marc Alexander
790e77de01 [3.2.x] Update version numbers to 3.2.10-dev 2019-12-26 11:32:36 +01:00
Marc Alexander
7286532656 Merge branch 'prep-release-3.2.9' into 3.2.x 2019-12-26 11:31:00 +01:00
Marc Alexander
7d90f84306 [prep-release-3.2.9] Add changelog for 3.2.9-RC1 2019-12-25 17:57:31 +01:00
Marc Alexander
3e4f18bed2 [prep-release-3.2.9] Update composer dependencies to latest 2019-12-25 17:56:09 +01:00
Marc Alexander
e31da34324 [prep-release-3.2.9] Add migration for 3.2.9-RC1 2019-12-25 17:55:06 +01:00
Marc Alexander
6c85564cc1 [prep-release-3.2.9] Update version numbers to 3.2.9 2019-12-25 17:53:09 +01:00
Marc Alexander
8cfe6a900c [prep-release-3.2.9] Update version number to 3.2.9-RC1 2019-12-25 17:52:25 +01:00
Marc Alexander
4e2e36df60 Merge pull request #5564 from xchwarze/PHPBB3-16015
[ticket/16015] Add new hook core.ucp_profile_avatar_upload_validation
2019-12-25 17:40:54 +01:00
Marc Alexander
4bee15d0fa [ticket/16015] Adjust since version
PHPBB3-16015
2019-12-25 14:36:33 +01:00
Marc Alexander
e880d2c12a Merge pull request #5786 from marc1706/ticket/16209
[ticket/16209] Match exactly "phpbb" in nginx example configuration file
2019-12-24 22:58:07 +01:00
Marc Alexander
8fe5063a35 Merge pull request #5784 from 3D-I/ticket/15902
[ticket/15902] Out of range error with Sphinx search
2019-12-24 16:20:04 +01:00
Marc Alexander
91a60f871a Merge pull request #5785 from 3D-I/ticket/16257
[ticket/16257] Typo in SMTP_SERVER_EXPLAIN
2019-12-24 16:15:02 +01:00
Alfredo Ramos
225c313bb3 [ticket/16209] Match exactly "phpbb" in nginx example configuration file
It blocks an image in the ACP.

PHPBB3-16209
2019-12-24 15:55:53 +01:00
3D-I
abc6e9a7bc [ticket/16257] Typo in SMTP_SERVER_EXPLAIN
PHPBB3-16257
2019-12-24 05:24:29 +01:00
3D-I
16070b5543 [ticket/15902] Out of range error with Sphinx search
Add missing modification.

PHPBB3-15902
2019-12-24 00:34:27 +01:00
3D-I
0afd410ae7 [ticket/15902] Out of range error with Sphinx search
The reporter he's waiting this fix to be in the core.
I created this PR based on trusting his report.
I can't test it.

PHPBB3-15902
2019-12-23 21:36:13 +01:00
Marc Alexander
1a9ab15f26 Merge pull request #5777 from KYPREO/ticket/16258
[ticket/16258] Fix sample Sphinx configuration file
2019-12-21 10:25:51 +01:00
KYPREO
d4681145dc [ticket/16258] Fix sample Sphinx configuration file
PHPBB3-16258
2019-12-17 21:01:06 +11:00
Marc Alexander
4b890cff12 Merge pull request #5765 from marc1706/ticket/16224
[ticket/16224] Update composer dependencies - 3.2.x version
2019-12-13 20:16:13 +01:00
Marc Alexander
4b376de3bf Merge pull request #5771 from JoshyPHP/ticket/16251
[ticket/16251] Prevent shortened links from overriding other plugins
2019-12-12 18:20:49 +01:00
Marc Alexander
4a950750f4 Merge pull request #5772 from JoshyPHP/ticket/16252
[ticket/16252] Ignore non-BBCodes when looking for unauthorized markup
2019-12-12 18:16:55 +01:00
Marc Alexander
e584ce4010 [ticket/16224] Update fast-image-size to 1.1.6
PHPBB3-16224
2019-12-12 18:02:38 +01:00
JoshyPHP
5813b5fbee [ticket/16252] Ignore non-BBCodes when looking for unauthorized markup
PHPBB3-16252
2019-12-09 18:06:30 +01:00
JoshyPHP
6758190afd [ticket/16251] Prevent shortened links from overriding other plugins
PHPBB3-16251
2019-12-09 02:16:01 +01:00
Marc Alexander
1f00e160ab Merge pull request #5737 from marc1706/ticket/16211
[ticket/16211] Prevent skipping COPPA via URL parameter
2019-12-06 07:20:30 +01:00
Marc Alexander
41918b8afa Merge pull request #5768 from 3D-I/ticket/16247
[ticket/16247] Quote PM has no identifier
2019-12-06 07:03:30 +01:00
3D-I
e6c45623ea [ticket/16247] Quote PM has no identifier
Code review

PHPBB3-16247
2019-12-05 23:42:12 +01:00
3D-I
8c42a9d900 [ticket/16247] Code consistency
PHPBB3-16247
2019-12-05 11:58:05 +01:00
3D-I
17f8134a3b [ticket/16247] Add test not tested
PHPBB3-16247
2019-12-05 10:33:02 +01:00
3D-I
d3749538f1 [ticket/16247] Quote PM has no identifier
PHPBB3-16247
2019-12-05 10:15:54 +01:00
Marc Alexander
3002cee42a Merge pull request #5761 from AlfredoRamos/ticket/16242
[ticket/16242] Fix nginx redirection loop
2019-12-04 21:11:35 +01:00
Marc Alexander
6be6b69110 Merge pull request #5764 from VSEphpbb/ticket/16246
[ticket/16246] Update automated testing section of Readme
2019-12-04 20:49:06 +01:00
Marc Alexander
37ccd29558 [ticket/16224] Update composer dependencies
PHPBB3-16224
2019-12-04 20:31:28 +01:00
Marc Alexander
55c493cd7d [ticket/16224] Update composer to 1.9.1
PHPBB3-16224
2019-12-04 20:31:15 +01:00
Matt Friedman
1056cd9ca2 [ticket/16246] Update automated testing section of Readme
PHPBB3-16246
2019-12-03 22:21:11 -08:00
Alfredo Ramos
9c980256bf [ticket/16242] Fix nginx redirection loop
PHPBB3-16242
2019-12-03 01:43:44 -06:00
Marc Alexander
d48e0f7f13 Merge pull request #5730 from 3D-I/ticket/16203
[ticket/16203] Enable Emojis and rich text in sent Emails
2019-11-28 21:39:40 +01:00
Marc Alexander
03e15166c7 Merge pull request #5747 from JoshyPHP/ticket/16228
[ticket/16228] Fix BBCodes merging
2019-11-28 21:11:43 +01:00
Marc Alexander
c7ed162a06 [ticket/16211] Fix coppa registration test
PHPBB3-16211
2019-11-28 07:39:51 +01:00
Marc Alexander
417271f573 [ticket/16211] Use form to ensure link data is passed on coppa registration
PHPBB3-16211
2019-11-27 22:01:26 +01:00
JoshyPHP
d6f5b5ef6c [ticket/16228] Fix BBCodes merging
PHPBB3-16228
2019-11-25 18:34:04 +01:00
Marc Alexander
bf96786cda Merge pull request #5741 from marc1706/ticket/16217
[ticket/16217] Enable opcache on travis tests again
2019-11-22 19:15:03 +01:00
Marc Alexander
db83419ea3 [ticket/16217] Enable opcache on travis tests again
PHPBB3-16217
2019-11-22 18:27:42 +01:00
Marc Alexander
b8e86975a4 Merge pull request #5740 from marc1706/ticket/16216
[ticket/16216] Disable xdebug on travis
2019-11-22 18:21:02 +01:00
Marc Alexander
c435c55657 [ticket/16216] Disable xdebug on travis
PHPBB3-16216
2019-11-22 16:02:50 +01:00
Marc Alexander
7b428641f0 [ticket/16211] Prevent skipping COPPA via URL parameter
PHPBB3-16211
2019-11-14 21:32:50 +01:00
Marc Alexander
0641c209d7 Merge pull request #5736 from marc1706/ticket/16210
[ticket/16210] Ensure terms of use is not skipped by enforcing form token
2019-11-14 20:39:57 +01:00
Marc Alexander
dba351702d [ticket/16210] Ensure terms of use is not skipped by enforcing form token
PHPBB3-16210
2019-11-12 21:47:41 +01:00
Marc Alexander
04204c7ec6 Merge pull request #5729 from rxu/ticket/16199
[ticket/16199] Init guest posting CAPTCHA only if guest posting is allowed
2019-11-07 21:19:11 +01:00
3D-I
79bc1ba9ce [ticket/16203] Enable Emojis and rich text in sent Emails
PHPBB3-16203
2019-11-06 00:56:44 +01:00
rxu
0a8b2eb58e [ticket/16199] Init guest posting CAPTCHA only if guest posting is allowed
PHPBB3-16199
2019-11-05 20:51:21 +07:00
Marc Alexander
51f0c16b5f Merge pull request #5685 from 3D-I/ticket/16153
[ticket/16153] Enable Emojis and rich text in Topic title
2019-11-01 22:12:24 +01:00
3D-I
ff25d0a508 [ticket/16153] Enable Emojis and rich text in Topic title
PHPBB3-16153
2019-10-30 14:47:10 +01:00
3D-I
c569d0dabc [ticket/16153] Use new function
PHPBB3-16153
2019-10-28 21:16:54 +01:00
3D-I
d136a8a907 Merge branch '3.2.x' into ticket/16153 2019-10-28 21:11:42 +01:00
Marc Alexander
e95e387188 Merge pull request #5709 from mrgoldy/ticket/16181
[ticket/16181] Enforce string for OAuth provider id
2019-10-28 20:32:03 +01:00
Marc Alexander
c0eee6d153 Merge pull request #5682 from 3D-I/ticket/16151
[ticket/16151] Enable Emojis and rich text in forum name
2019-10-28 20:22:52 +01:00
Marc Alexander
1b20430399 Merge pull request #5672 from OxCom/ticket/16146
[ticket/16146] New core event: after move forum
2019-10-28 19:49:55 +01:00
3D-I
2cdc2e751e [ticket/16151] Enable Emojis and rich text in forum name
Move to a new function()

PHPBB3-16151
2019-10-28 02:36:35 +01:00
Marc Alexander
28fd9457e9 Merge pull request #5695 from 3D-I/ticket/16161
[ticket/16161] Enable BBcodes without closing tag
2019-10-26 21:50:43 +02:00
Marc Alexander
6a7ed40b05 Merge pull request #5681 from v12mike/ticket/16150
[ticket/16150] Make post subject link an absolute url
2019-10-26 21:35:32 +02:00
Marc Alexander
4e816b58c6 [ticket/16146] Fix typos in event description
PHPBB3-16146
2019-10-26 21:26:00 +02:00
Marc Alexander
fa18778c91 Merge pull request #5711 from kasimi/ticket/16183
[ticket/16183] Add core.generate_smilies_count_sql_before
2019-10-21 17:51:23 +02:00
Marc Alexander
6e757eea94 Merge pull request #5674 from JoshyPHP/ticket/16147
[ticket/16147] Updated tokens legend in BBCodes ACP
2019-10-21 17:48:41 +02:00
Marc Alexander
23fd522dbb Merge pull request #5704 from senky/ticket/16172
[ticket/16172] Add group rank label to group view
2019-10-20 21:06:53 +02:00
Marc Alexander
f0bf54f9eb Merge pull request #5703 from senky/ticket/16174
[ticket/16174] Add core.set_cookie
2019-10-20 21:01:39 +02:00
Marc Alexander
4e3b22b332 Merge pull request #5667 from EA117/ticket/16141
[ticket/16141] plupload chunk_size incorrect when 'unlimited' is involved.
2019-10-20 20:59:01 +02:00
Marc Alexander
801214f0ee Merge pull request #5705 from senky/ticket/16140
[ticket/16140] Add ucp_profile_profile_info_birthday_label_append
2019-10-20 20:57:31 +02:00
Marc Alexander
ebdb38857c [ticket/16181] Fix typo in comment
PHPBB3-16181
2019-10-20 20:54:39 +02:00
Marc Alexander
cbbc64a54f Merge pull request #5710 from kasimi/ticket/16182
[ticket/16182] Add core.generate_smilies_modify_rowset
2019-10-20 20:51:21 +02:00
kasimi
6df8b7f367 [ticket/16183] Generate SQL query from array
PHPBB3-16183
2019-10-20 20:50:34 +02:00
Marc Alexander
90d425478b Merge pull request #5715 from marc1706/ticket/16078
[ticket/16078] Try using retries for timeout issue
2019-10-20 20:39:07 +02:00
Marc Alexander
6b6a24ffb3 Merge pull request #5712 from kasimi/ticket/16184
[ticket/16184] Don't entity-encode & character in AJAX response
2019-10-20 17:18:12 +02:00
Marc Alexander
8b6776eed2 [ticket/16078] Use while loop for visit retries
PHPBB3-16078
2019-10-20 15:51:47 +02:00
Marc Alexander
1ba0ae6e85 [ticket/16078] Try using retries for timeout issue
The timeout only seems to occur on the first test so let's see what a
retry can do to help with this issue.

PHPBB3-16078
2019-10-19 17:48:34 +02:00
Marc Alexander
6eb0041453 [ticket/16141] Add assertion for memory limit divided by two
PHPBB3-16141
2019-10-19 17:35:25 +02:00
Marc Alexander
b149e50bf1 [ticket/16141] Add tests for plupload's get_chunk_size()
PHPBB3-16141
2019-10-19 16:11:22 +02:00
kasimi
fed05012c0 [ticket/16184] Don't entity-encode & character in AJAX response
PHPBB3-16184
2019-10-17 13:11:29 +02:00
kasimi
84e0f5a2eb [ticket/16183] Add core.generate_smilies_count_sql_before
PHPBB3-16183
2019-10-17 12:54:42 +02:00
kasimi
ab7345d96d [ticket/16182] Add core.generate_smilies_modify_rowset
PHPBB3-16182
2019-10-17 12:49:30 +02:00
mrgoldy
29957a92ef [ticket/16181] Fix spelling mistake in associated
PHPBB3-16181
2019-10-08 20:19:46 +02:00
mrgoldy
1f669a31a0 [ticket/16181] Enforce string data type
PHPBB3-16181
2019-10-08 20:12:24 +02:00
Jakub Senko
7df6e137f1 [ticket/16140] Use twig
PHPBB3-16140
2019-10-08 09:38:40 +02:00
Jakub Senko
dcf733a1e7 [ticket/16172] Use twig
PHPBB3-16172
2019-10-08 09:37:47 +02:00
Jakub Senko
1aaeb2bca9 [ticket/16174] Improve event desc
PHPBB3-16174
2019-10-08 09:29:22 +02:00
Marc Alexander
c75c13e555 Merge pull request #5671 from 3D-I/ticket/16144
[ticket/16144] Fallback to board's default style
2019-10-07 21:31:42 +02:00
Marc Alexander
4ce8604700 Merge pull request #5706 from senky/ticket/16083
[ticket/16083] Remove common W3C validation errors and warnings
2019-10-07 20:55:21 +02:00
Jakub Senko
281d5435bd [ticket/16172] Only display the label when rank image is not present
PHPBB3-16172
2019-10-07 13:55:18 +02:00
Jakub Senko
9270cca8c2 [ticket/16140] Rename event to ucp_profile_profile_info_birthday_label_append
PHPBB3-16140
2019-10-07 13:49:33 +02:00
Jakub Senko
367b0bc208 [ticket/16174] Add function params to the event
PHPBB3-16174
2019-10-07 13:47:02 +02:00
Jakub Senko
fb7498617c [ticket/16083] Remove "defer" from inline scripts
PHPBB3-16083
2019-10-07 13:44:38 +02:00
Jakub Senko
d9a773cb62 [ticket/16083] Add role=menu
PHPBB3-16083
2019-10-04 16:00:58 +02:00
Jakub Senko
6b85faf7da [ticket/16174] Add core.set_cookie
PHPBB3-16174
2019-10-04 15:46:11 +02:00
Jakub Senko
94653b565f [ticket/16083] Add itemscope
PHPBB3-16083
2019-10-04 15:41:36 +02:00
Jakub Senko
5c73f471f5 [ticket/16083] Remove type=text/javascript
PHPBB3-16083
2019-10-04 15:39:54 +02:00
Jakub Senko
6c71f30723 [ticket/16140] Add ucp_profile_profile_info_birthday_label_after
PHPBB3-16140
2019-10-04 14:30:46 +02:00
Jakub Senko
a34334b74e [ticket/16172] Add group rank label to group view
PHPBB3-16172
2019-10-04 14:19:45 +02:00
3D-I
a84e4b5ab4 [ticket/16144] Provide extra fallback to board's default style for $user
PHPBB3-16144
2019-09-23 18:55:58 +02:00
Marc Alexander
9217b85c68 Merge pull request #5678 from rxu/ticket/16148
[ticket/16148] Add template events to acp_groups.html
2019-09-23 17:37:13 +02:00
Marc Alexander
4ddd3511de Merge pull request #5677 from mrgoldy/ticket/14815
[ticket/14815] Enable contact links in memberlist
2019-09-22 21:16:37 +02:00
Marc Alexander
16941ff495 Merge pull request #5676 from mrgoldy/ticket/15422
[ticket/15422] Remove redundant BBCode helpline
2019-09-22 21:04:36 +02:00
3D-I
942bfd6506 [ticket/16144] As per request
PHPBB3-16144
2019-09-22 20:12:08 +02:00
Marc Alexander
70044669e0 Merge pull request #5665 from 3D-I/ticket/16139
[ticket/16139] Add core.viewtopic_modify_quick_reply_template_vars
2019-09-22 16:59:04 +02:00
Marc Alexander
344b603f42 Merge pull request #5669 from OxCom/ticket/16143
[ticket/16143] Add new events before and after move topics
2019-09-22 16:54:48 +02:00
Marc Alexander
a4edb41e3f Merge pull request #5664 from mrgoldy/ticket/16076
[ticket/16076] addFileFilter to check max file size per mime type
2019-09-22 13:02:19 +02:00
Marc Alexander
53aa79cd29 Merge pull request #5673 from AlfredoRamos/ticket/15643
[ticket/15643] Fix open_basedir warnings
2019-09-22 12:05:01 +02:00
mrgoldy
c9284e1c68 [ticket/16076] camelCase and callback
PHPBB3-16076
2019-09-22 12:04:10 +02:00
3D-I
813a55b01d [ticket/16161] Enable BBcodes without closing tag
PHPBB3-16161
2019-09-22 05:59:02 +02:00
Marc Alexander
0b2a0cc9b4 Merge pull request #5687 from rxu/ticket/16157
[ticket/16157] Fix FORM_INVALID error in the sending email form
2019-09-21 14:33:20 +02:00
Marc Alexander
680acb45e2 Merge pull request #5688 from rxu/ticket/16156
[ticket/16156] Fix bots seeing register and logout links
2019-09-21 14:29:13 +02:00
Marc Alexander
84decb2875 Merge pull request #5692 from stevendegroote/ticket/16159
[ticket/16159] Wrap post times in html time tag
2019-09-21 14:17:11 +02:00
Marc Alexander
c9c7df735c Merge pull request #5693 from marc1706/ticket/16160
[ticket/16160] Add script for generating package json file
2019-09-21 14:11:46 +02:00
Marc Alexander
4e285db71a [ticket/16160] Add missing trailing slash
PHPBB3-16160
2019-09-21 07:51:35 +02:00
Marc Alexander
f0afccb173 Merge branch 'prep-release-3.2.8' into 3.2.x 2019-09-20 22:21:47 +02:00
Marc Alexander
d1822e821a [ticket/16160] Make script compatible with PHP 5.x
PHPBB3-16160
2019-09-19 21:56:41 +02:00
Marc Alexander
28ff362ec0 [ticket/16160] Add script for generating package json file
PHPBB3-16160
2019-09-18 21:49:07 +02:00
stevendegroote
8160a8a1ef [ticket/16159] Use predefined DATE_RFC3339
PHPBB3-16159
2019-09-18 20:58:13 +02:00
stevendegroote
f8967fec78 Merge branch '3.2.x' into ticket/16159 2019-09-17 23:15:54 +02:00
stevendegroote
ce93b22410 [ticket/16159] Wrap post times in html time tag
PHPBB3-16159
2019-09-17 23:01:59 +02:00
rxu
2ef7530857 [ticket/16156] Fix bots seeing register and logout links
PHPBB3-16156
2019-09-13 00:30:58 +07:00
rxu
177cc22683 [ticket/16157] Fix FORM_INVALID error in the sending email form
PHPBB3-16157
2019-09-13 00:25:18 +07:00
3D-I
41728f2258 [ticket/16153] Functional test 2
PHPBB3-16153
2019-09-11 03:44:36 +02:00
3D-I
bcac30c8bb [ticket/16153] Functional test
PHPBB3-16153
2019-09-11 01:46:07 +02:00
3D-I
78c1957e48 [ticket/16153] Enable Emojis and rich text in Topic title
PHPBB3-16153
2019-09-10 06:00:59 +02:00
Marc Alexander
b94464d063 [prep-release-3.2.8] Add migration for 3.2.8 2019-09-08 21:53:52 +02:00
Marc Alexander
08842e6ba5 [prep-release-3.2.8] Update version numbers for 3.2.8 release 2019-09-08 21:52:42 +02:00
Marc Alexander
ae00da85ec [prep-release-3.2.8] Update changelog for 3.2.8 2019-09-08 21:50:46 +02:00
Marc Alexander
6757450a0f [prep-release-3.2.8] Update CREDITS.txt 2019-09-08 21:42:02 +02:00
Marc Alexander
a9a44c295f Merge pull request #5679 from mrgoldy/ticket/16123
[ticket/16123] Show proper banned email message
2019-09-08 21:37:54 +02:00
v12mike
88d94a7c19 [ticket/16150] Make post subject links reliable
Change links that were relative to topic page into absolute links.
Update related test cases.

PHPBB3-16150
2019-09-08 14:23:09 -04:00
Marc Alexander
4abdfd1709 [ticket/16123] Specify ban_id in validate email fixture
PHPBB3-16123
2019-09-08 09:40:56 +02:00
3D-I
6600fc6cad [ticket/16151] Enable Emojis and rich text in forum name
PHPBB3-16151
2019-09-08 03:29:51 +02:00
Marc Alexander
d186df8cb4 [ticket/16123] Purge cache to ensure up to date ban list in tests
PHPBB3-16123
2019-09-07 21:59:17 +02:00
mrgoldy
6e20cd5d22 [ticket/16123] Remove redundant if check
PHPBB3-16123
2019-09-07 21:59:06 +02:00
Marc Alexander
cf898133a4 [ticket/16123] Add tests to cover different ban reasons
PHPBB3-16123
2019-09-07 21:59:01 +02:00
mrgoldy
56e2f1a3f6 [ticket/16123] Check with empty()
PHPBB3-16123
2019-09-07 21:58:47 +02:00
mrgoldy
850ea776d9 [ticket/16123] Show proper banned email message
PHPBB3-16123
2019-09-07 21:58:42 +02:00
v12mike
c31216e493 [ticket/16150] Make post subject link an absolute url
The previous version was relative to a &start= which was
sometimes wrong.

PHPBB3-16150
2019-09-07 04:16:31 -04:00
rxu
32accc18e7 [ticket/16148] Add template events to acp_groups.html
PHPBB3-16148
2019-09-05 19:42:40 +07:00
mrgoldy
ecf4da2df0 [ticket/14815] Enable contact links in memberlist
PHPBB3-14815
2019-09-04 15:49:12 +02:00
mrgoldy
2a32d74d20 [ticket/15422] Remove redundant BBCode helpline
PHPBB3-15422
2019-09-04 15:29:50 +02:00
JoshyPHP
6f6b8d046b [ticket/16147] Updated tokens legend in BBCodes ACP
PHPBB3-16147
2019-09-04 14:01:59 +02:00
Alfredo Ramos
2224a76c24 [ticket/15643] Fix open_basedir warnings
Suppress warnings when trying to call is_link(), is_dir() and is_file()
on the web server root directory when open_basedir is set.

PHPBB3-15643
2019-09-03 17:29:14 -05:00
oxcom
776a7302a4 [ticket/16146] fix event name in comment
PHPBB3-16146
2019-09-03 08:15:00 +02:00
Marc Alexander
954c0ddf3e Merge pull request #54 from phpbb/ticket/security/243
[ticket/security/243] Remove invalid markup from bbcode.html
2019-09-02 21:39:52 +02:00
Marc Alexander
f84cc449b9 [ticket/security/243] Remove invalid markup from bbcode.html
SECURITY-243
2019-09-02 21:18:12 +02:00
oxcom
a1e8282e67 [ticket/16146] New core event: after move forum
PHPBB3-16146
2019-09-02 14:31:07 +02:00
Marc Alexander
4db585a4cb Merge pull request #5666 from mrgoldy/ticket/16084
[ticket/16084] Remove redundant backup radio button
2019-09-01 13:33:00 +02:00
3D-I
3e23adf030 [ticket/16144] Provide extra fallback to board's default style for $user
PHPBB3-16144
2019-09-01 09:20:22 +02:00
Marc Alexander
01e64dbc9c Merge pull request #53 from phpbb/ticket/security/243
[ticket/security/243] Fail silently on unsupported values for font size
2019-08-31 21:31:25 +02:00
Marc Alexander
cc8d6a5a01 [ticket/security/243] Fail silently on unsupported values for font size
SECURITY-243
2019-08-31 18:16:18 +02:00
Marc Alexander
b4f9c44b30 Merge pull request #5070 from rxu/ticket/15467
[ticket/15467] Fix JS for permissions setting
2019-08-31 16:24:45 +02:00
EA117
5bd3b7ec37 [ticket/16141] plupload chunk_size when 'unlimited' is involved.
Change get_chunk_size() calculation to correctly calculate limits without
letting a zero "unlimited" value always win.  Also ensure get_chunk_size()
can only return zero if all of the limits were in fact set to unlimited.

PHPBB3-16141
2019-08-30 07:01:04 -05:00
oxcom
2e7d58c63b [ticket/16143] Add new events before and after move topics
PHPBB3-16143
2019-08-30 09:07:20 +02:00
EA117
bf359d153d [ticket/16141] plupload chunk_size when 'unlimited' is involved.
Change get_chunk_size() calculation to correctly calculate limits without
letting a zero "unlimited" value always win.  Also ensure get_chunk_size()
can only return zero if all of the limits were in fact set to unlimited.

PHPBB3-16141
2019-08-29 00:17:14 -05:00
EA117
29d4367043 [ticket/16141] plupload chunk_size when 'unlimited' is involved.
Change get_chunk_size() calculation to correctly calculate limits without
letting a zero "unlimited" value always win.  Also ensure get_chunk_size()
can only return zero if all of the limits were in fact set to unlimited.

PHPBB3-16141
2019-08-28 23:34:52 -05:00
EA117
73537bcc7d [ticket/16141] plupload chunk_size incorrect when 'unlimited' is involved.
Change get_chunk_size() calculation to correctly calculate limits without
letting a zero "unlimited" value always win.  Also ensure get_chunk_size()
can only return zero if all of the limits were in fact set to unlimited.

PHPBB3-16141
2019-08-28 20:22:33 -05:00
EA117
4cdfb3f4ed [ticket/16141] plupload chunk_size incorrect when 'unlimited' is involved.
Change get_chunk_size() calculation to correctly calculate limits without
letting a zero "unlimited" value always win.  Also ensure get_chunk_size()
can only return zero if all of the limits were in fact set to unlimited.

PHPBB3-16141
2019-08-26 21:07:01 -05:00
mrgoldy
88ec8cdcc6 [ticket/16084] Remove redundant backup radio button
PHPBB3-16084
2019-08-26 00:28:51 +02:00
3D-I
694a90c18e [ticket/16139] Add core.viewtopic_modify_quick_reply_template_vars
PHPBB3-16139
2019-08-25 23:18:08 +02:00
mrgoldy
8bc056ebe6 [ticket/16076] addFileFilter to check max file size per mime type
PHPBB3-16076
2019-08-25 21:24:22 +02:00
Marc Alexander
42e278e1c3 Merge pull request #52 from phpbb/ticket/security/247
[ticket/security/247] Disable loading of local files on client side
2019-08-25 18:28:56 +02:00
Marc Alexander
79be901cea Merge pull request #51 from phpbb/ticket/security/243
[ticket/security/243] Limit size BBCode to int
2019-08-25 18:28:08 +02:00
Marc Alexander
26215517dd Merge pull request #50 from phpbb/ticket/security/246
[ticket/security/246] Check form key no matter if submit is set
2019-08-25 18:27:30 +02:00
Marc Alexander
31aeac5745 Merge pull request #49 from phpbb/ticket/security/244
[security/244] Add form token check to plupload
2019-08-25 18:22:53 +02:00
Marc Alexander
59f489c01f [ticket/security/244] Add missing form parameters to tests
SECURITY-244
2019-08-24 22:23:38 +02:00
Marc Alexander
6c8d006336 [ticket/security/244] Add parse_attachment form token check to posting.php
SECURITY-244
2019-08-24 22:23:38 +02:00
Marc Alexander
56477a8f7c [ticket/security/244] Add form token check to plupload
SECURTIY-244
2019-08-24 22:23:38 +02:00
Marc Alexander
525c940385 Merge pull request #5661 from Crizz0/ticket/16136
[ticket/16136] Reword sentence for account already linked
2019-08-24 22:00:45 +02:00
Marc Alexander
2762b93e4a Merge pull request #5662 from kinerity/ticket/16134
[ticket/16134] Exclude group leaders on group member purge
2019-08-24 21:58:06 +02:00
Christian Schnegelberger
b0465a6202 [ticket/16136] Implement extended explaination
PHPBB3-16136
2019-08-22 18:37:23 +02:00
kinerity
54c684051b [ticket/16134] Exclude group leaders on group member purge
PHPBB3-16134
2019-08-22 14:07:45 +02:00
Christian Schnegelberger
29a77ea10d [ticket/16136] Reword sentence for account already linked
PHPBB3-16136
2019-08-19 20:41:27 +02:00
Marc Alexander
9c15594fe4 [3.2.x] Update version numbers to 3.2.9-dev 2019-08-17 21:44:17 +02:00
Marc Alexander
5080c3e088 Merge branch 'prep-release-3.2.8' into 3.2.x 2019-08-17 21:42:42 +02:00
Marc Alexander
4555817a8b [ticket/security/247] Disable loading of local files on client side
SECURITY-247
2019-08-11 21:31:59 +02:00
Nekstati
6b04fda0f3 [ticket/15467] Fix JS for permissions setting
PHPBB3-15467
2019-07-28 22:47:01 +07:00
rxu
4d640555ef [ticket/15467] Fix JS for permissions setting
PHPBB3-15467
2019-07-28 18:34:35 +07:00
Marc Alexander
f75577e5f8 [ticket/security/243] Use bbcode.html like formatting
SECURITY-243
2019-07-18 22:32:19 +02:00
Marc Alexander
c934d3fcfd [ticket/security/243] Limit size BBCode to 4 numeric characters
SECURITY-243
2019-07-17 22:02:32 +02:00
Marc Alexander
b5a997ce18 [ticket/security/243] Limit size values to supported values
SECURITY-243
2019-07-16 20:44:12 +02:00
Marc Alexander
cdf4f5ef85 [ticket/security/246] Check form key no matter if submit is set
SECURITY-246
2019-07-14 16:46:48 +02:00
DSR!
423e9c4ac0 [ticket/16015] Fix core.ucp_profile_avatar_upload_validation docblock
PHPBB3-16015
2019-04-16 20:52:35 -03:00
DSR!
c631db62d5 [ticket/16015] Add new hook core.ucp_profile_avatar_upload_validation
PHPBB3-16015
2019-04-15 01:18:19 -03:00
DSR!
b8de0fc47e [ticket/16015] Add new hook core.ucp_profile_avatar_upload_validation
PHPBB3-16015
2019-04-14 19:36:17 -03:00
231 changed files with 6782 additions and 1558 deletions

View File

@@ -6,6 +6,8 @@ services:
- iis
environment:
COMPOSER_AUTH:
secure: '{"github-oauth": {"github.com": "zvq38wk7sRe87Y9W2OCYXcK7WKQDsig7GRIUDHGmxm6ZQRK8JswPbi8JoJQbFhM+"}}'
matrix:
- db: mssql
db_version: sql2012sp1

2
.gitignore vendored
View File

@@ -17,6 +17,7 @@
/phpBB/styles/*
!/phpBB/styles/prosilver
!/phpBB/styles/all
node_modules
/phpBB/vendor
/tests/phpbb_unit_tests.sqlite*
/tests/test_config*.php
@@ -24,3 +25,4 @@
/tests/vendor
/vagrant/phpbb-install-config.yml
.vagrant
.idea

View File

@@ -31,9 +31,11 @@ Read our [Vagrant documentation](phpBB/docs/vagrant.md) to find out how to use V
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our travis builds below:
* [![Build Status](https://travis-ci.org/phpbb/phpbb.svg?branch=master)](http://travis-ci.org/phpbb/phpbb)[![Build status](https://ci.appveyor.com/api/projects/status/8g98ybngd2f3axy1/branch/master?svg=true)](https://ci.appveyor.com/project/phpBB/phpbb/branch/master) **master** - Latest development version
* [![Build Status](https://travis-ci.org/phpbb/phpbb.svg?branch=3.2.x)](http://travis-ci.org/phpbb/phpbb)[![Build status](https://ci.appveyor.com/api/projects/status/8g98ybngd2f3axy1/branch/3.2.x?svg=true)](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.2.x) **3.2.x** - Development of version 3.2.x
* [![Build Status](https://travis-ci.org/phpbb/phpbb.svg?branch=3.1.x)](http://travis-ci.org/phpbb/phpbb) **3.1.x** - Development of version 3.1.x
Travis CI | AppVeyor | Branch | Description
---------- | -------- | ------- | -----------
[![Build Status](https://travis-ci.org/phpbb/phpbb.svg?branch=master)](http://travis-ci.org/phpbb/phpbb) | [![Build status](https://ci.appveyor.com/api/projects/status/8g98ybngd2f3axy1/branch/master?svg=true)](https://ci.appveyor.com/project/phpBB/phpbb/branch/master) | **master** | Latest development version
[![Build Status](https://travis-ci.org/phpbb/phpbb.svg?branch=3.3.x)](http://travis-ci.org/phpbb/phpbb) | [![Build status](https://ci.appveyor.com/api/projects/status/8g98ybngd2f3axy1/branch/3.3.x?svg=true)](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.3.x) | **3.3.x** | Development of version 3.3.x
[![Build Status](https://travis-ci.org/phpbb/phpbb.svg?branch=3.2.x)](http://travis-ci.org/phpbb/phpbb) | [![Build status](https://ci.appveyor.com/api/projects/status/8g98ybngd2f3axy1/branch/3.2.x?svg=true)](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.2.x) | **3.2.x** | Development of version 3.2.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.2.8-RC1" />
<property name="prevversion" value="3.2.7" />
<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-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6" />
<property name="newversion" value="3.2.10" />
<property name="prevversion" value="3.2.9" />
<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-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.10-RC1, 3.2.10-RC2" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />

View File

@@ -0,0 +1,127 @@
#!/usr/bin/env php
<?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.
*
*/
if (version_compare(PHP_VERSION, '7.0-dev', '<'))
{
die('generate_package_json.php requires at least PHP 7.0.');
}
define('IN_PHPBB', true);
include_once('../phpBB/includes/functions.php');
$json_data = new \stdClass();
$json_data->metadata = new stdClass();
$json_data->metadata->current_version_date = '';
$json_data->metadata->current_version = '';
$json_data->metadata->download_path = '';
$json_data->metadata->show_update_package = true;
$json_data->metadata->historic = false;
$json_data->package = [];
// Open build.xml
$build_xml = simplexml_load_file('build.xml');
$current_version = (string) $build_xml->xpath('/project/property[@name=\'newversion\']/@value')[0]->value;
$previous_version = (string) $build_xml->xpath('/project/property[@name=\'prevversion\']/@value')[0]->value;
$older_verions = explode(', ', (string) $build_xml->xpath('/project/property[@name=\'olderversions\']/@value')[0]->value);
// Clean and sort version info
$older_verions[] = $previous_version;
$older_verions = array_filter($older_verions, function($version) {
preg_match(get_preg_expression('semantic_version'), $version, $matches);
return empty($matches['prerelease']) || strpos($matches['prerelease'], 'pl') !== false;
});
usort($older_verions, function($version_a, $version_b)
{
return phpbb_version_compare($version_b, $version_a);
});
// Set metadata
$json_data->metadata->current_version = $current_version;
$json_data->metadata->current_version_date = date('Y-m-d');
$json_data->metadata->download_path = 'https://download.phpbb.com/pub/release/' . preg_replace('#([0-9]+\.[0-9]+)(\..+)#', '$1', $current_version) . '/' . $current_version . '/';
// Add package, patch files, and changed files
phpbb_add_package_file(
$json_data->package,
'phpBB ' . $current_version,
'phpBB-' . $current_version,
'full',
''
);
phpbb_add_package_file(
$json_data->package,
'phpBB ' . $current_version . ' Patch Files',
'phpBB-' . $current_version . '-patch',
'update',
'patch'
);
phpbb_add_package_file(
$json_data->package,
'phpBB ' . $current_version . ' Changed Files',
'phpBB-' . $current_version . '-files',
'update',
'files'
);
// Loop through packages and assign to packages array
foreach ($older_verions as $version)
{
phpbb_add_package_file(
$json_data->package,
'phpBB ' . $version . ' to ' . $current_version . ' Update Package',
'phpBB-' . $version . '_to_' . $current_version,
'update',
'update',
$version
);
}
echo(json_encode($json_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . "\n");
function phpbb_add_package_file(array &$package_list, $name, $file_name, $type, $subtype, $from = '')
{
if (!file_exists(__DIR__ . '/new_version/release_files/' . $file_name . '.zip'))
{
trigger_error('File does not exist: ' . __DIR__ . '/new_version/release_files/' . $file_name . '.zip');
return;
}
$package_file = new stdClass();
$package_file->name = $name;
$package_file->filename = $file_name;
$package_file->type = $type;
if (!empty($subtype))
{
$package_file->subtype = $subtype;
}
if (!empty($from))
{
$package_file->from = $from;
}
$package_file->files = [];
foreach (['zip', 'tar.bz2'] as $extension)
{
$file_path = 'new_version/release_files/' . $file_name . '.' . $extension;
$filedata = new stdClass();
$filedata->filesize = filesize($file_path);
$filedata->checksum = trim(preg_replace('/(^\w+)(.+)/', '$1', file_get_contents($file_path . '.sha256')));
$filedata->filetype = $extension;
$package_file->files[] = $filedata;
}
$package_list[] = $package_file;
}

View File

@@ -26,6 +26,7 @@ $config['versions'] = Sami\Version\GitVersionCollection::create(__DIR__ . '/../'
->add('3.0.x')
->add('3.1.x')
->add('3.2.x')
->add('3.3.x')
->add('master')
;

Binary file not shown.

View File

@@ -50,16 +50,21 @@
<dl>
<dt><label for="{options.KEY}">{options.TITLE}{L_COLON}</label><!-- IF options.S_EXPLAIN --><br /><span>{options.TITLE_EXPLAIN}</span><!-- ENDIF --></dt>
<dd>{options.CONTENT}</dd>
{% if (options.KEY == 'allow_attachments' and S_EMPTY_POST_GROUPS) or (options.KEY == 'allow_pm_attach' and S_EMPTY_PM_GROUPS) %}
<dd><span class="error">{{ lang(options.KEY == 'allow_attachments' ? 'NO_EXT_GROUP_ALLOWED_POST' : 'NO_EXT_GROUP_ALLOWED_PM', U_EXTENSION_GROUPS) }}</span></dd>
{% endif %}
</dl>
<!-- ENDIF -->
<!-- END options -->
</fieldset>
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<fieldset>
<legend>{{ lang('ACP_SUBMIT_CHANGES') }}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
</fieldset>
<!-- IF not S_SECURE_DOWNLOADS -->
@@ -110,7 +115,7 @@
<!-- ELSEIF S_EXTENSION_GROUPS -->
<!-- IF S_EDIT_GROUP -->
<script type="text/javascript" defer="defer">
<script>
// <![CDATA[
function update_image(newimage)
{
@@ -204,10 +209,13 @@
<dd><select name="allowed_forums[]" multiple="multiple" size="8">{S_FORUM_ID_OPTIONS}</select></dd>
</dl>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
</fieldset>
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
@@ -308,10 +316,14 @@
</tbody>
</table>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
</fieldset>
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>
@@ -382,10 +394,13 @@
<!-- ENDIF -->
<!-- IF .orphan -->
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
</fieldset>
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
<!-- ENDIF -->
{S_FORM_TOKEN}

View File

@@ -8,7 +8,7 @@
<p>{L_EXPLAIN}</p>
<script type="text/javascript">
<script>
// <![CDATA[
var ban_length = new Array();
@@ -73,12 +73,14 @@
<dt><label for="bangivereason">{L_BAN_GIVE_REASON}{L_COLON}</label></dt>
<dd><input name="bangivereason" type="text" class="text medium" maxlength="255" id="bangivereason" /></dd>
</dl>
<p class="submit-buttons">
<input class="button1" type="submit" id="bansubmit" name="bansubmit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="banreset" name="banreset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="bansubmit" name="bansubmit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="banreset" name="banreset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>

View File

@@ -1,6 +1,6 @@
<!-- INCLUDE overall_header.html -->
<script type="text/javascript">
<script>
// <![CDATA[
var form_name = 'acp_contact';
@@ -66,9 +66,12 @@
</dl>
</fieldset>
<fieldset class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="submit" name="preview" value="{L_PREVIEW}" />
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>

View File

@@ -35,7 +35,7 @@
<p>{L_ACP_BACKUP_EXPLAIN}</p>
<script type="text/javascript">
<script>
// <![CDATA[
function selector(bool)
@@ -67,12 +67,6 @@
<label><input name="method"<!-- IF methods.S_FIRST_ROW --> id="method" checked="checked"<!-- ENDIF --> type="radio" class="radio" value="{methods.TYPE}" /> {methods.TYPE}</label>
<!-- END methods --></dd>
</dl>
<dl>
<dt><label for="where">{L_ACTION}{L_COLON}</label></dt>
<dd>
<label><input id="where" type="radio" class="radio" name="where" value="store" checked="checked" /> {L_STORE_LOCAL}</label>
</dd>
</dl>
<dl>
<dt><label for="table">{L_TABLE_SELECT}{L_COLON}</label></dt>
<dd><select id="table" name="table[]" size="10" multiple="multiple">
@@ -82,12 +76,15 @@
</select></dd>
<dd><a href="#" onclick="selector(true); return false;">{L_SELECT_ALL}</a> :: <a href="#" onclick="selector(false); return false;">{L_DESELECT_ALL}</a></dd>
</dl>
</fieldset>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>

View File

@@ -4,7 +4,7 @@
<!-- IF S_EDIT_FORUM -->
<script type="text/javascript">
<script>
// <![CDATA[
/**
* Handle displaying/hiding several options based on the forum type
@@ -405,7 +405,7 @@
<!-- ELSEIF S_CONTINUE_SYNC -->
<script type="text/javascript">
<script>
// <![CDATA[
var close_waitscreen = 0;
// no scrollbars...
@@ -421,7 +421,7 @@
<!-- ELSE -->
<script type="text/javascript">
<script>
// <![CDATA[
/**
* Popup search progress bar
@@ -447,7 +447,7 @@
<!-- ENDIF -->
<!-- IF S_RESYNCED -->
<script type="text/javascript">
<script>
// <![CDATA[
var close_waitscreen = 1;
// ]]>

View File

@@ -36,10 +36,12 @@
<dl>
<dt><label for="group_type">{L_GROUP_TYPE}{L_COLON}</label><br /><span>{L_GROUP_TYPE_EXPLAIN}</span></dt>
<dd>
{% EVENT acp_group_types_prepend %}
<label><input name="group_type" type="radio" class="radio" id="group_type" value="{GROUP_TYPE_FREE}"{GROUP_FREE} /> {L_GROUP_OPEN}</label>
<label><input name="group_type" type="radio" class="radio" value="{GROUP_TYPE_OPEN}"{GROUP_OPEN} /> {L_GROUP_REQUEST}</label>
<label><input name="group_type" type="radio" class="radio" value="{GROUP_TYPE_CLOSED}"{GROUP_CLOSED} /> {L_GROUP_CLOSED}</label>
<label><input name="group_type" type="radio" class="radio" value="{GROUP_TYPE_HIDDEN}"{GROUP_HIDDEN} /> {L_GROUP_HIDDEN}</label>
{% EVENT acp_group_types_append %}
</dd>
</dl>
<!-- ELSE -->

View File

@@ -15,13 +15,15 @@
<label><input type="radio" name="legend_sort_groupname" class="radio" value="0"<!-- IF not LEGEND_SORT_GROUPNAME --> checked="checked"<!-- ENDIF --> /> {L_NO}</label>
</dd>
</dl>
<p class="submit-buttons">
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
<input type="hidden" name="action" value="set_config_legend" />
{S_FORM_TOKEN}
</p>
</fieldset>
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" name="reset" value="{L_RESET}" />
<input type="hidden" name="action" value="set_config_legend" />
{S_FORM_TOKEN}
</p>
</fieldset>
</form>

View File

@@ -40,6 +40,7 @@
</div>
<!-- EVENT acp_help_phpbb_stats_after -->
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
<input type="hidden" name="help_send_statistics_time" value="{COLLECT_STATS_TIME}" />
@@ -51,6 +52,7 @@
</form>
<form action="{U_COLLECT_STATS}" method="post" target="questionaire_result" id="questionnaire-form">
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input type="hidden" name="systemdata" value="{RAW_DATA}" />
<input class="button1" type="submit" id="submit_stats" name="submit" value="{L_SEND_STATISTICS}" />

View File

@@ -4,7 +4,7 @@
<!-- IF S_EDIT -->
<script type="text/javascript" defer="defer">
<script>
// <![CDATA[
<!-- IF S_ADD_CODE -->

View File

@@ -70,9 +70,12 @@
</fieldset>
<fieldset class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>

View File

@@ -4,7 +4,7 @@
<!-- IF S_EDIT_MODULE -->
<script type="text/javascript">
<script>
// <![CDATA[
function display_options(value)
{

View File

@@ -4,7 +4,7 @@
<!-- IF S_EDIT -->
<script type="text/javascript">
<script>
// <![CDATA[
var active_pmask = '0';
var active_fmask = '0';
@@ -20,7 +20,7 @@
// ]]>
</script>
<script type="text/javascript" src="style/permissions.js"></script>
<script src="style/permissions.js"></script>
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">&laquo; {L_BACK}</a>

View File

@@ -340,9 +340,12 @@
<br class="responsive-hide" /><br class="responsive-hide" />
<fieldset class="quick" style="float: {S_CONTENT_FLOW_END};">
<input class="button1" type="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" />
<input class="button2" type="button" name="cancel" value="{L_RESET}" onclick="document.forms['set-permissions'].reset(); init_colours(active_pmask + active_fmask);" />
{S_FORM_TOKEN}
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="action[apply_all_permissions]" value="{L_APPLY_ALL_PERMISSIONS}" />&nbsp;
<input class="button2" type="button" id="reset" name="cancel" value="{L_RESET}" onclick="document.forms['set-permissions'].reset(); init_colours(active_pmask + active_fmask);" />
{S_FORM_TOKEN}
</p>
</fieldset>
<br class="responsive-hide" /><br class="responsive-hide" />

View File

@@ -1,31 +1,10 @@
<script type="text/javascript">
<script>
// <![CDATA[
// Define the bbCode tags
var bbcode = new Array();
var bbtags = new Array('[b]','[/b]','[i]','[/i]','[u]','[/u]','[quote]','[/quote]','[code]','[/code]','[list]','[/list]','[list=]','[/list]','[img]','[/img]','[url]','[/url]','[flash=]', '[/flash]','[size=]','[/size]'<!-- BEGIN custom_tags -->, {custom_tags.BBCODE_NAME}<!-- END custom_tags -->);
// Helpline messages
var help_line = {
b: '{LA_BBCODE_B_HELP}',
i: '{LA_BBCODE_I_HELP}',
u: '{LA_BBCODE_U_HELP}',
q: '{LA_BBCODE_Q_HELP}',
c: '{LA_BBCODE_C_HELP}',
l: '{LA_BBCODE_L_HELP}',
o: '{LA_BBCODE_O_HELP}',
p: '{LA_BBCODE_P_HELP}',
w: '{LA_BBCODE_W_HELP}',
a: '{LA_BBCODE_A_HELP}',
s: '{LA_BBCODE_S_HELP}',
f: '{LA_BBCODE_F_HELP}',
y: '{LA_BBCODE_Y_HELP}',
d: '{LA_BBCODE_D_HELP}'
<!-- BEGIN custom_tags -->
,cb_{custom_tags.BBCODE_ID}{L_COLON} '{custom_tags.A_BBCODE_HELPLINE}'
<!-- END custom_tags -->
}
// ]]>
</script>
@@ -65,7 +44,7 @@
</select>
<!-- EVENT acp_posting_buttons_custom_tags_before -->
<!-- BEGIN custom_tags -->
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}" />
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{{ custom_tags.BBCODE_HELPLINE }}" />
<!-- END custom_tags -->
</div>
<!-- EVENT acp_posting_buttons_after -->

View File

@@ -21,8 +21,11 @@
<!-- IF S_STEP_ONE -->
{% EVENT acp_profile_options_before %}
<fieldset>
<legend>{L_TITLE}</legend>
{% EVENT acp_profile_basic_options_before %}
<dl>
<dt><label>{L_FIELD_TYPE}{L_COLON}</label><br /><span>{L_FIELD_TYPE_EXPLAIN}</span></dt>
<dd><strong>{FIELD_TYPE}</strong></dd>
@@ -43,8 +46,11 @@
<dd><label><input type="radio" class="radio" id="field_no_view" name="field_no_view" value="0"<!-- IF not S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="field_no_view" value="1"<!-- IF S_FIELD_NO_VIEW --> checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
{% EVENT acp_profile_basic_options_after %}
</fieldset>
{% EVENT acp_profile_visibility_options_before %}
<fieldset>
<legend>{L_VISIBILITY_OPTION}</legend>
<dl>
@@ -87,8 +93,11 @@
<dd><input class="text medium" type="text" name="field_contact_url" id="field_contact_url" value="{FIELD_CONTACT_URL}" /> <label for="field_contact_url">{L_FIELD_CONTACT_URL}</label></dd>
<!-- EVENT acp_profile_contact_last -->
</dl>
{% EVENT acp_profile_contact_after %}
</fieldset>
{% EVENT acp_profile_visibility_options_after %}
<!-- IF S_EDIT_MODE -->
<fieldset class="quick">
<input class="button1" type="submit" name="save" value="{L_SAVE}" />

View File

@@ -7,7 +7,7 @@
<p>{L_ACP_PRUNE_USERS_EXPLAIN}</p>
<form id="acp_prune" method="post" action="{U_ACTION}">
<fieldset>
<legend>{L_CRITERIA}</legend>
<dl>
@@ -66,15 +66,19 @@
<dd><label><input type="radio" class="radio" name="action" value="delete" /> {L_DELETE_USERS}</label>
<label><input type="radio" class="radio" id="deactivate" name="action" value="deactivate" checked="checked" /> {L_DEACTIVATE}</label></dd>
</dl>
<p class="submit-buttons">
<input type="hidden" name="prune" value="1" />
<input class="button1" type="submit" id="update" name="update" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}
</p>
</fieldset>
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input type="hidden" name="prune" value="1" />
<input class="button1" type="submit" id="update" name="update" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
{S_FORM_TOKEN}
</p>
</fieldset>
</form>
<!-- INCLUDE overall_footer.html -->

View File

@@ -6,7 +6,7 @@
<a href="{U_BACK}" style="float: {S_CONTENT_FLOW_END};">&laquo; {L_BACK}</a>
<script type="text/javascript">
<script>
// <![CDATA[
function update_image(newimage)
{

View File

@@ -59,17 +59,19 @@
<!-- END backend -->
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>
<!-- ELSEIF S_INDEX -->
<script type="text/javascript">
<script>
// <![CDATA[
/**
* Popup search progress bar
@@ -89,10 +91,12 @@
<p>{L_CONTINUE_EXPLAIN}</p>
<form id="acp_search_continue" method="post" action="{U_CONTINUE_INDEXING}">
<fieldset class="submit-buttons">
<legend>{L_SUBMIT}</legend>
<input class="button1" type="submit" id="continue" name="continue" value="{L_CONTINUE}" onclick="popup_progress_bar('{S_CONTINUE_INDEXING}');" />&nbsp;
<input class="button2" type="submit" id="cancel" name="cancel" value="{L_CANCEL}" />
<fieldset>
<legend>{L_ACP_SUBMIT_CHANGES}</legend>
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_SUBMIT}" />&nbsp;
<input class="button2" type="reset" id="reset" name="reset" value="{L_RESET}" />
</p>
{S_FORM_TOKEN}
</fieldset>
</form>

View File

@@ -79,7 +79,7 @@
<!-- IF not S_USER_FOUNDER or S_FOUNDER -->
<script type="text/javascript">
<script>
// <![CDATA[
function display_reason(option)

View File

@@ -1,4 +1,4 @@
<script type="text/javascript">
<script>
// <![CDATA[
var default_dateformat = '{A_DEFAULT_DATEFORMAT}';
// ]]>

View File

@@ -1,4 +1,4 @@
<script type="text/javascript">
<script>
// <![CDATA[
var form_name = 'user_signature';

View File

@@ -2049,6 +2049,8 @@ fieldset.permissions .padding {
}
.permissions-category ul {
display: flex;
flex-wrap: wrap;
margin: 0;
padding: 0;
list-style: none;
@@ -2102,7 +2104,6 @@ fieldset.permissions .padding {
.permissions-category .activetab a span.tabbg {
background-position: 100% 0;
padding-bottom: 7px;
color: #333333;
}
@@ -2297,6 +2298,10 @@ fieldset.permissions .padding {
margin: 0 !important;
}
.permissions-category ul {
display: block;
}
.permissions-category a, .permissions-category a span.tabbg {
display: block;
float: none !important;

View File

@@ -173,7 +173,9 @@ function submitPermissions() {
var permissionSubmitSize = 0,
permissionRequestCount = 0,
forumIds = [],
permissionSubmitFailed = false;
permissionSubmitFailed = false,
clearIndicator = true,
$loadingIndicator;
if ($submitAllButton !== $submitButton) {
fieldsetList = $form.find('fieldset#' + $submitButton.closest('fieldset.permissions').id);
@@ -207,6 +209,8 @@ function submitPermissions() {
}
});
$loadingIndicator = phpbb.loadingIndicator();
/**
* Handler for submitted permissions form chunk
*
@@ -222,6 +226,8 @@ function submitPermissions() {
} else if (!permissionSubmitFailed && res.S_USER_NOTICE) {
// Display success message at the end of submitting the form
if (permissionRequestCount >= permissionSubmitSize) {
clearIndicator = true;
var $alert = phpbb.alert(res.MESSAGE_TITLE, res.MESSAGE_TEXT);
var $alertBoxLink = $alert.find('p.alert_text > a');
@@ -271,6 +277,17 @@ function submitPermissions() {
$form.submit();
}, res.REFRESH_DATA.time * 1000); // Server specifies time in seconds
}
} else {
// Still more forms to submit, so do not clear indicator
clearIndicator = false;
}
}
if (clearIndicator) {
phpbb.clearLoadingTimeout();
if ($loadingIndicator) {
$loadingIndicator.fadeOut(phpbb.alertTime);
}
}
}

View File

@@ -13,7 +13,7 @@
</div>
</div>
<script type="text/javascript">
<script>
<!--
installLang = {
title: '{LA_TIMEOUT_DETECTED_TITLE}',
@@ -22,9 +22,9 @@ installLang = {
//-->
</script>
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script type="text/javascript">window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js">\x3C/script>');</script><!-- ENDIF -->
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
<script src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.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

@@ -33,9 +33,9 @@
</div>
</div>
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script type="text/javascript">window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
<script src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.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

@@ -10,7 +10,7 @@
<link href="{T_FONT_AWESOME_LINK}" rel="stylesheet">
<link href="style/admin.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
<script>
// <![CDATA[
var jump_page = '{LA_JUMP_PAGE}{L_COLON}';
var on_page = '{CURRENT_PAGE}';

View File

@@ -1,5 +1,5 @@
<script type="text/javascript">
<script>
// <![CDATA[
var active_pmask = '0';
var active_fmask = '0';
@@ -9,12 +9,14 @@
var role_options = new Array();
var no_role_assigned = "{LA_NO_ROLE_ASSIGNED}";
<!-- IF S_ROLE_JS_ARRAY -->
{S_ROLE_JS_ARRAY}
<!-- ENDIF -->
// ]]>
</script>
<script type="text/javascript" src="style/permissions.js"></script>
<script src="style/permissions.js"></script>
<!-- BEGIN p_mask -->
<div class="clearfix"></div>

View File

@@ -269,8 +269,14 @@ function mark_one_option(id, field_name, s) {
}
/**
* Reset role dropdown field to Select role... if an option gets changed
*/
* (Re)set the permission role dropdown.
*
* Try and match the set permissions to an existing role.
* Otherwise reset the dropdown to "Select a role.."
*
* @param {string} id The fieldset identifier
* @returns {void}
*/
function reset_role(id) {
var t = document.getElementById(id);
@@ -278,14 +284,37 @@ function reset_role(id) {
return;
}
t.options[0].selected = true;
// Before resetting the role dropdown, try and match any permission role
var parent = t.parentNode,
roleId = match_role_settings(id.replace('role', 'perm')),
text = no_role_assigned,
index = 0;
// If a role permissions was matched, grab that option's value and index
if (roleId) {
for (var i = 0; i < t.options.length; i++) {
if (parseInt(t.options[i].value, 10) === roleId) {
text = t.options[i].text;
index = i;
break;
}
}
}
// Update the select's value and selected index
t.value = roleId;
t.options[index].selected = true;
// Update the dropdown trigger to show the new value
parent.querySelector('span.dropdown-trigger').innerText = text;
parent.querySelector('input[data-name^=role]').value = roleId;
}
/**
* Load role and set options accordingly
*/
function set_role_settings(role_id, target_id) {
settings = role_options[role_id];
var settings = role_options[role_id];
if (!settings) {
return;
@@ -298,3 +327,51 @@ function set_role_settings(role_id, target_id) {
mark_one_option(target_id, r, (settings[r] === 1) ? 'y' : 'n');
}
}
/**
* Match the set permissions against the available roles.
*
* @param {string} id The parent fieldset identifier
* @return {number} The permission role identifier
*/
function match_role_settings(id) {
var fieldset = document.getElementById(id),
radios = fieldset.getElementsByTagName('input'),
set = {};
// Iterate over all the radio buttons
for (var i = 0; i < radios.length; i++) {
var matches = radios[i].id.match(/setting\[\d+]\[\d+]\[([a-z_]+)]/);
// Make sure the name attribute matches, the radio is checked and it is not the "No" (-1) value.
if (matches !== null && radios[i].checked && radios[i].value !== '-1') {
set[matches[1]] = parseInt(radios[i].value, 10);
}
}
// Sort and stringify the 'set permissions' object
set = sort_and_stringify(set);
// Iterate over the available role options and return the first match
for (var r in role_options)
{
if (sort_and_stringify(role_options[r]) === set) {
return parseInt(r, 10);
}
}
return 0;
}
/**
* Sort and stringify an Object so it can be easily compared against another object.
*
* @param {object} obj The object to sort (by key) and stringify
* @return {string} The sorted object as a string
*/
function sort_and_stringify(obj) {
return JSON.stringify(Object.keys(obj).sort().reduce(function (result, key) {
result[key] = obj[key];
return result;
}, {}));
}

View File

@@ -1,6 +1,6 @@
<!-- INCLUDE simple_header.html -->
<script type="text/javascript">
<script>
// <![CDATA[
/**
* Close previously opened popup
@@ -31,7 +31,7 @@
<p>{L_PROGRESS_EXPLAIN}</p>
</div>
<script type="text/javascript">
<script>
// <![CDATA[
close_popup();
// ]]>

View File

@@ -16,9 +16,9 @@
</div>
<script type="text/javascript" src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script type="text/javascript">window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.min.js?assets_version={T_ASSETS_VERSION}">\x3C/script>');</script><!-- ENDIF -->
<script type="text/javascript" src="{T_ASSETS_PATH}/javascript/core.js?assets_version={T_ASSETS_VERSION}"></script>
<script src="{T_JQUERY_LINK}"></script>
<!-- IF S_ALLOW_CDN --><script>window.jQuery || document.write('\x3Cscript src="{T_ASSETS_PATH}/javascript/jquery.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 -->
{$SCRIPTS}

View File

@@ -9,7 +9,7 @@
<link href="style/admin.css?assets_version={T_ASSETS_VERSION}" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
<script>
// <![CDATA[
var jump_page = '{LA_JUMP_PAGE}{L_COLON}';
var on_page = '{CURRENT_PAGE}';

View File

@@ -218,23 +218,6 @@ $(function() {
// Prepare dropdown
phpbb.prepareRolesDropdown();
// Reset role drop-down on modifying permissions in advanced tab
$('div.permissions-switch > a').on('click', function () {
$.each($('input[type=radio][name^="setting["]'), function () {
var $this = $(this);
$this.on('click', function () {
var $rolesOptions = $this.closest('fieldset.permissions').find('.roles-options'),
rolesSelect = $rolesOptions.find('select > option')[0];
// Set selected setting
$rolesOptions.children('span')
.text(rolesSelect.text);
$rolesOptions.children('input[type=hidden]')
.val(rolesSelect.value);
});
});
});
});
})(jQuery); // Avoid conflicts with other libraries

View File

@@ -853,7 +853,10 @@ phpbb.timezonePreselectSelect = function(forceSelector) {
var minutes = offset % 60;
var hours = (offset - minutes) / 60;
if (hours < 10) {
if (hours === 0) {
hours = '00';
sign = '+';
} else if (hours < 10) {
hours = '0' + hours.toString();
} else {
hours = hours.toString();

View File

@@ -17,17 +17,10 @@ var is_ie = ((clientPC.indexOf('msie') !== -1) && (clientPC.indexOf('opera') ===
var is_win = ((clientPC.indexOf('win') !== -1) || (clientPC.indexOf('16bit') !== -1));
var baseHeight;
/**
* Shows the help messages in the helpline window
*/
function helpline(help) {
document.forms[form_name].helpbox.value = help_line[help];
}
/**
* Fix a bug involving the TextRange object. From
* http://www.frostjedi.com/terra/scripts/demo/caretBug.html
*/
*/
function initInsertions() {
var doc;
@@ -104,8 +97,8 @@ function bbfontstyle(bbopen, bbclose) {
}
// IE
else if (document.selection) {
var range = textarea.createTextRange();
range.move("character", new_pos);
var range = textarea.createTextRange();
range.move("character", new_pos);
range.select();
storeCaret(textarea);
}

View File

@@ -90,6 +90,12 @@ phpbb.plupload.getSerializedData = function() {
obj['attachment_data[' + i + '][' + key + ']'] = datum[key];
}
}
// Insert form data
var $pluploadForm = $(phpbb.plupload.config.form_hook).first();
obj.creation_time = $pluploadForm.find('input[type=hidden][name="creation_time"]').val();
obj.form_token = $pluploadForm.find('input[type=hidden][name="form_token"]').val();
return obj;
};
@@ -264,6 +270,17 @@ phpbb.plupload.deleteFile = function(row, attachId) {
return;
}
// Handle errors while deleting file
if (typeof response.error !== 'undefined') {
phpbb.alert(phpbb.plupload.lang.ERROR, response.error.message);
// We will have to assume that the deletion failed. So leave the file status as uploaded.
row.find('.file-status').toggleClass('file-uploaded');
return;
}
phpbb.plupload.update(response, 'removal', index);
// Check if the user can upload files now if he had reached the max files limit.
phpbb.plupload.handleMaxFilesReached();
@@ -446,6 +463,44 @@ phpbb.plupload.fileError = function(file, error) {
phpbb.plupload.uploader = new plupload.Uploader(phpbb.plupload.config);
phpbb.plupload.initialize();
/**
* Add a file filter to check for max file sizes per mime type.
*/
plupload.addFileFilter('mime_types_max_file_size', function(types, file, callback) {
if (file.size !== 'undefined') {
$(types).each(function(i, type) {
let extensions = [],
extsArray = type.extensions.split(',');
$(extsArray).each(function(i, extension) {
/^\s*\*\s*$/.test(extension) ? extensions.push("\\.*") : extensions.push("\\." + extension.replace(new RegExp("[" + "/^$.*+?|()[]{}\\".replace(/./g, "\\$&") + "]", "g"), "\\$&"));
});
let regex = new RegExp("(" + extensions.join("|") + ")$", "i");
if (regex.test(file.name)) {
if (type.max_file_size !== 'undefined' && type.max_file_size) {
if (file.size > type.max_file_size) {
phpbb.plupload.uploader.trigger('Error', {
code: plupload.FILE_SIZE_ERROR,
message: plupload.translate('File size error.'),
file: file
});
callback(false);
} else {
callback(true);
}
} else {
callback(true);
}
return false;
}
});
}
});
var $fileList = $('#file-list');
/**

View File

@@ -84,7 +84,7 @@ $user = $phpbb_container->get('user');
$user->data['user_id'] = ANONYMOUS;
$user->ip = '127.0.0.1';
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $language);
$application = new \phpbb\console\application('phpBB Console', PHPBB_VERSION, $language, $config);
$application->setDispatcher($phpbb_container->get('dispatcher'));
$application->register_container_commands($phpbb_container->get('console.command_collection'));
$application->run($input);

37
phpBB/cache/.htaccess vendored
View File

@@ -1,4 +1,33 @@
<Files *>
Order Allow,Deny
Deny from All
</Files>
# 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_host.
# 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>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfVersion>
<IfVersion >= 2.4>
<Files "*">
Require all denied
</Files>
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfModule>
<IfModule mod_authz_core.c>
<Files "*">
Require all denied
</Files>
</IfModule>
</IfModule>

414
phpBB/composer.lock generated
View File

@@ -83,16 +83,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "5.3.3",
"version": "5.3.4",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "93bbdb30d59be6cd9839495306c65f2907370eb9"
"reference": "b87eda7a7162f95574032da17e9323c9899cb6b2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/93bbdb30d59be6cd9839495306c65f2907370eb9",
"reference": "93bbdb30d59be6cd9839495306c65f2907370eb9",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/b87eda7a7162f95574032da17e9323c9899cb6b2",
"reference": "b87eda7a7162f95574032da17e9323c9899cb6b2",
"shasum": ""
},
"require": {
@@ -132,7 +132,7 @@
"rest",
"web service"
],
"time": "2018-07-31T13:33:10+00:00"
"time": "2019-10-30T09:32:00+00:00"
},
{
"name": "guzzlehttp/ringphp",
@@ -183,6 +183,7 @@
}
],
"description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.",
"abandoned": true,
"time": "2018-07-31T13:22:33+00:00"
},
{
@@ -233,6 +234,7 @@
"Guzzle",
"stream"
],
"abandoned": true,
"time": "2014-10-12T19:18:40+00:00"
},
{
@@ -346,16 +348,16 @@
},
{
"name": "marc1706/fast-image-size",
"version": "v1.1.4",
"version": "v1.1.6",
"source": {
"type": "git",
"url": "https://github.com/marc1706/fast-image-size.git",
"reference": "c4ded0223a4e49ae45a2183a69f6afac5baf7250"
"reference": "3a3a2b036be20f43fa06ce00dfa754df503e6684"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/marc1706/fast-image-size/zipball/c4ded0223a4e49ae45a2183a69f6afac5baf7250",
"reference": "c4ded0223a4e49ae45a2183a69f6afac5baf7250",
"url": "https://api.github.com/repos/marc1706/fast-image-size/zipball/3a3a2b036be20f43fa06ce00dfa754df503e6684",
"reference": "3a3a2b036be20f43fa06ce00dfa754df503e6684",
"shasum": ""
},
"require": {
@@ -363,9 +365,14 @@
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "4.*"
"phpunit/phpunit": "^4.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"FastImageSize\\": "lib",
@@ -394,7 +401,7 @@
"php",
"size"
],
"time": "2017-10-23T18:52:01+00:00"
"time": "2019-12-07T08:02:07+00:00"
},
{
"name": "ocramius/proxy-manager",
@@ -510,22 +517,25 @@
},
{
"name": "patchwork/utf8",
"version": "v1.3.1",
"version": "v1.3.2",
"source": {
"type": "git",
"url": "https://github.com/tchwork/utf8.git",
"reference": "30ec6451aec7d2536f0af8fe535f70c764f2c47a"
"reference": "d296e0026e7ce10b2a9fe594feca9628ef00e9e8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/tchwork/utf8/zipball/30ec6451aec7d2536f0af8fe535f70c764f2c47a",
"reference": "30ec6451aec7d2536f0af8fe535f70c764f2c47a",
"url": "https://api.github.com/repos/tchwork/utf8/zipball/d296e0026e7ce10b2a9fe594feca9628ef00e9e8",
"reference": "d296e0026e7ce10b2a9fe594feca9628ef00e9e8",
"shasum": ""
},
"require": {
"lib-pcre": ">=7.3",
"php": ">=5.3.0"
},
"require-dev": {
"symfony/phpunit-bridge": "^3.4|^4.4"
},
"suggest": {
"ext-iconv": "Use iconv for best performance",
"ext-intl": "Use Intl for best performance",
@@ -565,20 +575,20 @@
"utf-8",
"utf8"
],
"time": "2016-05-18T13:57:10+00:00"
"time": "2019-12-03T14:44:12+00:00"
},
{
"name": "psr/log",
"version": "1.1.0",
"version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
"reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
@@ -587,7 +597,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "1.1.x-dev"
}
},
"autoload": {
@@ -612,27 +622,27 @@
"psr",
"psr-3"
],
"time": "2018-11-20T15:27:04+00:00"
"time": "2020-03-23T09:12:05+00:00"
},
{
"name": "react/promise",
"version": "v2.7.1",
"version": "v2.8.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d"
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8"
"phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
@@ -658,7 +668,7 @@
"promise",
"promises"
],
"time": "2019-01-07T21:25:54+00:00"
"time": "2020-05-12T15:16:56+00:00"
},
{
"name": "s9e/text-formatter",
@@ -728,7 +738,7 @@
},
{
"name": "symfony/config",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
@@ -785,7 +795,7 @@
},
{
"name": "symfony/console",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
@@ -846,7 +856,7 @@
},
{
"name": "symfony/debug",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
@@ -903,7 +913,7 @@
},
{
"name": "symfony/dependency-injection",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
@@ -966,7 +976,7 @@
},
{
"name": "symfony/event-dispatcher",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
@@ -1026,7 +1036,7 @@
},
{
"name": "symfony/filesystem",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@@ -1076,7 +1086,7 @@
},
{
"name": "symfony/finder",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
@@ -1125,16 +1135,16 @@
},
{
"name": "symfony/http-foundation",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "746f8d3638bf46ee8b202e62f2b214c3d61fb06a"
"reference": "3929d9fe8148d17819ad0178c748b8d339420709"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/746f8d3638bf46ee8b202e62f2b214c3d61fb06a",
"reference": "746f8d3638bf46ee8b202e62f2b214c3d61fb06a",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/3929d9fe8148d17819ad0178c748b8d339420709",
"reference": "3929d9fe8148d17819ad0178c748b8d339420709",
"shasum": ""
},
"require": {
@@ -1176,20 +1186,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2019-04-16T10:00:53+00:00"
"time": "2019-11-12T12:34:41+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v2.8.51",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "a01e2b4b267fda24dba9b06cd1c575ca87a51ad2"
"reference": "c3be27b8627cd5ee8dfa8d1b923982f618ec521c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a01e2b4b267fda24dba9b06cd1c575ca87a51ad2",
"reference": "a01e2b4b267fda24dba9b06cd1c575ca87a51ad2",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/c3be27b8627cd5ee8dfa8d1b923982f618ec521c",
"reference": "c3be27b8627cd5ee8dfa8d1b923982f618ec521c",
"shasum": ""
},
"require": {
@@ -1198,7 +1208,8 @@
"symfony/debug": "^2.6.2",
"symfony/event-dispatcher": "^2.6.7|~3.0.0",
"symfony/http-foundation": "~2.7.36|~2.8.29|~3.1.6",
"symfony/polyfill-ctype": "~1.8"
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-php56": "~1.8"
},
"conflict": {
"symfony/config": "<2.7",
@@ -1260,20 +1271,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2019-04-17T16:42:28+00:00"
"time": "2019-11-13T08:36:16+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.11.0",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "82ebae02209c21113908c229e9883c419720738a"
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"shasum": ""
},
"require": {
@@ -1285,7 +1296,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.17-dev"
}
},
"autoload": {
@@ -1302,12 +1313,12 @@
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
},
{
"name": "Gert de Pagter",
"email": "backendtea@gmail.com"
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for ctype functions",
@@ -1318,20 +1329,34 @@
"polyfill",
"portable"
],
"time": "2019-02-06T07:57:58+00:00"
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-05-12T16:14:59+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.11.0",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
"reference": "fa79b11539418b02fc5e1897267673ba2c19419c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c",
"reference": "fa79b11539418b02fc5e1897267673ba2c19419c",
"shasum": ""
},
"require": {
@@ -1343,7 +1368,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.17-dev"
}
},
"autoload": {
@@ -1377,20 +1402,34 @@
"portable",
"shim"
],
"time": "2019-02-06T07:57:58+00:00"
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-php54",
"version": "v1.11.0",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php54.git",
"reference": "2964b17ddc32dba7bcba009d5501c84d3fba1452"
"reference": "3c71ff0f90fcbd00ca8966f35526e3cbad15d31d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/2964b17ddc32dba7bcba009d5501c84d3fba1452",
"reference": "2964b17ddc32dba7bcba009d5501c84d3fba1452",
"url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/3c71ff0f90fcbd00ca8966f35526e3cbad15d31d",
"reference": "3c71ff0f90fcbd00ca8966f35526e3cbad15d31d",
"shasum": ""
},
"require": {
@@ -1399,7 +1438,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.17-dev"
}
},
"autoload": {
@@ -1435,20 +1474,34 @@
"portable",
"shim"
],
"time": "2019-02-06T07:57:58+00:00"
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-php55",
"version": "v1.11.0",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php55.git",
"reference": "96fa25cef405ea452919559a0025d5dc16e30e4c"
"reference": "875267200645e116261c31ff20c641dbae90fd8d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/96fa25cef405ea452919559a0025d5dc16e30e4c",
"reference": "96fa25cef405ea452919559a0025d5dc16e30e4c",
"url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/875267200645e116261c31ff20c641dbae90fd8d",
"reference": "875267200645e116261c31ff20c641dbae90fd8d",
"shasum": ""
},
"require": {
@@ -1458,7 +1511,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.17-dev"
}
},
"autoload": {
@@ -1491,11 +1544,161 @@
"portable",
"shim"
],
"time": "2019-02-06T07:57:58+00:00"
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-php56",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "e3c8c138280cdfe4b81488441555583aa1984e23"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/e3c8c138280cdfe4b81488441555583aa1984e23",
"reference": "e3c8c138280cdfe4b81488441555583aa1984e23",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-util": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.17-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Php56\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"polyfill",
"portable",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-05-12T16:47:27+00:00"
},
{
"name": "symfony/polyfill-util",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "4afb4110fc037752cf0ce9869f9ab8162c4e20d7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4afb4110fc037752cf0ce9869f9ab8162c4e20d7",
"reference": "4afb4110fc037752cf0ce9869f9ab8162c4e20d7",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.17-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Util\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony utilities for portability of PHP codes",
"homepage": "https://symfony.com",
"keywords": [
"compat",
"compatibility",
"polyfill",
"shim"
],
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2020-05-12T16:14:59+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
@@ -1549,7 +1752,7 @@
},
{
"name": "symfony/routing",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
@@ -1623,7 +1826,7 @@
},
{
"name": "symfony/twig-bridge",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
@@ -1708,7 +1911,7 @@
},
{
"name": "symfony/yaml",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
@@ -1873,6 +2076,7 @@
"code",
"zf2"
],
"abandoned": "laminas/laminas-code",
"time": "2015-06-03T15:31:59+00:00"
},
{
@@ -1918,6 +2122,7 @@
"eventmanager",
"zf2"
],
"abandoned": "laminas/laminas-eventmanager",
"time": "2015-06-03T15:32:01+00:00"
},
{
@@ -1974,6 +2179,7 @@
"stdlib",
"zf2"
],
"abandoned": "laminas/laminas-stdlib",
"time": "2015-06-03T15:32:03+00:00"
}
],
@@ -2170,21 +2376,24 @@
},
{
"name": "michelf/php-markdown",
"version": "1.8.0",
"version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "01ab082b355bf188d907b9929cd99b2923053495"
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495",
"reference": "01ab082b355bf188d907b9929cd99b2923053495",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": ">=4.3 <5.8"
},
"type": "library",
"autoload": {
"psr-4": {
@@ -2212,7 +2421,7 @@
"keywords": [
"markdown"
],
"time": "2018-01-15T00:49:33+00:00"
"time": "2019-12-02T02:32:27+00:00"
},
{
"name": "nikic/php-parser",
@@ -2363,33 +2572,33 @@
},
{
"name": "phpspec/prophecy",
"version": "1.8.1",
"version": "v1.10.3",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76"
"reference": "451c3cd1418cf640de218914901e51b064abb093"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
"reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093",
"reference": "451c3cd1418cf640de218914901e51b064abb093",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.0.2",
"php": "^5.3|^7.0",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
"sebastian/comparator": "^1.1|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0"
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
"sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0"
},
"require-dev": {
"phpspec/phpspec": "^2.5|^3.2",
"phpspec/phpspec": "^2.5 || ^3.2",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8.x-dev"
"dev-master": "1.10.x-dev"
}
},
"autoload": {
@@ -2422,7 +2631,7 @@
"spy",
"stub"
],
"time": "2019-06-13T12:50:23+00:00"
"time": "2020-03-05T15:02:03+00:00"
},
{
"name": "phpunit/dbunit",
@@ -3417,7 +3626,7 @@
},
{
"name": "symfony/browser-kit",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
@@ -3474,7 +3683,7 @@
},
{
"name": "symfony/css-selector",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
@@ -3508,14 +3717,14 @@
"MIT"
],
"authors": [
{
"name": "Jean-François Simon",
"email": "jeanfrancois.simon@sensiolabs.com"
},
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Jean-François Simon",
"email": "jeanfrancois.simon@sensiolabs.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
@@ -3527,7 +3736,7 @@
},
{
"name": "symfony/dom-crawler",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
@@ -3584,7 +3793,7 @@
},
{
"name": "symfony/process",
"version": "v2.8.50",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
@@ -3643,5 +3852,6 @@
"platform-dev": [],
"platform-overrides": {
"php": "5.4.7"
}
},
"plugin-api-version": "1.1.0"
}

View File

@@ -1,4 +1,33 @@
<Files *>
Order Allow,Deny
Deny from All
</Files>
# 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_host.
# 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>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfVersion>
<IfVersion >= 2.4>
<Files "*">
Require all denied
</Files>
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfModule>
<IfModule mod_authz_core.c>
<Files "*">
Require all denied
</Files>
</IfModule>
</IfModule>

View File

@@ -128,6 +128,7 @@ services:
- '@user'
- '@ext.manager'
- '@log'
- '%cache.driver.class%'
tags:
- { name: console.command }
@@ -137,6 +138,7 @@ services:
- '@user'
- '@ext.manager'
- '@log'
- '%cache.driver.class%'
tags:
- { name: console.command }
@@ -146,6 +148,7 @@ services:
- '@user'
- '@ext.manager'
- '@log'
- '%cache.driver.class%'
tags:
- { name: console.command }
@@ -155,6 +158,7 @@ services:
- '@user'
- '@ext.manager'
- '@log'
- '%cache.driver.class%'
tags:
- { name: console.command }

View File

@@ -3,15 +3,20 @@ services:
class: phpbb\profilefields\manager
arguments:
- '@auth'
- '@config_text'
- '@dbal.conn'
- '@dbal.tools'
- '@dispatcher'
- '@language'
- '@log'
- '@request'
- '@template'
- '@profilefields.type_collection'
- '@user'
- '%tables.profile_fields%'
- '%tables.profile_fields_language%'
- '%tables.profile_fields_data%'
- '%tables.profile_fields_options_language%'
- '%tables.profile_fields_language%'
profilefields.lang_helper:
class: phpbb\profilefields\lang_helper

View File

@@ -156,6 +156,7 @@ $u_permissions = array(
'u_download' => array(0, 1),
'u_attach' => array(0, 1),
'u_sig' => array(0, 1),
'u_emoji' => array(0, 1),
'u_pm_attach' => array(0, 1),
'u_pm_bbcode' => array(0, 1),
'u_pm_smilies' => array(0, 1),

View File

@@ -50,6 +50,12 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<li><a href="#v3210rc2">Changes since 3.2.10-RC2</a></li>
<li><a href="#v3210rc1">Changes since 3.2.10-RC1</a></li>
<li><a href="#v329">Changes since 3.2.9</a></li>
<li><a href="#v329rc1">Changes since 3.2.9-RC1</a></li>
<li><a href="#v328">Changes since 3.2.8</a></li>
<li><a href="#v328rc1">Changes since 3.2.8-RC1</a></li>
<li><a href="#v327">Changes since 3.2.7</a></li>
<li><a href="#v326">Changes since 3.2.6</a></li>
<li><a href="#v326rc1">Changes since 3.2.6-RC1</a></li>
@@ -139,6 +145,251 @@
<div class="inner">
<div class="content">
<a name="v3210rc2"></a><h3>Changes since 3.2.10-RC2</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16417">PHPBB3-16417</a>] - SQL fatal error while updating database from older versions via CLI</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16524">PHPBB3-16524</a>] - General error (SQL ERROR) on adding emoji character to the profile field</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16534">PHPBB3-16534</a>] - Passwords converted from phpBB2 can have invalid hash</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16539">PHPBB3-16539</a>] - General error (SQL error) on posting page in smilies mode</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16550">PHPBB3-16550</a>] - compact(): Undefined variable: url - in PMs</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16554">PHPBB3-16554</a>] - Align all .htaccess files to support Apache 2.4 mod_authz_core directives</li>
</ul>
<h4>Security Issue</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/SECURITY-259">SECURITY-259</a>] - Server-Side Request Forgery via FastImageSize in s9e textformatter</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/SECURITY-257">SECURITY-257</a>] - Potential RCE via Phar Deserialization through Legacy BBCode Parser</li>
</ul>
<a name="v3210rc1"></a><h3>Changes since 3.2.10-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16505">PHPBB3-16505</a>] - PHP debug warning while using \phpbb\language\language\lang_array() function</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16507">PHPBB3-16507</a>] - White page when searching users' posts</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16508">PHPBB3-16508</a>] - Whois not working for IPv6 addresses</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16510">PHPBB3-16510</a>] - Missing rows in config table on new install</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16511">PHPBB3-16511</a>] - Fatal error when deleting user in ACP</li>
</ul>
<a name="v329"></a><h3>Changes since 3.2.9</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10506">PHPBB3-10506</a>] - Not confirming &quot;Save as Draft&quot; strips attachments from PMs</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13426">PHPBB3-13426</a>] - Timezone related fatal error after upgrade to 3.1.2</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13867">PHPBB3-13867</a>] - Profile field types need an enable/disable mechanism</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13914">PHPBB3-13914</a>] - Could not get style data via MySQL DB auto_increment_offset != 1 </li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15194">PHPBB3-15194</a>] - Cannot remove group avatar in UCP (manage group)</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15275">PHPBB3-15275</a>] - Post details: Look up IP links don't properly work</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15395">PHPBB3-15395</a>] - Very slow FTS on PostgreSQL</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15438">PHPBB3-15438</a>] - Use wrong word in ACP for logged administrators actions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15560">PHPBB3-15560</a>] - Wrong redirection upon hard delete after soft delete in viewtopic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15591">PHPBB3-15591</a>] - Users with disabled &quot;Can send instant messages&quot; permission can view jabber address</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15712">PHPBB3-15712</a>] - Inserting an emoji in PM subject field causes errors</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15766">PHPBB3-15766</a>] - &quot;No role assigned....&quot; for forum permissions is ambiguous</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15887">PHPBB3-15887</a>] - Firefox confuses username and e-mail when storing passwords</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15979">PHPBB3-15979</a>] - Restoring deleted post on edit does not update last post info</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16060">PHPBB3-16060</a>] - auto-prune of shadow topics triggered by prune_all_forums updates wrong timestamp</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16149">PHPBB3-16149</a>] - Missing profile field data</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16222">PHPBB3-16222</a>] - Timezone suggestion in UCP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16234">PHPBB3-16234</a>] - Search syntax broken when using Sphinx Fulltext backend</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16245">PHPBB3-16245</a>] - Overflow in MSSQL attempting to manage attachments when collection &gt; 2.1 GB</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16289">PHPBB3-16289</a>] - U_VIEW_REPORT in emails is incorrectly HTML-encoded</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16291">PHPBB3-16291</a>] - MCP Front is missing report time</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16296">PHPBB3-16296</a>] - Unable to delete or mark PMs in UCP folder view</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16310">PHPBB3-16310</a>] - S_SOFTDELETE_ALLOWED condition in posting.php is wrong and causes soft delete option to appear when it should not</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16316">PHPBB3-16316</a>] - navbar_header.html of prosilver style breaks Rich-Markup</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16326">PHPBB3-16326</a>] - Passwort Reset - Template - missing class for new and confirm password</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16332">PHPBB3-16332</a>] - Language strings for CODE and QUOTE are missing in the MCP post details and in the member profiles</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16335">PHPBB3-16335</a>] - $display_cat and $download_link are undefined variables for core.parse_attachments_modify_template_data when $denied is true</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16339">PHPBB3-16339</a>] - Poll's voting options are not fully Ajaxed</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16344">PHPBB3-16344</a>] - phpbb_validate_email uses non-existent language keys</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16348">PHPBB3-16348</a>] - user_ban double free of $result when banning a non-existent or disallowed username on command line</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16356">PHPBB3-16356</a>] - Saving a draft does not delete orphaned attachments from the server</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16358">PHPBB3-16358</a>] - Attachment tab should be removed when there are no filters</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16367">PHPBB3-16367</a>] - Feed controller is not actually setting character set of response</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16377">PHPBB3-16377</a>] - Undefined index navlinks in navbar_header</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16391">PHPBB3-16391</a>] - Language file info_mcp_xxx.php from extensions should be included in ACP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16399">PHPBB3-16399</a>] - Emoji's in topic title cause errors</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16403">PHPBB3-16403</a>] - Attachment icon always displayed in list of reported message</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16407">PHPBB3-16407</a>] - S_MESSAGE_REPORTED and L_MESSAGE_REPORTED aren't defined anywhere</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16416">PHPBB3-16416</a>] - A non-numeric value encountered in ACP attachments settings</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16418">PHPBB3-16418</a>] - A non-numeric value encountered - ACP board start date</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16422">PHPBB3-16422</a>] - bbcode URL tag breaking URL's?</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16423">PHPBB3-16423</a>] - Add Aria Engine to list of Fulltext Supported</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16428">PHPBB3-16428</a>] - Allowed schemes in links and similar fields should check field content</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16432">PHPBB3-16432</a>] - PHP Fatal error: APCuIterator::__construct(): APC must be enabled to use APCuIterator</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16437">PHPBB3-16437</a>] - Forum permissions don't appear for logged users who cannot post a new topic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16453">PHPBB3-16453</a>] - Always load permission lang files before core.permissions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16467">PHPBB3-16467</a>] - phpBB3 does not work with spaces in PostgreSQL database passwords</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16480">PHPBB3-16480</a>] - Fix Emoji in report post</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16485">PHPBB3-16485</a>] - Fix Emoji in logs for warning message</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16486">PHPBB3-16486</a>] - Wrong configuration DB update in 3.2.0-a1 migration</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16487">PHPBB3-16487</a>] - Wrong CDN URL for fontawesome in 3.2.0 migration</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16500">PHPBB3-16500</a>] - Copying topics results in rearranging of inline attachments </li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16503">PHPBB3-16503</a>] - WhoIs lookup has error message in MCP</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15370">PHPBB3-15370</a>] - Spinning indicator missing when updating permissions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15672">PHPBB3-15672</a>] - Keep same format in Submit changes.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16163">PHPBB3-16163</a>] - No error message when there is no displayed post in the MCP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16328">PHPBB3-16328</a>] - Inform users about PHP requirements in PHP 3.3</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16350">PHPBB3-16350</a>] - Move acp/mcp ban code to functions_admin.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16351">PHPBB3-16351</a>] - Use CHMOD constants from filesystem_interface</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16352">PHPBB3-16352</a>] - Deprecate unused functions/classes</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16370">PHPBB3-16370</a>] - Add core events for Notification</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16381">PHPBB3-16381</a>] - Add core event to Modify Topics SQL</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16383">PHPBB3-16383</a>] - Add core events to modify friends list</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16384">PHPBB3-16384</a>] - Add template events friends list username {prepend/append}</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16388">PHPBB3-16388</a>] - Add new events in viewforum_body.html and viewtopic_body.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16406">PHPBB3-16406</a>] - Event core.notification_manager_add_notifications_for_users_modify_data incorrectly placed</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16411">PHPBB3-16411</a>] - Add vars to notification core events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16421">PHPBB3-16421</a>] - Add contact field icon template events to viewtopic_body.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16424">PHPBB3-16424</a>] - Add base_url to generate_smilies events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16425">PHPBB3-16425</a>] - Add event core.generate_smilies_modify_sql</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16429">PHPBB3-16429</a>] - Add vars to 2 ACP User core events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16433">PHPBB3-16433</a>] - Add data array to core.ucp_register_user_row_after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16443">PHPBB3-16443</a>] - Add event core.ucp_pm_compose_modify_parse_after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16444">PHPBB3-16444</a>] - Add event core.ucp_pm_view_message_before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16446">PHPBB3-16446</a>] - Add event core.message_history_modify_rowset</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16447">PHPBB3-16447</a>] - Add event core.ucp_pm_compose_compose_pm_basic_info_query_after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16448">PHPBB3-16448</a>] - Add event core.mcp_get_post_data_after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16450">PHPBB3-16450</a>] - ACP permission tabs don't use all available space</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16456">PHPBB3-16456</a>] - Add event core.text_formatter_s9e_get_errors</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16458">PHPBB3-16458</a>] - Add template events to acp_profile.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16461">PHPBB3-16461</a>] - Ignore .idea and node_modules</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16463">PHPBB3-16463</a>] - Fix &quot;acp_board.php&quot; where &quot;ACP_SUBMIT_CHANGES&quot; is not displayed.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16468">PHPBB3-16468</a>] - Amend DocBlocks for user_delete()</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16494">PHPBB3-16494</a>] - Update composer and composer dependencies</li>
</ul>
<h4>New Feature</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16329">PHPBB3-16329</a>] - Strip Exif metadata from uploaded image attachments</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16330">PHPBB3-16330</a>] - Enable ACP option to specify image compression level</li>
</ul>
<h4>Sub-task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16233">PHPBB3-16233</a>] - Enable exact phrase searching with Sphinx Fulltext</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15609">PHPBB3-15609</a>] - Discrepancy and bugs between moderation queue and reports</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16121">PHPBB3-16121</a>] - Add footer-row to simple_footer.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16122">PHPBB3-16122</a>] - RANK_IMG, GROUP_RANK and RANK_TITLE variables are useless in some template files</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16392">PHPBB3-16392</a>] - Update composer &amp; dependencies</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16415">PHPBB3-16415</a>] - Use API token for appveyor builds</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16419">PHPBB3-16419</a>] - Add mrgoldy to CREDITS.txt</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16496">PHPBB3-16496</a>] - The help line text for custom BBcode could be wrongly displayed</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16506">PHPBB3-16506</a>] - Update credits to latest state</li>
</ul>
<a name="v329rc1"></a><h3>Changes since 3.2.9-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15592">PHPBB3-15592</a>] - &quot;Place inline&quot; button appears when BBcode is disabled (Post settings)</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16269">PHPBB3-16269</a>] - Sphinx backend indexes HTML markup as keywords</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16282">PHPBB3-16282</a>] - Default jQuery CDN URL is outdated on new installs</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16271">PHPBB3-16271</a>] - Add support for 3.3.x API documentation</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16279">PHPBB3-16279</a>] - Add permission for Emojii in topic title</li>
</ul>
<h4>Security</h4>
<ul>
<li>[SECURITY-249] - Group avatar overwrite on invalid submit</li>
<li>[SECURITY-250] - Group leader can be tricked into approving user</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[SECURITY-251] - Unwanted move of PMs to folders</li>
<li>[SECURITY-252] - PMs of unsuspecting users can be marked as important</li>
<li>[SECURITY-253] - PM export without proper validation</li>
</ul>
<a name="v328"></a><h3>Changes since 3.2.8</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14815">PHPBB3-14815</a>] - The facebook page link is not displayed properly in memberlist.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15643">PHPBB3-15643</a>] - $phpbb_filesystem-&gt;resolve_path() may trigger open_basedir restriction</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15902">PHPBB3-15902</a>] - Out of range error with Sphinx search</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16056">PHPBB3-16056</a>] - JPEG dimensions undetectable for some kind of jpeg files</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16076">PHPBB3-16076</a>] - Limit attachment size by extension group</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16141">PHPBB3-16141</a>] - plupload chunk_size calculation incorrect when one or more settings are 'unlimited'</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16150">PHPBB3-16150</a>] - Post title link urls not reliable when shared</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16156">PHPBB3-16156</a>] - Bots see both register and logout links in the navbar</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16157">PHPBB3-16157</a>] - Incorrect FORM_INVALID error message while sending email form</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16181">PHPBB3-16181</a>] - OAuth provider id needs to be quoted</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16184">PHPBB3-16184</a>] - Mark read button only works once</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16199">PHPBB3-16199</a>] - Guest posting CAPTCHA is being generated with no guest posting auth</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16209">PHPBB3-16209</a>] - Nginx example configuration file blocks an image in the ACP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16210">PHPBB3-16210</a>] - Terms of use should not be skippable</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16211">PHPBB3-16211</a>] - COPPA should not be skippable</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16216">PHPBB3-16216</a>] - Disable xdebug in travis builds</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16217">PHPBB3-16217</a>] - Enable opcache in travis CI builds</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16228">PHPBB3-16228</a>] - BBCode definitions with an optional attribute and a non-TEXT content are not merged correctly</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16242">PHPBB3-16242</a>] - Redirect loop when install folder doesn't exist</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16252">PHPBB3-16252</a>] - Ignore non-BBCodes when looking for unauthorized markup</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16257">PHPBB3-16257</a>] - Typo in Email Settings section</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16258">PHPBB3-16258</a>] - Sample Sphinx configuration file causes delta index to only include the most recent post</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16084">PHPBB3-16084</a>] - Pointless radio button for database backup in 3.2.7 </li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16139">PHPBB3-16139</a>] - Add core.viewtopic_modify_quick_reply_template_vars</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16140">PHPBB3-16140</a>] - Add new event to UCP Edit Profile Page</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16143">PHPBB3-16143</a>] - Add core events for move topics</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16144">PHPBB3-16144</a>] - NO_STYLE_DATA - Provide extra fallback to board's default style for $user.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16146">PHPBB3-16146</a>] - Add core event for after move the forum</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16148">PHPBB3-16148</a>] - Add template events to acp_groups.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16151">PHPBB3-16151</a>] - Enable Emojis and rich text in forum name</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16153">PHPBB3-16153</a>] - Enable Emojis and rich text in topic title</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16159">PHPBB3-16159</a>] - Wrap post times in html time tag</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16174">PHPBB3-16174</a>] - Event for disabling cookie creation</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16182">PHPBB3-16182</a>] - Add core.generate_smilies_modify_rowset</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16183">PHPBB3-16183</a>] - Add core.generate_smilies_count_sql_before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16203">PHPBB3-16203</a>] - Enable Emojis and rich text in sent Emails</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16247">PHPBB3-16247</a>] - Quote PM has no identifier</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16251">PHPBB3-16251</a>] - Shortened link text shouldn't override custom plugins</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15422">PHPBB3-15422</a>] - Remove the unnecessary helpline function and help_line variable</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16147">PHPBB3-16147</a>] - Updated tokens legend in BBCodes ACP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16160">PHPBB3-16160</a>] - Add script for generating package json file</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16172">PHPBB3-16172</a>] - Add &quot;Rank:&quot; or &quot;Group rank:&quot; in the memberlist</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16224">PHPBB3-16224</a>] - Update composer dependencies</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16246">PHPBB3-16246</a>] - Prettify and update README Automated Testing section</li>
</ul>
<a name="v328rc1"></a><h3>Changes since 3.2.8-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15467">PHPBB3-15467</a>] - Permission settings do not take affect when set using All YES/NO/NEVER</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16123">PHPBB3-16123</a>] - PHP error (Array to string conversion) on new user registration if email address is banned and &quot; Reason shown to the banned&quot; is empty</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16136">PHPBB3-16136</a>] - Missing word in 'AUTH_PROVIDER_OAUTH_ERROR_ALREADY_LINKED' </li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16134">PHPBB3-16134</a>] - Exclude group leaders on group member purge</li>
</ul>
<h4>Security Issue</h4>
<ul>
<li>[SECURITY-243] - CSS injection via BBCode tag</li>
<li>[SECURITY-244] - Missing form token check when handling attachments</li>
<li>[SECURITY-246] - Missing form token check when managing BBCodes</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[SECURITY-247] - Disable MySQLi local infile to prevent local file inclusion</li>
</ul>
<a name="v327"></a><h3>Changes since 3.2.7</h3>
<h4>Bug</h4>
<ul>
@@ -193,7 +444,6 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16078">PHPBB3-16078</a>] - Use chrome webdriver for UI tests</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16089">PHPBB3-16089</a>] - Add core.confirm_box_ajax_before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16097">PHPBB3-16097</a>] - Add core.viewtopic_gen_sort_selects_before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16101">PHPBB3-16101</a>] - Add Referrer-Policy header</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16102">PHPBB3-16102</a>] - Add core.posting_modify_post_subject</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16103">PHPBB3-16103</a>] - Add core.pm_modify_message_subject</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16106">PHPBB3-16106</a>] - Add core.mcp_main_before</li>
@@ -212,6 +462,10 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16112">PHPBB3-16112</a>] - Update composer dependencies to latest</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16119">PHPBB3-16119</a>] - The text input for poll question has a too high maxlength attribute</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16101">PHPBB3-16101</a>] - Add Referrer-Policy header</li>
</ul>
<a name="v326"></a><h3>Changes since 3.2.6</h3>
<h4>Bug</h4>

View File

@@ -1,7 +1,7 @@
/**
*
* phpBB © Copyright phpBB Limited 2003-2016
* http://www.phpbb.com
* phpBB © Copyright phpBB Limited 2003-2019
* https://www.phpbb.com
*
* phpBB is free software. You can redistribute it and/or modify it
* under the terms of the GNU General Public License, version 2 (GPL-2.0)
@@ -22,17 +22,15 @@ phpBB Project Manager: Marshalrusty (Yuriy Rusko)
phpBB Lead Developer: Marc (Marc Alexander)
phpBB Developers: bantu (Andreas Fischer)
CHItA (Máté Bartus)
phpBB Developers: CHItA (Máté Bartus)
Derky (Derk Ruitenbeek)
Elsensee (Oliver Schramm)
Hanakin (Michael Miday)
MichaelC (Michael Cullum)
mrgoldy (Gijs Martens)
Nicofuma (Tristan Darricau)
rubencm (Rubén Calvo)
For a list of phpBB Team members, please see:
http://www.phpbb.com/about/team/
https://www.phpbb.com/about/team/
For a full list of phpBB code contributors, please see:
https://github.com/phpbb/phpbb/graphs/contributors
@@ -53,16 +51,19 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
APTX (Marek A. Ruszczyński) [12/2007 - 04/2011]
Arty (Vjacheslav Trushkin) [02/2012 - 07/2012]
Ashe (Ludovic Arnaud) [10/2002 - 11/2003, 06/2006 - 10/2006]
bantu (Andreas Fischer) [07/2009 - 06/2020]
BartVB (Bart van Bragt) [11/2000 - 03/2006]
ckwalsh (Cullen Walsh) [01/2010 - 07/2011]
DavidMJ (David M.) [12/2005 - 08/2009]
dhn (Dominik Dröscher) [05/2007 - 01/2011]
dhruv.goel92 (Dhruv Goel) [04/2013 - 05/2016]
Elsensee (Oliver Schramm) [03/2015 - 06/2020]
EXreaction (Nathan Guse) [07/2012 - 05/2014]
GrahamJE (Graham Eames) [09/2005 - 11/2006]
igorw (Igor Wiedler) [08/2010 - 02/2013]
imkingdavid (David King) [11/2012 - 06/2014]
kellanved (Henry Sudhof) [04/2007 - 03/2011]
MichaelC (Michael Cullum) [11/2017 - 09/2019]
nickvergessen (Joas Schilling)[04/2010 - 12/2015]
Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
prototech (Cesar Gallegos) [01/2014 - 12/2016]

View File

@@ -172,6 +172,18 @@ acp_group_options_before
* Since: 3.1.0-b4
* Purpose: Add additional options to group settings (before GROUP_FOUNDER_MANAGE)
acp_group_types_append
===
* Location: adm/style/acp_groups.html
* Since: 3.2.9-RC1
* Purpose: Add additional group type options to group settings (append the list)
acp_group_types_prepend
===
* Location: adm/style/acp_groups.html
* Since: 3.2.9-RC1
* Purpose: Add additional group type options to group settings (prepend the list)
acp_groups_find_username_append
===
* Location: adm/style/acp_groups.html
@@ -398,6 +410,27 @@ acp_posting_buttons_custom_tags_before
* Since: 3.1.10-RC1
* Purpose: Add content before the custom BBCodes in the ACP
acp_profile_basic_options_after
===
* Locations:
+ adm/style/acp_profile.html
* Since: 3.2.10-RC1
* Purpose: Add content after custom profile field basic options in the ACP
acp_profile_basic_options_before
===
* Locations:
+ adm/style/acp_profile.html
* Since: 3.2.10-RC1
* Purpose: Add content before custom profile field basic options in the ACP
acp_profile_contact_after
===
* Locations:
+ adm/style/acp_profile.html
* Since: 3.2.10-RC1
* Purpose: Add content after contact specific custom profile field option in the ACP
acp_profile_contact_before
===
* Locations:
@@ -412,6 +445,13 @@ acp_profile_contact_last
* Since: 3.1.11-RC1
* Purpose: Add contact specific options to custom profile fields in the ACP
acp_profile_options_before
===
* Locations:
+ adm/style/acp_profile.html
* Since: 3.2.10-RC1
* Purpose: Add content before custom profile field options in the ACP
acp_profile_step_one_lang_after
===
* Locations:
@@ -419,6 +459,20 @@ acp_profile_step_one_lang_after
* Since: 3.1.11-RC1
* Purpose: Add extra lang specific options to custom profile field step one configuration in the ACP
acp_profile_visibility_options_after
===
* Locations:
+ adm/style/acp_profile.html
* Since: 3.2.10-RC1
* Purpose: Add content after custom profile field visibility options in the ACP
acp_profile_visibility_options_before
===
* Locations:
+ adm/style/acp_profile.html
* Since: 3.2.10-RC1
* Purpose: Add content before custom profile field visibility options in the ACP
acp_prune_forums_append
===
* Locations:
@@ -1882,6 +1936,34 @@ posting_editor_submit_buttons
* Since: 3.1.6-RC1
* Purpose: Add custom buttons in the posting editor
posting_editor_topic_icons_after
===
* Locations:
+ styles/prosilver/template/posting_editor.html
* Since: 3.2.10-RC1
* Purpose: Add custom data after the topic icons loop
posting_editor_topic_icons_append
===
* Locations:
+ styles/prosilver/template/posting_editor.html
* Since: 3.2.10-RC1
* Purpose: Append custom data to the topic icon
posting_editor_topic_icons_before
===
* Locations:
+ styles/prosilver/template/posting_editor.html
* Since: 3.2.10-RC1
* Purpose: Add custom data before the topic icons loop
posting_editor_topic_icons_prepend
===
* Locations:
+ styles/prosilver/template/posting_editor.html
* Since: 3.2.10-RC1
* Purpose: Prepend custom data to the topic icon
posting_layout_include_panel_body
===
* Locations:
@@ -2364,6 +2446,34 @@ ucp_friend_list_before
* Since: 3.1.0-a4
* Purpose: Add optional elements before list of friends in UCP
ucp_header_friends_offline_username_full_append
===
* Locations:
+ styles/prosilver/template/ucp_header.html
* Since: 3.2.10-RC1
* Purpose: Append information to offline friends username in UCP
ucp_header_friends_offline_username_full_prepend
===
* Locations:
+ styles/prosilver/template/ucp_header.html
* Since: 3.2.10-RC1
* Purpose: Prepend information to offline friends username in UCP
ucp_header_friends_online_username_full_append
===
* Locations:
+ styles/prosilver/template/ucp_header.html
* Since: 3.2.10-RC1
* Purpose: Append information to online friends username in UCP
ucp_header_friends_online_username_full_prepend
===
* Locations:
+ styles/prosilver/template/ucp_header.html
* Since: 3.2.10-RC1
* Purpose: Prepend information to online friends username in UCP
ucp_main_front_user_activity_after
===
* Locations:
@@ -2634,6 +2744,13 @@ ucp_profile_profile_info_before
* Since: 3.1.4-RC1
* Purpose: Add options in profile page fieldset - before jabber field.
ucp_profile_profile_info_birthday_label_append
===
* Locations:
+ styles/prosilver/template/ucp_profile_profile_info.html
* Since: 3.2.9-RC1
* Purpose: Add more text to birthday label, such as required asterisk
ucp_profile_register_details_after
===
* Locations:
@@ -2711,6 +2828,13 @@ viewforum_body_last_post_author_username_prepend
* Since: 3.2.4-RC1
* Purpose: Prepend information to last post author username of member
viewforum_body_online_list_before
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
* Since: 3.2.10-RC1
* Purpose: Add content before the online users list
viewforum_body_topic_author_username_append
===
* Locations:
@@ -2860,6 +2984,20 @@ viewtopic_body_contact_fields_before
* Purpose: Add data before the contact fields on the user profile when viewing
a post
viewtopic_body_contact_icon_append
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.2.10-RC1
* Purpose: Add content directly after the contact field icons in post user miniprofiles
viewtopic_body_contact_icon_prepend
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.2.10-RC1
* Purpose: Add content directly before the contact field icons in post user miniprofiles
viewtopic_body_footer_before
===
* Locations:
@@ -2868,6 +3006,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_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.2.10-RC1
* Purpose: Add content before the online users list
viewtopic_body_pagination_top_after
===
* Locations:

View File

@@ -70,7 +70,7 @@ http {
}
# Deny access to internal phpbb files.
location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb|store|vendor) {
location ~ /(config\.php|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.
@@ -93,7 +93,7 @@ http {
# Correctly pass scripts for installer
location /install/ {
# phpBB uses index.htm
try_files $uri $uri/ @rewrite_installapp;
try_files $uri $uri/ @rewrite_installapp =404;
# Pass the php scripts to fastcgi server specified in upstream declaration.
location ~ \.php(/|$) {
@@ -104,7 +104,7 @@ http {
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
try_files $uri $uri/ /install/app.php$is_args$args;
try_files $uri $uri/ /install/app.php$is_args$args =404;
fastcgi_pass php;
}
}

View File

@@ -41,7 +41,7 @@ source source_phpbb_{SPHINX_ID}_main
}
source source_phpbb_{SPHINX_ID}_delta : source_phpbb_{SPHINX_ID}_main
{
sql_query_pre =
sql_query_pre = SET NAMES 'utf8'
sql_query_range =
sql_range_step =
sql_query = SELECT \
@@ -61,7 +61,7 @@ source source_phpbb_{SPHINX_ID}_delta : source_phpbb_{SPHINX_ID}_main
WHERE \
p.topic_id = t.topic_id \
AND p.post_id >= ( SELECT max_doc_id FROM phpbb_sphinx WHERE counter_id=1 )
sql_query_pre =
sql_query_post_index =
}
index index_phpbb_{SPHINX_ID}_main
{
@@ -70,10 +70,16 @@ index index_phpbb_{SPHINX_ID}_main
docinfo = extern
morphology = none
stopwords =
wordforms = # optional, specify path to wordforms file. See ./docs/sphinx_wordforms.txt for example
exceptions = # optional, specify path to exceptions file. See ./docs/sphinx_exceptions.txt for example
min_word_len = 2
charset_table = U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF
min_prefix_len = 0
min_infix_len = 0
ignore_chars = U+0027, U+002C
min_prefix_len = 3 # Minimum number of characters for wildcard searches by prefix (min 1). Default is 3. If specified, set min_infix_len to 0
min_infix_len = 0 # Minimum number of characters for wildcard searches by infix (min 2). If specified, set min_prefix_len to 0
html_strip = 1
index_exact_words = 0 # Set to 1 to enable exact search operator. Requires wordforms or morphology
blend_chars = U+23, U+24, U+25, U+26, U+40
}
index index_phpbb_{SPHINX_ID}_delta : index_phpbb_{SPHINX_ID}_main
{

View File

@@ -0,0 +1,97 @@
# Sample tokenised exception file for phpBB using Sphinx search engine
#
# Exceptions allow one or more tokens to be mapped to a single keyword.
# Exceptions are defined BEFORE tokenisation and are therefore case sensitive and accept characters that would normally be excluded such as punctuation.
# Exceptions are applied to both indexing and searching, such that search queries for one mapped variation will find all others.
# List needs to be customised according to board and language requirements.
# Please remove all commented lines before use.
#
# See Sphinx documentation for further details: http://sphinxsearch.com/docs/current/conf-exceptions.html
#
# Examples:
#
# Acronyms and initialisms
U.S.A. => usa
u.s.a. => usa
U.S.A => usa
u.s.a => usa
USA => usa
U.S. => usa
u.s. => usa
U.S => usa
u.s => usa
US => usa
# Abbreviations using ampersand
profit & loss => p&l
profit and loss => p&l
P & L => p&l
P and L => p&l
p & l => p&l
p and l => p&l
# Ampersands
& => and
# Ordinals
1st => first
1ST => first
2nd => second
2ND => second
3rd => third
3RD => third
4th => fourth
4TH => fourth
5th => fifth
5TH => fifth
6th => sixth
6TH => sixth
7th => seventh
7TH => seventh
8th => eighth
8TH => eighth
9th => ninth
9TH => ninth
10th => tenth
10TH => tenth
# Numerals
1 => one
2 => two
3 => three
4 => four
5 => five
6 => six
7 => seven
8 => eight
9 => nine
10 => ten
11 => eleven
12 => twelve
13 => thirteen
14 => fourteen
15 => fifteen
16 => sixteen
17 => seventeen
18 => eighteen
19 => nineteen
20 => twenty
30 => thirty
40 => forty
50 => fifty
60 => sixty
70 => seventy
80 => eighty
90 => ninety
100 => one hundred
1000 => one thousand
10000 => ten thousand
100000 => one hundred thousand
1000000 => one million
1000000000 => one billion
# Numbered groupings / decades
10s => tens
20s => twenties
30s => thirties
40s => forties
50s => fifties
60s => sixties
70s => seventies
80s => eighties
90s => nineties

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,33 @@
<Files *>
Order Allow,Deny
Deny from All
</Files>
# 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_host.
# 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>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfVersion>
<IfVersion >= 2.4>
<Files "*">
Require all denied
</Files>
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfModule>
<IfModule mod_authz_core.c>
<Files "*">
Require all denied
</Files>
</IfModule>
</IfModule>

View File

@@ -1,4 +1,33 @@
<Files *>
Order Allow,Deny
Deny from All
</Files>
# 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_host.
# 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>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfVersion>
<IfVersion >= 2.4>
<Files "*">
Require all denied
</Files>
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfModule>
<IfModule mod_authz_core.c>
<Files "*">
Require all denied
</Files>
</IfModule>
</IfModule>

View File

@@ -1,4 +1,33 @@
<Files *>
Order Allow,Deny
Deny from All
</Files>
# 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_host.
# 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>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfVersion>
<IfVersion >= 2.4>
<Files "*">
Require all denied
</Files>
</IfVersion>
</IfModule>
<IfModule !mod_version.c>
<IfModule !mod_authz_core.c>
<Files "*">
Order Allow,Deny
Deny from All
</Files>
</IfModule>
<IfModule mod_authz_core.c>
<Files "*">
Require all denied
</Files>
</IfModule>
</IfModule>

View File

@@ -123,17 +123,29 @@ class acp_attachments
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
}
$sql = 'SELECT group_name, cat_id
$allowed_pm_groups = [];
$allowed_post_groups = [];
$s_assigned_groups = [];
$sql = 'SELECT group_id, group_name, cat_id, allow_group, allow_in_pm
FROM ' . EXTENSION_GROUPS_TABLE . '
WHERE cat_id > 0
ORDER BY cat_id';
$result = $db->sql_query($sql);
$s_assigned_groups = array();
while ($row = $db->sql_fetchrow($result))
{
$row['group_name'] = $this->language->is_set('EXT_GROUP_' . utf8_strtoupper($row['group_name'])) ? $this->language->lang('EXT_GROUP_' . utf8_strtoupper($row['group_name'])) : $row['group_name'];
$s_assigned_groups[$row['cat_id']][] = $row['group_name'];
if ($row['allow_group'])
{
$allowed_post_groups[] = $row['group_id'];
}
if ($row['allow_in_pm'])
{
$allowed_pm_groups[] = $row['group_id'];
}
}
$db->sql_freeresult($result);
@@ -151,13 +163,13 @@ class acp_attachments
'allow_attachments' => array('lang' => 'ALLOW_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'allow_pm_attach' => array('lang' => 'ALLOW_PM_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'max_attachments' => array('lang' => 'MAX_ATTACHMENTS', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => false),
'max_attachments_pm' => array('lang' => 'MAX_ATTACHMENTS_PM', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => false),
'upload_path' => array('lang' => 'UPLOAD_DIR', 'validate' => 'wpath', 'type' => 'text:25:100', 'explain' => true),
'display_order' => array('lang' => 'DISPLAY_ORDER', 'validate' => 'bool', 'type' => 'custom', 'method' => 'display_order', 'explain' => true),
'attachment_quota' => array('lang' => 'ATTACH_QUOTA', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
'max_filesize' => array('lang' => 'ATTACH_MAX_FILESIZE', 'validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
'max_filesize_pm' => array('lang' => 'ATTACH_MAX_PM_FILESIZE','validate' => 'string', 'type' => 'custom', 'method' => 'max_filesize', 'explain' => true),
'max_attachments' => array('lang' => 'MAX_ATTACHMENTS', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => false),
'max_attachments_pm' => array('lang' => 'MAX_ATTACHMENTS_PM', 'validate' => 'int:0:999', 'type' => 'number:0:999', 'explain' => false),
'secure_downloads' => array('lang' => 'SECURE_DOWNLOADS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'secure_allow_deny' => array('lang' => 'SECURE_ALLOW_DENY', 'validate' => 'int', 'type' => 'custom', 'method' => 'select_allow_deny', 'explain' => true),
'secure_allow_empty_referer' => array('lang' => 'SECURE_EMPTY_REFERRER', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
@@ -169,6 +181,8 @@ class acp_attachments
'img_max_thumb_width' => array('lang' => 'MAX_THUMB_WIDTH', 'validate' => 'int:0:999999999999999', 'type' => 'number:0:999999999999999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'img_min_thumb_filesize' => array('lang' => 'MIN_THUMB_FILESIZE', 'validate' => 'int:0:999999999999999', 'type' => 'number:0:999999999999999', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']),
'img_max' => array('lang' => 'MAX_IMAGE_SIZE', 'validate' => 'int:0:9999', 'type' => 'dimension:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'img_strip_metadata' => array('lang' => 'IMAGE_STRIP_METADATA', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'img_quality' => array('lang' => 'IMAGE_QUALITY', 'validate' => 'int:50:90', 'type' => 'number:50:90', 'explain' => true, 'append' => ' &percnt;'),
'img_link' => array('lang' => 'IMAGE_LINK_SIZE', 'validate' => 'int:0:9999', 'type' => 'dimension:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
)
);
@@ -211,6 +225,9 @@ class acp_attachments
if (in_array($config_name, array('attachment_quota', 'max_filesize', 'max_filesize_pm')))
{
$size_var = $request->variable($config_name, '');
$config_value = (int) $config_value;
$this->new_config[$config_name] = $config_value = ($size_var == 'kb') ? round($config_value * 1024) : (($size_var == 'mb') ? round($config_value * 1048576) : $config_value);
}
@@ -259,10 +276,14 @@ class acp_attachments
$db->sql_freeresult($result);
$template->assign_vars(array(
'S_EMPTY_PM_GROUPS' => empty($allowed_pm_groups),
'S_EMPTY_POST_GROUPS' => empty($allowed_post_groups),
'S_SECURE_DOWNLOADS' => $this->new_config['secure_downloads'],
'S_DEFINED_IPS' => ($defined_ips != '') ? true : false,
'S_WARNING' => (count($error)) ? true : false,
'U_EXTENSION_GROUPS' => append_sid("{$phpbb_admin_path}index.$phpEx", "i=$id&amp;mode=ext_groups"),
'WARNING_MSG' => implode('<br />', $error),
'DEFINED_IPS' => $defined_ips,
@@ -1291,7 +1312,7 @@ class acp_attachments
*/
public function get_attachment_stats($limit = '')
{
$sql = 'SELECT COUNT(a.attach_id) AS num_files, SUM(a.filesize) AS upload_dir_size
$sql = 'SELECT COUNT(a.attach_id) AS num_files, SUM(' . $this->db->cast_expr_to_bigint('a.filesize') . ') AS upload_dir_size
FROM ' . ATTACHMENTS_TABLE . " a
WHERE a.is_orphan = 0
$limit";
@@ -1478,7 +1499,7 @@ class acp_attachments
try
{
$this->filesystem->phpbb_chmod($phpbb_root_path . $upload_dir, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($phpbb_root_path . $upload_dir, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{

View File

@@ -156,7 +156,8 @@ class acp_ban
break;
}
self::display_ban_options($mode);
display_ban_end_options();
display_ban_options($mode);
$template->assign_vars(array(
'L_TITLE' => $this->page_title,
@@ -173,126 +174,4 @@ class acp_ban
'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=acp_ban&amp;field=ban'),
));
}
/**
* Display ban options
*/
static public function display_ban_options($mode)
{
global $user, $db, $template;
// Ban length options
$ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['UNTIL'] . ' -&gt; ');
$ban_end_options = '';
foreach ($ban_end_text as $length => $text)
{
$ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
}
switch ($mode)
{
case 'user':
$field = 'username';
$sql = 'SELECT b.*, u.user_id, u.username, u.username_clean
FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u
WHERE (b.ban_end >= ' . time() . '
OR b.ban_end = 0)
AND u.user_id = b.ban_userid
ORDER BY u.username_clean ASC';
break;
case 'ip':
$field = 'ban_ip';
$sql = 'SELECT *
FROM ' . BANLIST_TABLE . '
WHERE (ban_end >= ' . time() . "
OR ban_end = 0)
AND ban_ip <> ''
ORDER BY ban_ip";
break;
case 'email':
$field = 'ban_email';
$sql = 'SELECT *
FROM ' . BANLIST_TABLE . '
WHERE (ban_end >= ' . time() . "
OR ban_end = 0)
AND ban_email <> ''
ORDER BY ban_email";
break;
}
$result = $db->sql_query($sql);
$banned_options = $excluded_options = array();
while ($row = $db->sql_fetchrow($result))
{
$option = '<option value="' . $row['ban_id'] . '">' . $row[$field] . '</option>';
if ($row['ban_exclude'])
{
$excluded_options[] = $option;
}
else
{
$banned_options[] = $option;
}
$time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0;
if ($time_length == 0)
{
// Banned permanently
$ban_length = $user->lang['PERMANENT'];
}
else if (isset($ban_end_text[$time_length]))
{
// Banned for a given duration
$ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));
}
else
{
// Banned until given date
$ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true));
}
$template->assign_block_vars('bans', array(
'BAN_ID' => (int) $row['ban_id'],
'LENGTH' => $ban_length,
'A_LENGTH' => addslashes($ban_length),
'REASON' => $row['ban_reason'],
'A_REASON' => addslashes($row['ban_reason']),
'GIVE_REASON' => $row['ban_give_reason'],
'A_GIVE_REASON' => addslashes($row['ban_give_reason']),
));
}
$db->sql_freeresult($result);
$options = '';
if ($excluded_options)
{
$options .= '<optgroup label="' . $user->lang['OPTIONS_EXCLUDED'] . '">';
$options .= implode('', $excluded_options);
$options .= '</optgroup>';
}
if ($banned_options)
{
$options .= '<optgroup label="' . $user->lang['OPTIONS_BANNED'] . '">';
$options .= implode('', $banned_options);
$options .= '</optgroup>';
}
$template->assign_vars(array(
'S_BAN_END_OPTIONS' => $ban_end_options,
'S_BANNED_OPTIONS' => ($banned_options || $excluded_options) ? true : false,
'BANNED_OPTIONS' => $options,
));
}
}

View File

@@ -33,7 +33,6 @@ class acp_bbcodes
// Set up general vars
$action = $request->variable('action', '');
$bbcode_id = $request->variable('bbcode', 0);
$submit = $request->is_set_post('submit');
$this->tpl_name = 'acp_bbcodes';
$this->page_title = 'ACP_BBCODES';
@@ -41,11 +40,6 @@ class acp_bbcodes
add_form_key($form_key);
if ($submit && !check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
// Set up mode-specific vars
switch ($action)
{
@@ -179,6 +173,12 @@ class acp_bbcodes
extract($phpbb_dispatcher->trigger_event('core.acp_bbcodes_modify_create', compact($vars)));
$warn_text = preg_match('%<[^>]*\{text[\d]*\}[^>]*>%i', $bbcode_tpl);
if (!$warn_text && !check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
if (!$warn_text || confirm_box(true))
{
$data = $this->build_regexp($bbcode_match, $bbcode_tpl);
@@ -211,11 +211,6 @@ class acp_bbcodes
$test = $data['bbcode_tag'];
}
if (!preg_match('%\\[' . $test . '[^]]*].*?\\[/' . $test . ']%s', $bbcode_match))
{
trigger_error($user->lang['BBCODE_OPEN_ENDED_TAG'] . adm_back_link($this->u_action), E_USER_WARNING);
}
if (strlen($data['bbcode_tag']) > 16)
{
trigger_error($user->lang['BBCODE_TAG_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING);
@@ -231,6 +226,12 @@ class acp_bbcodes
trigger_error($user->lang['BBCODE_HELPLINE_TOO_LONG'] . adm_back_link($this->u_action), E_USER_WARNING);
}
/**
* Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR.
* Using their Numeric Character Reference's Hexadecimal notation.
*/
$bbcode_helpline = utf8_encode_ucr($bbcode_helpline);
$sql_ary = array_merge($sql_ary, array(
'bbcode_tag' => $data['bbcode_tag'],
'bbcode_match' => $bbcode_match,

View File

@@ -76,7 +76,7 @@ class acp_board
'legend3' => 'WARNINGS',
'warnings_expire_days' => array('lang' => 'WARNINGS_EXPIRE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
'legend4' => 'ACP_SUBMIT_CHANGES',
'legend4' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -112,7 +112,7 @@ class acp_board
'load_cpf_viewprofile' => array('lang' => 'LOAD_CPF_VIEWPROFILE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'load_cpf_viewtopic' => array('lang' => 'LOAD_CPF_VIEWTOPIC', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'legend3' => 'ACP_SUBMIT_CHANGES',
'legend3' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -141,12 +141,10 @@ class acp_board
'title' => 'ACP_AVATAR_SETTINGS',
'vars' => array(
'legend1' => 'ACP_AVATAR_SETTINGS',
'avatar_min_width' => array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),
'avatar_min_height' => array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),
'avatar_max_width' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),
'avatar_max_height' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => false, 'method' => false, 'explain' => false),
'allow_avatar' => array('lang' => 'ALLOW_AVATARS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'avatar_min' => array('lang' => 'MIN_AVATAR_SIZE', 'validate' => 'int:0', 'type' => 'dimension:0', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'avatar_max' => array('lang' => 'MAX_AVATAR_SIZE', 'validate' => 'int:0', 'type' => 'dimension:0', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
@@ -157,6 +155,8 @@ class acp_board
{
$display_vars['vars'] += $avatar_vars;
}
$display_vars['vars']['legend2'] = 'ACP_SUBMIT_CHANGES';
break;
case 'message':
@@ -184,7 +184,7 @@ class acp_board
'auth_flash_pm' => array('lang' => 'ALLOW_FLASH_PM', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'enable_pm_icons' => array('lang' => 'ENABLE_PM_ICONS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'legend3' => 'ACP_SUBMIT_CHANGES',
'legend3' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -227,7 +227,7 @@ class acp_board
'max_post_img_width' => array('lang' => 'MAX_POST_IMG_WIDTH', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'max_post_img_height' => array('lang' => 'MAX_POST_IMG_HEIGHT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'legend3' => 'ACP_SUBMIT_CHANGES',
'legend3' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -252,7 +252,7 @@ class acp_board
'max_sig_img_width' => array('lang' => 'MAX_SIG_IMG_WIDTH', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'max_sig_img_height' => array('lang' => 'MAX_SIG_IMG_HEIGHT', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'legend3' => 'ACP_SUBMIT_CHANGES',
'legend3' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -315,6 +315,8 @@ class acp_board
'legend4' => 'ACP_FEED_SETTINGS_OTHER',
'feed_overall_forums' => array('lang' => 'ACP_FEED_OVERALL_FORUMS', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true ),
'feed_exclude_id' => array('lang' => 'ACP_FEED_EXCLUDE_ID', 'validate' => 'string', 'type' => 'custom', 'method' => 'select_exclude_forums', 'explain' => true),
'legend5' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -329,6 +331,8 @@ class acp_board
'cookie_path' => array('lang' => 'COOKIE_PATH', 'validate' => 'string', 'type' => 'text::255', 'explain' => true),
'cookie_secure' => array('lang' => 'COOKIE_SECURE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
'cookie_notice' => array('lang' => 'COOKIE_NOTICE', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
'legend2' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -369,7 +373,7 @@ class acp_board
'load_cpf_viewprofile' => array('lang' => 'LOAD_CPF_VIEWPROFILE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'load_cpf_viewtopic' => array('lang' => 'LOAD_CPF_VIEWTOPIC', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'legend4' => 'ACP_SUBMIT_CHANGES',
'legend4' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -406,7 +410,7 @@ class acp_board
'server_port' => array('lang' => 'SERVER_PORT', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true),
'script_path' => array('lang' => 'SCRIPT_PATH', 'validate' => 'script_path', 'type' => 'text::255', 'explain' => true),
'legend4' => 'ACP_SUBMIT_CHANGES',
'legend4' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -438,6 +442,7 @@ class acp_board
'form_token_lifetime' => array('lang' => 'FORM_TIME_MAX', 'validate' => 'int:-1:99999', 'type' => 'number:-1:99999', 'explain' => true, 'append' => ' ' . $user->lang['SECONDS']),
'form_token_sid_guests' => array('lang' => 'FORM_SID_GUESTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'legend2' => 'ACP_SUBMIT_CHANGES',
)
);
break;
@@ -470,7 +475,7 @@ class acp_board
'smtp_verify_peer_name' => array('lang' => 'SMTP_VERIFY_PEER_NAME', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'smtp_allow_self_signed'=> array('lang' => 'SMTP_ALLOW_SELF_SIGNED','validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'legend3' => 'ACP_SUBMIT_CHANGES',
'legend3' => 'ACP_SUBMIT_CHANGES',
)
);
break;

View File

@@ -58,7 +58,6 @@ class acp_database
$type = $request->variable('type', '');
$table = array_intersect($this->db_tools->sql_list_tables(), $request->variable('table', array('')));
$format = $request->variable('method', '');
$where = $request->variable('where', '');
if (!count($table))
{
@@ -70,12 +69,9 @@ class acp_database
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$store = $structure = $schema_data = false;
if ($where == 'store')
{
$store = true;
}
$store = true;
$structure = false;
$schema_data = false;
if ($type == 'full' || $type == 'structure')
{

View File

@@ -986,10 +986,20 @@ class acp_forums
$errors[] = $user->lang['FORUM_NAME_EMPTY'];
}
// No Emojis
/**
* Replace Emojis and other 4bit UTF-8 chars not allowed by MySql to UCR / NCR.
* Using their Numeric Character Reference's Hexadecimal notation.
*/
$forum_data_ary['forum_name'] = utf8_encode_ucr($forum_data_ary['forum_name']);
/**
* This should never happen again.
* Leaving the fallback here just in case there will be the need of it.
*/
if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $forum_data_ary['forum_name'], $matches))
{
$character_list = implode('<br>', $matches[0]);
$errors[] = $user->lang('FORUM_NAME_EMOJI', $character_list);
}
@@ -1423,8 +1433,8 @@ class acp_forums
* This event may be triggered, when a forum is deleted
*
* @event core.acp_manage_forums_move_children
* @var int from_id If of the current parent forum
* @var int to_id If of the new parent forum
* @var int from_id Id of the current parent forum
* @var int to_id Id of the new parent forum
* @var array errors Array of errors, should be strings and not
* language key.
* @since 3.1.0-a1
@@ -1529,8 +1539,8 @@ class acp_forums
* Event when we move content from one forum to another
*
* @event core.acp_manage_forums_move_content
* @var int from_id If of the current parent forum
* @var int to_id If of the new parent forum
* @var int from_id Id of the current parent forum
* @var int to_id Id of the new parent forum
* @var bool sync Shall we sync the "to"-forum's data
* @var array errors Array of errors, should be strings and not
* language key. If this array is not empty,
@@ -1576,6 +1586,19 @@ class acp_forums
$db->sql_query($sql);
}
/**
* Event when content has been moved from one forum to another
*
* @event core.acp_manage_forums_move_content_after
* @var int from_id Id of the current parent forum
* @var int to_id Id of the new parent forum
* @var bool sync Shall we sync the "to"-forum's data
*
* @since 3.2.9-RC1
*/
$vars = array('from_id', 'to_id', 'sync');
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_move_content_after', compact($vars)));
if ($sync)
{
// Delete ghost topics that link back to the same forum then resync counters

View File

@@ -429,11 +429,11 @@ class acp_main
// Version check
$user->add_lang('install');
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '5.4.0', '<'))
if ($auth->acl_get('a_server') && version_compare(PHP_VERSION, '7.1.3', '<'))
{
$template->assign_vars(array(
'S_PHP_VERSION_OLD' => true,
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], PHP_VERSION, '5.4.0', '<a href="https://www.phpbb.com/support/docs/en/3.2/ug/quickstart/requirements">', '</a>'),
'L_PHP_VERSION_OLD' => sprintf($user->lang['PHP_VERSION_OLD'], PHP_VERSION, '7.1.3', '<a href="https://www.phpbb.com/support/docs/en/3.3/ug/quickstart/requirements">', '</a>'),
));
}
@@ -493,7 +493,7 @@ class acp_main
$start_date = $user->format_date($config['board_startdate']);
$boarddays = (time() - $config['board_startdate']) / 86400;
$boarddays = (time() - (int) $config['board_startdate']) / 86400;
$posts_per_day = sprintf('%.2f', $total_posts / $boarddays);
$topics_per_day = sprintf('%.2f', $total_topics / $boarddays);

View File

@@ -44,8 +44,6 @@ class acp_permissions
include($phpbb_root_path . 'includes/acp/auth.' . $phpEx);
}
$this->permissions = $phpbb_container->get('acl.permissions');
$auth_admin = new auth_admin();
$user->add_lang('acp/permissions');
@@ -53,6 +51,8 @@ class acp_permissions
$this->tpl_name = 'acp_permissions';
$this->permissions = $phpbb_container->get('acl.permissions');
// Trace has other vars
if ($mode == 'trace')
{

View File

@@ -537,6 +537,7 @@ class acp_prune
AND ug.user_id <> ' . ANONYMOUS . '
AND u.user_type <> ' . USER_FOUNDER . '
AND ug.user_pending = 0
AND ug.group_leader = 0
AND u.user_id = ug.user_id
' . (!empty($user_ids) ? ' AND ' . $db->sql_in_set('ug.user_id', $user_ids) : '');
$result = $db->sql_query($sql);

View File

@@ -822,10 +822,12 @@ class acp_users
* @var string action Quick tool that should be run
* @var array user_row Current user data
* @var string u_action The u_action link
* @var int user_id User id of the user to manage
* @since 3.1.0-a1
* @changed 3.2.2-RC1 Added u_action
* @changed 3.2.10-RC1 Added user_id
*/
$vars = array('action', 'user_row', 'u_action');
$vars = array('action', 'user_row', 'u_action', 'user_id');
extract($phpbb_dispatcher->trigger_event('core.acp_users_overview_run_quicktool', compact($vars)));
unset($u_action);
@@ -2607,6 +2609,7 @@ class acp_users
break;
default:
$u_action = $this->u_action;
/**
* Additional modes provided by extensions
@@ -2616,11 +2619,14 @@ class acp_users
* @var int user_id User id of the user to manage
* @var array user_row Array with user data
* @var array error Array with errors data
* @var string u_action The u_action link
* @since 3.2.2-RC1
* @changed 3.2.10-RC1 Added u_action
*/
$vars = array('mode', 'user_id', 'user_row', 'error');
$vars = array('mode', 'user_id', 'user_row', 'error', 'u_action');
extract($phpbb_dispatcher->trigger_event('core.acp_users_mode_add', compact($vars)));
unset($u_action);
break;
}

View File

@@ -221,8 +221,6 @@ class bbcode
$db->sql_freeresult($result);
}
// To perform custom second pass in extension, use $this->bbcode_second_pass_by_extension()
// method which accepts variable number of parameters
foreach ($bbcode_ids as $bbcode_id)
{
switch ($bbcode_id)
@@ -681,6 +679,8 @@ class bbcode
* Accepts variable number of parameters
*
* @return mixed Second pass result
*
* @deprecated 3.2.10 (To be removed 4.0.0)
*/
function bbcode_second_pass_by_extension()
{

View File

@@ -28,7 +28,7 @@ if (!defined('IN_PHPBB'))
*/
// phpBB Version
@define('PHPBB_VERSION', '3.2.8-RC1');
@define('PHPBB_VERSION', '3.2.10');
// QA-related
// define('PHPBB_QA', 1);
@@ -225,10 +225,10 @@ define('REFERER_VALIDATE_HOST', 1);
define('REFERER_VALIDATE_PATH', 2);
// phpbb_chmod() permissions
@define('CHMOD_ALL', 7);
@define('CHMOD_READ', 4);
@define('CHMOD_WRITE', 2);
@define('CHMOD_EXECUTE', 1);
@define('CHMOD_ALL', 7); // @deprecated 3.2.10
@define('CHMOD_READ', 4); // @deprecated 3.2.10
@define('CHMOD_WRITE', 2); // @deprecated 3.2.10
@define('CHMOD_EXECUTE', 1); // @deprecated 3.2.10
// Captcha code length
define('CAPTCHA_MIN_CHARS', 4);

View File

@@ -20,49 +20,6 @@ if (!defined('IN_PHPBB'))
}
// Common global functions
/**
* Load the autoloaders added by the extensions.
*
* @param string $phpbb_root_path Path to the phpbb root directory.
*/
function phpbb_load_extensions_autoloaders($phpbb_root_path)
{
$iterator = new \RecursiveIteratorIterator(
new \phpbb\recursive_dot_prefix_filter_iterator(
new \RecursiveDirectoryIterator(
$phpbb_root_path . 'ext/',
\FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS
)
),
\RecursiveIteratorIterator::SELF_FIRST
);
$iterator->setMaxDepth(2);
foreach ($iterator as $file_info)
{
if ($file_info->getFilename() === 'vendor' && $iterator->getDepth() === 2)
{
$filename = $file_info->getRealPath() . '/autoload.php';
if (file_exists($filename))
{
require $filename;
}
}
}
}
/**
* Casts a variable to the given type.
*
* @deprecated
*/
function set_var(&$result, $var, $type, $multibyte = false)
{
// no need for dependency injection here, if you have the object, call the method yourself!
$type_cast_helper = new \phpbb\request\type_cast_helper();
$type_cast_helper->set_var($result, $var, $type, $multibyte);
}
/**
* Generates an alphanumeric random string of given length
*
@@ -3901,108 +3858,6 @@ function phpbb_optionset($bit, $set, $data)
return $data;
}
/**
* Login using http authenticate.
*
* @param array $param Parameter array, see $param_defaults array.
*
* @return null
*/
function phpbb_http_login($param)
{
global $auth, $user, $request;
global $config;
$param_defaults = array(
'auth_message' => '',
'autologin' => false,
'viewonline' => true,
'admin' => false,
);
// Overwrite default values with passed values
$param = array_merge($param_defaults, $param);
// User is already logged in
// We will not overwrite his session
if (!empty($user->data['is_registered']))
{
return;
}
// $_SERVER keys to check
$username_keys = array(
'PHP_AUTH_USER',
'Authorization',
'REMOTE_USER', 'REDIRECT_REMOTE_USER',
'HTTP_AUTHORIZATION', 'REDIRECT_HTTP_AUTHORIZATION',
'REMOTE_AUTHORIZATION', 'REDIRECT_REMOTE_AUTHORIZATION',
'AUTH_USER',
);
$password_keys = array(
'PHP_AUTH_PW',
'REMOTE_PASSWORD',
'AUTH_PASSWORD',
);
$username = null;
foreach ($username_keys as $k)
{
if ($request->is_set($k, \phpbb\request\request_interface::SERVER))
{
$username = htmlspecialchars_decode($request->server($k));
break;
}
}
$password = null;
foreach ($password_keys as $k)
{
if ($request->is_set($k, \phpbb\request\request_interface::SERVER))
{
$password = htmlspecialchars_decode($request->server($k));
break;
}
}
// Decode encoded information (IIS, CGI, FastCGI etc.)
if (!is_null($username) && is_null($password) && strpos($username, 'Basic ') === 0)
{
list($username, $password) = explode(':', base64_decode(substr($username, 6)), 2);
}
if (!is_null($username) && !is_null($password))
{
set_var($username, $username, 'string', true);
set_var($password, $password, 'string', true);
$auth_result = $auth->login($username, $password, $param['autologin'], $param['viewonline'], $param['admin']);
if ($auth_result['status'] == LOGIN_SUCCESS)
{
return;
}
else if ($auth_result['status'] == LOGIN_ERROR_ATTEMPTS)
{
send_status_line(401, 'Unauthorized');
trigger_error('NOT_AUTHORISED');
}
}
// Prepend sitename to auth_message
$param['auth_message'] = ($param['auth_message'] === '') ? $config['sitename'] : $config['sitename'] . ' - ' . $param['auth_message'];
// We should probably filter out non-ASCII characters - RFC2616
$param['auth_message'] = preg_replace('/[\x80-\xFF]/', '?', $param['auth_message']);
header('WWW-Authenticate: Basic realm="' . $param['auth_message'] . '"');
send_status_line(401, 'Unauthorized');
trigger_error('NOT_AUTHORISED');
}
/**
* Escapes and quotes a string for use as an HTML/XML attribute value.
@@ -4051,54 +3906,6 @@ function phpbb_quoteattr($data, $entities = null)
return $data;
}
/**
* Converts query string (GET) parameters in request into hidden fields.
*
* Useful for forwarding GET parameters when submitting forms with GET method.
*
* It is possible to omit some of the GET parameters, which is useful if
* they are specified in the form being submitted.
*
* sid is always omitted.
*
* @param \phpbb\request\request $request Request object
* @param array $exclude A list of variable names that should not be forwarded
* @return string HTML with hidden fields
*/
function phpbb_build_hidden_fields_for_query_params($request, $exclude = null)
{
$names = $request->variable_names(\phpbb\request\request_interface::GET);
$hidden = '';
foreach ($names as $name)
{
// Sessions are dealt with elsewhere, omit sid always
if ($name == 'sid')
{
continue;
}
// Omit any additional parameters requested
if (!empty($exclude) && in_array($name, $exclude))
{
continue;
}
$escaped_name = phpbb_quoteattr($name);
// Note: we might retrieve the variable from POST or cookies
// here. To avoid exposing cookies, skip variables that are
// overwritten somewhere other than GET entirely.
$value = $request->variable($name, '', true);
$get_value = $request->variable($name, '', true, \phpbb\request\request_interface::GET);
if ($value === $get_value)
{
$escaped_value = phpbb_quoteattr($value);
$hidden .= "<input type='hidden' name=$escaped_name value=$escaped_value />";
}
}
return $hidden;
}
/**
* Get user avatar
*

View File

@@ -543,6 +543,20 @@ function move_topics($topic_ids, $forum_id, $auto_sync = true)
$topic_ids = array($topic_ids);
}
/**
* Perform additional actions before topics move
*
* @event core.move_topics_before
* @var array topic_ids Array of the moved topic ids
* @var string forum_id The forum id from where the topics are moved
* @since 3.2.9-RC1
*/
$vars = array(
'topic_ids',
'forum_id',
);
extract($phpbb_dispatcher->trigger_event('core.move_topics_before', compact($vars)));
$sql = 'DELETE FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_moved_id', $topic_ids) . '
AND forum_id = ' . $forum_id;
@@ -593,6 +607,22 @@ function move_topics($topic_ids, $forum_id, $auto_sync = true)
}
unset($table_ary);
/**
* Perform additional actions after topics move
*
* @event core.move_topics_after
* @var array topic_ids Array of the moved topic ids
* @var string forum_id The forum id from where the topics were moved
* @var array forum_ids Array of the forums where the topics were moved (includes also forum_id)
* @since 3.2.9-RC1
*/
$vars = array(
'topic_ids',
'forum_id',
'forum_ids',
);
extract($phpbb_dispatcher->trigger_event('core.move_topics_after', compact($vars)));
if ($auto_sync)
{
sync('forum', 'forum_id', $forum_ids, true, true);
@@ -2385,7 +2415,7 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
/**
* Function auto_prune(), this function now relies on passed vars
*/
function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_freq)
function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_freq, $log_prune = true)
{
global $db, $user, $phpbb_log;
@@ -2405,13 +2435,18 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr
if ($result['topics'] == 0 && $result['posts'] == 0)
{
$column = $prune_mode === 'shadow' ? 'prune_shadow_next' : 'prune_next';
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET prune_next = $next_prune
SET $column = $next_prune
WHERE forum_id = $forum_id";
$db->sql_query($sql);
}
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_AUTO_PRUNE', false, array($row['forum_name']));
if ($log_prune)
{
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_AUTO_PRUNE', false, [$row['forum_name']]);
}
}
return;
@@ -3107,3 +3142,133 @@ function enable_bitfield_column_flag($table_name, $column_name, $flag, $sql_more
' . $sql_more;
$db->sql_query($sql);
}
function display_ban_end_options()
{
global $user, $template;
// Ban length options
$ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['UNTIL'] . ' -&gt; ');
$ban_end_options = '';
foreach ($ban_end_text as $length => $text)
{
$ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
}
$template->assign_vars(array(
'S_BAN_END_OPTIONS' => $ban_end_options
));
}
/**
* Display ban options
*/
function display_ban_options($mode)
{
global $user, $db, $template;
switch ($mode)
{
case 'user':
$field = 'username';
$sql = 'SELECT b.*, u.user_id, u.username, u.username_clean
FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u
WHERE (b.ban_end >= ' . time() . '
OR b.ban_end = 0)
AND u.user_id = b.ban_userid
ORDER BY u.username_clean ASC';
break;
case 'ip':
$field = 'ban_ip';
$sql = 'SELECT *
FROM ' . BANLIST_TABLE . '
WHERE (ban_end >= ' . time() . "
OR ban_end = 0)
AND ban_ip <> ''
ORDER BY ban_ip";
break;
case 'email':
$field = 'ban_email';
$sql = 'SELECT *
FROM ' . BANLIST_TABLE . '
WHERE (ban_end >= ' . time() . "
OR ban_end = 0)
AND ban_email <> ''
ORDER BY ban_email";
break;
}
$result = $db->sql_query($sql);
$banned_options = $excluded_options = array();
while ($row = $db->sql_fetchrow($result))
{
$option = '<option value="' . $row['ban_id'] . '">' . $row[$field] . '</option>';
if ($row['ban_exclude'])
{
$excluded_options[] = $option;
}
else
{
$banned_options[] = $option;
}
$time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0;
if ($time_length == 0)
{
// Banned permanently
$ban_length = $user->lang['PERMANENT'];
}
else if (isset($ban_end_text[$time_length]))
{
// Banned for a given duration
$ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));
}
else
{
// Banned until given date
$ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true));
}
$template->assign_block_vars('bans', array(
'BAN_ID' => (int) $row['ban_id'],
'LENGTH' => $ban_length,
'A_LENGTH' => addslashes($ban_length),
'REASON' => $row['ban_reason'],
'A_REASON' => addslashes($row['ban_reason']),
'GIVE_REASON' => $row['ban_give_reason'],
'A_GIVE_REASON' => addslashes($row['ban_give_reason']),
));
}
$db->sql_freeresult($result);
$options = '';
if ($excluded_options)
{
$options .= '<optgroup label="' . $user->lang['OPTIONS_EXCLUDED'] . '">';
$options .= implode('', $excluded_options);
$options .= '</optgroup>';
}
if ($banned_options)
{
$options .= '<optgroup label="' . $user->lang['OPTIONS_BANNED'] . '">';
$options .= implode('', $banned_options);
$options .= '</optgroup>';
}
$template->assign_vars(array(
'S_BANNED_OPTIONS' => ($banned_options || $excluded_options) ? true : false,
'BANNED_OPTIONS' => $options,
));
}

View File

@@ -511,3 +511,225 @@ function phpbb_pcre_utf8_support()
{
return true;
}
/**
* Load the autoloaders added by the extensions.
*
* @param string $phpbb_root_path Path to the phpbb root directory.
*
* @deprecated 3.2.10 (To be removed 4.0.0)
*/
function phpbb_load_extensions_autoloaders($phpbb_root_path)
{
$iterator = new \RecursiveIteratorIterator(
new \phpbb\recursive_dot_prefix_filter_iterator(
new \RecursiveDirectoryIterator(
$phpbb_root_path . 'ext/',
\FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS
)
),
\RecursiveIteratorIterator::SELF_FIRST
);
$iterator->setMaxDepth(2);
foreach ($iterator as $file_info)
{
if ($file_info->getFilename() === 'vendor' && $iterator->getDepth() === 2)
{
$filename = $file_info->getRealPath() . '/autoload.php';
if (file_exists($filename))
{
require $filename;
}
}
}
}
/**
* Casts a variable to the given type.
*
* @deprecated
*/
function set_var(&$result, $var, $type, $multibyte = false)
{
// no need for dependency injection here, if you have the object, call the method yourself!
$type_cast_helper = new \phpbb\request\type_cast_helper();
$type_cast_helper->set_var($result, $var, $type, $multibyte);
}
/**
* Login using http authenticate.
*
* @param array $param Parameter array, see $param_defaults array.
*
* @return null
*
* @deprecated 3.2.10 (To be removed 4.0.0)
*/
function phpbb_http_login($param)
{
global $auth, $user, $request;
global $config;
$param_defaults = array(
'auth_message' => '',
'autologin' => false,
'viewonline' => true,
'admin' => false,
);
// Overwrite default values with passed values
$param = array_merge($param_defaults, $param);
// User is already logged in
// We will not overwrite his session
if (!empty($user->data['is_registered']))
{
return;
}
// $_SERVER keys to check
$username_keys = array(
'PHP_AUTH_USER',
'Authorization',
'REMOTE_USER', 'REDIRECT_REMOTE_USER',
'HTTP_AUTHORIZATION', 'REDIRECT_HTTP_AUTHORIZATION',
'REMOTE_AUTHORIZATION', 'REDIRECT_REMOTE_AUTHORIZATION',
'AUTH_USER',
);
$password_keys = array(
'PHP_AUTH_PW',
'REMOTE_PASSWORD',
'AUTH_PASSWORD',
);
$username = null;
foreach ($username_keys as $k)
{
if ($request->is_set($k, \phpbb\request\request_interface::SERVER))
{
$username = htmlspecialchars_decode($request->server($k));
break;
}
}
$password = null;
foreach ($password_keys as $k)
{
if ($request->is_set($k, \phpbb\request\request_interface::SERVER))
{
$password = htmlspecialchars_decode($request->server($k));
break;
}
}
// Decode encoded information (IIS, CGI, FastCGI etc.)
if (!is_null($username) && is_null($password) && strpos($username, 'Basic ') === 0)
{
list($username, $password) = explode(':', base64_decode(substr($username, 6)), 2);
}
if (!is_null($username) && !is_null($password))
{
set_var($username, $username, 'string', true);
set_var($password, $password, 'string', true);
$auth_result = $auth->login($username, $password, $param['autologin'], $param['viewonline'], $param['admin']);
if ($auth_result['status'] == LOGIN_SUCCESS)
{
return;
}
else if ($auth_result['status'] == LOGIN_ERROR_ATTEMPTS)
{
send_status_line(401, 'Unauthorized');
trigger_error('NOT_AUTHORISED');
}
}
// Prepend sitename to auth_message
$param['auth_message'] = ($param['auth_message'] === '') ? $config['sitename'] : $config['sitename'] . ' - ' . $param['auth_message'];
// We should probably filter out non-ASCII characters - RFC2616
$param['auth_message'] = preg_replace('/[\x80-\xFF]/', '?', $param['auth_message']);
header('WWW-Authenticate: Basic realm="' . $param['auth_message'] . '"');
send_status_line(401, 'Unauthorized');
trigger_error('NOT_AUTHORISED');
}
/**
* Converts query string (GET) parameters in request into hidden fields.
*
* Useful for forwarding GET parameters when submitting forms with GET method.
*
* It is possible to omit some of the GET parameters, which is useful if
* they are specified in the form being submitted.
*
* sid is always omitted.
*
* @param \phpbb\request\request $request Request object
* @param array $exclude A list of variable names that should not be forwarded
* @return string HTML with hidden fields
*
* @deprecated 3.2.10 (To be removed 4.0.0)
*/
function phpbb_build_hidden_fields_for_query_params($request, $exclude = null)
{
$names = $request->variable_names(\phpbb\request\request_interface::GET);
$hidden = '';
foreach ($names as $name)
{
// Sessions are dealt with elsewhere, omit sid always
if ($name == 'sid')
{
continue;
}
// Omit any additional parameters requested
if (!empty($exclude) && in_array($name, $exclude))
{
continue;
}
$escaped_name = phpbb_quoteattr($name);
// Note: we might retrieve the variable from POST or cookies
// here. To avoid exposing cookies, skip variables that are
// overwritten somewhere other than GET entirely.
$value = $request->variable($name, '', true);
$get_value = $request->variable($name, '', true, \phpbb\request\request_interface::GET);
if ($value === $get_value)
{
$escaped_value = phpbb_quoteattr($value);
$hidden .= "<input type='hidden' name=$escaped_name value=$escaped_value />";
}
}
return $hidden;
}
/**
* Delete all PM(s) for a given user and delete the ones without references
*
* @param int $user_id ID of the user whose private messages we want to delete
*
* @return boolean False if there were no pms found, true otherwise.
*
* @deprecated 3.2.10 (To be removed 4.0.0)
*/
function phpbb_delete_user_pms($user_id)
{
$user_id = (int) $user_id;
if (!$user_id)
{
return false;
}
return phpbb_delete_users_pms(array($user_id));
}

View File

@@ -296,7 +296,7 @@ class compress_zip extends compress
try
{
$this->filesystem->phpbb_chmod($str, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($str, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -333,7 +333,7 @@ class compress_zip extends compress
try
{
$this->filesystem->phpbb_chmod($str, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($str, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -636,7 +636,7 @@ class compress_tar extends compress
try
{
$this->filesystem->phpbb_chmod($str, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($str, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -671,7 +671,7 @@ class compress_tar extends compress
try
{
$this->filesystem->phpbb_chmod($str, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($str, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -688,7 +688,7 @@ class compress_tar extends compress
try
{
$this->filesystem->phpbb_chmod($target_filename, CHMOD_READ);
$this->filesystem->phpbb_chmod($target_filename, \phpbb\filesystem\filesystem_interface::CHMOD_READ);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{

View File

@@ -1166,6 +1166,8 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count_a
$filename = $phpbb_root_path . $config['upload_path'] . '/' . utf8_basename($attachment['physical_filename']);
$upload_icon = '';
$download_link = '';
$display_cat = false;
if (isset($extensions[$attachment['extension']]))
{
@@ -1345,7 +1347,7 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count_a
);
extract($phpbb_dispatcher->trigger_event('core.parse_attachments_modify_template_data', compact($vars)));
$update_count_ary = $update_count;
unset($update_count);
unset($update_count, $display_cat, $download_link);
$template->assign_block_vars('_file', $block_array);

View File

@@ -70,7 +70,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$data = array(
'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
'UNREAD_POSTS' => $user->lang['UNREAD_POSTS'],
'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums&mark_time=' . time()) : '',
'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}index.$phpEx", 'hash=' . generate_link_hash('global') . '&mark=forums&mark_time=' . time(), false) : '',
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
'MESSAGE_TEXT' => $user->lang['FORUMS_MARKED']
);
@@ -355,7 +355,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$data = array(
'NO_UNREAD_POSTS' => $user->lang['NO_UNREAD_POSTS'],
'UNREAD_POSTS' => $user->lang['UNREAD_POSTS'],
'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'hash=' . generate_link_hash('global') . '&f=' . $root_data['forum_id'] . '&mark=forums&mark_time=' . time()) : '',
'U_MARK_FORUMS' => ($user->data['is_registered'] || $config['load_anon_lastread']) ? append_sid("{$phpbb_root_path}viewforum.$phpEx", 'hash=' . generate_link_hash('global') . '&f=' . $root_data['forum_id'] . '&mark=forums&mark_time=' . time(), false) : '',
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
'MESSAGE_TEXT' => $user->lang['FORUMS_MARKED']
);
@@ -539,7 +539,8 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
{
if ($row['forum_password_last_post'] === '' && $auth->acl_gets('f_read', 'f_list_topics', $row['forum_id_last_post']))
{
$last_post_subject = censor_text($row['forum_last_post_subject']);
$last_post_subject = utf8_decode_ncr(censor_text($row['forum_last_post_subject']));
$last_post_subject_truncated = truncate_string($last_post_subject, 30, 255, false, $user->lang['ELLIPSIS']);
}
else
@@ -547,11 +548,12 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$last_post_subject = $last_post_subject_truncated = '';
}
$last_post_time = $user->format_date($row['forum_last_post_time']);
$last_post_time_rfc3339 = gmdate(DATE_RFC3339, $row['forum_last_post_time']);
$last_post_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id_last_post'] . '&amp;p=' . $row['forum_last_post_id']) . '#p' . $row['forum_last_post_id'];
}
else
{
$last_post_subject = $last_post_time = $last_post_url = $last_post_subject_truncated = '';
$last_post_subject = $last_post_time = $last_post_time_rfc3339 = $last_post_url = $last_post_subject_truncated = '';
}
// Output moderator listing ... if applicable
@@ -622,6 +624,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
'LAST_POST_SUBJECT' => $last_post_subject,
'LAST_POST_SUBJECT_TRUNCATED' => $last_post_subject_truncated,
'LAST_POST_TIME' => $last_post_time,
'LAST_POST_TIME_RFC3339'=> $last_post_time_rfc3339,
'LAST_POSTER' => get_username_string('username', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
'LAST_POSTER_COLOUR' => get_username_string('colour', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
'LAST_POSTER_FULL' => get_username_string('full', $row['forum_last_poster_id'], $row['forum_last_poster_name'], $row['forum_last_poster_colour']),
@@ -1111,13 +1114,15 @@ function display_custom_bbcodes()
$row['bbcode_helpline'] = $user->lang[strtoupper($row['bbcode_helpline'])];
}
// Convert Numeric Character References to UTF-8 chars.
$row['bbcode_helpline'] = utf8_decode_ncr($row['bbcode_helpline']);
$custom_tags = array(
'BBCODE_NAME' => "'[{$row['bbcode_tag']}]', '[/" . str_replace('=', '', $row['bbcode_tag']) . "]'",
'BBCODE_ID' => $num_predefined_bbcodes + ($i * 2),
'BBCODE_TAG' => $row['bbcode_tag'],
'BBCODE_TAG_CLEAN' => str_replace('=', '-', $row['bbcode_tag']),
'BBCODE_HELPLINE' => $row['bbcode_helpline'],
'A_BBCODE_HELPLINE' => str_replace(array('&amp;', '&quot;', "'", '&lt;', '&gt;'), array('&', '"', "\'", '<', '>'), $row['bbcode_helpline']),
);
/**
@@ -1690,8 +1695,8 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
'U_EMAIL' => $email,
'U_JABBER' => ($data['user_jabber'] && $auth->acl_get('u_sendim')) ? append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=contact&amp;action=jabber&amp;u=' . $user_id) : '',
'USER_JABBER' => ($config['jab_enable']) ? $data['user_jabber'] : '',
'USER_JABBER_IMG' => ($config['jab_enable'] && $data['user_jabber']) ? $user->img('icon_contact_jabber', $data['user_jabber']) : '',
'USER_JABBER' => ($config['jab_enable'] && $auth->acl_get('u_sendim')) ? $data['user_jabber'] : '',
'USER_JABBER_IMG' => ($config['jab_enable'] && $auth->acl_get('u_sendim') && $data['user_jabber']) ? $user->img('icon_contact_jabber', $data['user_jabber']) : '',
'L_SEND_EMAIL_USER' => $user->lang('SEND_EMAIL_USER', $username),
'L_CONTACT_USER' => $user->lang('CONTACT_USER', $username),

View File

@@ -197,7 +197,7 @@ function phpbb_get_topic_data($topic_ids, $acl_list = false, $read_tracking = fa
*/
function phpbb_get_post_data($post_ids, $acl_list = false, $read_tracking = false)
{
global $db, $auth, $config, $user, $phpbb_container;
global $db, $auth, $config, $user, $phpbb_dispatcher, $phpbb_container;
$rowset = array();
@@ -265,6 +265,25 @@ function phpbb_get_post_data($post_ids, $acl_list = false, $read_tracking = fals
}
$db->sql_freeresult($result);
/**
* This event allows you to modify post data displayed in the MCP
*
* @event core.mcp_get_post_data_after
* @var array post_ids Array with post ids that have been fetched
* @var mixed acl_list Either false or an array with permission strings to check
* @var bool read_tracking Whether or not to take last mark read time into account
* @var array rowset The array of posts to be returned
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'post_ids',
'acl_list',
'read_tracking',
'rowset',
];
extract($phpbb_dispatcher->trigger_event('core.mcp_get_post_data_after', compact($vars)));
return $rowset;
}

View File

@@ -1013,7 +1013,7 @@ class queue
try
{
$this->filesystem->phpbb_chmod($this->cache_file, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($this->cache_file, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -1067,7 +1067,7 @@ class queue
try
{
$this->filesystem->phpbb_chmod($this->cache_file, CHMOD_READ | CHMOD_WRITE);
$this->filesystem->phpbb_chmod($this->cache_file, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -1893,14 +1893,21 @@ function mail_encode($str, $eol = "\r\n")
}
/**
* Wrapper for sending out emails with the PHP's mail function
*/
* Wrapper for sending out emails with the PHP's mail function
*/
function phpbb_mail($to, $subject, $msg, $headers, $eol, &$err_msg)
{
global $config, $phpbb_root_path, $phpEx;
// We use the EOL character for the OS here because the PHP mail function does not correctly transform line endings. On Windows SMTP is used (SMTP is \r\n), on UNIX a command is used...
// Reference: http://bugs.php.net/bug.php?id=15841
// Convert Numeric Character References to UTF-8 chars (ie. Emojis)
$subject = utf8_decode_ncr($subject);
$msg = utf8_decode_ncr($msg);
/**
* We use the EOL character for the OS here because the PHP mail function does not correctly transform line endings.
* On Windows SMTP is used (SMTP is \r\n), on UNIX a command is used...
* Reference: http://bugs.php.net/bug.php?id=15841
*/
$headers = implode($eol, $headers);
if (!class_exists('\phpbb\error_collector'))
@@ -1911,10 +1918,14 @@ function phpbb_mail($to, $subject, $msg, $headers, $eol, &$err_msg)
$collector = new \phpbb\error_collector;
$collector->install();
// On some PHP Versions mail() *may* fail if there are newlines within the subject.
// Newlines are used as a delimiter for lines in mail_encode() according to RFC 2045 section 6.8.
// Because PHP can't decide what is wanted we revert back to the non-RFC-compliant way of separating by one space (Use '' as parameter to mail_encode() results in SPACE used)
/**
* On some PHP Versions mail() *may* fail if there are newlines within the subject.
* Newlines are used as a delimiter for lines in mail_encode() according to RFC 2045 section 6.8.
* Because PHP can't decide what is wanted we revert back to the non-RFC-compliant way of separating by one space
* (Use '' as parameter to mail_encode() results in SPACE used)
*/
$additional_parameters = $config['email_force_sender'] ? '-f' . $config['board_email'] : '';
$result = mail($to, mail_encode($subject, ''), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $headers, $additional_parameters);
$collector->uninstall();

View File

@@ -52,9 +52,32 @@ function generate_smilies($mode, $forum_id)
page_header($user->lang['SMILIES']);
$sql = 'SELECT COUNT(smiley_id) AS item_count
FROM ' . SMILIES_TABLE . '
GROUP BY smiley_url';
$sql_ary = [
'SELECT' => 'COUNT(s.smiley_id) AS item_count',
'FROM' => [
SMILIES_TABLE => 's',
],
'GROUP_BY' => 's.smiley_url',
];
/**
* Modify SQL query that fetches the total number of smilies in window mode
*
* @event core.generate_smilies_count_sql_before
* @var int forum_id Forum where smilies are generated
* @var array sql_ary Array with the SQL query
* @var string base_url URL for the "More smilies" link and its pagination
* @since 3.2.9-RC1
* @changed 3.2.10-RC1 Added base_url
*/
$vars = [
'forum_id',
'sql_ary',
'base_url',
];
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_count_sql_before', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql, 3600);
$smiley_count = 0;
@@ -89,18 +112,52 @@ function generate_smilies($mode, $forum_id)
if ($mode == 'window')
{
$sql = 'SELECT smiley_url, MIN(emotion) as emotion, MIN(code) AS code, smiley_width, smiley_height, MIN(smiley_order) AS min_smiley_order
FROM ' . SMILIES_TABLE . '
GROUP BY smiley_url, smiley_width, smiley_height
ORDER BY min_smiley_order';
$sql_ary = [
'SELECT' => 's.smiley_url, MIN(s.emotion) AS emotion, MIN(s.code) AS code, s.smiley_width, s.smiley_height, MIN(s.smiley_order) AS min_smiley_order',
'FROM' => [
SMILIES_TABLE => 's',
],
'GROUP_BY' => 's.smiley_url, s.smiley_width, s.smiley_height',
'ORDER_BY' => 'min_smiley_order',
];
}
else
{
$sql_ary = [
'SELECT' => 's.*',
'FROM' => [
SMILIES_TABLE => 's',
],
'WHERE' => 's.display_on_posting = 1',
'ORDER_BY' => 's.smiley_order',
];
}
/**
* Modify the SQL query that fetches the smilies
*
* @event core.generate_smilies_modify_sql
* @var string mode Smiley mode, either window or inline
* @var int forum_id Forum where smilies are generated, or 0 if composing a private message
* @var array sql_ary Array with SQL query data
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'mode',
'forum_id',
'sql_ary',
];
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_modify_sql', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
if ($mode == 'window')
{
$result = $db->sql_query_limit($sql, $config['smilies_per_page'], $start, 3600);
}
else
{
$sql = 'SELECT *
FROM ' . SMILIES_TABLE . '
WHERE display_on_posting = 1
ORDER BY smiley_order';
$result = $db->sql_query($sql, 3600);
}
@@ -114,6 +171,22 @@ function generate_smilies($mode, $forum_id)
}
$db->sql_freeresult($result);
/**
* Modify smilies before they are assigned to the template
*
* @event core.generate_smilies_modify_rowset
* @var string mode Smiley mode, either window or inline
* @var int forum_id Forum where smilies are generated, or 0 if composing a private message
* @var array smilies Smiley rows fetched from the database
* @since 3.2.9-RC1
*/
$vars = [
'mode',
'forum_id',
'smilies',
];
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_modify_rowset', compact($vars)));
if (count($smilies))
{
$root_path = (defined('PHPBB_USE_BOARD_URL_PATH') && PHPBB_USE_BOARD_URL_PATH) ? generate_board_url() . '/' : $phpbb_path_helper->get_web_root_path();
@@ -147,9 +220,16 @@ function generate_smilies($mode, $forum_id)
* @var string mode Mode of the smilies: window|inline
* @var int forum_id The forum ID we are currently in
* @var bool display_link Shall we display the "more smilies" link?
* @var string base_url URL for the "More smilies" link and its pagination
* @since 3.1.0-a1
* @changed 3.2.10-RC1 Added base_url
*/
$vars = array('mode', 'forum_id', 'display_link');
$vars = [
'mode',
'forum_id',
'display_link',
'base_url',
];
extract($phpbb_dispatcher->trigger_event('core.generate_smilies_after', compact($vars)));
if ($mode == 'inline' && $display_link)
@@ -681,7 +761,7 @@ function create_thumbnail($source, $destination, $mimetype)
try
{
$phpbb_filesystem->phpbb_chmod($destination, CHMOD_READ | CHMOD_WRITE);
$phpbb_filesystem->phpbb_chmod($destination, \phpbb\filesystem\filesystem_interface::CHMOD_READ | \phpbb\filesystem\filesystem_interface::CHMOD_WRITE);
}
catch (\phpbb\filesystem\exception\filesystem_exception $e)
{
@@ -2783,7 +2863,7 @@ function phpbb_handle_post_delete($forum_id, $topic_id, $post_id, &$post_data, $
$s_hidden_fields['delete_permanent'] = '1';
}
confirm_box(false, $l_confirm, build_hidden_fields($s_hidden_fields), 'confirm_delete_body.html');
confirm_box(false, [$l_confirm, 1], build_hidden_fields($s_hidden_fields), 'confirm_delete_body.html');
}
}

View File

@@ -958,6 +958,11 @@ function handle_mark_actions($user_id, $mark_action)
{
case 'mark_important':
if (!check_form_key('ucp_pm_view'))
{
trigger_error('FORM_INVALID');
}
$sql = 'UPDATE ' . PRIVMSGS_TO_TABLE . "
SET pm_marked = 1 - pm_marked
WHERE folder_id = $cur_folder_id
@@ -1174,25 +1179,6 @@ function delete_pm($user_id, $msg_ids, $folder_id)
return true;
}
/**
* Delete all PM(s) for a given user and delete the ones without references
*
* @param int $user_id ID of the user whose private messages we want to delete
*
* @return boolean False if there were no pms found, true otherwise.
*/
function phpbb_delete_user_pms($user_id)
{
$user_id = (int) $user_id;
if (!$user_id)
{
return false;
}
return phpbb_delete_users_pms(array($user_id));
}
/**
* Delete all PM(s) for given users and delete the ones without references
*
@@ -2060,6 +2046,35 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
while ($row = $db->sql_fetchrow($result));
$db->sql_freeresult($result);
$url = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm');
/**
* Modify message rows before displaying the history in private messages
*
* @event core.message_history_modify_rowset
* @var int msg_id ID of the private message
* @var int user_id ID of the message author
* @var array message_row Array with message data
* @var array folder Array with data of user's message folders
* @var bool in_post_mode Whether or not we are viewing or composing
* @var array rowset Array with message history data
* @var string url Base URL used to generate links to private messages
* @var string title Subject of the private message
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'msg_id',
'user_id',
'message_row',
'folder',
'in_post_mode',
'rowset',
'url',
'title',
];
extract($phpbb_dispatcher->trigger_event('core.message_history_modify_rowset', compact($vars)));
if (count($rowset) == 1 && !$in_post_mode)
{
return false;
@@ -2067,7 +2082,6 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
$title = censor_text($title);
$url = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm');
$next_history_pm = $previous_history_pm = $prev_id = 0;
// Re-order rowset to be able to get the next/prev message rows...

View File

@@ -424,11 +424,11 @@ function user_add($user_row, $cp_data = false, $notifications_data = null)
}
/**
* Remove User
* Delete user(s) and their related data
*
* @param string $mode Either 'retain' or 'remove'
* @param mixed $user_ids Either an array of integers or an integer
* @param bool $retain_username
* @param string $mode Mode of posts deletion (retain|delete)
* @param mixed $user_ids Either an array of integers or an integer
* @param bool $retain_username True if username should be retained, false otherwise
* @return bool
*/
function user_delete($mode, $user_ids, $retain_username = true)
@@ -462,17 +462,16 @@ function user_delete($mode, $user_ids, $retain_username = true)
}
/**
* Event before a user is deleted
*
* @event core.delete_user_before
* @var string mode Mode of deletion (retain/delete posts)
* @var array user_ids IDs of the deleted user
* @var mixed retain_username True if username should be retained
* or false if not
* @var array user_rows Array containing data of the deleted users
* @since 3.1.0-a1
* @changed 3.2.4-RC1 Added user_rows
*/
* Event before of the performing of the user(s) delete action
*
* @event core.delete_user_before
* @var string mode Mode of posts deletion (retain|delete)
* @var array user_ids ID(s) of the user(s) bound to be deleted
* @var bool retain_username True if username should be retained, false otherwise
* @var array user_rows Array containing data of the user(s) bound to be deleted
* @since 3.1.0-a1
* @changed 3.2.4-RC1 Added user_rows
*/
$vars = array('mode', 'user_ids', 'retain_username', 'user_rows');
extract($phpbb_dispatcher->trigger_event('core.delete_user_before', compact($vars)));
@@ -761,7 +760,7 @@ function user_delete($mode, $user_ids, $retain_username = true)
$db->sql_query($sql);
// Clean the private messages tables from the user
if (!function_exists('phpbb_delete_user_pms'))
if (!function_exists('phpbb_delete_users_pms'))
{
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
}
@@ -773,17 +772,16 @@ function user_delete($mode, $user_ids, $retain_username = true)
$db->sql_transaction('commit');
/**
* Event after a user is deleted
*
* @event core.delete_user_after
* @var string mode Mode of deletion (retain/delete posts)
* @var array user_ids IDs of the deleted user
* @var mixed retain_username True if username should be retained
* or false if not
* @var array user_rows Array containing data of the deleted users
* @since 3.1.0-a1
* @changed 3.2.2-RC1 Added user_rows
*/
* Event after the user(s) delete action has been performed
*
* @event core.delete_user_after
* @var string mode Mode of posts deletion (retain|delete)
* @var array user_ids ID(s) of the deleted user(s)
* @var bool retain_username True if username should be retained, false otherwise
* @var array user_rows Array containing data of the deleted user(s)
* @since 3.1.0-a1
* @changed 3.2.2-RC1 Added user_rows
*/
$vars = array('mode', 'user_ids', 'retain_username', 'user_rows');
extract($phpbb_dispatcher->trigger_event('core.delete_user_after', compact($vars)));
@@ -1046,13 +1044,15 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas
$banlist_ary[] = (int) $row['user_id'];
}
while ($row = $db->sql_fetchrow($result));
$db->sql_freeresult($result);
}
else
{
$db->sql_freeresult($result);
trigger_error('NO_USERS', E_USER_WARNING);
}
$db->sql_freeresult($result);
break;
case 'ip':
@@ -1473,7 +1473,8 @@ function user_ipwhois($ip)
if (($fsk = @fsockopen($whois_host, 43)))
{
// CRLF as per RFC3912
fputs($fsk, "$ip\r\n");
// Z to limit the query to all possible flags (whois.arin.net)
fputs($fsk, "z $ip\r\n");
while (!feof($fsk))
{
$ipwhois .= fgets($fsk, 1024);
@@ -1945,9 +1946,10 @@ function validate_user_email($email, $allowed_email = false)
return $validate_email;
}
if (($ban = $user->check_ban(false, false, $email, true)) !== false)
$ban = $user->check_ban(false, false, $email, true);
if (!empty($ban))
{
return ($ban === true) ? 'EMAIL_BANNED' : (!empty($ban['ban_give_reason']) ? $ban['ban_give_reason'] : $ban);
return !empty($ban['ban_give_reason']) ? $ban['ban_give_reason'] : 'EMAIL_BANNED';
}
if (!$config['allow_emailreuse'])

View File

@@ -185,15 +185,6 @@ class mcp_ban
}
}
// Ban length options
$ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['UNTIL'] . ' -&gt; ');
$ban_end_options = '';
foreach ($ban_end_text as $length => $text)
{
$ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
}
// Define language vars
$this->page_title = $user->lang[strtoupper($mode) . '_BAN'];
@@ -218,7 +209,8 @@ class mcp_ban
break;
}
acp_ban::display_ban_options($mode);
display_ban_end_options();
display_ban_options($mode);
$template->assign_vars(array(
'L_TITLE' => $this->page_title,

View File

@@ -39,6 +39,7 @@ class mcp_logs
global $config, $phpbb_container, $phpbb_log;
$user->add_lang('acp/common');
$this->p_master->add_mod_info('acp');
$action = $request->variable('action', array('' => ''));

View File

@@ -1049,6 +1049,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
$redirect = $request->variable('redirect', build_url(array('action', 'quickmod')));
$forum_id = $request->variable('f', 0);
$topic_id = 0;
$s_hidden_fields = array(
'post_id_list' => $post_ids,
@@ -1122,8 +1123,6 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
));
}
$topic_id = $request->variable('t', 0);
// Return links
$return_link = array();
if ($affected_topics == 1 && $topic_id)
@@ -1152,7 +1151,7 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
$topic_id_list = array();
while ($row = $db->sql_fetchrow($result))
{
$topic_id_list[] = $row['topic_id'];
$topic_id_list[] = $topic_id = $row['topic_id'];
}
$affected_topics = count($topic_id_list);
$db->sql_freeresult($result);
@@ -1183,8 +1182,6 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
$deleted_topics = ($row = $db->sql_fetchrow($result)) ? ($affected_topics - $row['topics_left']) : $affected_topics;
$db->sql_freeresult($result);
$topic_id = $request->variable('t', 0);
// Return links
$return_link = array();
if ($affected_topics == 1 && !$deleted_topics && $topic_id)
@@ -1203,6 +1200,12 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
}
else
{
// Remove any post id anchor
if ($anchor_pos = (strrpos($redirect, '#p')) !== false)
{
$redirect = substr($redirect, 0, $anchor_pos);
}
$success_msg = $user->lang['POST_DELETED_SUCCESS'];
}
}
@@ -1260,7 +1263,6 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
confirm_box(false, $l_confirm, build_hidden_fields($s_hidden_fields), 'confirm_delete_body.html');
}
$redirect = $request->variable('redirect', "index.$phpEx");
$redirect = reapply_sid($redirect);
if (!$success_msg)
@@ -1564,10 +1566,11 @@ function mcp_fork_topic($topic_ids)
// Copy Attachments
if ($row['post_attachment'])
{
$sql = 'SELECT * FROM ' . ATTACHMENTS_TABLE . "
WHERE post_msg_id = {$row['post_id']}
AND topic_id = $topic_id
AND in_message = 0";
$sql = 'SELECT * FROM ' . ATTACHMENTS_TABLE . '
WHERE post_msg_id = ' . (int) $row['post_id'] . '
AND topic_id = ' . (int) $topic_id . '
AND in_message = 0
ORDER BY attach_id ASC';
$result = $db->sql_query($sql);
$sql_ary = array();

View File

@@ -74,7 +74,7 @@ class mcp_notes
*/
function mcp_notes_user_view($action)
{
global $config, $phpbb_log, $request;
global $config, $phpbb_log, $request, $phpbb_root_path, $phpEx;
global $template, $db, $user, $auth, $phpbb_container;
$user_id = $request->variable('u', 0);
@@ -185,9 +185,13 @@ class mcp_notes
trigger_error($msg . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $redirect . '">', '</a>'));
}
// Generate the appropriate user information for the user we are looking at
if (!function_exists('phpbb_get_user_rank'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$rank_title = $rank_img = '';
// Generate the appropriate user information for the user we are looking at
$rank_data = phpbb_get_user_rank($userrow, $userrow['user_posts']);
$avatar_img = phpbb_get_user_avatar($userrow);
$limit_days = array(0 => $user->lang['ALL_ENTRIES'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);
@@ -239,7 +243,6 @@ class mcp_notes
'TOTAL_REPORTS' => $user->lang('LIST_REPORTS', (int) $log_count),
'RANK_TITLE' => $rank_title,
'JOINED' => $user->format_date($userrow['user_regdate']),
'POSTS' => ($userrow['user_posts']) ? $userrow['user_posts'] : 0,
'WARNINGS' => ($userrow['user_warnings']) ? $userrow['user_warnings'] : 0,
@@ -250,9 +253,9 @@ class mcp_notes
'U_PROFILE' => get_username_string('profile', $userrow['user_id'], $userrow['username'], $userrow['user_colour']),
'AVATAR_IMG' => $avatar_img,
'RANK_IMG' => $rank_img,
)
);
'RANK_IMG' => $rank_data['img'],
'RANK_TITLE' => $rank_data['title'],
));
}
}

View File

@@ -363,14 +363,16 @@ function mcp_post_details($id, $mode, $action)
/** @var \phpbb\pagination $pagination */
$pagination = $phpbb_container->get('pagination');
$rdns_ip_num = $request->variable('rdns', '');
$start_users = $request->variable('start_users', 0);
$rdns_ip_num = $request->variable('rdns', '');
$lookup_all = $rdns_ip_num === 'all';
if ($rdns_ip_num != 'all')
$base_url = $url . '&amp;i=main&amp;mode=post_details';
$base_url .= $lookup_all ? '&amp;rdns=all' : '';
if (!$lookup_all)
{
$template->assign_vars(array(
'U_LOOKUP_ALL' => "$url&amp;i=main&amp;mode=post_details&amp;rdns=all")
);
$template->assign_var('U_LOOKUP_ALL', $base_url . '&amp;rdns=all');
}
$num_users = false;
@@ -405,7 +407,7 @@ function mcp_post_details($id, $mode, $action)
}
$pagination->generate_template_pagination(
$url . '&amp;i=main&amp;mode=post_details',
$base_url,
'pagination',
'start_users',
$num_users,
@@ -475,7 +477,7 @@ function mcp_post_details($id, $mode, $action)
'NUM_POSTS' => $row['postings'],
'L_POST_S' => ($row['postings'] == 1) ? $user->lang['POST'] : $user->lang['POSTS'],
'U_LOOKUP_IP' => ($rdns_ip_num == $row['poster_ip'] || $rdns_ip_num == 'all') ? '' : "$url&amp;i=$id&amp;mode=post_details&amp;rdns={$row['poster_ip']}#ip",
'U_LOOKUP_IP' => (!$lookup_all && $rdns_ip_num != $row['poster_ip']) ? "$base_url&amp;start_ips={$start_ips}&amp;rdns={$row['poster_ip']}#ip" : '',
'U_WHOIS' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&amp;mode=$mode&amp;action=whois&amp;p=$post_id&amp;ip={$row['poster_ip']}"))
);
}
@@ -489,7 +491,7 @@ function mcp_post_details($id, $mode, $action)
}
$pagination->generate_template_pagination(
$url . '&amp;i=main&amp;mode=post_details',
$base_url,
'pagination_ips',
'start_ips',
$num_ips,

View File

@@ -370,8 +370,9 @@ class mcp_queue
$topic_id = $request->variable('t', 0);
$forum_info = array();
/* @var $pagination \phpbb\pagination */
$pagination = $phpbb_container->get('pagination');
// If 'sort' is set, "Go" was pressed which is located behind the forums <select> box
// Then, unset the topic id so it does not override the forum id
$topic_id = $request->is_set_post('sort') ? 0 : $topic_id;
if ($topic_id)
{
@@ -651,6 +652,9 @@ class mcp_queue
}
unset($rowset, $forum_names);
/* @var \phpbb\pagination $pagination */
$pagination = $phpbb_container->get('pagination');
$base_url = $this->u_action . "&amp;f=$forum_id&amp;st=$sort_days&amp;sk=$sort_key&amp;sd=$sort_dir";
$pagination->generate_template_pagination($base_url, 'pagination', 'start', $total, $config['topics_per_page'], $start);

View File

@@ -337,6 +337,11 @@ class mcp_reports
case 'reports_closed':
$topic_id = $request->variable('t', 0);
if ($request->is_set_post('t'))
{
$topic_id = $request->variable('t', 0, false, \phpbb\request\request_interface::POST);
}
$forum_info = array();
$forum_list_reports = get_forum_list('m_report', false, true);
$forum_list_read = array_flip(get_forum_list('f_read', true, true)); // Flipped so we can isset() the forum IDs
@@ -412,7 +417,7 @@ class mcp_reports
$forum_options = '<option value="0"' . (($forum_id == 0) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_FORUMS'] . '</option>';
foreach ($forum_list_reports as $row)
{
$forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . str_repeat('&nbsp; &nbsp;', $row['padding']) . $row['forum_name'] . '</option>';
$forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . str_repeat('&nbsp; &nbsp;', $row['padding']) . truncate_string($row['forum_name'], 30, 255, false, $user->lang('ELLIPSIS')) . '</option>';
$forum_data[$row['forum_id']] = $row;
}
unset($forum_list_reports);

View File

@@ -457,6 +457,12 @@ function split_topic($action, $topic_id, $to_forum_id, $subject)
$post_info = $post_info[$post_id];
$subject = trim($subject);
/**
* Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR.
* Using their Numeric Character Reference's Hexadecimal notation.
*/
$subject = utf8_encode_ucr($subject);
// Make some tests
if (!$subject)
{

View File

@@ -572,11 +572,12 @@ function add_warning($user_row, $warning, $send_pm = true, $post_id = 0)
submit_pm('post', $warn_pm_subject, $pm_data, false);
}
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING', false, array($user_row['username']));
$log_id = $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING_BODY', false, array(
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING', false, [$user_row['username']]);
$log_id = $phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_WARNING_BODY', false, [
'reportee_id' => $user_row['user_id'],
$warning
));
utf8_encode_ucr($warning)
]);
$sql_ary = array(
'user_id' => $user_row['user_id'],

View File

@@ -390,7 +390,7 @@ class bbcode_firstpass extends bbcode
$in = str_replace(' ', '%20', $in);
// Checking urls
if (!preg_match('#^' . get_preg_expression('url') . '$#iu', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
if (!preg_match('#^' . get_preg_expression('url_http') . '$#iu', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#iu', $in))
{
return '[img]' . $in . '[/img]';
}
@@ -401,32 +401,6 @@ class bbcode_firstpass extends bbcode
$in = 'http://' . $in;
}
if ($config['max_' . $this->mode . '_img_height'] || $config['max_' . $this->mode . '_img_width'])
{
$imagesize = new \FastImageSize\FastImageSize();
$size_info = $imagesize->getImageSize(htmlspecialchars_decode($in));
if ($size_info === false)
{
$error = true;
$this->warn_msg[] = $user->lang['UNABLE_GET_IMAGE_SIZE'];
}
else
{
if ($config['max_' . $this->mode . '_img_height'] && $config['max_' . $this->mode . '_img_height'] < $size_info['height'])
{
$error = true;
$this->warn_msg[] = $user->lang('MAX_IMG_HEIGHT_EXCEEDED', (int) $config['max_' . $this->mode . '_img_height']);
}
if ($config['max_' . $this->mode . '_img_width'] && $config['max_' . $this->mode . '_img_width'] < $size_info['width'])
{
$error = true;
$this->warn_msg[] = $user->lang('MAX_IMG_WIDTH_EXCEEDED', (int) $config['max_' . $this->mode . '_img_width']);
}
}
}
if ($error || $this->path_in_domain($in))
{
return '[img]' . $in . '[/img]';
@@ -1524,6 +1498,35 @@ class parse_message extends bbcode_firstpass
}
}
/**
* Check attachment form token depending on submit type
*
* @param \phpbb\language\language $language Language
* @param \phpbb\request\request_interface $request Request
* @param string $form_name Form name for checking form key
*
* @return bool True if form token is not needed or valid, false if needed and invalid
*/
function check_attachment_form_token(\phpbb\language\language $language, \phpbb\request\request_interface $request, $form_name)
{
$add_file = $request->is_set_post('add_file');
$delete_file = $request->is_set_post('delete_file');
if (($add_file || $delete_file) && !check_form_key($form_name))
{
$this->warn_msg[] = $language->lang('FORM_INVALID');
if ($request->is_ajax() && $this->plupload)
{
$this->plupload->emit_error(-400, 'FORM_INVALID');
}
return false;
}
return true;
}
/**
* Parse Attachments
*/

View File

@@ -440,10 +440,10 @@ class ucp_groups
'GROUP_DESC_DISP' => generate_text_for_display($group_row['group_desc'], $group_row['group_desc_uid'], $group_row['group_desc_bitfield'], $group_row['group_desc_options']),
'GROUP_TYPE' => $group_row['group_type'],
'AVATAR' => (empty($avatar) ? '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $avatar),
'AVATAR_IMAGE' => (empty($avatar) ? '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />' : $avatar),
'AVATAR_WIDTH' => (isset($group_row['group_avatar_width'])) ? $group_row['group_avatar_width'] : '',
'AVATAR_HEIGHT' => (isset($group_row['group_avatar_height'])) ? $group_row['group_avatar_height'] : '',
'AVATAR' => !empty($avatar) ? $avatar : '',
'AVATAR_IMAGE' => !empty($avatar) ? $avatar : '',
'AVATAR_WIDTH' => isset($group_row['group_avatar_width']) ? $group_row['group_avatar_width'] : '',
'AVATAR_HEIGHT' => isset($group_row['group_avatar_height']) ? $group_row['group_avatar_height'] : '',
));
}
@@ -495,21 +495,22 @@ class ucp_groups
{
if (confirm_box(true))
{
$avatar_data['id'] = substr($avatar_data['id'], 1);
$phpbb_avatar_manager->handle_avatar_delete($db, $user, $avatar_data, GROUPS_TABLE, 'group_');
$cache->destroy('sql', GROUPS_TABLE);
$message = ($action == 'edit') ? 'GROUP_UPDATED' : 'GROUP_CREATED';
$message = $action === 'edit' ? 'GROUP_UPDATED' : 'GROUP_CREATED';
trigger_error($user->lang[$message] . $return_page);
}
else
{
confirm_box(false, $user->lang('CONFIRM_AVATAR_DELETE'), build_hidden_fields(array(
'avatar_delete' => true,
'i' => $id,
'mode' => $mode,
'g' => $group_id,
'action' => $action))
);
'avatar_delete' => true,
'i' => $id,
'mode' => $mode,
'g' => $group_id,
'action' => $action,
)));
}
}
@@ -534,7 +535,12 @@ class ucp_groups
'teampage' => $group_row['group_teampage'],
);
if ($config['allow_avatar'])
if (!check_form_key('ucp_groups'))
{
$error[] = $user->lang['FORM_INVALID'];
}
if (!count($error) && $config['allow_avatar'])
{
// Handle avatar
$driver_name = $phpbb_avatar_manager->clean_driver_name($request->variable('avatar_driver', ''));
@@ -556,11 +562,6 @@ class ucp_groups
$error = array_merge($error, $phpbb_avatar_manager->localize_errors($user, $avatar_error));
}
if (!check_form_key('ucp_groups'))
{
$error[] = $user->lang['FORM_INVALID'];
}
// Validate submitted colour value
if ($colour_error = validate_data($submit_ary, array('colour' => array('hex_colour', true))))
{
@@ -875,6 +876,11 @@ class ucp_groups
trigger_error($user->lang['NO_GROUP'] . $return_page);
}
if (!check_form_key('ucp_groups'))
{
trigger_error($user->lang('FORM_INVALID') . $return_page);
}
if (!($row = group_memberships($group_id, $user->data['user_id'])))
{
trigger_error($user->lang['NOT_MEMBER_OF_GROUP'] . $return_page);

View File

@@ -25,7 +25,7 @@ class ucp_notifications
public function main($id, $mode)
{
global $config, $template, $user, $request, $phpbb_container;
global $config, $template, $user, $request, $phpbb_container, $phpbb_dispatcher;
global $phpbb_root_path, $phpEx;
add_form_key('ucp_notification');
@@ -57,15 +57,40 @@ class ucp_notifications
foreach ($phpbb_notifications->get_subscription_types() as $group => $subscription_types)
{
foreach ($subscription_types as $type => $data)
foreach ($subscription_types as $type => $type_data)
{
foreach ($notification_methods as $method => $method_data)
{
if ($request->is_set_post(str_replace('.', '_', $type . '_' . $method_data['id'])) && (!isset($subscriptions[$type]) || !in_array($method_data['id'], $subscriptions[$type])))
$is_set_notify = $request->is_set_post(str_replace('.', '_', $type . '_' . $method_data['id']));
$is_available = $method_data['method']->is_available($type_data['type']);
/**
* Event to perform additional actions before ucp_notifications is submitted
*
* @event core.ucp_notifications_submit_notification_is_set
* @var array type_data The notification type data
* @var array method_data The notification method data
* @var bool is_set_notify The notification is set or not
* @var bool is_available The notification is available or not
* @var array subscriptions The subscriptions data
*
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'type_data',
'method_data',
'is_set_notify',
'is_available',
'subscriptions',
];
extract($phpbb_dispatcher->trigger_event('core.ucp_notifications_submit_notification_is_set', compact($vars)));
if ($is_set_notify && $is_available && (!isset($subscriptions[$type]) || !in_array($method_data['id'], $subscriptions[$type])))
{
$phpbb_notifications->add_subscription($type, 0, $method_data['id']);
}
else if (!$request->is_set_post(str_replace('.', '_', $type . '_' . $method_data['id'])) && isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type]))
else if ((!$is_set_notify || !$is_available) && isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type]))
{
$phpbb_notifications->delete_subscription($type, 0, $method_data['id']);
}
@@ -80,7 +105,7 @@ class ucp_notifications
$this->output_notification_methods($phpbb_notifications, $template, $user, 'notification_methods');
$this->output_notification_types($subscriptions, $phpbb_notifications, $template, $user, 'notification_types');
$this->output_notification_types($subscriptions, $phpbb_notifications, $template, $user, $phpbb_dispatcher, 'notification_types');
$this->tpl_name = 'ucp_notifications';
$this->page_title = 'UCP_NOTIFICATION_OPTIONS';
@@ -168,9 +193,10 @@ class ucp_notifications
* @param \phpbb\notification\manager $phpbb_notifications
* @param \phpbb\template\template $template
* @param \phpbb\user $user
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher
* @param string $block
*/
public function output_notification_types($subscriptions, \phpbb\notification\manager $phpbb_notifications, \phpbb\template\template $template, \phpbb\user $user, $block = 'notification_types')
public function output_notification_types($subscriptions, \phpbb\notification\manager $phpbb_notifications, \phpbb\template\template $template, \phpbb\user $user, \phpbb\event\dispatcher_interface $phpbb_dispatcher, $block = 'notification_types')
{
$notification_methods = $phpbb_notifications->get_subscription_methods();
@@ -191,15 +217,34 @@ class ucp_notifications
foreach ($notification_methods as $method => $method_data)
{
$template->assign_block_vars($block . '.notification_methods', array(
$tpl_ary = [
'METHOD' => $method_data['id'],
'NAME' => $user->lang($method_data['lang']),
'AVAILABLE' => $method_data['method']->is_available($type_data['type']),
'SUBSCRIBED' => (isset($subscriptions[$type]) && in_array($method_data['id'], $subscriptions[$type])) ? true : false,
));
];
/**
* Event to perform additional actions before ucp_notifications is displayed
*
* @event core.ucp_notifications_output_notification_types_modify_template_vars
* @var array type_data The notification type data
* @var array method_data The notification method data
* @var array tpl_ary The template variables
* @var array subscriptions The subscriptions data
*
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'type_data',
'method_data',
'tpl_ary',
'subscriptions',
];
extract($phpbb_dispatcher->trigger_event('core.ucp_notifications_output_notification_types_modify_template_vars', compact($vars)));
$template->assign_block_vars($block . '.notification_methods', $tpl_ary);
}
}
}

View File

@@ -193,6 +193,8 @@ class ucp_pm
trigger_error('NO_AUTH_READ_HOLD_MESSAGE');
}
add_form_key('ucp_pm_view');
// First Handle Mark actions and moving messages
$submit_mark = (isset($_POST['submit_mark'])) ? true : false;
$move_pm = (isset($_POST['move_pm'])) ? true : false;
@@ -210,6 +212,11 @@ class ucp_pm
// Move PM
if ($move_pm)
{
if (!check_form_key('ucp_pm_view'))
{
trigger_error('FORM_INVALID');
}
$move_msg_ids = (isset($_POST['marked_msg_id'])) ? $request->variable('marked_msg_id', array(0)) : array();
$cur_folder_id = $request->variable('cur_folder_id', PRIVMSGS_NO_BOX);

View File

@@ -26,7 +26,7 @@ if (!defined('IN_PHPBB'))
function compose_pm($id, $mode, $action, $user_folders = array())
{
global $template, $db, $auth, $user, $cache;
global $phpbb_root_path, $phpEx, $config;
global $phpbb_root_path, $phpEx, $config, $language;
global $request, $phpbb_dispatcher, $phpbb_container;
// Damn php and globals - i know, this is horrible
@@ -309,6 +309,35 @@ function compose_pm($id, $mode, $action, $user_folders = array())
$post = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
/**
* Alter the row of the post being quoted when composing a private message
*
* @event core.ucp_pm_compose_compose_pm_basic_info_query_after
* @var array post Array with data of the post being quoted
* @var int msg_id topic_id in the page request
* @var int to_user_id The id of whom the message is to
* @var int to_group_id The id of the group whom the message is to
* @var bool submit Whether the user is sending the PM or not
* @var bool preview Whether the user is previewing the PM or not
* @var string action One of: post, reply, quote, forward, quotepost, edit, delete, smilies
* @var bool delete Whether the user is deleting the PM
* @var int reply_to_all Value of reply_to_all request variable.
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'post',
'msg_id',
'to_user_id',
'to_group_id',
'submit',
'preview',
'action',
'delete',
'reply_to_all',
];
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_compose_pm_basic_info_query_after', compact($vars)));
if (!$post)
{
// If editing it could be the recipient already read the message...
@@ -665,6 +694,12 @@ function compose_pm($id, $mode, $action, $user_folders = array())
$subject = (!$subject && $action != 'post') ? $user->lang['NEW_MESSAGE'] : $subject;
$message = $request->variable('message', '', true);
/**
* Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR.
* Using their Numeric Character Reference's Hexadecimal notation.
*/
$subject = utf8_encode_ucr($subject);
if ($subject && $message)
{
if (confirm_box(true))
@@ -683,6 +718,10 @@ function compose_pm($id, $mode, $action, $user_folders = array())
);
$db->sql_query($sql);
/** @var \phpbb\attachment\manager $attachment_manager */
$attachment_manager = $phpbb_container->get('attachment.manager');
$attachment_manager->delete('attach', array_column($message_parser->attachment_data, 'attach_id'));
$redirect_url = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&amp;mode=$mode");
meta_refresh(3, $redirect_url);
@@ -700,8 +739,9 @@ function compose_pm($id, $mode, $action, $user_folders = array())
'message' => $message,
'u' => $to_user_id,
'g' => $to_group_id,
'p' => $msg_id)
);
'p' => $msg_id,
'attachment_data' => $message_parser->attachment_data,
));
$s_hidden_fields .= build_address_field($address_list);
confirm_box(false, 'SAVE_DRAFT', $s_hidden_fields);
@@ -799,7 +839,10 @@ function compose_pm($id, $mode, $action, $user_folders = array())
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_modify_parse_before', compact($vars)));
// Parse Attachments - before checksum is calculated
$message_parser->parse_attachments('fileupload', $action, 0, $submit, $preview, $refresh, true);
if ($message_parser->check_attachment_form_token($language, $request, 'ucp_pm_compose'))
{
$message_parser->parse_attachments('fileupload', $action, 0, $submit, $preview, $refresh, true);
}
if (count($message_parser->warn_msg) && !($remove_u || $remove_g || $add_to || $add_bcc))
{
@@ -844,6 +887,35 @@ function compose_pm($id, $mode, $action, $user_folders = array())
}
}
/**
* Modify private message
*
* @event core.ucp_pm_compose_modify_parse_after
* @var bool enable_bbcode Whether or not bbcode is enabled
* @var bool enable_smilies Whether or not smilies are enabled
* @var bool enable_urls Whether or not urls are enabled
* @var bool enable_sig Whether or not signature is enabled
* @var string subject PM subject text
* @var object message_parser The message parser object
* @var bool submit Whether or not the form has been sumitted
* @var bool preview Whether or not the signature is being previewed
* @var array error Any error strings
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'enable_bbcode',
'enable_smilies',
'enable_urls',
'enable_sig',
'subject',
'message_parser',
'submit',
'preview',
'error',
];
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_modify_parse_after', compact($vars)));
// Store message, sync counters
if (!count($error) && $submit)
{
@@ -867,6 +939,12 @@ function compose_pm($id, $mode, $action, $user_folders = array())
'address_list' => $address_list
);
/**
* Replace Emojis and other 4bit UTF-8 chars not allowed by MySQL to UCR/NCR.
* Using their Numeric Character Reference's Hexadecimal notation.
*/
$subject = utf8_encode_ucr($subject);
// ((!$message_subject) ? $subject : $message_subject)
$msg_id = submit_pm($action, $subject, $pm_data);
@@ -996,7 +1074,10 @@ function compose_pm($id, $mode, $action, $user_folders = array())
{
$quote_attributes['post_id'] = $post['msg_id'];
}
if ($action === 'quote')
{
$quote_attributes['msg_id'] = $post['msg_id'];
}
/** @var \phpbb\language\language $language */
$language = $phpbb_container->get('language');
/** @var \phpbb\textformatter\utils_interface $text_formatter_utils */

View File

@@ -32,6 +32,8 @@ function view_folder($id, $mode, $folder_id, $folder)
$folder_info = get_pm_from($folder_id, $folder, $user->data['user_id']);
add_form_key('ucp_pm_view');
if (!$submit_export)
{
$user->add_lang('viewforum');
@@ -197,6 +199,11 @@ function view_folder($id, $mode, $folder_id, $folder)
$enclosure = $request->variable('enclosure', '');
$delimiter = $request->variable('delimiter', '');
if (!check_form_key('ucp_pm_view'))
{
trigger_error('FORM_INVALID');
}
if ($export_type == 'CSV' && ($delimiter === '' || $enclosure === ''))
{
$template->assign_var('PROMPT', true);

View File

@@ -34,6 +34,27 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
$author_id = (int) $message_row['author_id'];
$view = $request->variable('view', '');
/**
* Modify private message data before it is prepared to be displayed
*
* @event core.ucp_pm_view_message_before
* @var int folder_id ID of the folder the message is in
* @var array folder Array with data of user's message folders
* @var int msg_id ID of the private message
* @var array message_row Array with message data
* @var int author_id ID of the message author
* @since 3.2.10-RC1
* @since 3.3.1-RC1
*/
$vars = [
'folder_id',
'folder',
'msg_id',
'message_row',
'author_id',
];
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_view_message_before', compact($vars)));
// Not able to view message, it was deleted by the sender
if ($message_row['pm_deleted'])
{

View File

@@ -39,12 +39,23 @@ class ucp_register
trigger_error('UCP_REGISTER_DISABLE');
}
$coppa = $request->is_set('coppa') ? (int) $request->variable('coppa', false) : false;
$coppa = $request->is_set('coppa_yes') ? 1 : ($request->is_set('coppa_no') ? 0 : false);
$coppa = $request->is_set('coppa') ? $request->variable('coppa', 0) : $coppa;
$agreed = $request->variable('agreed', false);
$submit = $request->is_set_post('submit');
$change_lang = $request->variable('change_lang', '');
$user_lang = $request->variable('lang', $user->lang_name);
if ($agreed && !check_form_key('ucp_register'))
{
$agreed = false;
}
if ($coppa !== false && !check_form_key('ucp_register'))
{
$coppa = false;
}
/**
* Add UCP register data before they are assigned to the template or submitted
*
@@ -67,14 +78,7 @@ class ucp_register
);
extract($phpbb_dispatcher->trigger_event('core.ucp_register_requests_after', compact($vars)));
if ($agreed)
{
add_form_key('ucp_register');
}
else
{
add_form_key('ucp_register_terms');
}
add_form_key('ucp_register');
if ($change_lang || $user_lang != $config['default_lang'])
{
@@ -168,11 +172,8 @@ class ucp_register
$template_vars = array(
'S_LANG_OPTIONS' => (count($lang_row) > 1) ? language_select($user_lang) : '',
'L_COPPA_NO' => sprintf($user->lang['UCP_COPPA_BEFORE'], $coppa_birthday),
'L_COPPA_YES' => sprintf($user->lang['UCP_COPPA_ON_AFTER'], $coppa_birthday),
'U_COPPA_NO' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register&amp;coppa=0'),
'U_COPPA_YES' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=register&amp;coppa=1'),
'L_COPPA_NO' => $user->lang('UCP_COPPA_BEFORE', $coppa_birthday),
'L_COPPA_YES' => $user->lang('UCP_COPPA_ON_AFTER', $coppa_birthday),
'S_SHOW_COPPA' => true,
'S_HIDDEN_FIELDS' => build_hidden_fields($s_hidden_fields),
@@ -410,11 +411,13 @@ class ucp_register
* @event core.ucp_register_user_row_after
* @var bool submit Do we display the form only
* or did the user press submit
* @var array data Array with current ucp registration data
* @var array cp_data Array with custom profile fields data
* @var array user_row Array with current ucp registration data
* @var array user_row Array with user data that will be inserted
* @since 3.1.4-RC1
* @changed 3.2.10-RC1 Added data array
*/
$vars = array('submit', 'cp_data', 'user_row');
$vars = array('submit', 'data', 'cp_data', 'user_row');
extract($phpbb_dispatcher->trigger_event('core.ucp_register_user_row_after', compact($vars)));
// Register user...

View File

@@ -418,24 +418,43 @@ function utf8_recode($string, $encoding)
}
/**
* Replace all UTF-8 chars that are not in ASCII with their NCR
*
* @param string $text UTF-8 string in NFC
* @return string ASCII string using NCRs for non-ASCII chars
*/
* Replace some special UTF-8 chars that are not in ASCII with their UCR.
* using their Numeric Character Reference's Hexadecimal notation.
*
* Doesn't interfere with Japanese or Cyrillic etc.
* Unicode character visualization will depend on the character support
* of your web browser and the fonts installed on your system.
*
* @see https://en.wikibooks.org/wiki/Unicode/Character_reference/1F000-1FFFF
*
* @param string $text UTF-8 string in NFC
* @return string ASCII string using NCR for non-ASCII chars
*/
function utf8_encode_ucr($text)
{
return preg_replace_callback('/[\\xF0-\\xF4].../', 'utf8_encode_ncr_callback', $text);
}
/**
* Replace all UTF-8 chars that are not in ASCII with their NCR
* using their Numeric Character Reference's Hexadecimal notation.
*
* @param string $text UTF-8 string in NFC
* @return string ASCII string using NCRs for non-ASCII chars
*/
function utf8_encode_ncr($text)
{
return preg_replace_callback('#[\\xC2-\\xF4][\\x80-\\xBF]{1,3}#', 'utf8_encode_ncr_callback', $text);
}
/**
* Callback used in encode_ncr()
*
* Takes a UTF-8 char and replaces it with its NCR. Attention, $m is an array
*
* @param array $m 0-based numerically indexed array passed by preg_replace_callback()
* @return string A HTML NCR if the character is valid, or the original string otherwise
*/
* Callback used in utf8_encode_ncr() and utf8_encode_ucr()
*
* Takes a UTF-8 char and replaces it with its NCR. Attention, $m is an array
*
* @param array $m 0-based numerically indexed array passed by preg_replace_callback()
* @return string A HTML NCR if the character is valid, or the original string otherwise
*/
function utf8_encode_ncr_callback($m)
{
return '&#' . utf8_ord($m[0]) . ';';

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