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

Compare commits

...

296 Commits

Author SHA1 Message Date
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
Marc Alexander
2575b499a3 [prep-release-3.2.6] Update Changelog and add missing preg_match 2019-04-28 18:15:44 +02:00
Marc Alexander
d54c43ae8f [prep-release-3.2.6] Update changelog for 3.2.6 2019-04-28 09:27:54 +02:00
JoshyPHP
06a95487fe [ticket/16034] Fix [url=] links being incorrectly shortened
PHPBB3-16034
2019-04-28 02:43:05 +02:00
Marc Alexander
bec047586a [prep-release-3.2.6] Add migration to 3.2.6 2019-04-27 14:41:50 +02:00
Marc Alexander
37e5457dcf [prep-release-3.2.6] Update to 3.2.6 version 2019-04-27 14:34:33 +02:00
Marc Alexander
1843e4f6b4 [prep-release-3.2.6] Fix expected data in avatar manager test 2019-04-27 13:52:37 +02:00
Marc Alexander
f75dd1628c Merge pull request #48 from phpbb/ticket/security/228
[ticket/security/228] Add form token to login box
2019-04-27 13:26:36 +02:00
Marc Alexander
f3c4587d47 Merge pull request #47 from phpbb/ticket/security/233
[ticket/security/233] Make smtp_password and smtp_username dynamic
2019-04-27 13:24:16 +02:00
Marc Alexander
db43961de6 Merge pull request #46 from phpbb/ticket/security/231
[ticket/security/231] Disable remote avatar functionality & add warning
2019-04-27 13:23:07 +02:00
Marc Alexander
308dd49bb9 Merge pull request #45 from phpbb/ticket/security/234
[ticket/security/234] Add URL validation for input fields & main site URL
2019-04-27 13:21:55 +02:00
Marc Alexander
3075d2fecc Merge pull request #44 from phpbb/ticket/security/235
Ticket/security/235 Wildcard char count in search
2019-04-27 13:19:35 +02:00
Marc Alexander
36840fb2e4 Merge pull request #5576 from marc1706/ticket/16027
[ticket/16027] Force clearing of cache folder on install for functional
2019-04-27 13:14:38 +02:00
Marc Alexander
2353ad11f2 [ticket/security/235] Update search native tests
SECURITY-235
2019-04-26 23:39:51 +02:00
Derky
b836898016 [ticket/security/228] Add form token to login box
SECURITY-228
2019-04-26 12:11:52 +02:00
Derky
da9910850a [ticket/security/235] Only allow one wildcard in the search query to limit the database load
SECURITY-235
2019-04-26 00:56:48 +02:00
Derky
8a73eb5f0f [ticket/security/235] Use whitespace instead of word boundary regex to remove wildcards
This fixes removing the wildcard in the following search query: *.test
SECURITY-235
2019-04-26 00:54:14 +02:00
Derky
fd195fba21 [ticket/security/235] Remove non trailing wildcards from search keywords
Database indexes are only used if wildcards are used at the end.
SECURITY-235
2019-04-25 21:51:04 +02:00
Marc Alexander
58f33921b5 [ticket/16027] Force clearing of cache folder on install for functional
PHPBB3-16027
2019-04-24 21:05:55 +02:00
Marc Alexander
71d66832c0 [ticket/security/233] Fix invalid INSERT INTO
SECURITY-233
2019-04-21 23:17:39 +02:00
Marc Alexander
8e5a0c81ef [ticket/security/233] Make smtp_password and smtp_username dynamic
SECURITY-233
2019-04-21 22:22:35 +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
Marc Alexander
2b0645b7b9 [prep-release-3.2.6] Update changelog for 3.2.6-RC1 2019-04-20 23:07:54 +02:00
Marc Alexander
3b2119e535 [prep-release-3.2.6] Add migration for 3.2.6-RC1 2019-04-20 23:06:07 +02:00
Marc Alexander
c3f7d1bd19 [prep-release-3.2.6] Update version numbers for 3.2.6 release process 2019-04-20 22:59:46 +02:00
Marc Alexander
f9c165d2c1 [prep-release-3.2.6] Update version numbers for 3.2.6-RC1 2019-04-20 22:58:53 +02:00
Marc Alexander
ff72df5218 Merge pull request #5570 from dark-1/ticket/16020
[ticket/16020] Fix some mistake from PHPBB3-15827
2019-04-20 22:54:48 +02:00
Marc Alexander
4b382e93f0 Merge pull request #5567 from marc1706/ticket/16018
[ticket/16018] Update composer to 1.8.5, symfony & dependencies to latest
2019-04-20 22:43:45 +02:00
Dark❶
034f1c2355 [ticket/16020] Fix some mistake from PHPBB3-15827
PHPBB3-16020
2019-04-19 12:23:32 +05:30
Marc Alexander
f905b40ce8 Merge pull request #5559 from mrgoldy/ticket/16007
[ticket/16007] Show ban message for OAuth login
2019-04-17 20:45:19 +02:00
Marc Alexander
10ed7c569e [ticket/16018] Update composer to 1.8.5, symfony & dependencies to latest
PHPBB3-16018
2019-04-17 09:31:39 +02:00
Marc Alexander
c8ff4b4109 Merge pull request #5513 from mrgoldy/ticket/15942
[ticket/15942] Allow array in confirm_box title
2019-04-17 09:26:11 +02:00
Marc Alexander
dc5a167c42 [ticket/security/231] Disable remote avatar functionality & add warning
SECURITY-231
2019-04-17 08:54:51 +02:00
Marc Alexander
0e38bebaa5 [ticket/15942] Add language to compatibility globals & use in confirm_box
PHPBB3-15942
2019-04-17 08:22:44 +02:00
mrgoldy
a16ebf04d3 [ticket/15942] Past tense
PHPBB3-15942
2019-04-16 10:38:26 +02:00
mrgoldy
2131adac5c [ticket/15942] Update DocBlock
PHPBB3-15942
2019-04-16 10:15:01 +02:00
Marc Alexander
f1c2e26f0a [ticket/security/234] Add test for URL validation
SECURITY-234
2019-04-14 14:11:36 +02:00
Marc Alexander
84ea5d7148 [ticket/security/234] Add URL validation for input fields
SECURITY-234
2019-04-14 14:07:22 +02:00
Marc Alexander
507efee633 Merge pull request #5534 from battye/ticket/15917
[ticket/15917] Unapproved topics message for forums with no other posts
2019-04-13 12:38:44 +02:00
Marc Alexander
f0ffb25a24 Merge pull request #5484 from rxu/ticket/15915
[ticket/15915] Add template events to posting_attach_body.html
2019-04-12 22:04:40 +02:00
Marc Alexander
7a93730aab Merge pull request #5561 from marc1706/ticket/16010
[ticket/16010] Enforce alphabetical order for events in events.md
2019-04-12 20:46:41 +02:00
Marc Alexander
728b5d2b44 [ticket/16010] Fix typo in event descriptions
PHPBB3-16010
2019-04-11 22:04:15 +02:00
Marc Alexander
832c19314a [ticket/16010] Fix typos in event descriptions
PHPBB3-16010
2019-04-11 22:01:37 +02:00
Marc Alexander
c3ecaa35cd [ticket/16010] Enforce alphabetical order for events in events.md
PHPBB3-16010
2019-04-11 22:01:36 +02:00
battye
d3564a4a07 [ticket/15917] Remove br tags
PHPBB3-15917
2019-04-07 14:30:26 +00:00
Marc Alexander
cc7c1c8447 Merge pull request #5516 from toxyy/ticket/15944
[ticket/15944] Add core.posting_modify_quote_attributes
2019-04-07 11:45:55 +02:00
Marc Alexander
f51ef14e44 Merge pull request #5518 from 3D-I/ticket/15948
[ticket/15948] Add core.mcp_change_topic_type_after/before
2019-04-07 11:41:48 +02:00
Marc Alexander
29abad3dd4 Merge pull request #5519 from AlfredoRamos/ticket/15949
[ticket/15949] Add ucp_profile_signature_posting_editor_options_prepend
2019-04-07 11:13:44 +02:00
Marc Alexander
1bae0513a8 Merge pull request #5538 from 3D-I/ticket/15972
[ticket/15972] Add core.markread_after
2019-04-07 11:05:42 +02:00
Marc Alexander
2728921d6c Merge pull request #5552 from kasimi/ticket/15995
[ticket/15995] Add core.memberlist_modify_sort_pagination_params
2019-04-07 11:01:33 +02:00
Marc Alexander
3f60759a49 Merge pull request #5554 from 3D-I/ticket/16001
[ticket/16001] Append data to the OAuth's redirect URL
2019-04-07 10:58:33 +02:00
Marc Alexander
21791971aa Merge pull request #5501 from marc1706/ticket/15928
[ticket/15928] Remove support for downloading backups
2019-04-07 10:45:08 +02:00
Marc Alexander
6f573f710d Merge pull request #5556 from 3D-I/ticket/16004
[ticket/16004] Add check-in for Emojis in Username
2019-04-07 10:35:33 +02:00
Marc Alexander
be86694305 Merge pull request #5558 from mrgoldy/ticket/16006
[ticket/16006] Create unique ID's for OAuth (un)linking
2019-04-07 10:28:52 +02:00
Marc Alexander
b693798a96 Merge pull request #5560 from 3D-I/ticket/16009
[ticket/16009] Display OAuth login's buttons in a row
2019-04-07 10:23:43 +02:00
Marc Alexander
72f748f11f Merge pull request #5537 from senky/ticket/15970
[ticket/15970] Add core.message_admin_form_submit_before
2019-04-07 10:11:35 +02:00
3D-I
202fa648eb [ticket/16009] Display OAuth login's buttons in a row
PHPBB3-16009
2019-04-03 00:39:50 +02:00
mrgoldy
562601fd9b [ticket/16007] Correct check_ban_test to boolean
PHPBB3-16007
2019-04-02 18:01:59 +02:00
mrgoldy
fc62538733 [ticket/16007] No strict comparison against "false"
PHPBB3-16007
2019-04-02 17:25:00 +02:00
mrgoldy
68434e6dbc [ticket/16007] Show ban message for OAuth login
PHPBB3-16007
2019-04-02 15:12:52 +02:00
mrgoldy
af994e7a39 [ticket/16006] Create unique ID's for OAuth (un)linking
PHPBB3-16006
2019-04-02 10:59:36 +02:00
3D-I
7160c67b2c [ticket/16004] Add tests/functions/validate_username_test.php
PHPBB3-16004
2019-04-01 23:14:09 +02:00
Marc Alexander
83774be7a7 [ticket/15970] Add empty line before event docblock
PHPBB3-15970
2019-04-01 20:28:53 +02:00
Marc Alexander
433803287a Merge pull request #5541 from senky/ticket/15978
[ticket/15978] Add core.index_mark_notification_after
2019-03-31 11:45:18 +02:00
Marc Alexander
b798ab6f42 Merge pull request #5524 from hanakin/ticket/15953
[ticket/15953] add reported pm message borders
2019-03-31 11:09:07 +02:00
Marc Alexander
d40caeebca Merge pull request #5460 from 3D-I/ticket/15889
[ticket/15889] Add core.memberlist_modify_memberrow_sql
2019-03-31 11:05:26 +02:00
Marc Alexander
b707bdc4f1 [ticket/15928] Adjust ACP backup explanation
PHPBB3-15928
2019-03-31 11:02:37 +02:00
rxu
13ddfa5e52 [ticket/15915] Fix events order in events.md. Use Twig syntax for all events.
PHPBB3-15915
2019-03-31 12:46:46 +07:00
rxu
f07ce4f7b5 [ticket/15915] Add template events to posting_attach_body.html
PHPBB3-15915
2019-03-31 12:46:45 +07:00
3D-I
b890448882 [ticket/16004] Amend the whole docblock
PHPBB3-16004
2019-03-31 07:35:19 +02:00
3D-I
dc610b5508 [ticket/16004] Add a line of comment in the docblock
PHPBB3-16004
2019-03-31 07:26:14 +02:00
3D-I
5bd2c067c5 [ticket/16004] Move the check-in to a more appropriated place
PHPBB3-16004
2019-03-31 07:21:44 +02:00
3D-I
dc80ffdb40 [ticket/16004] Add check-in for Emojis in Username
PHPBB3-16004
2019-03-31 07:08:26 +02:00
Marc Alexander
f9c251c7af Merge pull request #5553 from marc1706/ticket/15997
[ticket/15997] Use higher than default timeout for webdriver connections
2019-03-30 17:59:12 +01:00
Marc Alexander
765739c2a9 Merge pull request #5551 from marc1706/ticket/15996
[ticket/15996] Rename dataProvider to not start with test_
2019-03-30 17:58:11 +01:00
Marc Alexander
3f498c9e69 Merge pull request #5464 from 3D-I/ticket/15891
[ticket/15891] Add core.memberlist_modify_view_profile_template_vars
2019-03-30 16:54:44 +01:00
Marc Alexander
0a3698d08d Merge pull request #5536 from dhruveshk/ticket/15957
[ticket/15957] Disabling both choice
2019-03-30 16:47:05 +01:00
Marc Alexander
f0ccf7d93e [ticket/15957] Remove extra whitespace character
PHPBB3-15957
2019-03-30 16:43:51 +01:00
dhruveshk
e2356f86e8 [ticket/15957] Disable both choice
Disable both choice when jabber is disabled in general settings

PHPBB3-15957
2019-03-30 16:43:48 +01:00
dhruveshk
d431e1306c [ticket/15957] Disabling both choice
Disable both choice input when jabber is disabled in general settings

PHPBB3-15957
2019-03-30 16:43:38 +01:00
3D-I
a14a666e86 [ticket/15889] Change mode description in doc-block
PHPBB3-15889

[ticket/15889] Change mode description in doc-block

PHPBB3-15889

[ticket/15889] Amend doc-block

PHPBB3-15889

[ticket/15889] Amend doc-block

PHPBB3-15889

[ticket/15889] Change mode description in doc-block

PHPBB3-15889
2019-03-30 05:03:18 +01:00
3D-I
ca7d63d4d7 [ticket/16001] Append data to the OAuth's redirect URL
PHPBB3-16001
2019-03-25 15:39:35 +01:00
3Di
6921565efe Merge branch '3.2.x' into ticket/15948 2019-03-23 05:09:17 +01:00
Marc Alexander
220d388cac [ticket/15997] Use higher than default timeout for webdriver connections
PHPBB3-15997
2019-03-19 21:20:38 +01:00
Marc Alexander
0d166e87b8 [ticket/15996] Rename dataProvider to not start with test_
PHPBB3-15996
2019-03-19 21:13:27 +01:00
kasimi
469bf9227e [ticket/15995] Add core.memberlist_modify_sort_pagination_params
PHPBB3-15995
2019-03-18 16:47:24 +01:00
Marc Alexander
0d04f53f37 Merge pull request #5549 from senky/ticket/15992
[ticket/15992] Fix breadcrumb structured data
2019-03-16 13:56:51 +01:00
Marc Alexander
761b87659d Merge pull request #5520 from 3D-I/ticket/15950
[ticket/15950] Add SQL transactions to mcp_main.php
2019-03-16 13:24:00 +01:00
Jakub Senko
1849ce233b [ticket/15992] Fix breadcrumb structured data
Based on: https://developers.google.com/search/docs/data-types/breadcrumb

PHPBB3-15992
2019-03-15 10:43:59 +01:00
Derky
56060caa4c [ticket/security/235] Apply wildcard char count patch
SECURITY-235
2019-03-14 21:46:02 +01:00
Marc Alexander
2bbf72e158 Merge pull request #5463 from rubencm/ticket/15869
[ticket/15869] Allow multibyte characters in hostname during installation
2019-03-14 21:37:49 +01:00
Marc Alexander
df93420bcd Merge pull request #5544 from 3D-I/ticket/15986
[ticket/15986] Add missing language key for posting.php
2019-03-14 21:32:27 +01:00
Marc Alexander
9e7ad86398 Merge pull request #5509 from mrgoldy/ticket/15939
[ticket/15939] Fix Pagination docblocks
2019-03-13 21:21:39 +01:00
Marc Alexander
66f9c09ba5 Merge pull request #5512 from jasonmarlin/ticket/15941
[ticket/15941] Replace MAX to speed up query in update_post_information
2019-03-13 21:10:06 +01:00
Marc Alexander
1c5a4c1213 Merge pull request #5533 from rubencm/ticket/15965
[ticket/15965] Fix hardcoded directory [3.2.x only]
2019-03-13 20:49:39 +01:00
Marc Alexander
2975566650 Merge pull request #5539 from 3D-I/ticket/15975
[ticket/15975] Remove user notification data upon user deletion
2019-03-10 16:47:15 +01:00
3D-I
43b597e88a [ticket/15986] Add missing language key for posting.php
PHPBB3-15986
2019-03-07 21:05:08 +01:00
hanakin
90b4ebab90 [ticket/15953] add reported pm borders
PHPBB3-15953
2019-03-04 20:56:35 -10:00
Jakub Senko
8c29ef3188 [ticket/15970] Add core.message_admin_form_submit_before
PHPBB3-15970
2019-02-27 10:32:11 +01:00
3D-I
8e8fa203b9 [ticket/15972] Let the event be triggered
Removes old coding which is there just to save a few iterations.

PHPBB3-15972
2019-02-26 23:56:28 +01:00
Jakub Senko
44fb54b9b7 [ticket/15978] Add core.index_mark_notification_after
PHPBB3-15978
2019-02-25 14:19:08 +01:00
Marc Alexander
f2e39f7edd Merge pull request #5458 from 3D-I/ticket/15884
[ticket/15884] Add memberlist_body_* events
2019-02-23 16:27:02 +01:00
3D-I
e315ea90b8 [ticket/15975] Remove user notification data upon user deletion
PHPBB3-15975
2019-02-23 02:02:51 +01:00
3D-I
2cd574321f [ticket/15972] Add core.markread_after
PHPBB3-15972
2019-02-20 19:57:56 +01:00
battye
59a84a71be [ticket/15917] Special unapproved topics message
For forums that have no approved posts but also have
topics awaiting approval, to avoid the inconsistency
of saying 'no posts' alongside a positive post count.

PHPBB3-15917
2019-02-13 06:57:29 +00:00
rubencm
96491a70e8 [ticket/15965] Fix hardcoded directory
PHPBB3-15965
2019-02-12 21:19:47 +00:00
Marc Alexander
33afd3f350 Merge pull request #5487 from 3D-I/ticket/15918
[ticket/15918] Fix addslashes in mcp_ban.html
2019-02-11 08:03:14 +01:00
Marc Alexander
deebd282a7 Merge pull request #5525 from kasimi/ticket/15954
[ticket/15954] Add safeguards to include() calls
2019-02-11 08:01:17 +01:00
Marc Alexander
27b0719174 Merge pull request #5529 from 3D-I/ticket/15960
[ticket/15960] Add SQL transactions to functions_admin.php
2019-02-11 07:58:46 +01:00
Marc Alexander
ab16595323 Merge pull request #5530 from marc1706/ticket/15959
[ticket/15959] Fix invalid CNAME record
2019-02-11 07:51:14 +01:00
AJ Quick
43d8432809 [ticket/15959] Fix invalid CNAME record
PHPBB3-15959
2019-02-03 21:23:14 +01:00
AJ Quick
1fba679c68 [ticket/15959] Fix invalid CNAME record
PHPBB3-15959
2019-02-03 21:22:55 +01:00
3D-I
271db031ad [ticket/15960] Add SQL transactions to functions_admin.php
PHPBB3-15960
2019-02-01 23:24:41 +01:00
kasimi
b4672f2665 [ticket/15954] Fixed including mcp_front.php
PHPBB3-15954
2019-01-30 09:48:54 +01:00
kasimi
75007697ae [ticket/15954] Add safeguards to include() calls
PHPBB3-15954
2019-01-26 22:29:54 +01:00
3D-I
ca4a98a2de [ticket/15950] Add SQL transactions to mcp_main.php
PHPBB3-15950

And simultaneously remove a duplicated UPDATE query.
2019-01-22 16:12:22 +01:00
Alfredo Ramos
7fc8b55f8c [ticket/15949] Add ucp_profile_signature_posting_editor_options_prepend
It adds a template event in the signature posting editor to add custom
options to be consistent with the default posting editor.

PHPBB3-15949
2019-01-21 12:25:41 -06:00
3D-I
6c1664f6d3 [ticket/15948] Add core.mcp_change_topic_type_after/before
PHPBB3-15948
2019-01-21 18:18:52 +01:00
3D-I
357e5a567d [ticket/15948] Add core.mcp_change_topic_type_after/before
PHPBB3-15948
2019-01-21 17:39:44 +01:00
Marc Alexander
713c996a08 Merge pull request #5510 from mrgoldy/ticket/15931
[ticket/15931] Fix PM report emails
2019-01-20 15:43:21 +01:00
Marc Alexander
2af8713a48 Merge pull request #5469 from senky/ticket/15899
[ticket/15899] Add core.modify_attachment_sql_ary_on_* events
2019-01-20 15:38:13 +01:00
Alec
36083872e0 [ticket/15944] Add core.posting_modify_quote_attributes
Allow modification of the quote attributes of the current post being quoted
Any information in there can be changed without affecting the rest of the page
New attributes can also be added if an extension needed to as well

PHPBB3-15944
2019-01-18 22:14:51 -05:00
jasonmarlin
c43ad073e4 [ticket/15941] Small change to induce rebuild
PHPBB3-15941
2019-01-18 08:38:59 -05:00
jasonmarlin
a0f1ec852a [ticket/15941] Replace MAX SQL in functions_posting.php
Replace MAX SQL function with faster query using order by and limit.
The ajacent query could also be optimized to eliminate the usage of MAX.
Note that adding a compound key as suggested by EXPLAIN SQL yields an
improvement, but not nearly as fast as ORDER + LIMIT.

PHPBB3-15941
2019-01-17 20:27:10 -05:00
mrgoldy
a925605b88 [ticket/15942] Optimize count
PHPBB3-15942
2019-01-15 20:58:54 +01:00
mrgoldy
3f4b7059cb [ticket/15942] Allow array in confirm_box title
PHPBB3-15942
2019-01-15 20:50:37 +01:00
jasonmarlin
cffdc8efff [ticket/15941] Replace MAX to speed up query in update_post_information
Replace MAX SQL function with faster query using order by and limit.
The ajacent query could also be optimized to eliminate the usage of MAX.
Note that adding a compound key as suggested by EXPLAIN SQL yields an
improvement, but not nearly as fast as ORDER + LIMIT.

PHPBB3-15941
2019-01-15 11:31:38 -05:00
mrgoldy
e8bbbbd6fa [ticket/15931] Fix PM report emails
PHPBB3-15931
2019-01-14 14:52:06 +01:00
mrgoldy
8d8dbb2129 [ticket/15939] Pagination docblocks
PHPBB3-15939
2019-01-14 12:50:07 +01:00
Marc Alexander
5e302c7e15 Merge pull request #5508 from marc1706/ticket/15935
[ticket/15935] Don't install APCu if it's already installed
2019-01-13 14:31:17 +01:00
Alec
ec3bab231d [ticket/15935] Don't install APCu if it's already installed
Travis fails when the APCu install fails due to it already being installed
A check is added here to make sure that it does nothing in that case

PHPBB3-15935
2019-01-13 12:06:59 +01:00
Marc Alexander
673433dadb Merge pull request #5498 from 3D-I/ticket/15926
[ticket/15926] Deny 3.2.x installation if PHP >= 7.3-dev
2019-01-06 20:58:52 +01:00
Marc Alexander
0af07d1425 [ticket/15928] Remove support for downloading backups
PHPBB3-15928
2019-01-06 16:52:47 +01:00
3D-I
89f586e99e [ticket/15889] Use array version of sql_from tables in sql array
PHPBB3-15889
2019-01-06 04:25:53 +01:00
Marc Alexander
eead94c8a6 [ticket/15889] Use array version of sql_from tables in sql array
PHPBB3-15889
2019-01-06 04:06:16 +01:00
3D-I
a0efae7734 [ticket/15926] Deny 3.2.x installation if PHP >= 7.3-dev
PHPBB3-15926
2019-01-06 00:10:13 +01:00
3D-I
be0696a954 [ticket/15926] Update docs/INSTALL.html
PHPBB3-15926
2019-01-05 18:57:23 +01:00
3D-I
8fa7e18e2b [ticket/15926] Deny 3.2.x installation if PHP >= 7.3-dev
PHPBB3-15926
2019-01-05 18:36:54 +01:00
Marc Alexander
537ff0c567 Merge pull request #5457 from battye/ticket/15883
[ticket/15883] New error message for when users try adding invalid usernames to a group
2019-01-05 16:12:29 +01:00
battye
08968bdb60 [ticket/15883] Doc block change
PHPBB3-15883
2019-01-05 08:19:21 +00:00
3D-I
5949f912ba [ticket/15926] Deny 3.2.x installation if PHP >= 7.3-dev
PHPBB3-15926
2019-01-05 01:32:43 +01:00
battye
3f19d32f76 [ticket/15883] Review changes
PHPBB3-15883
2019-01-04 15:49:15 +00:00
Derky
409bfafbf0 Merge pull request #5485 from marc1706/ticket/15919
[ticket/15919] Don't run lint test against node_modules
2019-01-02 21:07:41 +01:00
Derky
186259cbbc Merge pull request #5493 from marc1706/ticket/15924
[ticket/15924] Switch to trusty build environment
2019-01-01 23:10:20 +01:00
Marc Alexander
186115c65f [ticket/15924] Switch back to installing mariadb from 3rd party repo
PHPBB3-15924
2019-01-01 22:23:16 +01:00
Marc Alexander
a23a7602b7 [ticket/15924] Enable APCu extension
PHPBB3-15924
2019-01-01 10:56:26 +01:00
Marc Alexander
bdf9af0abb [ticket/15924] Install apc via pecl and remove nginx config check
PHPBB3-15924
2018-12-31 23:26:53 +01:00
Marc Alexander
444e5e6498 [ticket/15924] Switch to trusty build environment
PHPBB3-15924
2018-12-31 22:46:59 +01:00
chita
a578ce0119 Merge pull request #5488 from marc1706/ticket/15921
[ticket/15921] Update textformattter to 1.3.2
2018-12-29 15:56:44 +01:00
Marc Alexander
86c773fbf9 Merge pull request #5462 from 3D-I/ticket/15890
[ticket/15890] Add core.memberlist_modify_viewprofile_sql
2018-12-29 12:25:52 +01:00
JoshyPHP
e9310c928e [ticket/15921] Use backward compatible template for emojis
PHPBB3-15921
2018-12-29 11:23:47 +01:00
Marc Alexander
3a7d17414d Merge pull request #5468 from senky/ticket/15898
[ticket/15898] Add core.ucp_pm_compose_template
2018-12-27 21:31:51 +01:00
Marc Alexander
a4e37a8482 Merge pull request #5482 from GanstaZ/ticket/15914
[ticket/15914] Add core.modify_memberlist_viewprofile_group* events
2018-12-27 10:47:52 +01:00
Marc Alexander
c51859c0bd [ticket/15921] Update tests for twemoji
PHPBB3-15921
2018-12-27 10:36:41 +01:00
Jakub Senko
572545a430 [ticket/15899] Add core.modify_attachment_sql_ary_on_* events
PHPBB3-15899
2018-12-27 10:27:10 +01:00
Marc Alexander
220490e4db Merge pull request #5359 from Elsensee/ticket/15509
[ticket/15509] Don't show disabled board when in install
2018-12-27 09:59:42 +01:00
Marc Alexander
4bf485395e [ticket/15921] Use twemoji
PHPBB3-15921
2018-12-26 23:51:15 +01:00
Marc Alexander
ce90a215ba [ticket/15921] Update inconsistencies in composer.lock
PHPBB3-15921
2018-12-26 23:09:05 +01:00
JoshyPHP
31c0466815 [ticket/15921] Updated dependencies to latest textformatter
PHPBB3-15921
2018-12-26 23:06:18 +01:00
3D-I
4fe2ec156c [ticket/15884] Alphabetical order - last bit
PHPBB3-15884
2018-12-26 22:25:12 +01:00
3D-I
d0541a6440 [ticket/15884] Alphabetical order
PHPBB3-15884
2018-12-26 22:20:19 +01:00
Marc Alexander
95424f1b98 Merge pull request #5474 from mrgoldy/ticket/15901
[ticket/15901] Add mcp_post_ template events
2018-12-26 21:51:29 +01:00
Marc Alexander
64b66a51b6 Merge pull request #5456 from nunoplopes/ticket/15876
[ticket/15876] MySQL 5.7+ support for Q&A captcha plugin
2018-12-24 15:49:13 +01:00
Marc Alexander
58856c06b0 Merge pull request #5481 from kasimi/ticket/15910-3.2.x
[ticket/15910] Pass object arguments by reference implicitly
2018-12-24 15:32:50 +01:00
3D-I
440fdfdffc [ticket/15918] Apply the Twig escape filter to not add-slashed contents
PHPBB3-15918
2018-12-24 12:00:36 +01:00
3D-I
8f90b79457 [ticket/15918] Remove redundant escape JS
In mcp_ban.html and coherently use twig syntax

PHPBB3-15918
2018-12-24 09:46:41 +01:00
3Di
871875d9aa Merge pull request #1 from phpbb/3.2.x
3.2.x
2018-12-24 09:42:16 +01:00
Marc Alexander
ca98cd413a Merge pull request #5479 from kasimi/ticket/15904
[ticket/15904] Fix counting empty template blocks
2018-12-23 17:14:14 +01:00
Marc Alexander
14f9917db6 [ticket/15919] Don't run lint test against node_modules
Also, make sure to correctly handle opendir returning false instead of
the stream handle.

PHPBB3-15919
2018-12-23 14:35:58 +01:00
GanstaZ
552bda6266 [ticket/15914] Change since
PHPBB3-15914
2018-12-22 22:33:35 +02:00
GanstaZ
c6f613bae5 Merge branch '3.2.x' into ticket/15914 2018-12-22 22:26:54 +02:00
Marc Alexander
70a56c208f Merge branch 'prep-release-3.2.5' into 3.2.x 2018-12-22 17:31:30 +01:00
Marc Alexander
b089116965 [prep-release-3.2.5] Add 3.2.5 migration 2018-12-19 20:16:31 +01:00
Marc Alexander
0cb00c9f99 [prep-release-3.2.5] Update changelog for 3.2.5 2018-12-19 20:16:07 +01:00
Marc Alexander
52f559cd4b [prep-release-3.2.5] Update version numbers to 3.2.5 2018-12-19 20:16:01 +01:00
Marc Alexander
85ecd2c7be Merge pull request #43 from phpbb/security/229
[security/229] Update jQuery to 1.12.4
2018-12-19 19:59:19 +01:00
Marc Alexander
2a72b9b3ec Merge pull request #5483 from marc1706/ticket/15911
[ticket/15911] Prevent errors when trying to delete from non-existent tables
2018-12-19 19:57:57 +01:00
Marc Alexander
68489b2c13 [ticket/15911] Add missing braces
PHPBB3-15911
2018-12-18 21:28:15 +01:00
Marc Alexander
304750a88b [ticket/15911] Resolve warnings when updating from 3.0.0 to latest
PHPBB3-15911
2018-12-18 21:07:41 +01:00
Marc Alexander
a2407ce978 [ticket/15911] Prevent errors when trying to delete from non-existent tables
This can happen when migrating to the latest version from versions before
3.0.14.

PHPBB3-15911
2018-12-18 21:06:51 +01:00
Marc Alexander
5a21f7eb97 Merge pull request #5470 from marc1706/ticket/15888
[ticket/15888] Changing ACP link from 3.1 to 3.2 docs
2018-12-16 15:46:32 +01:00
Marc Alexander
358ddc95e8 Merge pull request #5466 from marc1706/ticket/15893
[ticket/15893] Pass needed language class directly to format quote
2018-12-16 15:46:08 +01:00
GanstaZ
349ab42fdc [ticket/15914] fix sql line
PHPBB3-15914
2018-12-15 19:22:38 +02:00
GanstaZ
cc49d8f325 [ticket/15914] Add core.modify_memberlist_viewprofile_group* events
PHPBB3-15914
2018-12-15 18:37:31 +02:00
Marc Alexander
37b33e6b67 [security/229] Adjust effectively_installed on jquery update migration
SECURITY-229
2018-12-13 21:22:58 +01:00
kasimi
83f4074116 [ticket/15910] Pass object arguments by reference implicitly
PHPBB3-15910
2018-12-12 12:41:56 +01:00
Marc Alexander
179c6067be [security/229] Add ajax prefilter for crossdomain requests
SECURITY-229
2018-12-11 21:28:29 +01:00
Marc Alexander
97c5861d59 [security/229] Update jQuery CDN link
SECURITY-229
2018-12-09 15:43:01 +01:00
Marc Alexander
aebeb11d53 [SECURITY/229] Update jQuery to 1.12.4
SECURITY-229
2018-12-09 15:30:17 +01:00
kasimi
3bce8bce10 [ticket/15904] Fix counting empty template blocks
PHPBB3-15904
2018-12-08 22:06:19 +01:00
mrgoldy
fe382708f5 [ticket/15901] Alphabetical order
PHPBB3-15901
2018-12-04 03:22:20 +01:00
mrgoldy
4554376ac8 [ticket/15901] Add missing semi-colon
PHPBB3-15901
2018-12-04 02:31:14 +01:00
mrgoldy
337d5db292 [ticket/15901] Alphabetical order
After has to be before before. Mind twist.

PHPBB3-15901
2018-12-04 01:56:34 +01:00
mrgoldy
fe72d87460 [ticket/15901] Add mcp_post_ template events
PHPBB3-15901
2018-12-04 01:48:09 +01:00
Jim Mossing Holsteyn
4fd824953d [ticket/15888] Changing ACP link from 3.1 to 3.2 docs
PHPBB3-15888
2018-12-03 20:52:08 +01:00
Jakub Senko
75b993c6a3 [ticket/15898] Add core.ucp_pm_compose_template
PHPBB3-15898
2018-12-03 14:02:38 +01:00
Marc Alexander
087bf6fd35 [ticket/15893] Pass needed language class directly to format quote
PHPBB3-15893
2018-12-02 19:50:09 +01:00
Marc Alexander
fc27dc02b4 [ticket/15893] Add test for covering phpbb_format_quote
PHPBB3-15893
2018-12-02 19:50:02 +01:00
rubencm
91847ed1fd [ticket/15869] Allow multibyte characters in more variables
PHPBB3-15869
2018-12-02 10:26:19 +00:00
3D-I
e6ac4daf64 [ticket/15891] Add core.memberlist_modify_view_profile_template_vars
PHPBB3-15891
2018-12-02 03:54:24 +01:00
rubencm
47acbdd138 [ticket/15869] Allow multibyte characters in hostname during installation
PHPBB3-15869
2018-12-01 20:51:59 +00:00
Marc Alexander
73fd2f3573 [3.2.x] Update versions to 3.2.6-dev 2018-12-01 19:20:55 +01:00
Marc Alexander
0a14d7aff3 Merge branch 'prep-release-3.2.5' into 3.2.x 2018-12-01 19:15:31 +01:00
3D-I
8b4c77784e [ticket/15890] Add core.memberlist_modify_viewprofile_sql
PHPBB3-15890
2018-12-01 04:36:16 +01:00
3D-I
e7a16f1eda [ticket/15884] Add more events
update events.md (version)
update events.md (new events)

PHPBB3-15884
2018-12-01 01:52:34 +01:00
3D-I
31b8fdf964 [ticket/15889] Restore comment line
PHPBB3-15889
2018-12-01 00:07:23 +01:00
3D-I
afcc713d39 [ticket/15889] Add core.memberlist_modify_memberrow_sql
fix select all on users table

PHPBB3-15889
2018-11-30 09:12:10 +01:00
3D-I
73b709d0ca [ticket/15889] Add core.memberlist_modify_memberrow_sql
That's it.

PHPBB3-15889
2018-11-30 08:41:49 +01:00
3D-I
ec140a558b [ticket/15889] Add core.memberlist_modify_memberrow_sql
PHPBB3-15889
2018-11-30 06:42:34 +01:00
3D-I
c5082250ea [ticket/15889] Add core.memberlist_modify_memberrow_sql
PHPBB3-15889
2018-11-30 04:45:15 +01:00
3D-I
89b6fb1168 [ticket/15889] Add core.memberlist_modify_memberrow_sql
PHPBB3-15889
2018-11-30 04:25:14 +01:00
3D-I
3ed8cffad2 [ticket/15889] Add core.memberlist_modify_memberrow_sql
PHPBB3-15889
2018-11-30 04:03:22 +01:00
Marc Alexander
b7243fad62 [prep-release-3.2.5] Update changelog for 3.2.5-RC1 2018-11-29 21:53:09 +01:00
Marc Alexander
8a1d148fa8 [prep-release-3.2.5] Add 3.2.5-RC1 migration 2018-11-29 21:47:47 +01:00
Marc Alexander
fab57f0d16 [prep-release-3.2.5] Update version numbers for 3.2.5 2018-11-29 21:46:26 +01:00
Marc Alexander
27abc18662 [prep-release-3.2.5] Update version numbers for 3.2.5-RC1 2018-11-29 21:45:51 +01:00
Marc Alexander
9e6c2251df Merge pull request #5455 from toxyy/ticket-15879
[ticket/15879] Add core.posting_modify_default_variables
2018-11-29 21:12:27 +01:00
Marc Alexander
15ba5f700d Merge pull request #5451 from vinny/ticket/15867
[ticket/15867] Add class for message field in the contact form
2018-11-29 18:59:17 +01:00
battye
565f692541 [ticket/15883] Use the new language object
Using the new ->lang() format. Made the username
comparison case insensitive. Also fixed a bug where the return to
previous page link in the UCP was going back to the list of
groups rather than the specific manage group page when an error
occurred.

PHPBB3-15883
2018-11-29 14:37:14 +00:00
3D-I
bf07331a0e [ticket/15884] Add memberlist_body_* events
update description (typo)

PHPBB3-15884
2018-11-29 02:41:45 +01:00
3D-I
12073855dd [ticket/15884] Add memberlist_body_* events
update events.md

PHPBB3-15884
2018-11-29 01:57:00 +01:00
3D-I
8ed7ddfbb2 [ticket/15884] Add memberlist_body_* events
update events name
update events.md

PHPBB3-15884
2018-11-29 01:47:02 +01:00
3D-I
1345642c49 [ticket/15884] Add memberlist_body_* events
update events name
update events.md

PHPBB3-15884
2018-11-29 01:45:36 +01:00
3D-I
ad0c85293b [ticket/15884] Add memberlist_body_* events
add new events for group
update events name
update events.md

PHPBB3-15884
2018-11-29 01:20:13 +01:00
Marc Alexander
f8e1c66e81 Merge pull request #5449 from senky/ticket/15878
[ticket/15878] Add attachments to ucp_pm_view_message
2018-11-28 23:25:56 +01:00
Marc Alexander
c89f4500f0 Merge pull request #5443 from toxyy/ticket/15872
[ticket/15872] Add show_user_activity to display_user_activity_modify_actives
2018-11-28 23:21:46 +01:00
Marc Alexander
7182f5d88f Merge pull request #5427 from dark-1/ticket/15858
[ticket/15858] Unapproved User(s) appearing as Guest in Team Page
2018-11-27 22:03:36 +01:00
3D-I
7a92f6a3b6 [ticket/15884] Add memberlist_body_* events
update events.md

PHPBB3-15884
2018-11-27 06:52:59 +01:00
3D-I
c594f2ecbf [ticket/15884] Add memberlist_body_* events
PHPBB3-15884
2018-11-27 02:26:37 +01:00
Marc Alexander
db7f4d4c95 Merge pull request #5450 from hubaishan/ticket/15665
[ticket/15665] Fix MSSQL crashes if upload dir>2GB
2018-11-26 21:19:42 +01:00
battye
101829b4dc [ticket/15883] Add error for invalid usernames being added to a group
Update the ACP and the UCP so that when bulk adding users to a group,
if invalid usernames are submitted alongside valid usernames then a
message will be displayed to inform the user what the invalid usernames
are.

PHPBB3-15883
2018-11-26 13:08:57 +00:00
Marc Alexander
b8bdccbc44 Merge pull request #5432 from 3D-I/ticket/15859
[ticket/15859] Add core.viewforum_modify_topic_ordering
2018-11-25 21:17:41 +01:00
Marc Alexander
2eb2c69db9 Merge pull request #5454 from rxu/ticket/15881
[ticket/15881] Reset login keys for new password activation
2018-11-25 11:10:22 +01:00
Nuno Lopes
eb1cb07341 [ticket/15876] MySQL 5.7+ support for Q&A captch plugin
PHPBB3-15876
2018-11-24 23:43:41 +00:00
Alec
d5147c2271 [ticket/15879] Add core.posting_modify_default_variables
Allows the modification of default variables put into post_data.
Also allows you to unset variables in post_data to inherit the default ones.

PHPBB3-15879
2018-11-24 12:56:33 -05:00
rxu
79e6636092 [ticket/15881] Reset login keys for account reactivation after password update
PHPBB3-15881
2018-11-24 11:31:32 +07:00
Marc Alexander
5179e4f93f Merge pull request #5433 from marc1706/ticket/15542
[ticket/15542] Always append assets versions to assets
2018-11-20 20:54:50 +01:00
hubaishan
dc96e70d1b [ticket/15665] fix double semicolon
PHPBB3-15665
2018-11-20 15:56:02 +03:00
hubaishan
717d4840e2 [ticket/15665] Fix MSSQL crashes if upload dir>2GB
Add cast_expr_to_bigint() to mssql_base

PHPBB3-15665
2018-11-20 13:38:15 +03:00
Jakub Senko
22b8b45f28 [ticket/15878] Add attachments to ucp_pm_view_message
PHPBB3-15878
2018-11-19 15:35:26 +01:00
Marc Alexander
6c5578a65b Merge pull request #5445 from 3D-I/ticket/15873
[ticket/15873] Add core.mcp_report_template_data
2018-11-18 20:00:07 +01:00
3D-I
bf42eae114 [ticket/15859] Add core.viewforum_modify_topic_ordering
PHPBB3-15859
2018-11-18 19:52:02 +01:00
Marc Alexander
f21a43be2f Merge pull request #5441 from 3D-I/ticket/15870
[ticket/15870] Add core.viewtopic_modify_forum_id
2018-11-18 19:50:19 +01:00
Marc Alexander
3606cce27f Merge pull request #5436 from 3D-I/ticket/15863
[ticket/15863] Add core.viewforum_modify_sort_direction
2018-11-18 19:36:14 +01:00
Marc Alexander
5b3eb2d61c Merge pull request #5442 from rxu/ticket/15871
[ticket/15871] Fix PHP 7.1+ warning in ACP extensions module
2018-11-18 12:24:16 +01:00
3D-I
fcd916cc4f [ticket/15873] Add core.mcp_report_template_data
PHPBB3-15873
2018-11-18 12:22:06 +01:00
3D-I
f3b94b118a [ticket/15870] Add core.viewtopic_modify_forum_id
PHPBB3-15870
2018-11-18 12:19:04 +01:00
3D-I
2e8315353e [ticket/15863] Add core.viewforum_modify_sort_direction
PHPBB3-15863
2018-11-18 12:14:30 +01:00
Marc Alexander
97912d74e2 Merge pull request #5448 from rxu/ticket/15875
[ticket/15875] Fix PHP fatal error on BBCode parsing
2018-11-17 22:18:08 +01:00
rxu
da9da88d11 [ticket/15875] Fix PHP fatal error on BBCode parsing
PHPBB3-15875
2018-11-18 01:33:56 +07:00
rxu
af1e8901e5 [ticket/15871] Add $php_ini to the class properties list
PHPBB3-15871
2018-11-15 21:01:17 +07:00
Alec
a2480f992d [ticket/15872] Add show_user_activity to display_user_activity_modify_actives
Add config option for toggling most active forum & topic in the user profile.

A bool was added to display_user_activity_modify_actives to achieve this.

PHPBB3-15872
2018-11-12 01:54:11 -05:00
3D-I
b8f85325d8 [ticket/15859] Add core.viewforum_modify_topic_ordering
PHPBB3-15859
2018-11-11 21:49:51 +01:00
Vinny
c4741399dd [ticket/15867] Add class for message field in the contact form
PHPBB3-15867
2018-11-11 17:08:20 -03:00
rxu
b03da3a9b2 [ticket/15871] Use php_ini service
PHPBB3-15871
2018-11-11 20:36:49 +07:00
Marc Alexander
7801bac09a Merge branch 'prep-release-3.2.4' into 3.2.x 2018-11-11 12:22:20 +01:00
Marc Alexander
023ec01611 [prep-release-3.2.4] Correctly specify dependencies 2018-11-11 10:14:16 +01:00
Marc Alexander
335b23c679 [prep-release-3.2.4] Remove phpBB 3.0.14 builds 2018-11-11 09:59:25 +01:00
rxu
720477a9da [ticket/15871] Fix PHP 7.1+ warning in ACR extensions module
PHPBB3-15871
2018-11-11 15:24:08 +07:00
Marc Alexander
1581ee9d05 [prep-release-3.2.4] Update changelog for 3.2.4 release 2018-11-10 21:35:29 +01:00
Marc Alexander
f631d6b84d [prep-release-3.2.4] Add migration for 3.2.4 2018-11-10 21:24:14 +01:00
Marc Alexander
36a8e48083 [prep-release-3.2.4] Update version numbers for 3.2.4 release 2018-11-10 21:19:49 +01:00
Marc Alexander
0dfbb60bc3 Merge pull request #42 from phpbb/ticket/security/227
[ticket/security/227] Replace ImageMagick support with thumbnail event
2018-11-10 17:04:00 +01:00
Marc Alexander
65226168ee Merge pull request #5434 from rubencm/ticket/15860
[ticket/15860] Fix format of backup files
2018-11-10 17:01:34 +01:00
Marc Alexander
c0a26e3d57 [ticket/security/227] Remove no longer needed validation tests
SECURITY-227
2018-11-07 22:04:30 +01:00
Derky
3d534a5eb6 [ticket/security/227] Change migration depends_on to 3.2.4-RC1
SECURITY-227
2018-11-04 23:18:38 +01:00
Derky
5c695d709e [ticket/security/227] Change thumbnail_created event version to 3.2.4
SECURITY-227
2018-11-04 23:17:49 +01:00
Derky
e2d26e102d [ticket/security/227] Remove "no thumbnail support" message
SECURITY-227
2018-11-04 23:10:44 +01:00
Ruben Calvo
31703585cb [ticket/15860] Unique_id() return 16 characters again
PHPBB3-15860
2018-10-31 10:41:57 +00:00
Ruben Calvo
fa1fd316fe [ticket/15860] Fix regexp
PHPBB3-15860
2018-10-30 22:56:20 +00:00
Marc Alexander
bab86aac7f [ticket/15860] Limit regexp to expected formats
PHPBB3-15860
2018-10-30 20:49:14 +00:00
Ruben Calvo
1f14f7c327 [ticket/15860] Fix format of backup files
PHPBB3-15860
2018-10-30 11:18:34 +00:00
Marc Alexander
11ae11a156 [ticket/15542] Only add assets version for relative paths
PHPBB3-15542
2018-10-29 22:57:53 +01:00
Marc Alexander
5d4fccd235 [ticket/15542] Always append assets versions to assets
PHPBB3-15542
2018-10-29 16:07:48 +01:00
3D-I
dbb476d813 [ticket/15859] Add core.viewforum_modify_topic_ordering
PHPBB3-15859
2018-10-29 01:02:16 +01:00
Marc Alexander
f4063e475d [3.2.x] Update versions to 3.2.5-dev 2018-10-28 21:55:08 +01:00
Marc Alexander
e64f96bf27 Merge branch 'prep-release-3.2.4' into 3.2.x 2018-10-28 21:52:51 +01:00
Dark❶
9e375f32eb [ticket/15858] Unapproved User(s) appearing as Guest in Team Page
PHPBB3-15858
2018-10-29 00:28:43 +05:30
3Di
379900b4ed Merge pull request #2 from phpbb/3.2.x
3.2.x
2018-10-26 18:33:30 +02:00
Derky
d753351edc [ticket/security/227] Replace ImageMagick support with thumbnail event
SECURITY-227
2018-10-23 23:57:24 +02:00
Oliver Schramm
bc5808ad87 [ticket/15509] Don't show disabled board when in install
PHPBB3-15509
2018-09-15 15:44:56 +02:00
162 changed files with 2424 additions and 1210 deletions

View File

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

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.4-RC1" />
<property name="prevversion" value="3.2.3" />
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0-a1, 3.2.0-a2, 3.2.0-b1, 3.2.0-b2, 3.2.0-RC1, 3.2.0-RC2, 3.2.0, 3.2.1, 3.2.2" />
<property name="newversion" value="3.2.7-RC1" />
<property name="prevversion" value="3.2.6" />
<property name="olderversions" value="3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0-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" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />

Binary file not shown.

View File

@@ -37,12 +37,6 @@
<!-- IF S_ATTACHMENT_SETTINGS -->
<!-- IF not S_THUMBNAIL_SUPPORT -->
<div class="errorbox">
<p>{L_NO_THUMBNAIL_SUPPORT}</p>
</div>
<!-- ENDIF -->
<form id="attachsettings" method="post" action="{U_ACTION}">
<!-- BEGIN options -->
<!-- IF options.S_LEGEND -->

View File

@@ -20,7 +20,6 @@
<p class="submit-buttons">
<input class="button1" type="submit" id="submit" name="submit" value="{L_START_RESTORE}" />&nbsp;
<input class="button2" type="submit" id="delete" name="delete" value="{L_DELETE_BACKUP}" />&nbsp;
<input class="button2" type="submit" id="download" name="download" value="{L_DOWNLOAD_BACKUP}" />
</p>
{S_FORM_TOKEN}
</fieldset>
@@ -72,7 +71,6 @@
<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>
<label><input type="radio" class="radio" name="where" value="download" /> {L_DOWNLOAD}</label>
</dd>
</dl>
<dl>

View File

@@ -33,7 +33,7 @@
<dt><label for="notifymethod">{L_NOTIFY_METHOD}{L_COLON}</label><br /><span>{L_NOTIFY_METHOD_EXPLAIN}</span></dt>
<dd><label><input type="radio" class="radio" name="notifymethod" value="0"<!-- IF NOTIFY_EMAIL --> id="notifymethod" checked="checked"<!-- ENDIF --> /> {L_NOTIFY_METHOD_EMAIL}</label>
<label><input type="radio" class="radio" name="notifymethod" value="1"<!-- IF NOTIFY_IM --> id="notifymethod" checked="checked"<!-- ENDIF --><!-- IF S_JABBER_DISABLED --> disabled="disabled"<!-- ENDIF --> /> {L_NOTIFY_METHOD_IM}</label>
<label><input type="radio" class="radio" name="notifymethod" value="2"<!-- IF NOTIFY_BOTH --> id="notifymethod" checked="checked"<!-- ENDIF --> /> {L_NOTIFY_METHOD_BOTH}</label></dd>
<label><input type="radio" class="radio" name="notifymethod" value="2"<!-- IF NOTIFY_BOTH --> id="notifymethod" checked="checked"<!-- ENDIF --><!-- IF S_JABBER_DISABLED --> disabled="disabled"<!-- ENDIF --> /> {L_NOTIFY_METHOD_BOTH}</label></dd>
</dl>
<dl>
<dt><label for="notifypm">{L_NOTIFY_ON_PM}{L_COLON}</label></dt>

View File

@@ -20,6 +20,13 @@ var phpbbAlertTimer = null;
phpbb.isTouch = (window && typeof window.ontouchstart !== 'undefined');
// Add ajax pre-filter to prevent cross-domain script execution
$.ajaxPrefilter(function(s) {
if (s.crossDomain) {
s.contents.script = false;
}
});
/**
* Display a loading screen
*

File diff suppressed because one or more lines are too long

View File

@@ -33,7 +33,7 @@
"marc1706/fast-image-size": "^1.1",
"paragonie/random_compat": "^1.4",
"patchwork/utf8": "^1.1",
"s9e/text-formatter": "~0.13.0",
"s9e/text-formatter": "^1.3",
"symfony/config": "^2.8",
"symfony/console": "^2.8",
"symfony/debug": "^2.8",

288
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": "c843abc1344cd9df37f63c08a125cad0",
"content-hash": "6daa2f5f7a161377dee1835bd4d5b463",
"packages": [
{
"name": "bantu/ini-get-wrapper",
@@ -568,16 +568,16 @@
},
{
"name": "psr/log",
"version": "1.0.2",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
"url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
"shasum": ""
},
"require": {
@@ -611,20 +611,20 @@
"psr",
"psr-3"
],
"time": "2016-10-10T12:19:37+00:00"
"time": "2018-11-20T15:27:04+00:00"
},
{
"name": "react/promise",
"version": "v2.7.0",
"version": "v2.7.1",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
"reference": "f4edc2581617431aea50430749db55cc3fc031b3"
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/reactphp/promise/zipball/f4edc2581617431aea50430749db55cc3fc031b3",
"reference": "f4edc2581617431aea50430749db55cc3fc031b3",
"url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d",
"shasum": ""
},
"require": {
@@ -657,20 +657,20 @@
"promise",
"promises"
],
"time": "2018-06-13T15:59:06+00:00"
"time": "2019-01-07T21:25:54+00:00"
},
{
"name": "s9e/text-formatter",
"version": "0.13.1",
"version": "1.4.2",
"source": {
"type": "git",
"url": "https://github.com/s9e/TextFormatter.git",
"reference": "804ed8fdfa9fd0c8d99f5a33000d4f7e5ed90c6f"
"reference": "dc7efff70b67b9cee00881ad3bef0a1da076b31e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/s9e/TextFormatter/zipball/804ed8fdfa9fd0c8d99f5a33000d4f7e5ed90c6f",
"reference": "804ed8fdfa9fd0c8d99f5a33000d4f7e5ed90c6f",
"url": "https://api.github.com/repos/s9e/TextFormatter/zipball/dc7efff70b67b9cee00881ad3bef0a1da076b31e",
"reference": "dc7efff70b67b9cee00881ad3bef0a1da076b31e",
"shasum": ""
},
"require": {
@@ -681,8 +681,8 @@
},
"require-dev": {
"matthiasmullie/minify": "*",
"php": ">=5.4.7",
"s9e/regexp-builder": ">=1.3.0"
"php-coveralls/php-coveralls": "*",
"s9e/regexp-builder": "1.*"
},
"suggest": {
"ext-curl": "Improves the performance of the MediaEmbed plugin and some JavaScript minifiers",
@@ -722,20 +722,20 @@
"parser",
"shortcodes"
],
"time": "2017-12-10T00:55:53+00:00"
"time": "2019-03-27T14:19:41+00:00"
},
{
"name": "symfony/config",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "fb3469266daaa67a1e6d42fc78fa6cdc254689f6"
"reference": "7dd5f5040dc04c118d057fb5886563963eb70011"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/fb3469266daaa67a1e6d42fc78fa6cdc254689f6",
"reference": "fb3469266daaa67a1e6d42fc78fa6cdc254689f6",
"url": "https://api.github.com/repos/symfony/config/zipball/7dd5f5040dc04c118d057fb5886563963eb70011",
"reference": "7dd5f5040dc04c118d057fb5886563963eb70011",
"shasum": ""
},
"require": {
@@ -779,20 +779,20 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
"time": "2018-09-08T12:44:02+00:00"
"time": "2018-11-26T09:38:12+00:00"
},
{
"name": "symfony/console",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "aca0dcc0c75496e17e2aa0303bb9c8e6d79ed789"
"reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/aca0dcc0c75496e17e2aa0303bb9c8e6d79ed789",
"reference": "aca0dcc0c75496e17e2aa0303bb9c8e6d79ed789",
"url": "https://api.github.com/repos/symfony/console/zipball/cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12",
"reference": "cbcf4b5e233af15cd2bbd50dee1ccc9b7927dc12",
"shasum": ""
},
"require": {
@@ -840,20 +840,20 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2018-09-30T03:33:07+00:00"
"time": "2018-11-20T15:55:20+00:00"
},
{
"name": "symfony/debug",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "4fd77efcd4a499bf76d4ff46d092c67f3fe9e347"
"reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/4fd77efcd4a499bf76d4ff46d092c67f3fe9e347",
"reference": "4fd77efcd4a499bf76d4ff46d092c67f3fe9e347",
"url": "https://api.github.com/repos/symfony/debug/zipball/74251c8d50dd3be7c4ce0c7b862497cdc641a5d0",
"reference": "74251c8d50dd3be7c4ce0c7b862497cdc641a5d0",
"shasum": ""
},
"require": {
@@ -897,20 +897,20 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2018-09-21T12:46:38+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/dependency-injection",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "84219396d1a79d149a5a9d5f71afaf48dcfde7d0"
"reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/84219396d1a79d149a5a9d5f71afaf48dcfde7d0",
"reference": "84219396d1a79d149a5a9d5f71afaf48dcfde7d0",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a2f40df187f0053bc361bcea3b27ff2b85744d9f",
"reference": "a2f40df187f0053bc361bcea3b27ff2b85744d9f",
"shasum": ""
},
"require": {
@@ -960,20 +960,20 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
"time": "2018-09-08T12:44:02+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/event-dispatcher",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "84ae343f39947aa084426ed1138bb96bf94d1f12"
"reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/84ae343f39947aa084426ed1138bb96bf94d1f12",
"reference": "84ae343f39947aa084426ed1138bb96bf94d1f12",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a77e974a5fecb4398833b0709210e3d5e334ffb0",
"reference": "a77e974a5fecb4398833b0709210e3d5e334ffb0",
"shasum": ""
},
"require": {
@@ -1020,20 +1020,20 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2018-07-26T09:03:18+00:00"
"time": "2018-11-21T14:20:20+00:00"
},
{
"name": "symfony/filesystem",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "91f194c5ec8d2ad5ce417a218ce3c46909e92f4d"
"reference": "7ae46872dad09dffb7fe1e93a0937097339d0080"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/91f194c5ec8d2ad5ce417a218ce3c46909e92f4d",
"reference": "91f194c5ec8d2ad5ce417a218ce3c46909e92f4d",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7ae46872dad09dffb7fe1e93a0937097339d0080",
"reference": "7ae46872dad09dffb7fe1e93a0937097339d0080",
"shasum": ""
},
"require": {
@@ -1070,20 +1070,20 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2018-09-24T08:04:37+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/finder",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e"
"reference": "1444eac52273e345d9b95129bf914639305a9ba4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/5ebb438d1aabe9dba93099dd06e0500f97817a6e",
"reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e",
"url": "https://api.github.com/repos/symfony/finder/zipball/1444eac52273e345d9b95129bf914639305a9ba4",
"reference": "1444eac52273e345d9b95129bf914639305a9ba4",
"shasum": ""
},
"require": {
@@ -1119,20 +1119,20 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2018-09-21T12:46:38+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/http-foundation",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "9fcce5f0b6896a135d192cc9fd5394fd46f74eff"
"reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/9fcce5f0b6896a135d192cc9fd5394fd46f74eff",
"reference": "9fcce5f0b6896a135d192cc9fd5394fd46f74eff",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/d0ab719bedc9fc6748a95b2dcb04137292a27b92",
"reference": "d0ab719bedc9fc6748a95b2dcb04137292a27b92",
"shasum": ""
},
"require": {
@@ -1174,20 +1174,20 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2018-09-23T15:27:53+00:00"
"time": "2018-11-25T11:27:05+00:00"
},
{
"name": "symfony/http-kernel",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "90411d2ad577b883f2fc9de06c86dd564d9ac676"
"reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/90411d2ad577b883f2fc9de06c86dd564d9ac676",
"reference": "90411d2ad577b883f2fc9de06c86dd564d9ac676",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/3df0207d4c973eb9c91b38a608aef4654dc256fa",
"reference": "3df0207d4c973eb9c91b38a608aef4654dc256fa",
"shasum": ""
},
"require": {
@@ -1258,20 +1258,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2018-09-30T03:51:44+00:00"
"time": "2018-12-06T14:45:07+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.9.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "e3d826245268269cd66f8326bd8bc066687b4a19"
"reference": "82ebae02209c21113908c229e9883c419720738a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19",
"reference": "e3d826245268269cd66f8326bd8bc066687b4a19",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"shasum": ""
},
"require": {
@@ -1283,7 +1283,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
"dev-master": "1.11-dev"
}
},
"autoload": {
@@ -1305,7 +1305,7 @@
},
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
"email": "backendtea@gmail.com"
}
],
"description": "Symfony polyfill for ctype functions",
@@ -1316,20 +1316,20 @@
"polyfill",
"portable"
],
"time": "2018-08-06T14:22:27+00:00"
"time": "2019-02-06T07:57:58+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.9.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8"
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8",
"reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609",
"reference": "fe5e94c604826c35a32fa832f35bd036b6799609",
"shasum": ""
},
"require": {
@@ -1341,7 +1341,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
"dev-master": "1.11-dev"
}
},
"autoload": {
@@ -1375,20 +1375,20 @@
"portable",
"shim"
],
"time": "2018-08-06T14:22:27+00:00"
"time": "2019-02-06T07:57:58+00:00"
},
{
"name": "symfony/polyfill-php54",
"version": "v1.9.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php54.git",
"reference": "412977e090c6a8472dc39d50d1beb7d59495a965"
"reference": "2964b17ddc32dba7bcba009d5501c84d3fba1452"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/412977e090c6a8472dc39d50d1beb7d59495a965",
"reference": "412977e090c6a8472dc39d50d1beb7d59495a965",
"url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/2964b17ddc32dba7bcba009d5501c84d3fba1452",
"reference": "2964b17ddc32dba7bcba009d5501c84d3fba1452",
"shasum": ""
},
"require": {
@@ -1397,7 +1397,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
"dev-master": "1.11-dev"
}
},
"autoload": {
@@ -1433,20 +1433,20 @@
"portable",
"shim"
],
"time": "2018-08-06T14:22:27+00:00"
"time": "2019-02-06T07:57:58+00:00"
},
{
"name": "symfony/polyfill-php55",
"version": "v1.9.0",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php55.git",
"reference": "578b8528da843de0fc65ec395900fa3181f2ead7"
"reference": "96fa25cef405ea452919559a0025d5dc16e30e4c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/578b8528da843de0fc65ec395900fa3181f2ead7",
"reference": "578b8528da843de0fc65ec395900fa3181f2ead7",
"url": "https://api.github.com/repos/symfony/polyfill-php55/zipball/96fa25cef405ea452919559a0025d5dc16e30e4c",
"reference": "96fa25cef405ea452919559a0025d5dc16e30e4c",
"shasum": ""
},
"require": {
@@ -1456,7 +1456,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
"dev-master": "1.11-dev"
}
},
"autoload": {
@@ -1489,20 +1489,20 @@
"portable",
"shim"
],
"time": "2018-08-06T14:22:27+00:00"
"time": "2019-02-06T07:57:58+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
"reference": "0fd7ab039e26a33c5e3d1e00642bc83412c0896a"
"reference": "9c5f8d58e9c8017affdbeaec86c89d558aee4ec8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/0fd7ab039e26a33c5e3d1e00642bc83412c0896a",
"reference": "0fd7ab039e26a33c5e3d1e00642bc83412c0896a",
"url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/9c5f8d58e9c8017affdbeaec86c89d558aee4ec8",
"reference": "9c5f8d58e9c8017affdbeaec86c89d558aee4ec8",
"shasum": ""
},
"require": {
@@ -1543,20 +1543,20 @@
],
"description": "Symfony ProxyManager Bridge",
"homepage": "https://symfony.com",
"time": "2018-07-26T09:03:18+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/routing",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "fed18962c40095adc36c2ad05bf0d957cc346f61"
"reference": "8b0df6869d1997baafff6a1541826eac5a03d067"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/fed18962c40095adc36c2ad05bf0d957cc346f61",
"reference": "fed18962c40095adc36c2ad05bf0d957cc346f61",
"url": "https://api.github.com/repos/symfony/routing/zipball/8b0df6869d1997baafff6a1541826eac5a03d067",
"reference": "8b0df6869d1997baafff6a1541826eac5a03d067",
"shasum": ""
},
"require": {
@@ -1617,20 +1617,20 @@
"uri",
"url"
],
"time": "2018-09-08T12:44:02+00:00"
"time": "2018-11-20T15:55:20+00:00"
},
{
"name": "symfony/twig-bridge",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
"reference": "69d2a5542ea37309292d10029ce52b32656523a0"
"reference": "ecc1e30d05fa99f25b504e2d6a8684555ae39f7c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/69d2a5542ea37309292d10029ce52b32656523a0",
"reference": "69d2a5542ea37309292d10029ce52b32656523a0",
"url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ecc1e30d05fa99f25b504e2d6a8684555ae39f7c",
"reference": "ecc1e30d05fa99f25b504e2d6a8684555ae39f7c",
"shasum": ""
},
"require": {
@@ -1702,20 +1702,20 @@
],
"description": "Symfony Twig Bridge",
"homepage": "https://symfony.com",
"time": "2018-08-29T13:11:53+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/yaml",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "5baf0f821b14eee8ca415e6a0361a9fa140c002c"
"reference": "02c1859112aa779d9ab394ae4f3381911d84052b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/5baf0f821b14eee8ca415e6a0361a9fa140c002c",
"reference": "5baf0f821b14eee8ca415e6a0361a9fa140c002c",
"url": "https://api.github.com/repos/symfony/yaml/zipball/02c1859112aa779d9ab394ae4f3381911d84052b",
"reference": "02c1859112aa779d9ab394ae4f3381911d84052b",
"shasum": ""
},
"require": {
@@ -1752,35 +1752,35 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2018-08-29T13:11:53+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "twig/twig",
"version": "v1.35.4",
"version": "v1.39.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "7e081e98378a1e78c29cc9eba4aefa5d78a05d2a"
"reference": "23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/7e081e98378a1e78c29cc9eba4aefa5d78a05d2a",
"reference": "7e081e98378a1e78c29cc9eba4aefa5d78a05d2a",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec",
"reference": "23e7b6f0cfa1d7ba3de69f30d8e05cf957412fec",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"php": ">=5.4.0",
"symfony/polyfill-ctype": "^1.8"
},
"require-dev": {
"psr/container": "^1.0",
"symfony/debug": "^2.7",
"symfony/phpunit-bridge": "^3.3"
"symfony/phpunit-bridge": "^3.4.19|^4.1.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.35-dev"
"dev-master": "1.39-dev"
}
},
"autoload": {
@@ -1818,7 +1818,7 @@
"keywords": [
"templating"
],
"time": "2018-07-13T07:12:17+00:00"
"time": "2019-04-16T17:12:57+00:00"
},
{
"name": "zendframework/zend-code",
@@ -2478,6 +2478,7 @@
"testing",
"xunit"
],
"abandoned": true,
"time": "2015-03-29T14:23:04+00:00"
},
{
@@ -2854,6 +2855,7 @@
"mock",
"xunit"
],
"abandoned": true,
"time": "2015-10-02T06:51:40+00:00"
},
{
@@ -2891,9 +2893,7 @@
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com",
"homepage": "http://fabien.potencier.org",
"role": "Lead Developer"
"email": "fabien@symfony.com"
}
],
"description": "Pimple is a simple Dependency Injection Container for PHP 5.3",
@@ -3336,16 +3336,16 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "2.9.1",
"version": "2.9.2",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62"
"reference": "2acf168de78487db620ab4bc524135a13cfe6745"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dcbed1074f8244661eecddfc2a675430d8d33f62",
"reference": "dcbed1074f8244661eecddfc2a675430d8d33f62",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
"reference": "2acf168de78487db620ab4bc524135a13cfe6745",
"shasum": ""
},
"require": {
@@ -3410,20 +3410,20 @@
"phpcs",
"standards"
],
"time": "2017-05-22T02:43:20+00:00"
"time": "2018-11-07T22:31:41+00:00"
},
{
"name": "symfony/browser-kit",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
"reference": "fe44362c97307e7935996cb09d320fcc22619656"
"reference": "b507697225f32a76a9d333d0766fb46353e9d00d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/browser-kit/zipball/fe44362c97307e7935996cb09d320fcc22619656",
"reference": "fe44362c97307e7935996cb09d320fcc22619656",
"url": "https://api.github.com/repos/symfony/browser-kit/zipball/b507697225f32a76a9d333d0766fb46353e9d00d",
"reference": "b507697225f32a76a9d333d0766fb46353e9d00d",
"shasum": ""
},
"require": {
@@ -3467,20 +3467,20 @@
],
"description": "Symfony BrowserKit Component",
"homepage": "https://symfony.com",
"time": "2018-07-26T09:03:18+00:00"
"time": "2018-11-26T06:55:10+00:00"
},
{
"name": "symfony/css-selector",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
"reference": "4cca41ebe83cd5b4bd0c1a9f6bdfaec7103f97fb"
"reference": "7b1692e418d7ccac24c373528453bc90e42797de"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/4cca41ebe83cd5b4bd0c1a9f6bdfaec7103f97fb",
"reference": "4cca41ebe83cd5b4bd0c1a9f6bdfaec7103f97fb",
"url": "https://api.github.com/repos/symfony/css-selector/zipball/7b1692e418d7ccac24c373528453bc90e42797de",
"reference": "7b1692e418d7ccac24c373528453bc90e42797de",
"shasum": ""
},
"require": {
@@ -3520,20 +3520,20 @@
],
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"time": "2018-09-08T12:44:02+00:00"
"time": "2018-11-11T11:18:13+00:00"
},
{
"name": "symfony/dom-crawler",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
"reference": "ba0b706b5ac1c1afcf7d34507a5a272f51cc7721"
"reference": "2cdc7d3909eea6f982a6298d2e9ab7db01b6403c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/ba0b706b5ac1c1afcf7d34507a5a272f51cc7721",
"reference": "ba0b706b5ac1c1afcf7d34507a5a272f51cc7721",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2cdc7d3909eea6f982a6298d2e9ab7db01b6403c",
"reference": "2cdc7d3909eea6f982a6298d2e9ab7db01b6403c",
"shasum": ""
},
"require": {
@@ -3577,20 +3577,20 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
"time": "2018-09-21T12:46:38+00:00"
"time": "2018-11-24T22:30:19+00:00"
},
{
"name": "symfony/process",
"version": "v2.8.46",
"version": "v2.8.49",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "f09e21b7c5aba06c47bbfad9cbcf13ac7f0db0a6"
"reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/f09e21b7c5aba06c47bbfad9cbcf13ac7f0db0a6",
"reference": "f09e21b7c5aba06c47bbfad9cbcf13ac7f0db0a6",
"url": "https://api.github.com/repos/symfony/process/zipball/c3591a09c78639822b0b290d44edb69bf9f05dc8",
"reference": "c3591a09c78639822b0b290d44edb69bf9f05dc8",
"shasum": ""
},
"require": {
@@ -3626,7 +3626,7 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2018-09-06T17:11:15+00:00"
"time": "2018-11-11T11:18:13+00:00"
}
],
"aliases": [],

View File

@@ -208,6 +208,7 @@ services:
console.command.thumbnail.delete:
class: phpbb\console\command\thumbnail\delete
arguments:
- '@config'
- '@user'
- '@dbal.conn'
- '%core.root_path%'
@@ -217,6 +218,7 @@ services:
console.command.thumbnail.generate:
class: phpbb\console\command\thumbnail\generate
arguments:
- '@config'
- '@user'
- '@dbal.conn'
- '@cache'

View File

@@ -35,6 +35,7 @@ services:
- '@config_text'
- '@dbal.conn'
- '@user'
- '@dispatcher'
- '%core.root_path%'
- '%core.php_ext%'

View File

@@ -33,13 +33,6 @@ services:
tags:
- { name: install_obtain_data, order: 40 }
installer.obtain_data.obtain_imagick_path:
class: phpbb\install\module\obtain_data\task\obtain_imagick_path
arguments:
- '@installer.helper.config'
tags:
- { name: install_obtain_data, order: 60 }
installer.obtain_data.obtain_server_data:
class: phpbb\install\module\obtain_data\task\obtain_server_data
arguments:

View File

@@ -50,6 +50,12 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<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>
<li><a href="#v324">Changes since 3.2.4</a></li>
<li><a href="#v324rc1">Changes since 3.2.4-RC1</a></li>
<li><a href="#v323">Changes since 3.2.3</a></li>
<li><a href="#v323rc2">Changes since 3.2.3-RC2</a></li>
<li><a href="#v323rc1">Changes since 3.2.3-RC1</a></li>
@@ -132,6 +138,144 @@
<div class="inner">
<div class="content">
<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>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16027">PHPBB3-16027</a>] - Appveyor builds fail on PHP 7.0</li>
</ul>
<h4>Security Issue</h4>
<ul>
<li>[SECURITY-231] - Remote avatar functionality allows checking for files and ports on local network</li>
<li>[SECURITY-235] - Fulltext native search can be used to cause long execution times</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[SECURITY-228] - Require form token in login_box</li>
<li>[SECURITY-233] - SMTP auth data shouldn't be cached</li>
<li>[SECURITY-234] - Main website URL in Admin Control Panel should not support JS URLs</li>
</ul>
<a name="v325"></a><h3>Changes since 3.2.5</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15509">PHPBB3-15509</a>] - Update database: info message is to scary</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15869">PHPBB3-15869</a>] - Cookies Problem with domains with special chars</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15876">PHPBB3-15876</a>] - Mysql 5.7 support Q&amp;A plugin</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15883">PHPBB3-15883</a>] - No error for invalid usernames on bulk add to usergroup</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15904">PHPBB3-15904</a>] - PHP warning when accessing modules in ACP System tab</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15917">PHPBB3-15917</a>] - Unapproved posts count towards forum post count</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15918">PHPBB3-15918</a>] - Ban reason messages show backslash (\) before apostrophe -- ex. (don\'t).</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15919">PHPBB3-15919</a>] - Lint test throws PHP warnings due to node modules folder</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15931">PHPBB3-15931</a>] - Issues in PM report emails</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15954">PHPBB3-15954</a>] - Some calls to include() don't have a safeguard</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15957">PHPBB3-15957</a>] - User preferences show notification method &quot;both&quot; with disabled Jabber in ACP</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15959">PHPBB3-15959</a>] - Travis Network Test is Failing for news.cnet.com</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15965">PHPBB3-15965</a>] - Console command to handle thumbnails have files directory hardcoded</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15975">PHPBB3-15975</a>] - Delete or prune an user doesn't remove its entries in the user_notifications table</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15986">PHPBB3-15986</a>] - Add missing language key for posting.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15996">PHPBB3-15996</a>] - Invalid data provider function name in migrator_tool_permission_test</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16006">PHPBB3-16006</a>] - Duplicate form IDs in UCP oauth form</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15884">PHPBB3-15884</a>] - Add memberlist_body_* events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15889">PHPBB3-15889</a>] - Add core.memberlist_modify_memberrow_sql</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15890">PHPBB3-15890</a>] - Add core.memberlist_modify_viewprofile_sql</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15891">PHPBB3-15891</a>] - Add core.memberlist_modify_view_profile_template_vars</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15898">PHPBB3-15898</a>] - Add core.ucp_pm_compose_template</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15899">PHPBB3-15899</a>] - Add core.modify_attachment_sql_ary_on_* events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15901">PHPBB3-15901</a>] - Add mcp_post_* template events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15910">PHPBB3-15910</a>] - Pass object arguments by reference implicitly</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15914">PHPBB3-15914</a>] - Add core.modify_memberlist_viewprofile_group_sql and core.modify_memberlist_viewprofile_group_data</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15915">PHPBB3-15915</a>] - Add template events to posting_attach_body.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15924">PHPBB3-15924</a>] - Move from precise to trusty builds</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15926">PHPBB3-15926</a>] - Deny installs on PHP &gt;= 7.3@dev - Increase min. req. to 5.4.7</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15928">PHPBB3-15928</a>] - Remove support for backup download</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15939">PHPBB3-15939</a>] - Pagination docblocks</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15941">PHPBB3-15941</a>] - Replace MAX SQL in functions_posting.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15942">PHPBB3-15942</a>] - Array to string conversion when permanently deleting a post</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15948">PHPBB3-15948</a>] - Add core.mcp_change_topic_type_after/before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15949">PHPBB3-15949</a>] - [Template] - ucp_profile_signature_posting_editor_options_prepend</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15950">PHPBB3-15950</a>] - Add SQL transactions to mcp_main.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15960">PHPBB3-15960</a>] - Add SQL transactions to functions_admin.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15970">PHPBB3-15970</a>] - Add core.message_admin_form_submit_before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15972">PHPBB3-15972</a>] - Add core.markread_after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15992">PHPBB3-15992</a>] - Fix breadcrumb schema</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15995">PHPBB3-15995</a>] - Add core.memberlist_modify_sort_pagination_params</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15997">PHPBB3-15997</a>] - Increase webdriver timeout for UI tests</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16001">PHPBB3-16001</a>] - Append data to the OAuth's redirect URL</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16009">PHPBB3-16009</a>] - Display OAuth login's buttons in a row.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16010">PHPBB3-16010</a>] - Automatically check order of events in events.md file</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16018">PHPBB3-16018</a>] - Update composer and dependencies for 3.2.6</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-16020">PHPBB3-16020</a>] - Fix placement of event viewforum_body_topic_author_username_append</li>
</ul>
<h4>New Feature</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15944">PHPBB3-15944</a>] - Add core.posting_modify_quote_attributes</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15921">PHPBB3-15921</a>] - Update TextFormatter to 1.3.2</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15953">PHPBB3-15953</a>] - pm reported missing border color</li>
</ul>
<a name="v325rc1"></a><h3>Changes since 3.2.5-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15888">PHPBB3-15888</a>] - Update link to user guide</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15893">PHPBB3-15893</a>] - Call to undefined $user in phpbb_format_quote() when BBCodes are disabled</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15911">PHPBB3-15911</a>] - SQL general error on DB update from 3.0 branch</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[SECURITY-229] - Update to latest version of jQuery 1.x and add ajax prefilter</li>
</ul>
<a name="v324"></a><h3>Changes since 3.2.4</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15665">PHPBB3-15665</a>] - MSSQL implementation crashes when upload directory &gt; 2GB</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15858">PHPBB3-15858</a>] - Unapproved User(s) appearing as Guest in Team Page.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15867">PHPBB3-15867</a>] - Contact form without class</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15871">PHPBB3-15871</a>] - PHP 7.1+ warning in ACP extensions module</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15875">PHPBB3-15875</a>] - BBCode parsing error (PHP fatal error)</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15881">PHPBB3-15881</a>] - Login keys are not reset after password update in some cases</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15542">PHPBB3-15542</a>] - Some JS files being called without assets version</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15859">PHPBB3-15859</a>] - Modify the topic ordering if needed</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15863">PHPBB3-15863</a>] - Modify the topic sort ordering from the beginning</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15870">PHPBB3-15870</a>] - Modify the forum ID to handle the correct display of viewtopic if needed</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15872">PHPBB3-15872</a>] - Add show_user_activity to display_user_activity_modify_actives</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15873">PHPBB3-15873</a>] - Event to add/modify MCP report details template data.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15878">PHPBB3-15878</a>] - Add attachment to core.ucp_pm_view_message</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15879">PHPBB3-15879</a>] - Modify attachment's poster_id for get_submitted_attachment_data</li>
</ul>
<a name="v324rc1"></a><h3>Changes since 3.2.4-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-15860">PHPBB3-15860</a>] - Backups filenames arent saved in the expected format</li>
</ul>
<h4>Security Issue</h4>
<ul>
<li>[SECURITY-227] - Phar deserialization in ACP leads to Remote Code Execution</li>
</ul>
<a name="v323"></a><h3>Changes since 3.2.3</h3>
<h4>Bug</h4>
<ul>

View File

@@ -104,3 +104,6 @@ Text_Diff-0.2.1 http://pear.php.net/package/Text_Diff
MIT licenced:
Symfony2 (c) 2004-2011 Fabien Potencier, https://symfony.com/
Cookie Consent (c) 2015 Silktide Ltd, https://cookieconsent.insites.com
Emoji by:
Twemoji (c) 2018 Twitter, Inc, https://twemoji.twitter.com/

View File

@@ -147,7 +147,7 @@
<li>Oracle</li>
</ul>
</li>
<li><strong>PHP 5.4.7+</strong> with support for the database you intend to use.</li>
<li><strong>PHP 5.4.7+</strong> but less than <strong>PHP 7.3</strong> with support for the database you intend to use.</li>
<li>The following PHP modules are required:
<ul>
<li>json</li>
@@ -159,7 +159,6 @@
<li>zlib Compression support</li>
<li>Remote FTP support</li>
<li>XML support</li>
<li>ImageMagick support</li>
<li>GD Support</li>
</ul>
</li>

View File

@@ -28,29 +28,29 @@ acp_bbcodes_edit_fieldsets_after
* Since: 3.1.0-a3
* Purpose: Add settings to BBCode add/edit form
acp_email_group_options_append
===
* Location: adm/style/acp_email.html
* Since: 3.1.7-RC1
* Purpose: Add content at the end of the group options select box
acp_email_group_options_prepend
===
* Location: adm/style/acp_email.html
* Since: 3.1.7-RC1
* Purpose: Add content at the start of the group options select box
acp_email_find_username_append
===
* Location: adm/style/acp_email.html
* Since: 3.1.7-RC1
* Purpose: Add content at the end of the fimd username link
* Purpose: Add content at the end of the find username link
acp_email_find_username_prepend
===
* Location: adm/style/acp_email.html
* Since: 3.1.7-RC1
* Purpose: Add content at the start of the fimd username link
* Purpose: Add content at the start of the find username link
acp_email_group_options_append
===
* Location: adm/style/acp_email.html
* Since: 3.1.7-RC1
* Purpose: Add content at the end of the group options select box
acp_email_group_options_prepend
===
* Location: adm/style/acp_email.html
* Since: 3.1.7-RC1
* Purpose: Add content at the start of the group options select box
acp_email_options_after
===
@@ -160,17 +160,17 @@ acp_forums_rules_settings_prepend
* Since: 3.1.2-RC1
* Purpose: Add settings to forums before rules settings section
acp_group_options_before
===
* Location: adm/style/acp_groups.html
* Since: 3.1.0-b4
* Purpose: Add addtional options to group settings (before GROUP_FOUNDER_MANAGE)
acp_group_options_after
===
* Location: adm/style/acp_groups.html
* Since: 3.1.0-b4
* Purpose: Add addtional options to group settings (after GROUP_RECEIVE_PM)
* Purpose: Add additional options to group settings (after GROUP_RECEIVE_PM)
acp_group_options_before
===
* Location: adm/style/acp_groups.html
* Since: 3.1.0-b4
* Purpose: Add additional options to group settings (before GROUP_FOUNDER_MANAGE)
acp_groups_find_username_append
===
@@ -281,29 +281,29 @@ acp_overall_header_stylesheets_after
* Purpose: Add assets after stylesheets within the `<head>` tags in the ACP.
Note that INCLUDECSS will not work with this event.
acp_permission_forum_copy_src_forum_append
===
* Location: adm/style/permission_forum_copy.html
* Since: 3.1.7-RC1
* Purpose: Add content after the sourse forum select form
acp_permission_forum_copy_src_forum_prepend
===
* Location: adm/style/permission_forum_copy.html
* Since: 3.1.7-RC1
* Purpose: Add content before the sourse forum select form
acp_permission_forum_copy_dest_forum_append
===
* Location: adm/style/permission_forum_copy.html
* Since: 3.1.7-RC1
* Purpose: Add content after the destiny forum select form
* Purpose: Add content after the destination forum select form
acp_permission_forum_copy_dest_forum_prepend
===
* Location: adm/style/permission_forum_copy.html
* Since: 3.1.7-RC1
* Purpose: Add content before the destiny forum select form
* Purpose: Add content before the destination forum select form
acp_permission_forum_copy_src_forum_append
===
* Location: adm/style/permission_forum_copy.html
* Since: 3.1.7-RC1
* Purpose: Add content after the source forum select form
acp_permission_forum_copy_src_forum_prepend
===
* Location: adm/style/permission_forum_copy.html
* Since: 3.1.7-RC1
* Purpose: Add content before the source forum select form
acp_permissions_add_group_options_append
===
@@ -498,41 +498,6 @@ acp_ranks_list_header_before
* Purpose: Add content after the last header-column (but before the action column)
in the ranks list in the ACP
acp_styles_list_before
===
* Locations:
+ adm/style/acp_styles.html
* Since: 3.1.7-RC1
* Purpose: Add content before list of styles
acp_users_mode_add
===
* Locations:
+ adm/style/acp_users.html
* Since: 3.2.2-RC1
* Purpose: Add extra modes to the ACP user page
acp_users_profile_before
===
* Locations:
+ adm/style/acp_users_profile.html
* Since: 3.1.4-RC1
* Purpose: Add content before the profile details when editing a user in the ACP
acp_users_profile_after
===
* Locations:
+ adm/style/acp_users_profile.html
* Since: 3.1.4-RC1
* Purpose: Add content after the profile details but before the custom profile fields when editing a user in the ACP
acp_users_profile_custom_after
===
* Locations:
+ adm/style/acp_users_profile.html
* Since: 3.1.4-RC1
* Purpose: Add content after the the custom profile fields when editing a user in the ACP
acp_simple_footer_after
===
* Location: adm/style/simple_footer.html
@@ -558,6 +523,20 @@ acp_simple_header_stylesheets_after
* Purpose: Add assets after stylesheets within the `<head>` tags in the simple header
of the ACP. Note that INCLUDECSS will not work with this event.
acp_styles_list_before
===
* Locations:
+ adm/style/acp_styles.html
* Since: 3.1.7-RC1
* Purpose: Add content before list of styles
acp_users_mode_add
===
* Locations:
+ adm/style/acp_users.html
* Since: 3.2.2-RC1
* Purpose: Add extra modes to the ACP user page
acp_users_overview_options_append
===
* Location: adm/style/acp_users_overview.html
@@ -570,12 +549,6 @@ acp_users_prefs_append
* Since: 3.1.0-b3
* Purpose: Add user options fieldset to the bottom of ACP users prefs settings
acp_users_prefs_prepend
===
* Location: adm/style/acp_users_prefs.html
* Since: 3.1.0-b3
* Purpose: Add user options fieldset to the top of ACP users prefs settings
acp_users_prefs_personal_append
===
* Location: adm/style/acp_users_prefs.html
@@ -600,6 +573,12 @@ acp_users_prefs_post_prepend
* Since: 3.1.0-b3
* Purpose: Add user options fieldset to the top of ACP users post prefs settings
acp_users_prefs_prepend
===
* Location: adm/style/acp_users_prefs.html
* Since: 3.1.0-b3
* Purpose: Add user options fieldset to the top of ACP users prefs settings
acp_users_prefs_view_append
===
* Location: adm/style/acp_users_prefs.html
@@ -612,6 +591,27 @@ acp_users_prefs_view_prepend
* Since: 3.1.0-b3
* Purpose: Add user options fieldset to the top of ACP users view prefs settings
acp_users_profile_after
===
* Locations:
+ adm/style/acp_users_profile.html
* Since: 3.1.4-RC1
* Purpose: Add content after the profile details but before the custom profile fields when editing a user in the ACP
acp_users_profile_before
===
* Locations:
+ adm/style/acp_users_profile.html
* Since: 3.1.4-RC1
* Purpose: Add content before the profile details when editing a user in the ACP
acp_users_profile_custom_after
===
* Locations:
+ adm/style/acp_users_profile.html
* Since: 3.1.4-RC1
* Purpose: Add content after the the custom profile fields when editing a user in the ACP
acp_users_select_group_after
===
* Location: adm/style/acp_users.html
@@ -764,6 +764,13 @@ forumlist_body_last_poster_username_prepend
* Since: 3.2.4-RC1
* Purpose: Prepend information to last poster username of member
forumlist_body_last_row_after
===
* Locations:
+ styles/prosilver/template/forumlist_body.html
* Since: 3.1.0-b2
* Purpose: Add content after the very last row of the forum list.
forumlist_body_subforum_link_append
===
* Locations:
@@ -792,13 +799,6 @@ forumlist_body_subforums_before
* Since: 3.1.0-a4
* Purpose: Add content before the list of subforums (if any) for each forum on the forum list.
forumlist_body_last_row_after
===
* Locations:
+ styles/prosilver/template/forumlist_body.html
* Since: 3.1.0-b2
* Purpose: Add content after the very last row of the forum list.
index_body_birthday_block_before
===
* Locations:
@@ -932,13 +932,6 @@ mcp_forum_actions_before
* Since: 3.1.11-RC1
* Purpose: Add some information before actions fieldset
mcp_forum_topic_title_before
===
* Locations:
+ styles/prosilver/template/mcp_forum.html
* Since: 3.1.6-RC1
* Purpose: Add some information before the topic title
mcp_forum_topic_title_after
===
* Locations:
@@ -946,6 +939,13 @@ mcp_forum_topic_title_after
* Since: 3.1.6-RC1
* Purpose: Add some information after the topic title
mcp_forum_topic_title_before
===
* Locations:
+ styles/prosilver/template/mcp_forum.html
* Since: 3.1.6-RC1
* Purpose: Add some information before the topic title
mcp_front_latest_logs_after
===
* Locations:
@@ -1009,6 +1009,20 @@ mcp_post_report_buttons_top_before
* Since: 3.2.4-RC1
* Purpose: Add content before report buttons
mcp_post_text_after
===
* Locations:
+ styles/prosilver/template/mcp_post.html
* Since: 3.2.6-RC1
* Purpose: Add content after the post text
mcp_post_text_before
===
* Locations:
+ styles/prosilver/template/mcp_post.html
* Since: 3.2.6-RC1
* Purpose: Add content before the post text
mcp_topic_options_after
===
* Locations:
@@ -1114,6 +1128,83 @@ mcp_warn_user_add_warning_field_before
* Since: 3.1.0-RC4
* Purpose: Add content during warning a user - before add warning field.
memberlist_body_group_desc_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the group description and type in the group profile page.
memberlist_body_group_name_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the group name in the group profile page.
memberlist_body_group_name_before
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data before the group name in the group profile page.
memberlist_body_group_rank_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the group rank in the group profile page.
memberlist_body_group_rank_before
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data before the group rank in the group profile page.
memberlist_body_leaders_set_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the last row in the memberlist mode leaders.
memberlist_body_memberlist_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the last row in the memberlist.
memberlist_body_memberrow_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the last memberrow in the memberlist.
memberlist_body_page_footer_before
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data before the page footer.
memberlist_body_page_header_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the page header.
memberlist_body_page_title_before
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data before the page title.
memberlist_body_rank_append
===
* Locations:
@@ -1130,6 +1221,13 @@ memberlist_body_rank_prepend
* Purpose: Add information before rank in memberlist. Works in
all display modes (leader, group and normal memberlist).
memberlist_body_show_group_after
===
* Locations:
+ styles/prosilver/template/memberlist_body.html
* Since: 3.2.6-RC1
* Purpose: Add data after the last row in the memberlist mode group.
memberlist_body_username_append
===
* Locations:
@@ -1595,19 +1693,61 @@ overall_header_stylesheets_after
* Purpose: Add asset calls after stylesheets within the `</head>` tag.
Note that INCLUDECSS will not work with this event.
posting_attach_body_attach_row_after
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.6-RC1
* Purpose: Add content after attachment row in the file list
posting_attach_body_attach_row_append
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.6-RC1
* Purpose: Add content appending the attachment row in the file list
posting_attach_body_attach_row_before
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.6-RC1
* Purpose: Add content before attachment row in the file list
posting_attach_body_attach_row_controls_append
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.2-RC1
* Purpose: Add content after attachment control elements
* Purpose: Add content after attachment control elements
posting_attach_body_attach_row_controls_prepend
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.2-RC1
* Purpose: Add content before attachment control elements
* Purpose: Add content before attachment control elements
posting_attach_body_attach_row_prepend
===
* Locations:
+ styles/prosilver/template/posting_attach_body.html
* Since: 3.2.6-RC1
* Purpose: Add content prepending attachment row in the file list
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
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
posting_editor_add_panel_tab
===
@@ -1805,20 +1945,6 @@ posting_topic_title_before
* Since: 3.1.6-RC1
* Purpose: Allows to add some information on the left of the topic title in the posting form
quickreply_editor_panel_after
===
* Locations:
+ styles/prosilver/template/quickreply_editor.html
* Since: 3.1.0-b2
* Purpose: Add content after the quick reply panel (but inside the form)
quickreply_editor_panel_before
===
* Locations:
+ styles/prosilver/template/quickreply_editor.html
* Since: 3.1.0-b2
* Purpose: Add content before the quick reply panel (but inside the form)
quickreply_editor_message_after
===
* Locations:
@@ -1833,6 +1959,20 @@ quickreply_editor_message_before
* Since: 3.1.0-a4
* Purpose: Add content before the quick reply textbox
quickreply_editor_panel_after
===
* Locations:
+ styles/prosilver/template/quickreply_editor.html
* Since: 3.1.0-b2
* Purpose: Add content after the quick reply panel (but inside the form)
quickreply_editor_panel_before
===
* Locations:
+ styles/prosilver/template/quickreply_editor.html
* Since: 3.1.0-b2
* Purpose: Add content before the quick reply panel (but inside the form)
quickreply_editor_subject_before
===
* Locations:
@@ -2093,7 +2233,7 @@ simple_header_stylesheets_after
* Purpose: Add asset calls after stylesheets within the `</head>` tag.
Note that INCLUDECSS will not work with this event.
topiclist_row_prepend
topiclist_row_append
===
* Locations:
+ styles/prosilver/template/search_results.html
@@ -2103,7 +2243,7 @@ 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_append
topiclist_row_prepend
===
* Locations:
+ styles/prosilver/template/search_results.html
@@ -2136,6 +2276,20 @@ ucp_agreement_terms_before
* Since: 3.1.0-b3
* Purpose: Add content before the terms of agreement text at user registration
ucp_friend_list_after
===
* Locations:
+ styles/prosilver/template/ucp_zebra_friends.html
* Since: 3.1.0-a4
* Purpose: Add optional elements after list of friends in UCP
ucp_friend_list_before
===
* Locations:
+ styles/prosilver/template/ucp_zebra_friends.html
* Since: 3.1.0-a4
* Purpose: Add optional elements before list of friends in UCP
ucp_main_front_user_activity_after
===
* Locations:
@@ -2318,13 +2472,6 @@ ucp_pm_viewmessage_rank_before
* Purpose: Add data before the rank on the user profile when viewing
a private message
ucp_prefs_personal_prepend
===
* Locations:
+ styles/prosilver/template/ucp_prefs_personal.html
* Since: 3.1.0-a1
* Purpose: Add user options to the top of the Edit Global Settings block
ucp_prefs_personal_append
===
* Locations:
@@ -2332,12 +2479,12 @@ ucp_prefs_personal_append
* Since: 3.1.0-a1
* Purpose: Add user options to the bottom of the Edit Global Settings block
ucp_prefs_post_prepend
ucp_prefs_personal_prepend
===
* Locations:
+ styles/prosilver/template/ucp_prefs_post.html
+ styles/prosilver/template/ucp_prefs_personal.html
* Since: 3.1.0-a1
* Purpose: Add user options to the top of the Edit Posting Defaults block
* Purpose: Add user options to the top of the Edit Global Settings block
ucp_prefs_post_append
===
@@ -2346,13 +2493,12 @@ ucp_prefs_post_append
* Since: 3.1.0-a1
* Purpose: Add user options to the bottom of the Edit Posting Defaults block
ucp_prefs_view_radio_buttons_prepend
ucp_prefs_post_prepend
===
* Locations:
+ styles/prosilver/template/ucp_prefs_view.html
+ styles/prosilver/template/ucp_prefs_post.html
* Since: 3.1.0-a1
* Purpose: Add options to the top of the radio buttons block of the Edit
Display Options screen
* Purpose: Add user options to the top of the Edit Posting Defaults block
ucp_prefs_view_radio_buttons_append
===
@@ -2362,12 +2508,12 @@ ucp_prefs_view_radio_buttons_append
* Purpose: Add options to the bottom of the radio buttons block of the Edit
Display Options screen
ucp_prefs_view_select_menu_prepend
ucp_prefs_view_radio_buttons_prepend
===
* Locations:
+ styles/prosilver/template/ucp_prefs_view.html
* Since: 3.1.0-a1
* Purpose: Add options to the top of the drop-down lists block of the Edit
* Purpose: Add options to the top of the radio buttons block of the Edit
Display Options screen
ucp_prefs_view_select_menu_append
@@ -2378,12 +2524,13 @@ ucp_prefs_view_select_menu_append
* Purpose: Add options to the bottom of the drop-down lists block of the Edit
Display Options screen
ucp_profile_profile_info_before
ucp_prefs_view_select_menu_prepend
===
* Locations:
+ styles/prosilver/template/ucp_profile_profile_info.html
* Since: 3.1.4-RC1
* Purpose: Add options in profile page fieldset - before jabber field.
+ styles/prosilver/template/ucp_prefs_view.html
* Since: 3.1.0-a1
* Purpose: Add options to the top of the drop-down lists block of the Edit
Display Options screen
ucp_profile_profile_info_after
===
@@ -2392,12 +2539,12 @@ ucp_profile_profile_info_after
* Since: 3.1.4-RC1
* Purpose: Add options in profile page fieldset - after custom profile fields.
ucp_profile_register_details_before
ucp_profile_profile_info_before
===
* Locations:
+ styles/prosilver/template/ucp_profile_reg_details.html
+ styles/prosilver/template/ucp_profile_profile_info.html
* Since: 3.1.4-RC1
* Purpose: Add options in profile page fieldset - before first field.
* Purpose: Add options in profile page fieldset - before jabber field.
ucp_profile_register_details_after
===
@@ -2406,6 +2553,20 @@ ucp_profile_register_details_after
* Since: 3.1.4-RC1
* Purpose: Add options in profile page fieldset - after confirm password field.
ucp_profile_register_details_before
===
* Locations:
+ styles/prosilver/template/ucp_profile_reg_details.html
* Since: 3.1.4-RC1
* Purpose: Add options in profile page fieldset - before first field.
ucp_profile_signature_posting_editor_options_prepend
===
* Locations:
+ styles/prosilver/template/ucp_profile_signature.html
* Since: 3.2.6-RC1
* Purpose: Add options signature posting editor - before first option.
ucp_register_buttons_before
===
* Locations:
@@ -2413,20 +2574,6 @@ ucp_register_buttons_before
* Since: 3.1.11-RC1
* Purpose: Add content before buttons in registration form.
ucp_register_credentials_before
===
* Locations:
+ styles/prosilver/template/ucp_register.html
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - before first field.
ucp_register_profile_fields_after
===
* Locations:
+ styles/prosilver/template/ucp_register.html
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - after last field.
ucp_register_credentials_after
===
* Locations:
@@ -2434,6 +2581,13 @@ ucp_register_credentials_after
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - after password field.
ucp_register_credentials_before
===
* Locations:
+ styles/prosilver/template/ucp_register.html
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - before first field.
ucp_register_options_before
===
* Locations:
@@ -2441,6 +2595,13 @@ ucp_register_options_before
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - before language selector.
ucp_register_profile_fields_after
===
* Locations:
+ styles/prosilver/template/ucp_register.html
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - after last field.
ucp_register_profile_fields_before
===
* Locations:
@@ -2448,20 +2609,6 @@ ucp_register_profile_fields_before
* Since: 3.1.0-b5
* Purpose: Add options in registration page fieldset - before profile fields.
ucp_friend_list_before
===
* Locations:
+ styles/prosilver/template/ucp_zebra_friends.html
* Since: 3.1.0-a4
* Purpose: Add optional elements before list of friends in UCP
ucp_friend_list_after
===
* Locations:
+ styles/prosilver/template/ucp_zebra_friends.html
* Since: 3.1.0-a4
* Purpose: Add optional elements after list of friends in UCP
viewforum_body_last_post_author_username_append
===
* Locations:
@@ -2525,13 +2672,6 @@ viewforum_body_topicrow_row_before
* Since: 3.1.10-RC1
* Purpose: Add content before list of topics.
viewforum_buttons_bottom_before
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before New Topic button on the bottom of the topic's list
viewforum_buttons_bottom_after
===
* Locations:
@@ -2539,12 +2679,12 @@ viewforum_buttons_bottom_after
* Since: 3.1.0-RC5
* Purpose: Add buttons after New Topic button on the bottom of the topic's list
viewforum_buttons_top_before
viewforum_buttons_bottom_before
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before New Topic button on the top of the topic's list
* Purpose: Add buttons before New Topic button on the bottom of the topic's list
viewforum_buttons_top_after
===
@@ -2553,47 +2693,12 @@ viewforum_buttons_top_after
* Since: 3.1.0-RC5
* Purpose: Add buttons after New Topic button on the top of the topic's list
viewtopic_buttons_bottom_before
viewforum_buttons_top_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
+ styles/prosilver/template/viewforum_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before Post Reply button on the bottom of the posts's list
viewtopic_buttons_bottom_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after Post Reply button on the bottom of the posts's list
viewtopic_buttons_top_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before Post Reply button on the top of the posts's list
viewtopic_buttons_top_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after Post Reply button on the top of the posts's list
viewtopic_dropdown_bottom_custom
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.6-RC1
* Purpose: Create a custom dropdown menu
viewtopic_dropdown_top_custom
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.6-RC1
* Purpose: Create a custom dropdown menu
* Purpose: Add buttons before New Topic button on the top of the topic's list
viewforum_forum_name_append
===
@@ -2637,20 +2742,6 @@ viewonline_body_username_prepend
* Since: 3.2.4-RC1
* Purpose: Prepend information to username of member
viewtopic_print_head_append
===
* Locations:
+ styles/prosilver/template/viewtopic_print.html
* Since: 3.1.0-a1
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
viewtopic_body_pagination_top_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.4-RC1
* Purpose: Add content after the pagination at top
viewtopic_body_avatar_after
===
* Locations:
@@ -2689,6 +2780,13 @@ viewtopic_body_footer_before
* Purpose: Add content to the bottom of the View topic screen below the posts
and quick reply, directly before the jumpbox in Prosilver.
viewtopic_body_pagination_top_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.4-RC1
* Purpose: Add content after the pagination at top
viewtopic_body_poll_after
===
* Locations:
@@ -2791,28 +2889,28 @@ viewtopic_body_postrow_back2top_after
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.8-RC1
* Purpose: Add content to the post's bottom after the back to top link
* Purpose: Add content to the post's bottom after the back to top link
viewtopic_body_postrow_back2top_append
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.8-RC1
* Purpose: Add content to the post's bottom directly after the back to top link
* Purpose: Add content to the post's bottom directly after the back to top link
viewtopic_body_postrow_back2top_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.8-RC1
* Purpose: Add content to the post's bottom before the back to top link
* Purpose: Add content to the post's bottom before the back to top link
viewtopic_body_postrow_back2top_prepend
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.8-RC1
* Purpose: Add content to the post's bottom directly before the back to top link
* Purpose: Add content to the post's bottom directly before the back to top link
viewtopic_body_postrow_content_after
===
@@ -2909,6 +3007,55 @@ viewtopic_body_topic_actions_before
* Since: 3.1.0-a4
* Purpose: Add data before the topic actions buttons (after the posts sorting options)
viewtopic_buttons_bottom_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after Post Reply button on the bottom of the posts's list
viewtopic_buttons_bottom_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before Post Reply button on the bottom of the posts's list
viewtopic_buttons_top_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after Post Reply button on the top of the posts's list
viewtopic_buttons_top_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before Post Reply button on the top of the posts's list
viewtopic_dropdown_bottom_custom
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.6-RC1
* Purpose: Create a custom dropdown menu
viewtopic_dropdown_top_custom
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.1.6-RC1
* Purpose: Create a custom dropdown menu
viewtopic_print_head_append
===
* Locations:
+ styles/prosilver/template/viewtopic_print.html
* Since: 3.1.0-a1
* Purpose: Add asset calls directly before the `</head>` tag of the Print Topic screen
viewtopic_topic_title_after
===
* Locations:
@@ -2916,13 +3063,6 @@ viewtopic_topic_title_after
* Since: 3.1.7-RC1
* Purpose: Add content directly after the topic title link on the View topic screen (outside of the h2 HTML tag)
viewtopic_topic_title_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.2.2-RC1
* Purpose: Add content directly before the topic title link on the View topic screen (outside of the h2 HTML tag)
viewtopic_topic_title_append
===
* Locations:
@@ -2930,6 +3070,13 @@ viewtopic_topic_title_append
* Since: 3.1.0-b3
* Purpose: Add content directly after the topic title link on the View topic screen
viewtopic_topic_title_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
* Since: 3.2.2-RC1
* Purpose: Add content directly before the topic title link on the View topic screen (outside of the h2 HTML tag)
viewtopic_topic_title_prepend
===
* Locations:

View File

@@ -164,7 +164,6 @@ class acp_attachments
'img_create_thumbnail' => array('lang' => 'CREATE_THUMBNAIL', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'img_max_thumb_width' => array('lang' => 'MAX_THUMB_WIDTH', 'validate' => 'int:0:999999999999999', 'type' => 'number:0:999999999999999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'img_min_thumb_filesize' => array('lang' => 'MIN_THUMB_FILESIZE', 'validate' => 'int:0:999999999999999', 'type' => 'number:0:999999999999999', 'explain' => true, 'append' => ' ' . $user->lang['BYTES']),
'img_imagick' => array('lang' => 'IMAGICK_PATH', 'validate' => 'absolute_path', 'type' => 'text:20:200', 'explain' => true, 'append' => '&nbsp;&nbsp;<span>[ <a href="' . $this->u_action . '&amp;action=imgmagick">' . $user->lang['SEARCH_IMAGICK'] . '</a> ]</span>'),
'img_max' => array('lang' => 'MAX_IMAGE_SIZE', 'validate' => 'int:0:9999', 'type' => 'dimension:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
'img_link' => array('lang' => 'IMAGE_LINK_SIZE', 'validate' => 'int:0:9999', 'type' => 'dimension:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']),
)
@@ -234,38 +233,6 @@ class acp_attachments
$template->assign_var('S_ATTACHMENT_SETTINGS', true);
if ($action == 'imgmagick')
{
$this->new_config['img_imagick'] = $this->search_imagemagick();
}
// We strip eventually manual added convert program, we only want the patch
if ($this->new_config['img_imagick'])
{
// Change path separator
$this->new_config['img_imagick'] = str_replace('\\', '/', $this->new_config['img_imagick']);
$this->new_config['img_imagick'] = str_replace(array('convert', '.exe'), array('', ''), $this->new_config['img_imagick']);
// Check for trailing slash
if (substr($this->new_config['img_imagick'], -1) !== '/')
{
$this->new_config['img_imagick'] .= '/';
}
}
$supported_types = get_supported_image_types();
// Check Thumbnail Support
if (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !count($supported_types['format'])))
{
$this->new_config['img_create_thumbnail'] = 0;
}
$template->assign_vars(array(
'U_SEARCH_IMAGICK' => $this->u_action . '&amp;action=imgmagick',
'S_THUMBNAIL_SUPPORT' => (!$this->new_config['img_imagick'] && (!isset($supported_types['format']) || !count($supported_types['format']))) ? false : true)
);
// Secure Download Options - Same procedure as with banning
$allow_deny = ($this->new_config['secure_allow_deny']) ? 'ALLOWED' : 'DISALLOWED';
@@ -1495,47 +1462,6 @@ class acp_attachments
return $group_select;
}
/**
* Search Imagick
*/
function search_imagemagick()
{
$imagick = '';
$exe = ((defined('PHP_OS')) && (preg_match('#^win#i', PHP_OS))) ? '.exe' : '';
$magic_home = getenv('MAGICK_HOME');
if (empty($magic_home))
{
$locations = array('C:/WINDOWS/', 'C:/WINNT/', 'C:/WINDOWS/SYSTEM/', 'C:/WINNT/SYSTEM/', 'C:/WINDOWS/SYSTEM32/', 'C:/WINNT/SYSTEM32/', '/usr/bin/', '/usr/sbin/', '/usr/local/bin/', '/usr/local/sbin/', '/opt/', '/usr/imagemagick/', '/usr/bin/imagemagick/');
$path_locations = str_replace('\\', '/', (explode(($exe) ? ';' : ':', getenv('PATH'))));
$locations = array_merge($path_locations, $locations);
foreach ($locations as $location)
{
// The path might not end properly, fudge it
if (substr($location, -1) !== '/')
{
$location .= '/';
}
if (@file_exists($location) && @is_readable($location . 'mogrify' . $exe) && @filesize($location . 'mogrify' . $exe) > 3000)
{
$imagick = str_replace('\\', '/', $location);
continue;
}
}
}
else
{
$imagick = str_replace('\\', '/', $magic_home);
}
return $imagick;
}
/**
* Test Settings
*/

View File

@@ -30,10 +30,13 @@ class acp_board
function main($id, $mode)
{
global $user, $template, $request;
global $user, $template, $request, $language;
global $config, $phpbb_root_path, $phpEx;
global $cache, $phpbb_container, $phpbb_dispatcher, $phpbb_log;
/** @var \phpbb\language\language $language Language object */
$language = $phpbb_container->get('language');
$user->add_lang('acp/board');
$submit = (isset($_POST['submit']) || isset($_POST['allow_quick_reply_enable'])) ? true : false;
@@ -56,7 +59,7 @@ class acp_board
'legend1' => 'ACP_BOARD_SETTINGS',
'sitename' => array('lang' => 'SITE_NAME', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => false),
'site_desc' => array('lang' => 'SITE_DESC', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => false),
'site_home_url' => array('lang' => 'SITE_HOME_URL', 'validate' => 'string', 'type' => 'url:40:255', 'explain' => true),
'site_home_url' => array('lang' => 'SITE_HOME_URL', 'validate' => 'url', 'type' => 'url:40:255', 'explain' => true),
'site_home_text' => array('lang' => 'SITE_HOME_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
'board_index_text' => array('lang' => 'BOARD_INDEX_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
'board_disable' => array('lang' => 'DISABLE_BOARD', 'validate' => 'bool', 'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
@@ -122,6 +125,7 @@ class acp_board
$avatar_vars = array();
foreach ($avatar_drivers as $current_driver)
{
/** @var \phpbb\avatar\driver\driver_interface $driver */
$driver = $phpbb_avatar_manager->get_driver($current_driver, false);
/*
@@ -730,7 +734,7 @@ class acp_board
$template->assign_block_vars('options', array(
'KEY' => $config_key,
'TITLE' => (isset($user->lang[$vars['lang']])) ? $user->lang[$vars['lang']] : $vars['lang'],
'S_EXPLAIN' => $vars['explain'],
'S_EXPLAIN' => $vars['explain'] && !empty($l_explain),
'TITLE_EXPLAIN' => $l_explain,
'CONTENT' => $content,
)

View File

@@ -23,6 +23,7 @@ class acp_database
{
var $db_tools;
var $u_action;
public $page_title;
function main($id, $mode)
{
@@ -69,18 +70,13 @@ class acp_database
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$store = $download = $structure = $schema_data = false;
$store = $structure = $schema_data = false;
if ($where == 'store_and_download' || $where == 'store')
if ($where == 'store')
{
$store = true;
}
if ($where == 'store_and_download' || $where == 'download')
{
$download = true;
}
if ($type == 'full' || $type == 'structure')
{
$structure = true;
@@ -98,8 +94,9 @@ class acp_database
$filename = 'backup_' . $time . '_' . unique_id();
/** @var phpbb\db\extractor\extractor_interface $extractor Database extractor */
$extractor = $phpbb_container->get('dbal.extractor');
$extractor->init_extractor($format, $filename, $time, $download, $store);
$extractor->init_extractor($format, $filename, $time, false, $store);
$extractor->write_start($table_prefix);
@@ -145,11 +142,6 @@ class acp_database
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DB_BACKUP');
if ($download == true)
{
exit;
}
trigger_error($user->lang['BACKUP_SUCCESS'] . adm_back_link($this->u_action));
break;
@@ -201,16 +193,10 @@ class acp_database
case 'submit':
$delete = $request->variable('delete', '');
$file = $request->variable('file', '');
$download = $request->variable('download', '');
if (!preg_match('#^backup_\d{10,}_[a-z\d]{16}\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches))
{
trigger_error($user->lang['BACKUP_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$backup_info = $this->get_backup_file($phpbb_root_path . 'store/', $file);
$file_name = $phpbb_root_path . 'store/' . $matches[0];
if (!file_exists($file_name) || !is_readable($file_name))
if (empty($backup_info) || !is_readable($backup_info['file_name']))
{
trigger_error($user->lang['BACKUP_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
@@ -219,7 +205,7 @@ class acp_database
{
if (confirm_box(true))
{
unlink($file_name);
unlink($backup_info['file_name']);
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_DB_DELETE');
trigger_error($user->lang['BACKUP_DELETE'] . adm_back_link($this->u_action));
}
@@ -228,50 +214,12 @@ class acp_database
confirm_box(false, $user->lang['DELETE_SELECTED_BACKUP'], build_hidden_fields(array('delete' => $delete, 'file' => $file)));
}
}
else if ($download || confirm_box(true))
else if (confirm_box(true))
{
if ($download)
{
$name = $matches[0];
switch ($matches[1])
{
case 'sql':
$mimetype = 'text/x-sql';
break;
case 'sql.bz2':
$mimetype = 'application/x-bzip2';
break;
case 'sql.gz':
$mimetype = 'application/x-gzip';
break;
}
header('Cache-Control: private, no-cache');
header("Content-Type: $mimetype; name=\"$name\"");
header("Content-disposition: attachment; filename=$name");
@set_time_limit(0);
$fp = @fopen($file_name, 'rb');
if ($fp !== false)
{
while (!feof($fp))
{
echo fread($fp, 8192);
}
fclose($fp);
}
flush();
exit;
}
switch ($matches[1])
switch ($backup_info['extensions'])
{
case 'sql':
$fp = fopen($file_name, 'rb');
$fp = fopen($backup_info['file_name'], 'rb');
$read = 'fread';
$seek = 'fseek';
$eof = 'feof';
@@ -280,7 +228,7 @@ class acp_database
break;
case 'sql.bz2':
$fp = bzopen($file_name, 'r');
$fp = bzopen($backup_info['file_name'], 'r');
$read = 'bzread';
$seek = '';
$eof = 'feof';
@@ -289,13 +237,17 @@ class acp_database
break;
case 'sql.gz':
$fp = gzopen($file_name, 'rb');
$fp = gzopen($backup_info['file_name'], 'rb');
$read = 'gzread';
$seek = 'gzseek';
$eof = 'gzeof';
$close = 'gzclose';
$fgetd = 'fgetd';
break;
default:
trigger_error($user->lang['BACKUP_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
return;
}
switch ($db->get_sql_layer())
@@ -375,43 +327,13 @@ class acp_database
trigger_error($user->lang['RESTORE_SUCCESS'] . adm_back_link($this->u_action));
break;
}
else if (!$download)
else
{
confirm_box(false, $user->lang['RESTORE_SELECTED_BACKUP'], build_hidden_fields(array('file' => $file)));
}
default:
$methods = array('sql');
$available_methods = array('sql.gz' => 'zlib', 'sql.bz2' => 'bz2');
foreach ($available_methods as $type => $module)
{
if (!@extension_loaded($module))
{
continue;
}
$methods[] = $type;
}
$dir = $phpbb_root_path . 'store/';
$dh = @opendir($dir);
$backup_files = array();
if ($dh)
{
while (($file = readdir($dh)) !== false)
{
if (preg_match('#^backup_(\d{10,})_[a-z\d]{16}\.(sql(?:\.(?:gz|bz2))?)$#', $file, $matches))
{
if (in_array($matches[2], $methods))
{
$backup_files[(int) $matches[1]] = $file;
}
}
}
closedir($dh);
}
$backup_files = $this->get_file_list($phpbb_root_path . 'store/');
if (!empty($backup_files))
{
@@ -420,8 +342,8 @@ class acp_database
foreach ($backup_files as $name => $file)
{
$template->assign_block_vars('files', array(
'FILE' => $file,
'NAME' => $user->format_date($name, 'd-m-Y H:i:s', true),
'FILE' => sha1($file),
'NAME' => $user->format_date($name, 'd-m-Y H:i', true),
'SUPPORTED' => true,
));
}
@@ -435,6 +357,92 @@ class acp_database
break;
}
}
/**
* Get backup file from file hash
*
* @param string $directory Relative path to directory
* @param string $file_hash Hash of selected file
*
* @return array Backup file data or empty array if unable to find file
*/
protected function get_backup_file($directory, $file_hash)
{
$backup_data = [];
$file_list = $this->get_file_list($directory);
$supported_extensions = $this->get_supported_extensions();
foreach ($file_list as $file)
{
preg_match('#^backup_(\d{10,})_(?:[a-z\d]{16}|[a-z\d]{32})\.(sql(?:\.(?:gz|bz2))?)$#i', $file, $matches);
if (sha1($file) === $file_hash && in_array($matches[2], $supported_extensions))
{
$backup_data = [
'file_name' => $directory . $file,
'extension' => $matches[2],
];
break;
}
}
return $backup_data;
}
/**
* Get backup file list for directory
*
* @param string $directory Relative path to backup directory
*
* @return array List of backup files in specified directory
*/
protected function get_file_list($directory)
{
$supported_extensions = $this->get_supported_extensions();
$dh = @opendir($directory);
$backup_files = [];
if ($dh)
{
while (($file = readdir($dh)) !== false)
{
if (preg_match('#^backup_(\d{10,})_(?:[a-z\d]{16}|[a-z\d]{32})\.(sql(?:\.(?:gz|bz2))?)$#i', $file, $matches))
{
if (in_array($matches[2], $supported_extensions))
{
$backup_files[(int) $matches[1]] = $file;
}
}
}
closedir($dh);
}
return $backup_files;
}
/**
* Get supported extensions for backup
*
* @return array List of supported extensions
*/
protected function get_supported_extensions()
{
$extensions = ['sql'];
$available_methods = ['sql.gz' => 'zlib', 'sql.bz2' => 'bz2'];
foreach ($available_methods as $type => $module)
{
if (!@extension_loaded($module))
{
continue;
}
$extensions[] = $type;
}
return $extensions;
}
}
// get how much space we allow for a chunk of data, very similar to phpMyAdmin's way of doing things ;-) (hey, we only do this for MySQL anyway :P)

View File

@@ -35,11 +35,13 @@ class acp_extensions
private $request;
private $phpbb_dispatcher;
private $ext_manager;
private $phpbb_container;
private $php_ini;
function main()
{
// Start the page
global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher;
global $config, $user, $template, $request, $phpbb_extension_manager, $phpbb_root_path, $phpbb_log, $phpbb_dispatcher, $phpbb_container;
$this->config = $config;
$this->template = $template;
@@ -48,6 +50,8 @@ class acp_extensions
$this->log = $phpbb_log;
$this->phpbb_dispatcher = $phpbb_dispatcher;
$this->ext_manager = $phpbb_extension_manager;
$this->phpbb_container = $phpbb_container;
$this->php_ini = $this->phpbb_container->get('php_ini');
$this->user->add_lang(array('install', 'acp/extensions', 'migrator'));
@@ -57,7 +61,7 @@ class acp_extensions
$ext_name = $this->request->variable('ext_name', '');
// What is a safe limit of execution time? Half the max execution time should be safe.
$safe_time_limit = (ini_get('max_execution_time') / 2);
$safe_time_limit = ($this->php_ini->getNumeric('max_execution_time') / 2);
$start_time = time();
// Cancel action

View File

@@ -29,6 +29,9 @@ class acp_groups
global $phpbb_root_path, $phpbb_admin_path, $phpEx;
global $request, $phpbb_container, $phpbb_dispatcher;
/** @var \phpbb\language\language $language Language object */
$language = $phpbb_container->get('language');
$user->add_lang('acp/groups');
$this->tpl_name = 'acp_groups';
$this->page_title = 'ACP_GROUPS_MANAGE';
@@ -293,7 +296,19 @@ class acp_groups
// Add user/s to group
if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, $leader, 0, $group_row))
{
trigger_error($user->lang[$error] . adm_back_link($this->u_action . '&amp;action=list&amp;g=' . $group_id), E_USER_WARNING);
$display_message = $language->lang($error);
if ($error == 'GROUP_USERS_INVALID')
{
// Find which users don't exist
$actual_name_ary = $name_ary;
$actual_user_id_ary = [];
user_get_id_name($actual_user_id_ary, $actual_name_ary, false, true);
$display_message = $language->lang('GROUP_USERS_INVALID', implode($language->lang('COMMA_SEPARATOR'), array_udiff($name_ary, $actual_name_ary, 'strcasecmp')));
}
trigger_error($display_message . adm_back_link($this->u_action . '&amp;action=list&amp;g=' . $group_id), E_USER_WARNING);
}
$message = ($leader) ? 'GROUP_MODS_ADDED' : 'GROUP_USERS_ADDED';

View File

@@ -24,9 +24,9 @@ class acp_inactive
var $u_action;
var $p_master;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)

View File

@@ -676,7 +676,7 @@ class acp_permissions
/**
* Apply permissions
*/
function set_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)
function set_permissions($mode, $permission_type, $auth_admin, &$user_id, &$group_id)
{
global $db, $cache, $user, $auth;
global $request;
@@ -765,7 +765,7 @@ class acp_permissions
/**
* Apply all permissions
*/
function set_all_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id)
function set_all_permissions($mode, $permission_type, $auth_admin, &$user_id, &$group_id)
{
global $db, $cache, $user, $auth;
global $request;
@@ -881,7 +881,7 @@ class acp_permissions
/**
* Remove permissions
*/
function remove_permissions($mode, $permission_type, &$auth_admin, &$user_id, &$group_id, &$forum_id)
function remove_permissions($mode, $permission_type, $auth_admin, &$user_id, &$group_id, &$forum_id)
{
global $user, $db, $cache, $auth;

View File

@@ -845,7 +845,7 @@ class acp_profile
/**
* Build all Language specific options
*/
function build_language_options(&$cp, $field_type, $action = 'create')
function build_language_options($cp, $field_type, $action = 'create')
{
global $user, $config, $db, $request;
@@ -942,7 +942,7 @@ class acp_profile
/**
* Save Profile Field
*/
function save_profile_field(&$cp, $field_type, $action = 'create')
function save_profile_field($cp, $field_type, $action = 'create')
{
global $db, $config, $user, $phpbb_container, $phpbb_log, $request, $phpbb_dispatcher;

View File

@@ -24,9 +24,9 @@ class acp_users
var $u_action;
var $p_master;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)

View File

@@ -35,9 +35,18 @@ class bbcode
/**
* Constructor
* Init bbcode cache entries if bitfield is specified
*/
function __construct($bitfield = '')
{
$this->bbcode_set_bitfield($bitfield);
}
/**
* Init bbcode cache entries if bitfield is specified
*
* @param string $bbcode_bitfield The bbcode bitfield
*/
function bbcode_set_bitfield($bitfield = '')
{
if ($bitfield)
{

View File

@@ -29,7 +29,7 @@ function register_compatibility_globals()
{
global $phpbb_container;
global $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $phpbb_log;
global $cache, $phpbb_dispatcher, $request, $user, $auth, $db, $config, $language, $phpbb_log;
global $symfony_request, $phpbb_filesystem, $phpbb_path_helper, $phpbb_extension_manager, $template;
// set up caching
@@ -48,6 +48,9 @@ function register_compatibility_globals()
/* @var $user \phpbb\user */
$user = $phpbb_container->get('user');
/* @var \phpbb\language\language $language */
$language = $phpbb_container->get('language');
/* @var $auth \phpbb\auth\auth */
$auth = $phpbb_container->get('auth');

View File

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

View File

@@ -115,7 +115,7 @@ function gen_rand_string_friendly($num_chars = 8)
*/
function unique_id()
{
return gen_rand_string(32);
return strtolower(gen_rand_string(16));
}
/**
@@ -680,8 +680,6 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
}
}
}
return;
}
else if ($mode == 'topics')
{
@@ -808,8 +806,6 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
unset($tracking);
}
return;
}
else if ($mode == 'topic')
{
@@ -923,8 +919,6 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
$user->set_cookie('track', tracking_serialize($tracking), $post_time + 31536000);
$request->overwrite($config['cookie_name'] . '_track', tracking_serialize($tracking), \phpbb\request\request_interface::COOKIE);
}
return;
}
else if ($mode == 'post')
{
@@ -949,9 +943,28 @@ function markread($mode, $forum_id = false, $topic_id = false, $post_time = 0, $
$db->sql_return_on_error(false);
}
return;
}
/**
* This event is used for performing actions directly after forums,
* topics or posts have been marked as read.
*
* @event core.markread_after
* @var string mode Variable containing marking mode value
* @var mixed forum_id Variable containing forum id, or false
* @var mixed topic_id Variable containing topic id, or false
* @var int post_time Variable containing post time
* @var int user_id Variable containing the user id
* @since 3.2.6-RC1
*/
$vars = array(
'mode',
'forum_id',
'topic_id',
'post_time',
'user_id',
);
extract($phpbb_dispatcher->trigger_event('core.markread_after', compact($vars)));
}
/**
@@ -2130,25 +2143,29 @@ function check_form_key($form_name, $timespan = false)
/**
* Build Confirm box
* @param boolean $check True for checking if confirmed (without any additional parameters) and false for displaying the confirm box
* @param string $title Title/Message used for confirm box.
* @param string|array $title Title/Message used for confirm box.
* message text is _CONFIRM appended to title.
* If title cannot be found in user->lang a default one is displayed
* If title_CONFIRM cannot be found in user->lang the text given is used.
* If title is an array, the first array value is used as explained per above,
* all other array values are sent as parameters to the language function.
* @param string $hidden Hidden variables
* @param string $html_body Template used for confirm box
* @param string $u_action Custom form action
*
* @return bool True if confirmation was successful, false if not
*/
function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_body.html', $u_action = '')
{
global $user, $template, $db, $request;
global $config, $phpbb_path_helper;
global $config, $language, $phpbb_path_helper;
if (isset($_POST['cancel']))
{
return false;
}
$confirm = ($user->lang['YES'] === $request->variable('confirm', '', true, \phpbb\request\request_interface::POST));
$confirm = ($language->lang('YES') === $request->variable('confirm', '', true, \phpbb\request\request_interface::POST));
if ($check && $confirm)
{
@@ -2182,13 +2199,27 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
// generate activation key
$confirm_key = gen_rand_string(10);
if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
// generate language strings
if (is_array($title))
{
adm_page_header((!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title]);
$key = array_shift($title);
$count = array_shift($title);
$confirm_title = $language->is_set($key) ? $language->lang($key, $count, $title) : $language->lang('CONFIRM');
$confirm_text = $language->is_set($key . '_CONFIRM') ? $language->lang($key . '_CONFIRM', $count, $title) : $key;
}
else
{
page_header((!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title]);
$confirm_title = $language->is_set($title) ? $language->lang($title) : $language->lang('CONFIRM');
$confirm_text = $language->is_set($title . '_CONFIRM') ? $language->lang($title . '_CONFIRM') : $title;
}
if (defined('IN_ADMIN') && isset($user->data['session_admin']) && $user->data['session_admin'])
{
adm_page_header($confirm_title);
}
else
{
page_header($confirm_title);
}
$template->set_filenames(array(
@@ -2208,10 +2239,10 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
$u_action .= ((strpos($u_action, '?') === false) ? '?' : '&amp;') . 'confirm_key=' . $confirm_key;
$template->assign_vars(array(
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang($title, 1),
'MESSAGE_TEXT' => (!isset($user->lang[$title . '_CONFIRM'])) ? $title : $user->lang[$title . '_CONFIRM'],
'MESSAGE_TITLE' => $confirm_title,
'MESSAGE_TEXT' => $confirm_text,
'YES_VALUE' => $user->lang['YES'],
'YES_VALUE' => $language->lang('YES'),
'S_CONFIRM_ACTION' => $u_action,
'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields,
'S_AJAX_REQUEST' => $request->is_ajax(),
@@ -2227,10 +2258,10 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
$json_response = new \phpbb\json_response;
$json_response->send(array(
'MESSAGE_BODY' => $template->assign_display('body'),
'MESSAGE_TITLE' => (!isset($user->lang[$title])) ? $user->lang['CONFIRM'] : $user->lang[$title],
'MESSAGE_TEXT' => (!isset($user->lang[$title . '_CONFIRM'])) ? $title : $user->lang[$title . '_CONFIRM'],
'MESSAGE_TITLE' => $confirm_title,
'MESSAGE_TEXT' => $confirm_text,
'YES_VALUE' => $user->lang['YES'],
'YES_VALUE' => $language->lang('YES'),
'S_CONFIRM_ACTION' => str_replace('&amp;', '&', $u_action), //inefficient, rewrite whole function
'S_HIDDEN_FIELDS' => $hidden . $s_hidden_fields
));
@@ -2244,6 +2275,8 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
{
page_footer();
}
exit; // unreachable, page_footer() above will call exit()
}
/**
@@ -2255,6 +2288,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
global $request, $phpbb_container, $phpbb_dispatcher, $phpbb_log;
$err = '';
$form_name = 'login';
// Make sure user->setup() has been called
if (!$user->is_setup())
@@ -2330,8 +2364,19 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
trigger_error('NO_AUTH_ADMIN_USER_DIFFER');
}
// If authentication is successful we redirect user to previous page
$result = $auth->login($username, $password, $autologin, $viewonline, $admin);
// Check form key
if ($password && !check_form_key($form_name))
{
$result = array(
'status' => false,
'error_msg' => 'FORM_INVALID',
);
}
else
{
// If authentication is successful we redirect user to previous page
$result = $auth->login($username, $password, $autologin, $viewonline, $admin);
}
// If admin authentication and login, we will log if it was a success or not...
// We also break the operation on the first non-success login - it could be argued that the user already knows
@@ -2482,6 +2527,9 @@ 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(
@@ -2616,6 +2664,9 @@ function login_forum_box($forum_data)
page_header($user->lang['LOGIN']);
// Add form token for login box
add_form_key('login', '_LOGIN');
$template->assign_vars(array(
'FORUM_NAME' => isset($forum_data['forum_name']) ? $forum_data['forum_name'] : '',
'S_LOGIN_ACTION' => build_url(array('f')),
@@ -4388,6 +4439,19 @@ 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())));
/**
* 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'],
@@ -4477,7 +4541,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,

View File

@@ -419,7 +419,7 @@ function build_cfg_template($tpl_type, $key, &$new_ary, $config_key, $vars)
*/
function validate_config_vars($config_vars, &$cfg_array, &$error)
{
global $phpbb_root_path, $user, $phpbb_dispatcher, $phpbb_filesystem;
global $phpbb_root_path, $user, $phpbb_dispatcher, $phpbb_filesystem, $language;
$type = 0;
$min = 1;
@@ -442,6 +442,16 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
// Validate a bit. ;) (0 = type, 1 = min, 2= max)
switch ($validator[$type])
{
case 'url':
$cfg_array[$config_name] = trim($cfg_array[$config_name]);
if (!empty($cfg_array[$config_name]) && !preg_match('#^' . get_preg_expression('url') . '$#iu', $cfg_array[$config_name]))
{
$error[] = $language->lang('URL_INVALID', $language->lang($config_definition['lang']));
}
// no break here
case 'string':
$length = utf8_strlen($cfg_array[$config_name]);
@@ -564,9 +574,6 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
$cfg_array[$config_name] = trim($destination);
// Absolute file path
case 'absolute_path':
case 'absolute_path_writable':
// Path being relative (still prefixed by phpbb_root_path), but with the ability to escape the root dir...
case 'path':
case 'wpath':
@@ -585,7 +592,7 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
break;
}
$path = in_array($config_definition['validate'], array('wpath', 'path', 'rpath', 'rwpath')) ? $phpbb_root_path . $cfg_array[$config_name] : $cfg_array[$config_name];
$path = $phpbb_root_path . $cfg_array[$config_name];
if (!file_exists($path))
{
@@ -598,7 +605,7 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
}
// Check if the path is writable
if ($config_definition['validate'] == 'wpath' || $config_definition['validate'] == 'rwpath' || $config_definition['validate'] === 'absolute_path_writable')
if ($config_definition['validate'] == 'wpath' || $config_definition['validate'] == 'rwpath')
{
if (file_exists($path) && !$phpbb_filesystem->is_writable($path))
{

View File

@@ -3042,6 +3042,8 @@ function tidy_database()
}
$db->sql_freeresult($result);
$db->sql_transaction('begin');
// Delete those rows from the acl tables not having listed the forums above
$sql = 'DELETE FROM ' . ACL_GROUPS_TABLE . '
WHERE ' . $db->sql_in_set('forum_id', $forum_ids, true);
@@ -3051,6 +3053,8 @@ function tidy_database()
WHERE ' . $db->sql_in_set('forum_id', $forum_ids, true);
$db->sql_query($sql);
$db->sql_transaction('commit');
$config->set('database_last_gc', time(), false);
}

View File

@@ -391,7 +391,7 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false, $
*
* @deprecated 3.1.0 (To be removed: 3.3.0)
*/
function get_tables(&$db)
function get_tables($db)
{
$db_tools_factory = new \phpbb\db\tools\factory();
$db_tools = $db_tools_factory->get($db);

View File

@@ -627,7 +627,7 @@ function generate_text_for_display($text, $uid, $bitfield, $flags, $censor_text
}
else
{
$bbcode->bbcode($bitfield);
$bbcode->bbcode_set_bitfield($bitfield);
}
$bbcode->bbcode_second_pass($text, $uid);
@@ -1762,13 +1762,14 @@ class bitfield
/**
* Formats the quote according to the given BBCode status setting
*
* @param bool $bbcode_status The status of the BBCode setting
* @param array $quote_attributes The attributes of the quoted post
* @param phpbb\textformatter\utils $text_formatter_utils Text formatter utilities
* @param parse_message $message_parser Message parser class
* @param string $message_link Link of the original quoted post
* @param phpbb\language\language $language Language class
* @param parse_message $message_parser Message parser class
* @param phpbb\textformatter\utils_interface $text_formatter_utils Text formatter utilities
* @param bool $bbcode_status The status of the BBCode setting
* @param array $quote_attributes The attributes of the quoted post
* @param string $message_link Link of the original quoted post
*/
function phpbb_format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message_parser, $message_link = '')
function phpbb_format_quote($language, $message_parser, $text_formatter_utils, $bbcode_status, $quote_attributes, $message_link = '')
{
if ($bbcode_status)
{
@@ -1794,7 +1795,7 @@ function phpbb_format_quote($bbcode_status, $quote_attributes, $text_formatter_u
$message = $quote_string . $message;
$message = str_replace("\n", "\n" . $quote_string, $message);
$message_parser->message = $quote_attributes['author'] . " " . $user->lang['WROTE'] . ":\n" . $message . "\n";
$message_parser->message = $quote_attributes['author'] . " " . $language->lang('WROTE') . ":\n" . $message . "\n";
}
if ($message_link)

View File

@@ -1241,6 +1241,7 @@ function display_user_activity(&$userdata_ary)
}
$userdata = $userdata_ary;
$show_user_activity = true;
/**
* Alter list of forums and topics to display as active
*
@@ -1248,9 +1249,11 @@ function display_user_activity(&$userdata_ary)
* @var array userdata User's data
* @var array active_f_row List of active forums
* @var array active_t_row List of active posts
* @var bool show_user_activity Show user forum and topic activity
* @since 3.1.0-RC3
* @changed 3.2.5-RC1 Added show_user_activity into event
*/
$vars = array('userdata', 'active_f_row', 'active_t_row');
$vars = array('userdata', 'active_f_row', 'active_t_row', 'show_user_activity');
extract($phpbb_dispatcher->trigger_event('core.display_user_activity_modify_actives', compact($vars)));
$userdata_ary = $userdata;
unset($userdata);
@@ -1287,7 +1290,7 @@ function display_user_activity(&$userdata_ary)
'ACTIVE_TOPIC_PCT' => sprintf($l_active_pct, $active_t_pct),
'U_ACTIVE_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $active_f_id),
'U_ACTIVE_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $active_t_id),
'S_SHOW_ACTIVITY' => true)
'S_SHOW_ACTIVITY' => $show_user_activity)
);
}

View File

@@ -22,12 +22,12 @@ if (!defined('IN_PHPBB'))
/**
* Functions used to generate additional URL paramters
*/
function phpbb_module__url($mode, &$module_row)
function phpbb_module__url($mode, $module_row)
{
return phpbb_extra_url();
}
function phpbb_module_notes_url($mode, &$module_row)
function phpbb_module_notes_url($mode, $module_row)
{
if ($mode == 'front')
{
@@ -38,7 +38,7 @@ function phpbb_module_notes_url($mode, &$module_row)
return ($user_id) ? "&amp;u=$user_id" : '';
}
function phpbb_module_warn_url($mode, &$module_row)
function phpbb_module_warn_url($mode, $module_row)
{
if ($mode == 'front' || $mode == 'list')
{
@@ -64,27 +64,27 @@ function phpbb_module_warn_url($mode, &$module_row)
}
}
function phpbb_module_main_url($mode, &$module_row)
function phpbb_module_main_url($mode, $module_row)
{
return phpbb_extra_url();
}
function phpbb_module_logs_url($mode, &$module_row)
function phpbb_module_logs_url($mode, $module_row)
{
return phpbb_extra_url();
}
function phpbb_module_ban_url($mode, &$module_row)
function phpbb_module_ban_url($mode, $module_row)
{
return phpbb_extra_url();
}
function phpbb_module_queue_url($mode, &$module_row)
function phpbb_module_queue_url($mode, $module_row)
{
return phpbb_extra_url();
}
function phpbb_module_reports_url($mode, &$module_row)
function phpbb_module_reports_url($mode, $module_row)
{
return phpbb_extra_url();
}

View File

@@ -202,11 +202,13 @@ function update_post_information($type, $ids, $return_update_sql = false)
if (count($ids) == 1)
{
$sql = 'SELECT MAX(p.post_id) as last_post_id
$sql = 'SELECT p.post_id as last_post_id
FROM ' . POSTS_TABLE . " p $topic_join
WHERE " . $db->sql_in_set('p.' . $type . '_id', $ids) . "
$topic_condition
AND p.post_visibility = " . ITEM_APPROVED;
AND p.post_visibility = " . ITEM_APPROVED . "
ORDER BY p.post_id DESC";
$result = $db->sql_query_limit($sql, 1);
}
else
{
@@ -216,8 +218,8 @@ function update_post_information($type, $ids, $return_update_sql = false)
$topic_condition
AND p.post_visibility = " . ITEM_APPROVED . "
GROUP BY p.{$type}_id";
$result = $db->sql_query($sql);
}
$result = $db->sql_query($sql);
$last_post_ids = array();
while ($row = $db->sql_fetchrow($result))
@@ -519,7 +521,7 @@ function get_supported_image_types($type = false)
*/
function create_thumbnail($source, $destination, $mimetype)
{
global $config, $phpbb_filesystem;
global $config, $phpbb_filesystem, $phpbb_dispatcher;
$min_filesize = (int) $config['img_min_thumb_filesize'];
$img_filesize = (file_exists($source)) ? @filesize($source) : false;
@@ -551,25 +553,31 @@ function create_thumbnail($source, $destination, $mimetype)
return false;
}
$used_imagick = false;
$thumbnail_created = false;
// Only use ImageMagick if defined and the passthru function not disabled
if ($config['img_imagick'] && function_exists('passthru'))
{
if (substr($config['img_imagick'], -1) !== '/')
{
$config['img_imagick'] .= '/';
}
/**
* Create thumbnail event to replace GD thumbnail creation with for example ImageMagick
*
* @event core.thumbnail_create_before
* @var string source Image source path
* @var string destination Thumbnail destination path
* @var string mimetype Image mime type
* @var float new_width Calculated thumbnail width
* @var float new_height Calculated thumbnail height
* @var bool thumbnail_created Set to true to skip default GD thumbnail creation
* @since 3.2.4
*/
$vars = array(
'source',
'destination',
'mimetype',
'new_width',
'new_height',
'thumbnail_created',
);
extract($phpbb_dispatcher->trigger_event('core.thumbnail_create_before', compact($vars)));
@passthru(escapeshellcmd($config['img_imagick']) . 'convert' . ((defined('PHP_OS') && preg_match('#^win#i', PHP_OS)) ? '.exe' : '') . ' -quality 85 -geometry ' . $new_width . 'x' . $new_height . ' "' . str_replace('\\', '/', $source) . '" "' . str_replace('\\', '/', $destination) . '"');
if (file_exists($destination))
{
$used_imagick = true;
}
}
if (!$used_imagick)
if (!$thumbnail_created)
{
$type = get_supported_image_types($type);

View File

@@ -26,8 +26,10 @@ if (!defined('IN_PHPBB'))
* @param array &$user_id_ary The user ids to check or empty if usernames used
* @param array &$username_ary The usernames to check or empty if user ids used
* @param mixed $user_type Array of user types to check, false if not restricting by user type
* @param boolean $update_references If false, the supplied array is unset and appears unchanged from where it was called
* @return boolean|string Returns false on success, error string on failure
*/
function user_get_id_name(&$user_id_ary, &$username_ary, $user_type = false)
function user_get_id_name(&$user_id_ary, &$username_ary, $user_type = false, $update_references = false)
{
global $db;
@@ -50,7 +52,13 @@ function user_get_id_name(&$user_id_ary, &$username_ary, $user_type = false)
}
$sql_in = ($which_ary == 'user_id_ary') ? array_map('intval', ${$which_ary}) : array_map('utf8_clean_string', ${$which_ary});
unset(${$which_ary});
// By unsetting the array here, the values passed in at the point user_get_id_name() was called will be retained.
// Otherwise, if we don't unset (as the array was passed by reference) the original array will be updated below.
if ($update_references === false)
{
unset(${$which_ary});
}
$user_id_ary = $username_ary = array();
@@ -666,8 +674,30 @@ function user_delete($mode, $user_ids, $retain_username = true)
delete_posts('poster_id', $user_ids);
}
$table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE, PRIVMSGS_FOLDER_TABLE, PRIVMSGS_RULES_TABLE, $phpbb_container->getParameter('tables.auth_provider_oauth_token_storage'), $phpbb_container->getParameter('tables.auth_provider_oauth_states'), $phpbb_container->getParameter('tables.auth_provider_oauth_account_assoc'));
$table_ary = [
USERS_TABLE,
USER_GROUP_TABLE,
TOPICS_WATCH_TABLE,
FORUMS_WATCH_TABLE,
ACL_USERS_TABLE,
TOPICS_TRACK_TABLE,
TOPICS_POSTED_TABLE,
FORUMS_TRACK_TABLE,
PROFILE_FIELDS_DATA_TABLE,
MODERATOR_CACHE_TABLE,
DRAFTS_TABLE,
BOOKMARKS_TABLE,
SESSIONS_KEYS_TABLE,
PRIVMSGS_FOLDER_TABLE,
PRIVMSGS_RULES_TABLE,
$phpbb_container->getParameter('tables.auth_provider_oauth_token_storage'),
$phpbb_container->getParameter('tables.auth_provider_oauth_states'),
$phpbb_container->getParameter('tables.auth_provider_oauth_account_assoc'),
$phpbb_container->getParameter('tables.user_notifications')
];
// Ignore errors on deleting from non-existent tables, e.g. when migrating
$db->sql_return_on_error(true);
// Delete the miscellaneous (non-post) data for the user
foreach ($table_ary as $table)
{
@@ -675,6 +705,7 @@ function user_delete($mode, $user_ids, $retain_username = true)
WHERE " . $user_id_sql;
$db->sql_query($sql);
}
$db->sql_return_on_error();
$cache->destroy('sql', MODERATOR_CACHE_TABLE);
@@ -1687,16 +1718,20 @@ function phpbb_validate_timezone($timezone)
return (in_array($timezone, phpbb_get_timezone_identifiers($timezone))) ? false : 'TIMEZONE_INVALID';
}
/**
* Check to see if the username has been taken, or if it is disallowed.
* Also checks if it includes the " character, which we don't allow in usernames.
* Used for registering, changing names, and posting anonymously with a username
*
* @param string $username The username to check
* @param string $allowed_username An allowed username, default being $user->data['username']
*
* @return mixed Either false if validation succeeded or a string which will be used as the error message (with the variable name appended)
*/
/***
* Validate Username
*
* Check to see if the username has been taken, or if it is disallowed.
* Also checks if it includes the " character or the 4-bytes Unicode ones
* (aka emojis) which we don't allow in usernames.
* Used for registering, changing names, and posting anonymously with a username
*
* @param string $username The username to check
* @param string $allowed_username An allowed username, default being $user->data['username']
*
* @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)
{
global $config, $db, $user, $cache;
@@ -1709,6 +1744,14 @@ function validate_username($username, $allowed_username = false)
return false;
}
// The very first check is for
// out-of-bounds characters that are currently
// not supported by utf8_bin in MySQL
if (preg_match('/[\x{10000}-\x{10FFFF}]/u', $username))
{
return 'INVALID_EMOJIS';
}
// ... fast checks first.
if (strpos($username, '&quot;') !== false || strpos($username, '"') !== false || empty($clean_username))
{
@@ -1899,9 +1942,9 @@ function validate_user_email($email, $allowed_email = false)
return $validate_email;
}
if (($ban_reason = $user->check_ban(false, false, $email, true)) !== false)
if (($ban = $user->check_ban(false, false, $email, true)) !== false)
{
return ($ban_reason === true) ? 'EMAIL_BANNED' : $ban_reason;
return ($ban === true) ? 'EMAIL_BANNED' : (!empty($ban['ban_give_reason']) ? $ban['ban_give_reason'] : $ban);
}
if (!$config['allow_emailreuse'])
@@ -2676,6 +2719,13 @@ function group_user_add($group_id, $user_id_ary = false, $username_ary = false,
return 'NO_USER';
}
// Because the item that gets passed into the previous function is unset, the reference is lost and our original
// array is retained - so we know there's a problem if there's a different number of ids to usernames now.
if (count($user_id_ary) != count($username_ary))
{
return 'GROUP_USERS_INVALID';
}
// Remove users who are already members of this group
$sql = 'SELECT user_id, group_leader
FROM ' . USER_GROUP_TABLE . '

View File

@@ -34,7 +34,10 @@ class mcp_ban
}
// Include the admin banning interface...
include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx);
if (!class_exists('acp_ban'))
{
include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx);
}
$bansubmit = $request->is_set_post('bansubmit');
$unbansubmit = $request->is_set_post('unbansubmit');

View File

@@ -290,7 +290,10 @@ function mcp_front_view($id, $mode, $action)
if ($total)
{
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
if (!function_exists('get_recipient_strings'))
{
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
}
$sql_ary = array(
'SELECT' => 'r.report_id, r.report_time, p.msg_id, p.message_subject, p.message_time, p.to_address, p.bcc_address, p.message_attachment, u.username, u.username_clean, u.user_colour, u.user_id, u2.username as author_name, u2.username_clean as author_name_clean, u2.user_colour as author_colour, u2.user_id as author_id',

View File

@@ -28,9 +28,9 @@ class mcp_logs
var $u_action;
var $p_master;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)

View File

@@ -28,9 +28,9 @@ class mcp_main
var $p_master;
var $u_action;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)
@@ -174,7 +174,10 @@ class mcp_main
switch ($mode)
{
case 'front':
include($phpbb_root_path . 'includes/mcp/mcp_front.' . $phpEx);
if (!function_exists('mcp_front_view'))
{
include($phpbb_root_path . 'includes/mcp/mcp_front.' . $phpEx);
}
$user->add_lang('acp/common');
@@ -185,7 +188,10 @@ class mcp_main
break;
case 'forum_view':
include($phpbb_root_path . 'includes/mcp/mcp_forum.' . $phpEx);
if (!function_exists('mcp_forum_view'))
{
include($phpbb_root_path . 'includes/mcp/mcp_forum.' . $phpEx);
}
$user->add_lang('viewforum');
@@ -208,7 +214,10 @@ class mcp_main
break;
case 'topic_view':
include($phpbb_root_path . 'includes/mcp/mcp_topic.' . $phpEx);
if (!function_exists('mcp_topic_view'))
{
include($phpbb_root_path . 'includes/mcp/mcp_topic.' . $phpEx);
}
mcp_topic_view($id, $mode, $action);
@@ -217,7 +226,10 @@ class mcp_main
break;
case 'post_details':
include($phpbb_root_path . 'includes/mcp/mcp_post.' . $phpEx);
if (!function_exists('mcp_post_details'))
{
include($phpbb_root_path . 'includes/mcp/mcp_post.' . $phpEx);
}
mcp_post_details($id, $mode, $action);
@@ -366,7 +378,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)
{
@@ -414,6 +426,25 @@ function change_topic_type($action, $topic_ids)
if (confirm_box(true))
{
/**
* Perform additional actions before changing topic(s) type
*
* @event core.mcp_change_topic_type_before
* @var int new_topic_type The candidated topic type.
* @var int forum_id The forum ID for the topic ID(s).
* @var array topic_ids Array containing the topic ID(s) that will be changed
* @since 3.2.6-RC1
*/
$vars = array(
'new_topic_type',
'forum_id',
'topic_ids',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_change_topic_type_before', compact($vars)));
$db->sql_transaction('begin');
$sql = 'UPDATE ' . TOPICS_TABLE . "
SET topic_type = $new_topic_type
WHERE " . $db->sql_in_set('topic_id', $topic_ids);
@@ -425,13 +456,10 @@ function change_topic_type($action, $topic_ids)
$sql = 'DELETE FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_moved_id', $topic_ids);
$db->sql_query($sql);
$sql = 'UPDATE ' . TOPICS_TABLE . "
SET topic_type = $new_topic_type
WHERE " . $db->sql_in_set('topic_id', $topic_ids);
$db->sql_query($sql);
}
$db->sql_transaction('commit');
$success_msg = (count($topic_ids) == 1) ? 'TOPIC_TYPE_CHANGED' : 'TOPICS_TYPE_CHANGED';
if (count($topic_ids))
@@ -448,6 +476,22 @@ function change_topic_type($action, $topic_ids)
}
}
/**
* Perform additional actions after changing topic types
*
* @event core.mcp_change_topic_type_after
* @var int new_topic_type The newly changed topic type.
* @var int forum_id The forum ID where the newly changed topic type belongs to.
* @var array topic_ids Array containing the topic IDs that have been changed
* @since 3.2.6-RC1
*/
$vars = array(
'new_topic_type',
'forum_id',
'topic_ids',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_change_topic_type_after', compact($vars)));
meta_refresh(2, $redirect);
$message = $user->lang[$success_msg];
@@ -930,10 +974,11 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
'DELETE_TOPIC_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_TOPIC_PERMANENTLY', count($topic_ids)),
));
$l_confirm = (count($topic_ids) == 1) ? 'DELETE_TOPIC' : 'DELETE_TOPICS';
$count = count($topic_ids);
$l_confirm = $count === 1 ? 'DELETE_TOPIC' : 'DELETE_TOPICS';
if ($only_softdeleted)
{
$l_confirm .= '_PERMANENTLY';
$l_confirm = array($l_confirm . '_PERMANENTLY', $count);
$s_hidden_fields['delete_permanent'] = '1';
}
else if ($only_shadow || !$auth->acl_get('m_softdelete', $forum_id))
@@ -1184,10 +1229,11 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
'DELETE_POST_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_POST_PERMANENTLY', count($post_ids)),
));
$l_confirm = (count($post_ids) == 1) ? 'DELETE_POST' : 'DELETE_POSTS';
$count = count($post_ids);
$l_confirm = $count === 1 ? 'DELETE_POST' : 'DELETE_POSTS';
if ($only_softdeleted)
{
$l_confirm .= '_PERMANENTLY';
$l_confirm = array($l_confirm . '_PERMANENTLY', $count);
$s_hidden_fields['delete_permanent'] = '1';
}
else if (!$auth->acl_get('m_softdelete', $forum_id))

View File

@@ -28,9 +28,9 @@ class mcp_notes
var $p_master;
var $u_action;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)

View File

@@ -28,9 +28,9 @@ class mcp_pm_reports
var $p_master;
var $u_action;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)

View File

@@ -28,9 +28,9 @@ class mcp_queue
var $p_master;
var $u_action;
public function __construct(&$p_master)
public function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
public function main($id, $mode)

View File

@@ -28,9 +28,9 @@ class mcp_reports
var $p_master;
var $u_action;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)
@@ -246,7 +246,10 @@ class mcp_reports
$parse_flags = ($post_info['user_sig_bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
$post_info['user_sig'] = generate_text_for_display($post_info['user_sig'], $post_info['user_sig_bbcode_uid'], $post_info['user_sig_bbcode_bitfield'], $parse_flags, true);
$template->assign_vars(array(
$topic_id = (int) $post_info['topic_id'];
// So it can be sent through the event below.
$report_template = array(
'S_MCP_REPORT' => true,
'S_CLOSE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&amp;mode=report_details&amp;f=' . $post_info['forum_id'] . '&amp;p=' . $post_id),
'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
@@ -298,7 +301,33 @@ class mcp_reports
'SIGNATURE' => $post_info['user_sig'],
'U_LOOKUP_IP' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? $this->u_action . '&amp;r=' . $report_id . '&amp;p=' . $post_id . '&amp;f=' . $forum_id . '&amp;lookup=' . $post_info['poster_ip'] . '#ip' : '',
));
);
/**
* Event to add/modify MCP report details template data.
*
* @event core.mcp_report_template_data
* @var int forum_id The forum_id, the number in the f GET parameter
* @var int topic_id The topic_id of the report being viewed
* @var int post_id The post_id of the report being viewed (if 0, it is meaningless)
* @var int report_id The report_id of the report being viewed
* @var array report Array with the report data
* @var array report_template Array with the report template data
* @var array post_info Array with the reported post data
* @since 3.2.5-RC1
*/
$vars = array(
'forum_id',
'topic_id',
'post_id',
'report_id',
'report',
'report_template',
'post_info',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_report_template_data', compact($vars)));
$template->assign_vars($report_template);
$this->tpl_name = 'mcp_post';

View File

@@ -93,7 +93,11 @@ function mcp_topic_view($id, $mode, $action)
// Restore or pprove posts?
if (($action == 'restore' || $action == 'approve') && $auth->acl_get('m_approve', $topic_info['forum_id']))
{
include($phpbb_root_path . 'includes/mcp/mcp_queue.' . $phpEx);
if (!class_exists('mcp_queue'))
{
include($phpbb_root_path . 'includes/mcp/mcp_queue.' . $phpEx);
}
include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);

View File

@@ -28,9 +28,9 @@ class mcp_warn
var $p_master;
var $u_action;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)

View File

@@ -1587,6 +1587,16 @@ class parse_message extends bbcode_firstpass
'poster_id' => $user->data['user_id'],
);
/**
* Modify attachment sql array on submit
*
* @event core.modify_attachment_sql_ary_on_submit
* @var array sql_ary Array containing SQL data
* @since 3.2.6-RC1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.modify_attachment_sql_ary_on_submit', compact($vars)));
$db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$new_entry = array(
@@ -1722,6 +1732,16 @@ class parse_message extends bbcode_firstpass
'poster_id' => $user->data['user_id'],
);
/**
* Modify attachment sql array on upload
*
* @event core.modify_attachment_sql_ary_on_upload
* @var array sql_ary Array containing SQL data
* @since 3.2.6-RC1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.modify_attachment_sql_ary_on_upload', compact($vars)));
$db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));
$new_entry = array(

View File

@@ -369,7 +369,6 @@ class phpbb_questionnaire_phpbb_data_provider
'hot_threshold' => true,
'img_create_thumbnail' => true,
'img_display_inlined' => true,
'img_imagick' => true,
'img_link_height' => true,
'img_link_width' => true,
'img_max_height' => true,

View File

@@ -87,6 +87,8 @@ class ucp_activate
WHERE user_id = ' . $user_row['user_id'];
$db->sql_query($sql);
$user->reset_login_keys($user_row['user_id']);
$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_NEW_PASSWORD', false, array(
'reportee_id' => $user_row['user_id'],
$user_row['username']

View File

@@ -32,6 +32,9 @@ class ucp_groups
global $db, $user, $auth, $cache, $template;
global $request, $phpbb_container, $phpbb_log;
/** @var \phpbb\language\language $language Language object */
$language = $phpbb_container->get('language');
$user->add_lang('groups');
$return_page = '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '">', '</a>');
@@ -396,7 +399,10 @@ class ucp_groups
$action = (isset($_POST['addusers'])) ? 'addusers' : $request->variable('action', '');
$group_id = $request->variable('g', 0);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
if (!function_exists('phpbb_get_user_rank'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
add_form_key('ucp_groups');
@@ -1054,13 +1060,27 @@ class ucp_groups
if (confirm_box(true))
{
$return_manage_page = '<br /><br />' . $language->lang('RETURN_PAGE', '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>');
// Add user/s to group
if ($error = group_user_add($group_id, false, $name_ary, $group_name, $default, 0, 0, $group_row))
{
trigger_error($user->lang[$error] . $return_page);
$display_message = $language->lang($error);
if ($error == 'GROUP_USERS_INVALID')
{
// Find which users don't exist
$actual_name_ary = $name_ary;
$actual_user_id_ary = [];
user_get_id_name($actual_user_id_ary, $actual_name_ary, false, true);
$display_message = $language->lang('GROUP_USERS_INVALID', implode($language->lang('COMMA_SEPARATOR'), array_udiff($name_ary, $actual_name_ary, 'strcasecmp')));
}
trigger_error($display_message . $return_manage_page);
}
trigger_error($user->lang['GROUP_USERS_ADDED'] . '<br /><br />' . sprintf($user->lang['RETURN_PAGE'], '<a href="' . $this->u_action . '&amp;action=list&amp;g=' . $group_id . '">', '</a>'));
trigger_error($language->lang('GROUP_USERS_ADDED') . $return_manage_page);
}
else
{

View File

@@ -28,9 +28,9 @@ class ucp_main
var $p_master;
var $u_action;
function __construct(&$p_master)
function __construct($p_master)
{
$this->p_master = &$p_master;
$this->p_master = $p_master;
}
function main($id, $mode)
@@ -245,7 +245,10 @@ class ucp_main
case 'subscribed':
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
if (!function_exists('topic_status'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$user->add_lang('viewforum');
@@ -481,7 +484,10 @@ class ucp_main
break;
}
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
if (!function_exists('topic_status'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$user->add_lang('viewforum');

View File

@@ -82,7 +82,10 @@ class ucp_pm
$mode = 'view';
}
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
if (!function_exists('get_folder'))
{
include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
}
switch ($mode)
{
@@ -104,7 +107,10 @@ class ucp_pm
break;
}
include($phpbb_root_path . 'includes/ucp/ucp_pm_compose.' . $phpEx);
if (!function_exists('compose_pm'))
{
include($phpbb_root_path . 'includes/ucp/ucp_pm_compose.' . $phpEx);
}
compose_pm($id, $mode, $action, $user_folders);
$tpl_file = 'posting_body';
@@ -114,7 +120,10 @@ class ucp_pm
set_user_message_limit();
get_folder($user->data['user_id']);
include($phpbb_root_path . 'includes/ucp/ucp_pm_options.' . $phpEx);
if (!function_exists('message_options'))
{
include($phpbb_root_path . 'includes/ucp/ucp_pm_options.' . $phpEx);
}
message_options($id, $mode, $global_privmsgs_rules, $global_rule_conditions);
$tpl_file = 'ucp_pm_options';
@@ -125,8 +134,10 @@ class ucp_pm
get_folder($user->data['user_id']);
$this->p_name = 'pm';
// Call another module... please do not try this at home... Hoochie Coochie Man
include($phpbb_root_path . 'includes/ucp/ucp_main.' . $phpEx);
if (!class_exists('ucp_main'))
{
include($phpbb_root_path . 'includes/ucp/ucp_main.' . $phpEx);
}
$module = new ucp_main($this);
$module->u_action = $this->u_action;
@@ -375,7 +386,10 @@ class ucp_pm
if ($action == 'view_folder')
{
include($phpbb_root_path . 'includes/ucp/ucp_pm_viewfolder.' . $phpEx);
if (!function_exists('view_folder'))
{
include($phpbb_root_path . 'includes/ucp/ucp_pm_viewfolder.' . $phpEx);
}
view_folder($id, $mode, $folder_id, $folder);
$tpl_file = 'ucp_pm_viewfolder';
@@ -393,7 +407,10 @@ class ucp_pm
trigger_error('NO_MESSAGE');
}
include($phpbb_root_path . 'includes/ucp/ucp_pm_viewmessage.' . $phpEx);
if (!function_exists('view_message'))
{
include($phpbb_root_path . 'includes/ucp/ucp_pm_viewmessage.' . $phpEx);
}
view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row);
$tpl_file = ($view == 'print') ? 'ucp_pm_viewmessage_print' : 'ucp_pm_viewmessage';

View File

@@ -33,9 +33,20 @@ function compose_pm($id, $mode, $action, $user_folders = array())
// Needed for handle_message_list_actions()
global $refresh, $submit, $preview;
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
if (!function_exists('generate_smilies'))
{
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
}
if (!function_exists('display_custom_bbcodes'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
if (!class_exists('parse_message'))
{
include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
}
if (!$action)
{
@@ -986,7 +997,11 @@ function compose_pm($id, $mode, $action, $user_folders = array())
$quote_attributes['post_id'] = $post['msg_id'];
}
phpbb_format_quote($bbcode_status, $quote_attributes, $phpbb_container->get('text_formatter.utils'), $message_parser, $message_link);
/** @var \phpbb\language\language $language */
$language = $phpbb_container->get('language');
/** @var \phpbb\textformatter\utils_interface $text_formatter_utils */
$text_formatter_utils = $phpbb_container->get('text_formatter.utils');
phpbb_format_quote($language, $message_parser, $text_formatter_utils, $bbcode_status, $quote_attributes, $message_link);
}
if (($action == 'reply' || $action == 'quote' || $action == 'quotepost') && !$preview && !$refresh)
@@ -1191,7 +1206,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())
$controller_helper = $phpbb_container->get('controller.helper');
// Start assigning vars for main posting page ...
$template->assign_vars(array(
$template_ary = array(
'L_POST_A' => $page_title,
'L_ICON' => $user->lang['PM_ICON'],
'L_MESSAGE_BODY_EXPLAIN' => $user->lang('MESSAGE_BODY_EXPLAIN', (int) $config['max_post_chars']),
@@ -1236,7 +1251,19 @@ function compose_pm($id, $mode, $action, $user_folders = array())
'S_CLOSE_PROGRESS_WINDOW' => isset($_POST['add_file']),
'U_PROGRESS_BAR' => append_sid("{$phpbb_root_path}posting.$phpEx", 'f=0&amp;mode=popup'),
'UA_PROGRESS_BAR' => addslashes(append_sid("{$phpbb_root_path}posting.$phpEx", 'f=0&amp;mode=popup')),
));
);
/**
* Modify the default template vars
*
* @event core.ucp_pm_compose_template
* @var array template_ary Template variables
* @since 3.2.6-RC1
*/
$vars = array('template_ary');
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_template', compact($vars)));
$template->assign_vars($template_ary);
// Build custom bbcodes array
display_custom_bbcodes();

View File

@@ -39,7 +39,7 @@ function view_folder($id, $mode, $folder_id, $folder)
// Grab icons
$icons = $cache->obtain_icons();
$color_rows = array('marked', 'replied');
$color_rows = array('message_reported', 'marked', 'replied');
$_module = new p_master();
$_module->list_modules('ucp');
@@ -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

@@ -296,7 +296,9 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
* @var array cp_row Array with senders custom profile field data
* @var array msg_data Template array with message data
* @var array user_info User data of the sender
* @var array attachments Attachments data
* @since 3.2.2-RC1
* @changed 3.2.5-RC1 Added attachments
*/
$vars = array(
'id',
@@ -308,6 +310,7 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
'cp_row',
'msg_data',
'user_info',
'attachments',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_view_message', compact($vars)));

View File

@@ -469,8 +469,15 @@ class ucp_profile
trigger_error('NO_AUTH_SIGNATURE');
}
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
if (!function_exists('generate_smilies'))
{
include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
}
if (!function_exists('display_custom_bbcodes'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$preview = $request->is_set_post('preview');

View File

@@ -55,6 +55,17 @@ if (($mark_notification = $request->variable('mark_notification', 0)))
$notification->mark_read();
/**
* You can use this event to perform additional tasks or redirect user elsewhere.
*
* @event core.index_mark_notification_after
* @var int mark_notification Notification ID
* @var \phpbb\notification\type\type_interface notification Notification instance
* @since 3.2.6-RC1
*/
$vars = array('mark_notification', 'notification');
extract($phpbb_dispatcher->trigger_event('core.index_mark_notification_after', compact($vars)));
if ($request->is_ajax())
{
$json_response = new \phpbb\json_response();
@@ -200,6 +211,9 @@ 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

@@ -20,9 +20,9 @@ define('PHPBB_ENVIRONMENT', 'production');
$phpbb_root_path = '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
if (version_compare(PHP_VERSION, '5.4') < 0)
if (version_compare(PHP_VERSION, '5.4.7', '<') || version_compare(PHP_VERSION, '7.3-dev', '>='))
{
die('You are running an unsupported PHP version. Please upgrade to PHP 5.4.0 or higher before trying to install or update to phpBB 3.2');
die('You are running an unsupported PHP version. Please upgrade to PHP equal to or greater than 5.4.7 but less than 7.3-dev in order to install or update to phpBB 3.2');
}
$startup_new_path = $phpbb_root_path . 'install/update/update/new/install/startup.' . $phpEx;

View File

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

View File

@@ -1694,7 +1694,6 @@ function phpbb_import_attach_config()
$config->set('img_create_thumbnail', $attach_config['img_create_thumbnail']);
$config->set('img_max_thumb_width', 400);
$config->set('img_min_thumb_filesize', $attach_config['img_min_thumb_filesize']);
$config->set('img_imagick', $attach_config['img_imagick']);
}
/**

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

View File

@@ -149,7 +149,6 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('hot_threshold', '2
INSERT INTO phpbb_config (config_name, config_value) VALUES ('icons_path', 'images/icons');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_create_thumbnail', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_display_inlined', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_imagick', '');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_link_height', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_link_width', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('img_max_height', '0');
@@ -270,9 +269,9 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('smilies_per_page',
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_auth_method', 'PLAIN');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_delivery', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_host', '');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_password', '');
INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('smtp_password', '', 1);
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_port', '25');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('smtp_username', '');
INSERT INTO phpbb_config (config_name, config_value, is_dynamic) VALUES ('smtp_username', '', 1);
INSERT INTO phpbb_config (config_name, config_value) VALUES ('teampage_memberships', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('teampage_forums', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('topics_per_page', '25');
@@ -280,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.4-RC1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.2.7-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

@@ -111,8 +111,6 @@ $lang = array_merge($lang, array(
'IMAGE_LINK_SIZE' => 'Image link dimensions',
'IMAGE_LINK_SIZE_EXPLAIN' => 'Display image attachment as an inline text link if image is larger than this. To disable this behaviour, set the values to 0px by 0px.',
'IMAGICK_PATH' => 'ImageMagick path',
'IMAGICK_PATH_EXPLAIN' => 'Full path to the imagemagick convert application, e.g. <samp>/usr/bin/</samp>.',
'MAX_ATTACHMENTS' => 'Maximum number of attachments per post',
'MAX_ATTACHMENTS_PM' => 'Maximum number of attachments per private message',
@@ -135,7 +133,6 @@ $lang = array_merge($lang, array(
'NO_EXT_GROUP_SPECIFIED' => 'No extension group specified.',
'NO_FILE_CAT' => 'None',
'NO_IMAGE' => 'No image',
'NO_THUMBNAIL_SUPPORT' => 'Thumbnail support has been disabled. For proper functionality either the GD extension need to be available or imagemagick being installed. Both were not found.',
'NO_UPLOAD_DIR' => 'The upload directory you specified does not exist.',
'NO_WRITE_UPLOAD' => 'The upload directory you specified cannot be written to. Please alter the permissions to allow the webserver to write to it.',
@@ -147,7 +144,6 @@ $lang = array_merge($lang, array(
'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude <em>disallowed</em> IPs/hostnames',
'RESYNC_FILES_STATS_CONFIRM' => 'Are you sure you wish to resynchronise file statistics?',
'SEARCH_IMAGICK' => 'Search for ImageMagick',
'SECURE_ALLOW_DENY' => 'Allow/Deny list',
'SECURE_ALLOW_DENY_EXPLAIN' => 'Change the default behaviour when secure downloads are enabled of the Allow/Deny list to that of a <strong>whitelist</strong> (Allow) or a <strong>blacklist</strong> (Deny).',
'SECURE_DOWNLOADS' => 'Enable secure downloads',

View File

@@ -111,9 +111,9 @@ $lang = array_merge($lang, array(
'ALLOW_GRAVATAR' => 'Enable gravatar avatars',
'ALLOW_LOCAL' => 'Enable gallery avatars',
'ALLOW_REMOTE' => 'Enable remote avatars',
'ALLOW_REMOTE_EXPLAIN' => 'Avatars linked to from another website.',
'ALLOW_REMOTE_EXPLAIN' => 'Avatars linked to from another website.<br><em><strong class="error">Warning:</strong> Enabling this feature might allow users to check for the existence of files and services that are only accessible on the local network.</em>',
'ALLOW_REMOTE_UPLOAD' => 'Enable remote avatar uploading',
'ALLOW_REMOTE_UPLOAD_EXPLAIN' => 'Allow uploading of avatars from another website.',
'ALLOW_REMOTE_UPLOAD_EXPLAIN' => 'Allow uploading of avatars from another website.<br><em><strong class="error">Warning:</strong> Enabling this feature might allow users to check for the existence of files and services that are only accessible on the local network.</em>',
'ALLOW_UPLOAD' => 'Enable avatar uploading',
'AVATAR_GALLERY_PATH' => 'Avatar gallery path',
'AVATAR_GALLERY_PATH_EXPLAIN' => 'Path under your phpBB root directory for pre-loaded images, e.g. <samp>images/avatars/gallery</samp>.<br>Double dots like <samp>../</samp> will be stripped from the path for security reasons.',

View File

@@ -325,6 +325,7 @@ $lang = array_merge($lang, array(
'TOTAL_SIZE' => 'Total size',
'UCP' => 'User Control Panel',
'URL_INVALID' => 'The provided URL for the setting “%1$s” is invalid.',
'USERNAMES_EXPLAIN' => 'Place each username on a separate line.',
'USER_CONTROL_PANEL' => 'User Control Panel',

View File

@@ -38,14 +38,15 @@ if (empty($lang) || !is_array($lang))
// Database Backup/Restore
$lang = array_merge($lang, array(
'ACP_BACKUP_EXPLAIN' => 'Here you can backup all your phpBB related data. You may store the resulting archive in your <samp>store/</samp> folder or download it directly. Depending on your server configuration you may be able to compress the file in a number of formats.',
'ACP_BACKUP_EXPLAIN' => 'Here you can backup all your phpBB related data. The resulting archive will be stored in your <samp>store/</samp> folder. Depending on your server configuration you may be able to compress the file in a number of formats.',
'ACP_RESTORE_EXPLAIN' => 'This will perform a full restore of all phpBB tables from a saved file. If your server supports it you may use a gzip or bzip2 compressed text file and it will automatically be decompressed. <strong>WARNING</strong> This will overwrite any existing data. The restore may take a long time to process please do not move from this page till it is complete. Backups are stored in the <samp>store/</samp> folder and are assumed to be generated by phpBBs backup functionality. Restoring backups that were not created by the built in system may or may not work.',
'BACKUP_DELETE' => 'The backup file has been deleted successfully.',
'BACKUP_INVALID' => 'The selected file to backup is invalid.',
'BACKUP_OPTIONS' => 'Backup options',
'BACKUP_SUCCESS' => 'The backup file has been created successfully.',
'BACKUP_TYPE' => 'Backup type',
'BACKUP_DELETE' => 'The backup file has been deleted successfully.',
'BACKUP_INVALID' => 'The selected file to backup is invalid.',
'BACKUP_NOT_SUPPORTED' => 'The selected backup is not supported',
'BACKUP_OPTIONS' => 'Backup options',
'BACKUP_SUCCESS' => 'The backup file has been created successfully.',
'BACKUP_TYPE' => 'Backup type',
'DATABASE' => 'Database utilities',
'DATA_ONLY' => 'Data only',

View File

@@ -111,6 +111,7 @@ $lang = array_merge($lang, array(
'GROUP_USERS_ADDED' => 'New users added to group successfully.',
'GROUP_USERS_EXIST' => 'The selected users are already members.',
'GROUP_USERS_REMOVE' => 'Users removed from group and new defaults set successfully.',
'GROUP_USERS_INVALID' => 'No users were added to the group as the following usernames do not exist: %s',
'LEGEND_EXPLAIN' => 'These are the groups which are displayed in the group legend:',
'LEGEND_SETTINGS' => 'Legend settings',

View File

@@ -54,7 +54,7 @@ $lang = array_merge($lang, array(
<br />
<p>For further information on setting up and managing permissions on your phpBB3 board, please see the section on <a href="https://www.phpbb.com/support/docs/en/3.1/ug/quickstart/permissions/">Setting permissions of our Quick Start Guide</a>.</p>
<p>For further information on setting up and managing permissions on your phpBB3 board, please see the section on <a href="https://www.phpbb.com/support/docs/en/3.2/ug/quickstart/permissions/">Setting permissions of our Quick Start Guide</a>.</p>
',
'ACL_NEVER' => 'Never',

View File

@@ -780,6 +780,10 @@ $lang = array_merge($lang, array(
'TOPIC_REVIEW' => 'Topic review',
'TOPIC_TITLE' => 'Topic title',
'TOPIC_UNAPPROVED' => 'This topic has not been approved.',
'TOPIC_UNAPPROVED_FORUM' => array(
1 => 'Topic awaiting approval',
2 => 'Topics awaiting approval',
),
'TOPIC_DELETED' => 'This topic has been deleted.',
'TOTAL_ATTACHMENTS' => 'Attachment(s)',
'TOTAL_LOGS' => array(

View File

@@ -1,4 +1,4 @@
Subject: Private Message report - "{TOPIC_TITLE}"
Subject: Private Message report - "{SUBJECT}"
Hello {USERNAME},

View File

@@ -145,6 +145,7 @@ $lang = array_merge($lang, array(
'LOAD_DRAFT_EXPLAIN' => 'Here you are able to select the draft you want to continue writing. Your current post will be cancelled, all current post contents will be deleted. View, edit and delete drafts within your User Control Panel.',
'LOGIN_EXPLAIN_BUMP' => 'You need to login in order to bump topics within this forum.',
'LOGIN_EXPLAIN_DELETE' => 'You need to login in order to delete posts within this forum.',
'LOGIN_EXPLAIN_SOFT_DELETE' => 'You need to login in order to soft-delete posts within this forum.',
'LOGIN_EXPLAIN_POST' => 'You need to login in order to post within this forum.',
'LOGIN_EXPLAIN_QUOTE' => 'You need to login in order to quote posts within this forum.',
'LOGIN_EXPLAIN_REPLY' => 'You need to login in order to reply to topics within this forum.',

View File

@@ -272,6 +272,7 @@ $lang = array_merge($lang, array(
'IMPORTANT_NEWS' => 'Important announcements',
'INVALID_USER_BIRTHDAY' => 'The entered birthday is not a valid date.',
'INVALID_CHARS_USERNAME' => 'The username contains forbidden characters.',
'INVALID_EMOJIS_USERNAME' => 'The username contains forbidden characters (Emoji).',
'INVALID_CHARS_NEW_PASSWORD'=> 'The password does not contain the required characters.',
'ITEMS_REQUIRED' => 'The items marked with * are required profile fields and need to be filled out.',
@@ -302,6 +303,7 @@ $lang = array_merge($lang, array(
'MESSAGE_EDITED' => 'Message successfully edited.',
'MESSAGE_HISTORY' => 'Message history',
'MESSAGE_REMOVED_FROM_OUTBOX' => 'This message was deleted by its author.',
'MESSAGE_REPORTED_MESSAGE' => 'Reported message',
'MESSAGE_SENT_ON' => 'on',
'MESSAGE_STORED' => 'This message has been sent successfully.',
'MESSAGE_TO' => 'To',

View File

@@ -173,7 +173,7 @@ switch ($mode)
'LEFT_JOIN' => array(
array(
'FROM' => array(USERS_TABLE => 'u'),
'ON' => 'ug.user_id = u.user_id AND ug.user_pending = 0',
'ON' => 'ug.user_id = u.user_id',
),
array(
'FROM' => array(GROUPS_TABLE => 'g'),
@@ -181,7 +181,7 @@ switch ($mode)
),
),
'WHERE' => $db->sql_in_set('g.group_id', $group_ids, false, true),
'WHERE' => $db->sql_in_set('g.group_id', $group_ids, false, true) . ' AND ug.user_pending = 0',
'ORDER_BY' => 'u.username_clean ASC',
);
@@ -489,9 +489,31 @@ switch ($mode)
}
// Get user...
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE ' . (($username) ? "username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'" : "user_id = $user_id");
$sql_array = array(
'SELECT' => 'u.*',
'FROM' => array(
USERS_TABLE => 'u'
),
'WHERE' => (($username) ? "u.username_clean = '" . $db->sql_escape(utf8_clean_string($username)) . "'" : "u.user_id = $user_id"),
);
/**
* Modify user data SQL before member profile row is created
*
* @event core.memberlist_modify_viewprofile_sql
* @var int user_id The user ID
* @var string username The username
* @var array sql_array Array containing the main query
* @since 3.2.6-RC1
*/
$vars = array(
'user_id',
'username',
'sql_array',
);
extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_viewprofile_sql', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$member = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
@@ -523,12 +545,37 @@ switch ($mode)
$sql_uid_ary = ($auth_hidden_groups) ? array($user_id) : array($user_id, (int) $user->data['user_id']);
// Do the SQL thang
$sql = 'SELECT g.group_id, g.group_name, g.group_type, ug.user_id
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
WHERE ' . $db->sql_in_set('ug.user_id', $sql_uid_ary) . '
AND g.group_id = ug.group_id
AND ug.user_pending = 0';
$result = $db->sql_query($sql);
$sql_ary = [
'SELECT' => 'g.group_id, g.group_name, g.group_type, ug.user_id',
'FROM' => [
GROUPS_TABLE => 'g',
],
'LEFT_JOIN' => [
[
'FROM' => [USER_GROUP_TABLE => 'ug'],
'ON' => 'g.group_id = ug.group_id',
],
],
'WHERE' => $db->sql_in_set('ug.user_id', $sql_uid_ary) . '
AND ug.user_pending = 0',
];
/**
* Modify the query used to get the group data
*
* @event core.modify_memberlist_viewprofile_group_sql
* @var array sql_ary Array containing the query
* @since 3.2.6-RC1
*/
$vars = array(
'sql_ary',
);
extract($phpbb_dispatcher->trigger_event('core.modify_memberlist_viewprofile_group_sql', compact($vars)));
$result = $db->sql_query($db->sql_build_query('SELECT', $sql_ary));
// Divide data into profile data and current user data
$profile_groups = $user_groups = array();
@@ -567,6 +614,20 @@ switch ($mode)
unset($user_groups);
asort($group_sort);
/**
* Modify group data before options is created and data is unset
*
* @event core.modify_memberlist_viewprofile_group_data
* @var array group_data Array containing the group data
* @var array group_sort Array containing the sorted group data
* @since 3.2.6-RC1
*/
$vars = array(
'group_data',
'group_sort',
);
extract($phpbb_dispatcher->trigger_event('core.modify_memberlist_viewprofile_group_data', compact($vars)));
$group_options = '';
foreach ($group_sort as $group_id => $null)
{
@@ -702,42 +763,58 @@ switch ($mode)
$member['posts_in_queue'] = 0;
}
$template->assign_vars(array(
'L_POSTS_IN_QUEUE' => $user->lang('NUM_POSTS_IN_QUEUE', $member['posts_in_queue']),
// Define the main array of vars to assign to memberlist_view.html
$template_ary = array(
'L_POSTS_IN_QUEUE' => $user->lang('NUM_POSTS_IN_QUEUE', $member['posts_in_queue']),
'POSTS_DAY' => $user->lang('POST_DAY', $posts_per_day),
'POSTS_PCT' => $user->lang('POST_PCT', $percentage),
'POSTS_DAY' => $user->lang('POST_DAY', $posts_per_day),
'POSTS_PCT' => $user->lang('POST_PCT', $percentage),
'SIGNATURE' => $member['user_sig'],
'POSTS_IN_QUEUE'=> $member['posts_in_queue'],
'SIGNATURE' => $member['user_sig'],
'POSTS_IN_QUEUE' => $member['posts_in_queue'],
'PM_IMG' => $user->img('icon_contact_pm', $user->lang['SEND_PRIVATE_MESSAGE']),
'L_SEND_EMAIL_USER' => $user->lang('SEND_EMAIL_USER', $member['username']),
'EMAIL_IMG' => $user->img('icon_contact_email', $user->lang['EMAIL']),
'JABBER_IMG' => $user->img('icon_contact_jabber', $user->lang['JABBER']),
'SEARCH_IMG' => $user->img('icon_user_search', $user->lang['SEARCH']),
'PM_IMG' => $user->img('icon_contact_pm', $user->lang['SEND_PRIVATE_MESSAGE']),
'L_SEND_EMAIL_USER' => $user->lang('SEND_EMAIL_USER', $member['username']),
'EMAIL_IMG' => $user->img('icon_contact_email', $user->lang['EMAIL']),
'JABBER_IMG' => $user->img('icon_contact_jabber', $user->lang['JABBER']),
'SEARCH_IMG' => $user->img('icon_user_search', $user->lang['SEARCH']),
'S_PROFILE_ACTION' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group'),
'S_GROUP_OPTIONS' => $group_options,
'S_CUSTOM_FIELDS' => (isset($profile_fields['row']) && count($profile_fields['row'])) ? true : false,
'S_PROFILE_ACTION' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group'),
'S_GROUP_OPTIONS' => $group_options,
'S_CUSTOM_FIELDS' => (isset($profile_fields['row']) && count($profile_fields['row'])) ? true : false,
'U_USER_ADMIN' => ($auth->acl_get('a_user')) ? append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&amp;mode=overview&amp;u=' . $user_id, true, $user->session_id) : '',
'U_USER_BAN' => ($auth->acl_get('m_ban') && $user_id != $user->data['user_id']) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=ban&amp;mode=user&amp;u=' . $user_id, true, $user->session_id) : '',
'U_MCP_QUEUE' => ($auth->acl_getf_global('m_approve')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue', true, $user->session_id) : '',
'U_USER_ADMIN' => ($auth->acl_get('a_user')) ? append_sid("{$phpbb_admin_path}index.$phpEx", 'i=users&amp;mode=overview&amp;u=' . $user_id, true, $user->session_id) : '',
'U_USER_BAN' => ($auth->acl_get('m_ban') && $user_id != $user->data['user_id']) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=ban&amp;mode=user&amp;u=' . $user_id, true, $user->session_id) : '',
'U_MCP_QUEUE' => ($auth->acl_getf_global('m_approve')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue', true, $user->session_id) : '',
'U_SWITCH_PERMISSIONS' => ($auth->acl_get('a_switchperm') && $user->data['user_id'] != $user_id) ? append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=switch_perm&amp;u={$user_id}&amp;hash=" . generate_link_hash('switchperm')) : '',
'U_EDIT_SELF' => ($user_id == $user->data['user_id'] && $auth->acl_get('u_chgprofileinfo')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=ucp_profile&amp;mode=profile_info') : '',
'U_SWITCH_PERMISSIONS' => ($auth->acl_get('a_switchperm') && $user->data['user_id'] != $user_id) ? append_sid("{$phpbb_root_path}ucp.$phpEx", "mode=switch_perm&amp;u={$user_id}&amp;hash=" . generate_link_hash('switchperm')) : '',
'U_EDIT_SELF' => ($user_id == $user->data['user_id'] && $auth->acl_get('u_chgprofileinfo')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=ucp_profile&amp;mode=profile_info') : '',
'S_USER_NOTES' => ($user_notes_enabled) ? true : false,
'S_WARN_USER' => ($warn_user_enabled) ? true : false,
'S_ZEBRA' => ($user->data['user_id'] != $user_id && $user->data['is_registered'] && $zebra_enabled) ? true : false,
'U_ADD_FRIEND' => (!$friend && !$foe && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;add=' . urlencode(htmlspecialchars_decode($member['username']))) : '',
'U_ADD_FOE' => (!$friend && !$foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;mode=foes&amp;add=' . urlencode(htmlspecialchars_decode($member['username']))) : '',
'U_REMOVE_FRIEND' => ($friend && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;usernames[]=' . $user_id) : '',
'U_REMOVE_FOE' => ($foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;mode=foes&amp;usernames[]=' . $user_id) : '',
'S_USER_NOTES' => ($user_notes_enabled) ? true : false,
'S_WARN_USER' => ($warn_user_enabled) ? true : false,
'S_ZEBRA' => ($user->data['user_id'] != $user_id && $user->data['is_registered'] && $zebra_enabled) ? true : false,
'U_ADD_FRIEND' => (!$friend && !$foe && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;add=' . urlencode(htmlspecialchars_decode($member['username']))) : '',
'U_ADD_FOE' => (!$friend && !$foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;mode=foes&amp;add=' . urlencode(htmlspecialchars_decode($member['username']))) : '',
'U_REMOVE_FRIEND' => ($friend && $friends_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;usernames[]=' . $user_id) : '',
'U_REMOVE_FOE' => ($foe && $foes_enabled) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=zebra&amp;remove=1&amp;mode=foes&amp;usernames[]=' . $user_id) : '',
'U_CANONICAL' => generate_board_url() . '/' . append_sid("memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $user_id, true, ''),
));
'U_CANONICAL' => generate_board_url() . '/' . append_sid("memberlist.$phpEx", 'mode=viewprofile&amp;u=' . $user_id, true, ''),
);
/**
* Modify user's template vars before we display the profile
*
* @event core.memberlist_modify_view_profile_template_vars
* @var array template_ary Array with user's template vars
* @since 3.2.6-RC1
*/
$vars = array(
'template_ary',
);
extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_view_profile_template_vars', compact($vars)));
// Assign vars to memberlist_view.html
$template->assign_vars($template_ary);
if (!empty($profile_fields['row']))
{
@@ -1308,11 +1385,6 @@ switch ($mode)
}
$sort_params[] = "mode=$mode";
$pagination_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&amp;', $params));
$sort_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&amp;', $sort_params));
unset($search_params, $sort_params);
$u_first_char_params = implode('&amp;', $u_first_char_params);
$u_first_char_params .= ($u_first_char_params) ? '&amp;' : '';
@@ -1324,16 +1396,47 @@ switch ($mode)
}
$first_characters['other'] = $user->lang['OTHER'];
$first_char_block_vars = [];
foreach ($first_characters as $char => $desc)
{
$template->assign_block_vars('first_char', array(
$first_char_block_vars[] = [
'DESC' => $desc,
'VALUE' => $char,
'S_SELECTED' => ($first_char == $char) ? true : false,
'U_SORT' => append_sid("{$phpbb_root_path}memberlist.$phpEx", $u_first_char_params . 'first_char=' . $char) . '#memberlist',
));
];
}
/**
* Modify memberlist sort and pagination parameters
*
* @event core.memberlist_modify_sort_pagination_params
* @var array sort_params Array with URL parameters for sorting
* @var array params Array with URL parameters for pagination
* @var array first_characters Array that maps each letter in a-z, 'other' and the empty string to their display representation
* @var string u_first_char_params Concatenated URL parameters for first character search links
* @var array first_char_block_vars Template block variables for each first character
* @var int total_users Total number of users found in this search
* @since 3.2.6-RC1
*/
$vars = [
'sort_params',
'params',
'first_characters',
'u_first_char_params',
'first_char_block_vars',
'total_users',
];
extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_sort_pagination_params', compact($vars)));
$template->assign_block_vars_array('first_char', $first_char_block_vars);
$pagination_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&amp;', $params));
$sort_url = append_sid("{$phpbb_root_path}memberlist.$phpEx", implode('&amp;', $sort_params));
unset($search_params, $sort_params);
// Some search user specific data
if (($mode == '' || $mode == 'searchuser') && ($config['load_search'] || $auth->acl_get('a_')))
{
@@ -1469,19 +1572,58 @@ switch ($mode)
// Do the SQL thang
if ($mode == 'group')
{
$sql = "SELECT u.*
$sql_select
FROM " . USERS_TABLE . " u
$sql_from
WHERE " . $db->sql_in_set('u.user_id', $user_list) . "
$sql_where_data";
$sql_from_ary = explode(',', $sql_from);
$extra_tables = [];
foreach ($sql_from_ary as $entry)
{
$table_data = explode(' ', trim($entry));
if (empty($table_data[0]) || empty($table_data[1]))
{
continue;
}
$extra_tables[$table_data[0]] = $table_data[1];
}
$sql_array = array(
'SELECT' => 'u.*' . $sql_select,
'FROM' => array_merge([USERS_TABLE => 'u'], $extra_tables),
'WHERE' => $db->sql_in_set('u.user_id', $user_list) . $sql_where_data . '',
);
}
else
{
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('user_id', $user_list);
$sql_array = array(
'SELECT' => 'u.*',
'FROM' => array(
USERS_TABLE => 'u'
),
'WHERE' => $db->sql_in_set('u.user_id', $user_list),
);
}
/**
* Modify user data SQL before member row is created
*
* @event core.memberlist_modify_memberrow_sql
* @var string mode Memberlist mode
* @var string sql_select Additional select statement
* @var string sql_from Additional from statement
* @var array sql_array Array containing the main query
* @var array user_list Array containing list of users
* @since 3.2.6-RC1
*/
$vars = array(
'mode',
'sql_select',
'sql_from',
'sql_array',
'user_list',
);
extract($phpbb_dispatcher->trigger_event('core.memberlist_modify_memberrow_sql', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$id_cache = array();
@@ -1492,9 +1634,10 @@ switch ($mode)
$id_cache[$row['user_id']] = $row;
}
$db->sql_freeresult($result);
// Load custom profile fields
// Load custom profile fields if required
if ($config['load_cpf_memberlist'])
{
// Grab all profile fields from users in id cache for later use - similar to the poster cache

View File

@@ -191,7 +191,7 @@ class oauth extends \phpbb\auth\provider\base
return $provider->login($username, $password);
}
// Requst the name of the OAuth service
// Request the name of the OAuth service
$service_name_original = $this->request->variable('oauth_service', '', false);
$service_name = 'auth.provider.oauth.service.' . strtolower($service_name_original);
if ($service_name_original === '' || !array_key_exists($service_name, $this->service_providers))
@@ -221,24 +221,33 @@ class oauth extends \phpbb\auth\provider\base
'provider' => $service_name_original,
'oauth_provider_id' => $unique_id
);
$sql = 'SELECT user_id FROM ' . $this->auth_provider_oauth_token_account_assoc . '
WHERE ' . $this->db->sql_build_array('SELECT', $data);
$result = $this->db->sql_query($sql);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
$redirect_data = array(
'auth_provider' => 'oauth',
'login_link_oauth_service' => $service_name_original,
);
/**
* Event is triggered before check if provider is already associated with an account
*
* @event core.oauth_login_after_check_if_provider_id_has_match
* @var array row User row
* @var array data Provider data
* @var \OAuth\Common\Service\ServiceInterface service OAuth service
* @var array row User row
* @var array data Provider data
* @var array redirect_data Data to be appended to the redirect url
* @var \OAuth\Common\Service\ServiceInterface service OAuth service
* @since 3.2.3-RC1
* @changed 3.2.6-RC1 Added redirect_data
*/
$vars = array(
'row',
'data',
'redirect_data',
'service',
);
extract($this->dispatcher->trigger_event('core.oauth_login_after_check_if_provider_id_has_match', compact($vars)));
@@ -250,10 +259,7 @@ class oauth extends \phpbb\auth\provider\base
'status' => LOGIN_SUCCESS_LINK_PROFILE,
'error_msg' => 'LOGIN_OAUTH_ACCOUNT_NOT_LINKED',
'user_row' => array(),
'redirect_data' => array(
'auth_provider' => 'oauth',
'login_link_oauth_service' => $service_name_original,
),
'redirect_data' => $redirect_data,
);
}
@@ -270,11 +276,36 @@ class oauth extends \phpbb\auth\provider\base
throw new \Exception('AUTH_PROVIDER_OAUTH_ERROR_INVALID_ENTRY');
}
/**
* Check if the user is banned.
* The fourth parameter, return, has to be true,
* otherwise the OAuth login is still called and
* an uncaught exception is thrown as there is no
* token stored in the database.
*/
$ban = $this->user->check_ban($row['user_id'], $row['user_ip'], $row['user_email'], true);
if (!empty($ban))
{
$till_date = !empty($ban['ban_end']) ? $this->user->format_date($ban['ban_end']) : '';
$message = !empty($ban['ban_end']) ? 'BOARD_BAN_TIME' : 'BOARD_BAN_PERM';
$contact_link = phpbb_get_board_contact_link($this->config, $this->phpbb_root_path, $this->php_ext);
$message = $this->user->lang($message, $till_date, '<a href="' . $contact_link . '">', '</a>');
$message .= !empty($ban['ban_give_reason']) ? '<br /><br />' . $this->user->lang('BOARD_BAN_REASON', $ban['ban_give_reason']) : '';
$message .= !empty($ban['ban_triggered_by']) ? '<br /><br /><em>' . $this->user->lang('BAN_TRIGGERED_BY_' . strtoupper($ban['ban_triggered_by'])) . '</em>' : '';
return array(
'status' => LOGIN_BREAK,
'error_msg' => $message,
'user_row' => $row,
);
}
// Update token storage to store the user_id
$storage->set_user_id($row['user_id']);
/**
* Event is triggered after user is successfuly logged in via OAuth.
* Event is triggered after user is successfully logged in via OAuth.
*
* @event core.auth_oauth_login_after
* @var array row User row
@@ -674,6 +705,7 @@ class oauth extends \phpbb\auth\provider\base
'oauth_service' => $actual_name,
),
'SERVICE_ID' => $actual_name,
'SERVICE_NAME' => $this->user->lang['AUTH_PROVIDER_OAUTH_SERVICE_' . strtoupper($actual_name)],
'UNIQUE_ID' => (isset($oauth_user_ids[$actual_name])) ? $oauth_user_ids[$actual_name] : null,
);
@@ -707,7 +739,7 @@ class oauth extends \phpbb\auth\provider\base
AND user_id = " . (int) $user_id;
$this->db->sql_query($sql);
// Clear all tokens belonging to the user on this servce
// Clear all tokens belonging to the user on this service
$service_name = 'auth.provider.oauth.service.' . strtolower($link_data['oauth_service']);
$storage = new \phpbb\auth\provider\oauth\token_storage($this->db, $this->user, $this->auth_provider_oauth_token_storage_table, $this->auth_provider_oauth_state_table);
$storage->clearToken($service_name);

View File

@@ -148,7 +148,8 @@ class upload extends \phpbb\avatar\driver\driver
// Do not allow specifying the port (see RFC 3986) or IP addresses
// remote_upload() will do its own check for allowed filetypes
if (preg_match('@^(http|https|ftp)://[^/:?#]+:[0-9]+[/:?#]@i', $url) ||
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) ||
preg_match('@^(http|https|ftp)://[^/:?#]+:[0-9]+[/:?#]@i', $url) ||
preg_match('#^(http|https|ftp)://(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])#i', $url) ||
preg_match('#^(http|https|ftp)://(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){0,5}(?:[\dA-F]{1,4}(?::[\dA-F]{1,4})?|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:)|(?:::))#i', $url))
{

View File

@@ -271,7 +271,7 @@ class manager
$config_name = $driver->get_config_name();
return array(
'allow_avatar_' . $config_name => array('lang' => 'ALLOW_' . strtoupper(str_replace('\\', '_', $config_name)), 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'allow_avatar_' . $config_name => array('lang' => 'ALLOW_' . strtoupper(str_replace('\\', '_', $config_name)), 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
);
}

View File

@@ -51,7 +51,7 @@ class gd extends captcha_abstract
return 'CAPTCHA_GD';
}
function acp_page($id, &$module)
function acp_page($id, $module)
{
global $user, $template, $phpbb_log, $request;
global $config;

View File

@@ -33,7 +33,7 @@ class gd_wave extends captcha_abstract
return '\\phpbb\\captcha\\gd_wave';
}
function acp_page($id, &$module)
function acp_page($id, $module)
{
global $user;

View File

@@ -33,7 +33,7 @@ class nogd extends captcha_abstract
return '\\phpbb\\captcha\\non_gd';
}
function acp_page($id, &$module)
function acp_page($id, $module)
{
global $user;

View File

@@ -107,8 +107,7 @@ class qa
$sql = 'SELECT q.question_id, q.lang_iso
FROM ' . $this->table_captcha_questions . ' q, ' . $this->table_captcha_answers . ' a
WHERE q.question_id = a.question_id
GROUP BY lang_iso';
WHERE q.question_id = a.question_id';
$result = $db->sql_query($sql, 7200);
while ($row = $db->sql_fetchrow($result))
@@ -638,7 +637,7 @@ class qa
/**
* API function - The ACP backend, this marks the end of the easy methods
*/
function acp_page($id, &$module)
function acp_page($id, $module)
{
global $config, $request, $phpbb_log, $template, $user;
@@ -776,7 +775,7 @@ class qa
/**
* This handles the list overview
*/
function acp_question_list(&$module)
function acp_question_list($module)
{
global $db, $template;

View File

@@ -66,7 +66,7 @@ class recaptcha extends captcha_abstract
throw new \Exception('No generator class given.');
}
function acp_page($id, &$module)
function acp_page($id, $module)
{
global $config, $template, $user, $phpbb_log, $request;

View File

@@ -18,6 +18,11 @@ use Symfony\Component\Console\Style\SymfonyStyle;
class delete extends \phpbb\console\command\command
{
/**
* @var \phpbb\config\config
*/
protected $config;
/**
* @var \phpbb\db\driver\driver_interface
*/
@@ -32,12 +37,14 @@ class delete extends \phpbb\console\command\command
/**
* Constructor
*
* @param \config\config $config The config
* @param \phpbb\user $user The user object (used to get language information)
* @param \phpbb\db\driver\driver_interface $db Database connection
* @param string $phpbb_root_path Root path
*/
public function __construct(\phpbb\user $user, \phpbb\db\driver\driver_interface $db, $phpbb_root_path)
public function __construct(\phpbb\config\config $config, \phpbb\user $user, \phpbb\db\driver\driver_interface $db, $phpbb_root_path)
{
$this->config = $config;
$this->db = $db;
$this->phpbb_root_path = $phpbb_root_path;
@@ -101,7 +108,7 @@ class delete extends \phpbb\console\command\command
$return = 0;
while ($row = $this->db->sql_fetchrow($result))
{
$thumbnail_path = $this->phpbb_root_path . 'files/thumb_' . $row['physical_filename'];
$thumbnail_path = $this->phpbb_root_path . $this->config['upload_path'] . '/thumb_' . $row['physical_filename'];
if (@unlink($thumbnail_path))
{

View File

@@ -19,6 +19,11 @@ use Symfony\Component\Console\Style\SymfonyStyle;
class generate extends \phpbb\console\command\command
{
/**
* @var \phpbb\config\config
*/
protected $config;
/**
* @var \phpbb\db\driver\driver_interface
*/
@@ -45,14 +50,16 @@ class generate extends \phpbb\console\command\command
/**
* Constructor
*
* @param \config\config $config The config
* @param \phpbb\user $user The user object (used to get language information)
* @param \phpbb\db\driver\driver_interface $db Database connection
* @param \phpbb\cache\service $cache The cache service
* @param string $phpbb_root_path Root path
* @param string $php_ext PHP extension
*/
public function __construct(\phpbb\user $user, \phpbb\db\driver\driver_interface $db, \phpbb\cache\service $cache, $phpbb_root_path, $php_ext)
public function __construct(\phpbb\config\config $config, \phpbb\user $user, \phpbb\db\driver\driver_interface $db, \phpbb\cache\service $cache, $phpbb_root_path, $php_ext)
{
$this->config = $config;
$this->db = $db;
$this->cache = $cache;
$this->phpbb_root_path = $phpbb_root_path;
@@ -126,8 +133,8 @@ class generate extends \phpbb\console\command\command
{
if (isset($extensions[$row['extension']]['display_cat']) && $extensions[$row['extension']]['display_cat'] == ATTACHMENT_CATEGORY_IMAGE)
{
$source = $this->phpbb_root_path . 'files/' . $row['physical_filename'];
$destination = $this->phpbb_root_path . 'files/thumb_' . $row['physical_filename'];
$source = $this->phpbb_root_path . $this->config['upload_path'] . '/' . $row['physical_filename'];
$destination = $this->phpbb_root_path . $this->config['upload_path'] . '/thumb_' . $row['physical_filename'];
if (create_thumbnail($source, $destination, $row['mimetype']))
{

View File

@@ -60,6 +60,14 @@ abstract class mssql_base extends \phpbb\db\driver\driver
return $expression . " ESCAPE '\\'";
}
/**
* {@inheritDoc}
*/
function cast_expr_to_bigint($expression)
{
return 'CONVERT(BIGINT, ' . $expression . ')';
}
/**
* Build db-specific query data
* @access private

View File

@@ -58,9 +58,14 @@ class release_3_0_8_rc1 extends \phpbb\db\migration\migration
$result = $this->db->sql_query($sql);
$extension_groups_updated = array();
while ($lang_dir = $this->db->sql_fetchfield('lang_dir'))
while ($row = $this->db->sql_fetchrow($result))
{
$lang_dir = basename($lang_dir);
if (empty($row['lang_dir']))
{
continue;
}
$lang_dir = basename($row['lang_dir']);
// The language strings we need are either in language/.../acp/attachments.php
// in the update package if we're updating to 3.0.8-RC1 or later,

View File

@@ -0,0 +1,34 @@
<?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;
use phpbb\db\migration\migration;
class disable_remote_avatar extends migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v325',
);
}
public function update_data()
{
return array(
array('config.update', array('allow_avatar_remote', '0')),
array('config.update', array('allow_avatar_remote_upload', '0')),
);
}
}

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

View File

@@ -0,0 +1,31 @@
<?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 remove_imagick extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v324rc1',
);
}
public function update_data()
{
return array(
array('config.remove', array('img_imagick')),
);
}
}

View File

@@ -0,0 +1,42 @@
<?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 smtp_dynamic_data extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v326rc1',
);
}
public function update_data()
{
return array(
array('custom', array(array($this, 'set_smtp_dynamic'))),
);
}
public function set_smtp_dynamic()
{
$smtp_auth_entries = [
'smtp_password',
'smtp_username',
];
$this->sql_query('UPDATE ' . CONFIG_TABLE . '
SET is_dynamic = 1
WHERE ' . $this->db->sql_in_set('config_name', $smtp_auth_entries));
}
}

View File

@@ -23,6 +23,7 @@ class v322rc1 extends \phpbb\db\migration\migration
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v321',
'\phpbb\db\migration\data\v32x\fix_user_styles',
'\phpbb\db\migration\data\v32x\update_prosilver_bitfield',
'\phpbb\db\migration\data\v32x\email_force_sender',

View File

@@ -23,6 +23,7 @@ class v323rc1 extends \phpbb\db\migration\migration
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v322',
'\phpbb\db\migration\data\v32x\enable_accurate_pm_button',
);
}

View File

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

View File

@@ -23,6 +23,7 @@ class v324rc1 extends \phpbb\db\migration\migration
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v323',
'\phpbb\db\migration\data\v32x\forum_topics_per_page_type',
);
}

View File

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

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 v325rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.5-RC1', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v324',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.5-RC1')),
);
}
}

View File

@@ -0,0 +1,39 @@
<?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 v326 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.6', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v326rc1',
'\phpbb\db\migration\data\v32x\disable_remote_avatar',
'\phpbb\db\migration\data\v32x\smtp_dynamic_data',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.6')),
);
}
}

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 v326rc1 extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
return phpbb_version_compare($this->config['version'], '3.2.6-RC1', '>=');
}
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v32x\v325',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.2.6-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 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')),
);
}
}

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