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

Compare commits

...

296 Commits

Author SHA1 Message Date
Joas Schilling
5847a50334 [prep-release-3.1.0-RC6] Add changelog for 3.1.0-RC6 2014-10-23 01:57:59 +02:00
Joas Schilling
1ade9b39e4 [prep-release-3.1.0-RC6] Prepare Changelog 2014-10-23 01:55:48 +02:00
Joas Schilling
4c94e44710 [prep-release-3.1.0-RC6] Add migration for 3.1.0-RC6 2014-10-23 01:50:12 +02:00
Joas Schilling
d640a37984 [prep-release-3.1.0-RC6] Update version to 3.1.0-RC6 2014-10-23 01:48:38 +02:00
Joas Schilling
e4c8e4905c Merge pull request #3 from phpbb/ticket/security-161
[ticket/security-161] Add form token to styles management form.
2014-10-23 01:38:12 +02:00
Cesar G
4d30633cd4 [ticket/security-161] Add form token to styles management form.
SECURITY-161
2014-10-22 15:46:00 -07:00
Marc Alexander
6a0727acdc Merge pull request #3058 from naderman/ticket/13205
[ticket/13205] Add a mark all messages read link to PM folders
2014-10-22 17:39:13 -05:00
Nils Adermann
df72846b89 [ticket/13205] Explicitly cast ids to integers and reformat SQL
PHPBB3-13205
2014-10-22 18:35:07 -04:00
Nils Adermann
b5594371ab [ticket/13205] Remove superfluous newline
PHPBB3-13205
2014-10-22 18:31:29 -04:00
Nils Adermann
d7553893c4 Merge pull request #3057 from marc1706/ticket/security-159
[ticket/security-159] Only show first 8 characters of login keys in UCP
2014-10-22 18:20:46 -04:00
Nils Adermann
48dc4c02ae [ticket/13205] Add a mark all messages read link to PM folders
PHPBB3-13205
2014-10-22 18:02:43 -04:00
Marc Alexander
f796f92058 [ticket/security-159] Only show first 8 characters of login keys in UCP
SECURITY-159
2014-10-22 16:21:16 -05:00
Nils Adermann
fad280f94b Merge pull request #3056 from marc1706/ticket/13203
[ticket/13203] Use constant time comparison method for comparing password hashes
2014-10-22 16:57:50 -04:00
Marc Alexander
cf9d1fbd1a [ticket/13203] Fix passwords manager tests
PHPBB3-13203
2014-10-22 15:09:58 -05:00
Marc Alexander
0bc04a4df0 [ticket/13203] Use string_compare method in passwords drivers
PHPBB3-13203
2014-10-22 14:54:55 -05:00
Marc Alexander
2b47ef1266 [ticket/13203] Add method for byte by byte comparison to drivers helper
PHPBB3-13203
2014-10-22 14:54:22 -05:00
Marc Alexander
e43d1781bf Merge branch 'develop-olympus' into develop-ascraeus
Conflicts:
	phpBB/docs/AUTHORS
2014-10-21 19:24:48 -05:00
Marc Alexander
d51c1707e3 Merge pull request #3051 from nickvergessen/ticket/12120
[ticket/12120] Remove EXreaction from active authors
2014-10-21 19:22:11 -05:00
Marc Alexander
faec26b873 Merge pull request #3053 from Senky/ticket/13194
[ticket/13194] BBCode isn't parsed when issuing a warning for a post
2014-10-21 18:57:43 -05:00
Marc Alexander
0de7adfa37 Merge pull request #3052 from VSEphpbb/ticket/13041
[ticket/13041] Help_faq.php language file needs to be revised
2014-10-21 18:53:51 -05:00
Jakub Senko
defeb1a56f [ticket/13194] Use correct array to access bbcode_bitfield
PHPBB3-13194
2014-10-21 22:21:48 +02:00
Matt Friedman
4b99ab7066 [ticket/13041] Final grammar and language changes to help_faq
PHPBB3-13041
2014-10-21 09:54:25 -07:00
Joas Schilling
9cf81ac7f5 [ticket/12120] Remove EXreaction from active authors
PHPBB3-12120
2014-10-21 18:17:59 +02:00
Nils Adermann
1358acfd7c Merge pull request #3049 from marc1706/ticket/13189
[ticket/13189] Do not use confirm box for marking all notifications read
2014-10-21 09:49:16 -04:00
Marc Alexander
99eeb52b76 Merge pull request #3050 from prototech/ticket/13070
[ticket/13070] Adjust template hook name to match that provided in the class.
2014-10-20 22:44:33 -05:00
Cesar G
b9b15b7007 [ticket/13070] Adjust template hook name to match that provided in the class.
PHPBB3-13070
2014-10-20 19:59:56 -07:00
Marc Alexander
293d64e122 [ticket/13189] Do not use confirm box for marking all notifications read
We already use a token for preventing CSRF when marking notifications read.
Making a user confirm the marking read action serves no real purpose. No
information will be lost by just marking the notifications read but it will
prevent users from always having to confirm this action.

PHPBB3-13189
2014-10-20 21:55:36 -05:00
Andreas Fischer
b71cf56bda Merge pull request #3047 from Elsensee/ticket/13168
[ticket/13168] Fix mbstring warnings in ACP for PHP 5.6 compatibility

* Elsensee/ticket/13168:
  [ticket/13168] Fix mbstring warnings in ACP for PHP 5.6 compatibility
2014-10-20 23:20:42 +02:00
Andreas Fischer
afada9ed40 Merge branch 'develop-olympus' into develop-ascraeus
* develop-olympus:
  [ticket/13168] Fix mbstring warnings in ACP for PHP 5.6 compatibility
2014-10-20 23:20:42 +02:00
Joas Schilling
75b6545bc2 Merge pull request #3040 from nickvergessen/ticket/13138-asc
[3.1] Ticket/13138 Only use cookie data when we do not force a user_id

Conflicts:
	phpBB/phpbb/session.php
2014-10-20 22:19:25 +02:00
Nils Adermann
973dfbf868 Merge pull request #3048 from naderman/ticket/13188
[ticket/13188] Add missing where clause to post_id query in sphinx index
2014-10-20 15:30:08 -04:00
Nils Adermann
99f63f39eb Merge branch 'develop-olympus' into develop-ascraeus
* develop-olympus:
  [ticket/13138] Do not use cookie data and autologin while forcing a user_id

Conflicts:
	phpBB/phpbb/session.php
2014-10-20 14:53:38 -04:00
Nils Adermann
d4faeb064b Merge pull request #3039 from nickvergessen/ticket/13138
[ticket/13138] Only use cookie data when we do not force a user_id
2014-10-20 14:49:29 -04:00
Nils Adermann
941cf6979e [ticket/13188] Correctly format string concatenation
PHPBB3-13188
2014-10-20 12:20:44 -04:00
Nils Adermann
566c8a1bbc [ticket/13188] Add missing where clause to post_id query in sphinx index
PHPBB3-13188
2014-10-20 12:08:35 -04:00
Oliver Schramm
53f166274a [ticket/13168] Fix mbstring warnings in ACP for PHP 5.6 compatibility
PHPBB3-13168
2014-10-20 16:47:52 +02:00
Joas Schilling
57a575b5f0 Merge pull request #3046 from Elsensee/ticket/13187
[ticket/13187] Fix HTML validity of INSTALL.html
2014-10-20 16:28:44 +02:00
Oliver Schramm
51044167d1 [ticket/13187] Fix HTML validity of INSTALL.html
PHPBB3-13187
2014-10-20 15:36:27 +02:00
Joas Schilling
009d59335f Merge pull request #2960 from prototech/ticket/12568
[ticket/12568] Update user docs
2014-10-20 15:21:00 +02:00
Joas Schilling
ec5729a99f Merge pull request #3045 from Elsensee/ticket/13186
[ticket/13186] Don't show link on post count when search disabled
2014-10-20 14:23:46 +02:00
Oliver Schramm
86c472f4f7 [ticket/13186] Don't show link on post count when search disabled
PHPBB3-13186
2014-10-20 13:25:07 +02:00
Marc Alexander
c939f1b2c7 Merge pull request #3030 from Senky/ticket/13164
[ticket/13164] data sent to core.submit_post_end event does not include fresh post_visibility
2014-10-18 21:47:15 -04:00
Marc Alexander
b3421e397d Merge pull request #3041 from nickvergessen/ticket/13171
[ticket/13171] Check the correct (soft)delete permission when deleting in MCP
2014-10-18 17:59:48 -04:00
Dhruv Goel
c6272fca07 Merge pull request #3042 from naderman/ticket/13181
[ticket/13181] Replace database credentials with placeholders in sphinx conf
2014-10-19 01:28:36 +05:30
Nils Adermann
e7ad87e15f [ticket/13181] Replace database credentials with placeholders in sphinx conf
PHPBB3-13181
2014-10-18 12:32:39 -04:00
Mario Skouat
737894027a [ticket/13041] Added multiple changes
- Improper english in some sentences.
- Improper use of singular/plural in some sentences
- Replace "the board administrator" by "a board administrator"
- Update the category "Posting Issues" and "Subscriptions and Bookmarks"

PHPBB3-13041
2014-10-18 13:28:18 +02:00
Joas Schilling
66342f5b89 [ticket/13171] Check the correct (soft)delete permission when deleting in MCP
PHPBB3-13171
2014-10-17 15:39:20 +02:00
Joas Schilling
dec6c7ea8c [ticket/13138] Type hint the variables for IDE usage
PHPBB3-13138
2014-10-17 14:53:56 +02:00
Joas Schilling
f847a1a567 [ticket/13138] Fix the session key tests
PHPBB3-13138
2014-10-17 14:50:14 +02:00
Cesar G
6763de2f25 [ticket/12568] Fix awkward use of "phpBB Limited."
PHPBB3-12568
2014-10-16 20:37:26 -07:00
Cesar G
09b6add6ee [ticket/12568] The "Purge cache" option in the Customise tab no longer exists.
PHPBB3-12568
2014-10-16 20:33:24 -07:00
Cesar G
810d249ca2 [ticket/12568] Update GitHub link.
PHPBB3-12568
2014-10-16 20:20:15 -07:00
Cesar G
29ea1c85b4 [ticket/12568] Fix typo - "directorie" -> "directories"
PHPBB3-12568
2014-10-16 20:18:52 -07:00
Cesar G
f19a6b9714 [ticket/12568] Remove various unnecessary references to phpBB3.
PHPBB3-12568
2014-10-16 20:17:01 -07:00
Cesar G
d06c2cf0f7 [ticket/12568] Update style installation instructions.
PHPBB3-12568
2014-10-16 19:47:02 -07:00
Cesar G
7e08109229 [ticket/12568] Update path to language pack installation page.
PHPBB3-12568
2014-10-16 19:47:02 -07:00
Cesar G
defd36ad7f [ticket/12568] Replace modifications explanation with extensions.
PHPBB3-12568
2014-10-16 19:47:02 -07:00
Cesar G
39e51e5599 Merge remote-tracking branch 'PayBas/ticket/12796' into develop-ascraeus
* PayBas/ticket/12796:
  [ticket/12796] Use dedicated lang vars
  [ticket/12796] Use & in path
  [ticket/12796] Add view own profile to UCP (and vice versa)
2014-10-16 19:32:11 -07:00
Cesar G
6768490f69 Merge remote-tracking branch 'PayBas/ticket/13163' into develop-ascraeus
* PayBas/ticket/13163:
  [ticket/13163] Check for images
  [ticket/13163] Terminate timely when no data-last links exist
  [ticket/13163] Fix responsive link lists
2014-10-16 19:19:53 -07:00
Joas Schilling
55b97ffc27 Merge branch 'ticket/13138-2' into ticket/13138-asc
Conflicts:
	phpBB/phpbb/session.php
2014-10-16 12:48:13 +02:00
Joas Schilling
e7e016637b [ticket/13138] Do not use cookie data and autologin while forcing a user_id
PHPBB3-13138
2014-10-16 12:32:48 +02:00
Joas Schilling
e1af6584d9 Merge pull request #3038 from prototech/ticket/12530
[ticket/12530] Move style and class to parent <a>.
2014-10-15 21:15:08 +02:00
Cesar G
23a513baec [ticket/12530] Move style and class to parent <a>.
PHPBB3-12530
2014-10-15 10:35:13 -07:00
Joas Schilling
b343bf783a Merge pull request #3037 from PayBas/ticket/13169
[ticket/13169] Fix RTL forms in responsive mode
2014-10-15 18:56:11 +02:00
Joas Schilling
8be701db0a Merge pull request #2938 from PayBas/ticket/12530
[ticket/12530] Fix captcha challange image breaking responsive layout
2014-10-15 18:47:45 +02:00
Joas Schilling
90771c1762 Merge pull request #3024 from marc1706/ticket/13124
[ticket/13124] Also trim spaces in front of comments except for first line
2014-10-15 18:31:46 +02:00
Joas Schilling
759950c1a6 Merge pull request #3036 from prototech/ticket/13177
[ticket/13177] Fix display of post count-based ranks in viewtopic.
2014-10-15 18:29:23 +02:00
PayBas
205be67622 [ticket/13169] Fix RTL forms in responsive mode
PHPBB3-13169
2014-10-15 17:08:11 +02:00
PayBas
1a128f9a76 [ticket/12796] Use dedicated lang vars
PHPBB3-12796
2014-10-15 16:07:01 +02:00
PayBas
223ae1dfc2 [ticket/13163] Check for images
PHPBB3-13163
2014-10-15 13:06:54 +02:00
PayBas
965894a875 [ticket/12530] Combine logo and TOS link into one
PHPBB3-12530
2014-10-15 12:08:55 +02:00
Cesar G
5c54e96aab [ticket/13177] Fix display of post count-based ranks in viewtopic.
PHPBB3-13177
2014-10-14 15:24:57 -07:00
Cesar G
df75b70f3e Merge remote-tracking branch 'PayBas/ticket/13174' into develop-ascraeus
* PayBas/ticket/13174:
  [ticket/13174] Add missing closing </div> to ucp_pm_viewmessage
2014-10-14 07:32:54 -07:00
PayBas
4bdae294cb [ticket/12796] Use &amp; in path
PHPBB3-12796
2014-10-14 12:58:07 +02:00
PayBas
253c6e1fc1 [ticket/12796] Add view own profile to UCP (and vice versa)
PHPBB3-12796
2014-10-14 10:59:03 +02:00
PayBas
9c4ba813d4 [ticket/13174] Add missing closing </div> to ucp_pm_viewmessage
PHPBB3-13174
2014-10-14 10:08:48 +02:00
PayBas
41d660dd98 [ticket/13163] Terminate timely when no data-last links exist
PHPBB3-13163
2014-10-14 00:05:22 +02:00
PayBas
36d1f87c5a [ticket/13163] Fix responsive link lists
PHPBB3-13163
2014-10-13 23:29:01 +02:00
Jakub Senko
9bc9e42c94 [ticket/13164] Fix syntax error
PHPBB3-13164
2014-10-11 17:58:41 +02:00
Jakub Senko
eb7152436c [ticket/13164] Add post_visibility to core.submit_post_end event
PHPBB3-13164
2014-10-11 16:56:03 +02:00
Mario Skouat
2bc79701e6 [ticket/13041] Added multiple changes
- Added the changes reported by VSE.

PHPBB3-13041
2014-10-11 10:43:01 +02:00
Tristan Darricau
29b54d12cc Merge pull request #3029 from nickvergessen/ticket/13161
Ticket/13161 PHP Warnings issued from phpbb database test case

* nickvergessen/ticket/13161:
  [ticket/13161] Check whether the schema exists, before deleting it
  [ticket/13161] Avoid problems when running tests with different migrations
2014-10-10 15:55:03 +02:00
Joas Schilling
1a04d15d4d [ticket/13161] Check whether the schema exists, before deleting it
PHPBB3-13161
2014-10-10 15:26:29 +02:00
Joas Schilling
f6fc8c08a4 [ticket/13161] Avoid problems when running tests with different migrations
PHPBB3-13161
2014-10-10 15:26:28 +02:00
Jakub Senko
699c642128 [ticket/13164] Update post_visibility before event is triggered
PHPBB3-13164
2014-10-10 14:24:46 +02:00
Marc Alexander
a9ed32663a [ticket/13124] Add another test case as requested
PHPBB3-13124
2014-10-09 13:30:10 -04:00
Mario Skouat
97db218829 [ticket/13041] Added multiple changes
- "phpBB3" replaced by "phpBB"
- Added the changes suggested by VSE.
- "Subscriptions and Bookmarks" reviewed
- Added trailing comma on modified lines

PHPBB3-13041
2014-10-08 00:14:00 +02:00
Joas Schilling
5b186c936d Merge branch 'prep-release-3.1.0-RC5' into develop-ascraeus 2014-10-07 22:11:14 +02:00
Joas Schilling
eed4d0d30f [prep-release-3.1.0-RC5] Update phpBB Version for RC6 development 2014-10-07 22:10:45 +02:00
Joas Schilling
366451c11c [prep-release-3.1.0-RC5] Add changelog for 3.1.0-RC5 2014-10-07 21:16:34 +02:00
Joas Schilling
9d13b91f46 [prep-release-3.1.0-RC5] Prepare Changelog 2014-10-07 21:14:55 +02:00
Joas Schilling
7f692e7b28 [prep-release-3.1.0-RC5] Add migration for 3.1.0-RC5 2014-10-07 21:12:06 +02:00
Joas Schilling
7137dc387a [prep-release-3.1.0-RC5] Update version to 3.1.0-RC5 2014-10-07 21:10:14 +02:00
PayBas
757c67b7d8 [ticket/12530] Show logo and policy in responsive
PHPBB3-12530
2014-10-07 20:49:39 +02:00
Andreas Fischer
63bdd193e0 Merge pull request #3027 from nickvergessen/ticket/13137
[ticket/13137] Remove schema.json from repository

* nickvergessen/ticket/13137:
  [ticket/13137] Create schema.json in build script
  [ticket/13137] Improve output of create_schema_files.php
  [ticket/13137] Add schema.json file to .gitignore
  [ticket/13137] Generate the schema when the schema.json file is not available
  [ticket/13137] Remove schema.json file
2014-10-07 20:30:40 +02:00
PayBas
66ecbd8545 [ticket/12530] Fix captcha challange image breaking responsive layout
PHPBB3-12530
2014-10-07 18:30:20 +02:00
Joas Schilling
d64a515476 [ticket/13137] Create schema.json in build script
PHPBB3-13137
2014-10-07 17:18:00 +02:00
Joas Schilling
34a9ed3587 [ticket/13137] Improve output of create_schema_files.php
PHPBB3-13137
2014-10-07 17:17:59 +02:00
Joas Schilling
ba1776d6a9 [ticket/13137] Add schema.json file to .gitignore
PHPBB3-13137
2014-10-07 16:33:26 +02:00
Joas Schilling
4fe95d6870 [ticket/13137] Generate the schema when the schema.json file is not available
PHPBB3-13137
2014-10-07 14:55:08 +02:00
Joas Schilling
943f2e1a7b [ticket/13137] Remove schema.json file
PHPBB3-13137
2014-10-07 14:55:05 +02:00
Nils Adermann
c77d6f39f2 Merge pull request #3026 from nickvergessen/ticket/13136
[ticket/13136] Update schema.json with latest changes
2014-10-07 13:57:31 +02:00
Joas Schilling
7bd5c793bb [ticket/13136] Update schema.json with latest changes
PHPBB3-13136
2014-10-07 13:14:33 +02:00
Joas Schilling
61601a052c Merge pull request #2942 from Senky/ticket/12489
[ticket/12489] Description for Contact link in custom profile fields
2014-10-07 11:41:47 +02:00
Jakub Senko
0c0024497d [ticket/12489] Language correction
PHPBB3-12489
2014-10-07 10:24:30 +02:00
Andreas Fischer
46a9e5657f Merge pull request #3002 from Nicofuma/ticket/12987
[ticket/12987] Cleanup the services.yml file

* Nicofuma/ticket/12987:
  [ticket/12987] Cleanup the services.yml file
2014-10-07 00:51:11 +02:00
Joas Schilling
4b90357d79 Merge pull request #2307 from PayBas/ticket/12408
[ticket/12408] Add quick setting for "default guest style" to ACP
2014-10-06 23:43:27 +02:00
Andreas Fischer
38ac0bcc8e Merge pull request #2991 from nickvergessen/ticket/13077
[ticket/13077] Move extension module to the top of the Customise tab

* nickvergessen/ticket/13077:
  [ticket/13077] Move extension module to the top of the Customise tab
2014-10-06 23:35:35 +02:00
Joas Schilling
b300e06226 Merge branch 'develop-olympus' into develop-ascraeus 2014-10-06 23:21:19 +02:00
Joas Schilling
f3eaf6fe04 Merge pull request #3016 from Nicofuma/ticket/11224-ascraeus
[ticket/11224][ascraeus] SQL cache destroy does not destroy queries to tables joined
2014-10-06 23:21:13 +02:00
Joas Schilling
a12a7d0b90 Merge pull request #2460 from Nicofuma/ticket/11224
[ticket/11224] SQL cache destroy does not destroy queries to tables joined
2014-10-06 23:20:50 +02:00
Joas Schilling
7479c61d05 Merge pull request #2828 from brunoais/ticket/12930
[ticket/12930] core.ucp_pm_compose_compose_pm_quotepost_query_after
2014-10-06 22:37:48 +02:00
Joas Schilling
3c91fbeaa6 Merge pull request #2827 from brunoais/ticket/12929
[ticket/12929] core.ucp_pm_compose_compose_pm_basic_info_query_before
2014-10-06 22:25:08 +02:00
Joas Schilling
2f2a306994 Merge pull request #3019 from Senky/ticket/13025
[ticket/13025] Add template events for buttons on viewforum and viewtopic
2014-10-06 22:20:16 +02:00
Joas Schilling
6c284060d7 Merge pull request #3025 from rxu/ticket/13134
[ticket/13134] Add core event to the root of the function display_forums()
2014-10-06 22:10:33 +02:00
rxu
1e8735eac1 [ticket/13134] Add core event to the root of the function display_forums()
PHPBB3-13134
2014-10-07 01:47:01 +08:00
Marc Alexander
7bcf6a621f [ticket/13124] Fix tests for event exporter
PHPBB3-13124
2014-10-06 16:53:41 +02:00
Marc Alexander
825af557ae [ticket/13124] Also trim spaces in front of comments except for first line
PHPBB3-13124
2014-10-06 16:09:56 +02:00
Nils Adermann
5e86c89989 Merge pull request #3017 from nickvergessen/ticket/13033
[ticket/13033] Fix "Duplicate entry 'notification.type.*' for key 'type'"
2014-10-06 02:07:52 +02:00
Marc Alexander
ce4cb9c917 Merge pull request #3022 from Nicofuma/ticket/12368
[ticket/12368] Always clean the cache prior to run the migrations
2014-10-05 15:00:40 +02:00
Tristan Darricau
bda6879305 [ticket/12368] Always clean the cache prior to run the migrations
PHPBB3-12368
2014-10-05 12:25:14 +02:00
Jakub Senko
608d3f4d8d [ticket/13025] Correct events in subsilver2 viewforum_body
PHPBB3-13025
2014-10-04 11:38:21 +02:00
Jakub Senko
51ece03612 [ticket/13025] Make RC uppercase
PHPBB3-13025
2014-10-04 10:36:45 +02:00
Andreas Fischer
682527f509 Merge pull request #3018 from Senky/ticket/13125
[ticket/13125] Uploaded avatars are not displayed

* Senky/ticket/13125:
  [ticket/13125] $user->browser to $browser
2014-10-04 00:41:25 +02:00
Tristan Darricau
5354c46e01 [ticket/11224] Updates tests
PHPBB3-11224
2014-10-03 23:51:16 +02:00
Tristan Darricau
8e638dbf6d [ticket/11224] Revert Revert "Merge pull request #2460 from ticket/11224"
This reverts commit 40cd7570e6.
2014-10-03 23:50:24 +02:00
Jakub Senko
a0673f8e10 [ticket/13025] rc4 -> rc5
PHPBB3-13025
2014-10-03 13:18:41 +02:00
Jakub Senko
4193bf5641 [ticket/13025] Add button template events
PHPBB3-13025
2014-10-03 13:16:44 +02:00
Tristan Darricau
ebaec047f2 [ticket/12987] Cleanup the services.yml file
PHPBB3-12987
2014-10-03 00:32:08 +02:00
Joas Schilling
3d9b257597 [ticket/13033] Fix "Duplicate entry 'notification.type.*' for key 'type'"
Caused by the solution of PHPBB3-12990

PHPBB3-13033
2014-10-02 16:04:33 +02:00
brunoais
9d9685eec9 [ticket/12929] BUMP to RC5
PHPBB3-12929
2014-10-02 14:44:43 +01:00
brunoais
cf2ac56950 [ticket/12930] BUMP to RC5
PHPBB3-12930
2014-10-02 14:43:50 +01:00
Joas Schilling
240ff27707 Merge pull request #3000 from rxu/ticket/13110
[ticket/13110] Add core event to the page_footer() function
2014-10-02 15:38:22 +02:00
Joas Schilling
90241ae4e6 Merge pull request #2947 from rxu/ticket/13059
[ticket/13059] Add core event to generate_page_link()
2014-10-02 15:35:55 +02:00
Jakub Senko
6400902a01 [ticket/13125] $user->browser to $browser
PHPBB3-13125
2014-10-02 15:34:56 +02:00
Joas Schilling
ee758e22a6 Merge pull request #2999 from rxu/ticket/13108
[ticket/13108] Add core event to the parse_attachments() function
2014-10-02 15:33:32 +02:00
Joas Schilling
2ee13bbc24 Merge pull request #3004 from Senky/ticket/13116
[ticket/13116] Topic and post approval notifications got interchanged
2014-10-02 15:18:23 +02:00
Mario Skouat
e5a5933db6 [ticket/13041] Updating "Topic Subscriptions and Bookmarks"
PHPBB3-13041
2014-10-02 12:57:17 +02:00
Mario Skouat
8c628a6dc2 [ticket/13041] Updating "phpBB3 Issues"
PHPBB3-13041
2014-10-02 12:56:56 +02:00
Mario Skouat
1fb4ebb34a [ticket/13041] Updating "Searching the Forums"
PHPBB3-13041
2014-10-02 11:54:48 +02:00
Mario Skouat
64eec22884 [ticket/13041] Updating "Posting Issues"
PHPBB3-13041
2014-10-02 11:53:39 +02:00
Mario Skouat
abb1244b44 [ticket/13041] Updating "Login and Registration Issues"
PHPBB3-13041
2014-10-02 10:27:48 +02:00
Mario Skouat
e816006b8e [ticket/13041] Updating "User Preferences and settings"
PHPBB3-13041
2014-10-01 20:14:30 +02:00
Tristan Darricau
c123c93ca0 Merge pull request #3012 from nickvergessen/ticket/13123
[ticket/13123] Add events to allow modifying post data

* nickvergessen/ticket/13123:
  [ticket/13123] Add events to allow modifying post data
2014-10-01 16:09:04 +02:00
Marc Alexander
0e27b10b8f Merge pull request #3015 from nickvergessen/ticket/13119
[ticket/13119] Add another event which is triggered independent from actions
2014-10-01 15:59:00 +02:00
rxu
a876cc8c26 [ticket/13108] Add core event to the parse_attachments() function
Add core event to the parse_attachments() function in functions_content.php
to allow modifying/adding attachment template data.

PHPBB3-13108
2014-10-01 21:00:37 +08:00
rxu
ce4035fdd3 [ticket/13059] Add core event to generate_page_link()
Add core event to generate_page_link() to allow
overriding/modifying pagination URLs.
Event request: http://area51.phpbb.com/phpBB/viewtopic.php?f=111&t=45905

PHPBB3-13059
2014-10-01 20:55:07 +08:00
Joas Schilling
95c0d81ba1 [ticket/13119] Add another event which is triggered independent from actions
PHPBB3-13119
2014-10-01 14:54:26 +02:00
Joas Schilling
40cd7570e6 [ticket/11224] Revert "Merge pull request #2460 from Nicofuma/ticket/11224"
This reverts commit d264369441, reversing
changes made to 75fcfb1c1d.

PHPBB3-11224
2014-10-01 11:38:45 +02:00
Joas Schilling
b003019958 Merge pull request #3013 from VSEphpbb/ticket/13121
[ticket/13121] Remove cache mode from style management module
2014-10-01 10:34:08 +02:00
Joas Schilling
d264369441 Merge pull request #2460 from Nicofuma/ticket/11224
[ticket/11224] SQL cache destroy does not destroy queries to tables joined
2014-10-01 10:27:47 +02:00
Joas Schilling
75fcfb1c1d Merge pull request #2545 from ptitlazy/ticket/12657
[ticket/12657] Add a test file for base case of command cache:purge
2014-10-01 10:24:19 +02:00
Joas Schilling
170b75d0c9 Merge pull request #2888 from Nicofuma/ticket/12993
[ticket/12993] Improve get_user_ranks
2014-10-01 10:19:24 +02:00
Joas Schilling
994a0dcd4c Merge branch 'ticket/12985' into develop-ascraeus 2014-10-01 10:09:29 +02:00
david63
5314c2bddf [ticket/12985] Add core.login_box_redirect
Add core.login_box_redirect core event to allow extensions to redirect a
user to a specific page when logging in.

PHPBB3-12985
2014-10-01 10:09:10 +02:00
Joas Schilling
b6acc1b9db Merge pull request #2978 from blitze/ticket/13071
[ticket/13071] Only use total_match_count after event dispatcher
2014-10-01 10:01:09 +02:00
Joas Schilling
1b393b1d0b Merge pull request #2979 from blitze/ticket/13072
[ticket/13072] Add total_match_count to core.search_get_topic_data event
2014-10-01 09:56:39 +02:00
Joas Schilling
effb5d95d0 Merge pull request #2998 from rxu/ticket/13107
[ticket/13107] Add template events to forum row in forumlist_body.html
2014-10-01 09:50:38 +02:00
Cesar G
8ab7f6b595 Merge remote-tracking branch 'nickvergessen/ticket/13119' into develop-ascraeus
* nickvergessen/ticket/13119:
  [ticket/13119] Remove unused globals and use the request class
  [ticket/13119] Add events to ACP's ban module
  [ticket/13119] Add events to MCP's ban module
2014-10-01 00:43:41 -07:00
Matt Friedman
1ee4894271 [ticket/13121] Fix migration file
PHPBB3-13121
2014-10-01 00:29:45 -07:00
Matt Friedman
65539df39a [ticket/13121] Remove cache mode from style management module
https://tracker.phpbb.com/browse/PHPBB3-13121

PHPBB3-13121
2014-10-01 00:03:54 -07:00
Andreas Fischer
8fef959418 Merge pull request #3011 from fredemmott/ticket/13122
[ticket/13122] Make phpbb_wrapper_gmgetdate_test more reliable

* fredemmott/ticket/13122:
  [ticket/13122] Make phpbb_wrapper_gmgetdate_test more reliable
2014-10-01 02:15:25 +02:00
Fred Emmott
f30c5f730e [ticket/13122] Make phpbb_wrapper_gmgetdate_test more reliable
If you're unlucky, calling time() or similar twice in a row will
give you different results. Facebook runs these tests thousands of
times a day, so we occasionally get bogus failures.

PHPBB3-13122
2014-09-30 15:53:02 -07:00
Andreas Fischer
a8e74fff9b Merge pull request #3010 from Nicofuma/ticket/13120
[ticket/13120] Follows the symlinks in phpbb_load_extensions_autoloaders

* Nicofuma/ticket/13120:
  [ticket/13120] Follows the symlinks in phpbb_load_extensions_autoloaders
2014-10-01 00:26:39 +02:00
Joas Schilling
cb49a0c4cc [ticket/13123] Add events to allow modifying post data
PHPBB3-13123
2014-10-01 00:13:37 +02:00
Tristan Darricau
3a413cbf30 [ticket/13120] Follows the symlinks in phpbb_load_extensions_autoloaders
PHPBB3-13120
2014-09-30 21:20:42 +02:00
Andreas Fischer
cb8b245639 Merge pull request #3005 from nickvergessen/ticket/13105
[ticket/13105] Fix the code logic as described in the comment

* nickvergessen/ticket/13105:
  [ticket/13105] Fix the code logic as described in the comment
2014-09-30 21:15:26 +02:00
Andreas Fischer
8fb9f19aae Merge pull request #3008 from nickvergessen/ticket/13111
[ticket/13111] Dropdown options are already an array in the field data

* nickvergessen/ticket/13111:
  [ticket/13111] Dropdown options are already an array in the field data
2014-09-30 21:04:25 +02:00
Andreas Fischer
a0db23bd0e Merge pull request #3007 from nickvergessen/ticket/13118
[ticket/13118] Correctly use the provided datetime class

* nickvergessen/ticket/13118:
  [ticket/13118] Correctly use the provided datetime class
2014-09-30 21:00:05 +02:00
Joas Schilling
6f66423de9 [ticket/13119] Remove unused globals and use the request class
PHPBB3-13119
2014-09-30 18:22:06 +02:00
Joas Schilling
7efc624b0a [ticket/13119] Add events to ACP's ban module
PHPBB3-13119
2014-09-30 18:22:05 +02:00
Joas Schilling
9c3126add0 [ticket/13119] Add events to MCP's ban module
PHPBB3-13119
2014-09-30 18:22:04 +02:00
Nils Adermann
f1ab6f31a1 Merge pull request #3003 from nickvergessen/ticket/13117
[ticket/13117] Correctly define auto increment columns as "NOT NULL" on mysql
2014-09-30 14:00:02 +02:00
Joas Schilling
f64a937a57 [ticket/13111] Dropdown options are already an array in the field data
PHPBB3-13111
2014-09-30 12:27:14 +02:00
Joas Schilling
526329e697 [ticket/13118] Correctly use the provided datetime class
PHPBB3-13118
2014-09-30 11:58:02 +02:00
Joas Schilling
89fdd1baf2 [ticket/13105] Fix the code logic as described in the comment
PHPBB3-13105
2014-09-29 21:39:31 +02:00
Jakub Senko
e132cdd325 [ticket/13116] Interchange post and topic approval notification
PHPBB3-13116
2014-09-29 21:13:53 +02:00
Joas Schilling
bc24c78e06 [ticket/13117] Correctly define auto increment columns as "NOT NULL" on mysql
Unintended change from 95ab4b3e93

PHPBB3-13117
2014-09-29 20:48:47 +02:00
Nils Adermann
6f093ade8a Merge pull request #3001 from Nicofuma/ticket/13113
[ticket/13113] Updates the base url only when the front-end isn't app.php
2014-09-29 16:16:30 +02:00
Tristan Darricau
a159899d02 [ticket/13113] Updates the base url only when the front-end isn't app.php
PHPBB3-13113
2014-09-28 23:32:56 +02:00
rxu
eb2aa1f83a [ticket/13110] Add core event to the page_footer() function
Add core event to the page_footer() in includes/functions.php to allow
extensions handling overall page output before its displaying.

PHPBB3-13110
2014-09-28 15:39:06 +08:00
rxu
cee8ac9dbe [ticket/13107] Add template events to forum row in forumlist_body.html
PHPBB3-13107
2014-09-27 09:26:35 +08:00
Joas Schilling
71ac6ab2b8 Merge pull request #2996 from Senky/ticket/13104
[ticket/13104] Responsive tabs display bug in IE11
2014-09-25 22:02:23 +02:00
Andreas Fischer
be769d4ca6 Merge pull request #2995 from nickvergessen/ticket/13105
[ticket/13105] Future relative dates are always displayed as "Tomorrow"

* nickvergessen/ticket/13105:
  [ticket/13105] Do not display future dates 2+ days ahead as "tomorrow"
  [ticket/13105] Add a test for relative dates
2014-09-25 21:52:53 +02:00
Andreas Fischer
e802c5f082 Merge pull request #2997 from Senky/ticket/13106
[ticket/13106] Remove the \phpbb\di\pass\kernel_pass class

* Senky/ticket/13106:
  [ticket/13106] Remove \phpbb\di\pass\kernel_pass.php
2014-09-25 21:47:28 +02:00
Jakub Senko
f64373a29f [ticket/13106] Remove \phpbb\di\pass\kernel_pass.php
PHPBB3-13106
2014-09-25 20:12:33 +02:00
Jakub Senko
a1683dfb67 [ticket/13104] inline-block -> block
PHPBB3-13104
2014-09-25 20:07:06 +02:00
Joas Schilling
e803efc6fc [ticket/13105] Do not display future dates 2+ days ahead as "tomorrow"
PHPBB3-13105
2014-09-25 18:09:32 +02:00
Joas Schilling
459c62b339 [ticket/13105] Add a test for relative dates
PHPBB3-13105
2014-09-25 18:09:24 +02:00
Andreas Fischer
1b3109d650 Merge branch 'develop-olympus' into develop-ascraeus
* develop-olympus:
  [ticket/13086] String replaces 50 with 20

Conflicts:
	phpBB/language/en/acp/email.php
2014-09-24 21:24:29 +02:00
Andreas Fischer
ce0c33f62a Merge pull request #2994 from Skouat/ticket/13086-olympus
[ticket/13086] Update ACP_MASS_EMAIL_EXPLAIN language key

* Skouat/ticket/13086-olympus:
  [ticket/13086] String replaces 50 with 20
2014-09-24 21:21:53 +02:00
Mario Skouat
077db77259 [ticket/13086] String replaces 50 with 20
PHPBB3-13086
2014-09-24 19:03:33 +02:00
Marc Alexander
30e1d29f58 Merge pull request #2993 from nickvergessen/ticket/13087
[ticket/13087] Correctly link to user profile when contact field has no URL
2014-09-24 18:27:37 +02:00
blitze
04e9789e7f [ticket/13072] Added '@changed 3.1.0-RC5 Added total_match_count'
PHPBB3-13072
2014-09-24 16:15:38 +00:00
Joas Schilling
b51b4c92e2 [ticket/13087] Correctly link to user profile when contact field has no URL
Broken by 975c5655f0

PHPBB3-13087
2014-09-24 17:33:54 +02:00
Tristan Darricau
74a96bf7c2 [ticket/11224] Adds a test case
PHPBB3-11224
2014-09-24 16:16:47 +02:00
Tristan Darricau
cd7b21a703 [ticket/12993] Update doc block
PHPBB3-12993
2014-09-24 16:07:23 +02:00
Tristan Darricau
834aea70a7 [ticket/12657] Fix unit tests
PHPBB3-12657
2014-09-24 15:24:56 +02:00
Joas Schilling
85bc9b69ae Merge pull request #2844 from marc1706/ticket/12858
[ticket/12858] Remove hard-coded GMT from timezone drop-down and rename to UTC
2014-09-24 13:47:59 +02:00
Joas Schilling
f3fef8934e Merge pull request #2954 from rxu/ticket/13055
[ticket/13055] Fix string profile fields validation to support unicode
2014-09-24 12:25:57 +02:00
Joas Schilling
43279ee010 Merge pull request #2983 from Senky/ticket/13094
[ticket/13094] Remove the search box if there are no new posts to search for
2014-09-24 10:33:58 +02:00
Joas Schilling
6d0697eb89 [ticket/13077] Move extension module to the top of the Customise tab
PHPBB3-13077
2014-09-24 00:34:17 +02:00
Andreas Fischer
d5128b3e87 Merge pull request #2988 from prototech/ticket/13011
[ticket/13011] Do not apply bbcode to whole text when selecting first 2 chars.

* prototech/ticket/13011:
  [ticket/13011] Do not apply bbcode to whole text when selecting first 2 chars.
2014-09-23 23:34:03 +02:00
Andreas Fischer
9feb7096ee Merge pull request #2985 from nickvergessen/ticket/13048
[ticket/13048] Only do not update the session page for ajax requests

* nickvergessen/ticket/13048:
  [ticket/13048] Only do not update the session page for ajax requests
2014-09-23 23:29:52 +02:00
Andreas Fischer
34aad4046f Merge pull request #2982 from marc1706/ticket/13070
[ticket/13070] Use old 'template' class for template class hook

* marc1706/ticket/13070:
  [ticket/13070] Use old 'template' class for template class hook
2014-09-23 23:25:59 +02:00
Andreas Fischer
80f15a41c4 Merge branch 'develop-olympus' into develop-ascraeus
* develop-olympus:
  [ticket/13096] Add phpbb_ prefix to ldap_escape()

Conflicts:
	phpBB/includes/auth/auth_ldap.php
2014-09-23 22:55:13 +02:00
Andreas Fischer
2f773fca18 Merge pull request #2989 from Senky/ticket/13096
[ticket/13096] ldap_escape() added to PHP 5.6.0

* Senky/ticket/13096:
  [ticket/13096] Add phpbb_ prefix to ldap_escape()
2014-09-23 22:54:27 +02:00
Jakub Senko
ba464ec93a [ticket/13096] Add phpbb_ prefix to ldap_escape()
PHPBB3-13096
2014-09-23 22:43:52 +02:00
Cesar G
80d5a1ec1f [ticket/13011] Do not apply bbcode to whole text when selecting first 2 chars.
PHPBB3-13011
2014-09-23 12:56:20 -07:00
Cesar G
f2a98339e2 Merge remote-tracking branch 'hanakin/ticket/12889' into develop-ascraeus
* hanakin/ticket/12889:
  [ticket/12889] Fix multiple select lists
2014-09-23 12:49:04 -07:00
Cesar G
2478eef550 Merge remote-tracking branch 'Senky/ticket/13082' into develop-ascraeus
* Senky/ticket/13082:
  [ticket/13082] Repair fix
  [ticket/13082] Join classes
  [ticket/13082] move style to css file
  [ticket/13082] Replace float by text-align
2014-09-23 12:48:23 -07:00
Cesar G
7307380091 Merge remote-tracking branch 'hanakin/ticket/13097' into develop-ascraeus
* hanakin/ticket/13097:
  [ticket/13097] Add missing unit type
2014-09-23 10:06:00 -07:00
hanakin
fb610f99df [ticket/12889] Fix multiple select lists
PHPBB3-12889
2014-09-23 17:24:26 +02:00
hanakin
aa1ffc9319 [ticket/13097] Add missing unit type
PHPBB3-13097
2014-09-23 17:11:51 +02:00
Joas Schilling
ef9e0e743a Merge pull request #2937 from Senky/ticket/13027
[ticket/13027] PM folder full percentage could be a bit more accurate
2014-09-23 15:32:14 +02:00
Joas Schilling
820db008ff [ticket/13048] Only do not update the session page for ajax requests
The session time still needs to be updated, so e.g. long upload times
with PLupload stop the session from timing out.

PHPBB3-13048
2014-09-23 15:25:40 +02:00
Joas Schilling
05ae327553 Merge pull request #2974 from hanakin/ticket/13080
[Ticket/13080] Fix text overflow issue in mobile
2014-09-23 14:43:04 +02:00
Marc Alexander
9b8d8b020f Merge branch 'develop-olympus' into develop-ascraeus 2014-09-23 11:10:47 +02:00
Marc Alexander
92b096b05b Merge pull request #2984 from nickvergessen/ticket/10729-asc
[3.1][ticket/10729] Update editor information when user being deleted
2014-09-23 11:09:29 +02:00
Marc Alexander
8bd1853b56 Merge pull request #2981 from nickvergessen/ticket/10729
Ticket/10729 Update editor information when user being deleted
2014-09-23 11:08:56 +02:00
Joas Schilling
96024e88e9 [ticket/10729] Also test *delete_user on posts and topics
PHPBB3-10729
2014-09-23 09:54:21 +02:00
Joas Schilling
d6008e896a [ticket/10729] Fix handling of third parameter in 3.1
PHPBB3-10729
2014-09-23 09:42:30 +02:00
Joas Schilling
10b6399d30 [ticket/10729] Fix setup of the tests for 3.1
PHPBB3-10729
2014-09-23 09:38:35 +02:00
Joas Schilling
eeeb62b433 [ticket/10729] Update fixture to 3.1 database structure
PHPBB3-10729
2014-09-23 09:31:33 +02:00
Joas Schilling
9ff6358dc9 Merge branch 'ticket/10729' into ticket/10729-asc
Conflicts:
	phpBB/includes/functions_user.php
2014-09-23 09:31:13 +02:00
Joas Schilling
bea5f94de6 [ticket/10729] Use mocked null cache for phpunit 3.6 on travis with php 5.2
PHPBB3-10729
2014-09-23 09:03:44 +02:00
Joas Schilling
e28b93e0cc [ticket/10729] Ensure that no bans exist before testing create_session
PHPBB3-10729
2014-09-22 23:56:31 +02:00
Jakub Senko
9a8a0af7ba [ticket/13094] Condition search properly
PHPBB3-13094
2014-09-22 21:12:18 +02:00
Marc Alexander
d03be5ea5f [ticket/13070] Use old 'template' class for template class hook
PHPBB3-13070
2014-09-22 20:03:55 +02:00
Joas Schilling
7fca351e05 [ticket/10729] Add assert messages and finish up tests
PHPBB3-10729
2014-09-22 02:01:54 +02:00
Joas Schilling
d7c12ccd60 [ticket/10729] Add tests for some special tables with unique conditions
PHPBB3-10729
2014-09-22 01:42:36 +02:00
Joas Schilling
74854ac65d [ticket/10729] Add tests for user posts, reports and attachments
PHPBB3-10729
2014-09-22 00:55:34 +02:00
Joas Schilling
d48e4b680e [ticket/10729] Fix doc block for user_delete
PHPBB3-10729
2014-09-22 00:55:08 +02:00
Mario Skouat
39d46e2599 [ticket/13041] Reordering "Login and Registration Issues"
PHPBB3-13041
2014-09-21 10:43:10 +02:00
blitze
d6de9ce5d9 [ticket/13072] Add total_match_count to core.search_get_topic_data event
PHPBB3-13072
2014-09-21 08:22:15 +00:00
Jakub Senko
9f981a7741 [ticket/13082] Repair fix
PHPBB3-13082
2014-09-21 10:03:48 +02:00
blitze
6a33472214 [ticket/13071] Only use total_match_count after event dispatcher
PHPBB3-13071
2014-09-21 07:39:50 +00:00
Dhruv Goel
84e68b3a73 Merge pull request #2963 from Senky/ticket/13045
[ticket/13045] Remove Pragma headers
2014-09-21 11:29:56 +05:30
Dhruv Goel
b02e579c1c Merge pull request #2976 from n-aleha/ticket/13085
[ticket/13085] Fix typo in oauth.php
2014-09-21 10:29:07 +05:30
Jakub Senko
6851ff8fab [ticket/13082] Join classes
PHPBB3-13082
2014-09-21 00:07:39 +02:00
n-aleha
7313cc777e [ticket/13085] Fix typo in oauth.php
PHPBB3-13085
2014-09-21 00:33:07 +03:00
Jakub Senko
ace3b806a9 [ticket/13082] move style to css file
PHPBB3-13082
2014-09-20 20:35:14 +02:00
Jakub Senko
ef58752db8 [ticket/13082] Replace float by text-align
PHPBB3-13082
2014-09-20 18:35:26 +02:00
hanakin
8b8e065441 [ticket/13080] Fix mediaqueries formating
open { are should not to be on new lines for
media queries per spec, causes code highlight
issues in reputible code editors

PHPBB3-13080
2014-09-20 16:55:20 +02:00
hanakin
e3eff2a976 [ticket/13080] Remove nowrap from dd in responsive
PHPBB3-13080
2014-09-20 16:51:01 +02:00
Joas Schilling
e005455881 Merge branch 'prep-release-3.1.0-RC4' into develop-ascraeus
* prep-release-3.1.0-RC4:
  [prep-release-3.1.0-RC4] Update phpBB Version for RC4 development
  [prep-release-3.1.0-RC4] Add changelog for 3.1.0-RC4
  [prep-release-3.1.0-RC4] Prepare Changelog
  [prep-release-3.1.0-RC4] Add migration for 3.1.0-RC4
  [prep-release-3.1.0-RC4] Update version to 3.1.0-RC4
2014-09-20 09:53:23 +02:00
Joas Schilling
26c6ffa458 [prep-release-3.1.0-RC4] Update phpBB Version for RC4 development 2014-09-20 09:52:53 +02:00
Marc Alexander
457e13634e [ticket/12858] Properly format UTC offset in footer
PHPBB3-12858
2014-09-19 23:45:03 +02:00
Tristan Darricau
c767712c64 [ticket/12657] Fix the order of the parameters for the constructor
PHPBB3-12657
2014-09-19 11:09:37 +02:00
Tristan Darricau
689eaab3e2 [ticket/12657] The test does not need to depend on the database
PHPBB3-12657
2014-09-19 11:09:35 +02:00
LEZY Thomas
fb08d1b27e [ticket/12657] Remove unused global variables
PHPBB3-12657
2014-09-19 11:09:32 +02:00
LEZY Thomas
6e4348b0ea [ticket/12657] Fix name temporary directory used by test file
PHPBB3-12657
2014-09-19 11:09:30 +02:00
LEZY Thomas
4a76763a8a [ticket/12657] Add a test file for base case
PHPBB3-12657
2014-09-19 11:09:29 +02:00
brunoais
55664c1c10 [ticket/12930] Fixing event comment block and variable
According to comments on pull request

PHPBB3-12930
2014-09-19 08:44:12 +01:00
brunoais
d4938e34b0 [ticket/12929] Fixing event comment block and variable
PHPBB3-12929
2014-09-19 08:36:00 +01:00
rxu
c20b658f70 [ticket/13055] Add UTF-8 string tests for profile fields validation options
PHPBB3-13055
2014-09-19 09:31:28 +08:00
Jakub Senko
31e43ce124 [ticket/12489] Add notice about %s wildcard in FIELD_IS_CONTACT_EXPLAIN
PHPBB3-12489
2014-09-18 12:13:17 +02:00
rxu
dc65058c20 [ticket/13055] Add string profile fields validation options to support unicode
PHPBB3-13055
2014-09-18 08:19:08 +08:00
Jakub Senko
e59222496a [ticket/13045] Remove Pragma headers
PHPBB3-13045
2014-09-17 20:10:01 +02:00
Marc Alexander
f4761b5e08 [ticket/12858] Directly return and use timezone selects
PHPBB3-12858
2014-09-17 19:07:24 +02:00
Marc Alexander
9c310f789f [ticket/12858] Rename tz_ prefixed block variables to timezone_ prefix
PHPBB3-12858
2014-09-17 17:56:09 +02:00
Marc Alexander
ad596f4390 [ticket/12858] Fix timezone select display in subsilver2
PHPBB3-12858
2014-09-17 17:56:09 +02:00
Marc Alexander
6323180344 [ticket/12858] Fix timezone display on acp users page
PHPBB3-12858
2014-09-17 17:56:09 +02:00
Marc Alexander
9a3aeb8a99 [ticket/12858] Remove hardcoded language entries from timezone selects
PHPBB3-12858
2014-09-17 17:56:04 +02:00
Marc Alexander
3dbac0f88b [ticket/12858] Use UTC for time info in footer and hide offset if it's 0
PHPBB3-12858
2014-09-17 14:23:34 +02:00
Marc Alexander
9ebee7de32 [ticket/12858] Generate timezone selects with template loop
PHPBB3-12858
2014-09-17 14:22:08 +02:00
PayBas
0061a305d8 [ticket/12408] Fix white-space sniffer
PHPBB3-12408
2014-09-15 15:25:43 +02:00
PayBas
5a780dfab1 [ticket/12408] Clarify the behavior of "override style"
PHPBB3-12408
2014-09-15 14:49:56 +02:00
PayBas
aaddf41e5b [ticket/12408] Changed lang vars, added fieldset and removed "default"
PHPBB3-12408
2014-09-15 14:43:40 +02:00
PayBas
0b4944f125 [ticket/12408] Public functions and updated doc block
PHPBB3-12408
2014-09-15 14:43:40 +02:00
PayBas
60c9955f51 [ticket/12408] Code cleanup
Rebased to see if travis will finally play along

PHPBB3-12408
2014-09-15 14:43:39 +02:00
PayBas
ae63843647 [ticket/12408] Simplified queries
PHPBB3-12408
2014-09-15 14:43:38 +02:00
PayBas
265c621c9e [ticket/12408] Add quick setting for "default guest style" to ACP
PHPBB3-12408
2014-09-15 14:43:38 +02:00
Jakub Senko
bfb672f326 [ticket/13027] round to floor
PHPBB3-13027
2014-09-09 21:33:19 +02:00
Tristan Darricau
fe1ab6d2ef [ticket/12993] Return an array instead of reference passing
PHPBB3-12993
2014-08-19 22:25:01 +02:00
Tristan Darricau
5e7d9d2fcf [ticket/12993] Fix includes of functions_display
PHPBB3-12993
2014-08-19 13:51:21 +02:00
Tristan Darricau
496cc64bc6 [ticket/12993] Rename to phpbb_get_user_rank
PHPBB3-12993
2014-08-18 16:32:05 +02:00
Tristan Darricau
685bdc87e6 [ticket/12993] Fix user_loader and memberlist
PHPBB3-12993
2014-08-18 14:07:47 +02:00
Forumhulp.com
8671e40217 [ticket/12993] Improve get_user_ranks
Explanation in http://area51.phpbb.com/phpBB/viewtopic.php?f=108&t=46051

PHPBB3-12993
2014-08-18 13:59:33 +02:00
brunoais
67de119566 [ticket/12930] Adding more variables to the event
More variables, according to comments, were added to the event.

PHPBB3-12930
2014-08-10 18:59:57 +01:00
brunoais
1e1efa294e [ticket/12929] Adding more variables to event.
More variables added that may be useful to events at this stage.

PHPBB3-12929
2014-08-10 18:51:35 +01:00
brunoais
9f5d383d50 [ticket/12930] Update to RC4
PHPBB3-12930
2014-08-09 18:14:11 +01:00
brunoais
8880871951 [ticket/12929] Update to RC4
PHPBB3-12929
2014-08-09 18:13:10 +01:00
brunoais
468f92261a [ticket/12929] core.ucp_pm_compose_compose_pm_basic_info_query_before
Adding the core.ucp_pm_compose_compose_pm_basic_info_query_before
event to mcp backend.

PHPBB3-12929
2014-08-09 11:18:45 +01:00
brunoais
6fafa40d93 [ticket/12930] core.ucp_pm_compose_compose_pm_quotepost_query_after
Adding the core.ucp_pm_compose_compose_pm_quotepost_query_after
event to ucp backend.

PHPBB3-12930
2014-08-08 16:20:51 +01:00
Oliver Schramm
bef207e9b7 [ticket/10729] Update *_delete_user when user being deleted
PHPBB3-10729
2014-07-18 00:19:21 +02:00
Oliver Schramm
1e0775a3da Merge branch 'ticket/10729' into ticket/10729-2
Conflicts:
	phpBB/includes/functions_user.php
2014-07-18 00:17:20 +02:00
Oliver Schramm
da6b378e64 [ticket/10729] Update message_edit_user when user being deleted
PHPBB3-10729
2014-07-18 00:11:51 +02:00
Oliver Schramm
53f597b6d0 [ticket/10729] Update post_edit_user when user being deleted
PHPBB3-10729
2014-07-17 16:28:32 +02:00
Tristan Darricau
d53336af06 [ticket/11224] Remove new line in acm_memory.php
PHPBB3-11224
2014-05-15 12:36:22 +02:00
Tristan Darricau
292908ca4a [ticket/11224] Use assertNotEquals(false) instead of assertNotFalse()
assertNotFalse() is unavailable with the version of phpunit used with php
5.2

PHPBB3-11224
2014-05-15 01:50:44 +02:00
Tristan Darricau
7c99e30920 [ticket/11224] Fix coding style
PHPBB3-11224
2014-05-15 01:17:02 +02:00
Tristan Darricau
b7f54e42b2 [ticket/11224] Add unit test
PHPBB3-11224
2014-05-15 00:22:27 +02:00
Tristan Darricau
9dd71fa32e [ticket/11224] Fix the blank line after ?>
PHPBB3-11224
2014-05-14 20:23:27 +02:00
Tristan Darricau
0c4b53e2f1 [ticket/11224] Fix returned data
PHPBB3-11224
2014-05-14 20:22:36 +02:00
Tristan Darricau
0c109c9d37 [ticket/11224] SQL cache destroy does not destroy queries to tables joined
https://tracker.phpbb.com/browse/PHPBB3-11224

PHPBB3-11224
2014-05-14 20:00:04 +02:00
159 changed files with 4067 additions and 4551 deletions

1
.gitignore vendored
View File

@@ -11,6 +11,7 @@
/phpBB/images/avatars/gallery/* /phpBB/images/avatars/gallery/*
/phpBB/images/avatars/upload/* /phpBB/images/avatars/upload/*
/phpBB/images/ranks/* /phpBB/images/ranks/*
/phpBB/install/schemas/schema.json
/phpBB/language/* /phpBB/language/*
!/phpBB/language/en !/phpBB/language/en
/phpBB/store/* /phpBB/store/*

View File

@@ -2,9 +2,9 @@
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../"> <project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build --> <!-- a few settings for the build -->
<property name="newversion" value="3.1.0-RC4" /> <property name="newversion" value="3.1.0-RC6" />
<property name="prevversion" value="3.1.0-RC3" /> <property name="prevversion" value="3.1.0-RC5" />
<property name="olderversions" value="3.0.12, 3.1.0-a1, 3.1.0-a2, 3.1.0-a3, 3.1.0-b1, 3.1.0-b2, 3.1.0-b3, 3.1.0-b4, 3.1.0-RC1, 3.1.0-RC2" /> <property name="olderversions" value="3.0.12, 3.1.0-a1, 3.1.0-a2, 3.1.0-a3, 3.1.0-b1, 3.1.0-b2, 3.1.0-b3, 3.1.0-b4, 3.1.0-RC1, 3.1.0-RC2, 3.1.0-RC3, 3.1.0-RC4" />
<!-- no configuration should be needed beyond this point --> <!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" /> <property name="oldversions" value="${olderversions}, ${prevversion}" />
@@ -273,6 +273,9 @@
</else> </else>
</if> </if>
<!-- Create schema.json -->
<exec dir="${dir}" command="php develop/create_schema_files.php" />
<delete file="${dir}/config.php" /> <delete file="${dir}/config.php" />
<delete dir="${dir}/develop" /> <delete dir="${dir}/develop" />
<delete dir="${dir}/install/data" /> <delete dir="${dir}/install/data" />

View File

@@ -8,7 +8,7 @@
<form id="list" method="post" action="{U_ACTION}"> <form id="list" method="post" action="{U_ACTION}">
<fieldset class="display-options" style="float: left"> <fieldset class="display-options search-box">
{L_SEARCH_KEYWORDS}{L_COLON} <input type="text" name="keywords" value="{S_KEYWORDS}" />&nbsp;<input type="submit" class="button2" name="filter" value="{L_SEARCH}" /> {L_SEARCH_KEYWORDS}{L_COLON} <input type="text" name="keywords" value="{S_KEYWORDS}" />&nbsp;<input type="submit" class="button2" name="filter" value="{L_SEARCH}" />
</fieldset> </fieldset>

View File

@@ -109,6 +109,14 @@ hr {
text-align: center; text-align: center;
} }
.search-box {
float: left;
}
.rtl .search-box {
float: right;
}
.small { .small {
font-size: 0.85em; font-size: 0.85em;
} }
@@ -1773,6 +1781,7 @@ li.pagination ul {
margin: 10px 0; margin: 10px 0;
color: #FFFFFF; color: #FFFFFF;
text-align: center; text-align: center;
clear: both;
} }
.success { .success {

View File

@@ -1,17 +1,25 @@
<dl> <dl>
<dt><label for="timezone">{L_BOARD_TIMEZONE}{L_COLON}</label></dt> <dt><label for="timezone">{L_BOARD_TIMEZONE}{L_COLON}</label></dt>
<!-- IF S_TZ_DATE_OPTIONS --> <!-- IF .timezone_date -->
<dd id="tz_select_date" style="display: none;"> <dd id="tz_select_date" style="display: none;">
<select name="tz_date" id="tz_date" class="autowidth tz_select"> <select name="tz_date" id="tz_date" class="autowidth tz_select">
<option value="">{L_SELECT_CURRENT_TIME}</option> <option value="">{L_SELECT_CURRENT_TIME}</option>
{S_TZ_DATE_OPTIONS} <!-- BEGIN timezone_date -->
<option value="{timezone_date.VALUE}"<!-- IF timezone_date.SELECTED --> selected="selected"<!-- ENDIF -->>{timezone_date.TITLE}</option>
<!-- END timezone_date -->
</select> </select>
</dd> </dd>
<!-- ENDIF --> <!-- ENDIF -->
<dd> <dd>
<select name="tz" id="timezone" class="autowidth tz_select"> <select name="tz" id="timezone" class="autowidth tz_select">
<option value="">{L_SELECT_TIMEZONE}</option> <option value="">{L_SELECT_TIMEZONE}</option>
{S_TZ_OPTIONS} <!-- BEGIN timezone_select -->
<optgroup label="{timezone_select.LABEL}" data-tz-value="{timezone_select.VALUE}">
<!-- BEGIN timezone_options -->
<option title="{timezone_select.timezone_options.TITLE}" value="{timezone_select.timezone_options.VALUE}"<!-- IF timezone_select.timezone_options.SELECTED --> selected="selected"<!-- ENDIF -->>{timezone_select.timezone_options.LABEL}</option>
<!-- END timezone_options -->
</optgroup>
<!-- END timezone_select -->
</select> </select>
<!-- INCLUDEJS timezone.js --> <!-- INCLUDEJS timezone.js -->

View File

@@ -786,7 +786,7 @@ phpbb.timezoneSwitchDate = function(keepSelection) {
} }
if ($tzDate.val() !== '') { if ($tzDate.val() !== '') {
$timezone.children('optgroup').remove(':not([label="' + $('#tz_date').val() + '"])'); $timezone.children('optgroup').remove(':not([data-tz-value="' + $('#tz_date').val() + '"])');
} }
if ($tzDate.val() === $tzSelectDateSuggest.attr('data-suggested-tz')) { if ($tzDate.val() === $tzSelectDateSuggest.attr('data-suggested-tz')) {
@@ -795,7 +795,7 @@ phpbb.timezoneSwitchDate = function(keepSelection) {
$tzSelectDateSuggest.css('display', 'inline'); $tzSelectDateSuggest.css('display', 'inline');
} }
var $tzOptions = $timezone.children('optgroup[label="' + $tzDate.val() + '"]').children('option'); var $tzOptions = $timezone.children('optgroup[data-tz-value="' + $tzDate.val() + '"]').children('option');
if ($tzOptions.length === 1) { if ($tzOptions.length === 1) {
// If there is only one timezone for the selected date, we just select that automatically. // If there is only one timezone for the selected date, we just select that automatically.
@@ -849,7 +849,7 @@ phpbb.timezonePreselectSelect = function(forceSelector) {
minutes = minutes.toString(); minutes = minutes.toString();
} }
var prefix = 'GMT' + sign + hours + ':' + minutes; var prefix = 'UTC' + sign + hours + ':' + minutes;
var prefixLength = prefix.length; var prefixLength = prefix.length;
var selectorOptions = $('option', '#tz_date'); var selectorOptions = $('option', '#tz_date');
var i; var i;

View File

@@ -266,10 +266,6 @@ function mozWrap(txtarea, open, close) {
var selEnd = txtarea.selectionEnd; var selEnd = txtarea.selectionEnd;
var scrollTop = txtarea.scrollTop; var scrollTop = txtarea.scrollTop;
if (selEnd === 1 || selEnd === 2) {
selEnd = selLength;
}
var s1 = (txtarea.value).substring(0,selStart); var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd); var s2 = (txtarea.value).substring(selStart, selEnd);
var s3 = (txtarea.value).substring(selEnd, selLength); var s3 = (txtarea.value).substring(selEnd, selLength);

View File

@@ -104,7 +104,7 @@ require($phpbb_root_path . 'includes/compatibility_globals.' . $phpEx);
// Add own hook handler // Add own hook handler
require($phpbb_root_path . 'includes/hooks/index.' . $phpEx); require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('\phpbb\template\template', 'display'))); $phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));
$phpbb_hook_finder = $phpbb_container->get('hook_finder'); $phpbb_hook_finder = $phpbb_container->get('hook_finder');
foreach ($phpbb_hook_finder->find() as $hook) foreach ($phpbb_hook_finder->find() as $hook)

View File

@@ -1,4 +1,9 @@
services: services:
# ----- Auth management -----
auth:
class: phpbb\auth\auth
# ----- Auth providers -----
auth.provider_collection: auth.provider_collection:
class: phpbb\auth\provider_collection class: phpbb\auth\provider_collection
arguments: arguments:
@@ -6,6 +11,7 @@ services:
- @config - @config
tags: tags:
- { name: service_collection, tag: auth.provider } - { name: service_collection, tag: auth.provider }
auth.provider.db: auth.provider.db:
class: phpbb\auth\provider\db class: phpbb\auth\provider\db
arguments: arguments:
@@ -19,6 +25,7 @@ services:
- %core.php_ext% - %core.php_ext%
tags: tags:
- { name: auth.provider } - { name: auth.provider }
auth.provider.apache: auth.provider.apache:
class: phpbb\auth\provider\apache class: phpbb\auth\provider\apache
arguments: arguments:
@@ -31,6 +38,7 @@ services:
- %core.php_ext% - %core.php_ext%
tags: tags:
- { name: auth.provider } - { name: auth.provider }
auth.provider.ldap: auth.provider.ldap:
class: phpbb\auth\provider\ldap class: phpbb\auth\provider\ldap
arguments: arguments:
@@ -40,6 +48,7 @@ services:
- @user - @user
tags: tags:
- { name: auth.provider } - { name: auth.provider }
auth.provider.oauth: auth.provider.oauth:
class: phpbb\auth\provider\oauth\oauth class: phpbb\auth\provider\oauth\oauth
arguments: arguments:
@@ -57,12 +66,15 @@ services:
- %core.php_ext% - %core.php_ext%
tags: tags:
- { name: auth.provider } - { name: auth.provider }
# ----- OAuth services providers -----
auth.provider.oauth.service_collection: auth.provider.oauth.service_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
- @service_container - @service_container
tags: tags:
- { name: service_collection, tag: auth.provider.oauth.service } - { name: service_collection, tag: auth.provider.oauth.service }
auth.provider.oauth.service.bitly: auth.provider.oauth.service.bitly:
class: phpbb\auth\provider\oauth\service\bitly class: phpbb\auth\provider\oauth\service\bitly
arguments: arguments:
@@ -70,6 +82,7 @@ services:
- @request - @request
tags: tags:
- { name: auth.provider.oauth.service } - { name: auth.provider.oauth.service }
auth.provider.oauth.service.facebook: auth.provider.oauth.service.facebook:
class: phpbb\auth\provider\oauth\service\facebook class: phpbb\auth\provider\oauth\service\facebook
arguments: arguments:
@@ -77,6 +90,7 @@ services:
- @request - @request
tags: tags:
- { name: auth.provider.oauth.service } - { name: auth.provider.oauth.service }
auth.provider.oauth.service.google: auth.provider.oauth.service.google:
class: phpbb\auth\provider\oauth\service\google class: phpbb\auth\provider\oauth\service\google
arguments: arguments:

View File

@@ -1,4 +1,18 @@
services: services:
avatar.manager:
class: phpbb\avatar\manager
arguments:
- @config
- @avatar.driver_collection
# ----- Avatar drivers -----
avatar.driver_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: avatar.driver }
avatar.driver.gravatar: avatar.driver.gravatar:
class: phpbb\avatar\driver\gravatar class: phpbb\avatar\driver\gravatar
arguments: arguments:
@@ -51,10 +65,3 @@ services:
- [set_name, [avatar.driver.upload]] - [set_name, [avatar.driver.upload]]
tags: tags:
- { name: avatar.driver } - { name: avatar.driver }
avatar.driver_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: avatar.driver }

View File

@@ -1,8 +1,3 @@
parameters:
tables.captcha_qa_questions: %core.table_prefix%captcha_questions
tables.captcha_qa_answers: %core.table_prefix%captcha_answers
tables.captcha_qa_confirm: %core.table_prefix%qa_confirm
services: services:
captcha.factory: captcha.factory:
class: phpbb\captcha\factory class: phpbb\captcha\factory
@@ -10,6 +5,8 @@ services:
- @service_container - @service_container
- @captcha.plugins.service_collection - @captcha.plugins.service_collection
# ----- Captcha plugins -----
# Scope MUST be prototype for all the plugins to work.
captcha.plugins.service_collection: captcha.plugins.service_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
@@ -19,7 +16,7 @@ services:
core.captcha.plugins.gd: core.captcha.plugins.gd:
class: phpbb\captcha\plugins\gd class: phpbb\captcha\plugins\gd
scope: prototype # scope MUST be prototype for this to work! scope: prototype
calls: calls:
- [set_name, [core.captcha.plugins.gd]] - [set_name, [core.captcha.plugins.gd]]
tags: tags:
@@ -27,7 +24,7 @@ services:
core.captcha.plugins.gd_wave: core.captcha.plugins.gd_wave:
class: phpbb\captcha\plugins\gd_wave class: phpbb\captcha\plugins\gd_wave
scope: prototype # scope MUST be prototype for this to work! scope: prototype
calls: calls:
- [set_name, [core.captcha.plugins.gd_wave]] - [set_name, [core.captcha.plugins.gd_wave]]
tags: tags:
@@ -35,7 +32,7 @@ services:
core.captcha.plugins.nogd: core.captcha.plugins.nogd:
class: phpbb\captcha\plugins\nogd class: phpbb\captcha\plugins\nogd
scope: prototype # scope MUST be prototype for this to work! scope: prototype
calls: calls:
- [set_name, [core.captcha.plugins.nogd]] - [set_name, [core.captcha.plugins.nogd]]
tags: tags:
@@ -43,7 +40,7 @@ services:
core.captcha.plugins.qa: core.captcha.plugins.qa:
class: phpbb\captcha\plugins\qa class: phpbb\captcha\plugins\qa
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- %tables.captcha_qa_questions% - %tables.captcha_qa_questions%
- %tables.captcha_qa_answers% - %tables.captcha_qa_answers%
@@ -55,7 +52,7 @@ services:
core.captcha.plugins.recaptcha: core.captcha.plugins.recaptcha:
class: phpbb\captcha\plugins\recaptcha class: phpbb\captcha\plugins\recaptcha
scope: prototype # scope MUST be prototype for this to work! scope: prototype
calls: calls:
- [set_name, [core.captcha.plugins.recaptcha]] - [set_name, [core.captcha.plugins.recaptcha]]
tags: tags:

71
phpBB/config/content.yml Normal file
View File

@@ -0,0 +1,71 @@
services:
content.visibility:
class: phpbb\content_visibility
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
- %tables.forums%
- %tables.posts%
- %tables.topics%
- %tables.users%
groupposition.legend:
class: phpbb\groupposition\legend
arguments:
- @dbal.conn
- @user
groupposition.teampage:
class: phpbb\groupposition\teampage
arguments:
- @dbal.conn
- @user
- @cache.driver
message.form.admin:
class: phpbb\message\admin_form
arguments:
- @auth
- @config
- @config_text
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
message.form.topic:
class: phpbb\message\topic_form
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
message.form.user:
class: phpbb\message\user_form
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
pagination:
class: phpbb\pagination
arguments:
- @template
- @user
- @controller.helper
- @dispatcher
viewonline_helper:
class: phpbb\viewonline_helper
arguments:
- @filesystem

View File

@@ -1,4 +1,26 @@
services: services:
cron.manager:
class: phpbb\cron\manager
arguments:
- @cron.task_collection
- %core.root_path%
- %core.php_ext%
cron.lock_db:
class: phpbb\lock\db
arguments:
- cron_lock
- @config
- @dbal.conn
# ----- Cron tasks -----
cron.task_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: cron.task }
cron.task.core.prune_all_forums: cron.task.core.prune_all_forums:
class: phpbb\cron\task\core\prune_all_forums class: phpbb\cron\task\core\prune_all_forums
arguments: arguments:

View File

@@ -1,4 +1,20 @@
services: services:
dbal.conn:
class: phpbb\db\driver\factory
arguments:
- @service_container
dbal.conn.driver:
class: %dbal.driver.class%
calls:
- [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
dbal.tools:
class: phpbb\db\tools
arguments:
- @dbal.conn
# ----- Migrator -----
migrator: migrator:
class: phpbb\db\migrator class: phpbb\db\migrator
arguments: arguments:
@@ -15,6 +31,7 @@ services:
migrator.helper: migrator.helper:
class: phpbb\db\migration\helper class: phpbb\db\migration\helper
# ----- Migrator's tools -----
migrator.tool_collection: migrator.tool_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:

34
phpBB/config/event.yml Normal file
View File

@@ -0,0 +1,34 @@
services:
dispatcher:
class: phpbb\event\dispatcher
arguments:
- @service_container
hook_finder:
class: phpbb\hook\finder
arguments:
- %core.root_path%
- %core.php_ext%
- @cache.driver
kernel_request_subscriber:
class: phpbb\event\kernel_request_subscriber
arguments:
- @ext.manager
- %core.root_path%
- %core.php_ext%
tags:
- { name: kernel.event_subscriber }
kernel_exception_subscriber:
class: phpbb\event\kernel_exception_subscriber
arguments:
- @template
- @user
tags:
- { name: kernel.event_subscriber }
kernel_terminate_subscriber:
class: phpbb\event\kernel_terminate_subscriber
tags:
- { name: kernel.event_subscriber }

View File

@@ -1,11 +1,11 @@
parameters:
mimetype.guesser.priority.lowest: -2
mimetype.guesser.priority.low: -1
mimetype.guesser.priority.default: 0
mimetype.guesser.priority.high: 1
mimetype.guesser.priority.highest: 2
services: services:
mimetype.guesser_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: mimetype.guessers }
mimetype.fileinfo_mimetype_guesser: mimetype.fileinfo_mimetype_guesser:
class: Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser class: Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser
tags: tags:
@@ -30,13 +30,6 @@ services:
tags: tags:
- { name: mimetype.guessers } - { name: mimetype.guessers }
mimetype.guesser_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: mimetype.guessers }
mimetype.guesser: mimetype.guesser:
class: phpbb\mimetype\guesser class: phpbb\mimetype\guesser
arguments: arguments:

View File

@@ -1,4 +1,23 @@
services: services:
notification_manager:
class: phpbb\notification\manager
arguments:
- @notification.type_collection
- @notification.method_collection
- @service_container
- @user_loader
- @config
- @dbal.conn
- @cache
- @user
- %core.root_path%
- %core.php_ext%
- %tables.notification_types%
- %tables.notifications%
- %tables.user_notifications%
# ----- Notification's types -----
# Scope MUST be prototype for all the plugins to work.
notification.type_collection: notification.type_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:
@@ -6,16 +25,9 @@ services:
tags: tags:
- { name: service_collection, tag: notification.type } - { name: service_collection, tag: notification.type }
notification.method_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: notification.method }
notification.type.approve_post: notification.type.approve_post:
class: phpbb\notification\type\approve_post class: phpbb\notification\type\approve_post
scope: prototype # scope MUST be prototype for this to work! # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -33,7 +45,7 @@ services:
notification.type.approve_topic: notification.type.approve_topic:
class: phpbb\notification\type\approve_topic class: phpbb\notification\type\approve_topic
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -51,7 +63,7 @@ services:
notification.type.bookmark: notification.type.bookmark:
class: phpbb\notification\type\bookmark class: phpbb\notification\type\bookmark
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -69,7 +81,7 @@ services:
notification.type.disapprove_post: notification.type.disapprove_post:
class: phpbb\notification\type\disapprove_post class: phpbb\notification\type\disapprove_post
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -87,7 +99,7 @@ services:
notification.type.disapprove_topic: notification.type.disapprove_topic:
class: phpbb\notification\type\disapprove_topic class: phpbb\notification\type\disapprove_topic
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -105,7 +117,7 @@ services:
notification.type.group_request: notification.type.group_request:
class: phpbb\notification\type\group_request class: phpbb\notification\type\group_request
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -123,7 +135,7 @@ services:
notification.type.group_request_approved: notification.type.group_request_approved:
class: phpbb\notification\type\group_request_approved class: phpbb\notification\type\group_request_approved
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -141,7 +153,7 @@ services:
notification.type.pm: notification.type.pm:
class: phpbb\notification\type\pm class: phpbb\notification\type\pm
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -159,7 +171,7 @@ services:
notification.type.post: notification.type.post:
class: phpbb\notification\type\post class: phpbb\notification\type\post
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -177,7 +189,7 @@ services:
notification.type.post_in_queue: notification.type.post_in_queue:
class: phpbb\notification\type\post_in_queue class: phpbb\notification\type\post_in_queue
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -195,7 +207,7 @@ services:
notification.type.quote: notification.type.quote:
class: phpbb\notification\type\quote class: phpbb\notification\type\quote
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -213,7 +225,7 @@ services:
notification.type.report_pm: notification.type.report_pm:
class: phpbb\notification\type\report_pm class: phpbb\notification\type\report_pm
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -231,7 +243,7 @@ services:
notification.type.report_pm_closed: notification.type.report_pm_closed:
class: phpbb\notification\type\report_pm_closed class: phpbb\notification\type\report_pm_closed
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -249,7 +261,7 @@ services:
notification.type.report_post: notification.type.report_post:
class: phpbb\notification\type\report_post class: phpbb\notification\type\report_post
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -267,7 +279,7 @@ services:
notification.type.report_post_closed: notification.type.report_post_closed:
class: phpbb\notification\type\report_post_closed class: phpbb\notification\type\report_post_closed
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -285,7 +297,7 @@ services:
notification.type.topic: notification.type.topic:
class: phpbb\notification\type\topic class: phpbb\notification\type\topic
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -303,7 +315,7 @@ services:
notification.type.topic_in_queue: notification.type.topic_in_queue:
class: phpbb\notification\type\topic_in_queue class: phpbb\notification\type\topic_in_queue
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -321,7 +333,7 @@ services:
notification.type.admin_activate_user: notification.type.admin_activate_user:
class: phpbb\notification\type\admin_activate_user class: phpbb\notification\type\admin_activate_user
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -336,10 +348,19 @@ services:
- %tables.user_notifications% - %tables.user_notifications%
tags: tags:
- { name: notification.type } - { name: notification.type }
# ----- Notification's methods -----
# Scope MUST be prototype for all the plugins to work.
notification.method_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: notification.method }
notification.method.email: notification.method.email:
class: phpbb\notification\method\email class: phpbb\notification\method\email
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn
@@ -354,7 +375,7 @@ services:
notification.method.jabber: notification.method.jabber:
class: phpbb\notification\method\jabber class: phpbb\notification\method\jabber
scope: prototype # scope MUST be prototype for this to work! scope: prototype
arguments: arguments:
- @user_loader - @user_loader
- @dbal.conn - @dbal.conn

View File

@@ -1,3 +1,20 @@
parameters: parameters:
# Disable the usage of the super globals (_GET, _POST, _SERVER...)
core.disable_super_globals: true core.disable_super_globals: true
# Datetime class to use
datetime.class: \phpbb\datetime datetime.class: \phpbb\datetime
# Mimetype guesser priorities
mimetype.guesser.priority.lowest: -2
mimetype.guesser.priority.low: -1
mimetype.guesser.priority.default: 0
mimetype.guesser.priority.high: 1
mimetype.guesser.priority.highest: 2
# List of default password driver types
passwords.algorithms:
- passwords.driver.bcrypt_2y
- passwords.driver.bcrypt
- passwords.driver.salted_md5
- passwords.driver.phpass

View File

@@ -1,11 +1,29 @@
parameters:
passwords.algorithms:
- passwords.driver.bcrypt_2y
- passwords.driver.bcrypt
- passwords.driver.salted_md5
- passwords.driver.phpass
services: services:
# ----- Password management -----
passwords.manager:
class: phpbb\passwords\manager
arguments:
- @config
- @passwords.driver_collection
- @passwords.helper
- %passwords.algorithms%
passwords.helper:
class: phpbb\passwords\helper
passwords.driver_helper:
class: phpbb\passwords\driver\helper
arguments:
- @config
# ----- Password's drivers -----
passwords.driver_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: passwords.driver }
passwords.driver.bcrypt: passwords.driver.bcrypt:
class: phpbb\passwords\driver\bcrypt class: phpbb\passwords\driver\bcrypt
arguments: arguments:
@@ -83,6 +101,7 @@ services:
arguments: arguments:
- @request - @request
- @passwords.driver.salted_md5 - @passwords.driver.salted_md5
- @passwords.driver_helper
- %core.root_path% - %core.root_path%
- %core.php_ext% - %core.php_ext%
tags: tags:
@@ -103,26 +122,3 @@ services:
- @passwords.driver_helper - @passwords.driver_helper
tags: tags:
- { name: passwords.driver } - { name: passwords.driver }
passwords.driver_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: passwords.driver }
passwords.driver_helper:
class: phpbb\passwords\driver\helper
arguments:
- @config
passwords.manager:
class: phpbb\passwords\manager
arguments:
- @config
- @passwords.driver_collection
- @passwords.helper
- %passwords.algorithms%
passwords.helper:
class: phpbb\passwords\helper

View File

@@ -19,6 +19,7 @@ services:
- @dbal.conn - @dbal.conn
- %tables.profile_fields_options_language% - %tables.profile_fields_options_language%
# ----- Profile fields types -----
profilefields.type_collection: profilefields.type_collection:
class: phpbb\di\service_collection class: phpbb\di\service_collection
arguments: arguments:

View File

@@ -1,34 +1,23 @@
imports: imports:
- { resource: tables.yml } - { resource: auth.yml }
- { resource: cron_tasks.yml } - { resource: avatar.yml }
- { resource: notifications.yml }
- { resource: migrator.yml }
- { resource: avatars.yml }
- { resource: feed.yml }
- { resource: auth_providers.yml }
- { resource: console.yml }
- { resource: mimetype_guessers.yml }
- { resource: passwords.yml }
- { resource: profilefields.yml }
- { resource: captcha.yml } - { resource: captcha.yml }
- { resource: console.yml }
- { resource: content.yml }
- { resource: cron.yml }
- { resource: db.yml }
- { resource: event.yml }
- { resource: feed.yml }
- { resource: mimetype_guesser.yml }
- { resource: notification.yml }
- { resource: password.yml }
- { resource: profilefield.yml }
- { resource: user.yml }
- { resource: tables.yml }
- { resource: parameters.yml } - { resource: parameters.yml }
services: services:
acl.permissions:
class: phpbb\permissions
arguments:
- @dispatcher
- @user
auth:
class: phpbb\auth\auth
avatar.manager:
class: phpbb\avatar\manager
arguments:
- @config
- @avatar.driver_collection
cache: cache:
class: phpbb\cache\service class: phpbb\cache\service
arguments: arguments:
@@ -77,20 +66,6 @@ services:
- @dbal.conn - @dbal.conn
- %tables.config_text% - %tables.config_text%
content.visibility:
class: phpbb\content_visibility
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
- %tables.forums%
- %tables.posts%
- %tables.topics%
- %tables.users%
controller.helper: controller.helper:
class: phpbb\controller\helper class: phpbb\controller\helper
arguments: arguments:
@@ -117,47 +92,6 @@ services:
calls: calls:
- [find, [%core.root_path%]] - [find, [%core.root_path%]]
cron.task_collection:
class: phpbb\di\service_collection
arguments:
- @service_container
tags:
- { name: service_collection, tag: cron.task }
cron.manager:
class: phpbb\cron\manager
arguments:
- @cron.task_collection
- %core.root_path%
- %core.php_ext%
cron.lock_db:
class: phpbb\lock\db
arguments:
- cron_lock
- @config
- @dbal.conn
dispatcher:
class: phpbb\event\dispatcher
arguments:
- @service_container
dbal.conn:
class: phpbb\db\driver\factory
arguments:
- @service_container
dbal.conn.driver:
class: %dbal.driver.class%
calls:
- [sql_connect, [%dbal.dbhost%, %dbal.dbuser%, %dbal.dbpasswd%, %dbal.dbname%, %dbal.dbport%, false, %dbal.new_link%]]
dbal.tools:
class: phpbb\db\tools
arguments:
- @dbal.conn
ext.manager: ext.manager:
class: phpbb\extension\manager class: phpbb\extension\manager
arguments: arguments:
@@ -174,54 +108,12 @@ services:
filesystem: filesystem:
class: phpbb\filesystem class: phpbb\filesystem
groupposition.legend:
class: phpbb\groupposition\legend
arguments:
- @dbal.conn
- @user
groupposition.teampage:
class: phpbb\groupposition\teampage
arguments:
- @dbal.conn
- @user
- @cache.driver
http_kernel: http_kernel:
class: Symfony\Component\HttpKernel\HttpKernel class: Symfony\Component\HttpKernel\HttpKernel
arguments: arguments:
- @dispatcher - @dispatcher
- @controller.resolver - @controller.resolver
hook_finder:
class: phpbb\hook\finder
arguments:
- %core.root_path%
- %core.php_ext%
- @cache.driver
kernel_request_subscriber:
class: phpbb\event\kernel_request_subscriber
arguments:
- @ext.manager
- %core.root_path%
- %core.php_ext%
tags:
- { name: kernel.event_subscriber }
kernel_exception_subscriber:
class: phpbb\event\kernel_exception_subscriber
arguments:
- @template
- @user
tags:
- { name: kernel.event_subscriber }
kernel_terminate_subscriber:
class: phpbb\event\kernel_terminate_subscriber
tags:
- { name: kernel.event_subscriber }
log: log:
class: phpbb\log\log class: phpbb\log\log
arguments: arguments:
@@ -234,61 +126,6 @@ services:
- %core.php_ext% - %core.php_ext%
- %tables.log% - %tables.log%
message.form.admin:
class: phpbb\message\admin_form
arguments:
- @auth
- @config
- @config_text
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
message.form.topic:
class: phpbb\message\topic_form
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
message.form.user:
class: phpbb\message\user_form
arguments:
- @auth
- @config
- @dbal.conn
- @user
- %core.root_path%
- %core.php_ext%
notification_manager:
class: phpbb\notification\manager
arguments:
- @notification.type_collection
- @notification.method_collection
- @service_container
- @user_loader
- @config
- @dbal.conn
- @cache
- @user
- %core.root_path%
- %core.php_ext%
- %tables.notification_types%
- %tables.notifications%
- %tables.user_notifications%
pagination:
class: phpbb\pagination
arguments:
- @template
- @user
- @controller.helper
path_helper: path_helper:
class: phpbb\path_helper class: phpbb\path_helper
arguments: arguments:
@@ -335,19 +172,6 @@ services:
template_context: template_context:
class: phpbb\template\context class: phpbb\template\context
user:
class: phpbb\user
arguments:
- %datetime.class%
user_loader:
class: phpbb\user_loader
arguments:
- @dbal.conn
- %core.root_path%
- %core.php_ext%
- %tables.users%
version_helper: version_helper:
class: phpbb\version_helper class: phpbb\version_helper
scope: prototype scope: prototype
@@ -355,8 +179,3 @@ services:
- @cache - @cache
- @config - @config
- @user - @user
viewonline_helper:
class: phpbb\viewonline_helper
arguments:
- @filesystem

View File

@@ -1,6 +1,9 @@
parameters: parameters:
tables.auth_provider_oauth_token_storage: %core.table_prefix%oauth_tokens tables.auth_provider_oauth_token_storage: %core.table_prefix%oauth_tokens
tables.auth_provider_oauth_account_assoc: %core.table_prefix%oauth_accounts tables.auth_provider_oauth_account_assoc: %core.table_prefix%oauth_accounts
tables.captcha_qa_questions: %core.table_prefix%captcha_questions
tables.captcha_qa_answers: %core.table_prefix%captcha_answers
tables.captcha_qa_confirm: %core.table_prefix%qa_confirm
tables.config: %core.table_prefix%config tables.config: %core.table_prefix%config
tables.config_text: %core.table_prefix%config_text tables.config_text: %core.table_prefix%config_text
tables.ext: %core.table_prefix%ext tables.ext: %core.table_prefix%ext

19
phpBB/config/user.yml Normal file
View File

@@ -0,0 +1,19 @@
services:
acl.permissions:
class: phpbb\permissions
arguments:
- @dispatcher
- @user
user:
class: phpbb\user
arguments:
- %datetime.class%
user_loader:
class: phpbb\user_loader
arguments:
- @dbal.conn
- %core.root_path%
- %core.php_ext%
- %tables.users%

View File

@@ -57,4 +57,4 @@ $fp = fopen($schema_path . 'schema.json', 'wb');
fwrite($fp, json_encode($schema_data, JSON_PRETTY_PRINT)); fwrite($fp, json_encode($schema_data, JSON_PRETTY_PRINT));
fclose($fp); fclose($fp);
echo 'done'; echo 'Successfully created schema file';

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="description" content="phpBB 3.1.x Changelog" /> <meta name="description" content="phpBB 3.1.x Changelog" />
<title>phpBB3 &bull; Changelog</title> <title>phpBB &bull; Changelog</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" /> <link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
@@ -46,6 +46,8 @@
<ol> <ol>
<li><a href="#changelog">Changelog</a> <li><a href="#changelog">Changelog</a>
<ol style="list-style-type: lower-roman;"> <ol style="list-style-type: lower-roman;">
<li><a href="#v310RC5">Changes since 3.1.0-RC5</a></li>
<li><a href="#v310RC4">Changes since 3.1.0-RC4</a></li>
<li><a href="#v310RC3">Changes since 3.1.0-RC3</a></li> <li><a href="#v310RC3">Changes since 3.1.0-RC3</a></li>
<li><a href="#v310RC2">Changes since 3.1.0-RC2</a></li> <li><a href="#v310RC2">Changes since 3.1.0-RC2</a></li>
<li><a href="#v310RC1">Changes since 3.1.0-RC1</a></li> <li><a href="#v310RC1">Changes since 3.1.0-RC1</a></li>
@@ -97,7 +99,111 @@
<div class="content"> <div class="content">
<a name="v310RC3"></a><h3>1.i. Changes since 3.1.0-RC3</h3> <a name="v310RC5"></a><h3>1.i. Changes since 3.1.0-RC5</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12530">PHPBB3-12530</a>] - Visual confirmation is breaking layout in prosilver's mobile mode</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12568">PHPBB3-12568</a>] - docs/README.html references MODs instead of extensions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13124">PHPBB3-13124</a>] - PHP event extractor too strict on doc blocks</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13138">PHPBB3-13138</a>] - Banned users cause infinite recursion</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13140">PHPBB3-13140</a>] - Header links don't re-appear on window size increase</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13161">PHPBB3-13161</a>] - PHP Warnings issued from phpbb database test case</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13163">PHPBB3-13163</a>] - Header Navbar Responsiveness Broken</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13164">PHPBB3-13164</a>] - Data sent to core.submit_post_end event does not include fresh post_visibility</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13168">PHPBB3-13168</a>] - Warning displayed in PHP 5.6 for mbstring.http_input</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13169">PHPBB3-13169</a>] - Responsive forms not displaying correctly in RTL</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13171">PHPBB3-13171</a>] - Can not delete posts and soft delete topics in MCP topic view</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13174">PHPBB3-13174</a>] - Minor HTML error in ucp_pm_viewmessage.html (needs closing &lt;/div&gt;)</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13177">PHPBB3-13177</a>] - Post count-based ranks do not display in viewtopic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13181">PHPBB3-13181</a>] - Sphinx config template should use place holders for database credentials</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13186">PHPBB3-13186</a>] - Do not link post count to author search if search disabled</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13187">PHPBB3-13187</a>] - INSTALL.html is not valid HTML</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13188">PHPBB3-13188</a>] - Sphinx index() function triggers slow queries that time out replies</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13190">PHPBB3-13190</a>] - phpbb_session_login_keys_test::test_reset_keys fails on develop-ascraeus</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13194">PHPBB3-13194</a>] - BBCode isn't parsed when issuing a warning for a post</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13203">PHPBB3-13203</a>] - Use constant time comparison method for comparing password hashes</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12796">PHPBB3-12796</a>] - View own Profile should have an edit button</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12799">PHPBB3-12799</a>] - Place the events for f_brunoais_read_other</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13041">PHPBB3-13041</a>] - help_faq.php language file needs to be revised</li>
</ul>
<h4>New Feature</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13205">PHPBB3-13205</a>] - Add mark all PMs read button</li>
</ul>
<a name="v310RC4"></a><h3>1.ii. Changes since 3.1.0-RC4</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10729">PHPBB3-10729</a>] - Post editor information is not updated when user being deleted with posts</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11224">PHPBB3-11224</a>] - SQL cache destroy does not destroy queries to tables joined</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12368">PHPBB3-12368</a>] - Updating database fails in upgrade from 3.0 when trying twice without purging the cache</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12489">PHPBB3-12489</a>] - Description for Contact link in custom profile fields</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12657">PHPBB3-12657</a>] - Add a test file for cli command cache:purge</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12858">PHPBB3-12858</a>] - 'GMT' is hard coded and not pulled from language files</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12889">PHPBB3-12889</a>] - multi-select element in unban email-adresses not limited in width</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13011">PHPBB3-13011</a>] - Javascript bug when selecting first one or two characters of a post</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13027">PHPBB3-13027</a>] - PM folder full percentage could be a bit more accurate</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13033">PHPBB3-13033</a>] - Duplicate entry SQL error thrown when running notifications_use_full_name migration</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13045">PHPBB3-13045</a>] - Pragma header not specified as response header by RFC2616</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13048">PHPBB3-13048</a>] - AJAX requests are being stored to session_page</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13055">PHPBB3-13055</a>] - String profile fields validation limits content to latin chars only</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13070">PHPBB3-13070</a>] - Wrong hook name is registered for array(template, display)</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13071">PHPBB3-13071</a>] - total_match_count is used before core.search_get_posts_data event</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13080">PHPBB3-13080</a>] - Responsive design - language variable to long</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13082">PHPBB3-13082</a>] - Search box does not displayed proper in admin cp when no logs listed</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13085">PHPBB3-13085</a>] - Fix typo in oauth.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13086">PHPBB3-13086</a>] - Update ACP_MASS_EMAIL_EXPLAIN language key</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13087">PHPBB3-13087</a>] - WLM link is empty in viewtopic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13097">PHPBB3-13097</a>] - Fix missing unit type in forms.css</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13104">PHPBB3-13104</a>] - Responsive tabs display bug in IE11</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13105">PHPBB3-13105</a>] - Future dates are displayed as &quot;Tomorrow&quot; with relative date format</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13111">PHPBB3-13111</a>] - Debug output when editing DropDown Custom Fields with multiple languages</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13113">PHPBB3-13113</a>] - The routes are not always generated for the good app.php file</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13116">PHPBB3-13116</a>] - Topic and post approval notifications got interchanged</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13117">PHPBB3-13117</a>] - Installation fails on MySQL 5.7 because auto_increment columns can be NULL</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13118">PHPBB3-13118</a>] - datetime.class parameter not used in user class</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13120">PHPBB3-13120</a>] - phpbb_load_extensions_autoloaders() doesn't work very well with the extensions behind a symlink</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13121">PHPBB3-13121</a>] - Customise Purge Cache always returns user to Styles page</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13125">PHPBB3-13125</a>] - Uploaded avatars are not displayed in IE &lt;= 7</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12408">PHPBB3-12408</a>] - Add quick setting for &quot;default guest style&quot; to ACP board settings</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12985">PHPBB3-12985</a>] - Add event to modify the redirect after a successful login</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12993">PHPBB3-12993</a>] - Add event to get_user_rank() function</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13025">PHPBB3-13025</a>] - Add template events for buttons on viewforum and viewtopic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13059">PHPBB3-13059</a>] - Add core event to generate_page_link() to allow modifying pagination URLs</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13072">PHPBB3-13072</a>] - Add total_match_count to core.search_get_topic_data event</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13077">PHPBB3-13077</a>] - Change module order in Customise tab for better usability</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13094">PHPBB3-13094</a>] - Remove the search box if there are no new posts to search for</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13107">PHPBB3-13107</a>] - Add template events to forum row in forumlist_body.html</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13108">PHPBB3-13108</a>] - Add core event to the parse_attachments() function to allow modifying files info</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13110">PHPBB3-13110</a>] - Add core event to the page_footer() function to allow handling overall output</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13122">PHPBB3-13122</a>] - phpbb_wrapper_gmgetdate_test intermittently fails</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13134">PHPBB3-13134</a>] - Add core event to the root of the function display_forums()</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13137">PHPBB3-13137</a>] - Remove schema.json from repository</li>
</ul>
<h4>Sub-task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12929">PHPBB3-12929</a>] - Add an event when getting the information for PM composal</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12930">PHPBB3-12930</a>] - Add an event to the query getting the post for quoting in a PM</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10794">PHPBB3-10794</a>] - Make schema available at runtime</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12987">PHPBB3-12987</a>] - Cleanup the services.yml file</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13106">PHPBB3-13106</a>] - Remove the \phpbb\di\pass\kernel_pass class</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13119">PHPBB3-13119</a>] - Add events to mcp and acp ban modules</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13123">PHPBB3-13123</a>] - Add events to allow post blocking and post pre/past processing</li>
</ul>
<a name="v310RC3"></a><h3>1.iii. Changes since 3.1.0-RC3</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -187,7 +293,7 @@
</ul> </ul>
<a name="v310RC2"></a><h3>1.ii. Changes since 3.1.0-RC2</h3> <a name="v310RC2"></a><h3>1.iv. Changes since 3.1.0-RC2</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -311,7 +417,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12948">PHPBB3-12948</a>] - Remove Travis CI &quot;broken opcache on PHP 5.5.7 and 5.5.8&quot; workaround.</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12948">PHPBB3-12948</a>] - Remove Travis CI &quot;broken opcache on PHP 5.5.7 and 5.5.8&quot; workaround.</li>
</ul> </ul>
<a name="v310RC1"></a><h3>1.iii. Changes since 3.1.0-RC1</h3> <a name="v310RC1"></a><h3>1.v. Changes since 3.1.0-RC1</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -382,7 +488,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12829">PHPBB3-12829</a>] - Remove check for pgsql 8.3/8.2</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12829">PHPBB3-12829</a>] - Remove check for pgsql 8.3/8.2</li>
</ul> </ul>
<a name="v310b4"></a><h3>1.iv. Changes since 3.1.0-b4</h3> <a name="v310b4"></a><h3>1.vi. Changes since 3.1.0-b4</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -502,7 +608,7 @@
</ul> </ul>
<a name="v310b3"></a><h3>1.v. Changes since 3.1.0-b3</h3> <a name="v310b3"></a><h3>1.vii. Changes since 3.1.0-b3</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -609,7 +715,7 @@
</ul> </ul>
<a name="v310b2"></a><h3>1.vi. Changes since 3.1.0-b2</h3> <a name="v310b2"></a><h3>1.viii. Changes since 3.1.0-b2</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -774,7 +880,7 @@
</ul> </ul>
<a name="v310b1"></a><h3>1.vii. Changes since 3.1.0-b1</h3> <a name="v310b1"></a><h3>1.ix. Changes since 3.1.0-b1</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -842,7 +948,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12302">PHPBB3-12302</a>] - Upgrade composer.phar to 1.0.0-alpha8</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12302">PHPBB3-12302</a>] - Upgrade composer.phar to 1.0.0-alpha8</li>
</ul> </ul>
<a name="v310a3"></a><h3>1.viii. Changes since 3.1.0-a3</h3> <a name="v310a3"></a><h3>1.x. Changes since 3.1.0-a3</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -989,7 +1095,7 @@
</ul> </ul>
<a name="v310a2"></a><h3>1.ix. Changes since 3.1.0-a2</h3> <a name="v310a2"></a><h3>1.xi. Changes since 3.1.0-a2</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -1097,7 +1203,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12147">PHPBB3-12147</a>] - Remove Travis CI notification configuration</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12147">PHPBB3-12147</a>] - Remove Travis CI notification configuration</li>
</ul> </ul>
<a name="v310a1"></a><h3>1.x. Changes since 3.1.0-a1</h3> <a name="v310a1"></a><h3>1.xii. Changes since 3.1.0-a1</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -1173,7 +1279,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11998">PHPBB3-11998</a>] - Add console / command line client environment </li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11998">PHPBB3-11998</a>] - Add console / command line client environment </li>
</ul> </ul>
<a name="v30x"></a><h3>1.xi. Changes since 3.0.x</h3> <a name="v30x"></a><h3>1.xiii. Changes since 3.0.x</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -1854,7 +1960,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11913">PHPBB3-11913</a>] - Apply reorganisation of download.phpbb.com to build_announcement.php</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11913">PHPBB3-11913</a>] - Apply reorganisation of download.phpbb.com to build_announcement.php</li>
</ul> </ul>
<a name="v3011"></a><h3>1.xii. Changes since 3.0.11</h3> <a name="v3011"></a><h3>1.xiv. Changes since 3.0.11</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -2009,7 +2115,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11753">PHPBB3-11753</a>] - Upgrade mysql_upgrader.php schema data.</li>
</ul> </ul>
<a name="v3010"></a><h3>1.xiii. Changes since 3.0.10</h3> <a name="v3010"></a><h3>1.xv. Changes since 3.0.10</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -2134,7 +2240,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10909">PHPBB3-10909</a>] - Update Travis Test Configuration: Travis no longer supports PHP 5.3.2</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10909">PHPBB3-10909</a>] - Update Travis Test Configuration: Travis no longer supports PHP 5.3.2</li>
</ul> </ul>
<a name="v309"></a><h3>1.xiv. Changes since 3.0.9</h3> <a name="v309"></a><h3>1.xvi. Changes since 3.0.9</h3>
<h4>Bug</h4> <h4>Bug</h4>
<ul> <ul>
@@ -2270,7 +2376,7 @@
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10480">PHPBB3-10480</a>] - Automate changelog building</li> <li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10480">PHPBB3-10480</a>] - Automate changelog building</li>
</ul> </ul>
<a name="v308"></a><h3>1.xv. Changes since 3.0.8</h3> <a name="v308"></a><h3>1.xvii. Changes since 3.0.8</h3>
<h4> Bug <h4> Bug
</h4> </h4>
@@ -2638,7 +2744,7 @@
</ul> </ul>
<a name="v307-PL1"></a><h3>1.xvi. Changes since 3.0.7-PL1</h3> <a name="v307-PL1"></a><h3>1.xviii. Changes since 3.0.7-PL1</h3>
<h4> Security <h4> Security
</h4> </h4>
<ul> <ul>
@@ -3096,13 +3202,13 @@
</ul> </ul>
<a name="v307"></a><h3>1.xvii. Changes since 3.0.7</h3> <a name="v307"></a><h3>1.xix. Changes since 3.0.7</h3>
<ul> <ul>
<li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li> <li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li>
</ul> </ul>
<a name="v306"></a><h3>1.xviii. Changes since 3.0.6</h3> <a name="v306"></a><h3>1.xx. Changes since 3.0.6</h3>
<ul> <ul>
<li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li> <li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li>
@@ -3206,7 +3312,7 @@
</ul> </ul>
<a name="v305"></a><h3>1.xix. Changes since 3.0.5</h3> <a name="v305"></a><h3>1.xxi. Changes since 3.0.5</h3>
<ul> <ul>
<li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li> <li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li>
@@ -3428,7 +3534,7 @@
<li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li> <li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li>
</ul> </ul>
<a name="v304"></a><h3>1.xx. Changes since 3.0.4</h3> <a name="v304"></a><h3>1.xxii. Changes since 3.0.4</h3>
<ul> <ul>
<li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li> <li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li>
@@ -3517,7 +3623,7 @@
<li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li> <li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li>
</ul> </ul>
<a name="v303"></a><h3>1.xxi. Changes since 3.0.3</h3> <a name="v303"></a><h3>1.xxiii. Changes since 3.0.3</h3>
<ul> <ul>
<li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li> <li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li>
@@ -3549,7 +3655,7 @@
<li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li> <li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li>
</ul> </ul>
<a name="v302"></a><h3>1.xxii. Changes since 3.0.2</h3> <a name="v302"></a><h3>1.xxiv. Changes since 3.0.2</h3>
<ul> <ul>
<li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li> <li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li>
@@ -3648,7 +3754,7 @@
<li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li> <li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li>
</ul> </ul>
<a name="v301"></a><h3>1.xxiii. Changes since 3.0.1</h3> <a name="v301"></a><h3>1.xxv. Changes since 3.0.1</h3>
<ul> <ul>
<li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li> <li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li>
@@ -3696,7 +3802,7 @@
<li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li> <li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li>
</ul> </ul>
<a name="v300"></a><h3>1.xxiv. Changes since 3.0.0</h3> <a name="v300"></a><h3>1.xxvi. Changes since 3.0.0</h3>
<ul> <ul>
<li>[Change] Validate birthdays (Bug #15004)</li> <li>[Change] Validate birthdays (Bug #15004)</li>
@@ -3767,7 +3873,7 @@
<li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li> <li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li>
</ul> </ul>
<a name="v30rc8"></a><h3>1.xxv. Changes since 3.0.RC8</h3> <a name="v30rc8"></a><h3>1.xxvii. Changes since 3.0.RC8</h3>
<ul> <ul>
<li>[Fix] Cleaned usernames contain only single spaces, so &quot;a_name&quot; and &quot;a__name&quot; are treated as the same name (Bug #15634)</li> <li>[Fix] Cleaned usernames contain only single spaces, so &quot;a_name&quot; and &quot;a__name&quot; are treated as the same name (Bug #15634)</li>
@@ -3776,7 +3882,7 @@
<li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li> <li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li>
</ul> </ul>
<a name="v30rc7"></a><h3>1.xxvi. Changes since 3.0.RC7</h3> <a name="v30rc7"></a><h3>1.xxviii. Changes since 3.0.RC7</h3>
<ul> <ul>
<li>[Fix] Fixed MSSQL related bug in the update system</li> <li>[Fix] Fixed MSSQL related bug in the update system</li>
@@ -3811,7 +3917,7 @@
<li>[Fix] No duplication of active topics (Bug #15474)</li> <li>[Fix] No duplication of active topics (Bug #15474)</li>
</ul> </ul>
<a name="v30rc6"></a><h3>1.xxvii. Changes since 3.0.RC6</h3> <a name="v30rc6"></a><h3>1.xxix. Changes since 3.0.RC6</h3>
<ul> <ul>
<li>[Fix] Submitting language changes using acp_language (Bug #14736)</li> <li>[Fix] Submitting language changes using acp_language (Bug #14736)</li>
@@ -3821,7 +3927,7 @@
<li>[Fix] Able to request new password (Bug #14743)</li> <li>[Fix] Able to request new password (Bug #14743)</li>
</ul> </ul>
<a name="v30rc5"></a><h3>1.xxviii. Changes since 3.0.RC5</h3> <a name="v30rc5"></a><h3>1.xxx. Changes since 3.0.RC5</h3>
<ul> <ul>
<li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li> <li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li>
@@ -3884,7 +3990,7 @@
<li>[Sec] New password hashing mechanism for storing passwords (#i42)</li> <li>[Sec] New password hashing mechanism for storing passwords (#i42)</li>
</ul> </ul>
<a name="v30rc4"></a><h3>1.xxix. Changes since 3.0.RC4</h3> <a name="v30rc4"></a><h3>1.xxxi. Changes since 3.0.RC4</h3>
<ul> <ul>
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li> <li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
@@ -3935,7 +4041,7 @@
<li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li> <li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li>
</ul> </ul>
<a name="v30rc3"></a><h3>1.xxx. Changes since 3.0.RC3</h3> <a name="v30rc3"></a><h3>1.xxxii. Changes since 3.0.RC3</h3>
<ul> <ul>
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li> <li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
@@ -4044,7 +4150,7 @@
</ul> </ul>
<a name="v30rc2"></a><h3>1.xxxi. Changes since 3.0.RC2</h3> <a name="v30rc2"></a><h3>1.xxxiii. Changes since 3.0.RC2</h3>
<ul> <ul>
<li>[Fix] Re-allow searching within the memberlist</li> <li>[Fix] Re-allow searching within the memberlist</li>
@@ -4090,7 +4196,7 @@
</ul> </ul>
<a name="v30rc1"></a><h3>1.xxxii. Changes since 3.0.RC1</h3> <a name="v30rc1"></a><h3>1.xxxiv. Changes since 3.0.RC1</h3>
<ul> <ul>
<li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li> <li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li>

View File

@@ -24,7 +24,6 @@ phpBB Lead Developer: naderman (Nils Adermann)
phpBB Developers: bantu (Andreas Fischer) phpBB Developers: bantu (Andreas Fischer)
dhruv.goel92 (Dhruv Goel) dhruv.goel92 (Dhruv Goel)
EXreaction (Nathan Guse)
marc1706 (Marc Alexander) marc1706 (Marc Alexander)
nickvergessen (Joas Schilling) nickvergessen (Joas Schilling)
nicofuma (Tristan Darricau) nicofuma (Tristan Darricau)
@@ -53,6 +52,7 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
ckwalsh (Cullen Walsh) [01/2010 - 07/2011] ckwalsh (Cullen Walsh) [01/2010 - 07/2011]
DavidMJ (David M.) [12/2005 - 08/2009] DavidMJ (David M.) [12/2005 - 08/2009]
dhn (Dominik Dröscher) [05/2007 - 01/2011] dhn (Dominik Dröscher) [05/2007 - 01/2011]
EXreaction (Nathan Guse) [07/2012 - 05/2014]
GrahamJE (Graham Eames) [09/2005 - 11/2006] GrahamJE (Graham Eames) [09/2005 - 11/2006]
igorw (Igor Wiedler) [08/2010 - 02/2013] igorw (Igor Wiedler) [08/2010 - 02/2013]
imkingdavid (David King) [11/2012 - 06/2014] imkingdavid (David King) [11/2012 - 06/2014]

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="description" content="phpBB 3.1.x frequently asked questions" /> <meta name="description" content="phpBB 3.1.x frequently asked questions" />
<title>phpBB3 &bull; FAQ</title> <title>phpBB &bull; FAQ</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" /> <link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
@@ -35,7 +35,7 @@
<!-- BEGIN DOCUMENT --> <!-- BEGIN DOCUMENT -->
<p>This is a very basic Frequently Asked Questions (FAQ) page which attempts to answer some of the more commonly asked questions. It is by no means exhaustive and should be used in combination with the 'built-in' User FAQ within phpBB3, the community forums and our IRC channel (see <a href="README.html">README</a> for details).</p> <p>This is a very basic Frequently Asked Questions (FAQ) page which attempts to answer some of the more commonly asked questions. It is by no means exhaustive and should be used in combination with the 'built-in' User FAQ within phpBB, the community forums and our IRC channel (see <a href="README.html">README</a> for details).</p>
<h1>FAQ</h1> <h1>FAQ</h1>
@@ -78,7 +78,7 @@
<div class="content"> <div class="content">
<p>Simple answer, no we will not. We are not being difficult when we say this we are actually trying to help you. phpBB has a reputation for being easy to install, that reputation is we believe well deserved. It is a simple process of unarchiving a single file, uploading the resulting directory/files to their intended location and entering some data in a web based form. The sequence of events, what to type where, etc. is covered in detail in the accompanying <a href="INSTALL.html">INSTALL.html</a> documentation. If you cannot install phpBB3 the chances are you will be unable to administer or update it.</p> <p>Simple answer, no we will not. We are not being difficult when we say this we are actually trying to help you. phpBB has a reputation for being easy to install, that reputation is we believe well deserved. It is a simple process of unarchiving a single file, uploading the resulting directory/files to their intended location and entering some data in a web based form. The sequence of events, what to type where, etc. is covered in detail in the accompanying <a href="INSTALL.html">INSTALL.html</a> documentation. If you cannot install phpBB the chances are you will be unable to administer or update it.</p>
<p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p> <p>There are people, companies (unrelated to your hosting provider), etc. that will install your forum, either for free or for a payment. We do not recommend you make use of these offers. Unless the service is provided by your hosting company you will have to divulge passwords and other sensitive details. If you did not know how to use an ATM would you give a passer-by your bank card and PIN and ask them to show you what to do? No, probably not! The same applies to your hosting account details!</p>

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="description" content="phpBB 3.1.x Installation, updating and conversion informations" /> <meta name="description" content="phpBB 3.1.x Installation, updating and conversion informations" />
<title>phpBB3 &bull; Install</title> <title>phpBB &bull; Install</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" /> <link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
@@ -39,7 +39,7 @@
<p>This document will walk you through the basics on installing, updating and converting the forum software.</p> <p>This document will walk you through the basics on installing, updating and converting the forum software.</p>
<p>A basic overview of running phpBB3 can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB3 you should read <a href="https://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p> <p>A basic overview of running phpBB can be found in the accompanying <a href="README.html">README</a> file. Please ensure you read that document in addition to this! For more detailed information on using, installing, updating and converting phpBB you should read <a href="https://www.phpbb.com/support/documentation/3.0/">the documentation</a> available online.</p>
<h1>Install</h1> <h1>Install</h1>
@@ -142,10 +142,11 @@
</ul> </ul>
</li> </li>
<li><strong>PHP 5.3.3+</strong> with support for the database you intend to use.</li> <li><strong>PHP 5.3.3+</strong> with support for the database you intend to use.</li>
<li>The following PHP modules are required:</li> <li>The following PHP modules are required:
<ul> <ul>
<li>json</li> <li>json</li>
</ul> </ul>
</li>
<li>getimagesize() function must be enabled.</li> <li>getimagesize() function must be enabled.</li>
<li>Presence of the following modules within PHP will provide access to additional features, but they are not required: <li>Presence of the following modules within PHP will provide access to additional features, but they are not required:
<ul> <ul>
@@ -176,23 +177,23 @@
<div class="content"> <div class="content">
<p>Installation of phpBB3 will vary according to your server and database. If you have <em>shell access</em> to your account (via telnet or ssh for example) you may want to upload the entire phpBB3 archive (in binary mode!) to a directory on your host and unarchive it there.</p> <p>Installation of phpBB will vary according to your server and database. If you have <em>shell access</em> to your account (via telnet or ssh for example) you may want to upload the entire phpBB archive (in binary mode!) to a directory on your host and unarchive it there.</p>
<p>If you do not have shell access or do not wish to use it, you will need to decompress the phpBB3 archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case as doing so will cause errors later.</p> <p>If you do not have shell access or do not wish to use it, you will need to decompress the phpBB archive to a local directory on your system using your favourite compression program, e.g. winzip, rar, zip, etc. From there you must FTP <strong>ALL</strong> the files it contains (being sure to retain the directory structure and filenames) to your host. Please ensure that the cases of filenames are retained, do <strong>NOT</strong> force filenames to all lower or upper case as doing so will cause errors later.</p>
<p>All .php, .sql, .cfg, .css, .js, .html, .htaccess and .txt files should be uploaded in <strong>ASCII</strong> mode, while all graphics should be uploaded in <strong>BINARY</strong> mode. If you are unfamiliar with what this means please refer to your FTP client documentation. In most cases this is all handled transparantly by your ftp client, but if you encounter problems later you should be sure the files were uploaded correctly as described here.</p> <p>All .php, .sql, .cfg, .css, .js, .html, .htaccess and .txt files should be uploaded in <strong>ASCII</strong> mode, while all graphics should be uploaded in <strong>BINARY</strong> mode. If you are unfamiliar with what this means please refer to your FTP client documentation. In most cases this is all handled transparantly by your ftp client, but if you encounter problems later you should be sure the files were uploaded correctly as described here.</p>
<p>phpBB3 comes supplied with British English as its standard language. However, a number of separate packs for different languages are available. If you are not a native English speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can, of course, change this default at a later stage). For more details on language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p> <p>phpBB comes supplied with British English as its standard language. However, a number of separate packs for different languages are available. If you are not a native English speaker you may wish to install one or more of these packages before continuing. The installation process below will allow you to select a default language from those available (you can, of course, change this default at a later stage). For more details on language packs, where to obtain them and how to install them please see the <a href="README.html#i18n">README</a>.</p>
<p>Once all the files have been uploaded to your site, you should point your browser at this location with the addition of <code>/install/</code>. For example, if your domain name is <code>www.example.com</code> and you placed the phpBB3 files in the directory <code>/phpBB3</code> off your web root you would enter <code>http://www.example.com/phpBB3/install/</code> or (alternatively) <code>http://www.example.com/phpBB3/install/index.php</code> into your browser. When you have done this, you should see the <strong><em>phpBB3 Introduction</em></strong> screen appear.</p> <p>Once all the files have been uploaded to your site, you should point your browser at this location with the addition of <code>/install/</code>. For example, if your domain name is <code>www.example.com</code> and you placed the phpBB files in the directory <code>/phpBB3</code> off your web root you would enter <code>http://www.example.com/phpBB3/install/</code> or (alternatively) <code>http://www.example.com/phpBB3/install/index.php</code> into your browser. When you have done this, you should see the <strong><em>phpBB Introduction</em></strong> screen appear.</p>
<h4>Introduction:</h4> <h4>Introduction:</h4>
<p>The initial screen gives you a short introduction into phpBB. It allows you to read the license phpBB3 is released under (General Public License v2) and provides information about how you can receive support. To start the installation, use the <strong><em>INSTALL</em></strong> tab.</p> <p>The initial screen gives you a short introduction into phpBB. It allows you to read the license phpBB is released under (General Public License v2) and provides information about how you can receive support. To start the installation, use the <strong><em>INSTALL</em></strong> tab.</p>
<h4>Requirements</h4> <h4>Requirements</h4>
<p>The first page you will see after starting the installation is the Requirements list. phpBB3 automatically checks whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB3 to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p> <p>The first page you will see after starting the installation is the Requirements list. phpBB automatically checks whether everything that it needs to run properly is installed on your server. You need to have at least the minimum PHP version installed, and at least one database available to continue the installation. Also important, is that all shown folders are available and have the correct permissions. Please see the description of each section to find out whether they are optional or required for phpBB to run. If everything is in order, you can continue the installation with <em>Start Install</em>.</p>
<h4>Database settings</h4> <h4>Database settings</h4>
@@ -212,7 +213,7 @@
<p>You don't need to change the Prefix for tables in database setting, unless you plan on using multipe phpBB installations on one database. In this case, you can use a different prefix for each installation to make it work.</p> <p>You don't need to change the Prefix for tables in database setting, unless you plan on using multipe phpBB installations on one database. In this case, you can use a different prefix for each installation to make it work.</p>
<p>After you entered your details, you can continue with the <em>Proceed to next step</em> button. Now phpBB3 will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p> <p>After you entered your details, you can continue with the <em>Proceed to next step</em> button. Now phpBB will check whether the data you entered will lead to a successful database connection and whether tables with the same prefix already exist.</p>
<p>A <em>Could not connect to the database</em> error means that you didn't enter the database data correctly and it is not possible for phpBB to connect. Make sure that everything you entered is in order and try again. Again, if you are unsure about your database settings, please contact your host.</p> <p>A <em>Could not connect to the database</em> error means that you didn't enter the database data correctly and it is not possible for phpBB to connect. Make sure that everything you entered is in order and try again. Again, if you are unsure about your database settings, please contact your host.</p>
@@ -222,7 +223,7 @@
<h4>Administrator details</h4> <h4>Administrator details</h4>
<p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB3 installation, we only include British English. You can download further languages from <a href="https://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p> <p>Now you have to create your administration user. This user will have full administration access and he/she will be the first user on your forum. All fields on this page are required. You can also set the default language of your forum on this page. In a vanilla phpBB installation, we only include British English. You can download further languages from <a href="https://www.phpbb.com/">www.phpbb.com</a>, and add them before installing or later.</p>
<h4>Configuration file</h4> <h4>Configuration file</h4>
@@ -236,7 +237,7 @@
<p>If the installation was successful, you can now use the <em>Login</em> button to visit the Administration Control Panel. Congratulations, you have installed phpBB successfully. But there is still work ahead!</p> <p>If the installation was successful, you can now use the <em>Login</em> button to visit the Administration Control Panel. Congratulations, you have installed phpBB successfully. But there is still work ahead!</p>
<p>If you are unable to get phpBB3 installed even after reading this guide, please look at the support section of the installer's introduction page to find out where you can ask for further assistance.</p> <p>If you are unable to get phpBB installed even after reading this guide, please look at the support section of the installer's introduction page to find out where you can ask for further assistance.</p>
<p>At this point if you are converting from phpBB 2.0.x, you should refer to the <a href="#convert">conversion steps</a> for further information. If not, you should remove the install directory from your server as you will only be able to access the Administration Control Panel whilst it is present.</p> <p>At this point if you are converting from phpBB 2.0.x, you should refer to the <a href="#convert">conversion steps</a> for further information. If not, you should remove the install directory from your server as you will only be able to access the Administration Control Panel whilst it is present.</p>
@@ -256,15 +257,15 @@
<div class="content"> <div class="content">
<p>If you are currently using a stable release of phpBB3, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB3 files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p> <p>If you are currently using a stable release of phpBB, updating to this version is straightforward. You would have downloaded one of four packages and your choice determines what you need to do. <strong>Note</strong>: Before updating, we heavily recommend you do a <em>full backup of your database and existing phpBB files</em>! If you are unsure how to achieve this please ask your hosting provider for advice.</p>
<p><strong>Please make sure you update your phpBB3 source files too, even if you run the <code>database_update.php</code> file.</strong></p> <p><strong>Please make sure you update your phpBB source files too, even if you run the <code>database_update.php</code> file.</strong></p>
<a name="update_full"></a><h3>4.i. Full package</h3> <a name="update_full"></a><h3>4.i. Full package</h3>
<p>The full package is normally meant for new installations only, but if you want to replace all source files, this package comes in handy.</p> <p>The full package is normally meant for new installations only, but if you want to replace all source files, this package comes in handy.</p>
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB3 files, you may want to leave your <code>files/</code> and <code>images/</code> directorie in place. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p> <p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB files, you may want to leave your <code>files/</code> and <code>images/</code> directories in place. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <a href="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
<p>You should now run <code>install/database_update.php</code> which, depending on your previous version, will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p> <p>You should now run <code>install/database_update.php</code> which, depending on your previous version, will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker).</p>
@@ -303,7 +304,7 @@
<ul> <ul>
<li>Go to the <a href="https://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li> <li>Go to the <a href="https://www.phpbb.com/downloads/">downloads page</a> and download the latest update package listed there, matching your current version.</li>
<li>Upload the uncompressed archive contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li> <li>Upload the uncompressed archive contents to your phpBB installation - only the install folder is required. Upload the whole install folder, retaining the file structure.</li>
<li>After the install folder is present, phpBB3 will go offline automatically.</li> <li>After the install folder is present, phpBB will go offline automatically.</li>
<li>Point your browser to the install directory, for example <code>http://www.example.com/phpBB3/install/</code></li> <li>Point your browser to the install directory, for example <code>http://www.example.com/phpBB3/install/</code></li>
<li>Choose the "Update" Tab and follow the instructions</li> <li>Choose the "Update" Tab and follow the instructions</li>
</ul> </ul>
@@ -429,13 +430,13 @@
<div class="content"> <div class="content">
<p>Once you have successfully installed phpBB3 you <strong>MUST</strong> ensure you remove the entire <code>install/</code> directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is removed, phpBB will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion, you may also wish to delete the docs/ directory if you wish.</p> <p>Once you have successfully installed phpBB you <strong>MUST</strong> ensure you remove the entire <code>install/</code> directory. Leaving the install directory in place is a <em>very serious potential security issue</em> which may lead to deletion or alteration of files, etc. Please note that until this directory is removed, phpBB will not operate and a warning message will be displayed. Beyond this <strong>essential</strong> deletion, you may also wish to delete the docs/ directory if you wish.</p>
<p>With these directories deleted, you should proceed to the administration panel. Depending on how the installation completed, you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the <strong>Administration Control Panel</strong> link at the bottom of any page. Ensure that details specified on the <strong>General</strong> tab are correct!</p> <p>With these directories deleted, you should proceed to the administration panel. Depending on how the installation completed, you may have been directed there automatically. If not, login as the administrator you specified during install/conversion and click the <strong>Administration Control Panel</strong> link at the bottom of any page. Ensure that details specified on the <strong>General</strong> tab are correct!</p>
<a name="avatars"></a><h3>6.i. Uploadable avatars</h3> <a name="avatars"></a><h3>6.i. Uploadable avatars</h3>
<p>phpBB3 supports several methods for allowing users to select their own <em>avatar</em> (an avatar is a small image generally unique to a user and displayed just below their username in posts).</p> <p>phpBB supports several methods for allowing users to select their own <em>avatar</em> (an avatar is a small image generally unique to a user and displayed just below their username in posts).</p>
<p>Two of these options allow users to upload an avatar from their machine or a remote location (via a URL). If you wish to enable this function you should first ensure the correct path for uploadable avatars is set in <strong>Administration Control Panel -&gt; General -&gt; Board Configuration -&gt; Avatar settings</strong>. By default this is <code>images/avatars/uploads</code>, but you can set it to whatever you like, just ensure the configuration setting is updated. You must also ensure this directory can be written to by the webserver. Usually this means you have to alter its permissions to allow anyone to read and write to it. Exactly how you should do this depends on your FTP client or server operating system.</p> <p>Two of these options allow users to upload an avatar from their machine or a remote location (via a URL). If you wish to enable this function you should first ensure the correct path for uploadable avatars is set in <strong>Administration Control Panel -&gt; General -&gt; Board Configuration -&gt; Avatar settings</strong>. By default this is <code>images/avatars/uploads</code>, but you can set it to whatever you like, just ensure the configuration setting is updated. You must also ensure this directory can be written to by the webserver. Usually this means you have to alter its permissions to allow anyone to read and write to it. Exactly how you should do this depends on your FTP client or server operating system.</p>

View File

@@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="keywords" content="" /> <meta name="keywords" content="" />
<meta name="description" content="phpBB 3.1.x Readme" /> <meta name="description" content="phpBB 3.1.x Readme" />
<title>phpBB3 &bull; Readme</title> <title>phpBB &bull; Readme</title>
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" /> <link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen, projection" />
@@ -34,7 +34,7 @@
<!-- BEGIN DOCUMENT --> <!-- BEGIN DOCUMENT -->
<p>Thank you for downloading phpBB3. This README will guide you through the basics of installation and operation of phpBB3. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p> <p>Thank you for downloading phpBB. This README will guide you through the basics of installation and operation of phpBB. Please ensure you read this and the accompanying documentation fully <strong>before</strong> proceeding with the installation.</p>
<h1>Readme</h1> <h1>Readme</h1>
@@ -44,15 +44,15 @@
<div class="content"> <div class="content">
<ol> <ol>
<li><a href="#install">Installing phpBB3</a></li> <li><a href="#install">Installing phpBB</a></li>
<li><a href="#run">Running phpBB3</a> <li><a href="#run">Running phpBB</a>
<ol style="list-style-type: lower-roman;"> <ol style="list-style-type: lower-roman;">
<li><a href="#i18n">Languages (Internationalisation - i18n)</a></li> <li><a href="#i18n">Languages (Internationalisation - i18n)</a></li>
<li><a href="#styles">Styles</a></li> <li><a href="#styles">Styles</a></li>
<li><a href="#mods">Modifications</a></li> <li><a href="#extensions">Extensions</a></li>
</ol> </ol>
</li> </li>
<li><a href="#help">Getting help with phpBB3</a> <li><a href="#help">Getting help with phpBB</a>
<ol style="list-style-type: lower-roman;"> <ol style="list-style-type: lower-roman;">
<li><a href="#docs">Documentation</a></li> <li><a href="#docs">Documentation</a></li>
<li><a href="#kb">Knowledge Base</a></li> <li><a href="#kb">Knowledge Base</a></li>
@@ -78,7 +78,7 @@
<hr /> <hr />
<a name="install"></a><h2>1. Installing phpBB3</h2> <a name="install"></a><h2>1. Installing phpBB</h2>
<div class="paragraph"> <div class="paragraph">
<div class="inner"><span class="corners-top"><span></span></span> <div class="inner"><span class="corners-top"><span></span></span>
@@ -115,7 +115,7 @@
<hr /> <hr />
<a name="run"></a><h2>2. Running phpBB3</h2> <a name="run"></a><h2>2. Running phpBB</h2>
<div class="paragraph"> <div class="paragraph">
<div class="inner"><span class="corners-top"><span></span></span> <div class="inner"><span class="corners-top"><span></span></span>
@@ -132,31 +132,31 @@
<p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. Please do not ask for support if you download a language pack from a 3rd party site.</p> <p>This is the <em>official</em> location for all supported language sets. If you download a package from a 3rd party site you do so with the understanding that we cannot offer support. Please do not ask for support if you download a language pack from a 3rd party site.</p>
<p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>System tab -&gt; General Tasks -&gt; Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="https://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p> <p>Installation of these packages is straightforward: simply download the required language pack, uncompress (unzip) it and via FTP transfer the included <code>language</code> and <code>styles</code> folders to the root of your board installation. The language can then be installed via the Administration Control Panel of your board: <code>Customise tab -&gt; Language management -&gt; Language packs</code>. A more detailed description of the process is in the Knowledge Base article, <a href="https://www.phpbb.com/kb/article/how-to-install-a-language-pack/">How to Install a Language Pack</a>.</p>
<p>If your language is not available, please visit our <a href="https://www.phpbb.com/community/viewforum.php?f=66">[3.0.x] Translations</a> forum where you will find topics on translations in progress. Should you wish to volunteer to translate a language not currently available or assist in maintaining an existing language pack, you can <a href="https://www.phpbb.com/languages/apply.php">Apply to become a translator</a>.</p> <p>If your language is not available, please visit our <a href="https://www.phpbb.com/community/viewforum.php?f=66">[3.0.x] Translations</a> forum where you will find topics on translations in progress. Should you wish to volunteer to translate a language not currently available or assist in maintaining an existing language pack, you can <a href="https://www.phpbb.com/languages/apply.php">Apply to become a translator</a>.</p>
<a name="styles"></a><h3>2.ii. Styles</h3> <a name="styles"></a><h3>2.ii. Styles</h3>
<p>Although we are rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB3 allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="https://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p> <p>Although we are rather proud of the included styles, we realise that they may not be to everyone's taste. Therefore, phpBB allows styles to be switched with relative ease. First, you need to locate and download a style you like. You can find them listed in the <a href="https://www.phpbb.com/customise/db/styles-2/">Styles</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
<p>For more information about styles, please see: <a href="https://www.phpbb.com/styles/">https://www.phpbb.com/styles/</a></p> <p>For more information about styles, please see: <a href="https://www.phpbb.com/styles/">https://www.phpbb.com/styles/</a></p>
<p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3. It is also important to ensure that the style is updated to match the current version of the phpBB software you are using.</p> <p><strong>Please note</strong> that 3rd party styles downloaded for versions of phpBB2 will <strong>not</strong> work in phpBB3. It is also important to ensure that the style is updated to match the current version of the phpBB software you are using.</p>
<p>Once you have downloaded a style, the usual next step is to unarchive (or upload the unarchived contents of) the package into your <code>styles/</code> directory. You then need to visit <code>Administration Control Panel -&gt; Styles tab</code> where you should see the new style available. Click &quot;Install&quot; to install the style.</p> <p>Once you have downloaded a style, the usual next step is to unarchive (or upload the unarchived contents of) the package into your <code>styles/</code> directory. You then need to visit <code>Administration Control Panel -&gt; Customise tab -&gt; Style management -&gt; Install Styles</code> where you should see the new style available. Click &quot;Install style&quot; to install the style.</p>
<p><strong>Please note</strong> that to improve efficiency, the software caches certain data. For this reason, if you create your own style or modify existing ones, please remember to &quot;Refresh&quot; the appropriate style components <code>Administration Control Panel -&gt; Styles tab -&gt; Style Components</code> screen. You may also need to reload the page you have changed in your web browser to overcome browser caching. If the changed components are not refreshed you will not see your changes taking effect.</p> <p><strong>Please note</strong> that to improve efficiency, the software caches certain data. For this reason, if you create your own style or modify existing ones, please remember to purge the board cache by clicking the <code>Run now</code> button next to the <code>Purge the cache</code> option in the index page of the Administration Control Panel. You may also need to reload the page you have changed in your web browser to overcome browser caching. If the cache is not purged, you will not see your changes taking effect.</p>
<a name="mods"></a><h3>2.iii. Modifications</h3> <a name="extensions"></a><h3>2.iii. Extensions</h3>
<p>We are proud to have a thriving modifications community. These third party modifications to the standard phpBB software, known as <strong>MODs</strong>, extend its capabilities still further. You can browse through many of the MODs in the <a href="https://www.phpbb.com/customise/db/modifications-1/">Modifications</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p> <p>We are proud to have a thriving extensions community. These third party extensions to the standard phpBB software, extend its capabilities still further. You can browse through many of the extensions in the <a href="https://www.phpbb.com/customise/db/extensions-27/">Extensions</a> section of our <a href="https://www.phpbb.com/customise/db/">Customisation Database</a>.</p>
<p>For more information about MODs, please see: <a href="https://www.phpbb.com/mods/">https://www.phpbb.com/mods/</a></p> <p>For more information about extensions, please see: <a href="https://www.phpbb.com/extensions">https://www.phpbb.com/extensions</a></p>
<p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any modification should <strong>NOT</strong> be reported to the bug tracker (see below). First remove the MOD and see if the problem is resolved. Any support for a MOD should only be sought in the &quot;Discussion/Support&quot; forum for that MOD.</p> <p><strong>Please remember</strong> that any bugs or other issues that occur after you have added any extension should <strong>NOT</strong> be reported to the bug tracker (see below). First disable the extension and see if the problem is resolved. Any support for an extension should only be sought in the &quot;Discussion/Support&quot; forum for that extension.</p>
<p>Also remember that any modifications, particularly those which modify the database in any way, may render upgrading your forum to future versions more difficult. With all this said, many users have and continue to utilise many of the MODs already available with great success.</p> <p>Also remember that any extensions which modify the database in any way, may render upgrading your forum to future versions more difficult.</p>
</div> </div>
@@ -167,16 +167,16 @@
<hr /> <hr />
<a name="help"></a><h2>3. Getting help with phpBB3</h2> <a name="help"></a><h2>3. Getting help with phpBB</h2>
<div class="paragraph"> <div class="paragraph">
<div class="inner"><span class="corners-top"><span></span></span> <div class="inner"><span class="corners-top"><span></span></span>
<div class="content"> <div class="content">
<p>phpBB3 can sometimes seem a little daunting to new users, particularly with regards to the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a>, which covers a few basic getting started questions. If you need additional help there are several places you can find it.</p> <p>phpBB can sometimes seem a little daunting to new users, particularly with regards to the permission system. The first thing you should do is check the <a href="FAQ.html">FAQ</a>, which covers a few basic getting started questions. If you need additional help there are several places you can find it.</p>
<a name="docs"></a><h3>3.i. phpBB3 Documentation</h3> <a name="docs"></a><h3>3.i. phpBB Documentation</h3>
<p>Comprehensive documentation is now available on the phpBB website:</p> <p>Comprehensive documentation is now available on the phpBB website:</p>
@@ -244,16 +244,16 @@
<div class="content"> <div class="content">
<p>The phpBB Limited uses a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p> <p>The phpBB developers use a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p>
<p><a href="http://tracker.phpbb.com/browse/PHPBB3">http://tracker.phpbb.com/browse/PHPBB3</a></p> <p><a href="http://tracker.phpbb.com/browse/PHPBB3">http://tracker.phpbb.com/browse/PHPBB3</a></p>
<p>While we very much appreciate receiving bug reports (the more reports the more stable phpBB will be) we ask you carry out a few steps before adding new entries:</p> <p>While we very much appreciate receiving bug reports (the more reports the more stable phpBB will be) we ask you carry out a few steps before adding new entries:</p>
<ul> <ul>
<li>First, determine if your bug is reproduceable; how to determine this depends on the bug in question. Only if the bug is reproduceable is it likely to be a problem with phpBB3 (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li> <li>First, determine if your bug is reproduceable; how to determine this depends on the bug in question. Only if the bug is reproduceable is it likely to be a problem with phpBB (or in some way connected). If something cannot be reproduced it may turn out to have been your hosting provider working on something, a user doing something silly, etc. Bug reports for non-reproduceable events can slow down our attempts to fix real, reproduceable issues<br /><br /></li>
<li>Next, please read or search through the existing bug reports to see if <em>your</em> bug (or one very similar to it) is already listed. If it is please add to that existing bug rather than creating a new duplicate entry (all this does is slow us down).<br /><br /></li> <li>Next, please read or search through the existing bug reports to see if <em>your</em> bug (or one very similar to it) is already listed. If it is please add to that existing bug rather than creating a new duplicate entry (all this does is slow us down).<br /><br /></li>
<li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it&rsquo;s related to something you have done rather than phpBB3<br /><br /></li> <li>Check the forums (use search!) to see if people have discussed anything that sounds similar to what you are seeing. However, as noted above please <strong>DO NOT</strong> post your particular bug to the forum unless it's non-reproduceable or you are sure it&rsquo;s related to something you have done rather than phpBB<br /><br /></li>
<li>If no existing bug exists then please feel free to add it</li> <li>If no existing bug exists then please feel free to add it</li>
</ul> </ul>
@@ -267,7 +267,7 @@
<p>The relevant database type/version is listed within the administration control panel.</p> <p>The relevant database type/version is listed within the administration control panel.</p>
<p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb3">on GitHub</a>.</p> <p>Please be as detailed as you can in your report, and if possible, list the steps required to duplicate the problem. If you have a patch that fixes the issue, please attach it to the ticket or submit a pull request to our repository <a href="https://github.com/phpbb/phpbb">on GitHub</a>.</p>
<p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.1.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/31x/coding-guidelines.html">http://area51.phpbb.com/docs/31x/coding-guidelines.html</a></p> <p>If you create a patch, it is very much appreciated (but not required) if you follow the phpBB coding guidelines. Please note that the coding guidelines are somewhat different between different versions of phpBB. For phpBB 3.1.x the coding guidelines may be found here: <a href="http://area51.phpbb.com/docs/31x/coding-guidelines.html">http://area51.phpbb.com/docs/31x/coding-guidelines.html</a></p>
@@ -321,7 +321,7 @@
<p>phpBB 3.1.x takes advantage of new features added in PHP 5.3. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.3.3.</p> <p>phpBB 3.1.x takes advantage of new features added in PHP 5.3. We recommend that you upgrade to the latest stable release of PHP5 to run phpBB. The minimum version required is PHP 5.3.3.</p>
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB3. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p> <p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.3.x to 5.4.x without problem.</p> <p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, MSSQL Server 2000, PostgreSQL 8.x, Oracle 8, SQLite 2 and SQLite 3. Versions of PHP used range from 5.3.x to 5.4.x without problem.</p>

View File

@@ -224,6 +224,38 @@ forumlist_body_category_header_before
* Since: 3.1.0-a4 * Since: 3.1.0-a4
* Purpose: Add content before the header of the category on the forum list. * Purpose: Add content before the header of the category on the forum list.
forumlist_body_forum_row_after
===
* Locations:
+ styles/prosilver/template/forumlist_body.html
+ styles/subsilver2/template/forumlist_body.html
* Since: 3.1.0-RC5
* Purpose: Add content after the forum list item.
forumlist_body_forum_row_append
===
* Locations:
+ styles/prosilver/template/forumlist_body.html
+ styles/subsilver2/template/forumlist_body.html
* Since: 3.1.0-RC5
* Purpose: Add content at the start of the forum list item.
forumlist_body_forum_row_before
===
* Locations:
+ styles/prosilver/template/forumlist_body.html
+ styles/subsilver2/template/forumlist_body.html
* Since: 3.1.0-RC5
* Purpose: Add content before the forum list item.
forumlist_body_forum_row_prepend
===
* Locations:
+ styles/prosilver/template/forumlist_body.html
+ styles/subsilver2/template/forumlist_body.html
* Since: 3.1.0-RC5
* Purpose: Add content at the end of the forum list item.
forumlist_body_last_post_title_prepend forumlist_body_last_post_title_prepend
=== ===
* Locations: * Locations:
@@ -1123,6 +1155,70 @@ ucp_friend_list_after
* Since: 3.1.0-a4 * Since: 3.1.0-a4
* Purpose: Add optional elements after list of friends in UCP * Purpose: Add optional elements after list of friends in UCP
viewforum_buttons_bottom_before
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/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:
+ styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/template/viewforum_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after New Topic button on the bottom of the topic's list
viewforum_buttons_top_before
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/template/viewforum_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons before New Topic button on the top of the topic's list
viewforum_buttons_top_after
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/template/viewforum_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after New Topic button on the top of the topic's list
viewtopic_buttons_bottom_before
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/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_bottom_after
===
* Locations:
+ styles/prosilver/template/viewtopic_body.html
+ styles/subsilver2/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
+ styles/subsilver2/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
+ styles/subsilver2/template/viewtopic_body.html
* Since: 3.1.0-RC5
* Purpose: Add buttons after Post Reply button on the top of the posts's list
viewforum_forum_name_append viewforum_forum_name_append
=== ===
* Locations: * Locations:

View File

@@ -165,7 +165,6 @@ if (defined('DEBUG') && request_var('explain', 0) && $auth->acl_get('a_'))
header('Content-type: text/html; charset=UTF-8'); header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: private, no-cache="set-cookie"'); header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header('Pragma: no-cache');
$mtime = explode(' ', microtime()); $mtime = explode(' ', microtime());
$totaltime = $mtime[0] + $mtime[1] - $starttime; $totaltime = $mtime[0] + $mtime[1] - $starttime;

View File

@@ -25,14 +25,13 @@ class acp_ban
function main($id, $mode) function main($id, $mode)
{ {
global $config, $db, $user, $auth, $template, $cache; global $user, $template, $request, $phpbb_dispatcher;
global $phpbb_root_path, $phpbb_admin_path, $phpEx, $table_prefix; global $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'includes/functions_user.' . $phpEx); include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
$bansubmit = (isset($_POST['bansubmit'])) ? true : false; $bansubmit = $request->is_set_post('bansubmit');
$unbansubmit = (isset($_POST['unbansubmit'])) ? true : false; $unbansubmit = $request->is_set_post('unbansubmit');
$current_time = time();
$user->add_lang(array('acp/ban', 'acp/users')); $user->add_lang(array('acp/ban', 'acp/users'));
$this->tpl_name = 'acp_ban'; $this->tpl_name = 'acp_ban';
@@ -48,23 +47,79 @@ class acp_ban
if ($bansubmit) if ($bansubmit)
{ {
// Grab the list of entries // Grab the list of entries
$ban = utf8_normalize_nfc(request_var('ban', '', true)); $ban = $request->variable('ban', '', true);
$ban_len = request_var('banlength', 0); $ban_length = $request->variable('banlength', 0);
$ban_len_other = request_var('banlengthother', ''); $ban_length_other = $request->variable('banlengthother', '');
$ban_exclude = request_var('banexclude', 0); $ban_exclude = $request->variable('banexclude', 0);
$ban_reason = utf8_normalize_nfc(request_var('banreason', '', true)); $ban_reason = $request->variable('banreason', '', true);
$ban_give_reason = utf8_normalize_nfc(request_var('bangivereason', '', true)); $ban_give_reason = $request->variable('bangivereason', '', true);
if ($ban) if ($ban)
{ {
user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); $abort_ban = false;
/**
* Use this event to modify the ban details before the ban is performed
*
* @event core.acp_ban_before
* @var string mode One of the following: user, ip, email
* @var string ban Either string or array with usernames, ips or email addresses
* @var int ban_length Ban length in minutes
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
* @var bool ban_exclude Are we banning or excluding from another ban
* @var string ban_reason Ban reason displayed to moderators
* @var string ban_give_reason Ban reason displayed to the banned user
* @var mixed abort_ban Either false, or an error message that is displayed to the user.
* If a string is given the bans are not issued.
* @since 3.1.0-RC5
*/
$vars = array(
'mode',
'ban',
'ban_length',
'ban_length_other',
'ban_exclude',
'ban_reason',
'ban_give_reason',
'abort_ban',
);
extract($phpbb_dispatcher->trigger_event('core.acp_ban_before', compact($vars)));
if ($abort_ban)
{
trigger_error($abort_ban . adm_back_link($this->u_action));
}
user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
/**
* Use this event to perform actions after the ban has been performed
*
* @event core.acp_ban_after
* @var string mode One of the following: user, ip, email
* @var string ban Either string or array with usernames, ips or email addresses
* @var int ban_length Ban length in minutes
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
* @var bool ban_exclude Are we banning or excluding from another ban
* @var string ban_reason Ban reason displayed to moderators
* @var string ban_give_reason Ban reason displayed to the banned user
* @since 3.1.0-RC5
*/
$vars = array(
'mode',
'ban',
'ban_length',
'ban_length_other',
'ban_exclude',
'ban_reason',
'ban_give_reason',
);
extract($phpbb_dispatcher->trigger_event('core.acp_ban_after', compact($vars)));
trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action)); trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
} }
} }
else if ($unbansubmit) else if ($unbansubmit)
{ {
$ban = request_var('unban', array('')); $ban = $request->variable('unban', array(''));
if ($ban) if ($ban)
{ {

View File

@@ -65,13 +65,16 @@ class acp_board
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false), 'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
'default_dateformat' => array('lang' => 'DEFAULT_DATE_FORMAT', 'validate' => 'string', 'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true), 'default_dateformat' => array('lang' => 'DEFAULT_DATE_FORMAT', 'validate' => 'string', 'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'timezone', 'type' => 'custom', 'method' => 'timezone_select', 'explain' => true), 'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'timezone', 'type' => 'custom', 'method' => 'timezone_select', 'explain' => true),
'default_style' => array('lang' => 'DEFAULT_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => false),
'legend2' => 'BOARD_STYLE',
'default_style' => array('lang' => 'DEFAULT_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => true),
'guest_style' => array('lang' => 'GUEST_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array($this->guest_style_get(), false), 'explain' => true),
'override_user_style' => array('lang' => 'OVERRIDE_STYLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true), 'override_user_style' => array('lang' => 'OVERRIDE_STYLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'legend2' => 'WARNINGS', 'legend3' => 'WARNINGS',
'warnings_expire_days' => array('lang' => 'WARNINGS_EXPIRE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']), 'warnings_expire_days' => array('lang' => 'WARNINGS_EXPIRE', 'validate' => 'int:0:9999', 'type' => 'number:0:9999', 'explain' => true, 'append' => ' ' . $user->lang['DAYS']),
'legend3' => 'ACP_SUBMIT_CHANGES', 'legend4' => 'ACP_SUBMIT_CHANGES',
) )
); );
break; break;
@@ -509,6 +512,14 @@ class acp_board
continue; continue;
} }
if ($config_name == 'guest_style')
{
if (isset($cfg_array[$config_name])) {
$this->guest_style_set($cfg_array[$config_name]);
}
continue;
}
$this->new_config[$config_name] = $config_value = $cfg_array[$config_name]; $this->new_config[$config_name] = $config_value = $cfg_array[$config_name];
if ($config_name == 'email_function_name') if ($config_name == 'email_function_name')
@@ -904,12 +915,44 @@ class acp_board
*/ */
function timezone_select($value, $key) function timezone_select($value, $key)
{ {
global $user; global $template, $user;
$timezone_select = phpbb_timezone_select($user, $value, true); $timezone_select = phpbb_timezone_select($template, $user, $value, true);
$timezone_select['tz_select'];
return '<select name="config[' . $key . ']" id="' . $key . '">' . $timezone_select['tz_select'] . '</select>'; return '<select name="config[' . $key . ']" id="' . $key . '">' . $timezone_select . '</select>';
}
/**
* Get guest style
*/
public function guest_style_get()
{
global $db;
$sql = 'SELECT user_style
FROM ' . USERS_TABLE . '
WHERE user_id = ' . ANONYMOUS;
$result = $db->sql_query($sql);
$style = (int) $db->sql_fetchfield('user_style');
$db->sql_freeresult($result);
return $style;
}
/**
* Set guest style
*
* @param int $style_id The style ID
*/
public function guest_style_set($style_id)
{
global $db;
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_style = ' . (int) $style_id . '
WHERE user_id = ' . ANONYMOUS;
$db->sql_query($sql);
} }
/** /**

View File

@@ -269,7 +269,7 @@ class acp_database
break; break;
} }
header('Pragma: no-cache'); header('Cache-Control: private, no-cache');
header("Content-Type: $mimetype; name=\"$name\""); header("Content-Type: $mimetype; name=\"$name\"");
header("Content-disposition: attachment; filename=$name"); header("Content-disposition: attachment; filename=$name");
@@ -510,7 +510,7 @@ class base_extractor
if ($download == true) if ($download == true)
{ {
$name = $filename . $ext; $name = $filename . $ext;
header('Pragma: no-cache'); header('Cache-Control: private, no-cache');
header("Content-Type: $mimetype; name=\"$name\""); header("Content-Type: $mimetype; name=\"$name\"");
header("Content-disposition: attachment; filename=$name"); header("Content-disposition: attachment; filename=$name");

View File

@@ -737,7 +737,7 @@ class acp_icons
{ {
garbage_collection(); garbage_collection();
header('Pragma: public'); header('Cache-Control: public');
// Send out the Headers // Send out the Headers
header('Content-Type: text/x-delimtext; name="' . $mode . '.pak"'); header('Content-Type: text/x-delimtext; name="' . $mode . '.pak"');

View File

@@ -655,8 +655,8 @@ class acp_main
'S_MBSTRING_LOADED' => true, 'S_MBSTRING_LOADED' => true,
'S_MBSTRING_FUNC_OVERLOAD_FAIL' => (intval(@ini_get('mbstring.func_overload')) & (MB_OVERLOAD_MAIL | MB_OVERLOAD_STRING)), 'S_MBSTRING_FUNC_OVERLOAD_FAIL' => (intval(@ini_get('mbstring.func_overload')) & (MB_OVERLOAD_MAIL | MB_OVERLOAD_STRING)),
'S_MBSTRING_ENCODING_TRANSLATION_FAIL' => (@ini_get('mbstring.encoding_translation') != 0), 'S_MBSTRING_ENCODING_TRANSLATION_FAIL' => (@ini_get('mbstring.encoding_translation') != 0),
'S_MBSTRING_HTTP_INPUT_FAIL' => (@ini_get('mbstring.http_input') != 'pass'), 'S_MBSTRING_HTTP_INPUT_FAIL' => !in_array(@ini_get('mbstring.http_input'), array('pass', '')),
'S_MBSTRING_HTTP_OUTPUT_FAIL' => (@ini_get('mbstring.http_output') != 'pass'), 'S_MBSTRING_HTTP_OUTPUT_FAIL' => !in_array(@ini_get('mbstring.http_output'), array('pass', '')),
)); ));
} }

View File

@@ -70,11 +70,6 @@ class acp_styles
$action = $this->request->variable('action', ''); $action = $this->request->variable('action', '');
$post_actions = array('install', 'activate', 'deactivate', 'uninstall'); $post_actions = array('install', 'activate', 'deactivate', 'uninstall');
if ($action && in_array($action, $post_actions) && !check_link_hash($request->variable('hash', ''), $action))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
foreach ($post_actions as $key) foreach ($post_actions as $key)
{ {
if ($this->request->is_set_post($key)) if ($this->request->is_set_post($key))
@@ -83,6 +78,18 @@ class acp_styles
} }
} }
// The uninstall action uses confirm_box() to verify the validity of the request,
// so there is no need to check for a valid token here.
if (in_array($action, $post_actions) && $action != 'uninstall')
{
$is_valid_request = check_link_hash($request->variable('hash', ''), $action) || check_form_key('styles_management');
if (!$is_valid_request)
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
}
if ($action != '') if ($action != '')
{ {
$this->s_hidden_fields['action'] = $action; $this->s_hidden_fields['action'] = $action;
@@ -122,6 +129,8 @@ class acp_styles
*/ */
protected function frontend() protected function frontend()
{ {
add_form_key('styles_management');
// Check mode // Check mode
switch ($this->mode) switch ($this->mode)
{ {
@@ -133,32 +142,10 @@ class acp_styles
$this->welcome_message('INSTALL_STYLES', 'INSTALL_STYLES_EXPLAIN'); $this->welcome_message('INSTALL_STYLES', 'INSTALL_STYLES_EXPLAIN');
$this->show_available(); $this->show_available();
return; return;
case 'cache':
$this->action_cache();
return;
} }
trigger_error($this->user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING); trigger_error($this->user->lang['NO_MODE'] . adm_back_link($this->u_action), E_USER_WARNING);
} }
/**
* Purge cache
*/
protected function action_cache()
{
global $db, $cache, $auth;
$this->config->increment('assets_version', 1);
$this->cache->purge();
// Clear permissions
$this->auth->acl_clear_prefetch();
phpbb_cache_moderators($db, $cache, $auth);
add_log('admin', 'LOG_PURGE_CACHE');
trigger_error($this->user->lang['PURGED_CACHE'] . adm_back_link($this->u_base_action), E_USER_NOTICE);
}
/** /**
* Install style(s) * Install style(s)
*/ */

View File

@@ -1661,7 +1661,7 @@ class acp_users
${'s_sort_' . $sort_option . '_dir'} .= '</select>'; ${'s_sort_' . $sort_option . '_dir'} .= '</select>';
} }
$timezone_selects = phpbb_timezone_select($user, $data['tz'], true); phpbb_timezone_select($template, $user, $data['tz'], true);
$user_prefs_data = array( $user_prefs_data = array(
'S_PREFS' => true, 'S_PREFS' => true,
'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true, 'S_JABBER_DISABLED' => ($config['jab_enable'] && $user_row['user_jabber'] && @extension_loaded('xml')) ? false : true,
@@ -1700,8 +1700,6 @@ class acp_users
'S_LANG_OPTIONS' => language_select($data['lang']), 'S_LANG_OPTIONS' => language_select($data['lang']),
'S_STYLE_OPTIONS' => style_select($data['style']), 'S_STYLE_OPTIONS' => style_select($data['style']),
'S_TZ_OPTIONS' => $timezone_selects['tz_select'],
'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'],
); );
/** /**

View File

@@ -22,7 +22,6 @@ class acp_styles_info
'modes' => array( 'modes' => array(
'style' => array('title' => 'ACP_STYLES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')), 'style' => array('title' => 'ACP_STYLES', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),
'install' => array('title' => 'ACP_STYLES_INSTALL', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')), 'install' => array('title' => 'ACP_STYLES_INSTALL', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),
'cache' => array('title' => 'ACP_STYLES_CACHE', 'auth' => 'acl_a_styles', 'cat' => array('ACP_STYLE_MANAGEMENT')),
), ),
); );
} }

View File

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

View File

@@ -31,7 +31,7 @@ function phpbb_load_extensions_autoloaders($phpbb_root_path)
new \phpbb\recursive_dot_prefix_filter_iterator( new \phpbb\recursive_dot_prefix_filter_iterator(
new \RecursiveDirectoryIterator( new \RecursiveDirectoryIterator(
$phpbb_root_path . 'ext/', $phpbb_root_path . 'ext/',
\FilesystemIterator::SKIP_DOTS \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS
) )
), ),
\RecursiveIteratorIterator::SELF_FIRST \RecursiveIteratorIterator::SELF_FIRST
@@ -937,14 +937,20 @@ function style_select($default = '', $all = false)
* Format the timezone offset with hours and minutes * Format the timezone offset with hours and minutes
* *
* @param int $tz_offset Timezone offset in seconds * @param int $tz_offset Timezone offset in seconds
* @param bool $show_null Whether null offsets should be shown
* @return string Normalized offset string: -7200 => -02:00 * @return string Normalized offset string: -7200 => -02:00
* 16200 => +04:30 * 16200 => +04:30
*/ */
function phpbb_format_timezone_offset($tz_offset) function phpbb_format_timezone_offset($tz_offset, $show_null = false)
{ {
$sign = ($tz_offset < 0) ? '-' : '+'; $sign = ($tz_offset < 0) ? '-' : '+';
$time_offset = abs($tz_offset); $time_offset = abs($tz_offset);
if ($time_offset == 0 && $show_null == false)
{
return '';
}
$offset_seconds = $time_offset % 3600; $offset_seconds = $time_offset % 3600;
$offset_minutes = $offset_seconds / 60; $offset_minutes = $offset_seconds / 60;
$offset_hours = ($time_offset - $offset_seconds) / 3600; $offset_hours = ($time_offset - $offset_seconds) / 3600;
@@ -1040,13 +1046,14 @@ function phpbb_get_timezone_identifiers($selected_timezone)
/** /**
* Options to pick a timezone and date/time * Options to pick a timezone and date/time
* *
* @param \phpbb\template\template $template phpBB template object
* @param \phpbb\user $user Object of the current user * @param \phpbb\user $user Object of the current user
* @param string $default A timezone to select * @param string $default A timezone to select
* @param boolean $truncate Shall we truncate the options text * @param boolean $truncate Shall we truncate the options text
* *
* @return array Returns an array, also containing the options for the time selector. * @return array Returns an array containing the options for the time selector.
*/ */
function phpbb_timezone_select($user, $default = '', $truncate = false) function phpbb_timezone_select($template, $user, $default = '', $truncate = false)
{ {
static $timezones; static $timezones;
@@ -1062,15 +1069,15 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)
$dt = $user->create_datetime('now', $tz); $dt = $user->create_datetime('now', $tz);
$offset = $dt->getOffset(); $offset = $dt->getOffset();
$current_time = $dt->format($user->lang['DATETIME_FORMAT'], true); $current_time = $dt->format($user->lang['DATETIME_FORMAT'], true);
$offset_string = phpbb_format_timezone_offset($offset); $offset_string = phpbb_format_timezone_offset($offset, true);
$timezones['GMT' . $offset_string . ' - ' . $timezone] = array( $timezones['UTC' . $offset_string . ' - ' . $timezone] = array(
'tz' => $timezone, 'tz' => $timezone,
'offset' => 'GMT' . $offset_string, 'offset' => $offset_string,
'current' => $current_time, 'current' => $current_time,
); );
if ($timezone === $default) if ($timezone === $default)
{ {
$default_offset = 'GMT' . $offset_string; $default_offset = 'UTC' . $offset_string;
} }
} }
unset($unsorted_timezones); unset($unsorted_timezones);
@@ -1078,18 +1085,27 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)
uksort($timezones, 'phpbb_tz_select_compare'); uksort($timezones, 'phpbb_tz_select_compare');
} }
$tz_select = $tz_dates = $opt_group = ''; $tz_select = $opt_group = '';
foreach ($timezones as $timezone) foreach ($timezones as $key => $timezone)
{ {
if ($opt_group != $timezone['offset']) if ($opt_group != $timezone['offset'])
{ {
// Generate tz_select for backwards compatibility
$tz_select .= ($opt_group) ? '</optgroup>' : ''; $tz_select .= ($opt_group) ? '</optgroup>' : '';
$tz_select .= '<optgroup label="' . $timezone['offset'] . ' - ' . $timezone['current'] . '">'; $tz_select .= '<optgroup label="' . $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $timezone['current']) . '">';
$opt_group = $timezone['offset']; $opt_group = $timezone['offset'];
$template->assign_block_vars('timezone_select', array(
'LABEL' => $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $timezone['current']),
'VALUE' => $key . ' - ' . $timezone['current'],
));
$selected = ($default_offset == $timezone['offset']) ? ' selected="selected"' : ''; $selected = (!empty($default_offset) && strpos($key, $default_offset) !== false) ? ' selected="selected"' : '';
$tz_dates .= '<option value="' . $timezone['offset'] . ' - ' . $timezone['current'] . '"' . $selected . '>' . $timezone['offset'] . ' - ' . $timezone['current'] . '</option>'; $template->assign_block_vars('timezone_date', array(
'VALUE' => $key . ' - ' . $timezone['current'],
'SELECTED' => !empty($selected),
'TITLE' => $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $timezone['current']),
));
} }
$label = $timezone['tz']; $label = $timezone['tz'];
@@ -1097,22 +1113,26 @@ function phpbb_timezone_select($user, $default = '', $truncate = false)
{ {
$label = $user->lang['timezones'][$label]; $label = $user->lang['timezones'][$label];
} }
$title = $timezone['offset'] . ' - ' . $label; $title = $user->lang(array('timezones', 'UTC_OFFSET_CURRENT'), $timezone['offset'], $label);
if ($truncate) if ($truncate)
{ {
$label = truncate_string($label, 50, 255, false, '...'); $label = truncate_string($label, 50, 255, false, '...');
} }
// Also generate timezone_select for backwards compatibility
$selected = ($timezone['tz'] === $default) ? ' selected="selected"' : ''; $selected = ($timezone['tz'] === $default) ? ' selected="selected"' : '';
$tz_select .= '<option title="' . $title . '" value="' . $timezone['tz'] . '"' . $selected . '>' . $label . '</option>'; $tz_select .= '<option title="' . $title . '" value="' . $timezone['tz'] . '"' . $selected . '>' . $label . '</option>';
$template->assign_block_vars('timezone_select.timezone_options', array(
'TITLE' => $title,
'VALUE' => $timezone['tz'],
'SELECTED' => !empty($selected),
'LABEL' => $label,
));
} }
$tz_select .= '</optgroup>'; $tz_select .= '</optgroup>';
return array( return $tz_select;
'tz_select' => $tz_select,
'tz_dates' => $tz_dates,
);
} }
// Functions handling topic/post tracking/marking // Functions handling topic/post tracking/marking
@@ -2748,7 +2768,7 @@ function confirm_box($check, $title = '', $hidden = '', $html_body = 'confirm_bo
function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = false, $s_display = true) function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = false, $s_display = true)
{ {
global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config; global $db, $user, $template, $auth, $phpEx, $phpbb_root_path, $config;
global $request, $phpbb_container; global $request, $phpbb_container, $phpbb_dispatcher;
$err = ''; $err = '';
@@ -2834,6 +2854,18 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa
{ {
$redirect = request_var('redirect', "{$phpbb_root_path}index.$phpEx"); $redirect = request_var('redirect', "{$phpbb_root_path}index.$phpEx");
/**
* This event allows an extension to modify the redirection when a user successfully logs in
*
* @event core.login_box_redirect
* @var string redirect Redirect string
* @var boolean admin Is admin?
* @var bool return If true, do not redirect but return the sanitized URL.
* @since 3.1.0-RC5
*/
$vars = array('redirect', 'admin', 'return');
extract($phpbb_dispatcher->trigger_event('core.login_box_redirect', compact($vars)));
// append/replace SID (may change during the session for AOL users) // append/replace SID (may change during the session for AOL users)
$redirect = reapply_sid($redirect); $redirect = reapply_sid($redirect);
@@ -4903,7 +4935,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
} }
$dt = $user->create_datetime(); $dt = $user->create_datetime();
$timezone_offset = 'GMT' . phpbb_format_timezone_offset($dt->getOffset()); $timezone_offset = $user->lang(array('timezones', 'UTC_OFFSET'), phpbb_format_timezone_offset($dt->getOffset()));
$timezone_name = $user->timezone->getName(); $timezone_name = $user->timezone->getName();
if (isset($user->lang['timezones'][$timezone_name])) if (isset($user->lang['timezones'][$timezone_name]))
{ {
@@ -5068,7 +5100,6 @@ function page_header($page_title = '', $display_online_list = false, $item_id =
'Content-type' => 'text/html; charset=UTF-8', 'Content-type' => 'text/html; charset=UTF-8',
'Cache-Control' => 'private, no-cache="set-cookie"', 'Cache-Control' => 'private, no-cache="set-cookie"',
'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT', 'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
'Pragma' => 'no-cache',
); );
if (!empty($user->data['is_bot'])) if (!empty($user->data['is_bot']))
{ {
@@ -5259,6 +5290,18 @@ function page_footer($run_cron = true, $display_template = true, $exit_handler =
} }
} }
/**
* Execute code and/or modify output before displaying the template.
*
* @event core.page_footer_after
* @var bool display_template Whether or not to display the template
* @var bool exit_handler Whether or not to run the exit_handler()
*
* @since 3.1.0-RC5
*/
$vars = array('display_template', 'exit_handler');
extract($phpbb_dispatcher->trigger_event('core.page_footer_after', compact($vars)));
if ($display_template) if ($display_template)
{ {
$template->display('body'); $template->display('body');

View File

@@ -113,7 +113,6 @@ function adm_page_header($page_title)
'Content-type' => 'text/html; charset=UTF-8', 'Content-type' => 'text/html; charset=UTF-8',
'Cache-Control' => 'private, no-cache="set-cookie"', 'Cache-Control' => 'private, no-cache="set-cookie"',
'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT', 'Expires' => gmdate('D, d M Y H:i:s', time()) . ' GMT',
'Pragma' => 'no-cache',
); );
/** /**

View File

@@ -133,10 +133,9 @@ function phpbb_clean_path($path)
*/ */
function tz_select($default = '', $truncate = false) function tz_select($default = '', $truncate = false)
{ {
global $user; global $template, $user;
$timezone_select = phpbb_timezone_select($user, $default, $truncate); return phpbb_timezone_select($template, $user, $default, $truncate);
return $timezone_select['tz_select'];
} }
/** /**
@@ -166,3 +165,30 @@ function update_foes($group_id = false, $user_id = false)
global $db, $auth; global $db, $auth;
return phpbb_update_foes($db, $auth, $group_id, $user_id); return phpbb_update_foes($db, $auth, $group_id, $user_id);
} }
/**
* Get user rank title and image
*
* @param int $user_rank the current stored users rank id
* @param int $user_posts the users number of posts
* @param string &$rank_title the rank title will be stored here after execution
* @param string &$rank_img the rank image as full img tag is stored here after execution
* @param string &$rank_img_src the rank image source is stored here after execution
*
* @deprecated 3.1.0-RC5 (To be removed: 3.3.0)
*
* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false
*/
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src)
{
global $phpbb_root_path, $phpEx;
if (!function_exists('phpbb_get_user_rank'))
{
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
}
$rank_data = phpbb_get_user_rank(array('user_rank' => $user_rank), $user_posts);
$rank_title = $rank_data['title'];
$rank_img = $rank_data['img'];
$rank_img_src = $rank_data['img_src'];
}

View File

@@ -509,7 +509,7 @@ class compress_zip extends compress
$mimetype = 'application/zip'; $mimetype = 'application/zip';
header('Pragma: no-cache'); header('Cache-Control: private, no-cache');
header("Content-Type: $mimetype; name=\"$download_name.zip\""); header("Content-Type: $mimetype; name=\"$download_name.zip\"");
header("Content-disposition: attachment; filename=$download_name.zip"); header("Content-disposition: attachment; filename=$download_name.zip");
@@ -757,7 +757,7 @@ class compress_tar extends compress
break; break;
} }
header('Pragma: no-cache'); header('Cache-Control: private, no-cache');
header("Content-Type: $mimetype; name=\"$download_name$this->type\""); header("Content-Type: $mimetype; name=\"$download_name$this->type\"");
header("Content-disposition: attachment; filename=$download_name$this->type"); header("Content-disposition: attachment; filename=$download_name$this->type");

View File

@@ -912,7 +912,7 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count,
return; return;
} }
global $template, $cache, $user; global $template, $cache, $user, $phpbb_dispatcher;
global $extensions, $config, $phpbb_root_path, $phpEx; global $extensions, $config, $phpbb_root_path, $phpEx;
// //
@@ -1187,6 +1187,34 @@ function parse_attachments($forum_id, &$message, &$attachments, &$update_count,
); );
} }
/**
* Use this event to modify the attachment template data.
*
* This event is triggered once per attachment.
*
* @event core.parse_attachments_modify_template_data
* @var array attachment Array with attachment data
* @var array block_array Template data of the attachment
* @var int display_cat Attachment category data
* @var string download_link Attachment download link
* @var array extensions Array with attachment extensions data
* @var mixed forum_id The forum id the attachments are displayed in (false if in private message)
* @var bool preview Flag indicating if we are in post preview mode
* @var array update_count Array with attachment ids to update download count
* @since 3.1.0-RC5
*/
$vars = array(
'attachment',
'block_array',
'display_cat',
'download_link',
'extensions',
'forum_id',
'preview',
'update_count',
);
extract($phpbb_dispatcher->trigger_event('core.parse_attachments_modify_template_data', compact($vars)));
$template->assign_block_vars('_file', $block_array); $template->assign_block_vars('_file', $block_array);
$compiled_attachments[] = $template->assign_display('attachment_tpl'); $compiled_attachments[] = $template->assign_display('attachment_tpl');

View File

@@ -649,6 +649,28 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
'UNAPPROVED_POST_IMG' => $user->img('icon_topic_unapproved', 'POSTS_UNAPPROVED_FORUM'), 'UNAPPROVED_POST_IMG' => $user->img('icon_topic_unapproved', 'POSTS_UNAPPROVED_FORUM'),
)); ));
/**
* Event to perform additional actions after the forum list has been generated
*
* @event core.display_forums_after
* @var array active_forum_ary Array with forum data to display active topics
* @var bool display_moderators Flag indicating if we display forum moderators
* @var array forum_moderators Array with forum moderators list
* @var array forum_rows Data array of all forums we display
* @var bool return_moderators Flag indicating if moderators list should be returned
* @var array root_data Array with the root forum data
* @since 3.1.0-RC5
*/
$vars = array(
'active_forum_ary',
'display_moderators',
'forum_moderators',
'forum_rows',
'return_moderators',
'root_data',
);
extract($phpbb_dispatcher->trigger_event('core.display_forums_after', compact($vars)));
if ($return_moderators) if ($return_moderators)
{ {
return array($active_forum_ary, $forum_moderators); return array($active_forum_ary, $forum_moderators);
@@ -1402,17 +1424,34 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,
/** /**
* Get user rank title and image * Get user rank title and image
* *
* @param int $user_rank the current stored users rank id * @param array $user_data the current stored users data
* @param int $user_posts the users number of posts * @param int $user_posts the users number of posts
* @param string &$rank_title the rank title will be stored here after execution *
* @param string &$rank_img the rank image as full img tag is stored here after execution * @return array An associative array containing the rank title (title), the rank image source (img) and the rank image as full img tag (img)
* @param string &$rank_img_src the rank image source is stored here after execution
* *
* Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false * Note: since we do not want to break backwards-compatibility, this function will only properly assign ranks to guests if you call it for them with user_posts == false
*/ */
function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank_img_src) function phpbb_get_user_rank($user_data, $user_posts)
{ {
global $ranks, $config, $phpbb_root_path, $phpbb_path_helper; global $ranks, $config, $phpbb_root_path, $phpbb_path_helper, $phpbb_dispatcher;
$user_rank_data = array(
'title' => null,
'img' => null,
'img_src' => null,
);
/**
* Preparing a user's rank before displaying
*
* @event core.modify_user_rank
* @var array user_data Array with user's data
* @var int user_posts User_posts to change
* @since 3.1.0-RC4
*/
$vars = array('user_data', 'user_posts');
extract($phpbb_dispatcher->trigger_event('core.modify_user_rank', compact($vars)));
if (empty($ranks)) if (empty($ranks))
{ {
@@ -1420,11 +1459,14 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank
$ranks = $cache->obtain_ranks(); $ranks = $cache->obtain_ranks();
} }
if (!empty($user_rank)) if (!empty($user_data['user_rank']))
{ {
$rank_title = (isset($ranks['special'][$user_rank]['rank_title'])) ? $ranks['special'][$user_rank]['rank_title'] : '';
$rank_img_src = (!empty($ranks['special'][$user_rank]['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_rank]['rank_image']) : ''; $user_rank_data['title'] = (isset($ranks['special'][$user_data['user_rank']]['rank_title'])) ? $ranks['special'][$user_data['user_rank']]['rank_title'] : '';
$rank_img = (!empty($ranks['special'][$user_rank]['rank_image'])) ? '<img src="' . $rank_img_src . '" alt="' . $ranks['special'][$user_rank]['rank_title'] . '" title="' . $ranks['special'][$user_rank]['rank_title'] . '" />' : '';
$user_rank_data['img_src'] = (!empty($ranks['special'][$user_data['user_rank']]['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $ranks['special'][$user_data['user_rank']]['rank_image']) : '';
$user_rank_data['img'] = (!empty($ranks['special'][$user_data['user_rank']]['rank_image'])) ? '<img src="' . $user_rank_data['img_src'] . '" alt="' . $ranks['special'][$user_data['user_rank']]['rank_title'] . '" title="' . $ranks['special'][$user_data['user_rank']]['rank_title'] . '" />' : '';
} }
else if ($user_posts !== false) else if ($user_posts !== false)
{ {
@@ -1434,14 +1476,16 @@ function get_user_rank($user_rank, $user_posts, &$rank_title, &$rank_img, &$rank
{ {
if ($user_posts >= $rank['rank_min']) if ($user_posts >= $rank['rank_min'])
{ {
$rank_title = $rank['rank_title']; $user_rank_data['title'] = $rank['rank_title'];
$rank_img_src = (!empty($rank['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image']) : ''; $user_rank_data['img_src'] = (!empty($rank['rank_image'])) ? $phpbb_path_helper->update_web_root_path($phpbb_root_path . $config['ranks_path'] . '/' . $rank['rank_image']) : '';
$rank_img = (!empty($rank['rank_image'])) ? '<img src="' . $rank_img_src . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : ''; $user_rank_data['img'] = (!empty($rank['rank_image'])) ? '<img src="' . $user_rank_data['img_src'] . '" alt="' . $rank['rank_title'] . '" title="' . $rank['rank_title'] . '" />' : '';
break; break;
} }
} }
} }
} }
return $user_rank_data;
} }
/** /**
@@ -1454,8 +1498,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
$username = $data['username']; $username = $data['username'];
$user_id = $data['user_id']; $user_id = $data['user_id'];
$rank_title = $rank_img = $rank_img_src = ''; $user_rank_data = phpbb_get_user_rank($data, (($user_id == ANONYMOUS) ? false : $data['user_posts']));
get_user_rank($data['user_rank'], (($user_id == ANONYMOUS) ? false : $data['user_posts']), $rank_title, $rank_img, $rank_img_src);
if ((!empty($data['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_user')) if ((!empty($data['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_user'))
{ {
@@ -1536,7 +1579,7 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
// Dump it out to the template // Dump it out to the template
$template_data = array( $template_data = array(
'AGE' => $age, 'AGE' => $age,
'RANK_TITLE' => $rank_title, 'RANK_TITLE' => $user_rank_data['title'],
'JOINED' => $user->format_date($data['user_regdate']), 'JOINED' => $user->format_date($data['user_regdate']),
'LAST_ACTIVE' => (empty($last_active)) ? ' - ' : $user->format_date($last_active), 'LAST_ACTIVE' => (empty($last_active)) ? ' - ' : $user->format_date($last_active),
'POSTS' => ($data['user_posts']) ? $data['user_posts'] : 0, 'POSTS' => ($data['user_posts']) ? $data['user_posts'] : 0,
@@ -1552,8 +1595,8 @@ function phpbb_show_profile($data, $user_notes_enabled = false, $warn_user_enabl
'AVATAR_IMG' => phpbb_get_user_avatar($data), 'AVATAR_IMG' => phpbb_get_user_avatar($data),
'ONLINE_IMG' => (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')), 'ONLINE_IMG' => (!$config['load_onlinetrack']) ? '' : (($online) ? $user->img('icon_user_online', 'ONLINE') : $user->img('icon_user_offline', 'OFFLINE')),
'S_ONLINE' => ($config['load_onlinetrack'] && $online) ? true : false, 'S_ONLINE' => ($config['load_onlinetrack'] && $online) ? true : false,
'RANK_IMG' => $rank_img, 'RANK_IMG' => $user_rank_data['img'],
'RANK_IMG_SRC' => $rank_img_src, 'RANK_IMG_SRC' => $user_rank_data['img_src'],
'S_JABBER_ENABLED' => ($config['jab_enable']) ? true : false, 'S_JABBER_ENABLED' => ($config['jab_enable']) ? true : false,
'S_WARNINGS' => ($auth->acl_getf_global('m_') || $auth->acl_get('m_warn')) ? true : false, 'S_WARNINGS' => ($auth->acl_getf_global('m_') || $auth->acl_get('m_warn')) ? true : false,

View File

@@ -45,12 +45,12 @@ function send_avatar_to_browser($file, $browser)
if ((@file_exists($file_path) && @is_readable($file_path)) && !headers_sent()) if ((@file_exists($file_path) && @is_readable($file_path)) && !headers_sent())
{ {
header('Pragma: public'); header('Cache-Control: public');
$image_data = @getimagesize($file_path); $image_data = @getimagesize($file_path);
header('Content-Type: ' . image_type_to_mime_type($image_data[2])); header('Content-Type: ' . image_type_to_mime_type($image_data[2]));
if ((strpos(strtolower($user->browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7)) if ((strpos(strtolower($browser), 'msie') !== false) && !phpbb_is_greater_ie_version($browser, 7))
{ {
header('Content-Disposition: attachment; ' . header_filename($file)); header('Content-Disposition: attachment; ' . header_filename($file));
@@ -175,7 +175,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
} }
// Now the tricky part... let's dance // Now the tricky part... let's dance
header('Pragma: public'); header('Cache-Control: public');
// Send out the Headers. Do not set Content-Disposition to inline please, it is a security measure for users using the Internet Explorer. // Send out the Headers. Do not set Content-Disposition to inline please, it is a security measure for users using the Internet Explorer.
header('Content-Type: ' . $attachment['mimetype']); header('Content-Type: ' . $attachment['mimetype']);
@@ -420,7 +420,7 @@ function set_modified_headers($stamp, $browser)
{ {
send_status_line(304, 'Not Modified'); send_status_line(304, 'Not Modified');
// seems that we need those too ... browsers // seems that we need those too ... browsers
header('Pragma: public'); header('Cache-Control: public');
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 31536000) . ' GMT');
return true; return true;
} }

View File

@@ -2384,6 +2384,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
* @var int topic_type Variable containing topic type value * @var int topic_type Variable containing topic type value
* @var array poll Array with the poll data for the post * @var array poll Array with the poll data for the post
* @var array data Array with the data for the post * @var array data Array with the data for the post
* @var int post_visibility Variable containing up to date post visibility
* @var bool update_message Flag indicating if the post will be updated * @var bool update_message Flag indicating if the post will be updated
* @var bool update_search_index Flag indicating if the search index will be updated * @var bool update_search_index Flag indicating if the search index will be updated
* @var string url The "Return to topic" URL * @var string url The "Return to topic" URL
@@ -2399,6 +2400,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
'topic_type', 'topic_type',
'poll', 'poll',
'data', 'data',
'post_visibility',
'update_message', 'update_message',
'update_search_index', 'update_search_index',
'url', 'url',

View File

@@ -914,6 +914,24 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id)
} }
} }
function mark_folder_read($user_id, $folder_id)
{
global $db;
$sql = 'SELECT msg_id
FROM ' . PRIVMSGS_TO_TABLE . '
WHERE folder_id = ' . ((int) $folder_id) . '
AND user_id = ' . ((int) $user_id) . '
AND pm_unread = 1';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
update_unread_status(true, $row['msg_id'], $user_id, $folder_id);
}
$db->sql_freeresult($result);
}
/** /**
* Handle all actions possible with marked messages * Handle all actions possible with marked messages
*/ */
@@ -1573,7 +1591,7 @@ function get_folder_status($folder_id, $folder)
'cur' => $folder['num_messages'], 'cur' => $folder['num_messages'],
'remaining' => ($user->data['message_limit']) ? $user->data['message_limit'] - $folder['num_messages'] : 0, 'remaining' => ($user->data['message_limit']) ? $user->data['message_limit'] - $folder['num_messages'] : 0,
'max' => $user->data['message_limit'], 'max' => $user->data['message_limit'],
'percent' => ($user->data['message_limit']) ? (($user->data['message_limit'] > 0) ? round(($folder['num_messages'] / $user->data['message_limit']) * 100) : 100) : 0, 'percent' => ($user->data['message_limit']) ? (($user->data['message_limit'] > 0) ? floor(($folder['num_messages'] / $user->data['message_limit']) * 100) : 100) : 0,
); );
$return['message'] = $user->lang('FOLDER_STATUS_MSG', $user->lang('MESSAGES_COUNT', (int) $return['max']), $return['cur'], $return['percent']); $return['message'] = $user->lang('FOLDER_STATUS_MSG', $user->lang('MESSAGES_COUNT', (int) $return['max']), $return['cur'], $return['percent']);

View File

@@ -363,12 +363,16 @@ function user_add($user_row, $cp_data = false)
} }
/** /**
* Remove User * Remove User
* @param $mode Either 'retain' or 'remove' *
*/ * @param string $mode Either 'retain' or 'remove'
* @param mixed $user_ids Either an array of integers or an integer
* @param bool $retain_username
* @return bool
*/
function user_delete($mode, $user_ids, $retain_username = true) function user_delete($mode, $user_ids, $retain_username = true)
{ {
global $cache, $config, $db, $user, $auth, $phpbb_dispatcher; global $cache, $config, $db, $user, $phpbb_dispatcher;
global $phpbb_root_path, $phpEx; global $phpbb_root_path, $phpEx;
$db->sql_transaction('begin'); $db->sql_transaction('begin');
@@ -555,11 +559,6 @@ function user_delete($mode, $user_ids, $retain_username = true)
WHERE ' . $db->sql_in_set('poster_id', $user_ids); WHERE ' . $db->sql_in_set('poster_id', $user_ids);
$db->sql_query($sql); $db->sql_query($sql);
$sql = 'UPDATE ' . POSTS_TABLE . '
SET post_edit_user = ' . ANONYMOUS . '
WHERE ' . $db->sql_in_set('post_edit_user', $user_ids);
$db->sql_query($sql);
$sql = 'UPDATE ' . USERS_TABLE . ' $sql = 'UPDATE ' . USERS_TABLE . '
SET user_posts = user_posts + ' . $added_guest_posts . ' SET user_posts = user_posts + ' . $added_guest_posts . '
WHERE user_id = ' . ANONYMOUS; WHERE user_id = ' . ANONYMOUS;
@@ -589,6 +588,30 @@ function user_delete($mode, $user_ids, $retain_username = true)
$cache->destroy('sql', MODERATOR_CACHE_TABLE); $cache->destroy('sql', MODERATOR_CACHE_TABLE);
// Change user_id to anonymous for posts edited by this user
$sql = 'UPDATE ' . POSTS_TABLE . '
SET post_edit_user = ' . ANONYMOUS . '
WHERE ' . $db->sql_in_set('post_edit_user', $user_ids);
$db->sql_query($sql);
// Change user_id to anonymous for pms edited by this user
$sql = 'UPDATE ' . PRIVMSGS_TABLE . '
SET message_edit_user = ' . ANONYMOUS . '
WHERE ' . $db->sql_in_set('message_edit_user', $user_ids);
$db->sql_query($sql);
// Change user_id to anonymous for posts deleted by this user
$sql = 'UPDATE ' . POSTS_TABLE . '
SET post_delete_user = ' . ANONYMOUS . '
WHERE ' . $db->sql_in_set('post_delete_user', $user_ids);
$db->sql_query($sql);
// Change user_id to anonymous for topics deleted by this user
$sql = 'UPDATE ' . TOPICS_TABLE . '
SET topic_delete_user = ' . ANONYMOUS . '
WHERE ' . $db->sql_in_set('topic_delete_user', $user_ids);
$db->sql_query($sql);
// Delete user log entries about this user // Delete user log entries about this user
$sql = 'DELETE FROM ' . LOG_TABLE . ' $sql = 'DELETE FROM ' . LOG_TABLE . '
WHERE ' . $db->sql_in_set('reportee_id', $user_ids); WHERE ' . $db->sql_in_set('reportee_id', $user_ids);

View File

@@ -25,7 +25,7 @@ class mcp_ban
function main($id, $mode) function main($id, $mode)
{ {
global $config, $db, $user, $auth, $template, $cache; global $db, $user, $auth, $template, $request, $phpbb_dispatcher;
global $phpbb_root_path, $phpEx; global $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'includes/functions_user.' . $phpEx); include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
@@ -33,55 +33,133 @@ class mcp_ban
// Include the admin banning interface... // Include the admin banning interface...
include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx); include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx);
$bansubmit = (isset($_POST['bansubmit'])) ? true : false; $bansubmit = $request->is_set_post('bansubmit');
$unbansubmit = (isset($_POST['unbansubmit'])) ? true : false; $unbansubmit = $request->is_set_post('unbansubmit');
$current_time = time();
$user->add_lang(array('acp/ban', 'acp/users')); $user->add_lang(array('acp/ban', 'acp/users'));
$this->tpl_name = 'mcp_ban'; $this->tpl_name = 'mcp_ban';
/**
* Use this event to pass perform actions when a ban is issued or revoked
*
* @event core.mcp_ban_main
* @var bool bansubmit True if a ban is issued
* @var bool unbansubmit True if a ban is removed
* @var string mode Mode of the ban that is being worked on
* @since 3.1.0-RC5
*/
$vars = array(
'bansubmit',
'unbansubmit',
'mode',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_main', compact($vars)));
// Ban submitted? // Ban submitted?
if ($bansubmit) if ($bansubmit)
{ {
// Grab the list of entries // Grab the list of entries
$ban = request_var('ban', '', ($mode === 'user') ? true : false); $ban = $request->variable('ban', '', $mode === 'user');
$ban_length = $request->variable('banlength', 0);
if ($mode === 'user') $ban_length_other = $request->variable('banlengthother', '');
{ $ban_exclude = $request->variable('banexclude', 0);
$ban = utf8_normalize_nfc($ban); $ban_reason = $request->variable('banreason', '', true);
} $ban_give_reason = $request->variable('bangivereason', '', true);
$ban_len = request_var('banlength', 0);
$ban_len_other = request_var('banlengthother', '');
$ban_exclude = request_var('banexclude', 0);
$ban_reason = utf8_normalize_nfc(request_var('banreason', '', true));
$ban_give_reason = utf8_normalize_nfc(request_var('bangivereason', '', true));
if ($ban) if ($ban)
{ {
if (confirm_box(true)) if (confirm_box(true))
{ {
user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reason, $ban_give_reason); $abort_ban = false;
/**
* Use this event to modify the ban details before the ban is performed
*
* @event core.mcp_ban_before
* @var string mode One of the following: user, ip, email
* @var string ban Either string or array with usernames, ips or email addresses
* @var int ban_length Ban length in minutes
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
* @var bool ban_exclude Are we banning or excluding from another ban
* @var string ban_reason Ban reason displayed to moderators
* @var string ban_give_reason Ban reason displayed to the banned user
* @var mixed abort_ban Either false, or an error message that is displayed to the user.
* If a string is given the bans are not issued.
* @since 3.1.0-RC5
*/
$vars = array(
'mode',
'ban',
'ban_length',
'ban_length_other',
'ban_exclude',
'ban_reason',
'ban_give_reason',
'abort_ban',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_before', compact($vars)));
if ($abort_ban)
{
trigger_error($abort_ban);
}
user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
/**
* Use this event to perform actions after the ban has been performed
*
* @event core.mcp_ban_after
* @var string mode One of the following: user, ip, email
* @var string ban Either string or array with usernames, ips or email addresses
* @var int ban_length Ban length in minutes
* @var string ban_length_other Ban length as a date (YYYY-MM-DD)
* @var bool ban_exclude Are we banning or excluding from another ban
* @var string ban_reason Ban reason displayed to moderators
* @var string ban_give_reason Ban reason displayed to the banned user
* @since 3.1.0-RC5
*/
$vars = array(
'mode',
'ban',
'ban_length',
'ban_length_other',
'ban_exclude',
'ban_reason',
'ban_give_reason',
);
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_after', compact($vars)));
trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>'); trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
} }
else else
{ {
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array( $hidden_fields = array(
'mode' => $mode, 'mode' => $mode,
'ban' => $ban, 'ban' => $ban,
'bansubmit' => true, 'bansubmit' => true,
'banlength' => $ban_len, 'banlength' => $ban_length,
'banlengthother' => $ban_len_other, 'banlengthother' => $ban_length_other,
'banexclude' => $ban_exclude, 'banexclude' => $ban_exclude,
'banreason' => $ban_reason, 'banreason' => $ban_reason,
'bangivereason' => $ban_give_reason))); 'bangivereason' => $ban_give_reason,
);
/**
* Use this event to pass data from the ban form to the confirmation screen
*
* @event core.mcp_ban_confirm
* @var array hidden_fields Hidden fields that are passed through the confirm screen
* @since 3.1.0-RC5
*/
$vars = array('hidden_fields');
extract($phpbb_dispatcher->trigger_event('core.mcp_ban_confirm', compact($vars)));
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($hidden_fields));
} }
} }
} }
else if ($unbansubmit) else if ($unbansubmit)
{ {
$ban = request_var('unban', array('')); $ban = $request->variable('unban', array(''));
if ($ban) if ($ban)
{ {
@@ -157,9 +235,9 @@ class mcp_ban
} }
// As a "service" we will check if any post id is specified and populate the username of the poster id if given // As a "service" we will check if any post id is specified and populate the username of the poster id if given
$post_id = request_var('p', 0); $post_id = $request->variable('p', 0);
$user_id = request_var('u', 0); $user_id = $request->variable('u', 0);
$username = $pre_fill = false; $pre_fill = false;
if ($user_id && $user_id <> ANONYMOUS) if ($user_id && $user_id <> ANONYMOUS)
{ {

View File

@@ -754,7 +754,8 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
{ {
global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container; global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container;
if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array('m_delete'))) $check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete';
if (!phpbb_check_ids($topic_ids, TOPICS_TABLE, 'topic_id', array($check_permission)))
{ {
return; return;
} }
@@ -882,7 +883,8 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
{ {
global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container; global $auth, $user, $db, $phpEx, $phpbb_root_path, $request, $phpbb_container;
if (!phpbb_check_ids($post_ids, POSTS_TABLE, 'post_id', array('m_softdelete'))) $check_permission = ($is_soft) ? 'm_softdelete' : 'm_delete';
if (!phpbb_check_ids($post_ids, POSTS_TABLE, 'post_id', array($check_permission)))
{ {
return; return;
} }

View File

@@ -745,11 +745,11 @@ class mcp_queue
if (!$post_data['topic_posts_approved']) if (!$post_data['topic_posts_approved'])
{ {
$phpbb_notifications->add_notifications('notification.type.approve_post', $post_data); $phpbb_notifications->add_notifications('notification.type.approve_topic', $post_data);
} }
else else
{ {
$phpbb_notifications->add_notifications('notification.type.approve_topic', $post_data); $phpbb_notifications->add_notifications('notification.type.approve_post', $post_data);
} }
} }
} }

View File

@@ -332,16 +332,16 @@ class mcp_warn
// We want to make the message available here as a reminder // We want to make the message available here as a reminder
// Parse the message and subject // Parse the message and subject
$parse_flags = OPTION_FLAG_SMILIES | ($row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0); $parse_flags = OPTION_FLAG_SMILIES | ($user_row['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0);
$message = generate_text_for_display($user_row['post_text'], $user_row['bbcode_uid'], $user_row['bbcode_bitfield'], $parse_flags, true); $message = generate_text_for_display($user_row['post_text'], $user_row['bbcode_uid'], $user_row['bbcode_bitfield'], $parse_flags, true);
// Generate the appropriate user information for the user we are looking at // Generate the appropriate user information for the user we are looking at
if (!function_exists('get_user_rank')) if (!function_exists('phpbb_get_user_rank'))
{ {
include($phpbb_root_path . 'includes/functions_display.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
} }
get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img, $rank_img_src); $user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);
$avatar_img = phpbb_get_user_avatar($user_row); $avatar_img = phpbb_get_user_avatar($user_row);
$template->assign_vars(array( $template->assign_vars(array(
@@ -350,13 +350,13 @@ class mcp_warn
'POST' => $message, 'POST' => $message,
'USERNAME' => $user_row['username'], 'USERNAME' => $user_row['username'],
'USER_COLOR' => (!empty($user_row['user_colour'])) ? $user_row['user_colour'] : '', 'USER_COLOR' => (!empty($user_row['user_colour'])) ? $user_row['user_colour'] : '',
'RANK_TITLE' => $rank_title, 'RANK_TITLE' => $user_rank_data['title'],
'JOINED' => $user->format_date($user_row['user_regdate']), 'JOINED' => $user->format_date($user_row['user_regdate']),
'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0, 'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0,
'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0, 'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0,
'AVATAR_IMG' => $avatar_img, 'AVATAR_IMG' => $avatar_img,
'RANK_IMG' => $rank_img, 'RANK_IMG' => $user_rank_data['img'],
'L_WARNING_POST_DEFAULT' => sprintf($user->lang['WARNING_POST_DEFAULT'], generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&amp;p=$post_id#p$post_id"), 'L_WARNING_POST_DEFAULT' => sprintf($user->lang['WARNING_POST_DEFAULT'], generate_board_url() . "/viewtopic.$phpEx?f=$forum_id&amp;p=$post_id#p$post_id"),
@@ -486,18 +486,18 @@ class mcp_warn
} }
// Generate the appropriate user information for the user we are looking at // Generate the appropriate user information for the user we are looking at
if (!function_exists('get_user_rank')) if (!function_exists('phpbb_get_user_rank'))
{ {
include($phpbb_root_path . 'includes/functions_display.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
} }
get_user_rank($user_row['user_rank'], $user_row['user_posts'], $rank_title, $rank_img, $rank_img_src); $user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);
$avatar_img = phpbb_get_user_avatar($user_row); $avatar_img = phpbb_get_user_avatar($user_row);
// OK, they didn't submit a warning so lets build the page for them to do so // OK, they didn't submit a warning so lets build the page for them to do so
$template->assign_vars(array( $template->assign_vars(array(
'U_POST_ACTION' => $this->u_action, 'U_POST_ACTION' => $this->u_action,
'RANK_TITLE' => $rank_title, 'RANK_TITLE' => $user_rank_data['title'],
'JOINED' => $user->format_date($user_row['user_regdate']), 'JOINED' => $user->format_date($user_row['user_regdate']),
'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0, 'POSTS' => ($user_row['user_posts']) ? $user_row['user_posts'] : 0,
'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0, 'WARNINGS' => ($user_row['user_warnings']) ? $user_row['user_warnings'] : 0,
@@ -508,7 +508,7 @@ class mcp_warn
'U_PROFILE' => get_username_string('profile', $user_row['user_id'], $user_row['username'], $user_row['user_colour']), 'U_PROFILE' => get_username_string('profile', $user_row['user_id'], $user_row['username'], $user_row['user_colour']),
'AVATAR_IMG' => $avatar_img, 'AVATAR_IMG' => $avatar_img,
'RANK_IMG' => $rank_img, 'RANK_IMG' => $user_rank_data['img'],
'S_CAN_NOTIFY' => $s_can_notify, 'S_CAN_NOTIFY' => $s_can_notify,
)); ));

View File

@@ -95,35 +95,25 @@ class ucp_notifications
case 'notification_list': case 'notification_list':
default: default:
// Mark all items read // Mark all items read
if ($request->variable('mark', '') == 'all' && (confirm_box(true) || check_link_hash($request->variable('token', ''), 'mark_all_notifications_read'))) if ($request->variable('mark', '') == 'all' && check_link_hash($request->variable('token', ''), 'mark_all_notifications_read'))
{ {
if (confirm_box(true)) $phpbb_notifications->mark_notifications_read(false, false, $user->data['user_id'], $form_time);
meta_refresh(3, $this->u_action);
$message = $user->lang['NOTIFICATIONS_MARK_ALL_READ_SUCCESS'];
if ($request->is_ajax())
{ {
$phpbb_notifications->mark_notifications_read(false, false, $user->data['user_id'], $form_time); $json_response = new \phpbb\json_response();
$json_response->send(array(
meta_refresh(3, $this->u_action); 'MESSAGE_TITLE' => $user->lang['INFORMATION'],
$message = $user->lang['NOTIFICATIONS_MARK_ALL_READ_SUCCESS']; 'MESSAGE_TEXT' => $message,
'success' => true,
if ($request->is_ajax()) ));
{
$json_response = new \phpbb\json_response();
$json_response->send(array(
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
'MESSAGE_TEXT' => $message,
'success' => true,
));
}
$message .= '<br /><br />' . $user->lang('RETURN_UCP', '<a href="' . $this->u_action . '">', '</a>');
trigger_error($message);
}
else
{
confirm_box(false, 'NOTIFICATIONS_MARK_ALL_READ', build_hidden_fields(array(
'mark' => 'all',
'form_time' => $form_time,
)));
} }
$message .= '<br /><br />' . $user->lang('RETURN_UCP', '<a href="' . $this->u_action . '">', '</a>');
trigger_error($message);
} }
// Mark specific notifications read // Mark specific notifications read

View File

@@ -45,7 +45,7 @@ class ucp_pm
function main($id, $mode) function main($id, $mode)
{ {
global $user, $template, $phpbb_root_path, $auth, $phpEx, $db, $config; global $user, $template, $phpbb_root_path, $auth, $phpEx, $db, $config, $request;
if (!$user->data['is_registered']) if (!$user->data['is_registered'])
{ {
@@ -246,6 +246,27 @@ class ucp_pm
$folder_id = (int) $row['folder_id']; $folder_id = (int) $row['folder_id'];
} }
if ($request->variable('mark', '') == 'all' && check_link_hash($request->variable('token', ''), 'mark_all_pms_read'))
{
mark_folder_read($user->data['user_id'], $folder_id);
meta_refresh(3, $this->u_action);
$message = $user->lang['PM_MARK_ALL_READ_SUCCESS'];
if ($request->is_ajax())
{
$json_response = new \phpbb\json_response();
$json_response->send(array(
'MESSAGE_TITLE' => $user->lang['INFORMATION'],
'MESSAGE_TEXT' => $message,
'success' => true,
));
}
$message .= '<br /><br />' . $user->lang('RETURN_UCP', '<a href="' . $this->u_action . '">', '</a>');
trigger_error($message);
}
$message_row = array(); $message_row = array();
if ($action == 'view_message' && $msg_id) if ($action == 'view_message' && $msg_id)
{ {
@@ -332,6 +353,7 @@ class ucp_pm
'U_SENTBOX' => $this->u_action . '&amp;folder=sentbox', 'U_SENTBOX' => $this->u_action . '&amp;folder=sentbox',
'U_CREATE_FOLDER' => $this->u_action . '&amp;mode=options', 'U_CREATE_FOLDER' => $this->u_action . '&amp;mode=options',
'U_CURRENT_FOLDER' => $this->u_action . '&amp;folder=' . $folder_id, 'U_CURRENT_FOLDER' => $this->u_action . '&amp;folder=' . $folder_id,
'U_MARK_ALL' => $this->u_action . '&amp;folder=' . $folder_id . '&amp;mark=all&amp;token=' . generate_link_hash('mark_all_pms_read'),
'S_IN_INBOX' => ($folder_id == PRIVMSGS_INBOX) ? true : false, 'S_IN_INBOX' => ($folder_id == PRIVMSGS_INBOX) ? true : false,
'S_IN_OUTBOX' => ($folder_id == PRIVMSGS_OUTBOX) ? true : false, 'S_IN_OUTBOX' => ($folder_id == PRIVMSGS_OUTBOX) ? true : false,

View File

@@ -27,8 +27,7 @@ function compose_pm($id, $mode, $action, $user_folders = array())
{ {
global $template, $db, $auth, $user, $cache; global $template, $db, $auth, $user, $cache;
global $phpbb_root_path, $phpEx, $config; global $phpbb_root_path, $phpEx, $config;
global $request; global $request, $phpbb_dispatcher, $phpbb_container;
global $phpbb_container;
// Damn php and globals - i know, this is horrible // Damn php and globals - i know, this is horrible
// Needed for handle_message_list_actions() // Needed for handle_message_list_actions()
@@ -233,6 +232,42 @@ function compose_pm($id, $mode, $action, $user_folders = array())
if ($sql) if ($sql)
{ {
/**
* Alter sql query to get message for user to write the PM
*
* @event core.ucp_pm_compose_compose_pm_basic_info_query_before
* @var string sql String with the query to be executed
* @var array forum_list List of forums that contain the posts
* @var int visibility_const Integer with one of the possible ITEM_* constant values
* @var int msg_id topic_id in the page request
* @var int to_user_id The id of whom the message is to
* @var int to_group_id The id of the group whom the message is to
* @var bool submit Whether the user is sending the PM or not
* @var bool preview Whether the user is previewing the PM or not
* @var string action One of: post, reply, quote, forward, quotepost, edit, delete, smilies
* @var bool delete Whether the user is deleting the PM
* @var int reply_to_all Value of reply_to_all request variable.
* @var string limit_time_sql String with the SQL code to limit the time interval of the post (Note: May be empty string)
* @var string sort_order_sql String with the ORDER BY SQL code used in this query
* @since 3.1.0-RC5
*/
$vars = array(
'sql',
'forum_list',
'visibility_const',
'msg_id',
'to_user_id',
'to_group_id',
'submit',
'preview',
'action',
'delete',
'reply_to_all',
'limit_time_sql',
'sort_order_sql',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_compose_pm_basic_info_query_before', compact($vars)));
$result = $db->sql_query($sql); $result = $db->sql_query($sql);
$post = $db->sql_fetchrow($result); $post = $db->sql_fetchrow($result);
$db->sql_freeresult($result); $db->sql_freeresult($result);
@@ -267,6 +302,40 @@ function compose_pm($id, $mode, $action, $user_folders = array())
trigger_error('NOT_AUTHORISED'); trigger_error('NOT_AUTHORISED');
} }
/**
* Get the result of querying for the post to be quoted in the pm message
*
* @event core.ucp_pm_compose_quotepost_query_after
* @var string sql The original SQL used in the query
* @var array post Associative array with the data of the quoted post
* @var array msg_id The post_id that was searched to get the message for quoting
* @var int visibility_const Visibility of the quoted post (one of the possible ITEM_* constant values)
* @var int topic_id Topic ID of the quoted post
* @var int to_user_id Users the message is sent to
* @var int to_group_id Groups the message is sent to
* @var bool submit Whether the user is sending the PM or not
* @var bool preview Whether the user is previewing the PM or not
* @var string action One of: post, reply, quote, forward, quotepost, edit, delete, smilies
* @var bool delete If deleting message
* @var int reply_to_all Value of reply_to_all request variable.
* @since 3.1.0-RC5
*/
$vars = array(
'sql',
'post',
'msg_id',
'visibility_const',
'topic_id',
'to_user_id',
'to_group_id',
'submit',
'preview',
'action',
'delete',
'reply_to_all',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_quotepost_query_after', compact($vars)));
// Passworded forum? // Passworded forum?
if ($post['forum_id']) if ($post['forum_id'])
{ {

View File

@@ -383,7 +383,7 @@ function view_folder($id, $mode, $folder_id, $folder)
break; break;
} }
header('Pragma: no-cache'); header('Cache-Control: private, no-cache');
header("Content-Type: $mimetype; name=\"data.$filetype\""); header("Content-Type: $mimetype; name=\"data.$filetype\"");
header("Content-disposition: attachment; filename=data.$filetype"); header("Content-disposition: attachment; filename=data.$filetype");
echo $string; echo $string;

View File

@@ -403,12 +403,15 @@ function get_user_information($user_id, $user_row)
$user_row['avatar'] = ($user->optionget('viewavatars')) ? phpbb_get_user_avatar($user_row) : ''; $user_row['avatar'] = ($user->optionget('viewavatars')) ? phpbb_get_user_avatar($user_row) : '';
if (!function_exists('get_user_rank')) if (!function_exists('phpbb_get_user_rank'))
{ {
include($phpbb_root_path . 'includes/functions_display.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
} }
get_user_rank($user_row['user_rank'], $user_row['user_posts'], $user_row['rank_title'], $user_row['rank_image'], $user_row['rank_image_src']); $user_rank_data = phpbb_get_user_rank($user_row, $user_row['user_posts']);
$user_row['rank_title'] = $user_rank_data['title'];
$user_row['rank_image'] = $user_rank_data['img'];
$user_row['rank_image_src'] = $user_rank_data['img_src'];
if ((!empty($user_row['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_email')) if ((!empty($user_row['user_allow_viewemail']) && $auth->acl_get('u_sendemail')) || $auth->acl_get('a_email'))
{ {

View File

@@ -154,7 +154,7 @@ class ucp_prefs
} }
$dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>'; $dateformat_options .= '>' . $user->lang['CUSTOM_DATEFORMAT'] . '</option>';
$timezone_selects = phpbb_timezone_select($user, $data['tz'], true); phpbb_timezone_select($template, $user, $data['tz'], true);
// check if there are any user-selectable languages // check if there are any user-selectable languages
$sql = 'SELECT COUNT(lang_id) as languages_count $sql = 'SELECT COUNT(lang_id) as languages_count
@@ -208,8 +208,6 @@ class ucp_prefs
'S_LANG_OPTIONS' => language_select($data['lang']), 'S_LANG_OPTIONS' => language_select($data['lang']),
'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['user_style']), 'S_STYLE_OPTIONS' => ($config['override_user_style']) ? '' : style_select($data['user_style']),
'S_TZ_OPTIONS' => $timezone_selects['tz_select'],
'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'],
'S_CAN_HIDE_ONLINE' => ($auth->acl_get('u_hideonline')) ? true : false, 'S_CAN_HIDE_ONLINE' => ($auth->acl_get('u_hideonline')) ? true : false,
'S_SELECT_NOTIFY' => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false) 'S_SELECT_NOTIFY' => ($config['jab_enable'] && $user->data['user_jabber'] && @extension_loaded('xml')) ? true : false)
); );

View File

@@ -655,9 +655,14 @@ class ucp_profile
{ {
if (!empty($keys)) if (!empty($keys))
{ {
foreach ($keys as $key => $id)
{
$keys[$key] = $db->sql_like_expression($id . $db->get_any_char());
}
$sql_where = '(key_id ' . implode(' OR key_id ', $keys) . ')';
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $user->data['user_id'] . ' WHERE user_id = ' . (int) $user->data['user_id'] . '
AND ' . $db->sql_in_set('key_id', $keys) ; AND ' . $sql_where ;
$db->sql_query($sql); $db->sql_query($sql);
@@ -681,7 +686,7 @@ class ucp_profile
while ($row = $db->sql_fetchrow($result)) while ($row = $db->sql_fetchrow($result))
{ {
$template->assign_block_vars('sessions', array( $template->assign_block_vars('sessions', array(
'KEY' => $row['key_id'], 'KEY' => substr($row['key_id'], 0, 8),
'IP' => $row['last_ip'], 'IP' => $row['last_ip'],
'LOGIN_TIME' => $user->format_date($row['last_login']), 'LOGIN_TIME' => $user->format_date($row['last_login']),
)); ));

View File

@@ -452,7 +452,7 @@ class ucp_register
break; break;
} }
$timezone_selects = phpbb_timezone_select($user, $data['tz'], true); $timezone_selects = phpbb_timezone_select($template, $user, $data['tz'], true);
$template->assign_vars(array( $template->assign_vars(array(
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '', 'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
'USERNAME' => $data['username'], 'USERNAME' => $data['username'],
@@ -465,8 +465,6 @@ class ucp_register
'L_PASSWORD_EXPLAIN' => $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars']), $user->lang('CHARACTERS', (int) $config['max_pass_chars'])), 'L_PASSWORD_EXPLAIN' => $user->lang($config['pass_complex'] . '_EXPLAIN', $user->lang('CHARACTERS', (int) $config['min_pass_chars']), $user->lang('CHARACTERS', (int) $config['max_pass_chars'])),
'S_LANG_OPTIONS' => language_select($data['lang']), 'S_LANG_OPTIONS' => language_select($data['lang']),
'S_TZ_OPTIONS' => $timezone_selects['tz_select'],
'S_TZ_DATE_OPTIONS' => $timezone_selects['tz_dates'],
'S_TZ_PRESELECT' => !$submit, 'S_TZ_PRESELECT' => !$submit,
'S_CONFIRM_REFRESH' => ($config['enable_confirm'] && $config['confirm_refresh']) ? true : false, 'S_CONFIRM_REFRESH' => ($config['enable_confirm'] && $config['confirm_refresh']) ? true : false,
'S_REGISTRATION' => true, 'S_REGISTRATION' => true,

View File

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

View File

@@ -446,7 +446,6 @@ class module
header('Content-type: text/html; charset=UTF-8'); header('Content-type: text/html; charset=UTF-8');
header('Cache-Control: private, no-cache="set-cookie"'); header('Cache-Control: private, no-cache="set-cookie"');
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT'); header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
header('Pragma: no-cache');
return; return;
} }

View File

@@ -1175,8 +1175,31 @@ class install_install extends module
} }
// Ok we have the db info go ahead and work on building the table // Ok we have the db info go ahead and work on building the table
$db_table_schema = @file_get_contents('schemas/schema.json'); if (file_exists('schemas/schema.json'))
$db_table_schema = json_decode($db_table_schema, true); {
$db_table_schema = @file_get_contents('schemas/schema.json');
$db_table_schema = json_decode($db_table_schema, true);
}
else
{
global $phpbb_root_path, $phpEx, $table_prefix;
$table_prefix = 'phpbb_';
if (!defined('CONFIG_TABLE'))
{
// We need to include the constants file for the table constants
// when we generate the schema from the migration files.
include($phpbb_root_path . 'includes/constants.' . $phpEx);
}
$finder = new \phpbb\finder(new \phpbb\filesystem(), $phpbb_root_path, null, $phpEx);
$classes = $finder->core_path('phpbb/db/migration/data/')
->get_classes();
$sqlite_db = new \phpbb\db\driver\sqlite();
$schema_generator = new \phpbb\db\migration\schema_generator($classes, new \phpbb\config\config(array()), $sqlite_db, new \phpbb\db\tools($sqlite_db, true), $phpbb_root_path, $phpEx, $table_prefix);
$db_table_schema = $schema_generator->get_schema();
}
if (!defined('CONFIG_TABLE')) if (!defined('CONFIG_TABLE'))
{ {
@@ -1654,6 +1677,19 @@ class install_install extends module
$db->sql_freeresult($result); $db->sql_freeresult($result);
$_module->move_module_by($row, 'move_up', 5); $_module->move_module_by($row, 'move_up', 5);
// Move extension management module 1 up...
$sql = 'SELECT *
FROM ' . MODULES_TABLE . "
WHERE module_langname = 'ACP_EXTENSION_MANAGEMENT'
AND module_class = 'acp'
AND module_mode = ''
AND module_basename = ''";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$_module->move_module_by($row, 'move_up', 1);
} }
if ($module_class == 'mcp') if ($module_class == 'mcp')

File diff suppressed because it is too large Load Diff

View File

@@ -273,7 +273,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_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 ('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 ('use_system_cron', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.0-RC4'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.0-RC6');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90'); 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'); INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');

View File

@@ -41,17 +41,21 @@ $lang = array_merge($lang, array(
'ACP_BOARD_SETTINGS_EXPLAIN' => 'Here you can determine the basic operation of your board, give it a fitting name and description, and among other settings adjust the default values for timezone and language.', 'ACP_BOARD_SETTINGS_EXPLAIN' => 'Here you can determine the basic operation of your board, give it a fitting name and description, and among other settings adjust the default values for timezone and language.',
'BOARD_INDEX_TEXT' => 'Board index text', 'BOARD_INDEX_TEXT' => 'Board index text',
'BOARD_INDEX_TEXT_EXPLAIN' => 'This text is displayed as the board index in the boards breadcrumbs. If not specified, it will default to “Board index”.', 'BOARD_INDEX_TEXT_EXPLAIN' => 'This text is displayed as the board index in the boards breadcrumbs. If not specified, it will default to “Board index”.',
'BOARD_STYLE' => 'Board style',
'CUSTOM_DATEFORMAT' => 'Custom…', 'CUSTOM_DATEFORMAT' => 'Custom…',
'DEFAULT_DATE_FORMAT' => 'Date format', 'DEFAULT_DATE_FORMAT' => 'Date format',
'DEFAULT_DATE_FORMAT_EXPLAIN' => 'The date format is the same as the PHP <code>date</code> function.', 'DEFAULT_DATE_FORMAT_EXPLAIN' => 'The date format is the same as the PHP <code>date</code> function.',
'DEFAULT_LANGUAGE' => 'Default language', 'DEFAULT_LANGUAGE' => 'Default language',
'DEFAULT_STYLE' => 'Default style', 'DEFAULT_STYLE' => 'Default style',
'DEFAULT_STYLE_EXPLAIN' => 'The default style for new users.',
'DISABLE_BOARD' => 'Disable board', 'DISABLE_BOARD' => 'Disable board',
'DISABLE_BOARD_EXPLAIN' => 'This will make the board unavailable to users who are neither administrators nor moderators. You can also enter a short (255 character) message to display if you wish.', 'DISABLE_BOARD_EXPLAIN' => 'This will make the board unavailable to users who are neither administrators nor moderators. You can also enter a short (255 character) message to display if you wish.',
'DISPLAY_LAST_SUBJECT' => 'Display subject of last added post on forum list', 'DISPLAY_LAST_SUBJECT' => 'Display subject of last added post on forum list',
'DISPLAY_LAST_SUBJECT_EXPLAIN' => 'The subject of the last added post will be displayed in the forum list with a hyperlink to the post. Subjects from password protected forums and forums in which user doesnt have read access are not shown.', 'DISPLAY_LAST_SUBJECT_EXPLAIN' => 'The subject of the last added post will be displayed in the forum list with a hyperlink to the post. Subjects from password protected forums and forums in which user doesnt have read access are not shown.',
'GUEST_STYLE' => 'Guest style',
'GUEST_STYLE_EXPLAIN' => 'The board style for guests.',
'OVERRIDE_STYLE' => 'Override user style', 'OVERRIDE_STYLE' => 'Override user style',
'OVERRIDE_STYLE_EXPLAIN' => 'Replaces users style with the default.', 'OVERRIDE_STYLE_EXPLAIN' => 'Replaces users (and guests) style with the style as defined under "Default style".',
'SITE_DESC' => 'Site description', 'SITE_DESC' => 'Site description',
'SITE_HOME_TEXT' => 'Main website text', 'SITE_HOME_TEXT' => 'Main website text',
'SITE_HOME_TEXT_EXPLAIN' => 'This text will be displayed as a link to your website homepage in the boards breadcrumbs. If not specified, it will default to “Home”.', 'SITE_HOME_TEXT_EXPLAIN' => 'This text will be displayed as a link to your website homepage in the boards breadcrumbs. If not specified, it will default to “Home”.',

View File

@@ -38,7 +38,7 @@ if (empty($lang) || !is_array($lang))
// Email settings // Email settings
$lang = array_merge($lang, array( $lang = array_merge($lang, array(
'ACP_MASS_EMAIL_EXPLAIN' => 'Here you can email a message to either all of your users or all users of a specific group <strong>having the option to receive mass emails enabled</strong>. To achieve this an email will be sent out to the administrative email address supplied, with a blind carbon copy sent to all recipients. The default setting is to only include 50 recipients in such an email, for more recipients more emails will be sent. If you are emailing a large group of people please be patient after submitting and do not stop the page halfway through. It is normal for a mass emailing to take a long time, you will be notified when the script has completed.', 'ACP_MASS_EMAIL_EXPLAIN' => 'Here you can email a message to either all of your users or all users of a specific group <strong>having the option to receive mass emails enabled</strong>. To achieve this an email will be sent out to the administrative email address supplied, with a blind carbon copy sent to all recipients. The default setting is to only include 20 recipients in such an email, for more recipients more emails will be sent. If you are emailing a large group of people please be patient after submitting and do not stop the page halfway through. It is normal for a mass emailing to take a long time, you will be notified when the script has completed.',
'ALL_USERS' => 'All users', 'ALL_USERS' => 'All users',
'COMPOSE' => 'Compose', 'COMPOSE' => 'Compose',

View File

@@ -99,7 +99,7 @@ $lang = array_merge($lang, array(
'FIELD_IDENT_EXPLAIN' => 'The field identification is a name to identify the profile field within the database and the templates.', 'FIELD_IDENT_EXPLAIN' => 'The field identification is a name to identify the profile field within the database and the templates.',
'FIELD_INT' => 'Numbers', 'FIELD_INT' => 'Numbers',
'FIELD_IS_CONTACT' => 'Display field as a contact field', 'FIELD_IS_CONTACT' => 'Display field as a contact field',
'FIELD_IS_CONTACT_EXPLAIN' => 'Contact fields are displayed within the contact section of the user profile and are displayed differently in the mini profile next to posts and private messages.', 'FIELD_IS_CONTACT_EXPLAIN' => 'Contact fields are displayed within the contact section of the user profile and are displayed differently in the mini profile next to posts and private messages. You can use <samp>%s</samp> as a placeholder variable which will be replaced by a value provided by the user.',
'FIELD_LENGTH' => 'Length of input box', 'FIELD_LENGTH' => 'Length of input box',
'FIELD_NOT_FOUND' => 'Profile field not found.', 'FIELD_NOT_FOUND' => 'Profile field not found.',
'FIELD_STRING' => 'Single text field', 'FIELD_STRING' => 'Single text field',
@@ -119,6 +119,12 @@ $lang = array_merge($lang, array(
'LANG_SPECIFIC_OPTIONS' => 'Language specific options [<strong>%s</strong>]', 'LANG_SPECIFIC_OPTIONS' => 'Language specific options [<strong>%s</strong>]',
'LETTER_NUM_DOTS' => 'Any letters, numbers and dots (periods)',
'LETTER_NUM_ONLY' => 'Any letters and numbers',
'LETTER_NUM_PUNCTUATION' => 'Any letters, numbers, comma, dots, underscores and dashes beginning with any letter',
'LETTER_NUM_SPACERS' => 'Any letters, numbers and spacers',
'LETTER_NUM_UNDERSCORE' => 'Any letters, numbers and underscores',
'MAX_FIELD_CHARS' => 'Maximum number of characters', 'MAX_FIELD_CHARS' => 'Maximum number of characters',
'MAX_FIELD_NUMBER' => 'Highest allowed number', 'MAX_FIELD_NUMBER' => 'Highest allowed number',
'MIN_FIELD_CHARS' => 'Minimum number of characters', 'MIN_FIELD_CHARS' => 'Minimum number of characters',

View File

@@ -83,7 +83,7 @@ $lang = array_merge($lang, array(
'FULLTEXT_SPHINX_PORT_EXPLAIN' => 'Port on which the sphinx search daemon (searchd) listens. Leave empty to use the default Sphinx API port 9312', 'FULLTEXT_SPHINX_PORT_EXPLAIN' => 'Port on which the sphinx search daemon (searchd) listens. Leave empty to use the default Sphinx API port 9312',
'FULLTEXT_SPHINX_WRONG_DATABASE' => 'The sphinx search for phpBB supports MySQL and PostgreSQL only.', 'FULLTEXT_SPHINX_WRONG_DATABASE' => 'The sphinx search for phpBB supports MySQL and PostgreSQL only.',
'FULLTEXT_SPHINX_CONFIG_FILE' => 'Sphinx config file', 'FULLTEXT_SPHINX_CONFIG_FILE' => 'Sphinx config file',
'FULLTEXT_SPHINX_CONFIG_FILE_EXPLAIN' => 'The generated content of the sphinx config file. This data needs to be pasted into the sphinx.conf which is used by sphinx search daemon.', 'FULLTEXT_SPHINX_CONFIG_FILE_EXPLAIN' => 'The generated content of the sphinx config file. This data needs to be pasted into the sphinx.conf which is used by sphinx search daemon. Replace the [dbuser] and [dbpassword] placeholders with your database credentials.',
'FULLTEXT_SPHINX_NO_CONFIG_DATA' => 'The sphinx data and config directory paths are not defined. Please define them to generate the config file.', 'FULLTEXT_SPHINX_NO_CONFIG_DATA' => 'The sphinx data and config directory paths are not defined. Please define them to generate the config file.',
'GENERAL_SEARCH_SETTINGS' => 'General search settings', 'GENERAL_SEARCH_SETTINGS' => 'General search settings',

View File

@@ -937,32 +937,34 @@ $lang = array_merge($lang, array(
// Timezones can be translated. We use this for the Etc/GMT timezones here, // Timezones can be translated. We use this for the Etc/GMT timezones here,
// because they are named invers to their offset. // because they are named invers to their offset.
'timezones' => array( 'timezones' => array(
'UTC' => 'UTC', 'UTC' => 'UTC',
'UTC_OFFSET' => 'UTC%1$s',
'UTC_OFFSET_CURRENT' => 'UTC%1$s - %2$s',
'Etc/GMT-12' => 'GMT+12', 'Etc/GMT-12' => 'UTC+12',
'Etc/GMT-11' => 'GMT+11', 'Etc/GMT-11' => 'UTC+11',
'Etc/GMT-10' => 'GMT+10', 'Etc/GMT-10' => 'UTC+10',
'Etc/GMT-9' => 'GMT+9', 'Etc/GMT-9' => 'UTC+9',
'Etc/GMT-8' => 'GMT+8', 'Etc/GMT-8' => 'UTC+8',
'Etc/GMT-7' => 'GMT+7', 'Etc/GMT-7' => 'UTC+7',
'Etc/GMT-6' => 'GMT+6', 'Etc/GMT-6' => 'UTC+6',
'Etc/GMT-5' => 'GMT+5', 'Etc/GMT-5' => 'UTC+5',
'Etc/GMT-4' => 'GMT+4', 'Etc/GMT-4' => 'UTC+4',
'Etc/GMT-3' => 'GMT+3', 'Etc/GMT-3' => 'UTC+3',
'Etc/GMT-2' => 'GMT+2', 'Etc/GMT-2' => 'UTC+2',
'Etc/GMT-1' => 'GMT+1', 'Etc/GMT-1' => 'UTC+1',
'Etc/GMT+1' => 'GMT-1', 'Etc/GMT+1' => 'UTC-1',
'Etc/GMT+2' => 'GMT-2', 'Etc/GMT+2' => 'UTC-2',
'Etc/GMT+3' => 'GMT-3', 'Etc/GMT+3' => 'UTC-3',
'Etc/GMT+4' => 'GMT-4', 'Etc/GMT+4' => 'UTC-4',
'Etc/GMT+5' => 'GMT-5', 'Etc/GMT+5' => 'UTC-5',
'Etc/GMT+6' => 'GMT-6', 'Etc/GMT+6' => 'UTC-6',
'Etc/GMT+7' => 'GMT-7', 'Etc/GMT+7' => 'UTC-7',
'Etc/GMT+8' => 'GMT-8', 'Etc/GMT+8' => 'UTC-8',
'Etc/GMT+9' => 'GMT-9', 'Etc/GMT+9' => 'UTC-9',
'Etc/GMT+10' => 'GMT-10', 'Etc/GMT+10' => 'UTC-10',
'Etc/GMT+11' => 'GMT-11', 'Etc/GMT+11' => 'UTC-11',
'Etc/GMT+12' => 'GMT-12', 'Etc/GMT+12' => 'UTC-12',
'Africa/Abidjan' => 'Africa/Abidjan', 'Africa/Abidjan' => 'Africa/Abidjan',
'Africa/Accra' => 'Africa/Accra', 'Africa/Accra' => 'Africa/Accra',

View File

@@ -36,44 +36,40 @@ $help = array(
1 => 'Login and Registration Issues' 1 => 'Login and Registration Issues'
), ),
array( array(
0 => 'Why cant I login?', 0 => 'Why do I need to register?',
1 => 'There are several reasons why this could occur. First, ensure your username and password are correct. If they are, contact the board owner to make sure you havent been banned. It is also possible the website owner has a configuration error on their end, and they would need to fix it.'
),
array(
0 => 'Why do I need to register at all?',
1 => 'You may not have to, it is up to the administrator of the board as to whether you need to register in order to post messages. However; registration will give you access to additional features not available to guest users such as definable avatar images, private messaging, emailing of fellow users, usergroup subscription, etc. It only takes a few moments to register so it is recommended you do so.' 1 => 'You may not have to, it is up to the administrator of the board as to whether you need to register in order to post messages. However; registration will give you access to additional features not available to guest users such as definable avatar images, private messaging, emailing of fellow users, usergroup subscription, etc. It only takes a few moments to register so it is recommended you do so.'
), ),
array( array(
0 => 'Why do I get logged off automatically?', 0 => 'What is COPPA?',
1 => 'If you do not check the <em>Remember me</em> box when you login, the board will only keep you logged in for a preset time. This prevents misuse of your account by anyone else. To stay logged in, check the box during login. This is not recommended if you access the board from a shared computer, e.g. library, internet cafe, university computer lab, etc. If you do not see this checkbox, it means the board administrator has disabled this feature.' 1 => 'COPPA, or the Childrens Online Privacy Protection Act of 1998, is a law in the United States requiring websites which can potentially collect information from minors under the age of 13 to have written parental consent or some other method of legal guardian acknowledgment, allowing the collection of personally identifiable information from a minor under the age of 13. If you are unsure if this applies to you as someone trying to register or to the website you are trying to register on, contact legal counsel for assistance. Please note that phpBB Limited and the owners of this board cannot provide legal advice and is not a point of contact for legal concerns of any kind, except as outlined in question “Who do I contact about abusive and/or legal matters related to this board?”.',
), ),
array( array(
0 => 'How do I prevent my username appearing in the online user listings?', 0 => 'Why cant I register?',
1 => 'Within your User Control Panel, under “Board preferences”, you will find the option <em>Hide your online status</em>. Enable this option with <samp>Yes</samp> and you will only appear to the administrators, moderators and yourself. You will be counted as a hidden user.' 1 => 'It is possible a board administrator has disabled registration to prevent new visitors from signing up. A board administrator could have also banned your IP address or disallowed the username you are attempting to register. Contact a board administrator for assistance.',
),
array(
0 => 'Ive lost my password!',
1 => 'Dont panic! While your password cannot be retrieved, it can easily be reset. Visit the login page and click <em>Ive forgotten my password</em>. Follow the instructions and you should be able to log in again shortly.'
), ),
array( array(
0 => 'I registered but cannot login!', 0 => 'I registered but cannot login!',
1 => 'First, check your username and password. If they are correct, then one of two things may have happened. If COPPA support is enabled and you specified being under 13 years old during registration, you will have to follow the instructions you received. Some boards will also require new registrations to be activated, either by yourself or by an administrator before you can logon; this information was present during registration. If you were sent an email, follow the instructions. If you did not receive an email, you may have provided an incorrect email address or the email may have been picked up by a spam filer. If you are sure the email address you provided is correct, try contacting an administrator.' 1 => 'First, check your username and password. If they are correct, then one of two things may have happened. If COPPA support is enabled and you specified being under 13 years old during registration, you will have to follow the instructions you received. Some boards will also require new registrations to be activated, either by yourself or by an administrator before you can logon; this information was present during registration. If you were sent an email, follow the instructions. If you did not receive an email, you may have provided an incorrect email address or the email may have been picked up by a spam filer. If you are sure the email address you provided is correct, try contacting an administrator.'
), ),
array(
0 => 'Why cant I login?',
1 => 'There are several reasons why this could occur. First, ensure your username and password are correct. If they are, contact a board administrator to make sure you havent been banned. It is also possible the website owner has a configuration error on their end, and they would need to fix it.',
),
array( array(
0 => 'I registered in the past but cannot login any more?!', 0 => 'I registered in the past but cannot login any more?!',
1 => 'It is possible an administrator has deactivated or deleted your account for some reason. Also, many boards periodically remove users who have not posted for a long time to reduce the size of the database. If this has happened, try registering again and being more involved in discussions.' 1 => 'It is possible an administrator has deactivated or deleted your account for some reason. Also, many boards periodically remove users who have not posted for a long time to reduce the size of the database. If this has happened, try registering again and being more involved in discussions.'
), ),
array( array(
0 => 'What is COPPA?', 0 => 'Ive lost my password!',
1 => 'COPPA, or the Child Online Privacy and Protection Act of 1998, is a law in the United States requiring websites which can potentially collect information from minors under the age of 13 to have written parental consent or some other method of legal guardian acknowledgment, allowing the collection of personally identifiable information from a minor under the age of 13. If you are unsure if this applies to you as someone trying to register or to the website you are trying to register on, contact legal counsel for assistance. Please note that the phpBB Limited cannot provide legal advice and is not a point of contact for legal concerns of any kind, except as outlined below.', 1 => 'Dont panic! While your password cannot be retrieved, it can easily be reset. Visit the login page and click <em>I forgot my password</em>. Follow the instructions and you should be able to log in again shortly.<br />However, if you are not able to reset your password, contact a board administrator.',
), ),
array( array(
0 => 'Why cant I register?', 0 => 'Why do I get logged off automatically?',
1 => 'It is possible the website owner has banned your IP address or disallowed the username you are attempting to register. The website owner could have also disabled registration to prevent new visitors from signing up. Contact a board administrator for assistance.', 1 => 'If you do not check the <em>Remember me</em> box when you login, the board will only keep you logged in for a preset time. This prevents misuse of your account by anyone else. To stay logged in, check the <em>Remember me</em> box during login. This is not recommended if you access the board from a shared computer, e.g. library, internet cafe, university computer lab, etc. If you do not see this checkbox, it means a board administrator has disabled this feature.',
), ),
array( array(
0 => 'What does the “Delete all board cookies” do?', 0 => 'What does the “Delete all board cookies” do?',
1 => '“Delete all board cookies” deletes the cookies created by phpBB which keep you authenticated and logged into the board. It also provides functions such as read tracking if they have been enabled by the board owner. If you are having login or logout problems, deleting board cookies may help.', 1 => '“Delete all board cookies” deletes the cookies created by phpBB which keep you authenticated and logged into the board. Cookies also provide functions such as read tracking if they have been enabled by a board administrator. If you are having login or logout problems, deleting board cookies may help.',
), ),
array( array(
0 => '--', 0 => '--',
@@ -81,7 +77,11 @@ $help = array(
), ),
array( array(
0 => 'How do I change my settings?', 0 => 'How do I change my settings?',
1 => 'If you are a registered user, all your settings are stored in the board database. To alter them, visit your User Control Panel; a link can usually be found at the top of board pages. This system will allow you to change all your settings and preferences.' 1 => 'If you are a registered user, all your settings are stored in the board database. To alter them, visit your User Control Panel; a link can usually be found by clicking on your username at the top of board pages. This system will allow you to change all your settings and preferences.',
),
array(
0 => 'How do I prevent my username appearing in the online user listings?',
1 => 'Within your User Control Panel, under “Board preferences”, you will find the option <em>Hide your online status</em>. Enable this option and you will only appear to the administrators, moderators and yourself. You will be counted as a hidden user.'
), ),
array( array(
0 => 'The times are not correct!', 0 => 'The times are not correct!',
@@ -93,11 +93,15 @@ $help = array(
), ),
array( array(
0 => 'My language is not in the list!', 0 => 'My language is not in the list!',
1 => 'Either the administrator has not installed your language or nobody has translated this board into your language. Try asking the board administrator if they can install the language pack you need. If the language pack does not exist, feel free to create a new translation. More information can be found at the phpBB website (see link at the bottom of board pages).' 1 => 'Either the administrator has not installed your language or nobody has translated this board into your language. Try asking a board administrator if they can install the language pack you need. If the language pack does not exist, feel free to create a new translation. More information can be found at the <a href="https://www.phpbb.com/">phpBB</a>&reg; website.',
), ),
array( array(
0 => 'How do I show an image along with my username?', 0 => 'What are the images next to my username?',
1 => 'There are two images which may appear along with a username when viewing posts. One of them may be an image associated with your rank, generally in the form of stars, blocks or dots, indicating how many posts you have made or your status on the board. Another, usually a larger image, is known as an avatar and is generally unique or personal to each user. It is up to the board administrator to enable avatars and to choose the way in which avatars can be made available. If you are unable to use avatars, contact a board administrator and ask them for their reasons.' 1 => 'There are two images which may appear along with a username when viewing posts. One of them may be an image associated with your rank, generally in the form of stars, blocks or dots, indicating how many posts you have made or your status on the board. Another, usually larger, image is known as an avatar and is generally unique or personal to each user.',
),
array(
0 => 'How do I display an avatar?',
1 => 'Within your User Control Panel, under “Profile” you can add an avatar by using one of the four following methods: Gravatar, Gallery, Remote or Upload. It is up to the board administrator to enable avatars and to choose the way in which avatars can be made available. If you are unable to use avatars, contact a board administrator.',
), ),
array( array(
0 => 'What is my rank and how do I change it?', 0 => 'What is my rank and how do I change it?',
@@ -112,8 +116,8 @@ $help = array(
1 => 'Posting Issues' 1 => 'Posting Issues'
), ),
array( array(
0 => 'How do I post a topic in a forum?', 0 => 'How do I create a new topic or post a reply?',
1 => 'To post a new topic in a forum, click the relevant button on either the forum or topic screens. You may need to register before you can post a message. A list of your permissions in each forum is available at the bottom of the forum and topic screens. Example: You can post new topics, You can vote in polls, etc.' 1 => 'To post a new topic in a forum, click "New Topic". To post a reply to a topic, click "Post Reply". You may need to register before you can post a message. A list of your permissions in each forum is available at the bottom of the forum and topic screens. Example: You can post new topics, You can post attachments, etc.',
), ),
array( array(
0 => 'How do I edit or delete a post?', 0 => 'How do I edit or delete a post?',
@@ -282,7 +286,7 @@ $help = array(
), ),
array( array(
0 => 'Why does my search return no results?', 0 => 'Why does my search return no results?',
1 => 'Your search was probably too vague and included many common terms which are not indexed by phpBB3. Be more specific and use the options available within Advanced search.' 1 => 'Your search was probably too vague and included many common terms which are not indexed by phpBB. Be more specific and use the options available within Advanced search.',
), ),
array( array(
0 => 'Why does my search return a blank page!?', 0 => 'Why does my search return a blank page!?',
@@ -294,19 +298,23 @@ $help = array(
), ),
array( array(
0 => 'How can I find my own posts and topics?', 0 => 'How can I find my own posts and topics?',
1 => 'Your own posts can be retrieved either by clicking the “Search users posts” within the User Control Panel or via your own profile page. To search for your topics, use the Advanced search page and fill in the various options appropriately.' 1 => 'Your own posts can be retrieved either by clicking the “Show your posts” link within the User Control Panel or by clicking the “Search users posts” link via your own profile page or by clicking the “Quick links” menu at the top of the board. To search for your topics, use the Advanced search page and fill in the various options appropriately.',
), ),
array( array(
0 => '--', 0 => '--',
1 => 'Topic Subscriptions and Bookmarks' 1 => 'Subscriptions and Bookmarks',
), ),
array( array(
0 => 'What is the difference between bookmarking and subscribing?', 0 => 'What is the difference between bookmarking and subscribing?',
1 => 'Bookmarking in phpBB3 is much like bookmarking in your web browser. You arent alerted when theres an update, but you can come back to the topic later. Subscribing, however, will notify you when there is an update to the topic or forum on the board via your preferred method or methods.' 1 => 'In phpBB 3.0, bookmarking topics worked much like bookmarking in a web browser. You were not alerted when there was an update. As of phpBB 3.1, bookmarking is more like subscribing to a topic. You can be notified when a bookmarked topic is updated. Subscribing, however, will notify you when there is an update to a topic or forum on the board. Notification options for bookmarks and subscriptions can be configured in the User Control Panel, under “Board preferences”.',
), ),
array( array(
0 => 'How do I subscribe to specific forums or topics?', 0 => 'How do I bookmark or subscribe to specific topics?',
1 => 'To subscribe to a specific forum, click the “Subscribe forum” link upon entering the forum. To subscribe to a topic, reply to the topic with the subscribe checkbox checked or click the “Subscribe topic” link within the topic itself.' 1 => 'You can bookmark or subscribe to a specific topic by clicking the appropriate link in the “Topic tools” menu, conveniently located near the top and bottom of a topic discussion.<br />Replying to a topic with the “Notify me when a reply is posted” option checked will also subscribe you to the topic.',
),
array(
0 => 'How do I subscribe to specific forums?',
1 => 'To subscribe to a specific forum, click the “Subscribe forum” link, at the bottom of page, upon entering the forum.',
), ),
array( array(
0 => 'How do I remove my subscriptions?', 0 => 'How do I remove my subscriptions?',
@@ -326,11 +334,11 @@ $help = array(
), ),
array( array(
0 => '--', 0 => '--',
1 => 'phpBB 3 Issues' 1 => 'phpBB Issues',
), ),
array( array(
0 => 'Who wrote this bulletin board?', 0 => 'Who wrote this bulletin board?',
1 => 'This software (in its unmodified form) is produced, released and is copyright <a href="https://www.phpbb.com/">phpBB Limited</a>. It is made available under the GNU General Public License and may be freely distributed. See the link for more details.' 1 => 'This software (in its unmodified form) is produced, released and is copyright <a href="https://www.phpbb.com/">phpBB Limited</a>. It is made available under the GNU General Public License, version 2 (GPL-2.0) and may be freely distributed. See <a href="https://www.phpbb.com/about/">About phpBB</a> for more details.',
), ),
array( array(
0 => 'Why isnt X feature available?', 0 => 'Why isnt X feature available?',
@@ -340,4 +348,8 @@ $help = array(
0 => 'Who do I contact about abusive and/or legal matters related to this board?', 0 => 'Who do I contact about abusive and/or legal matters related to this board?',
1 => 'Any of the administrators listed on the “The team” page should be an appropriate point of contact for your complaints. If this still gets no response then you should contact the owner of the domain (do a <a href="http://www.google.com/search?q=whois">whois lookup</a>) or, if this is running on a free service (e.g. Yahoo!, free.fr, f2s.com, etc.), the management or abuse department of that service. Please note that the phpBB Limited has <strong>absolutely no jurisdiction</strong> and cannot in any way be held liable over how, where or by whom this board is used. Do not contact the phpBB Limited in relation to any legal (cease and desist, liable, defamatory comment, etc.) matter <strong>not directly related</strong> to the phpBB.com website or the discrete software of phpBB itself. If you do email phpBB Limited <strong>about any third party</strong> use of this software then you should expect a terse response or no response at all.' 1 => 'Any of the administrators listed on the “The team” page should be an appropriate point of contact for your complaints. If this still gets no response then you should contact the owner of the domain (do a <a href="http://www.google.com/search?q=whois">whois lookup</a>) or, if this is running on a free service (e.g. Yahoo!, free.fr, f2s.com, etc.), the management or abuse department of that service. Please note that the phpBB Limited has <strong>absolutely no jurisdiction</strong> and cannot in any way be held liable over how, where or by whom this board is used. Do not contact the phpBB Limited in relation to any legal (cease and desist, liable, defamatory comment, etc.) matter <strong>not directly related</strong> to the phpBB.com website or the discrete software of phpBB itself. If you do email phpBB Limited <strong>about any third party</strong> use of this software then you should expect a terse response or no response at all.'
), ),
array(
0 => 'How do I contact a board administrator?',
1 => 'All users of the board can use the “Contact us” form, if the option was enabled by the board administrator.<br />Members of the board can also use the “The team” link.',
),
); );

View File

@@ -54,6 +54,8 @@ $lang = array_merge($lang, array(
'DEST_LANG' => 'Language', 'DEST_LANG' => 'Language',
'DEST_LANG_EXPLAIN' => 'Select an appropriate language (if available) for the recipient of this message.', 'DEST_LANG_EXPLAIN' => 'Select an appropriate language (if available) for the recipient of this message.',
'EDIT_PROFILE' => 'Edit profile',
'EMAIL_BODY_EXPLAIN' => 'This message will be sent as plain text, do not include any HTML or BBCode. The return address for this message will be set to your email address.', 'EMAIL_BODY_EXPLAIN' => 'This message will be sent as plain text, do not include any HTML or BBCode. The return address for this message will be set to your email address.',
'EMAIL_DISABLED' => 'Sorry but all email related functions have been disabled.', 'EMAIL_DISABLED' => 'Sorry but all email related functions have been disabled.',
'EMAIL_SENT' => 'The email has been sent.', 'EMAIL_SENT' => 'The email has been sent.',

View File

@@ -214,6 +214,11 @@ $lang = array_merge($lang, array(
'FIELD_INVALID_CHARS_ALPHA_PUNCTUATION' => 'The field “%s” has invalid characters, only alphanumeric or _,-. characters are allowed and the first character must be alphabetic.', 'FIELD_INVALID_CHARS_ALPHA_PUNCTUATION' => 'The field “%s” has invalid characters, only alphanumeric or _,-. characters are allowed and the first character must be alphabetic.',
'FIELD_INVALID_CHARS_ALPHA_SPACERS' => 'The field “%s” has invalid characters, only alphanumeric, space or -+_[] characters are allowed.', 'FIELD_INVALID_CHARS_ALPHA_SPACERS' => 'The field “%s” has invalid characters, only alphanumeric, space or -+_[] characters are allowed.',
'FIELD_INVALID_CHARS_ALPHA_UNDERSCORE' => 'The field “%s” has invalid characters, only alphanumeric or _ characters are allowed.', 'FIELD_INVALID_CHARS_ALPHA_UNDERSCORE' => 'The field “%s” has invalid characters, only alphanumeric or _ characters are allowed.',
'FIELD_INVALID_CHARS_LETTER_NUM_DOTS' => 'The field “%s” has invalid characters, only letter, number or . characters are allowed.',
'FIELD_INVALID_CHARS_LETTER_NUM_ONLY' => 'The field “%s” has invalid characters, only letter and number characters are allowed.',
'FIELD_INVALID_CHARS_LETTER_NUM_PUNCTUATION' => 'The field “%s” has invalid characters, only letter, number or _,-. characters are allowed and the first character must be alphabetic.',
'FIELD_INVALID_CHARS_LETTER_NUM_SPACERS' => 'The field “%s” has invalid characters, only letter, number, space or -+_[] characters are allowed.',
'FIELD_INVALID_CHARS_LETTER_NUM_UNDERSCORE' => 'The field “%s” has invalid characters, only letter, number or _ characters are allowed.',
'FIELD_INVALID_DATE' => 'The field “%s” has an invalid date.', 'FIELD_INVALID_DATE' => 'The field “%s” has an invalid date.',
'FIELD_INVALID_URL' => 'The field “%s” has an invalid url.', 'FIELD_INVALID_URL' => 'The field “%s” has an invalid url.',
'FIELD_INVALID_VALUE' => 'The field “%s” has an invalid value.', 'FIELD_INVALID_VALUE' => 'The field “%s” has an invalid value.',
@@ -412,6 +417,8 @@ $lang = array_merge($lang, array(
'PM_FROM_REMOVED_AUTHOR' => 'This message was sent by a user no longer registered.', 'PM_FROM_REMOVED_AUTHOR' => 'This message was sent by a user no longer registered.',
'PM_ICON' => 'PM icon', 'PM_ICON' => 'PM icon',
'PM_INBOX' => 'Inbox', 'PM_INBOX' => 'Inbox',
'PM_MARK_ALL_READ' => 'Mark all messages read',
'PM_MARK_ALL_READ_SUCCESS' => 'All private messages in this folder have been marked read',
'PM_NO_USERS' => 'The requested users to be added do not exist.', 'PM_NO_USERS' => 'The requested users to be added do not exist.',
'PM_OUTBOX' => 'Outbox', 'PM_OUTBOX' => 'Outbox',
'PM_SENTBOX' => 'Sent messages', 'PM_SENTBOX' => 'Sent messages',
@@ -584,6 +591,7 @@ $lang = array_merge($lang, array(
), ),
'VIEW_PREVIOUS_HISTORY' => 'Previous PM in history', 'VIEW_PREVIOUS_HISTORY' => 'Previous PM in history',
'VIEW_PREVIOUS_PM' => 'Previous PM', 'VIEW_PREVIOUS_PM' => 'Previous PM',
'VIEW_PROFILE' => 'View profile',
'VIEW_SIGS' => 'Display signatures', 'VIEW_SIGS' => 'Display signatures',
'VIEW_SMILIES' => 'Display smilies as images', 'VIEW_SMILIES' => 'Display smilies as images',
'VIEW_TOPICS_DAYS' => 'Display topics from previous days', 'VIEW_TOPICS_DAYS' => 'Display topics from previous days',

View File

@@ -283,21 +283,20 @@ switch ($mode)
continue; continue;
} }
$rank_title = $rank_img = $rank_img_src = ''; $user_rank_data = phpbb_get_user_rank($row, (($row['user_id'] == ANONYMOUS) ? false : $row['user_posts']));
get_user_rank($row['user_rank'], (($row['user_id'] == ANONYMOUS) ? false : $row['user_posts']), $rank_title, $rank_img, $rank_img_src);
$template->assign_block_vars('group.user', array( $template->assign_block_vars('group.user', array(
'USER_ID' => $row['user_id'], 'USER_ID' => $row['user_id'],
'FORUMS' => $row['forums'], 'FORUMS' => $row['forums'],
'FORUM_OPTIONS' => (isset($row['forums_options'])) ? true : false, 'FORUM_OPTIONS' => (isset($row['forums_options'])) ? true : false,
'RANK_TITLE' => $rank_title, 'RANK_TITLE' => $user_rank_data['title'],
'GROUP_NAME' => $groups_ary[$row['default_group']]['group_name'], 'GROUP_NAME' => $groups_ary[$row['default_group']]['group_name'],
'GROUP_COLOR' => $groups_ary[$row['default_group']]['group_colour'], 'GROUP_COLOR' => $groups_ary[$row['default_group']]['group_colour'],
'U_GROUP' => $groups_ary[$row['default_group']]['u_group'], 'U_GROUP' => $groups_ary[$row['default_group']]['u_group'],
'RANK_IMG' => $rank_img, 'RANK_IMG' => $user_rank_data['img'],
'RANK_IMG_SRC' => $rank_img_src, 'RANK_IMG_SRC' => $user_rank_data['img_src'],
'U_PM' => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($row['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;u=' . $row['user_id']) : '', 'U_PM' => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($row['user_allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;u=' . $row['user_id']) : '',
@@ -682,6 +681,7 @@ switch ($mode)
'U_MCP_QUEUE' => ($auth->acl_getf_global('m_approve')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue', 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_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']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=ucp_profile&amp;mode=profile_info') : '',
'S_USER_NOTES' => ($user_notes_enabled) ? true : false, 'S_USER_NOTES' => ($user_notes_enabled) ? true : false,
'S_WARN_USER' => ($warn_user_enabled) ? true : false, 'S_WARN_USER' => ($warn_user_enabled) ? true : false,
@@ -1080,10 +1080,14 @@ switch ($mode)
$avatar_img = phpbb_get_group_avatar($group_row); $avatar_img = phpbb_get_group_avatar($group_row);
// ... same for group rank // ... same for group rank
$rank_title = $rank_img = $rank_img_src = ''; $user_rank_data = array(
'title' => null,
'img' => null,
'img_src' => null,
);
if ($group_row['group_rank']) if ($group_row['group_rank'])
{ {
get_user_rank($group_row['group_rank'], false, $rank_title, $rank_img, $rank_img_src); $user_rank_data = phpbb_get_user_rank($group_row, false);
if ($rank_img) if ($rank_img)
{ {
@@ -1096,11 +1100,11 @@ switch ($mode)
'GROUP_NAME' => ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'], 'GROUP_NAME' => ($group_row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $group_row['group_name']] : $group_row['group_name'],
'GROUP_COLOR' => $group_row['group_colour'], 'GROUP_COLOR' => $group_row['group_colour'],
'GROUP_TYPE' => $user->lang['GROUP_IS_' . $group_row['l_group_type']], 'GROUP_TYPE' => $user->lang['GROUP_IS_' . $group_row['l_group_type']],
'GROUP_RANK' => $rank_title, 'GROUP_RANK' => $user_rank_data['title'],
'AVATAR_IMG' => $avatar_img, 'AVATAR_IMG' => $avatar_img,
'RANK_IMG' => $rank_img, 'RANK_IMG' => $user_rank_data['img'],
'RANK_IMG_SRC' => $rank_img_src, 'RANK_IMG_SRC' => $user_rank_data['img_src'],
'U_PM' => ($auth->acl_get('u_sendpm') && $auth->acl_get('u_masspm_group') && $group_row['group_receive_pm'] && $config['allow_privmsg'] && $config['allow_mass_pm']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;g=' . $group_id) : '',) 'U_PM' => ($auth->acl_get('u_sendpm') && $auth->acl_get('u_masspm_group') && $group_row['group_receive_pm'] && $config['allow_privmsg'] && $config['allow_mass_pm']) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&amp;mode=compose&amp;g=' . $group_id) : '',)
); );

View File

@@ -105,7 +105,7 @@ class oauth extends \phpbb\auth\provider\base
protected $phpbb_root_path; protected $phpbb_root_path;
/** /**
* PHP extenstion * PHP file extension
* *
* @var string * @var string
*/ */

View File

@@ -208,12 +208,24 @@ abstract class memory extends \phpbb\cache\driver\base
// determine which tables this query belongs to // determine which tables this query belongs to
// Some queries use backticks, namely the get_database_size() query // Some queries use backticks, namely the get_database_size() query
// don't check for conformity, the SQL would error and not reach here. // don't check for conformity, the SQL would error and not reach here.
if (!preg_match('/FROM \\(?(`?\\w+`?(?: \\w+)?(?:, ?`?\\w+`?(?: \\w+)?)*)\\)?/', $query, $regs)) if (!preg_match_all('/(?:FROM \\(?(`?\\w+`?(?: \\w+)?(?:, ?`?\\w+`?(?: \\w+)?)*)\\)?)|(?:JOIN (`?\\w+`?(?: \\w+)?))/', $query, $regs, PREG_SET_ORDER))
{ {
// Bail out if the match fails. // Bail out if the match fails.
return $query_result; return $query_result;
} }
$tables = array_map('trim', explode(',', $regs[1]));
$tables = array();
foreach ($regs as $match)
{
if ($match[0][0] == 'F')
{
$tables = array_merge($tables, array_map('trim', explode(',', $match[1])));
}
else
{
$tables[] = $match[2];
}
}
foreach ($tables as $table_name) foreach ($tables as $table_name)
{ {

View File

@@ -26,7 +26,7 @@ class purge extends \phpbb\console\command\command
/** @var \phpbb\auth\auth */ /** @var \phpbb\auth\auth */
protected $auth; protected $auth;
/** @var \phpbb\log\log */ /** @var \phpbb\log\log_interface */
protected $log; protected $log;
/** @var \phpbb\config\config */ /** @var \phpbb\config\config */
@@ -42,7 +42,7 @@ class purge extends \phpbb\console\command\command
* @param \phpbb\log\log $log Logger instance * @param \phpbb\log\log $log Logger instance
* @param \phpbb\config\config $config Config instance * @param \phpbb\config\config $config Config instance
*/ */
public function __construct(\phpbb\user $user, \phpbb\cache\driver\driver_interface $cache, \phpbb\db\driver\driver_interface $db, \phpbb\auth\auth $auth, \phpbb\log\log $log, \phpbb\config\config $config) public function __construct(\phpbb\user $user, \phpbb\cache\driver\driver_interface $cache, \phpbb\db\driver\driver_interface $db, \phpbb\auth\auth $auth, \phpbb\log\log_interface $log, \phpbb\config\config $config)
{ {
$this->cache = $cache; $this->cache = $cache;
$this->db = $db; $this->db = $db;

View File

@@ -55,6 +55,8 @@ class migrate extends \phpbb\console\command\command
{ {
$this->migrator->create_migrations_table(); $this->migrator->create_migrations_table();
$this->cache->purge();
$this->load_migrations(); $this->load_migrations();
$orig_version = $this->config['version']; $orig_version = $this->config['version'];
while (!$this->migrator->finished()) while (!$this->migrator->finished())

View File

@@ -140,14 +140,17 @@ class helper
// If enable_mod_rewrite is false we need to replace the current front-end by app.php, otherwise we need to remove it. // If enable_mod_rewrite is false we need to replace the current front-end by app.php, otherwise we need to remove it.
$base_url = str_replace('/' . $page_name, empty($this->config['enable_mod_rewrite']) ? '/app.' . $this->php_ext : '', $base_url); $base_url = str_replace('/' . $page_name, empty($this->config['enable_mod_rewrite']) ? '/app.' . $this->php_ext : '', $base_url);
// We need to update the base url to move to the directory of the app.php file // We need to update the base url to move to the directory of the app.php file if the current script is not app.php
if (empty($this->config['enable_mod_rewrite'])) if ($page_name !== 'app.php')
{ {
$base_url = str_replace('/app.' . $this->php_ext, '/' . $this->phpbb_root_path . 'app.' . $this->php_ext, $base_url); if (empty($this->config['enable_mod_rewrite']))
} {
else $base_url = str_replace('/app.' . $this->php_ext, '/' . $this->phpbb_root_path . 'app.' . $this->php_ext, $base_url);
{ }
$base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2', $this->phpbb_root_path); else
{
$base_url .= preg_replace(get_preg_expression('path_remove_dot_trailing_slash'), '$2', $this->phpbb_root_path);
}
} }
$base_url = $this->filesystem->clean_path($base_url); $base_url = $this->filesystem->clean_path($base_url);

View File

@@ -91,25 +91,28 @@ class datetime extends \DateTime
$midnight = $midnight->getTimestamp(); $midnight = $midnight->getTimestamp();
$day = false; if ($timestamp <= $midnight + 2 * 86400)
{
$day = false;
if ($timestamp > $midnight + 86400) if ($timestamp > $midnight + 86400)
{ {
$day = 'TOMORROW'; $day = 'TOMORROW';
} }
else if ($timestamp > $midnight) else if ($timestamp > $midnight)
{ {
$day = 'TODAY'; $day = 'TODAY';
} }
else if ($timestamp > $midnight - 86400) else if ($timestamp > $midnight - 86400)
{ {
$day = 'YESTERDAY'; $day = 'YESTERDAY';
} }
if ($day !== false) if ($day !== false)
{ {
// Format using the short formatting and finally swap out the relative token placeholder with the correct value // Format using the short formatting and finally swap out the relative token placeholder with the correct value
return str_replace(self::RELATIVE_WRAPPER . self::RELATIVE_WRAPPER, $this->user->lang['datetime'][$day], strtr(parent::format($format['format_short']), $format['lang'])); return str_replace(self::RELATIVE_WRAPPER . self::RELATIVE_WRAPPER, $this->user->lang['datetime'][$day], strtr(parent::format($format['format_short']), $format['lang']));
}
} }
} }
} }

View File

@@ -92,10 +92,41 @@ class notifications_use_full_name extends \phpbb\db\migration\migration
foreach ($this->notification_types as $notification_type) foreach ($this->notification_types as $notification_type)
{ {
$sql = 'UPDATE ' . NOTIFICATION_TYPES_TABLE . " $sql = 'SELECT notification_type_id
SET notification_type_name = 'notification.type.{$notification_type}' FROM ' . NOTIFICATION_TYPES_TABLE . "
WHERE notification_type_name = '{$notification_type}'"; WHERE notification_type_name = 'notification.type.{$notification_type}'";
$this->db->sql_query($sql); $result = $this->db->sql_query($sql);
$new_type_id = (int) $this->db->sql_fetchfield('notification_type_id');
$this->db->sql_freeresult($result);
if ($new_type_id)
{
// New type name already exists,
// so we delete the old type and update the type id of existing entries.
$sql = 'SELECT notification_type_id
FROM ' . NOTIFICATION_TYPES_TABLE . "
WHERE notification_type_name = '{$notification_type}'";
$result = $this->db->sql_query($sql);
$old_type_id = (int) $this->db->sql_fetchfield('notification_type_id');
$this->db->sql_freeresult($result);
$sql = 'UPDATE ' . NOTIFICATIONS_TABLE . '
SET notification_type_id = ' . (int) $new_type_id . '
WHERE notification_type_id = ' . (int) $old_type_id;
$this->db->sql_query($sql);
$sql = 'DELETE FROM ' . NOTIFICATION_TYPES_TABLE . "
WHERE notification_type_name = '{$notification_type}'";
$this->db->sql_query($sql);
}
else
{
// Otherwise we just update the name
$sql = 'UPDATE ' . NOTIFICATION_TYPES_TABLE . "
SET notification_type_name = 'notification.type.{$notification_type}'
WHERE notification_type_name = '{$notification_type}'";
$this->db->sql_query($sql);
}
$sql = 'UPDATE ' . USER_NOTIFICATIONS_TABLE . " $sql = 'UPDATE ' . USER_NOTIFICATIONS_TABLE . "
SET item_type = 'notification.type.{$notification_type}' SET item_type = 'notification.type.{$notification_type}'
@@ -108,10 +139,41 @@ class notifications_use_full_name extends \phpbb\db\migration\migration
{ {
foreach ($this->notification_types as $notification_type) foreach ($this->notification_types as $notification_type)
{ {
$sql = 'UPDATE ' . NOTIFICATION_TYPES_TABLE . " $sql = 'SELECT notification_type_id
SET notification_type_name = '{$notification_type}' FROM ' . NOTIFICATION_TYPES_TABLE . "
WHERE notification_type_name = 'notification.type.{$notification_type}'"; WHERE notification_type_name = '{$notification_type}'";
$this->db->sql_query($sql); $result = $this->db->sql_query($sql);
$new_type_id = (int) $this->db->sql_fetchfield('notification_type_id');
$this->db->sql_freeresult($result);
if ($new_type_id)
{
// New type name already exists,
// so we delete the old type and update the type id of existing entries.
$sql = 'SELECT notification_type_id
FROM ' . NOTIFICATION_TYPES_TABLE . "
WHERE notification_type_name = 'notification.type.{$notification_type}'";
$result = $this->db->sql_query($sql);
$old_type_id = (int) $this->db->sql_fetchfield('notification_type_id');
$this->db->sql_freeresult($result);
$sql = 'UPDATE ' . NOTIFICATIONS_TABLE . '
SET notification_type_id = ' . (int) $new_type_id . '
WHERE notification_type_id = ' . (int) $old_type_id;
$this->db->sql_query($sql);
$sql = 'DELETE FROM ' . NOTIFICATION_TYPES_TABLE . "
WHERE notification_type_name = 'notification.type.{$notification_type}'";
$this->db->sql_query($sql);
}
else
{
// Otherwise we just update the name
$sql = 'UPDATE ' . NOTIFICATION_TYPES_TABLE . "
SET notification_type_name = '{$notification_type}'
WHERE notification_type_name = 'notification.type.{$notification_type}'";
$this->db->sql_query($sql);
}
$sql = 'UPDATE ' . USER_NOTIFICATIONS_TABLE . " $sql = 'UPDATE ' . USER_NOTIFICATIONS_TABLE . "
SET item_type = '{$notification_type}' SET item_type = '{$notification_type}'

View File

@@ -0,0 +1,90 @@
<?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\v310;
class profilefield_field_validation_length extends \phpbb\db\migration\migration
{
protected $validation_options_old = array(
'ALPHA_SPACERS' => '[\w_\+\. \-\[\]]+',
);
protected $validation_options_new = array(
'ALPHA_SPACERS' => '[\w\x20_+\-\[\]]+',
);
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v310\rc3',
);
}
public function update_schema()
{
return array(
'change_columns' => array(
$this->table_prefix . 'profile_fields' => array(
'field_validation' => array('VCHAR_UNI:64', ''),
),
),
);
}
public function revert_schema()
{
return array(
'change_columns' => array(
$this->table_prefix . 'profile_fields' => array(
'field_validation' => array('VCHAR_UNI:20', ''),
),
),
);
}
public function update_data()
{
return array(
array('custom', array(array($this, 'update_profile_fields_validation'))),
);
}
public function revert_data()
{
return array(
array('custom', array(array($this, 'revert_profile_fields_validation'))),
);
}
public function update_profile_fields_validation()
{
foreach ($this->validation_options_new as $validation_type => $regex)
{
$sql = 'UPDATE ' . $this->table_prefix . "profile_fields
SET field_validation = '" . $this->db->sql_escape($this->validation_options_new[$validation_type]) . "'
WHERE field_validation = '" . $this->db->sql_escape($this->validation_options_old[$validation_type]) . "'";
$this->sql_query($sql);
}
}
public function revert_profile_fields_validation()
{
foreach ($this->validation_options_new as $validation_type => $regex)
{
$sql = 'UPDATE ' . $this->table_prefix . "profile_fields
SET field_validation = '" . $this->db->sql_escape($this->validation_options_old[$validation_type]) . "'
WHERE field_validation = '" . $this->db->sql_escape($this->validation_options_new[$validation_type]) . "'";
$this->sql_query($sql);
}
}
}

View File

@@ -0,0 +1,33 @@
<?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\v310;
class rc5 extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v310\rc4',
'\phpbb\db\migration\data\v310\profilefield_field_validation_length',
'\phpbb\db\migration\data\v310\remove_acp_styles_cache',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.1.0-RC5')),
);
}
}

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\v310;
class rc6 extends \phpbb\db\migration\migration
{
static public function depends_on()
{
return array(
'\phpbb\db\migration\data\v310\rc5',
);
}
public function update_data()
{
return array(
array('config.update', array('version', '3.1.0-RC6')),
);
}
}

View File

@@ -0,0 +1,51 @@
<?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\v310;
class remove_acp_styles_cache extends \phpbb\db\migration\migration
{
public function effectively_installed()
{
$sql = 'SELECT module_id
FROM ' . MODULES_TABLE . "
WHERE module_class = 'acp'
AND module_langname = 'ACP_STYLES_CACHE'";
$result = $this->db->sql_query($sql);
$module_id = $this->db->sql_fetchfield('module_id');
$this->db->sql_freeresult($result);
return !$module_id;
}
static public function depends_on()
{
return array('\phpbb\db\migration\data\v310\rc4');
}
public function update_data()
{
return array(
array('module.remove', array(
'acp',
'ACP_STYLE_MANAGEMENT',
array(
'module_basename' => 'acp_styles',
'module_langname' => 'ACP_STYLES_CACHE',
'module_mode' => 'cache',
'module_auth' => 'acl_a_styles',
),
)),
);
}
}

View File

@@ -1512,7 +1512,7 @@ class tools
$sql .= (strpos($column_data[1], '0x') === 0) ? "DEFAULT {$column_data[1]} " : "DEFAULT '{$column_data[1]}' "; $sql .= (strpos($column_data[1], '0x') === 0) ? "DEFAULT {$column_data[1]} " : "DEFAULT '{$column_data[1]}' ";
} }
if (!is_null($column_data[1])) if (!is_null($column_data[1]) || (isset($column_data[2]) && $column_data[2] == 'auto_increment'))
{ {
$sql .= 'NOT NULL'; $sql .= 'NOT NULL';
} }

View File

@@ -1,67 +0,0 @@
<?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\di\pass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
class kernel_pass implements CompilerPassInterface
{
/**
* Modify the container before it is passed to the rest of the code
*
* @param ContainerBuilder $container ContainerBuilder object
* @return null
* @throws \InvalidArgumentException
*/
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('dispatcher');
foreach ($container->findTaggedServiceIds('kernel.event_listener') as $id => $events)
{
foreach ($events as $event)
{
$priority = isset($event['priority']) ? $event['priority'] : 0;
if (!isset($event['event']))
{
throw new \InvalidArgumentException(sprintf('Service "%1$s" must define the "event" attribute on "kernel.event_listener" tags.', $id));
}
if (!isset($event['method']))
{
throw new \InvalidArgumentException(sprintf('Service "%1$s" must define the "method" attribute on "kernel.event_listener" tags.', $id));
}
$definition->addMethodCall('addListenerService', array($event['event'], array($id, $event['method']), $priority));
}
}
foreach ($container->findTaggedServiceIds('kernel.event_subscriber') as $id => $attributes)
{
// We must assume that the class value has been correctly filled, even if the service is created by a factory
$class = $container->getDefinition($id)->getClass();
$refClass = new \ReflectionClass($class);
$interface = 'Symfony\Component\EventDispatcher\EventSubscriberInterface';
if (!$refClass->implementsInterface($interface))
{
throw new \InvalidArgumentException(sprintf('Service "%1$s" must implement interface "%2$s".', $id, $interface));
}
$definition->addMethodCall('addSubscriberService', array($id, $class));
}
}
}

View File

@@ -253,7 +253,7 @@ class php_exporter
public function get_event_name($event_line, $is_dispatch) public function get_event_name($event_line, $is_dispatch)
{ {
$event_text_line = $this->file_lines[$event_line]; $event_text_line = $this->file_lines[$event_line];
$event_text_line = ltrim($event_text_line, "\t"); $event_text_line = ltrim($event_text_line, "\t ");
if ($is_dispatch) if ($is_dispatch)
{ {
@@ -389,7 +389,7 @@ class php_exporter
$found_comment_end = false; $found_comment_end = false;
while (ltrim($this->file_lines[$this->current_event_line - $current_doc_line], "\t") !== '/**') while (ltrim($this->file_lines[$this->current_event_line - $current_doc_line], "\t") !== '/**')
{ {
if (ltrim($this->file_lines[$this->current_event_line - $current_doc_line], "\t") === '*/') if (ltrim($this->file_lines[$this->current_event_line - $current_doc_line], "\t ") === '*/')
{ {
$found_comment_end = true; $found_comment_end = true;
} }
@@ -471,7 +471,7 @@ class php_exporter
{ {
$find_tag_line = 0; $find_tag_line = 0;
$found_comment_end = false; $found_comment_end = false;
while (strpos(ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t"), '* @' . $find_tag . ' ') !== 0) while (strpos(ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t "), '* @' . $find_tag . ' ') !== 0)
{ {
if ($found_comment_end && ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t") === '/**') if ($found_comment_end && ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t") === '/**')
{ {
@@ -482,7 +482,7 @@ class php_exporter
foreach ($disallowed_tags as $disallowed_tag) foreach ($disallowed_tags as $disallowed_tag)
{ {
if ($found_comment_end && strpos(ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t"), '* @' . $disallowed_tag) === 0) if ($found_comment_end && strpos(ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t "), '* @' . $disallowed_tag) === 0)
{ {
// Found @var after the @since // Found @var after the @since
throw new \LogicException("Found '@{$disallowed_tag}' information after '@{$find_tag}' for event " throw new \LogicException("Found '@{$disallowed_tag}' information after '@{$find_tag}' for event "
@@ -490,7 +490,7 @@ class php_exporter
} }
} }
if (ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t") === '*/') if (ltrim($this->file_lines[$this->current_event_line - $find_tag_line], "\t ") === '*/')
{ {
$found_comment_end = true; $found_comment_end = true;
} }
@@ -550,7 +550,7 @@ class php_exporter
public function validate_since($line) public function validate_since($line)
{ {
$match = array(); $match = array();
preg_match('#^\* @since (\d+\.\d+\.\d+(?:-(?:a|b|RC|pl)\d+)?)$#', ltrim($line, "\t"), $match); preg_match('#^\* @since (\d+\.\d+\.\d+(?:-(?:a|b|RC|pl)\d+)?)$#', ltrim($line, "\t "), $match);
if (!isset($match[1])) if (!isset($match[1]))
{ {
throw new \LogicException("Invalid '@since' information for event " throw new \LogicException("Invalid '@since' information for event "
@@ -570,7 +570,7 @@ class php_exporter
*/ */
public function validate_event($event_name, $line) public function validate_event($event_name, $line)
{ {
$event = substr(ltrim($line, "\t"), strlen('* @event ')); $event = substr(ltrim($line, "\t "), strlen('* @event '));
if ($event !== trim($event)) if ($event !== trim($event))
{ {

View File

@@ -21,18 +21,26 @@ class pagination
/** @var \phpbb\user */ /** @var \phpbb\user */
protected $user; protected $user;
/** @var \phpbb\controller\helper */
protected $helper;
/** @var \phpbb\event\dispatcher_interface */
protected $phpbb_dispatcher;
/** /**
* Constructor * Constructor
* *
* @param \phpbb\template\template $template * @param \phpbb\template\template $template
* @param \phpbb\user $user * @param \phpbb\user $user
* @param \phpbb\controller\helper $helper * @param \phpbb\controller\helper $helper
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher
*/ */
public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\controller\helper $helper) public function __construct(\phpbb\template\template $template, \phpbb\user $user, \phpbb\controller\helper $helper, \phpbb\event\dispatcher_interface $phpbb_dispatcher)
{ {
$this->template = $template; $this->template = $template;
$this->user = $user; $this->user = $user;
$this->helper = $helper; $this->helper = $helper;
$this->phpbb_dispatcher = $phpbb_dispatcher;
} }
/** /**
@@ -50,6 +58,36 @@ class pagination
*/ */
protected function generate_page_link($base_url, $on_page, $start_name, $per_page) protected function generate_page_link($base_url, $on_page, $start_name, $per_page)
{ {
// A listener can set this variable to the new pagination URL
// to override the generate_page_link() function generated value
$generate_page_link_override = false;
/**
* Execute code and/or override generate_page_link()
*
* To override the generate_page_link() function generated value
* set $generate_page_link_override to the new URL value
*
* @event core.pagination_generate_page_link
* @var string base_url is url prepended to all links generated within the function
* If you use page numbers inside your controller route, base_url should contains a placeholder (%d)
* for the page. Also be sure to specify the pagination path information into the start_name argument
* @var string on_page is the page for which we want to generate the link
* @var string start_name is the name of the parameter containing the first item of the given page (example: start=20)
* If you use page numbers inside your controller route, start name should be the string
* that should be removed for the first page (example: /page/%d)
* @var int per_page the number of items, posts, etc. to display per page, used to determine the number of pages to produce
* @var bool|string generate_page_link_override Shall we return custom pagination link (string URL) or not (false)
* @since 3.1.0-RC5
*/
$vars = array('base_url', 'on_page', 'start_name', 'per_page', 'generate_page_link_override');
extract($this->phpbb_dispatcher->trigger_event('core.pagination_generate_page_link', compact($vars)));
if ($generate_page_link_override)
{
return $generate_page_link_override;
}
if (!is_string($base_url)) if (!is_string($base_url))
{ {
if (is_array($base_url['routes'])) if (is_array($base_url['routes']))

View File

@@ -68,7 +68,7 @@ class bcrypt extends base
return false; return false;
} }
if ($hash == $this->hash($password, $salt)) if ($this->helper->string_compare($hash, $this->hash($password, $salt)))
{ {
return true; return true;
} }

View File

@@ -78,7 +78,7 @@ class bcrypt_wcf2 extends base
return false; return false;
} }
// Works for standard WCF 2.x, i.e. WBB4 and similar // Works for standard WCF 2.x, i.e. WBB4 and similar
return $hash === $this->bcrypt->hash($this->bcrypt->hash($password, $salt), $salt); return $this->helper->string_compare($hash, $this->bcrypt->hash($this->bcrypt->hash($password, $salt), $salt));
} }
} }
} }

View File

@@ -142,4 +142,24 @@ class helper
} }
return $random; return $random;
} }
/**
* Compare two strings byte by byte
*
* @param string $string_a The first string
* @param string $string_b The second string
*
* @return bool True if strings are the same, false if not
*/
public function string_compare($string_a, $string_b)
{
$difference = strlen($string_a) != strlen($string_b);
for ($i = 0; $i < strlen($string_a) && $i < strlen($string_b); $i++)
{
$difference |= $string_a[$i] != $string_b[$i];
}
return $difference === 0;
}
} }

View File

@@ -54,7 +54,7 @@ class md5_mybb extends base
else else
{ {
// Works for myBB 1.1.x, 1.2.x, 1.4.x, 1.6.x // Works for myBB 1.1.x, 1.2.x, 1.4.x, 1.6.x
return $hash === md5(md5($user_row['user_passwd_salt']) . md5($password)); return $this->helper->string_compare($hash, md5(md5($user_row['user_passwd_salt']) . md5($password)));
} }
} }
} }

View File

@@ -23,6 +23,9 @@ class md5_phpbb2 extends base
/** @var \phpbb\passwords\driver\salted_md5 */ /** @var \phpbb\passwords\driver\salted_md5 */
protected $salted_md5; protected $salted_md5;
/** @var \phpbb\passwords\driver\helper */
protected $helper;
/** @var string phpBB root path */ /** @var string phpBB root path */
protected $phpbb_root_path; protected $phpbb_root_path;
@@ -34,13 +37,15 @@ class md5_phpbb2 extends base
* *
* @param \phpbb\request\request $request phpBB request object * @param \phpbb\request\request $request phpBB request object
* @param \phpbb\passwords\driver\salted_md5 $salted_md5 Salted md5 driver * @param \phpbb\passwords\driver\salted_md5 $salted_md5 Salted md5 driver
* @param \phpbb\passwords\driver\helper $helper Driver helper
* @param string $phpbb_root_path phpBB root path * @param string $phpbb_root_path phpBB root path
* @param string $php_ext PHP file extension * @param string $php_ext PHP file extension
*/ */
public function __construct($request, \phpbb\passwords\driver\salted_md5 $salted_md5, $phpbb_root_path, $php_ext) public function __construct($request, salted_md5 $salted_md5, helper $helper, $phpbb_root_path, $php_ext)
{ {
$this->request = $request; $this->request = $request;
$this->salted_md5 = $salted_md5; $this->salted_md5 = $salted_md5;
$this->helper = $helper;
$this->phpbb_root_path = $phpbb_root_path; $this->phpbb_root_path = $phpbb_root_path;
$this->php_ext = $php_ext; $this->php_ext = $php_ext;
} }
@@ -105,7 +110,7 @@ class md5_phpbb2 extends base
include($this->phpbb_root_path . 'includes/utf/data/recode_basic.' . $this->php_ext); include($this->phpbb_root_path . 'includes/utf/data/recode_basic.' . $this->php_ext);
} }
if (md5($password_old_format) === $hash || md5(\utf8_to_cp1252($password_old_format)) === $hash if ($this->helper->string_compare(md5($password_old_format), $hash) || $this->helper->string_compare(md5(\utf8_to_cp1252($password_old_format)), $hash)
|| $this->salted_md5->check(md5($password_old_format), $hash) === true || $this->salted_md5->check(md5($password_old_format), $hash) === true
|| $this->salted_md5->check(md5(\utf8_to_cp1252($password_old_format)), $hash) === true) || $this->salted_md5->check(md5(\utf8_to_cp1252($password_old_format)), $hash) === true)
{ {

View File

@@ -54,7 +54,7 @@ class md5_vb extends base
else else
{ {
// Works for vB 3.8.x, 4.x.x, 5.0.x // Works for vB 3.8.x, 4.x.x, 5.0.x
return $hash === md5(md5($password) . $user_row['user_passwd_salt']); return $this->helper->string_compare($hash, md5(md5($password) . $user_row['user_passwd_salt']));
} }
} }
} }

View File

@@ -107,7 +107,7 @@ class salted_md5 extends base
return md5($password) === $hash; return md5($password) === $hash;
} }
return $hash === $this->hash($password, $hash); return $this->helper->string_compare($hash, $this->hash($password, $hash));
} }
/** /**

View File

@@ -47,6 +47,6 @@ class sha1 extends base
*/ */
public function check($password, $hash, $user_row = array()) public function check($password, $hash, $user_row = array())
{ {
return (strlen($hash) == 40) ? $hash === sha1($password) : false; return (strlen($hash) == 40) ? $this->helper->string_compare($hash, sha1($password)) : false;
} }
} }

View File

@@ -46,6 +46,6 @@ class sha1_smf extends base
*/ */
public function check($password, $hash, $user_row = array()) public function check($password, $hash, $user_row = array())
{ {
return (strlen($hash) == 40) ? $hash === $this->hash($password, $user_row) : false; return (strlen($hash) == 40) ? $this->helper->string_compare($hash, $this->hash($password, $user_row)) : false;
} }
} }

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