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

Compare commits

...

405 Commits

Author SHA1 Message Date
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
0f1643374e [prep-release-3.2.8] Update changelog for 3.2.8-RC1 2019-08-17 11:24:20 +02:00
Marc Alexander
62a68def57 [prep-release-3.2.8] Add migration for 3.2.8-RC1 2019-08-17 11:21:06 +02:00
Marc Alexander
815cb84ea5 [prep-release-3.2.8] Update version numbers to 3.2.8 2019-08-17 11:19:06 +02:00
Marc Alexander
f3d89e0e08 [prep-release-3.2.8] Update version numbers to 3.2.8-RC1 2019-08-17 11:18:05 +02:00
Marc Alexander
e59af343b8 Merge pull request #5658 from rubencm/ticket/13175
[ticket/13175] Check if account is already linked when using OAuth
2019-08-17 11:13:51 +02:00
Marc Alexander
9a992a4866 Merge pull request #5656 from 3D-I/ticket/16019
[ticket/16019] Deny prosilver's uninstallation
2019-08-17 11:02:08 +02:00
Marc Alexander
2d8c5efbd2 Merge pull request #5657 from Crizz0/ticket/15745
[ticket/15745] Uses {{ CREDIT_LINE }} instead of hardcoded language
2019-08-16 12:24:42 +02:00
Marc Alexander
93a472f08e Merge pull request #5654 from 3D-I/ticket/16080
[ticket/16080] ACP - Provide meaningful error msg for deleted installed style
2019-08-15 10:47:29 +02:00
3D-I
6de0c7bc66 [ticket/16019] Amend explanation
PHPBB3-16019
2019-08-14 20:09:13 +02:00
3D-I
3975983481 [ticket/16019] Short explanation
PHPBB3-16019
2019-08-14 18:47:17 +02:00
rubencm
ecb39bc435 [ticket/13175] Check if account is already linked when using OAuth
PHPBB3-13175
2019-08-14 14:51:19 +00:00
3D-I
a8f2b461d4 [ticket/16019] Short array syntax and tabulation
PHPBB3-16019
2019-08-14 05:29:11 +02:00
3D-I
6a79083c43 [ticket/16019] Rewamp ACP_STYLES_EXPLAIN
PHPBB3-16019
2019-08-14 05:08:26 +02:00
Christian Schnegelberger
14d83139ce [ticket/15745] Use TWIG instead of phpbb template code
PHPBB3-15745
2019-08-13 21:34:16 +02:00
Christian Schnegelberger
64304c8364 [ticket/15745] Uses {{ CREDIT_LINE }} instead of hardcoded language
PHPBB3-15745
2019-08-13 21:05:12 +02:00
3D-I
78f0ec8ea7 [ticket/16080] Remove sprintf()
PHPBB3-16080
2019-08-13 20:55:10 +02:00
Marc Alexander
a4436fb54d Merge pull request #5653 from 3D-I/ticket/16129
[ticket/16129] Enhance attachment's ALT tag
2019-08-13 18:46:26 +02:00
Marc Alexander
b563b7d26f Merge pull request #5655 from marc1706/ticket/16093
[ticket/16093] Ensure attach row is visible after upload with javascript
2019-08-13 18:34:06 +02:00
3D-I
463807fcf0 [ticket/16019] Code's enhancement
PHPBB3-16019
2019-08-13 06:39:46 +02:00
3D-I
66016db386 [ticket/16019] Get rid of the checkbox
PHPBB3-16019
2019-08-13 06:23:12 +02:00
3D-I
aec25f24ae [ticket/16019] Get rid of the uninstall link
PHPBB3-16019
2019-08-13 06:08:25 +02:00
3D-I
6cc16af75f [ticket/16019] Amend code for the better
PHPBB3-16019
2019-08-13 05:32:34 +02:00
3D-I
af84fb71e0 [ticket/16019] Move code to before of confirm box is submitted
PHPBB3-16019
2019-08-13 05:01:09 +02:00
3D-I
3fbdb2f345 [ticket/16019] Deny prosilver's uninstallation
PHPBB3-16019
2019-08-13 04:31:07 +02:00
Marc Alexander
ec306b0301 [ticket/16093] Ensure attach row is visible after upload with javascript
PHPBB3-16093
2019-08-12 22:33:24 +02:00
3D-I
fa5df79515 [ticket/16129] Provide proper HTML markup
PHPBB3-16129
2019-08-12 21:51:52 +02:00
Marc Alexander
89e95941b1 Merge pull request #5650 from 3D-I/ticket/16127
[ticket/16127] Add UI for email $max_chunk_size
2019-08-12 21:40:09 +02:00
3D-I
37de0f96d1 [ticket/16080] Use placeholder
PHPBB3-16080
2019-08-12 21:15:54 +02:00
3D-I
964c212f03 [ticket/16080] Provide a meaningful error message for deleted installed style
PHPBB3-16080
2019-08-12 01:20:33 +02:00
3D-I
1de4a65e58 [ticket/16080] Change location as it should have been.
PHPBB3-16080
2019-08-12 00:49:06 +02:00
3D-I
ebd958c728 [ticket/16080] Provide a back-trace for deleted installed style
That's a very edge case, I am using the same approach done in user.php

PHPBB3-16080
2019-08-11 23:21:48 +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
Marc Alexander
0a5d167441 Merge pull request #5648 from 3D-I/ticket/16109
[ticket/16109] Fix Custom Profile Field visibility's explain
2019-08-11 20:44:53 +02:00
Marc Alexander
b8f76a9330 Merge pull request #5645 from rxu/ticket/16124
[ticket/16124] Fix users search by last visit time in memberlist.php
2019-08-11 20:37:42 +02:00
Marc Alexander
38e5913338 Merge pull request #5637 from EA117/ticket/16054
[ticket/16054] Restore ability to login from any template.
2019-08-11 20:02:11 +02:00
Marc Alexander
48522fd938 Merge pull request #5643 from dark-1/ticket/16113
[ticket/16113] Add core.mcp_topic_modify_sql_ary
2019-08-11 17:36:19 +02:00
Marc Alexander
fe052fccd4 Merge pull request #5642 from dark-1/ticket/16114
[ticket/16114] mcp_topic_post_author_full_{append/prepend}
2019-08-11 17:24:11 +02:00
Marc Alexander
0854c7226d Merge pull request #5651 from 3D-I/ticket/15897
[ticket/15897] Fix Emojis' SQL Error in Attachment Comment
2019-08-11 17:15:46 +02:00
Marc Alexander
5fe3719f13 Merge pull request #5634 from dark-1/ticket/16111
[ticket/16111] Add core.message_history_modify_sql_ary
2019-08-11 17:10:32 +02:00
3D-I
a84dfe716b [ticket/16129] Enhance attachment's ALT tag
PHPBB3-16129
2019-08-11 05:22:48 +02:00
3D-I
d18e547332 [ticket/15897] Fix Emojis' SQL Error in Attachment Comment
PHPBB3-15897
2019-08-10 21:02:45 +02:00
Marc Alexander
997098d02a Merge pull request #5649 from marc1706/ticket/16126
[ticket/16126] Downgrade chocolatey to a working version
2019-08-09 13:27:05 +02:00
Marc Alexander
6e75b8bb3c [ticket/16126] Downgrade chocolatey to a working version
PHPBB3-16126
2019-08-09 11:09:58 +02:00
3D-I
f21c5f9fef [ticket/16127] Amend input validation PHP side
PHPBB3-16127
2019-08-08 21:38:42 +02:00
3D-I
b6e5a5fca8 [ticket/16127] Minimum 1 and rephrasing.
PHPBB3-16127
2019-08-08 01:33:16 +02:00
3D-I
82a04debca [ticket/16127] Add UI for email $max_chunk_size
PHPBB3-16127
2019-08-07 22:28:40 +02:00
Dark❶
2975eef976 [ticket/16114] mcp_topic_post_author_full_{append/prepend}
PHPBB3-16114
2019-08-07 21:05:07 +05:30
Dark❶
159c1d16d8 [ticket/16114] mcp_topic_post_author_full_{append/prepend}
PHPBB3-16114
2019-08-07 20:58:22 +05:30
Marc Alexander
c86e771dfe Merge pull request #5647 from 3D-I/ticket/16119
[ticket/16119] Prevent error message for Poll Title
2019-08-07 14:25:12 +02:00
3D-I
170dc2a63b [ticket/16109] Fix Custom Profile Field visibility's explain
PHPBB3-16109
2019-08-06 02:39:02 +02:00
3D-I
ed7b44d59e [ticket/16119] Prevent error message for Poll Title
PHPBB3-16119
2019-08-06 02:17:13 +02:00
rxu
e8dcf27ee3 [ticket/16124] Search users who have never logged in for lt case only
PHPBB3-16124
2019-08-06 01:15:50 +07:00
rxu
8339269919 [ticket/16124] Fix users search by last visit time in memberlist.php
PHPBB3-16124
2019-08-05 20:12:10 +07:00
Marc Alexander
5307da11b6 Merge pull request #5641 from EA117/ticket/16040
[ticket/16040] Forum list won't display topic icons containing a space.
2019-07-31 07:50:16 +02:00
Derky
6ada02b060 Merge pull request #5628 from marc1706/ticket/16101
[ticket/16101] Add Referrer-Policy header to phpBB's headers
2019-07-30 07:34:13 +02:00
Marc Alexander
a02524e7fc Merge pull request #5633 from kasimi/ticket/16108
[ticket/16108] Add topiclist_row_topic_by_author_before|after
2019-07-29 21:45:13 +02:00
Marc Alexander
207b678896 Merge pull request #5632 from kasimi/ticket/16107
[ticket/16107] Add mcp_move_destination_forum_before|after
2019-07-29 21:43:32 +02:00
Marc Alexander
51205febe3 Merge pull request #5635 from EA117/ticket/16066
[ticket/16066] Fix FORM_INVALID always returned for banned user.
2019-07-29 21:38:13 +02:00
Marc Alexander
6440f97a4f Merge pull request #5638 from marc1706/ticket/16112
[ticket/16112] Update composer dependencies for 3.2.x
2019-07-29 21:30:53 +02:00
Marc Alexander
0ffd0d1924 Merge pull request #5627 from senky/ticket/16097
[ticket/16097] Add core.viewtopic_gen_sort_selects_before
2019-07-29 20:48:23 +02:00
Jakub Senko
cd6a0026d5 [ticket/16097] Correctly classify sort_days as int
PHPBB3-16097
2019-07-29 08:22:19 +02:00
Dark❶
221a91a26f [ticket/16114] mcp_topic_postrow_post_details_author_username_{append/prepend}
PHPBB3-16114
2019-07-29 03:22:04 +05:30
Dark❶
cd75b712d4 [ticket/16113] Add core.mcp_topic_modify_sql_ary
PHPBB3-16113
2019-07-29 03:13:29 +05:30
Dark❶
b30822ea80 [ticket/16114] mcp_topic_postrow_post_details_author_username_{append/prepend}
PHPBB3-16114
2019-07-29 02:57:24 +05:30
EA117
81fd854983 [ticket/16040] Forum list won't display topic icons containing a space.
Change proSilver's viewforum_body.html template to be in line with existing
viewtopic_body.html behavior, in which the topic icon path will be surrounded
in quotes, and presence of a space in the topic icon file name will not fail.

PHPBB3-16040
2019-07-28 16:21:10 -05:00
Marc Alexander
4084939620 [ticket/16112] Update composer dependencies for 3.2.x
PHPBB3-16112
2019-07-28 22:33:47 +02:00
EA117
792882ef63 [ticket/16054] Restore ability to login from any template.
Moving the login form's add_form_key() work into page_header(), so that the
template variables required for presenting a login form are again available
to any template that chooses to consume them.

PHPBB3-16054
2019-07-28 15:15:39 -05:00
EA117
636fc7fad7 [ticket/16066] Fix FORM_INVALID always returned for banned user.
After the introduction of add_form_key() and check_form_key() calls to
login_box() in phpBB 3.2.6 and later, if a banned user attempts to login,
they receive a "The submitted form was invalid. Try submitting again."
Instead of the message indicating that they are banned, and why.

This is happening because check_ban() actually calls into login_box()
recursively, but after the $user->session_id has been switched to a new
session ID for the logging-on user.  Therefore, now that check_form_key()
has been introduced to login_box(), it is impossible for check_form_key()
to succeed during this recursive call.

Fix is to make login_box()'s use of check_form_key() conditional on whether
IN_CHECK_BAN is defined, so that the recursive call does not attempt to
re-validate the form_key again.  Note the form_key has already been
successfully verified by the original call into login_box(), prior to calling
into check_ban() and attempting to recursively call login_box().  So the
protection of why check_form_key() was added is still intact with this change.

PHPBB3-16066
2019-07-28 12:25:54 -05:00
Marc Alexander
b53f95e577 Merge pull request #5494 from mrgoldy/ticket/15885
[ticket/15885] Display group rank on memberlist_body
2019-07-28 17:55:25 +02:00
Nekstati
6b04fda0f3 [ticket/15467] Fix JS for permissions setting
PHPBB3-15467
2019-07-28 22:47:01 +07:00
Marc Alexander
f567b2bb69 Merge pull request #5459 from mrgoldy/ticket/15886
[ticket/15886] Group helper functions
2019-07-28 15:31:09 +02:00
Dark❶
8ac4f955ca [ticket/16111] Add core.message_history_modify_sql_ary
PHPBB3-16111
2019-07-28 18:36:37 +05:30
Dark❶
01d0457f67 [ticket/16111] Add core.message_history_modify_sql_ary
PHPBB3-16111
2019-07-28 18:06:16 +05:30
Dark❶
5cd0aad3c6 [ticket/16111] Add core.message_history_modify_sql_ary
PHPBB3-16111
2019-07-28 17:51:17 +05:30
rxu
4d640555ef [ticket/15467] Fix JS for permissions setting
PHPBB3-15467
2019-07-28 18:34:35 +07:00
Marc Alexander
cf96967677 [ticket/15886] Fix minor code style issues
PHPBB3-15886
2019-07-28 12:21:46 +02:00
Marc Alexander
ae62bc4642 Merge pull request #5575 from rubencm/ticket/14459
[ticket/14459] Check language input for group and fix template logic
2019-07-28 10:38:33 +02:00
rubencm
c281604d0b [ticket/14459] Use language property
PHPBB3-14459
2019-07-27 23:52:01 +00:00
rubencm
acb5794d50 [ticket/14459] Rename variable
PHPBB3-14459
2019-07-27 15:15:58 +00:00
Marc Alexander
65ff149fc9 Merge pull request #5601 from senky/ticket/16013
[ticket/16013] Allow admins to use disallowed username
2019-07-27 16:20:53 +02:00
Marc Alexander
79bcb20ac5 Merge pull request #5626 from cpeel/ticket/16096
[ticket/16096] Use InnoDB fulltext limits for InnoDB tables
2019-07-27 16:18:37 +02:00
Marc Alexander
179f5c75ed [ticket/16108] Use twig syntax in template event
PHPBB3-16108
2019-07-27 16:04:48 +02:00
Marc Alexander
1a00b4a565 [ticket/16107] Use twig syntax for event
PHPBB3-16107
2019-07-27 16:02:01 +02:00
Marc Alexander
d06e9745c2 Merge pull request #5631 from kasimi/ticket/16106
[ticket/16106] Add core.mcp_main_before
2019-07-27 14:57:30 +02:00
Marc Alexander
1b4f82cd1d Merge pull request #5630 from 3D-I/ticket/16103
[ticket/16103] Add core.pm_modify_message_subject
2019-07-27 14:37:58 +02:00
Marc Alexander
978d1976b0 Merge pull request #5629 from 3D-I/ticket/16102
[ticket/16102] Add core.posting_modify_post_subject
2019-07-27 14:30:30 +02:00
kasimi
7a54701612 [ticket/16108] Add topiclist_row_topic_by_author_before|after
PHPBB3-16108
2019-07-23 21:21:54 +02:00
kasimi
2bb08f853e [ticket/16107] Add mcp_move_destination_forum_before|after
PHPBB3-16107
2019-07-23 21:19:05 +02:00
Marc Alexander
b59e101d8d Merge pull request #5610 from espipj/ticket/16070
[ticket/16070] Remove support for WebSTAR and Xitami
2019-07-23 21:18:22 +02:00
kasimi
a12d93b8b8 [ticket/16106] Add core.mcp_main_before
PHPBB3-16106
2019-07-23 21:13:08 +02:00
Marc Alexander
a4ad94ef5c Merge pull request #5624 from senky/ticket/16089
[ticket/16089] Add core.confirm_box_ajax_before
2019-07-23 21:08:50 +02:00
Nuno Lopes
d3c3dc24fe [ticket/15982] fix warning with PHP >= 7.2 with Q&A captcha plugin
PHPBB3-15982
2019-07-22 22:16:21 +02:00
Marc Alexander
7c559b2912 Merge pull request #5609 from senky/ticket/15946
[ticket/15946] Add core.posting_modify_row_data
2019-07-22 21:40:02 +02:00
Marc Alexander
d738397e6f Merge pull request #5606 from senky/ticket/15976
[ticket/15976] Reset user_passchg only if user changed password
2019-07-22 21:31:53 +02:00
Marc Alexander
6559bb9511 Merge pull request #5572 from dark-1/ticket/16023
[ticket/16023] Add core.message_history_modify_template_vars
2019-07-22 20:55:00 +02:00
Jakub Senko
90dcd1a0f4 [ticket/16089] Add core.confirm_box_ajax_before
PHPBB3-16089
2019-07-22 08:19:32 +02:00
Marc Alexander
0e2c927551 Merge pull request #5625 from marc1706/ticket/16093
[ticket/16093] Do not display attach-row-tpl
2019-07-21 22:24:48 +02:00
Marc Alexander
091e195717 Merge pull request #5571 from dark-1/ticket/16021
[ticket/16021] Recognize number of Template Event instances in events.md file
2019-07-21 21:38:23 +02:00
Marc Alexander
17c6cd3676 Merge pull request #5562 from senky/ticket/15961
[ticket/15961] Use newer TLS in SMTP
2019-07-21 21:12:00 +02:00
Marc Alexander
17ef8a0369 [ticket/16093] Do not display attach-row-tpl
PHPBB3-16093
2019-07-21 20:47:16 +02:00
3D-I
2f8b9fb549 [ticket/16103] Add core.pm_modify_message_subject
PHPBB3-16103
2019-07-20 20:35:25 +02:00
3D-I
b9f78d64d7 [ticket/16102] Add core.posting_modify_post_subject
PHPBB3-16102
2019-07-20 20:24:46 +02:00
Marc Alexander
30f8e5d638 [ticket/16101] Add Referrer-Policy header to phpBB's headers
PHPBB3-16101
2019-07-20 09:43:24 +02: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
Jakub Senko
1dbb570284 [ticket/16097] Add core.viewtopic_gen_sort_selects_before
PHPBB3-16097
2019-07-08 09:00:30 +02:00
Casey Peel
e33e572741 [ticket/16096] Use InnoDB fulltext limits for InnoDB tables
The max and min search length for the MySQL database vary based on the
engine for the underlying table. For MyISAM tables, the variables are
ft_max_word_len and ft_min_word_len, but for InnoDB tables the
variables are innodb_ft_max_token_size and innodb_ft_min_token_size.

Take the posts table type into account when setting the max and min
search length.

PHPBB3-16096
2019-07-08 05:58:41 +00:00
rubencm
6787f6706e [ticket/14459] Fix
PHPBB3-14459
2019-06-25 16:37:16 +00:00
rubencm
0184865c5c [ticket/14459] Uppercase string to try to match language keys
PHPBB3-14459
2019-06-25 16:33:38 +00:00
rubencm
e0395fa2f2 [ticket/14459] Uppercase string to try to match language keys
PHPBB3-14459
2019-06-25 16:29:51 +00:00
rubencm
191008daff [ticket/14459] Remove unused code
PHPBB3-14459
2019-06-25 16:23:59 +00:00
rubencm
ef3b2a3f24 [ticket/14459] Use twig
PHPBB3-14459
2019-06-25 16:20:00 +00:00
rubencm
6876fcb46a [ticket/14459] Remove unused variables
PHPBB3-14459
2019-06-25 15:59:12 +00:00
rubencm
621747c7bc [ticket/14459] Remove inline css
PHPBB3-14459
2019-06-25 15:57:44 +00:00
Marc Alexander
9e9bdb69b5 Merge pull request #5623 from marc1706/ticket/16078
[ticket/16078] Use headless chrome and disable gpu acceleration
2019-06-23 10:49:52 +02:00
rubencm
caa767e5a8 [ticket/14459] Fix template logic
PHPBB3-14459
2019-06-21 23:32:22 +00:00
rubencm
caf5ee42fd [ticket/14459] Fix rebase
PHPBB3-14459
2019-06-20 01:46:52 +00:00
rubencm
d0b50b9ca1 [ticket/14459] Check language input for group
PHPBB3-14459
2019-06-20 01:45:36 +00:00
Marc Alexander
3002c1b22a [ticket/16078] Add use statement for ChromeOptions
PHPBB3-16078
2019-06-19 08:29:34 +02:00
Marc Alexander
1be392a16a [ticket/16078] Use headless chrome and disable gpu acceleration
This is to hopefully get rid of some of the issues with timeouts.

PHPBB3-16078
2019-06-19 07:32:52 +02:00
Marc Alexander
ab6fd30d0d Merge pull request #5608 from senky/ticket/15967
[ticket/15967] Improve admin activate email wording
2019-06-17 15:31:42 +02:00
Marc Alexander
70f09a60c7 Merge pull request #5620 from senky/ticket/16075
[ticket/16075] Fix warning in PM filter
2019-06-17 15:27:45 +02:00
Marc Alexander
a393a23a08 Merge pull request #5616 from JoshyPHP/ticket/16074
[ticket/16074] Fix Twemoji URL for ZWJ sequences
2019-06-17 13:54:38 +02:00
Marc Alexander
7f50c26941 Merge pull request #5622 from 3D-I/ticket/15211
[ticket/15211] Fix Emoji characters in forum name
2019-06-17 10:26:04 +02:00
Marc Alexander
2a0b38cac0 Merge pull request #5604 from senky/ticket/15984
[ticket/15984] Use private cache-control
2019-06-17 10:20:36 +02:00
Marc Alexander
ca705af91d Merge pull request #5602 from senky/ticket/16003
[ticket/16003] Fix num_posts sync
2019-06-17 10:14:35 +02:00
Marc Alexander
c0917c2862 Merge pull request #5600 from senky/ticket/16047
[ticket/16047] Improve wording for PM permissions
2019-06-17 10:11:31 +02:00
Marc Alexander
cfd4aab7b7 Merge pull request #5599 from mrgoldy/ticket/16068
[ticket/16068] Adjust DocBlock @param's
2019-06-17 10:06:11 +02:00
Marc Alexander
951b097761 Merge pull request #5597 from senky/ticket/16065
[ticket/16065] Add user_ip to SQL query
2019-06-17 09:59:57 +02:00
Marc Alexander
46ea774950 Merge pull request #5595 from rxu/ticket/16063
[ticket/16063] Remove board_dst config value since unused
2019-06-17 09:34:39 +02:00
Marc Alexander
de308ea321 Merge pull request #5594 from rxu/ticket/16061
[ticket/16061] Migrator to drop unique indexes when needed
2019-06-17 09:02:54 +02:00
3D-I
608cf00aea [ticket/15211] Wording
PHPBB3-15211
2019-06-12 15:05:12 +02:00
3D-I
aad8ffff51 [ticket/15211] Fix Emoji characters in forum name
PHPBB3-15211
2019-06-11 05:44:17 +02:00
Jakub Senko
79d033082e [ticket/16047] Improve wording for PM permissions
PHPBB3-16047
2019-06-08 20:03:51 +02:00
Marc Alexander
7ca740bec8 Merge pull request #5574 from dark-1/ticket/16025
[ticket/16025] Add 2 template events *_author_username_{append/prepend}
2019-06-07 23:46:41 +02:00
Jakub Senko
a91b37d8f2 [ticket/16075] Fix warning in PM filter
PHPBB3-16075
2019-06-07 16:12:02 +02:00
Marc Alexander
4babe93a5d Merge pull request #5573 from dark-1/ticket/16024
[ticket/16024] Add core.topic_review_modify_sql_ary
2019-06-06 22:27:00 +02:00
Marc Alexander
4f44145301 Merge pull request #5603 from senky/ticket/16000
[ticket/16000] Link to php's date()
2019-06-06 21:59:25 +02:00
Marc Alexander
d673527331 Merge pull request #5617 from marc1706/ticket/16078
[ticket/16078] Use chrome as webdriver
2019-06-06 21:51:05 +02:00
Marc Alexander
34a6493fb5 [ticket/16078] Use chrome as webdriver
PHPBB3-16078
2019-06-06 18:57:01 +02:00
rxu
ed2123fa61 [ticket/16063] Move new migration file to 32x folder
PHPBB3-16063
2019-06-06 21:33:06 +07:00
Marc Alexander
ddc9a4dff6 Merge pull request #5615 from 3D-I/ticket/16073
[ticket/16073] Fix warning in ACP version check
2019-06-05 21:22:26 +02:00
Marc Alexander
5e4f4b2dc6 Merge pull request #5612 from senky/ticket/15932
[ticket/15932] Disallow deleting locked attachments
2019-06-04 22:21:45 +02:00
Jakub Senko
25176d4588 [ticket/15967] Improve admin activate email wording
PHPBB3-15967
2019-06-04 20:07:12 +02:00
Jakub Senko
fe796267c1 [ticket/16000] Do not open links in a new tab
PHPBB3-16000
2019-06-04 20:05:06 +02:00
JoshyPHP
a563b616e0 [ticket/16074] Fix Twemoji URL for ZWJ sequences
PHPBB3-16074
2019-06-04 18:21:11 +02:00
Marc Alexander
0d4cd552fe Merge pull request #5607 from senky/ticket/15974
[ticket/15974] Remove Back to previous page link
2019-06-03 23:10:46 +02:00
Marc Alexander
3632a0f4f2 Merge pull request #5613 from 3D-I/ticket/16071
[ticket/16071] Undefined index for custom attachments groups
2019-06-03 21:18:40 +02:00
3D-I
0a89c53658 [ticket/16073] Fix warning in ACP version check
PHPBB3-16073
2019-06-01 00:25:24 +02:00
3D-I
fa1952fd08 [ticket/16071] Undefined index for custom attachments groups
PHPBB3-16071
2019-05-29 09:03:55 +02:00
Jakub Senko
9e985af1e8 [ticket/15932] Disallow deleting locked attachments
PHPBB3-15932
2019-05-28 10:15:59 +02:00
espipj
0c3ff0419c [ticket/16070] Remove unused code
PHPBB3-16070
2019-05-27 21:26:44 +01:00
Marc Alexander
97e92f52d7 Merge pull request #5592 from 3D-I/ticket/16055
[ticket/16055] Fix Oauth's logins in 3.2.x
2019-05-27 21:19:05 +02:00
Marc Alexander
95ab325251 Merge pull request #5593 from JoshyPHP/ticket/16053
[ticket/16053] Update s9e/text-formatter
2019-05-27 20:44:11 +02:00
Jakub Senko
d0ef8695e4 [ticket/15946] Add core.posting_modify_row_data
PHPBB3-15946
2019-05-27 16:26:23 +02:00
Jakub Senko
9c47e0eee8 [ticket/15974] Remove Back to previous page link
PHPBB3-15974
2019-05-27 15:49:49 +02:00
Jakub Senko
11475e5366 [ticket/15976] Reset user_passchg only if user changed password
PHPBB3-15976
2019-05-27 15:40:55 +02:00
Jakub Senko
a614e646d1 [ticket/15984] Use private cache-control
PHPBB3-15984
2019-05-27 15:31:35 +02:00
Jakub Senko
a535b6449a [ticket/16000] Link to php's date()
PHPBB3-16000
2019-05-24 15:25:28 +02:00
Jakub Senko
2c281e50e0 [ticket/16003] Fix num_posts sync
PHPBB3-16003
2019-05-24 15:21:56 +02:00
Jakub Senko
2b1102e372 [ticket/16013] Allow admins to use disallowed username
PHPBB3-16013
2019-05-24 15:17:18 +02:00
mrgoldy
c01e604998 [ticket/16068] Adjust DocBlock @param's
PHPBB3-16068
2019-05-24 14:43:10 +02:00
Marc Alexander
f6beabc593 Merge pull request #5598 from marc1706/ticket/16067
[ticket/16067] Specify trusty build environment
2019-05-23 22:06:50 +02:00
Marc Alexander
964cc30548 [ticket/16067] Specify trusty build environment
PHPBB3-16067
2019-05-23 19:59:13 +02:00
Jakub Senko
bba9de8c9c [ticket/16065] Add user_ip to SQL query
PHPBB3-16065
2019-05-23 09:14:45 +02:00
rxu
e3b76bce37 [ticket/16063] Remove board_dst config value since unused
PHPBB3-16063
2019-05-18 17:28:01 +07:00
rxu
84ef70b42f [ticket/16061] Migrator to drop unique indexes when needed
PHPBB3-16061
2019-05-18 02:08:30 +07:00
JoshyPHP
3208c41da8 [ticket/16053] Update s9e/text-formatter
PHPBB3-16053
2019-05-17 15:37:20 +02:00
3D-I
72be8e0870 [ticket/16055] Fix Oauth's redirects
Via forum, memberlist, topic or post etc..

PHPBB3-16055
2019-05-16 21:53:43 +02:00
Marc Alexander
8142257e31 Merge pull request #5587 from 3D-I/ticket/16048
[ticket/16048] Fix restore backup from ACP
2019-05-14 17:24:31 +02:00
Marc Alexander
fdc04cb9ec Merge pull request #5588 from rxu/ticket/16050
[ticket/16050] Fix PHP warning in MCP Banning tab on PHP 7.2+
2019-05-14 17:18:35 +02:00
Marc Alexander
d6a6e86975 Merge pull request #5590 from cclauss/patch-1
[ticket/16058] Travis CI: "sudo: required" not longer is
2019-05-14 11:42:12 +02:00
cclauss
275d6ee050 [ticket/16058] Travis CI: "sudo: required" not longer is
[Travis are now recommending removing the __sudo__ tag](
https://blog.travis-ci.com/2018-11-19-required-linux-infrastructure-migration).

"_If you currently specify __sudo:__ in your __.travis.yml__, we recommend
removing that configuration_"

PHPBB3-16058
2019-05-13 21:54:03 +02:00
rxu
7c6e660694 [ticket/16050] Fix PHP warning in MCP Banning tab on PHP 7.2+
PHPBB3-16050
2019-05-11 10:45:34 +07:00
Dark❶
fd0d9e9967 [ticket/16025] Add 2 template events *_author_username_{append/prepend}
PHPBB3-16025
2019-05-07 20:56:30 +05:30
Dark❶
5c42851730 [ticket/16024] Add core.topic_review_modify_sql_ary
PHPBB3-16024
2019-05-07 20:49:56 +05:30
Dark❶
411f4ac817 [ticket/16023] Add core.message_history_modify_template_vars
PHPBB3-16023
2019-05-07 20:46:22 +05:30
3D-I
abc9d746c7 [ticket/16048] Fix restore backup from ACP
PHPBB3-16048
2019-05-07 00:03:06 +02:00
Marc Alexander
61bdccbfd8 Merge branch 'prep-release-3.2.7' into 3.2.x 2019-05-05 10:35:17 +02:00
Marc Alexander
07767ab3e6 [prep-release-3.2.7] Add 3.2.7 migration 2019-05-04 15:34:18 +02:00
Marc Alexander
9434e4fa88 [prep-release-3.2.7] Update version numbers to 3.2.7 2019-05-04 15:26:45 +02:00
Marc Alexander
294e87015f [3.2.x] Update version numbers to 3.2.8-dev 2019-05-03 23:12:54 +02:00
Marc Alexander
22e3c67864 Merge branch 'prep-release-3.2.7' into 3.2.x 2019-05-03 23:11:24 +02:00
Marc Alexander
0d3b393ca6 [prep-release-3.2.7] Add changelog for 3.2.7-RC1 2019-05-02 22:57:33 +02:00
Marc Alexander
af7412f3cb [prep-release-3.2.7] Add migration for 3.2.7-RC1 2019-05-02 22:55:55 +02:00
Marc Alexander
417e18b39d Merge pull request #5581 from marc1706/ticket/16042
[ticket/16042] Use S_LOGIN_REDIRECT to output login form token
2019-05-02 22:54:47 +02:00
Marc Alexander
4b6bdbe558 [ticket/16042] Adjust positioning and add comment to overwrite
PHPBB3-16042
2019-05-02 21:29:11 +02:00
Marc Alexander
3c822556c1 [ticket/16042] Use S_LOGIN_REDIRECT to output login form token
PHPBB3-16042
2019-05-02 21:21:07 +02:00
Marc Alexander
dc10853356 [prep-release-3.2.7] Update version numbers to 3.2.7 2019-05-02 20:53:02 +02:00
Marc Alexander
0bf0f4d32b [prep-release-3.2.7] Update version numbers for 3.2.7-RC1 2019-05-02 20:52:13 +02:00
Marc Alexander
ccf5575dd8 Merge pull request #5577 from JoshyPHP/ticket/16034
[ticket/16034] Fix [url=] links being incorrectly shortened
2019-05-02 19:41:32 +02:00
Marc Alexander
21b5256740 Merge pull request #5578 from rubencm/ticket/16036
[ticket/16036] Add S_FORM_TOKEN_LOGIN to all login forms
2019-05-02 19:39:11 +02:00
Marc Alexander
b2f3f72eca Merge pull request #5579 from VSEphpbb/ticket/16037
[ticket/16037] Fix UCP PM ViewFolder PHP Notice error
2019-05-01 22:20:04 +02:00
Marc Alexander
eb1896e6f7 Merge pull request #5580 from mrgoldy/ticket/16039
[ticket/16039] Global dispatcher
2019-05-01 20:33:12 +02:00
mrgoldy
af6dcdd6e6 [ticket/16039] Global dispatcher
PHPBB3-16039
2019-05-01 15:54:48 +02:00
Matt Friedman
70b7777743 [ticket/16037] Fix UCP PM ViewFolder PHP Notice error
PHPBB3-16037
2019-04-30 15:18:07 -07:00
rubencm
540a6b7d2e [ticket/16036] Add S_FORM_TOKEN_LOGIN to all login forms
PHPBB3-16036
2019-04-29 16:13:26 +00:00
Marc Alexander
055d7658db Merge branch 'prep-release-3.2.6' into 3.2.x 2019-04-29 08:35:30 +02:00
JoshyPHP
06a95487fe [ticket/16034] Fix [url=] links being incorrectly shortened
PHPBB3-16034
2019-04-28 02:43:05 +02:00
Marc Alexander
bd2ddc1d2e [3.2.x] Update versions to 3.2.7-dev 2019-04-21 00:17:25 +02:00
Marc Alexander
446c0459c9 Merge branch 'prep-release-3.2.6' into 3.2.x 2019-04-21 00:16:06 +02:00
Dark❶
37e3e9711c [ticket/16025] Add 2 template events *_author_username_{append/prepend}
PHPBB3-16025
2019-04-20 16:44:03 +05:30
Dark❶
0a3fb27d47 [ticket/16023] Add core.message_history_modify_template_vars
PHPBB3-16023
2019-04-20 15:42:03 +05:30
Dark❶
6098503080 [ticket/16025] Add 2 template events *_author_username_{append/prepend}
PHPBB3-16025
2019-04-20 15:35:01 +05:30
Dark❶
00a260dc00 [ticket/16025] Add 2 template events *_author_username_{append/prepend}
PHPBB3-16025
2019-04-20 15:30:24 +05:30
Dark❶
b76e5a9c18 [ticket/16023] Add core.message_history_modify_template_vars
PHPBB3-16023
2019-04-20 15:02:07 +05:30
Dark❶
a0dfc35cb9 [ticket/16024] Add core.topic_review_modify_sql_ary
PHPBB3-16024
2019-04-20 15:00:32 +05:30
Dark❶
d999e9bf8b [ticket/16024] Add core.topic_review_modify_sql_ary
PHPBB3-16024
2019-04-20 14:48:10 +05:30
Dark❶
f7a208d103 [ticket/16023] Add core.message_history_modify_template_vars
PHPBB3-16023
2019-04-20 14:38:25 +05:30
Dark❶
f2489a4c00 [ticket/16021] Recognize number of Template Event instances in events.md file
PHPBB3-16021
2019-04-19 21:57:23 +05:30
Dark❶
22ca7474ea [ticket/16021] Recognize number of Template Event instances in events.md file
PHPBB3-16021
2019-04-19 19:06:40 +05:30
Jakub Senko
5262e3bb55 [ticket/15961] Improve smtp server explanation lang
PHPBB3-15961
2019-04-18 09:43:56 +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
Jakub Senko
fe22deb5d5 [ticket/15961] Use newer TLS in SMTP
PHPBB3-15961
2019-04-08 14:37:42 +02:00
mrgoldy
45e1aff14a [ticket/15886] Appropriate HTML docs
PHPBB3-15886
2019-03-10 17:44:03 +01:00
mrgoldy
479201a3a1 [ticket/15886] Add @html doc for group/user strings
PHPBB3-15886
2019-03-09 10:30:19 +01:00
mrgoldy
214cf2c011 [ticket/15886] Move append_sid from constructor
PHPBB3-15886
2019-01-07 21:19:58 +01:00
mrgoldy
daf58a13c2 [ticket/15885] Display group rank on memberlist_body
PHPBB3-15885
2019-01-02 14:56:00 +01:00
mrgoldy
813789c644 [ticket/15886] Capital Y in arraY
PHPBB3-15886
2019-01-02 13:30:58 +01:00
mrgoldy
f6c93a81d3 [ticket/15886] No profile url for BOTS group
PHPBB3-15886
2019-01-02 13:21:44 +01:00
mrgoldy
f023dd590f [ticket/15886] Mock path helper in group helper tests
PHPBB3-15886
2019-01-02 12:33:25 +01:00
mrgoldy
50cec4d54c [ticket/15886] Change phpbb_get_group_avatar variable names
PHPBB3-15886
2018-12-30 14:15:03 +01:00
mrgoldy
e2e3d402a2 [ticket/15886] Clean up services
PHPBB3-15886
2018-12-29 13:28:00 +01:00
mrgoldy
d79eb72fc1 [ticket/15886] Class variable, comment splitting, events since tag, class names
PHPBB3-15886
2018-12-29 13:11:51 +01:00
mrgoldy
d356fa9f97 [ticket/15886] Arguments for path_helper
PHPBB3-15886
2018-11-29 20:46:52 +01:00
mrgoldy
a1baf106d6 [ticket/15886] Fix notification_group_request_test
PHPBB3-15886
2018-11-29 20:27:04 +01:00
mrgoldy
b6f6930eb5 [ticket/15886] Group helper functions
PHPBB3-15886
2018-11-29 19:56:24 +01:00
mrgoldy
04d825ec2d [ticket/15886] Enhance group helper
PHPBB3-15886
2018-11-29 01:50:46 +01:00
176 changed files with 3042 additions and 741 deletions

View File

@@ -39,7 +39,8 @@ init:
before_test:
- ps: |
Set-Service wuauserv -StartupType Manual
cinst -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
choco install chocolatey -y --version 0.10.13 --allow-downgrade
choco install php -y --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
Get-ChildItem -Path "c:\tools\php$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1$2')" -Recurse |
Move-Item -destination "c:\tools\php"
cd c:\tools\php
@@ -98,7 +99,7 @@ before_test:
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\postgres';`n`$dbhost = 'localhost';`n`$dbport = '';`n`$dbname = 'phpbb_test';`n`$dbuser = 'postgres';`n`$dbpasswd = 'Password12!';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
}
elseif ($env:db -eq "mariadb") {
appveyor-retry cinst -y --force mariadb
appveyor-retry choco install mariadb -y --force
$env:MYSQL_PWD=""
$cmd = '"C:\Program Files\MariaDB 10.2\bin\mysql" -e "create database phpbb_test;" --user=root'
iex "& $cmd"
@@ -106,13 +107,13 @@ before_test:
}
elseif ($env:db -eq "sqlite") {
# install sqlite
appveyor-retry cinst -y sqlite
appveyor-retry choco install sqlite -y
sqlite3 c:\projects\test.db "create table aTable(field1 int); drop table aTable;"
$data = "<?php`n`n`$dbms = 'phpbb\\db\\driver\\sqlite3';`n`$dbhost = 'c:\\projects\\test.db';`n`$dbport = '';`n`$dbname = '';`n`$dbuser = '';`n`$dbpasswd = '';`n`$phpbb_functional_url = 'http://phpbb.test/';"; $data | Out-File -Encoding "Default" "c:\\projects\\phpbb\\tests\\test_config.php"
}
# Install PhantomJS
cinst -y phantomjs
choco install phantomjs -y
Start-Process "phantomjs" "--webdriver=8910" | Out-Null
- ps: |
cd c:\projects\phpbb\phpBB
@@ -120,7 +121,7 @@ before_test:
(Get-Content c:\projects\phpbb\phpBB\web.config).replace("`t</system.webServer>", "`t`t<httpErrors errorMode=`"Detailed`" />`n`t</system.webServer>") | Set-Content c:\projects\phpbb\phpBB\web.config
- cd c:\projects\phpbb\phpBB
- php ..\composer.phar install
- choco install -y urlrewrite
- choco install urlrewrite -y
- ps: New-WebSite -Name 'phpBBTest' -PhysicalPath 'c:\projects\phpbb\phpBB' -Force
- ps: Import-Module WebAdministration; Set-ItemProperty 'IIS:\Sites\phpBBTest' -name Bindings -value @{protocol='http';bindingInformation='*:80:phpbb.test'}
- echo Change default anonymous user AUTH to ApplicationPool
@@ -141,3 +142,4 @@ before_test:
test_script:
- cd c:\projects\phpbb
- php -e phpBB\vendor\phpunit\phpunit\phpunit --verbose

View File

@@ -1,5 +1,5 @@
language: php
sudo: required
dist: trusty
matrix:
include:

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.6" />
<property name="prevversion" value="3.2.5" />
<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.6-RC1" />
<property name="newversion" value="3.2.9-RC1" />
<property name="prevversion" value="3.2.8" />
<property name="olderversions" value="3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0-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" />
<!-- 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;
}

Binary file not shown.

View File

@@ -110,7 +110,7 @@
<!-- ELSEIF S_EXTENSION_GROUPS -->
<!-- IF S_EDIT_GROUP -->
<script type="text/javascript" defer="defer">
<script>
// <![CDATA[
function update_image(newimage)
{
@@ -421,17 +421,25 @@
</tr>
</thead>
<tbody>
<!-- BEGIN attachments -->
{% for attachments in attachments %}
<tr>
<td>
<!-- IF attachments.S_IN_MESSAGE -->{L_EXTENSION_GROUP}{L_COLON} <strong><!-- IF attachments.EXT_GROUP_NAME -->{attachments.EXT_GROUP_NAME}<!-- ELSE -->{L_NO_EXT_GROUP}<!-- ENDIF --></strong><br />{attachments.L_DOWNLOAD_COUNT}<br />{L_IN} {L_PRIVATE_MESSAGE}
<!-- ELSE --><a href="{attachments.U_FILE}" style="font-weight: bold;">{attachments.REAL_FILENAME}</a><br /><!-- IF attachments.COMMENT -->{attachments.COMMENT}<br /><!-- ENDIF -->{attachments.L_DOWNLOAD_COUNT}<br />{L_TOPIC}{L_COLON} <a href="{attachments.U_VIEW_TOPIC}">{attachments.TOPIC_TITLE}</a><!-- ENDIF -->
{{ lang('EXTENSION_GROUP') ~ lang('COLON') }} <strong>{{ attachments.EXT_GROUP_NAME }}</strong>
{% if attachments.S_IN_MESSAGE %}
<br>{{ attachments.L_DOWNLOAD_COUNT }}
<br>{{ lang('IN') }} {{ lang('PRIVATE_MESSAGE') }}
{% else %}
<br><a href="{{ attachments.U_FILE }}"><strong>{{ attachments.REAL_FILENAME }}</strong></a>
{% if attachments.COMMENT %}<br>{{ attachments.COMMENT }}{% endif %}
<br>{{ attachments.L_DOWNLOAD_COUNT }}
<br>{{ lang('TOPIC') ~ lang('COLON') }} <a href="{{ attachments.U_VIEW_TOPIC }}">{{ attachments.TOPIC_TITLE }}</a>
{% endif %}
</td>
<td>{attachments.FILETIME}<br />{L_POST_BY_AUTHOR} {attachments.ATTACHMENT_POSTER}</td>
<td class="centered-text">{attachments.FILESIZE}</td>
<td class="centered-text"><input type="checkbox" class="radio" name="delete[{attachments.ATTACH_ID}]" /></td>
<td>{{ attachments.FILETIME }}<br>{{ lang('POST_BY_AUTHOR') }} {{ attachments.ATTACHMENT_POSTER }}</td>
<td class="centered-text">{{ attachments.FILESIZE }}</td>
<td class="centered-text"><input type="checkbox" class="radio" name="delete[{{ attachments.ATTACH_ID }}]" /></td>
</tr>
<!-- END attachments -->
{% endfor %}
</tbody>
</table>
<!-- ELSE -->

View File

@@ -8,7 +8,7 @@
<p>{L_EXPLAIN}</p>
<script type="text/javascript">
<script>
// <![CDATA[
var ban_length = new Array();

View File

@@ -1,6 +1,6 @@
<!-- INCLUDE overall_header.html -->
<script type="text/javascript">
<script>
// <![CDATA[
var form_name = 'acp_contact';

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">

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

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

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

@@ -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|e('html_attr') }}" />
<!-- END custom_tags -->
</div>
<!-- EVENT acp_posting_buttons_after -->

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

@@ -69,7 +69,7 @@
<!-- ELSEIF S_INDEX -->
<script type="text/javascript">
<script>
// <![CDATA[
/**
* Popup search progress bar

View File

@@ -146,7 +146,9 @@
{styles_list.EXTRA}
<td class="{$ROW_CLASS} mark" width="20">
<!-- IF styles_list.STYLE_ID -->
<input class="checkbox" type="checkbox" name="ids[]" value="{styles_list.STYLE_ID}" />
{% if styles_list.STYLE_NAME !== 'prosilver' %}
<input class="checkbox" type="checkbox" name="ids[]" value="{styles_list.STYLE_ID}" />
{% endif %}
<!-- ELSE -->
<!-- IF styles_list.COMMENT != '' -->
&nbsp;

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

@@ -6,12 +6,14 @@
<div id="page-footer">
<div class="copyright">
Powered by <a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited
{% if S_COPYRIGHT_HTML %}
{{ CREDIT_LINE }}
{% endif %}
</div>
</div>
</div>
<script type="text/javascript">
<script>
<!--
installLang = {
title: '{LA_TIMEOUT_DETECTED_TITLE}',
@@ -20,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

@@ -279,6 +279,10 @@ function reset_role(id) {
}
t.options[0].selected = true;
var parent = t.parentNode;
parent.querySelector('span.dropdown-trigger').innerText = no_role_assigned;
parent.querySelector('input[data-name^=role]').value = '0';
}
/**

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

@@ -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

@@ -21,7 +21,9 @@ phpbb.plupload.initialize = function() {
// Only execute if Plupload initialized successfully.
phpbb.plupload.uploader.bind('Init', function() {
phpbb.plupload.form = $(phpbb.plupload.config.form_hook)[0];
phpbb.plupload.rowTpl = $('#attach-row-tpl')[0].outerHTML;
let $attachRowTemplate = $('#attach-row-tpl');
$attachRowTemplate.removeClass('attach-row-tpl');
phpbb.plupload.rowTpl = $attachRowTemplate[0].outerHTML;
// Hide the basic upload panel and remove the attach row template.
$('#attach-row-tpl, #attach-panel-basic').remove();
@@ -88,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;
};
@@ -262,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();
@@ -444,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

@@ -31,7 +31,7 @@
"guzzlehttp/guzzle": "~5.3",
"lusitanian/oauth": "^0.8.1",
"marc1706/fast-image-size": "^1.1",
"paragonie/random_compat": "^1.4",
"paragonie/random_compat": "^2.0",
"patchwork/utf8": "^1.1",
"s9e/text-formatter": "^1.3",
"symfony/config": "^2.8",

373
phpBB/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "6daa2f5f7a161377dee1835bd4d5b463",
"content-hash": "cd42964227d699a6923798e33eab3dd5",
"packages": [
{
"name": "bantu/ini-get-wrapper",
@@ -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",
@@ -346,16 +346,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 +363,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 +399,7 @@
"php",
"size"
],
"time": "2017-10-23T18:52:01+00:00"
"time": "2019-12-07T08:02:07+00:00"
},
{
"name": "ocramius/proxy-manager",
@@ -461,16 +466,16 @@
},
{
"name": "paragonie/random_compat",
"version": "v1.4.3",
"version": "v2.0.18",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
"reference": "9b3899e3c3ddde89016f576edb8c489708ad64cd"
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/9b3899e3c3ddde89016f576edb8c489708ad64cd",
"reference": "9b3899e3c3ddde89016f576edb8c489708ad64cd",
"url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db",
"shasum": ""
},
"require": {
@@ -502,29 +507,33 @@
"description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
"keywords": [
"csprng",
"polyfill",
"pseudorandom",
"random"
],
"time": "2017-03-13T16:22:52+00:00"
"time": "2019-01-03T20:59:08+00:00"
},
{
"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",
@@ -564,20 +573,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.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801"
},
"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/446d54b4cb6bf489fc9d75f55843658e6f25d801",
"reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801",
"shasum": ""
},
"require": {
@@ -586,7 +595,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
"dev-master": "1.1.x-dev"
}
},
"autoload": {
@@ -611,7 +620,7 @@
"psr",
"psr-3"
],
"time": "2018-11-20T15:27:04+00:00"
"time": "2019-11-01T11:05:21+00:00"
},
{
"name": "react/promise",
@@ -661,16 +670,16 @@
},
{
"name": "s9e/text-formatter",
"version": "1.4.2",
"version": "1.4.5",
"source": {
"type": "git",
"url": "https://github.com/s9e/TextFormatter.git",
"reference": "dc7efff70b67b9cee00881ad3bef0a1da076b31e"
"reference": "6857c53658929b66dc0d92daece17f211c64ea61"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/s9e/TextFormatter/zipball/dc7efff70b67b9cee00881ad3bef0a1da076b31e",
"reference": "dc7efff70b67b9cee00881ad3bef0a1da076b31e",
"url": "https://api.github.com/repos/s9e/TextFormatter/zipball/6857c53658929b66dc0d92daece17f211c64ea61",
"reference": "6857c53658929b66dc0d92daece17f211c64ea61",
"shasum": ""
},
"require": {
@@ -682,6 +691,7 @@
"require-dev": {
"matthiasmullie/minify": "*",
"php-coveralls/php-coveralls": "*",
"phpunit/phpunit": "<6",
"s9e/regexp-builder": "1.*"
},
"suggest": {
@@ -722,11 +732,11 @@
"parser",
"shortcodes"
],
"time": "2019-03-27T14:19:41+00:00"
"time": "2019-06-04T15:47:55+00:00"
},
{
"name": "symfony/config",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
@@ -783,7 +793,7 @@
},
{
"name": "symfony/console",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
@@ -844,7 +854,7 @@
},
{
"name": "symfony/debug",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
@@ -901,16 +911,16 @@
},
{
"name": "symfony/dependency-injection",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f"
"reference": "c306198fee8f872a8f5f031e6e4f6f83086992d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a2f40df187f0053bc361bcea3b27ff2b85744d9f",
"reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/c306198fee8f872a8f5f031e6e4f6f83086992d8",
"reference": "c306198fee8f872a8f5f031e6e4f6f83086992d8",
"shasum": ""
},
"require": {
@@ -960,11 +970,11 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
"time": "2018-11-11T11:18:13+00:00"
"time": "2019-04-16T11:33:46+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
@@ -1024,7 +1034,7 @@
},
{
"name": "symfony/filesystem",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
@@ -1074,7 +1084,7 @@
},
{
"name": "symfony/finder",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
@@ -1123,16 +1133,16 @@
},
{
"name": "symfony/http-foundation",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92"
"reference": "3929d9fe8148d17819ad0178c748b8d339420709"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0ab719bedc9fc6748a95b2dcb04137292a27b92",
"reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/3929d9fe8148d17819ad0178c748b8d339420709",
"reference": "3929d9fe8148d17819ad0178c748b8d339420709",
"shasum": ""
},
"require": {
@@ -1174,20 +1184,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2018-11-25T11:27:05+00:00"
"time": "2019-11-12T12:34:41+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa"
"reference": "c3be27b8627cd5ee8dfa8d1b923982f618ec521c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/3df0207d4c973eb9c91b38a608aef4654dc256fa",
"reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/c3be27b8627cd5ee8dfa8d1b923982f618ec521c",
"reference": "c3be27b8627cd5ee8dfa8d1b923982f618ec521c",
"shasum": ""
},
"require": {
@@ -1196,7 +1206,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",
@@ -1258,20 +1269,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2018-12-06T14:45:07+00:00"
"time": "2019-11-13T08:36:16+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.11.0",
"version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "82ebae02209c21113908c229e9883c419720738a"
"reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3"
},
"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/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
"reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3",
"shasum": ""
},
"require": {
@@ -1283,7 +1294,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.13-dev"
}
},
"autoload": {
@@ -1300,12 +1311,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",
@@ -1316,20 +1327,20 @@
"polyfill",
"portable"
],
"time": "2019-02-06T07:57:58+00:00"
"time": "2019-11-27T13:56:44+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.11.0",
"version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f"
},
"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/7b4aab9743c30be783b73de055d24a39cf4b954f",
"reference": "7b4aab9743c30be783b73de055d24a39cf4b954f",
"shasum": ""
},
"require": {
@@ -1341,7 +1352,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.13-dev"
}
},
"autoload": {
@@ -1375,20 +1386,20 @@
"portable",
"shim"
],
"time": "2019-02-06T07:57:58+00:00"
"time": "2019-11-27T14:18:11+00:00"
},
{
"name": "symfony/polyfill-php54",
"version": "v1.11.0",
"version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php54.git",
"reference": "2964b17ddc32dba7bcba009d5501c84d3fba1452"
"reference": "dd1618047426412036e98d159940d58a81fc392c"
},
"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/dd1618047426412036e98d159940d58a81fc392c",
"reference": "dd1618047426412036e98d159940d58a81fc392c",
"shasum": ""
},
"require": {
@@ -1397,7 +1408,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.13-dev"
}
},
"autoload": {
@@ -1433,20 +1444,20 @@
"portable",
"shim"
],
"time": "2019-02-06T07:57:58+00:00"
"time": "2019-11-27T13:56:44+00:00"
},
{
"name": "symfony/polyfill-php55",
"version": "v1.11.0",
"version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php55.git",
"reference": "96fa25cef405ea452919559a0025d5dc16e30e4c"
"reference": "b0d838f225725e2951af1aafc784d2e5ea7b656e"
},
"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/b0d838f225725e2951af1aafc784d2e5ea7b656e",
"reference": "b0d838f225725e2951af1aafc784d2e5ea7b656e",
"shasum": ""
},
"require": {
@@ -1456,7 +1467,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
"dev-master": "1.13-dev"
}
},
"autoload": {
@@ -1489,20 +1500,128 @@
"portable",
"shim"
],
"time": "2019-02-06T07:57:58+00:00"
"time": "2019-11-27T13:56:44+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
"version": "v2.8.49",
"name": "symfony/polyfill-php56",
"version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
"reference": "9c5f8d58e9c8017affdbeaec86c89d558aee4ec8"
"url": "https://github.com/symfony/polyfill-php56.git",
"reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/9c5f8d58e9c8017affdbeaec86c89d558aee4ec8",
"reference": "9c5f8d58e9c8017affdbeaec86c89d558aee4ec8",
"url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
"reference": "53dd1cdf3cb986893ccf2b96665b25b3abb384f4",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-util": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-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"
],
"time": "2019-11-27T13:56:44+00:00"
},
{
"name": "symfony/polyfill-util",
"version": "v1.13.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-util.git",
"reference": "964a67f293b66b95883a5ed918a65354fcd2258f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-util/zipball/964a67f293b66b95883a5ed918a65354fcd2258f",
"reference": "964a67f293b66b95883a5ed918a65354fcd2258f",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.13-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"
],
"time": "2019-11-27T13:56:44+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
"reference": "40802595fea26ada845ed58124d8000a13dd4c6f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/40802595fea26ada845ed58124d8000a13dd4c6f",
"reference": "40802595fea26ada845ed58124d8000a13dd4c6f",
"shasum": ""
},
"require": {
@@ -1543,11 +1662,11 @@
],
"description": "Symfony ProxyManager Bridge",
"homepage": "https://symfony.com",
"time": "2018-11-11T11:18:13+00:00"
"time": "2019-04-16T11:33:46+00:00"
},
{
"name": "symfony/routing",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
@@ -1621,7 +1740,7 @@
},
{
"name": "symfony/twig-bridge",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
@@ -1706,7 +1825,7 @@
},
{
"name": "symfony/yaml",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
@@ -1756,16 +1875,16 @@
},
{
"name": "twig/twig",
"version": "v1.39.1",
"version": "v1.42.2",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec"
"reference": "21707d6ebd05476854805e4f91b836531941bcd4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec",
"reference": "23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/21707d6ebd05476854805e4f91b836531941bcd4",
"reference": "21707d6ebd05476854805e4f91b836531941bcd4",
"shasum": ""
},
"require": {
@@ -1775,12 +1894,12 @@
"require-dev": {
"psr/container": "^1.0",
"symfony/debug": "^2.7",
"symfony/phpunit-bridge": "^3.4.19|^4.1.8"
"symfony/phpunit-bridge": "^3.4.19|^4.1.8|^5.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.39-dev"
"dev-master": "1.42-dev"
}
},
"autoload": {
@@ -1818,7 +1937,7 @@
"keywords": [
"templating"
],
"time": "2019-04-16T17:12:57+00:00"
"time": "2019-06-18T15:35:16+00:00"
},
{
"name": "zendframework/zend-code",
@@ -2168,21 +2287,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": {
@@ -2210,7 +2332,7 @@
"keywords": [
"markdown"
],
"time": "2018-01-15T00:49:33+00:00"
"time": "2019-12-02T02:32:27+00:00"
},
{
"name": "nikic/php-parser",
@@ -2293,7 +2415,8 @@
"authors": [
{
"name": "Michiel Rook",
"email": "mrook@php.net"
"email": "mrook@php.net",
"role": "Lead"
},
{
"name": "Phing Community",
@@ -2360,38 +2483,38 @@
},
{
"name": "phpspec/prophecy",
"version": "1.8.0",
"version": "1.10.1",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06"
"reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
"reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
"reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc",
"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",
"phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0",
"sebastian/comparator": "^1.2.3|^2.0|^3.0",
"sebastian/recursion-context": "^1.0|^2.0|^3.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": {
"psr-0": {
"Prophecy\\": "src/"
"psr-4": {
"Prophecy\\": "src/Prophecy"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2419,7 +2542,7 @@
"spy",
"stub"
],
"time": "2018-08-05T17:53:17+00:00"
"time": "2019-12-22T21:05:45+00:00"
},
{
"name": "phpunit/dbunit",
@@ -3414,7 +3537,7 @@
},
{
"name": "symfony/browser-kit",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
@@ -3471,7 +3594,7 @@
},
{
"name": "symfony/css-selector",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
@@ -3505,14 +3628,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"
@@ -3524,7 +3647,7 @@
},
{
"name": "symfony/dom-crawler",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
@@ -3581,7 +3704,7 @@
},
{
"name": "symfony/process",
"version": "v2.8.49",
"version": "v2.8.52",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",

View File

@@ -122,7 +122,13 @@ services:
group_helper:
class: phpbb\group\helper
arguments:
- '@auth'
- '@cache'
- '@config'
- '@language'
- '@dispatcher'
- '@path_helper'
- '@user'
log:
class: phpbb\log\log

View File

@@ -50,6 +50,10 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<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>
<li><a href="#v325">Changes since 3.2.5</a></li>
<li><a href="#v325rc1">Changes since 3.2.5-RC1</a></li>
@@ -137,6 +141,173 @@
<div class="inner">
<div class="content">
<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>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13175">PHPBB3-13175</a>] - External accounts can be linked to more than one local account</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14459">PHPBB3-14459</a>] - Check language input for group</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15211">PHPBB3-15211</a>] - Emoji characters in forum name causing SQL errors</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15885">PHPBB3-15885</a>] - Group rank not displaying on memberlist_body</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15897">PHPBB3-15897</a>] - Unicode Characters in Attachment Comment Causes mySQL Error </li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15932">PHPBB3-15932</a>] - Users can delete their attachments in the UCP, even if the post is locked</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15961">PHPBB3-15961</a>] - SMTP support for TLS is forcing use of deprecated TLS 1.0</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15974">PHPBB3-15974</a>] - The link &quot;Back to previous page&quot; can redirect to another page, not the previous one</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15976">PHPBB3-15976</a>] - Changing account settings without changing password resets user_passchg</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15982">PHPBB3-15982</a>] - Q&amp;A captcha plug-in still throws PHP 7.2.x countable warning</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16003">PHPBB3-16003</a>] - Post count not updated when deleting only post in topic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16021">PHPBB3-16021</a>] - Recognize number of Template Event instances in events.md file</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16040">PHPBB3-16040</a>] - Topic Icon with space in filename isn't displayed by viewforum_body.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16048">PHPBB3-16048</a>] - Unable to restore any backup from ACP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16050">PHPBB3-16050</a>] - PHP warning in MCP banning tab on PHP 7.2+</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16053">PHPBB3-16053</a>] - BBCodes using {TEXT} in HTML tags no longer work</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16054">PHPBB3-16054</a>] - Style templates no longer able to login &quot;from any page.&quot;</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16055">PHPBB3-16055</a>] - Unable to login using Oauth via Forums, topics or posts</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16061">PHPBB3-16061</a>] - Migrator never drops unique indexes</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16063">PHPBB3-16063</a>] - board_dst config value is not removed from config table after conversion</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16066">PHPBB3-16066</a>] - Banned or suspended user receives &quot;The submitted form was invalid. Try submitting again.&quot;</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16071">PHPBB3-16071</a>] - Undefined index for custom attachments groups</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16073">PHPBB3-16073</a>] - Fix warning in ACP version check</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16074">PHPBB3-16074</a>] - Twemoji -fe0f sequence not rendering</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16075">PHPBB3-16075</a>] - PM filter “sent to my default usergroup” triggers array to string conversion warning</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16080">PHPBB3-16080</a>] - Warnings When a Style exists on database but not on FTP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16093">PHPBB3-16093</a>] - Attach row template always gets displayed with JS disabled</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16096">PHPBB3-16096</a>] - MySQL full text search always uses MyISAM limits</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16124">PHPBB3-16124</a>] - Incorrect users search by last visit time in memberlist.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16126">PHPBB3-16126</a>] - AppVeyor builds fail due to chocolatey being unable to install PHP</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15745">PHPBB3-15745</a>] - Hardcoded lang in credit line</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15886">PHPBB3-15886</a>] - Group helper functions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15946">PHPBB3-15946</a>] - Add event - core.posting_modify_row_data</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15967">PHPBB3-15967</a>] - Unambiguous wording in user activation request email to Admin/Moderator</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15984">PHPBB3-15984</a>] - Use of 'Cache-Control: public' for serving files</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16000">PHPBB3-16000</a>] - Provide link to PHP Date Function in both ACP and UCP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16013">PHPBB3-16013</a>] - Do not prevent username changes in ACP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16019">PHPBB3-16019</a>] - Deny prosilver's uninstallation</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16024">PHPBB3-16024</a>] - Add core.topic_review_modify_sql_ary</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16025">PHPBB3-16025</a>] - Add 2 template events *_author_username_{append/prepend}</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16047">PHPBB3-16047</a>] - ACP Private Messages: Wording could be better</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16058">PHPBB3-16058</a>] - Remove sudo required from travis config</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16065">PHPBB3-16065</a>] - Undefined index: user_ip in oauth.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16068">PHPBB3-16068</a>] - Incorrect docblock parameter types</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16070">PHPBB3-16070</a>] - Remove support for WebSTAR and Xitami</li>
<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-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>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16107">PHPBB3-16107</a>] - Add mcp_move_destination_forum_before|after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16108">PHPBB3-16108</a>] - Add topiclist_row_topic_by_author_before|after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16109">PHPBB3-16109</a>] - Custom Profile Field visibility is incorrectly explained</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16111">PHPBB3-16111</a>] - Add core.message_history_modify_sql_ary</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16113">PHPBB3-16113</a>] - Add core.mcp_topic_modify_sql_ary</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16114">PHPBB3-16114</a>] - Add 2 mcp_topic_post_author_full_{append/prepend}</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16127">PHPBB3-16127</a>] - Add UI for Mass email $max_chunk_size</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16129">PHPBB3-16129</a>] - The attachment's ALT tag is supposed to describe the image, not the file.</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16067">PHPBB3-16067</a>] - Define trusty build environment for travis builds</li>
<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>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16034">PHPBB3-16034</a>] - Links created with [url=] - are sometimes incorrectly shortened</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16036">PHPBB3-16036</a>] - Cannot login with 3.2.6</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16037">PHPBB3-16037</a>] - Private message ViewFolder Broken</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16039">PHPBB3-16039</a>] - Unable to change announcement to standard topic due to missing global</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16042">PHPBB3-16042</a>] - Use S_LOGIN_REDIRECT to output login form token</li>
</ul>
<a name="v326rc1"></a><h3>Changes since 3.2.6-RC1</h3>
<h4>Bug</h4>
<ul>

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)
@@ -27,7 +27,6 @@ phpBB Developers: bantu (Andreas Fischer)
Derky (Derk Ruitenbeek)
Elsensee (Oliver Schramm)
Hanakin (Michael Miday)
MichaelC (Michael Cullum)
Nicofuma (Tristan Darricau)
rubencm (Rubén Calvo)
@@ -63,6 +62,7 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
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
@@ -988,6 +1000,20 @@ mcp_move_before
* Since: 3.1.10-RC1
* Purpose: Add content before move topic/post form
mcp_move_destination_forum_after
===
* Locations:
+ styles/prosilver/template/mcp_move.html
* Since: 3.2.8-RC1
* Purpose: Add content after the destination select element in the move topic/post form
mcp_move_destination_forum_before
===
* Locations:
+ styles/prosilver/template/mcp_move.html
* Since: 3.2.8-RC1
* Purpose: Add content before the destination select element in the move topic/post form
mcp_post_additional_options
===
* Locations:
@@ -1037,6 +1063,20 @@ mcp_topic_options_before
* Since: 3.1.6-RC1
* Purpose: Add some options (field, checkbox, ...) before the subject field when split a subject
mcp_topic_post_author_full_append
===
* Locations:
+ styles/prosilver/template/mcp_topic.html
* Since: 3.2.8-RC1
* Purpose: Append information to message author username for post details in topic moderation
mcp_topic_post_author_full_prepend
===
* Locations:
+ styles/prosilver/template/mcp_topic.html
* Since: 3.2.8-RC1
* Purpose: Prepend information to message author username for post details in topic moderation
mcp_topic_postrow_attachments_after
===
* Locations:
@@ -1740,14 +1780,14 @@ posting_attach_body_file_list_after
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.6-RC1
* Purpose: Add content after attachments list
* Purpose: Add content after attachments list
posting_attach_body_file_list_before
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.6-RC1
* Purpose: Add content before attachments list
* Purpose: Add content before attachments list
posting_editor_add_panel_tab
===
@@ -1910,6 +1950,20 @@ posting_preview_poll_after
* Since: 3.1.7-RC1
* Purpose: Add content after the poll preview block
posting_review_row_post_author_username_append
===
* Locations:
+ styles/prosilver/template/posting_review.html
* Since: 3.2.8-RC1
* Purpose: Append information to post author username of member
posting_review_row_post_author_username_prepend
===
* Locations:
+ styles/prosilver/template/posting_review.html
* Since: 3.2.8-RC1
* Purpose: Prepend information to post author username of member
posting_topic_review_row_content_after
===
* Locations:
@@ -1917,6 +1971,20 @@ posting_topic_review_row_content_after
* Since: 3.2.4-RC1
* Purpose: Add content after the message content in topic review
posting_topic_review_row_post_author_username_append
===
* Locations:
+ styles/prosilver/template/posting_topic_review.html
* Since: 3.2.8-RC1
* Purpose: Append information to post author username of member
posting_topic_review_row_post_author_username_prepend
===
* Locations:
+ styles/prosilver/template/posting_topic_review.html
* Since: 3.2.8-RC1
* Purpose: Prepend information to post author username of member
posting_topic_review_row_post_details_after
===
* Locations:
@@ -2102,14 +2170,14 @@ search_results_header_before
search_results_last_post_author_username_append
===
* Locations:
+ styles/prosilver/template/search_results.html
+ styles/prosilver/template/search_results.html (2)
* Since: 3.2.4-RC1
* Purpose: Append information to last post author username of member
search_results_last_post_author_username_prepend
===
* Locations:
+ styles/prosilver/template/search_results.html
+ styles/prosilver/template/search_results.html (2)
* Since: 3.2.4-RC1
* Purpose: Prepend information to last post author username of member
@@ -2253,6 +2321,24 @@ topiclist_row_prepend
* Changed: 3.1.6-RC1 Added event to mcp_forum.html
* Purpose: Add content into topic rows (inside the elements containing topic titles)
topiclist_row_topic_by_author_after
===
* Locations:
+ styles/prosilver/template/search_results.html
+ styles/prosilver/template/viewforum_body.html
+ styles/prosilver/template/mcp_forum.html
* Since: 3.2.8-RC1
* Purpose: Add content into topic rows (after the "by topic author" row)
topiclist_row_topic_by_author_before
===
* Locations:
+ styles/prosilver/template/search_results.html
+ styles/prosilver/template/viewforum_body.html
+ styles/prosilver/template/mcp_forum.html
* Since: 3.2.8-RC1
* Purpose: Add content into topic rows (before the "by topic author" row)
topiclist_row_topic_title_after
===
* Locations:
@@ -2364,6 +2450,20 @@ ucp_pm_history_review_before
* Since: 3.1.6-RC1
* Purpose: Add content before the private messages history review.
ucp_pm_history_row_message_author_username_append
===
* Locations:
+ styles/prosilver/template/ucp_pm_history.html
* Since: 3.2.8-RC1
* Purpose: Append information to message author username of member
ucp_pm_history_row_message_author_username_prepend
===
* Locations:
+ styles/prosilver/template/ucp_pm_history.html
* Since: 3.2.8-RC1
* Purpose: Prepend information to message author username of member
ucp_pm_viewmessage_avatar_after
===
* Locations:
@@ -2546,6 +2646,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:
@@ -2612,14 +2719,14 @@ ucp_register_profile_fields_before
viewforum_body_last_post_author_username_append
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
+ styles/prosilver/template/viewforum_body.html (2)
* Since: 3.2.4-RC1
* Purpose: Append information to last post author username of member
viewforum_body_last_post_author_username_prepend
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
+ styles/prosilver/template/viewforum_body.html (2)
* Since: 3.2.4-RC1
* Purpose: Prepend information to last post author username of member

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
{

View File

@@ -27,6 +27,9 @@ class acp_attachments
/** @var \phpbb\config\config */
protected $config;
/** @var \phpbb\language\language */
protected $language;
/** @var ContainerBuilder */
protected $phpbb_container;
@@ -54,6 +57,7 @@ class acp_attachments
$this->id = $id;
$this->db = $db;
$this->config = $config;
$this->language = $phpbb_container->get('language');
$this->template = $template;
$this->user = $user;
$this->phpbb_container = $phpbb_container;
@@ -128,7 +132,7 @@ class acp_attachments
$s_assigned_groups = array();
while ($row = $db->sql_fetchrow($result))
{
$row['group_name'] = (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'];
$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'];
}
$db->sql_freeresult($result);
@@ -573,7 +577,7 @@ class acp_attachments
$group_id = $db->sql_nextid();
}
$group_name = (isset($user->lang['EXT_GROUP_' . $group_name])) ? $user->lang['EXT_GROUP_' . $group_name] : $group_name;
$group_name = $this->language->is_set('EXT_GROUP_' . utf8_strtoupper($group_name)) ? $this->language->lang('EXT_GROUP_' . utf8_strtoupper($group_name)) : $group_name;
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), false, array($group_name));
}
@@ -875,7 +879,7 @@ class acp_attachments
'U_EDIT' => $this->u_action . "&amp;action=edit&amp;g={$row['group_id']}",
'U_DELETE' => $this->u_action . "&amp;action=delete&amp;g={$row['group_id']}",
'GROUP_NAME' => (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'],
'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'],
'CATEGORY' => $cat_lang[$row['cat_id']],
)
);
@@ -1244,15 +1248,11 @@ class acp_attachments
'ATTACHMENT_POSTER' => get_username_string('full', (int) $row['poster_id'], (string) $row['username'], (string) $row['user_colour'], (string) $row['username']),
'FILESIZE' => get_formatted_filesize((int) $row['filesize']),
'FILETIME' => $user->format_date((int) $row['filetime']),
'REAL_FILENAME' => (!$row['in_message']) ? utf8_basename((string) $row['real_filename']) : '',
'PHYSICAL_FILENAME' => utf8_basename((string) $row['physical_filename']),
'EXT_GROUP_NAME' => (!empty($extensions[$row['extension']]['group_name'])) ? $user->lang['EXT_GROUP_' . $extensions[$row['extension']]['group_name']] : '',
'REAL_FILENAME' => utf8_basename((string) $row['real_filename']),
'EXT_GROUP_NAME' => $this->language->is_set('EXT_GROUP_' . utf8_strtoupper($extensions[$row['extension']]['group_name'])) ? $this->language->lang('EXT_GROUP_' . utf8_strtoupper($extensions[$row['extension']]['group_name'])) : $extensions[$row['extension']]['group_name'],
'COMMENT' => $comment,
'TOPIC_TITLE' => (!$row['in_message']) ? (string) $row['topic_title'] : '',
'ATTACH_ID' => (int) $row['attach_id'],
'POST_ID' => (int) $row['post_msg_id'],
'TOPIC_ID' => (int) $row['topic_id'],
'POST_IDS' => (!empty($post_ids[$row['attach_id']])) ? (int) $post_ids[$row['attach_id']] : '',
'L_DOWNLOAD_COUNT' => $user->lang($l_downloaded_viewed, (int) $row['download_count']),
@@ -1434,7 +1434,7 @@ class acp_attachments
$group_name = array();
while ($row = $db->sql_fetchrow($result))
{
$row['group_name'] = (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'];
$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'];
$group_name[] = $row;
}
$db->sql_freeresult($result);

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);

View File

@@ -450,6 +450,7 @@ class acp_board
'email_enable' => array('lang' => 'ENABLE_EMAIL', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
'board_email_form' => array('lang' => 'BOARD_EMAIL_FORM', 'validate' => 'bool', 'type' => 'radio:enabled_disabled', 'explain' => true),
'email_package_size' => array('lang' => 'EMAIL_PACKAGE_SIZE', 'validate' => 'int:0', 'type' => 'number:0:99999', 'explain' => true),
'email_max_chunk_size' => array('lang' => 'EMAIL_MAX_CHUNK_SIZE', 'validate' => 'int:1:99999', 'type' => 'number:1:99999', 'explain' => true),
'board_contact' => array('lang' => 'CONTACT_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),
'board_contact_name' => array('lang' => 'CONTACT_EMAIL_NAME', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => true),
'board_email' => array('lang' => 'ADMIN_EMAIL', 'validate' => 'email', 'type' => 'email:25:100', 'explain' => true),

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')
{
@@ -216,7 +212,7 @@ class acp_database
}
else if (confirm_box(true))
{
switch ($backup_info['extensions'])
switch ($backup_info['extension'])
{
case 'sql':
$fp = fopen($backup_info['file_name'], 'rb');

View File

@@ -986,6 +986,23 @@ class acp_forums
$errors[] = $user->lang['FORUM_NAME_EMPTY'];
}
/**
* 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);
}
if (utf8_strlen($forum_data_ary['forum_desc']) > 4000)
{
$errors[] = $user->lang['FORUM_DESC_TOO_LONG'];
@@ -1416,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
@@ -1522,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,
@@ -1569,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

@@ -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

@@ -259,6 +259,19 @@ class acp_styles
// Get list of styles to uninstall
$ids = $this->request_vars('id', 0, true);
// Don't remove prosilver, you can still deactivate it.
$sql = 'SELECT style_id
FROM ' . STYLES_TABLE . "
WHERE style_name = '" . $this->db->sql_escape('prosilver') . "'";
$result = $this->db->sql_query($sql);
$prosilver_id = (int) $this->db->sql_fetchfield('style_id');
$this->db->sql_freeresult($result);
if ($prosilver_id && in_array($prosilver_id, $ids))
{
trigger_error($this->user->lang('UNINSTALL_PROSILVER') . adm_back_link($this->u_action), E_USER_WARNING);
}
// Check if confirmation box was submitted
if (confirm_box(true))
{
@@ -998,11 +1011,14 @@ class acp_styles
'L_ACTION' => $this->user->lang['EXPORT']
); */
// Uninstall
$actions[] = array(
'U_ACTION' => $this->u_action . '&amp;action=uninstall&amp;hash=' . generate_link_hash('uninstall') . '&amp;id=' . $style['style_id'],
'L_ACTION' => $this->user->lang['STYLE_UNINSTALL']
);
if ($style['style_name'] !== 'prosilver')
{
// Uninstall
$actions[] = array(
'U_ACTION' => $this->u_action . '&amp;action=uninstall&amp;hash=' . generate_link_hash('uninstall') . '&amp;id=' . $style['style_id'],
'L_ACTION' => $this->user->lang['STYLE_UNINSTALL']
);
}
// Preview
$actions[] = array(
@@ -1123,7 +1139,14 @@ class acp_styles
*/
protected function read_style_cfg($dir)
{
// This should never happen, we give them a red warning because of its relevance.
if (!file_exists($this->styles_path . $dir . '/style.cfg'))
{
trigger_error($this->user->lang('NO_STYLE_CFG', $dir), E_USER_WARNING);
}
static $required = array('name', 'phpbb_version', 'copyright');
$cfg = parse_cfg_file($this->styles_path . $dir . '/style.cfg');
// Check if it is a valid file

View File

@@ -59,17 +59,19 @@ class acp_update
$update_link = $phpbb_root_path . 'install/app.' . $phpEx;
$template->assign_vars(array(
'S_UP_TO_DATE' => empty($updates_available),
'U_ACTION' => $this->u_action,
'U_VERSIONCHECK_FORCE' => append_sid($this->u_action . '&amp;versioncheck_force=1'),
$template_ary = [
'S_UP_TO_DATE' => empty($updates_available),
'U_ACTION' => $this->u_action,
'U_VERSIONCHECK_FORCE' => append_sid($this->u_action . '&amp;versioncheck_force=1'),
'CURRENT_VERSION' => $config['version'],
'CURRENT_VERSION' => $config['version'],
'UPDATE_INSTRUCTIONS' => sprintf($user->lang['UPDATE_INSTRUCTIONS'], $update_link),
'UPDATE_INSTRUCTIONS' => $user->lang('UPDATE_INSTRUCTIONS', $update_link),
'S_VERSION_UPGRADEABLE' => !empty($upgrades_available),
'UPGRADE_INSTRUCTIONS' => !empty($upgrades_available) ? $user->lang('UPGRADE_INSTRUCTIONS', $upgrades_available['current'], $upgrades_available['announcement']) : false,
));
];
$template->assign_vars($template_ary);
// Incomplete update?
if (phpbb_version_compare($config['version'], PHPBB_VERSION, '<'))

View File

@@ -855,7 +855,7 @@ class acp_users
$check_ary += array(
'username' => array(
array('string', false, $config['min_name_chars'], $config['max_name_chars']),
array('username', $user_row['username'])
array('username', $user_row['username'], true)
),
);
}

View File

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

View File

@@ -1843,27 +1843,6 @@ function redirect($url, $return = false, $disable_cd_check = false)
garbage_collection();
}
// Redirect via an HTML form for PITA webservers
if (@preg_match('#WebSTAR|Xitami#', getenv('SERVER_SOFTWARE')))
{
header('Refresh: 0; URL=' . $url);
echo '<!DOCTYPE html>';
echo '<html dir="' . $user->lang['DIRECTION'] . '" lang="' . $user->lang['USER_LANG'] . '">';
echo '<head>';
echo '<meta charset="utf-8">';
echo '<meta http-equiv="X-UA-Compatible" content="IE=edge">';
echo '<meta http-equiv="refresh" content="0; url=' . str_replace('&', '&amp;', $url) . '" />';
echo '<title>' . $user->lang['REDIRECT'] . '</title>';
echo '</head>';
echo '<body>';
echo '<div style="text-align: center;">' . sprintf($user->lang['URL_REDIRECT'], '<a href="' . str_replace('&', '&amp;', $url) . '">', '</a>') . '</div>';
echo '</body>';
echo '</html>';
exit;
}
// Behave as per HTTP/1.1 spec for others
header('Location: ' . $url);
exit;
@@ -2158,7 +2137,7 @@ function check_form_key($form_name, $timespan = false)
function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '')
{
global $user, $template, $db, $request;
global $config, $language, $phpbb_path_helper;
global $config, $language, $phpbb_path_helper, $phpbb_dispatcher;
if (isset($_POST['cancel']))
{
@@ -2255,8 +2234,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
if ($request->is_ajax())
{
$u_action .= '&confirm_uid=' . $user->data['user_id'] . '&sess=' . $user->session_id . '&sid=' . $user->session_id;
$json_response = new \phpbb\json_response;
$json_response->send(array(
$data = array(
'MESSAGE_BODY' => $template->assign_display('body'),
'MESSAGE_TITLE' => $confirm_title,
'MESSAGE_TEXT' => $confirm_text,
@@ -2264,7 +2242,28 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
'YES_VALUE' => $language->lang('YES'),
'S_CONFIRM_ACTION' => str_replace('&amp;', '&', $u_action), //inefficient, rewrite whole function
'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields
));
);
/**
* This event allows an extension to modify the ajax output of confirm box.
*
* @event core.confirm_box_ajax_before
* @var string u_action Action of the form
* @var array data Data to be sent
* @var string hidden Hidden fields generated by caller
* @var string s_hidden_fields Hidden fields generated by this function
* @since 3.2.8-RC1
*/
$vars = array(
'u_action',
'data',
'hidden',
's_hidden_fields',
);
extract($phpbb_dispatcher->trigger_event('core.confirm_box_ajax_before', compact($vars)));
$json_response = new \phpbb\json_response;
$json_response->send($data);
}
if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
@@ -2365,7 +2364,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
}
// Check form key
if ($password && !check_form_key($form_name))
if ($password && !defined('IN_CHECK_BAN') && !check_form_key($form_name))
{
$result = array(
'status' => false,
@@ -2527,9 +2526,6 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
));
}
// Add form token for login box
add_form_key($form_name, '_LOGIN');
$s_hidden_fields = build_hidden_fields($s_hidden_fields);
$login_box_template_data = array(
@@ -4129,9 +4125,9 @@ function phpbb_get_user_avatar($user_row, $alt = 'USER_AVATAR', $ignore_config =
*
* @return string Avatar html
*/
function phpbb_get_group_avatar($user_row, $alt = 'GROUP_AVATAR', $ignore_config = false, $lazy = false)
function phpbb_get_group_avatar($group_row, $alt = 'GROUP_AVATAR', $ignore_config = false, $lazy = false)
{
$row = \phpbb\avatar\manager::clean_row($user_row, 'group');
$row = \phpbb\avatar\manager::clean_row($group_row, 'group');
return phpbb_get_avatar($row, $alt, $ignore_config, $lazy);
}
@@ -4436,6 +4432,23 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
$controller_helper = $phpbb_container->get('controller.helper');
$notification_mark_hash = generate_link_hash('mark_all_notifications_read');
$s_login_redirect = build_hidden_fields(array('redirect' => $phpbb_path_helper->remove_web_root_path(build_url())));
// Add form token for login box, in case page is presenting a login form.
add_form_key('login', '_LOGIN');
/**
* Workaround for missing template variable in pre phpBB 3.2.6 styles.
* @deprecated 3.2.7 (To be removed: 3.3.0-a1)
*/
$form_token_login = $template->retrieve_var('S_FORM_TOKEN_LOGIN');
if (!empty($form_token_login))
{
$s_login_redirect .= $form_token_login;
// Remove S_FORM_TOKEN_LOGIN as it's already appended to S_LOGIN_REDIRECT
$template->assign_var('S_FORM_TOKEN_LOGIN', '');
}
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
'SITENAME' => $config['sitename'],
@@ -4525,7 +4538,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
'S_TOPIC_ID' => $topic_id,
'S_LOGIN_ACTION' => ((!defined('ADMIN_START')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login') : append_sid("{$phpbb_admin_path}index.$phpEx", false, true, $user->session_id)),
'S_LOGIN_REDIRECT' => build_hidden_fields(array('redirect' => $phpbb_path_helper->remove_web_root_path(build_url()))),
'S_LOGIN_REDIRECT' => $s_login_redirect,
'S_ENABLE_FEEDS' => ($config['feed_enable']) ? true : false,
'S_ENABLE_FEEDS_OVERALL' => ($config['feed_overall']) ? true : false,
@@ -4576,12 +4589,13 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
if ($send_headers)
{
// An array of http headers that phpbb will set. The following event may override these.
// An array of http headers that phpBB will set. The following event may override these.
$http_headers += array(
// application/xhtml+xml not used because of IE
'Content-type' => 'text/html; charset=UTF-8',
'Cache-Control' => 'private, no-cache="set-cookie"',
'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
'Referrer-Policy' => 'strict-origin-when-cross-origin',
);
if (!empty($user->data['is_bot']))
{

View File

@@ -112,12 +112,13 @@ function adm_page_header($page_title)
'CONTAINER_EXCEPTION' => $phpbb_container->hasParameter('container_exception') ? $phpbb_container->getParameter('container_exception') : false,
));
// An array of http headers that phpbb will set. The following event may override these.
// An array of http headers that phpBB will set. The following event may override these.
$http_headers = array(
// application/xhtml+xml not used because of IE
'Content-type' => 'text/html; charset=UTF-8',
'Cache-Control' => 'private, no-cache="set-cookie"',
'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
'Referrer-Policy' => 'strict-origin-when-cross-origin',
);
/**

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);

View File

@@ -1482,6 +1482,8 @@ function truncate_string($string, $max_length = 60, $max_store_length = 255, $al
* Get username details for placing into templates.
* This function caches all modes on first call, except for no_profile and anonymous user - determined by $user_id.
*
* @html Username spans and links
*
* @param string $mode Can be profile (for getting an url to the profile), username (for obtaining the username), colour (for obtaining the user colour), full (for obtaining a html string representing a coloured link to the users profile) or no_profile (the same as full but forcing no profile link)
* @param int $user_id The users id
* @param string $username The users name
@@ -1501,6 +1503,7 @@ function get_username_string($mode, $user_id, $username, $username_colour = '',
{
global $phpbb_root_path, $phpEx;
/** @html Username spans and links for usage in the template */
$_profile_cache['base_url'] = append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=viewprofile&amp;u={USER_ID}');
$_profile_cache['tpl_noprofile'] = '<span class="username">{USERNAME}</span>';
$_profile_cache['tpl_noprofile_colour'] = '<span style="color: {USERNAME_COLOUR};" class="username-coloured">{USERNAME}</span>';

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']),
@@ -1117,7 +1120,6 @@ function display_custom_bbcodes()
'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']),
);
/**

View File

@@ -196,7 +196,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
}
// Now the tricky part... let's dance
header('Cache-Control: public');
header('Cache-Control: private');
// Send out the Headers. Do not set Content-Disposition to inline please, it is a security measure for users using the Internet Explorer.
header('Content-Type: ' . $attachment['mimetype']);
@@ -451,7 +451,7 @@ function set_modified_headers($stamp, $browser)
{
send_status_line(304, 'Not Modified');
// seems that we need those too ... browsers
header('Cache-Control: public');
header('Cache-Control: private');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
return true;
}

View File

@@ -181,10 +181,9 @@ class messenger
/**
* Adds X-AntiAbuse headers
*
* @param array $config Configuration array
* @param user $user A user object
*
* @return null
* @param \phpbb\config\config $config Config object
* @param \phpbb\user $user User object
* @return void
*/
function anti_abuse_headers($config, $user)
{
@@ -1582,6 +1581,14 @@ class smtp_class
*/
protected function starttls()
{
global $config;
// allow SMTPS (what was used by phpBB 3.0) if hostname is prefixed with tls:// or ssl://
if (strpos($config['smtp_host'], 'tls://') === 0 || strpos($config['smtp_host'], 'ssl://') === 0)
{
return true;
}
if (!function_exists('stream_socket_enable_crypto'))
{
return false;
@@ -1604,7 +1611,9 @@ class smtp_class
if (socket_set_blocking($this->socket, 1))
{
$result = stream_socket_enable_crypto($this->socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
// https://secure.php.net/manual/en/function.stream-socket-enable-crypto.php#119122
$crypto = (phpbb_version_compare(PHP_VERSION, '5.6.7', '<')) ? STREAM_CRYPTO_METHOD_TLS_CLIENT : STREAM_CRYPTO_METHOD_SSLv23_CLIENT;
$result = stream_socket_enable_crypto($this->socket, true, $crypto);
socket_set_blocking($this->socket, (int) $stream_meta['blocked']);
}
@@ -1884,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'))
@@ -1902,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,29 @@ 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
* @since 3.2.9-RC1
*/
$vars = [
'forum_id',
'sql_ary',
];
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;
@@ -114,6 +134,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
* @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();
@@ -978,6 +1014,30 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
AND u.user_id = p.poster_id',
);
/**
* Event to modify the SQL query for topic reviews
*
* @event core.topic_review_modify_sql_ary
* @var int topic_id The topic ID that is being reviewed
* @var int forum_id The topic's forum ID
* @var string mode The topic review mode
* @var int cur_post_id Post offset ID
* @var bool show_quote_button Flag indicating if the quote button should be displayed
* @var array post_list Array with the post IDs
* @var array sql_ary Array with the SQL query
* @since 3.2.8-RC1
*/
$vars = array(
'topic_id',
'forum_id',
'mode',
'cur_post_id',
'show_quote_button',
'post_list',
'sql_ary',
);
extract($phpbb_dispatcher->trigger_event('core.topic_review_modify_sql_ary', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
$result = $db->sql_query($sql);
@@ -1284,6 +1344,7 @@ function delete_post($forum_id, $topic_id, $post_id, &$data, $is_soft = false, $
delete_topics('topic_id', array($topic_id), false);
$phpbb_content_visibility->remove_topic_from_statistic($data, $sql_data);
$config->increment('num_posts', -1, false);
$update_sql = update_post_information('forum', $forum_id, true);
if (count($update_sql))
@@ -2054,6 +2115,11 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data
continue;
}
if (preg_match('/[\x{10000}-\x{10FFFF}]/u', $attach_row['attach_comment']))
{
trigger_error('ATTACH_COMMENT_NO_EMOJIS');
}
if (!$attach_row['is_orphan'])
{
// update entry in db if attachment already stored in db and filespace

View File

@@ -490,7 +490,7 @@ function place_pm_into_folder(&$global_privmsgs_rules, $release = false)
'bcc' => explode(':', $row['bcc_address']),
'friend' => (isset($zebra[$row['author_id']])) ? $zebra[$row['author_id']]['friend'] : 0,
'foe' => (isset($zebra[$row['author_id']])) ? $zebra[$row['author_id']]['foe'] : 0,
'user_in_group' => array($user->data['group_id']),
'user_in_group' => $user->data['group_id'],
'author_in_group' => array())
);
@@ -1966,7 +1966,7 @@ function submit_pm($mode, $subject, &$data_ary, $put_in_outbox = true)
*/
function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode = false)
{
global $db, $user, $template, $phpbb_root_path, $phpEx, $auth;
global $db, $user, $template, $phpbb_root_path, $phpEx, $auth, $phpbb_dispatcher;
// Select all receipts and the author from the pm we currently view, to only display their pm-history
$sql = 'SELECT author_id, user_id
@@ -1985,9 +1985,7 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
$recipients = array_unique($recipients);
// Get History Messages (could be newer)
$sql = 'SELECT t.*, p.*, u.*
FROM ' . PRIVMSGS_TABLE . ' p, ' . PRIVMSGS_TO_TABLE . ' t, ' . USERS_TABLE . ' u
WHERE t.msg_id = p.msg_id
$sql_where = 't.msg_id = p.msg_id
AND p.author_id = u.user_id
AND t.folder_id NOT IN (' . PRIVMSGS_NO_BOX . ', ' . PRIVMSGS_HOLD_BOX . ')
AND ' . $db->sql_in_set('t.author_id', $recipients, false, true) . "
@@ -1998,13 +1996,37 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
if (!$message_row['root_level'])
{
$sql .= " AND (p.root_level = $msg_id OR (p.root_level = 0 AND p.msg_id = $msg_id))";
$sql_where .= " AND (p.root_level = $msg_id OR (p.root_level = 0 AND p.msg_id = $msg_id))";
}
else
{
$sql .= " AND (p.root_level = " . $message_row['root_level'] . ' OR p.msg_id = ' . $message_row['root_level'] . ')';
$sql_where .= " AND (p.root_level = " . $message_row['root_level'] . ' OR p.msg_id = ' . $message_row['root_level'] . ')';
}
$sql .= ' ORDER BY p.message_time DESC';
$sql_ary = array(
'SELECT' => 't.*, p.*, u.*',
'FROM' => array(
PRIVMSGS_TABLE => 'p',
PRIVMSGS_TO_TABLE => 't',
USERS_TABLE => 'u'
),
'LEFT_JOIN' => array(),
'WHERE' => $sql_where,
'ORDER_BY' => 'p.message_time DESC',
);
/**
* Event to modify the SQL query before the message history in private message is queried
*
* @event core.message_history_modify_sql_ary
* @var array sql_ary The SQL array to get the data of the message history in private message
* @since 3.2.8-RC1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.message_history_modify_sql_ary', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
unset($sql_ary);
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
@@ -2087,7 +2109,7 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
$previous_history_pm = $prev_id;
}
$template->assign_block_vars('history_row', array(
$template_vars = array(
'MESSAGE_AUTHOR_QUOTE' => (($decoded_message) ? addslashes(get_username_string('username', $author_id, $row['username'], $row['user_colour'], $row['username'])) : ''),
'MESSAGE_AUTHOR_FULL' => get_username_string('full', $author_id, $row['username'], $row['user_colour'], $row['username']),
'MESSAGE_AUTHOR_COLOUR' => get_username_string('colour', $author_id, $row['username'], $row['user_colour'], $row['username']),
@@ -2109,8 +2131,25 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
'USER_ID' => $row['user_id'],
'U_VIEW_MESSAGE' => "$url&amp;f=$folder_id&amp;p=" . $row['msg_id'],
'U_QUOTE' => (!$in_post_mode && $auth->acl_get('u_sendpm') && $author_id != ANONYMOUS) ? "$url&amp;mode=compose&amp;action=quote&amp;f=" . $folder_id . "&amp;p=" . $row['msg_id'] : '',
'U_POST_REPLY_PM' => ($author_id != $user->data['user_id'] && $author_id != ANONYMOUS && $auth->acl_get('u_sendpm')) ? "$url&amp;mode=compose&amp;action=reply&amp;f=$folder_id&amp;p=" . $row['msg_id'] : '')
'U_POST_REPLY_PM' => ($author_id != $user->data['user_id'] && $author_id != ANONYMOUS && $auth->acl_get('u_sendpm')) ? "$url&amp;mode=compose&amp;action=reply&amp;f=$folder_id&amp;p=" . $row['msg_id'] : ''
);
/**
* Modify the template vars for displaying the message history in private message
*
* @event core.message_history_modify_template_vars
* @var array template_vars Array containing the query
* @var array row Array containing the action user row
* @since 3.2.8-RC1
*/
$vars = array(
'template_vars',
'row',
);
extract($phpbb_dispatcher->trigger_event('core.message_history_modify_template_vars', compact($vars)));
$template->assign_block_vars('history_row', $template_vars);
unset($rowset[$i]);
$prev_id = $id;
}

View File

@@ -1732,7 +1732,7 @@ function phpbb_validate_timezone($timezone)
* @return mixed Either false if validation succeeded or a string which will be
* used as the error message (with the variable name appended)
*/
function validate_username($username, $allowed_username = false)
function validate_username($username, $allowed_username = false, $allow_all_names = false)
{
global $config, $db, $user, $cache;
@@ -1815,13 +1815,16 @@ function validate_username($username, $allowed_username = false)
return 'USERNAME_TAKEN';
}
$bad_usernames = $cache->obtain_disallowed_usernames();
foreach ($bad_usernames as $bad_username)
if (!$allow_all_names)
{
if (preg_match('#^' . $bad_username . '$#', $clean_username))
$bad_usernames = $cache->obtain_disallowed_usernames();
foreach ($bad_usernames as $bad_username)
{
return 'USERNAME_DISALLOWED';
if (preg_match('#^' . $bad_username . '$#', $clean_username))
{
return 'USERNAME_DISALLOWED';
}
}
}
@@ -1942,9 +1945,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

@@ -269,7 +269,7 @@ class mcp_ban
}
else if ($post_id)
{
$post_info = phpbb_get_post_data($post_id, 'm_ban');
$post_info = phpbb_get_post_data(array($post_id), 'm_ban');
if (count($post_info) && !empty($post_info[$post_id]))
{

View File

@@ -41,6 +41,22 @@ class mcp_main
$quickmod = ($mode == 'quickmod') ? true : false;
/**
* Event to perform additional actions before an MCP action is executed.
*
* @event core.mcp_main_before
* @var string action The action that is about to be performed
* @var string mode The mode in which the MCP is accessed, e.g. front, forum_view, topic_view, post_details, quickmod
* @var boolean quickmod Whether or not the action is performed via QuickMod
* @since 3.2.8-RC1
*/
$vars = [
'action',
'mode',
'quickmod',
];
extract($phpbb_dispatcher->trigger_event('core.mcp_main_before', compact($vars)));
switch ($action)
{
case 'lock':
@@ -378,7 +394,7 @@ function lock_unlock($action, $ids)
*/
function change_topic_type($action, $topic_ids)
{
global $user, $db, $request, $phpbb_log;
global $user, $db, $request, $phpbb_log, $phpbb_dispatcher;
switch ($action)
{

View File

@@ -142,14 +142,36 @@ function mcp_topic_view($id, $mode, $action)
}
$start = $pagination->validate_start($start, $posts_per_page, $total);
$sql = 'SELECT u.username, u.username_clean, u.user_colour, p.*
FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
WHERE ' . (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
$sql_where = (($action == 'reports') ? 'p.post_reported = 1 AND ' : '') . '
p.topic_id = ' . $topic_id . '
AND ' . $phpbb_content_visibility->get_visibility_sql('post', $topic_info['forum_id'], 'p.') . '
AND p.poster_id = u.user_id ' .
$limit_time_sql . '
ORDER BY ' . $sort_order_sql;
$limit_time_sql;
$sql_ary = array(
'SELECT' => 'u.username, u.username_clean, u.user_colour, p.*',
'FROM' => array(
POSTS_TABLE => 'p',
USERS_TABLE => 'u'
),
'LEFT_JOIN' => array(),
'WHERE' => $sql_where,
'ORDER_BY' => $sort_order_sql,
);
/**
* Event to modify the SQL query before the MCP topic review posts is queried
*
* @event core.mcp_topic_modify_sql_ary
* @var array sql_ary The SQL array to get the data of the MCP topic review posts
* @since 3.2.8-RC1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.mcp_topic_modify_sql_ary', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_ary);
unset($sql_ary);
$result = $db->sql_query_limit($sql, $posts_per_page, $start);
$rowset = $post_id_list = array();

View File

@@ -1524,6 +1524,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

@@ -29,7 +29,7 @@ class ucp_attachments
function main($id, $mode)
{
global $template, $user, $db, $config, $phpEx, $phpbb_root_path, $phpbb_container, $request;
global $template, $user, $db, $config, $phpEx, $phpbb_root_path, $phpbb_container, $request, $auth;
$start = $request->variable('start', 0);
$sort_key = $request->variable('sk', 'a');
@@ -41,16 +41,27 @@ class ucp_attachments
if ($delete && count($delete_ids))
{
// Validate $delete_ids...
$sql = 'SELECT attach_id
FROM ' . ATTACHMENTS_TABLE . '
WHERE poster_id = ' . $user->data['user_id'] . '
AND is_orphan = 0
AND ' . $db->sql_in_set('attach_id', $delete_ids);
$sql = 'SELECT a.attach_id, p.post_edit_locked, t.topic_status, f.forum_id, f.forum_status
FROM ' . ATTACHMENTS_TABLE . ' a
LEFT JOIN ' . POSTS_TABLE . ' p
ON (a.post_msg_id = p.post_id AND a.in_message = 0)
LEFT JOIN ' . TOPICS_TABLE . ' t
ON (t.topic_id = p.topic_id AND a.in_message = 0)
LEFT JOIN ' . FORUMS_TABLE . ' f
ON (f.forum_id = t.forum_id AND a.in_message = 0)
WHERE a.poster_id = ' . $user->data['user_id'] . '
AND a.is_orphan = 0
AND ' . $db->sql_in_set('a.attach_id', $delete_ids);
$result = $db->sql_query($sql);
$delete_ids = array();
while ($row = $db->sql_fetchrow($result))
{
if (!$auth->acl_get('m_edit', $row['forum_id']) && ($row['forum_status'] == ITEM_LOCKED || $row['topic_status'] == ITEM_LOCKED || $row['post_edit_locked']))
{
continue;
}
$delete_ids[] = $row['attach_id'];
}
$db->sql_freeresult($result);
@@ -124,10 +135,12 @@ class ucp_attachments
$pagination = $phpbb_container->get('pagination');
$start = $pagination->validate_start($start, $config['topics_per_page'], $num_attachments);
$sql = 'SELECT a.*, t.topic_title, p.message_subject as message_title
$sql = 'SELECT a.*, t.topic_title, pr.message_subject as message_title, p.post_edit_locked, t.topic_status, f.forum_id, f.forum_status
FROM ' . ATTACHMENTS_TABLE . ' a
LEFT JOIN ' . POSTS_TABLE . ' p ON (a.post_msg_id = p.post_id AND a.in_message = 0)
LEFT JOIN ' . TOPICS_TABLE . ' t ON (a.topic_id = t.topic_id AND a.in_message = 0)
LEFT JOIN ' . PRIVMSGS_TABLE . ' p ON (a.post_msg_id = p.msg_id AND a.in_message = 1)
LEFT JOIN ' . FORUMS_TABLE . ' f ON (f.forum_id = t.forum_id AND a.in_message = 0)
LEFT JOIN ' . PRIVMSGS_TABLE . ' pr ON (a.post_msg_id = pr.msg_id AND a.in_message = 1)
WHERE a.poster_id = ' . $user->data['user_id'] . "
AND a.is_orphan = 0
ORDER BY $order_by";
@@ -164,6 +177,7 @@ class ucp_attachments
'TOPIC_ID' => $row['topic_id'],
'S_IN_MESSAGE' => $row['in_message'],
'S_LOCKED' => !$row['in_message'] && !$auth->acl_get('m_edit', $row['forum_id']) && ($row['forum_status'] == ITEM_LOCKED || $row['topic_status'] == ITEM_LOCKED || $row['post_edit_locked']),
'U_VIEW_ATTACHMENT' => append_sid("{$phpbb_root_path}download/file.$phpEx", 'id=' . $row['attach_id']),
'U_VIEW_TOPIC' => $view_topic)

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
@@ -799,7 +799,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))
{
@@ -996,7 +999,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 */
@@ -1007,6 +1013,16 @@ function compose_pm($id, $mode, $action, $user_folders = array())
if (($action == 'reply' || $action == 'quote' || $action == 'quotepost') && !$preview && !$refresh)
{
$message_subject = ((!preg_match('/^Re:/', $message_subject)) ? 'Re: ' : '') . censor_text($message_subject);
/**
* This event allows you to modify the PM subject of the PM being quoted
*
* @event core.pm_modify_message_subject
* @var string message_subject String with the PM subject already censored.
* @since 3.2.8-RC1
*/
$vars = array('message_subject');
extract($phpbb_dispatcher->trigger_event('core.pm_modify_message_subject', compact($vars)));
}
if ($action == 'forward' && !$preview && !$refresh && !$submit)

View File

@@ -138,9 +138,9 @@ function view_folder($id, $mode, $folder_id, $folder)
$row_indicator = '';
foreach ($color_rows as $var)
{
if (($var != 'friend' && $var != 'foe' && $row['pm_' . $var])
if (($var !== 'friend' && $var !== 'foe' && $row[($var === 'message_reported') ? $var : "pm_{$var}"])
||
(($var == 'friend' || $var == 'foe') && isset(${$var}[$row['author_id']]) && ${$var}[$row['author_id']]))
(($var === 'friend' || $var === 'foe') && isset(${$var}[$row['author_id']]) && ${$var}[$row['author_id']]))
{
$row_indicator = $var;
break;

View File

@@ -133,7 +133,6 @@ class ucp_profile
'user_email' => ($auth->acl_get('u_chgemail')) ? $data['email'] : $user->data['user_email'],
'user_email_hash' => ($auth->acl_get('u_chgemail')) ? phpbb_email_hash($data['email']) : $user->data['user_email_hash'],
'user_password' => ($auth->acl_get('u_chgpasswd') && $data['new_password']) ? $passwords_manager->hash($data['new_password']) : $user->data['user_password'],
'user_passchg' => ($auth->acl_get('u_chgpasswd') && $data['new_password']) ? time() : 0,
);
if ($auth->acl_get('u_chgname') && $config['allow_namechange'] && $data['username'] != $user->data['username'])
@@ -147,6 +146,8 @@ class ucp_profile
if ($auth->acl_get('u_chgpasswd') && $data['new_password'] && !$passwords_manager->check($data['new_password'], $user->data['user_password']))
{
$sql_ary['user_passchg'] = time();
$user->reset_login_keys();
$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_NEW_PASSWORD', false, array(
'reportee_id' => $user->data['user_id'],

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),

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]) . ';';

View File

@@ -211,9 +211,6 @@ if ($show_birthdays)
$template->assign_block_vars_array('birthdays', $birthdays);
}
// Add form token for login box
add_form_key('login', '_LOGIN');
// Assign index specific vars
$template->assign_vars(array(
'TOTAL_POSTS' => $user->lang('TOTAL_POSTS_COUNT', (int) $config['num_posts']),

View File

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

View File

@@ -23,7 +23,7 @@ if (php_sapi_name() !== 'cli')
define('IN_PHPBB', true);
define('IN_INSTALL', true);
define('PHPBB_ENVIRONMENT', 'production');
define('PHPBB_VERSION', '3.2.6');
define('PHPBB_VERSION', '3.2.9-RC1');
$phpbb_root_path = __DIR__ . '/../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

View File

@@ -279,7 +279,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('tpl_allow_php', '0
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.2.6');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.2.9-RC1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');

View File

@@ -44,7 +44,7 @@ $lang = array_merge($lang, array(
'BOARD_STYLE' => 'Board style',
'CUSTOM_DATEFORMAT' => 'Custom…',
'DEFAULT_DATE_FORMAT' => 'Date format',
'DEFAULT_DATE_FORMAT_EXPLAIN' => 'The date format is the same as the PHP <code>date</code> function.',
'DEFAULT_DATE_FORMAT_EXPLAIN' => 'The date format is the same as the PHP <code><a href="https://secure.php.net/manual/function.date.php">date()</a></code> function.',
'DEFAULT_LANGUAGE' => 'Default language',
'DEFAULT_STYLE' => 'Default style',
'DEFAULT_STYLE_EXPLAIN' => 'The default style for new users.',
@@ -568,6 +568,8 @@ $lang = array_merge($lang, array(
'EMAIL_FORCE_SENDER_EXPLAIN' => 'This will set the <samp>Return-Path</samp> to the from email address instead of using the local user and hostname of the server. This setting does not apply when using SMTP.<br><em><strong>Warning:</strong> Requires the user that the webserver runs as to be added as trusted user to the sendmail configuration.</em>',
'EMAIL_PACKAGE_SIZE' => 'Email package size',
'EMAIL_PACKAGE_SIZE_EXPLAIN' => 'This is the number of maximum emails sent out in one package. This setting is applied to the internal message queue; set this value to 0 if you have problems with non-delivered notification emails.',
'EMAIL_MAX_CHUNK_SIZE' => 'Maximum allowed email recipients',
'EMAIL_MAX_CHUNK_SIZE_EXPLAIN' => 'If necessary, set this to not exceed the maximum number of recipients that your email server will allow in one email message.',
'EMAIL_SIG' => 'Email signature',
'EMAIL_SIG_EXPLAIN' => 'This text will be attached to all emails the board sends.',
'ENABLE_EMAIL' => 'Enable board-wide emails',
@@ -587,8 +589,8 @@ $lang = array_merge($lang, array(
'SMTP_POP_BEFORE_SMTP' => 'POP-BEFORE-SMTP',
'SMTP_PORT' => 'SMTP server port',
'SMTP_PORT_EXPLAIN' => 'Only change this if you know your SMTP server is on a different port.',
'SMTP_SERVER' => 'SMTP server address and protocol',
'SMTP_SERVER_EXPLAIN' => 'Note that you have to provide the protocol that your server uses. If you are using SSL, this has to be "ssl://your.mailserver.com"',
'SMTP_SERVER' => 'SMTP server address',
'SMTP_SERVER_EXPLAIN' => 'Do not provide a protocol (<samp>ssl://</samp> or <samp>tls://</samp>) unless your mail host tells you to do so.',
'SMTP_SETTINGS' => 'SMTP settings',
'SMTP_USERNAME' => 'SMTP username',
'SMTP_USERNAME_EXPLAIN' => 'Only enter a username if your SMTP server requires it.',

View File

@@ -97,6 +97,7 @@ $lang = array_merge($lang, array(
'FORUM_LINK_TRACK_EXPLAIN' => 'Records the number of times a forum link was clicked.',
'FORUM_NAME' => 'Forum name',
'FORUM_NAME_EMPTY' => 'You must enter a name for this forum.',
'FORUM_NAME_EMOJI' => 'The forum name you entered is invalid.<br>It contains the following unsupported characters:<br>%s',
'FORUM_PARENT' => 'Parent forum',
'FORUM_PASSWORD' => 'Forum password',
'FORUM_PASSWORD_CONFIRM' => 'Confirm forum password',

View File

@@ -81,8 +81,8 @@ $lang = array_merge($lang, array(
'ACL_U_SIG' => 'Can use signature',
'ACL_U_SENDPM' => 'Can send private messages',
'ACL_U_MASSPM' => 'Can send messages to multiple users',
'ACL_U_MASSPM_GROUP'=> 'Can send messages to groups',
'ACL_U_MASSPM' => 'Can send private messages to multiple users',
'ACL_U_MASSPM_GROUP'=> 'Can send private messages to groups',
'ACL_U_READPM' => 'Can read private messages',
'ACL_U_PM_EDIT' => 'Can edit own private messages',
'ACL_U_PM_DELETE' => 'Can remove private messages from own folder',

View File

@@ -56,7 +56,6 @@ $lang = array_merge($lang, array(
'BBCODE_INVALID_TAG_NAME' => 'The BBCode tag name that you selected already exists.',
'BBCODE_INVALID' => 'Your BBCode is constructed in an invalid form.',
'BBCODE_OPEN_ENDED_TAG' => 'Your custom BBCode must contain both an opening and a closing tag.',
'BBCODE_TAG' => 'Tag',
'BBCODE_TAG_TOO_LONG' => 'The tag name you selected is too long.',
'BBCODE_TAG_DEF_TOO_LONG' => 'The tag definition that you have entered is too long, please shorten your tag definition.',
@@ -78,13 +77,13 @@ $lang = array_merge($lang, array(
'TOO_MANY_BBCODES' => 'You cannot create any more BBCodes. Please remove one or more BBCodes then try again.',
'tokens' => array(
'TEXT' => 'Any text, including foreign characters, numbers, etc… You should not use this token in HTML tags. Instead try to use IDENTIFIER, INTTEXT or SIMPLETEXT.',
'TEXT' => 'Any text, including foreign characters, numbers, etc…',
'SIMPLETEXT' => 'Characters from the latin alphabet (A-Z), numbers, spaces, commas, dots, minus, plus, hyphen and underscore',
'INTTEXT' => 'Unicode letter characters, numbers, spaces, commas, dots, minus, plus, hyphen, underscore and whitespaces.',
'IDENTIFIER' => 'Characters from the latin alphabet (A-Z), numbers, hyphen and underscore',
'NUMBER' => 'Any series of digits',
'EMAIL' => 'A valid email address',
'URL' => 'A valid URL using any protocol (http, ftp, etc… cannot be used for javascript exploits). If none is given, “http://” is prefixed to the string.',
'URL' => 'A valid URL using any allowed protocol (http, ftp, etc… cannot be used for javascript exploits). If none is given, “http://” is prefixed to the string.',
'LOCAL_URL' => 'A local URL. The URL must be relative to the topic page and cannot contain a server name or protocol, as links are prefixed with “%s”',
'RELATIVE_URL' => 'A relative URL. You can use this to match parts of a URL, but be careful: a full URL is a valid relative URL. When you want to use relative URLs of your board, use the LOCAL_URL token.',
'COLOR' => 'A HTML colour, can be either in the numeric form <samp>#FF1234</samp> or a <a href="http://www.w3.org/TR/CSS21/syndata.html#value-def-color">CSS colour keyword</a> such as <samp>fuchsia</samp> or <samp>InactiveBorder</samp>',

View File

@@ -111,7 +111,7 @@ $lang = array_merge($lang, array(
'FIRST_OPTION' => 'First option',
'HIDE_PROFILE_FIELD' => 'Hide profile field',
'HIDE_PROFILE_FIELD_EXPLAIN' => 'Hide the profile field from all other users except the user, administrators and moderators who are still able to see this field. If the Display in user control panel option is disabled, the user will not be able to see or change this field and the field can only be changed by administrators.',
'HIDE_PROFILE_FIELD_EXPLAIN' => 'Hide the profile field from all users except administrators and moderators, who are still able to see this field. If the Display in user control panel option is disabled, the user will not be able to see or change this field and the field can only be changed by administrators.',
'INVALID_CHARS_FIELD_IDENT' => 'Field identification can only contain lowercase a-z and _',
'INVALID_FIELD_IDENT_LEN' => 'Field identification can only be 17 characters long',

View File

@@ -21,7 +21,7 @@ if (!defined('IN_PHPBB'))
if (empty($lang) || !is_array($lang))
{
$lang = array();
$lang = [];
}
// DEVELOPERS PLEASE NOTE
@@ -36,55 +36,56 @@ if (empty($lang) || !is_array($lang))
// equally where a string contains only two placeholders which are used to wrap text
// in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
$lang = array_merge($lang, array(
'ACP_STYLES_EXPLAIN' => 'Here you can manage the available styles on your board. You may alter existing styles, delete, deactivate, reactivate, install new ones. You can also see what a style will look like using the preview function. Also listed is the total user count for each style, note that overriding user styles will not be reflected here.',
$lang = array_merge($lang, [
'ACP_STYLES_EXPLAIN' => 'Here you can manage the styles available on your board.<br>Please note you cannot uninstall the “<strong>prosilver</strong>” style as it is phpBBs default and primary parent style.',
'CANNOT_BE_INSTALLED' => 'Cannot be installed',
'CONFIRM_UNINSTALL_STYLES' => 'Are you sure you wish to uninstall selected styles?',
'COPYRIGHT' => 'Copyright',
'CANNOT_BE_INSTALLED' => 'Cannot be installed',
'CONFIRM_UNINSTALL_STYLES' => 'Are you sure you wish to uninstall selected styles?',
'COPYRIGHT' => 'Copyright',
'DEACTIVATE_DEFAULT' => 'You cannot deactivate the default style.',
'DELETE_FROM_FS' => 'Delete from filesystem',
'DELETE_STYLE_FILES_FAILED' => 'Error deleting files for style "%s".',
'DELETE_STYLE_FILES_SUCCESS' => 'Files for style "%s" have been deleted.',
'DETAILS' => 'Details',
'DEACTIVATE_DEFAULT' => 'You cannot deactivate the default style.',
'DELETE_FROM_FS' => 'Delete from filesystem',
'DELETE_STYLE_FILES_FAILED' => 'Error deleting files for style "%s".',
'DELETE_STYLE_FILES_SUCCESS' => 'Files for style "%s" have been deleted.',
'DETAILS' => 'Details',
'INHERITING_FROM' => 'Inherits from',
'INSTALL_STYLE' => 'Install style',
'INSTALL_STYLES' => 'Install styles',
'INSTALL_STYLES_EXPLAIN' => 'Here you can install new styles.<br />If you cannot find a specific style in list below, check to make sure style is already installed. If it is not installed, check if it was uploaded correctly.',
'INVALID_STYLE_ID' => 'Invalid style ID.',
'INHERITING_FROM' => 'Inherits from',
'INSTALL_STYLE' => 'Install style',
'INSTALL_STYLES' => 'Install styles',
'INSTALL_STYLES_EXPLAIN' => 'Here you can install new styles.<br>If you cannot find a specific style in list below, check to make sure style is already installed. If it is not installed, check if it was uploaded correctly.',
'INVALID_STYLE_ID' => 'Invalid style ID.',
'NO_MATCHING_STYLES_FOUND' => 'No styles match your query.',
'NO_UNINSTALLED_STYLE' => 'No uninstalled styles detected.',
'NO_MATCHING_STYLES_FOUND' => 'No styles match your query.',
'NO_UNINSTALLED_STYLE' => 'No uninstalled styles detected.',
'PURGED_CACHE' => 'Cache was purged.',
'PURGED_CACHE' => 'Cache was purged.',
'REQUIRES_STYLE' => 'This style requires the style "%s" to be installed.',
'REQUIRES_STYLE' => 'This style requires the style "%s" to be installed.',
'STYLE_ACTIVATE' => 'Activate',
'STYLE_ACTIVE' => 'Active',
'STYLE_DEACTIVATE' => 'Deactivate',
'STYLE_DEFAULT' => 'Make default style',
'STYLE_DEFAULT_CHANGE_INACTIVE' => 'You must activate style before making it default style.',
'STYLE_ERR_INVALID_PARENT' => 'Invalid parent style.',
'STYLE_ERR_NAME_EXIST' => 'A style with that name already exists.',
'STYLE_ERR_STYLE_NAME' => 'You must supply a name for this style.',
'STYLE_INSTALLED' => 'Style "%s" has been installed.',
'STYLE_ACTIVATE' => 'Activate',
'STYLE_ACTIVE' => 'Active',
'STYLE_DEACTIVATE' => 'Deactivate',
'STYLE_DEFAULT' => 'Make default style',
'STYLE_DEFAULT_CHANGE_INACTIVE' => 'You must activate style before making it default style.',
'STYLE_ERR_INVALID_PARENT' => 'Invalid parent style.',
'STYLE_ERR_NAME_EXIST' => 'A style with that name already exists.',
'STYLE_ERR_STYLE_NAME' => 'You must supply a name for this style.',
'STYLE_INSTALLED' => 'Style "%s" has been installed.',
'STYLE_INSTALLED_RETURN_INSTALLED_STYLES' => 'Return to installed styles list',
'STYLE_INSTALLED_RETURN_UNINSTALLED_STYLES' => 'Install more styles',
'STYLE_NAME' => 'Style name',
'STYLE_NAME_RESERVED' => 'Style "%s" can not be installed, because the name is reserved.',
'STYLE_NOT_INSTALLED' => 'Style "%s" was not installed.',
'STYLE_PATH' => 'Style path',
'STYLE_UNINSTALL' => 'Uninstall',
'STYLE_UNINSTALL_DEPENDENT' => 'Style "%s" cannot be uninstalled because it has one or more child styles.',
'STYLE_UNINSTALLED' => 'Style "%s" uninstalled successfully.',
'STYLE_PHPBB_VERSION' => 'phpBB Version',
'STYLE_USED_BY' => 'Used by (including robots)',
'STYLE_VERSION' => 'Style version',
'STYLE_NAME' => 'Style name',
'STYLE_NAME_RESERVED' => 'Style "%s" can not be installed, because the name is reserved.',
'STYLE_NOT_INSTALLED' => 'Style "%s" was not installed.',
'STYLE_PATH' => 'Style path',
'STYLE_UNINSTALL' => 'Uninstall',
'STYLE_UNINSTALL_DEPENDENT' => 'Style "%s" cannot be uninstalled because it has one or more child styles.',
'STYLE_UNINSTALLED' => 'Style "%s" uninstalled successfully.',
'STYLE_PHPBB_VERSION' => 'phpBB Version',
'STYLE_USED_BY' => 'Used by (including robots)',
'STYLE_VERSION' => 'Style version',
'UNINSTALL_DEFAULT' => 'You cannot uninstall the default style.',
'UNINSTALL_PROSILVER' => 'You cannot uninstall the style “prosilver”.',
'UNINSTALL_DEFAULT' => 'You cannot uninstall the default style.',
'BROWSE_STYLES_DATABASE' => 'Browse styles database',
));
'BROWSE_STYLES_DATABASE' => 'Browse styles database',
]);

View File

@@ -91,6 +91,7 @@ $lang = array_merge($lang, array(
'ATTACHED_IMAGE_NOT_IMAGE' => 'The image file you tried to attach is invalid.',
'AUTHOR' => 'Author',
'AUTH_NO_PROFILE_CREATED' => 'The creation of a user profile was unsuccessful.',
'AUTH_PROVIDER_OAUTH_ERROR_ALREADY_LINKED' => 'This external service is already associated with another board account.',
'AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY' => 'Invalid database entry.',
'AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE' => 'Invalid service type provided to OAuth service handler.',
'AUTH_PROVIDER_OAUTH_ERROR_SERVICE_NOT_CREATED' => 'OAuth service not created',
@@ -518,7 +519,8 @@ $lang = array_merge($lang, array(
'NO_POSTS_TIME_FRAME' => 'No posts exist inside this topic for the selected time frame.',
'NO_FEED_ENABLED' => 'Feeds are not available on this board.',
'NO_FEED' => 'The requested feed is not available.',
'NO_STYLE_DATA' => 'Could not get style data',
'NO_STYLE_DATA' => 'Could not get style data for user_style %s and set for user_id %s',
'NO_STYLE_CFG' => 'Could not get the style configuration file for: %s',
'NO_SUBJECT' => 'No subject specified', // Used for posts having no subject defined but displayed within management pages.
'NO_SUCH_SEARCH_MODULE' => 'The specified search backend doesnt exist.',
'NO_SUPPORTED_AUTH_METHODS' => 'No supported authentication methods.',

View File

@@ -7,7 +7,7 @@ The account owned by "{USERNAME}" has been deactivated or newly created, you sho
Use this link to view the user's profile:
{U_USER_DETAILS}
Use this link to activate the account:
You may activate the account immediately by clicking on this link:
{U_ACTIVATE}
{EMAIL_SIG}

View File

@@ -43,6 +43,7 @@ $lang = array_merge($lang, array(
'ADD_POLL' => 'Poll creation',
'ADD_POLL_EXPLAIN' => 'If you do not want to add a poll to your topic leave the fields blank.',
'ALREADY_DELETED' => 'Sorry but this message is already deleted.',
'ATTACH_COMMENT_NO_EMOJIS' => 'The attachment comment contains forbidden characters (Emoji).',
'ATTACH_DISK_FULL' => 'There is not enough free disk space to post this attachment.',
'ATTACH_QUOTA_REACHED' => 'Sorry, the board attachment quota has been reached.',
'ATTACH_SIG' => 'Attach a signature (signatures can be altered via the UCP)',

View File

@@ -89,6 +89,7 @@ $lang = array_merge($lang, array(
'ATTACHMENTS_EXPLAIN' => 'This is a list of attachments you have made in posts to this board.',
'ATTACHMENTS_DELETED' => 'Attachments successfully deleted.',
'ATTACHMENT_DELETED' => 'Attachment successfully deleted.',
'ATTACHMENT_LOCKED' => 'This topic is locked, you cannot delete the attachment.',
'AUTOLOGIN_SESSION_KEYS_DELETED'=> 'The selected "Remember Me" login keys were successfully deleted.',
'AVATAR_CATEGORY' => 'Category',
'AVATAR_DRIVER_GRAVATAR_TITLE' => 'Gravatar',
@@ -115,7 +116,7 @@ $lang = array_merge($lang, array(
'BIRTHDAY' => 'Birthday',
'BIRTHDAY_EXPLAIN' => 'Setting a year will list your age when it is your birthday.',
'BOARD_DATE_FORMAT' => 'My date format',
'BOARD_DATE_FORMAT_EXPLAIN' => 'The syntax used is identical to the PHP <a href="http://www.php.net/date">date()</a> function.',
'BOARD_DATE_FORMAT_EXPLAIN' => 'The syntax used is identical to the PHP <a href="https://secure.php.net/manual/function.date.php">date()</a> function.',
'BOARD_LANGUAGE' => 'My language',
'BOARD_STYLE' => 'My board style',
'BOARD_TIMEZONE' => 'My timezone',

View File

@@ -1073,7 +1073,18 @@ switch ($mode)
if ($active_time !== false)
{
$sql_where .= " AND u.user_lastvisit " . $find_key_match[$active_select] . ' ' . $active_time;
if ($active_select === 'lt' && (int) $active[0] == 0 && (int) $active[1] == 0 && (int) $active[2] == 0)
{
$sql_where .= ' AND u.user_lastvisit = 0';
}
else if ($active_select === 'gt')
{
$sql_where .= ' AND u.user_lastvisit ' . $find_key_match[$active_select] . ' ' . $active_time;
}
else
{
$sql_where .= ' AND (u.user_lastvisit > 0 AND u.user_lastvisit < ' . $active_time . ')';
}
}
}
@@ -1223,18 +1234,18 @@ switch ($mode)
$avatar_img = phpbb_get_group_avatar($group_row);
// ... same for group rank
$user_rank_data = array(
$group_rank_data = array(
'title' => null,
'img' => null,
'img_src' => null,
);
if ($group_row['group_rank'])
{
$user_rank_data = phpbb_get_user_rank($group_row, false);
$group_rank_data = $group_helper->get_rank($group_row);
if ($user_rank_data['img'])
if ($group_rank_data['img'])
{
$user_rank_data['img'] .= '<br />';
$group_rank_data['img'] .= '<br />';
}
}
// include modules for manage groups link display or not
@@ -1261,11 +1272,11 @@ switch ($mode)
'GROUP_NAME' => $group_helper->get_name($group_row['group_name']),
'GROUP_COLOR' => $group_row['group_colour'],
'GROUP_TYPE' => $user->lang['GROUP_IS_' . $group_row['l_group_type']],
'GROUP_RANK' => $user_rank_data['title'],
'GROUP_RANK' => $group_rank_data['title'],
'AVATAR_IMG' => $avatar_img,
'RANK_IMG' => $user_rank_data['img'],
'RANK_IMG_SRC' => $user_rank_data['img_src'],
'RANK_IMG' => $group_rank_data['img'],
'RANK_IMG_SRC' => $group_rank_data['img_src'],
'U_PM' => ($auth->acl_get('u_sendpm') && $auth->acl_get('u_masspm_group') && $group_row['group_receive_pm'] && $config['allow_privmsg'] && $config['allow_mass_pm']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;g=' . $group_id) : '',
'U_MANAGE' => ($can_manage_group) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=ucp_groups&amp;mode=manage') : false,)
@@ -1664,7 +1675,7 @@ switch ($mode)
}
// do we need to display contact fields as such
$use_contact_fields = false;
$use_contact_fields = true;
/**
* Modify list of users before member row is created

View File

@@ -216,10 +216,15 @@ class oauth extends \phpbb\auth\provider\base
$this->service_providers[$service_name]->set_external_service_provider($service);
$unique_id = $this->service_providers[$service_name]->perform_auth_login();
// Check to see if this provider is already assosciated with an account
/**
* Check to see if this provider is already associated with an account.
*
* Enforcing a data type to make data contains strings and not integers,
* so values are quoted in the SQL WHERE statement.
*/
$data = array(
'provider' => $service_name_original,
'oauth_provider_id' => $unique_id
'provider' => (string) $service_name_original,
'oauth_provider_id' => (string) $unique_id
);
$sql = 'SELECT user_id FROM ' . $this->auth_provider_oauth_token_account_assoc . '
@@ -264,7 +269,7 @@ class oauth extends \phpbb\auth\provider\base
}
// Retrieve the user's account
$sql = 'SELECT user_id, username, user_password, user_passchg, user_email, user_type, user_login_attempts
$sql = 'SELECT user_id, username, user_password, user_passchg, user_email, user_ip, user_type, user_login_attempts
FROM ' . $this->users_table . '
WHERE user_id = ' . (int) $row['user_id'];
$result = $this->db->sql_query($sql);
@@ -423,7 +428,7 @@ class oauth extends \phpbb\auth\provider\base
if ($credentials['key'] && $credentials['secret'])
{
$actual_name = str_replace('auth.provider.oauth.service.', '', $service_name);
$redirect_url = build_url(false) . '&login=external&oauth_service=' . $actual_name;
$redirect_url = generate_board_url() . '/ucp.' . $this->php_ext . '?mode=login&login=external&oauth_service=' . $actual_name;
$login_data['BLOCK_VARS'][$service_name] = array(
'REDIRECT_URL' => redirect($redirect_url, true),
'SERVICE_NAME' => $this->user->lang['AUTH_PROVIDER_OAUTH_SERVICE_' . strtoupper($actual_name)],
@@ -634,6 +639,21 @@ class oauth extends \phpbb\auth\provider\base
*/
protected function link_account_perform_link(array $data)
{
// Check if the external account is already associated with other user
$sql = 'SELECT user_id
FROM ' . $this->auth_provider_oauth_token_account_assoc . "
WHERE provider = '" . $this->db->sql_escape($data['provider']) . "'
AND oauth_provider_id = '" . $this->db->sql_escape($data['oauth_provider_id']) . "'";
$result = $this->db->sql_query($sql);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
if ($row)
{
trigger_error('AUTH_PROVIDER_OAUTH_ERROR_ALREADY_LINKED');
}
// Link account
$sql = 'INSERT INTO ' . $this->auth_provider_oauth_token_account_assoc . '
' . $this->db->sql_build_array('INSERT', $data);
$this->db->sql_query($sql);

View File

@@ -71,9 +71,10 @@ interface provider_interface
* options with whatever configuraton values are passed to it as an array.
* It then returns the name of the acp file related to this authentication
* provider.
* @param array $new_config Contains the new configuration values that
* have been set in acp_board.
* @return array|null Returns null if not implemented or an array with
*
* @param \phpbb\config\config $new_config Contains the new configuration values
* that have been set in acp_board.
* @return array|null Returns null if not implemented or an array with
* the template file name and an array of the vars
* that the template needs that must conform to the
* following example:

View File

@@ -49,6 +49,8 @@ class remote extends \phpbb\avatar\driver\driver
*/
public function process_form($request, $template, $user, $row, &$error)
{
global $phpbb_dispatcher;
$url = $request->variable('avatar_remote_url', '');
$width = $request->variable('avatar_remote_width', 0);
$height = $request->variable('avatar_remote_height', 0);
@@ -84,6 +86,24 @@ class remote extends \phpbb\avatar\driver\driver
return false;
}
/**
* Event to make custom validation of avatar upload
*
* @event core.ucp_profile_avatar_upload_validation
* @var string url Image url
* @var string width Image width
* @var string height Image height
* @var array error Error message array
* @since 3.2.9-RC1
*/
$vars = array('url', 'width', 'height', 'error');
extract($phpbb_dispatcher->trigger_event('core.ucp_profile_avatar_upload_validation', compact($vars)));
if (!empty($error))
{
return false;
}
// Check if this url looks alright
// Do not allow specifying the port (see RFC 3986) or IP addresses
if (!preg_match('#^(http|https|ftp)://(?:(.*?\.)*?[a-z0-9\-]+?\.[a-z]{2,4}|(?:\d{1,3}\.){3,5}\d{1,3}):?([0-9]*?).*?\.('. implode('|', $this->allowed_extensions) . ')$#i', $url) ||

View File

@@ -21,7 +21,7 @@ class qa
{
var $confirm_id;
var $answer;
var $question_ids;
var $question_ids = [];
var $question_text;
var $question_lang;
var $question_strict;

View File

@@ -68,6 +68,9 @@ class mysqli extends \phpbb\db\driver\mysql_base
if ($this->db_connect_id && $this->dbname != '')
{
// Disable loading local files on client side
@mysqli_options($this->db_connect_id, MYSQLI_OPT_LOCAL_INFILE, false);
@mysqli_query($this->db_connect_id, "SET NAMES 'utf8'");
// enforce strict mode on databases that support it

View File

@@ -0,0 +1,29 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\db\migration\data\v32x;
class timezone_p3 extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array('\phpbb\db\migration\data\v310\timezone');
}
public function update_data()
{
return array(
array('config.remove', array('board_dst')),
);
}
}

View File

@@ -0,0 +1,37 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\db\migration\data\v32x;
class v327 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.7', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v327rc1',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.7')),
);
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\db\migration\data\v32x;
class v327rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.7-RC1', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v326',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.7-RC1')),
);
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\db\migration\data\v32x;
class v328 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.8', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v328rc1',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.8')),
);
}
}

View File

@@ -0,0 +1,37 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\db\migration\data\v32x;
class v328rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.8-RC1', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\timezone_p3',
'\phpbb\db\migration\data\v32x\v327',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.8-RC1')),
);
}
}

View File

@@ -0,0 +1,36 @@
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
namespace phpbb\db\migration\data\v32x;
class v329rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.9-RC1', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v328',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.9-RC1')),
);
}
}

View File

@@ -576,7 +576,7 @@ class tools implements tools_interface
{
foreach ($indexes as $index_name)
{
if (!$this->sql_index_exists($table, $index_name))
if (!$this->sql_index_exists($table, $index_name) && !$this->sql_unique_index_exists($table, $index_name))
{
continue;
}

View File

@@ -389,9 +389,16 @@ class md_exporter
$files = explode("\n + ", $file_details);
foreach ($files as $file)
{
if (!preg_match('#^([^ ]+)( \([0-9]+\))?$#', $file))
{
throw new \LogicException("Invalid event instances for file '{$file}' found for event '{$this->current_event}'", 1);
}
list($file) = explode(" ", $file);
if (!file_exists($this->path . $file) || substr($file, -5) !== '.html')
{
throw new \LogicException("Invalid file '{$file}' not found for event '{$this->current_event}'", 1);
throw new \LogicException("Invalid file '{$file}' not found for event '{$this->current_event}'", 2);
}
if (($this->filter !== 'adm') && strpos($file, 'styles/prosilver/template/') === 0)
@@ -404,7 +411,7 @@ class md_exporter
}
else
{
throw new \LogicException("Invalid file '{$file}' not found for event '{$this->current_event}'", 2);
throw new \LogicException("Invalid file '{$file}' not found for event '{$this->current_event}'", 3);
}
$this->events_by_file[$file][] = $this->current_event;
@@ -424,7 +431,7 @@ class md_exporter
}
else
{
throw new \LogicException("Invalid file list found for event '{$this->current_event}'", 2);
throw new \LogicException("Invalid file list found for event '{$this->current_event}'", 1);
}
return $files_list;

View File

@@ -835,7 +835,7 @@ class filesystem implements filesystem_interface
$current_path = $resolved_path . '/' . $path_part;
// Resolve symlinks
if (is_link($current_path))
if (@is_link($current_path))
{
if (!function_exists('readlink'))
{
@@ -872,12 +872,12 @@ class filesystem implements filesystem_interface
$resolved_path = false;
}
else if (is_dir($current_path . '/'))
else if (@is_dir($current_path . '/'))
{
$resolved[] = $path_part;
$resolved_path = $current_path;
}
else if (is_file($current_path))
else if (@is_file($current_path))
{
$resolved[] = $path_part;
$resolved_path = $current_path;

View File

@@ -13,19 +13,74 @@
namespace phpbb\group;
use phpbb\auth\auth;
use phpbb\cache\service as cache;
use phpbb\config\config;
use phpbb\language\language;
use phpbb\event\dispatcher_interface;
use phpbb\path_helper;
use phpbb\user;
class helper
{
/** @var \phpbb\language\language */
/** @var auth */
protected $auth;
/** @var cache */
protected $cache;
/** @var config */
protected $config;
/** @var language */
protected $language;
/** @var dispatcher_interface */
protected $dispatcher;
/** @var path_helper */
protected $path_helper;
/** @var user */
protected $user;
/** @var string phpBB root path */
protected $phpbb_root_path;
/** @var array Return templates for a group name string */
protected $name_strings;
/**
* Constructor
*
* @param \phpbb\language\language $language Language object
* @param auth $auth Authentication object
* @param cache $cache Cache service object
* @param config $config Configuration object
* @param language $language Language object
* @param dispatcher_interface $dispatcher Event dispatcher object
* @param path_helper $path_helper Path helper object
* @param user $user User object
*/
public function __construct(\phpbb\language\language $language)
public function __construct(auth $auth, cache $cache, config $config, language $language, dispatcher_interface $dispatcher, path_helper $path_helper, user $user)
{
$this->auth = $auth;
$this->cache = $cache;
$this->config = $config;
$this->language = $language;
$this->dispatcher = $dispatcher;
$this->path_helper = $path_helper;
$this->user = $user;
$this->phpbb_root_path = $path_helper->get_phpbb_root_path();
/** @html Group name spans and links for usage in the template */
$this->name_strings = array(
'base_url' => "{$path_helper->get_phpbb_root_path()}memberlist.{$path_helper->get_php_ext()}?mode=group&amp;g={GROUP_ID}",
'tpl_noprofile' => '<span class="username">{GROUP_NAME}</span>',
'tpl_noprofile_colour' => '<span class="username-coloured" style="color: {GROUP_COLOUR};">{GROUP_NAME}</span>',
'tpl_profile' => '<a class="username" href="{PROFILE_URL}">{GROUP_NAME}</a>',
'tpl_profile_colour' => '<a class="username-coloured" href="{PROFILE_URL}" style="color: {GROUP_COLOUR};">{GROUP_NAME}</a>',
);
}
/**
@@ -37,4 +92,203 @@ class helper
{
return $this->language->is_set('G_' . utf8_strtoupper($group_name)) ? $this->language->lang('G_' . utf8_strtoupper($group_name)) : $group_name;
}
/**
* Get group name details for placing into templates.
*
* @html Group name spans and links
*
* @param string $mode Profile (for getting an url to the profile),
* group_name (for obtaining the group name),
* colour (for obtaining the group colour),
* full (for obtaining a coloured group name link to the group's profile),
* no_profile (the same as full but forcing no profile link)
* @param int $group_id The group id
* @param string $group_name The group name
* @param string $group_colour The group colour
* @param mixed $custom_profile_url optional parameter to specify a profile url. The group id gets appended to this url as &amp;g={group_id}
*
* @return string A string consisting of what is wanted based on $mode.
*/
public function get_name_string($mode, $group_id, $group_name, $group_colour = '', $custom_profile_url = false)
{
$s_is_bots = ($group_name === 'BOTS');
// This switch makes sure we only run code required for the mode
switch ($mode)
{
case 'full':
case 'no_profile':
case 'colour':
// Build correct group colour
$group_colour = $group_colour ? '#' . $group_colour : '';
// Return colour
if ($mode === 'colour')
{
$group_name_string = $group_colour;
break;
}
// no break;
case 'group_name':
// Build correct group name
$group_name = $this->get_name($group_name);
// Return group name
if ($mode === 'group_name')
{
$group_name_string = $group_name;
break;
}
// no break;
case 'profile':
// Build correct profile url - only show if not anonymous and permission to view profile if registered user
// For anonymous the link leads to a login page.
if ($group_id && !$s_is_bots && ($this->user->data['user_id'] == ANONYMOUS || $this->auth->acl_get('u_viewprofile')))
{
$profile_url = ($custom_profile_url !== false) ? $custom_profile_url . '&amp;g=' . (int) $group_id : str_replace(array('={GROUP_ID}', '=%7BGROUP_ID%7D'), '=' . (int) $group_id, append_sid($this->name_strings['base_url']));
}
else
{
$profile_url = '';
}
// Return profile
if ($mode === 'profile')
{
$group_name_string = $profile_url;
break;
}
// no break;
}
if (!isset($group_name_string))
{
if (($mode === 'full' && empty($profile_url)) || $mode === 'no_profile' || $s_is_bots)
{
$group_name_string = str_replace(array('{GROUP_COLOUR}', '{GROUP_NAME}'), array($group_colour, $group_name), (!$group_colour) ? $this->name_strings['tpl_noprofile'] : $this->name_strings['tpl_noprofile_colour']);
}
else
{
$group_name_string = str_replace(array('{PROFILE_URL}', '{GROUP_COLOUR}', '{GROUP_NAME}'), array($profile_url, $group_colour, $group_name), (!$group_colour) ? $this->name_strings['tpl_profile'] : $this->name_strings['tpl_profile_colour']);
}
}
$name_strings = $this->name_strings;
/**
* Use this event to change the output of the group name
*
* @event core.modify_group_name_string
* @var string mode profile|group_name|colour|full|no_profile
* @var int group_id The group identifier
* @var string group_name The group name
* @var string group_colour The group colour
* @var string custom_profile_url Optional parameter to specify a profile url.
* @var string group_name_string The string that has been generated
* @var array name_strings Array of original return templates
* @since 3.2.8-RC1
*/
$vars = array(
'mode',
'group_id',
'group_name',
'group_colour',
'custom_profile_url',
'group_name_string',
'name_strings',
);
extract($this->dispatcher->trigger_event('core.modify_group_name_string', compact($vars)));
return $group_name_string;
}
/**
* Get group rank title and image
*
* @html Group rank image element
*
* @param array $group_data The current stored group data
*
* @return array An associative array containing the rank title (title),
* the rank image as full img tag (img) and the rank image source (img_src)
*/
public function get_rank($group_data)
{
$group_rank_data = array(
'title' => null,
'img' => null,
'img_src' => null,
);
/**
* Preparing a group's rank before displaying
*
* @event core.get_group_rank_before
* @var array group_data Array with group's data
* @since 3.2.8-RC1
*/
$vars = array('group_data');
extract($this->dispatcher->trigger_event('core.get_group_rank_before', compact($vars)));
if (!empty($group_data['group_rank']))
{
// Only obtain ranks if group rank is set
$ranks = $this->cache->obtain_ranks();
if (isset($ranks['special'][$group_data['group_rank']]))
{
$rank = $ranks['special'][$group_data['group_rank']];
$group_rank_data['title'] = $rank['rank_title'];
$group_rank_data['img_src'] = (!empty($rank['rank_image'])) ? $this->path_helper->update_web_root_path($this->phpbb_root_path . $this->config['ranks_path'] . '/' . $rank['rank_image']) : '';
/** @html Group rank image element for usage in the template */
$group_rank_data['img'] = (!empty($rank['rank_image'])) ? '<img src="' . $group_rank_data['img_src'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';
}
}
/**
* Modify a group's rank before displaying
*
* @event core.get_group_rank_after
* @var array group_data Array with group's data
* @var array group_rank_data Group rank data
* @since 3.2.8-RC1
*/
$vars = array(
'group_data',
'group_rank_data',
);
extract($this->dispatcher->trigger_event('core.get_group_rank_after', compact($vars)));
return $group_rank_data;
}
/**
* Get group avatar.
* Wrapper function for phpbb_get_group_avatar()
*
* @param array $group_row Row from the groups table
* @param string $alt Optional language string for alt tag within image, can be a language key or text
* @param bool $ignore_config Ignores the config-setting, to be still able to view the avatar in the UCP
* @param bool $lazy If true, will be lazy loaded (requires JS)
*
* @return string Avatar html
*/
function get_avatar($group_row, $alt = 'GROUP_AVATAR', $ignore_config = false, $lazy = false)
{
return phpbb_get_group_avatar($group_row, $alt, $ignore_config, $lazy);
}
}

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