1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-20 04:51:38 +02:00

Compare commits

..

207 Commits

Author SHA1 Message Date
Marc Alexander
7d73d1ff83 [prep-release-3.1.10] Add changelog for 3.1.10-RC1 2016-09-24 14:57:23 +02:00
Marc Alexander
c958ba13e8 [prep-release-3.1.10] Add migration for 3.1.10-RC1 2016-09-24 14:50:46 +02:00
Marc Alexander
2f17757f4e [prep-release-3.1.10] Update version to 3.1.10-RC1 2016-09-24 14:50:46 +02:00
Marc Alexander
b8bbf9db03 Merge pull request #4461 from marc1706/ticket/14785
[ticket/14785] Add template event overall_header_headerbar_after/before
2016-09-24 13:04:21 +02:00
Marc Alexander
4267cc3a43 Merge pull request #4462 from marc1706/ticket/14796
[ticket/14796] Use log_table class member instead of table constant
2016-09-24 11:50:15 +02:00
GerB
90e9d5c462 [ticket/14785] Add template event overall_header_headerbar_after/before
PHPBB3-14785
2016-09-24 11:04:23 +02:00
Tristan Darricau
cdd56c0505 Merge pull request #4394 from marc1706/ticket/14484
[ticket/14484] Add possibility to use extensions in UI tests

* marc1706/ticket/14484:
  [ticket/14484] Properly enable extensions in UI tests
  [ticket/14484] Move facebook/webdriver back to tests dir composer.json
  [ticket/14484] Move facebook webdriver to main composer.json
2016-09-24 10:31:06 +02:00
Marc Alexander
18f9c9f6e2 Merge pull request #3527 from Elsensee/ticket/13709
[ticket/13709] Add fallback for email templates used by extensions
2016-09-24 10:28:37 +02:00
Forumhulp.com
97040dc6ff [ticket/14796] Use log_table class member instead of table constant
Was still using the old LOG_TABLE constant in the delete method.

PHPBB3-14796
2016-09-24 10:19:12 +02:00
Marc Alexander
931582aad9 Merge pull request #4432 from Senky/ticket/14762
[ticket/14762] Add core event to session.php
2016-09-24 10:02:41 +02:00
Marc Alexander
3910387ee5 Merge pull request #4433 from Senky/ticket/14747
[ticket/14747] Add post_data to core.modify_posting_auth
2016-09-24 09:56:25 +02:00
Marc Alexander
d2f95ef875 Merge pull request #4460 from marc1706/ticket/14784
[ticket/14784] missing rewrite for lighttpd
2016-09-24 09:39:01 +02:00
Tobi Schäfer
537dca0892 [ticket/14784] missing rewrite for lighttpd
PHPBB3-14784
2016-09-24 08:21:27 +02:00
Marc Alexander
2436af94e3 Merge pull request #4392 from ErnadoO/PHPBB3-14592
[ticket/14592] [PHP] core.search_backend_search_after
2016-09-22 21:26:31 +02:00
Marc Alexander
75f57fa407 Merge pull request #4454 from rxu/tcket/14787-1
[ticket/14787] Add more parameters to the core.search_modify_url_parameters
2016-09-22 21:23:55 +02:00
rxu
a078336cb1 [ticket/14787] Add more parameters to the core.search_modify_url_parameters
PHPBB3-14787
2016-09-19 02:48:23 +07:00
Tristan Darricau
4da479d47f Merge pull request #4450 from rxu/ticket/14787
[ticket/14787] Add more parameters to the core.search_modify_url_pameters

* rxu/ticket/14787:
  [ticket/14787] Add more parameters to the core.search_modify_url_parameters
2016-09-18 21:25:14 +02:00
Tristan Darricau
bc08813866 Merge pull request #4452 from marc1706/ticket/14789
[ticket/14789] Further harden ACP link and form checks

* marc1706/ticket/14789:
  [ticket/14789] Add form tokens to tests and uncomment add_form_key
  [ticket/14789] Add link hashes and form tokens to all acp links/buttons
2016-09-18 21:12:19 +02:00
Erwan Nader
6b435cbf13 [ticket/14592] Fix variable type
PHPBB3-14592
2016-09-18 19:55:00 +02:00
Marc Alexander
72f6241aa2 [ticket/14789] Add form tokens to tests and uncomment add_form_key
PHPBB3-14789
2016-09-18 15:30:25 +02:00
Marc Alexander
585a3ed863 [ticket/14789] Add link hashes and form tokens to all acp links/buttons
This will further harden the ACP security by adding link hashes to links and
form tokens to forms that did not have these yet and result in modified
settings or write action on the filesystem or database. These few links and
forms were still relying on the global ACP protection, mainly due to them
not posing further risks of compromising data. After this change these will
now also be properly protected against tampering.

PHPBB3-14789
2016-09-18 15:29:50 +02:00
Jakub Senko
abb01946bd [ticket/14762] Add core event to session.php
PHPBB3-14762
2016-09-18 13:32:10 +02:00
Tristan Darricau
27e33f39f7 Merge pull request #4451 from marc1706/ticket/14788
[ticket/14788] Update CREDITS.txt

* marc1706/ticket/14788:
  [ticket/14788] Update CREDITS.txt
2016-09-18 13:28:36 +02:00
Marc Alexander
c3578bc3e3 Merge pull request #4442 from rxu/ticket/14781
[ticket/14781] Add core event to the function group_user_attributes()
2016-09-18 13:07:47 +02:00
Marc Alexander
0d3ca3883e [ticket/14788] Update CREDITS.txt
PHPBB3-14788
2016-09-18 12:16:44 +02:00
rxu
a084b07495 [ticket/14787] Add more parameters to the core.search_modify_url_parameters
PHPBB3-14787
2016-09-18 14:02:49 +07:00
Marc Alexander
bf397cb985 Merge pull request #4398 from wesleyfok/ticket/14638-3.1.x
Ticket/14638 3.1.x New UCP hooks for subscriptions
2016-09-17 13:04:32 +02:00
Marc Alexander
73b9327631 Merge pull request #4403 from rxu/ticket/14738
[ticket/14738] Add core events to improve modifying forum lists
2016-09-17 12:58:18 +02:00
Marc Alexander
bd59241110 Merge pull request #4406 from rmcgirr83/ticket/14581
[ticket/14581] Add core events to content_visibility
2016-09-17 08:54:00 +02:00
Marc Alexander
33584f12f0 Merge pull request #4449 from DavidIQ/ticket/14782
[ticket/14782] Don't use 'DISTINCT' when using 'SQL_CALC_FOUND_ROWS'
2016-09-17 00:04:59 +02:00
DavidIQ
2ae08dc3ba [ticket/14782] Don't use 'DISTINCT' when using 'SQL_CALC_FOUND_ROWS' 2016-09-16 17:05:20 -04:00
Andreas Fischer
32ba128ea5 Merge pull request #4444 from DavidIQ/ticket/14782
[ticket/14782] Use the $select variable in "Your Posts" search

* DavidIQ/ticket/14782:
  [ticket/14782] Use the $select variable in "Your Posts" search
2016-09-15 19:30:29 +02:00
Marc Alexander
70aa4407d3 Merge remote-tracking branch 'VSEphpbb/ticket/14783' into 3.1.x 2016-09-14 20:49:13 +02:00
Matt Friedman
5503c09cd5 [ticket/14783] Add template event before custom BBCodes in ACP
PHPBB3-14783
2016-09-14 10:37:27 -07:00
DavidIQ
6d589a8bb9 [ticket/14782] Use the $select variable in "Your Posts" search 2016-09-13 14:10:50 -04:00
rxu
43c52b073b [ticket/14781] Add core event to the function group_user_attributes()
PHPBB3-14781
2016-09-12 13:44:33 +07:00
Marc Alexander
4b8e8df55c Merge pull request #4371 from imkingdavid/ticket/14695
[ticket/14695] Add posting_editor_subject_prepend/append template events
2016-09-11 11:07:48 +02:00
Marc Alexander
dccb5564d2 Merge pull request #4438 from danchr/ticket/12133
[ticket/12133] fix download file names for WebKit-derived browsers
2016-09-09 23:39:20 +02:00
Marc Alexander
857a085496 Merge pull request #4428 from rmcgirr83/ticket/14755
[ticket/14755] Fix max length in mcp topic html file
2016-09-07 21:24:29 +02:00
Dan Villiom Podlaski Christiansen
ce48b4de57 [ticket/12133] fix download file names for WebKit-derived browsers
All browser engines that descend from WebKit declare themselves as
Safari in the user agent, including Chrome. Currently, the code
assumes that any Safari-like browser cannot handle the RFC-compliant
filename syntax. At least for recent versions of Safari, this is no
longer the case, and the legacy syntax results in URI-quoted
filenames. Using the standard syntax works as expected in both Safari
9 and Chrome 45.

The ticket reporting this issue is from January 2014, so we can safely
ignore compatibility: any browser still relying on the previous
behaviour is unlikely to receive security updates.

PHPBB3-12133
2016-09-07 03:17:44 +02:00
Marc Alexander
2efdaaa0e2 Merge pull request #4426 from bantu/ticket/14109
[ticket/14109] Increase MySQL Version for InnoDB FULLTEXT Index to 5.…
2016-09-06 21:50:22 +02:00
Jakub Senko
64178b40b8 [ticket/14747] Add post_data to core.modify_posting_auth
PHPBB3-14747
2016-09-03 11:11:55 +02:00
Tristan Darricau
65921a7891 Merge pull request #4396 from ErnadoO/ticket/14727
[ticket/14727] Event core.search_modify_submit_parameters

* ErnadoO/ticket/14727:
  [ticket/14727] Event core.search_modify_submit_parameters
2016-09-01 16:23:50 +02:00
Marc Alexander
f008708d5c Merge pull request #4377 from rxu/ticket/14703
[ticket/14703] Fix parent module selection for custom extension modules
2016-08-31 21:39:09 +02:00
Tristan Darricau
d737430a03 Merge pull request #4422 from Crizz0/ticket/14673
[ticket/14673] Changes wrong language variable in mcp_forum

* Crizz0/ticket/14673:
  [ticket/14673] Changes wrong language variable in mcp_forum
2016-08-31 19:08:05 +02:00
Richard McGirr
b3e8eb9feb [ticket/14755] Fix subsilver2
PHPBB3-14755
2016-08-31 05:37:06 -04:00
RMcGirr83
bd0244180b [ticket/14755] Fix max length in mcp topic html file
Move posts does not accept a topic number greater than 999999
topic_id set in both posts table and topics table accepts 10 digits

https://tracker.phpbb.com/browse/PHPBB3-14755

PHPBB3-14755
2016-08-30 12:56:10 -04:00
Andreas Fischer
3ee5472a8c [ticket/14109] Increase MySQL Version for InnoDB FULLTEXT Index to 5.6.8.
This is required for proper overall database operation. In previous versions,
InnoDB might error on ALTER statements when multiple FULLTEXT Indexes are
 defined.

PHPBB3-14109
2016-08-28 20:40:10 +01:00
rxu
557f85e7fc [ticket/14703] Improve exception testing
PHPBB3-14703
2016-08-28 21:51:52 +07:00
Marc Alexander
a019a86bfc Merge pull request #4338 from Senky/ticket/14469
Add viewforum_body_topicrow_before template event
2016-08-28 15:53:30 +02:00
Marc Alexander
71a70500ea Merge pull request #4389 from kasimi/ticket/14715-3.1.x
[ticket/14715] Add template events in posting_topic_review & mcp_topic
2016-08-28 15:41:59 +02:00
Marc Alexander
863d65112b Merge pull request #3659 from Elsensee/ticket/12230
[ticket/12230] Disable newly registered group when post limit is set to 0
2016-08-28 00:12:43 +02:00
Crizzo
429ecb938c [ticket/14673] Changes wrong language variable in mcp_forum
PHPBB3-14673
2016-08-22 21:23:01 +02:00
Marc Alexander
a36f96aefa Merge pull request #4415 from Elsensee/ticket/14743
[ticket/14743] Remove PHP7 from travis tests in 3.1.x
2016-08-21 10:06:41 +02:00
Marc Alexander
b14043b276 Merge pull request #4411 from Senky/ticket/12925
[ticket/12925] Pluralize permanent delete checkbox label
2016-08-21 09:51:23 +02:00
Marc Alexander
6bcc372af5 Merge pull request #4419 from Elsensee/ticket/14742
[ticket/14742] Further improvements to migrator
2016-08-21 09:24:19 +02:00
Oliver Schramm
eccb3d6602 [ticket/13709] Add fallback for email templates used by extensions
Also add a fallback to english for the core
like we do it in $user->add_lang()

PHPBB3-13709
2016-08-21 05:21:25 +02:00
Oliver Schramm
773f6d08a5 [ticket/14742] Reset migration_data_state before reverting
PHPBB3-14742
2016-08-20 22:31:08 +02:00
Oliver Schramm
463e8e4b13 [ticket/14742] Change constants to use Symfony values
This is to avoid errors when comparing verbosity levels
in a CLI output handler that is using Symfony's OutputInterface
for example.

PHPBB3-14742
2016-08-20 22:28:29 +02:00
Oliver Schramm
7c99fcf782 [ticket/14742] Pause after each update_data step too
Rewriting process_data_step() to remove the now
useless foreach() loop.

PHPBB3-14742
2016-08-20 22:20:21 +02:00
Oliver Schramm
775d1c855a [ticket/14742] Improve readability of the code
PHPBB3-14742
2016-08-20 22:20:20 +02:00
Oliver Schramm
e050cf5c11 [ticket/14742] Fix comments in migrator
PHPBB3-14742
2016-08-20 03:35:38 +02:00
Oliver Schramm
bb11294b96 [ticket/14743] Remove PHP7 from travis tests
PHPBB3-14743
2016-08-17 17:57:48 +02:00
Marc Alexander
488fd8f54c Merge pull request #4413 from wesleyfok/ticket/14745
[ticket/14745] Removed unneeded HTML ampersand
2016-08-16 21:02:06 +02:00
Wesley Fok
f68e98c064 [ticket/14745] Removed unneeded HTML ampersand
Changed the HTML ampersand entity in U_NOTIFICATION_SETTINGS into a bare
ampersand character.

PHPBB3-14745
2016-08-15 15:20:23 -04:00
Jakub Senko
c016e09ca4 [ticket/12925] Pluralize permanent delete checkbox label
PHPBB3-12925
2016-08-15 18:27:33 +02:00
Marc Alexander
48696b5148 Merge pull request #4409 from Elsensee/ticket/14742
[ticket/14742] Improvements to migrator
2016-08-13 22:57:40 +02:00
Oliver Schramm
263fbe54fc [ticket/14742] Enhance measured time for migrations
PHPBB3-14742
2016-08-12 02:03:52 +02:00
Oliver Schramm
4a92a8efb5 [ticket/14742] Improve verbosity of migrator output
PHPBB3-14742
2016-08-12 02:01:01 +02:00
Oliver Schramm
c12d67cd90 [ticket/14742] Add test for (not) reverting if
PHPBB3-14742
2016-08-11 18:11:39 +02:00
Oliver Schramm
52afa74f4e [ticket/14742] Avoid loop while reverting schema
PHPBB3-14742
2016-08-11 18:00:10 +02:00
Oliver Schramm
b00a39b9ad [ticket/14742] Make $last_run_migration protected
PHPBB3-14742
2016-08-11 17:59:51 +02:00
Oliver Schramm
6078bae7f8 [ticket/14742] Fix schema update
First make it work, then avoid a loop

PHPBB3-14742
2016-08-11 13:31:23 +02:00
Jakub Senko
317f3e848f [ticket/14469] Add viewforum_body_topicrow_before template event
PHPBB3-14469
2016-08-11 10:25:51 +02:00
Oliver Schramm
2ee8bd0c4a [ticket/14742] Add test for reverse_update_data()
PHPBB3-14742
2016-08-11 01:12:43 +02:00
Oliver Schramm
a277f9cf07 [ticket/14742] Small fixes to migrator
PHPBB3-14742
2016-08-11 01:09:11 +02:00
Oliver Schramm
8e1461ca61 [ticket/14742] Avoid loop while reverting data
This combines reverted updata_data and revert_data into a single array.

PHPBB3-14742
2016-08-11 01:09:11 +02:00
Oliver Schramm
9fb649793d [ticket/14742] Pause after each schema change
It is certainly better than running them all at once

PHPBB3-14742
2016-08-11 01:03:23 +02:00
Richard McGirr
b74e811496 [ticket/14581] Add core events to content_visibility
Events added for both changing the content visibility for both posts and topics,
executing right before and after the SQL UPDATE query for setting the
visibillity.

https://tracker.phpbb.com/browse/PHPBB3-14581

PHPBB3-14581
2016-08-10 06:49:49 -04:00
David King
7e1e3e1a5e [ticket/14695] Add posting_editor_subject_append/prepend subsilver2 to events.md
As per request in PR.

PHPBB3-14695
2016-08-09 21:18:59 -04:00
David King
0771eaa732 [ticket/14695] Added posting_editor_subject_append/prepend events to subsilver
As per request in PR.

PHPBB3-14695
2016-08-09 21:16:33 -04:00
David King
1455be2260 [ticket/14695] Put posting_editor_subject_append/prepend events on newlines
As per request in the PR.

PHPBB3-14695
2016-08-09 21:14:03 -04:00
rxu
3bf64de247 [ticket/14738] Add core events to improve modifying forum lists
PHPBB3-14738
2016-08-07 16:10:49 +07:00
Marc Alexander
2dae36e3fb Merge pull request #4400 from Elsensee/ticket/14731
[ticket/14731] Skip composer when exporting old versions
2016-08-04 20:44:33 +02:00
Oliver Schramm
6fd507f60d [ticket/14731] Skip composer when exporting old versions
PHPBB3-14731
2016-08-04 04:29:01 +02:00
Marc Alexander
5330ea0f09 Merge pull request #4324 from Senky/ticket/14516
[ticket/14516] Add memberlist_email_before event
2016-08-03 22:20:48 +02:00
Wesley Fok
3038bf5eaf [ticket/14638] Rollback changes from 3.2.x version
Mistakenly brought in the modified 3.2.x version verbatim instead of diffing
against the 3.1.x version of ucp_main.php. Removed any changes I didn't
explicitly make.

PHPBB3-14638
2016-08-03 13:27:06 -04:00
Wesley Fok
ba13832085 Merge remote-tracking branch 'upstream/3.1.x' into ticket/14638-3.1.x 2016-08-03 13:20:42 -04:00
Wesley Fok
2081a78095 [ticket/14638] New UCP hooks for subscriptions
Adds various event hooks to the Manage subscriptions page of the User
Control Panel. core.ucp_subscribed_post_data allows us to handle
additional post data from the form that unwatches subscriptions.
core.ucp_main_subscribed_forums_modify_query,
core.ucp_main_topiclist_count_modify_query and
core.ucp_main_topiclist_modify_query all modify the queries used to get
the list of subscribed forums and subscribed/bookmarked topics.
core.ucp_main_subscribed_forum_modify_template_vars and
core.ucp_main_topiclist_topic_modify_template_vars modify the template
variable array associated with each subscribed forum and topic row.

This is a backport to 3.1.x of the code in PR #4318.

PHPBB3-14638
2016-08-03 13:18:43 -04:00
Marc Alexander
f68820762b Merge pull request #4397 from Elsensee/ticket/14721
[ticket/14721] Avoid renaming deleted users
2016-08-01 20:42:09 +02:00
Oliver Schramm
f222f8a84a [ticket/14721] Avoid renaming deleted users
PHPBB3-14721
2016-08-01 00:26:47 +02:00
Marc Alexander
d51c67440e [ticket/14484] Properly enable extensions in UI tests
PHPBB3-14484
2016-07-31 20:08:58 +02:00
Erwan Nader
0cc41be3c0 [ticket/14727] Event core.search_modify_submit_parameters
PHPBB3-14727
2016-07-31 16:46:20 +02:00
Marc Alexander
4ac2547d62 Merge pull request #4301 from 3D-I/PHPBB3-14596
[ticket/14596] Deny installation of Ascraeus under PHP 7
2016-07-31 15:18:35 +02:00
Marc Alexander
ef132e1531 [ticket/14484] Move facebook/webdriver back to tests dir composer.json
This will make sure we don't try to install it to incompatible PHP 5.3.3.

PHPBB3-14484
2016-07-31 11:23:59 +02:00
Andreas Fischer
55223e6840 Merge pull request #4336 from Senky/ticket/14652
Fix typos in core.index_modify_birthdays_list vars descriptions

* Senky/ticket/14652:
  [ticket/14652] Fix typos in core.index_modify_birthdays_list vars descriptions
2016-07-29 09:41:50 +02:00
Marc Alexander
29d2c66922 [ticket/14484] Move facebook webdriver to main composer.json
Also updated ui test case file to have same feature set as
the 3.2.x version.

PHPBB3-14484
2016-07-27 19:41:42 +02:00
Marc Alexander
941be83395 Merge pull request #4391 from VSEphpbb/ticket/14720
[ticket/14720] Add "phpbb" as allowed global to jshintrc
2016-07-24 19:15:48 +02:00
rxu
8e8e25cc1f [ticket/14703] Fix the docblock
PHPBB3-14703
2016-07-24 23:35:20 +07:00
Erwan Nader
e7289fa019 [ticket/14592] Fixed docblock from unit tests
PHPBB3-14592
2016-07-24 18:25:20 +02:00
Erwan Nader
5b501e594c [ticket/14592] Fixed syntax errors from unit tests
PHPBB3-14592
2016-07-24 18:10:45 +02:00
Erwan Nader
4eecc95a42 [ticket/14592] [PHP] core.search_backend_search_after
PHPBB3-14592
2016-07-24 17:46:23 +02:00
rxu
5eb493fa86 [ticket/14703] Fix existance checking if multiple parent module_langname found
PHPBB3-14703
2016-07-24 21:22:37 +07:00
Matt Friedman
43e0283fb1 [ticket/14720] Add "phpbb" as allowed global to jshintrc
PHPBB3-14720
2016-07-23 19:14:30 -07:00
rxu
8cf2790d55 [ticket/14703] Add test for the case multiple parent module_langname found
PHPBB3-14703
2016-07-24 02:31:44 +07:00
rxu
eaafb758ce [ticket/14703] Select the parent module id from the several found
PHPBB3-14703
2016-07-23 21:34:05 +07:00
kasimi
33cd613406 [ticket/14715] Converted tabs to spaces
PHPBB3-14715
2016-07-22 12:17:15 +02:00
kasimi
20e08aa2a0 [ticket/14715] Fixed typos in events.md
PHPBB3-14715
2016-07-21 17:49:35 +02:00
kasimi
da7c41f167 [ticket/14715] Add template events in posting_topic_review & mcp_topic
The events will allow adding content before and after the post details
in topic review and topic moderation.

PHPBB3-14715
2016-07-21 17:48:42 +02:00
Máté Bartus
ef91c6abed Merge pull request #4387 from marc1706/ticket/14538
[ticket/14538] Update symfony dependencies to latest versions
2016-07-19 19:00:47 +02:00
Marc Alexander
f3fe610a5e [ticket/14538] Update symfony dependencies to latest versions
PHPBB3-14538
2016-07-19 17:58:41 +02:00
3Di
0026ed02ae [ticket/14596] Deny installation of Ascraeus under PHP 7
PHPBB3-14596
2016-07-18 23:45:58 +02:00
Marc Alexander
befacabf7e Merge pull request #4365 from rxu/ticket/14688
[ticket/14688] Add core events to the feeds
2016-07-17 21:32:20 +02:00
Jakub Senko
775df0eb8a [ticket/14516] Add memberlist_email_before event
PHPBB3-14516
2016-07-17 20:43:40 +02:00
rxu
3df9b2c8f8 [ticket/14688] Add core events to the feeds
PHPBB3-14688
2016-07-17 21:14:13 +07:00
Marc Alexander
e8454e018d Merge pull request #4378 from Crizz0/ticket/14704
[ticket/14704] Removes unused function and language files in base.php
2016-07-17 15:57:21 +02:00
Marc Alexander
78a0d10a5a Merge pull request #4384 from rxu/ticket/14713
[ticket/14713] Add core event to the admin function get_forum_list()
2016-07-17 15:54:09 +02:00
Marc Alexander
960dc08946 Merge pull request #4383 from rxu/ticket/14712
[ticket/14712] Add search core event to allow modifying the forum select list
2016-07-17 15:52:33 +02:00
Marc Alexander
d0a5f87a44 Merge pull request #4364 from kinerity/ticket/14687
[ticket/14687] Modify viewforum_modify_topicrow event
2016-07-17 11:06:43 +02:00
Marc Alexander
a1ecb6db69 Merge pull request #4361 from kinerity/ticket/14685
[ticket/14685] Add viewforum_get_announcement_topic_ids_data event
2016-07-17 10:57:57 +02:00
Marc Alexander
63db42522b Merge pull request #4321 from Senky/ticket/14615
[ticket/14615] Fix HTML5 validation errors on avatar deletion
2016-07-17 10:46:44 +02:00
rxu
a840d70bbf [ticket/14713] Add core event to the admin function get_forum_list()
PHPBB3-14713
2016-07-17 12:40:21 +07:00
rxu
51952005eb [ticket/14712] Add search core event to allow modifying the forum select list
PHPBB3-14712
2016-07-17 12:09:15 +07:00
Marc Alexander
b54aa81cdd Merge pull request #4337 from Senky/ticket/14506
Add mcp_move_before template event
2016-07-16 21:24:33 +02:00
Marc Alexander
6f109dd1ef Merge pull request #4374 from TheKigen/ticket/14616
[ticket/14616] Fixed auto-prune failing on large forums
2016-07-16 19:49:25 +02:00
Marc Alexander
38082c41e3 Merge pull request #4347 from Senky/ticket/14631
[ticket/14631] Load truncate_string() if needed
2016-07-14 20:11:48 +02:00
rxu
652e3da28d [ticket/14703] Refine the parent module selection for custom extension modules
PHPBB3-14703
2016-07-10 21:47:04 +07:00
Andreas Fischer
927cc2ebad Merge pull request #4379 from marc1706/ticket/14689
[ticket/14689] Build API docs for 3.2.x

* marc1706/ticket/14689:
  [ticket/14689] Build API docs for 3.2.x
2016-07-08 14:12:34 +02:00
Marc Alexander
2ec4855cba [ticket/14689] Build API docs for 3.2.x
PHPBB3-14689
2016-07-07 19:25:26 +02:00
Marc Alexander
55b854906d Merge pull request #4342 from Senky/ticket/14654
[ticket/14654] Change Imagemagick to ImageMagick
2016-07-07 19:15:33 +02:00
Max Krivanek
1c52968df6 [ticket/14616] Switch prune limit to sql_query_limit instead of sql_and
PHPBB3-14616
2016-07-06 23:00:35 -05:00
Marc Alexander
cddb884be6 Merge pull request #4354 from Stanzilla/smtp_explain
[ticket/14184] Add a _EXPLAIN translation entry for the SMTP server option
2016-07-06 19:23:54 +02:00
Crizzo
53b9216c78 [ticket/14704] Removes unused function and language files in base.php
PHPBB3-14704
2016-07-03 14:22:08 +02:00
rxu
a3c10f575b [ticket/14703] Fix parent module selection for custom modules removal
PHPBB3-14703
2016-07-03 02:23:34 +07:00
rxu
2f53761eaf [ticket/14703] Fix parent module selection for custom extension modules
PHPBB3-14703
2016-07-03 01:31:42 +07:00
Max Krivanek
c4b93c9c1c [ticket/14616] Added comma expected by test scripts.
PHPBB3-14616
2016-07-01 04:09:42 -05:00
Max Krivanek
65a4f0d631 [ticket/14616] Added prune_limit to event core.prune_sql
PHPBB3-14616
2016-06-28 20:47:46 -05:00
Max Krivanek
9170261885 [ticket/14616] Removed misplaced tab.
PHPBB3-14616
2016-06-27 04:42:01 -05:00
Max Krivanek
f75a01182f [ticket/14616] Fixed auto-prune failing on large forums
PHPBB3-14616
2016-06-27 04:20:12 -05:00
David King
7f1c4cd205 [ticket/14695] Updated version number in events.md
PHPBB3-14695
2016-06-25 22:58:57 +01:00
David King
e4336de68d [ticket/14695] Add posting_editor_subject_prepend/append template events
PHPBB3-14695
2016-06-25 21:16:54 +01:00
Kailey Truscott
4653951673 [ticket/14687] Modify viewforum_modify_topicrow event
Add s_type_switch and s_type_switch_test to event vars.

PHPBB3-14687
2016-06-20 18:21:05 -04:00
Kailey Truscott
a19bf11f73 [ticket/14685] Add viewforum_get_announcement_topic_ids_data event
Create a new event to alter the SQL array of announcements.

PHPBB3-14685
2016-06-19 21:30:03 -04:00
Marc Alexander
9595946508 Merge pull request #4358 from rxu/ticket/14683
[ticket/14683] Fix typos in email templates.
2016-06-19 22:07:38 +02:00
rxu
773a701d62 [ticket/14683] Fix typos in email templates.
PHPBB3-14683
2016-06-20 00:15:37 +07:00
Marc Alexander
c60dbede3e Merge pull request #4281 from rmcgirr83/ticket_13716
[ticket/13716] Check phpBB version against config version
2016-06-19 18:17:33 +02:00
Marc Alexander
aaa99b4719 Merge pull request #4351 from rmcgirr83/ticket_14672
[ticket/14672] Add template event after topic title
2016-06-19 18:04:22 +02:00
Marc Alexander
804236bce4 Merge pull request #4331 from Senky/ticket/13978
[ticket/13978] Add core.ucp_profile_modify_signature_sql_ary
2016-06-19 17:53:23 +02:00
Marc Alexander
cf8c13b04c Merge pull request #4329 from Senky/ticket/14429
[ticket/14429] Add core.obtain_users_online_string_before_modify
2016-06-19 17:49:01 +02:00
Marc Alexander
83f737a30a Merge pull request #4328 from Senky/ticket/13865
[ticket/13865] Add id_ary, show_results to core.search_modify_param_before
2016-06-19 17:46:09 +02:00
Marc Alexander
6764bea40c Merge pull request #4316 from rmcgirr83/ticket_14630
[ticket/14630] Add event to modify pm message
2016-06-19 17:17:26 +02:00
Benjamin Staneck
3708770eb9 [ticket/14184] Add a _EXPLAIN translation entry for the SMTP server option
This should help users trying to figure out why their
mail config is not working when they forgot to use a protocol prefix.

PHPBB3-14184
2016-06-17 08:46:02 +02:00
Marc Alexander
8d3716ab91 Merge pull request #4352 from marc1706/ticket/14626
[ticket/14626] Event core.make_jumpbox_modify_tpl_ary
2016-06-13 22:08:14 +02:00
Tobi Schäfer
cff2895599 [ticket/14626] Event core.make_jumpbox_modify_tpl_ary
PHPBB3-14626
2016-06-13 21:11:54 +02:00
Tobi Schäfer
516670225d [ticket/14626] Event core.make_jumpbox_modify_tpl_ary
https://tracker.phpbb.com/browse/PHPBB3-14626

PHPBB3-14626
2016-06-13 21:10:13 +02:00
Tobi Schäfer
256730c76a [ticket/14626] Event core.make_jumpbox_modify_tpl_ary
PHPBB3-14626
2016-06-13 21:10:13 +02:00
Richard McGirr
e9cbb45435 [ticket/14672] Change event name add to events.md
PHPBB3-14672
2016-06-13 06:26:55 -04:00
Richard McGirr
2a53831124 [ticket/14672] Add template event after topic title
PHPBB3-14672
2016-06-12 10:37:49 -04:00
Jakub Senko
7dc1af25bc [ticket/14654] Change Imagemagick to ImageMagick
PHPBB3-14654
2016-06-11 21:32:16 +02:00
Andreas Fischer
d316927225 Merge pull request #4345 from marc1706/ticket/14291
[ticket/14291] Do not update filesize if displaying thumbnail

* marc1706/ticket/14291:
  [ticket/14291] Do not update filesize if displaying thumbnail
2016-06-11 13:45:27 +02:00
Marc Alexander
cf2b96def7 Merge pull request #4346 from lavigor/ticket/14661
[ticket/14661] Fix a typo in twig.php
2016-06-08 20:47:14 +02:00
Marc Alexander
9d88238f89 Merge pull request #4348 from lavigor/ticket/14664
[ticket/14664] Fix PHPDoc comment in cron manager
2016-06-08 20:32:25 +02:00
lavigor
b2141fd1a8 [ticket/14664] Fix PHPDoc comment in cron manager
PHPBB3-14664
2016-06-07 23:40:31 +03:00
Jakub Senko
4cf666f0bc [ticket/14631] Load truncate_string() if needed
PHPBB3-14631
2016-06-07 19:39:15 +02:00
lavigor
ff8b5058e0 [ticket/14661] Fix a typo in twig.php
PHPBB3-14661
2016-06-05 13:40:40 +03:00
Richard McGirr
08acf2acba [ticket/14630] Rename core event
PHPBB3-14630
2016-06-02 05:18:14 -04:00
Marc Alexander
b63c61d099 Merge pull request #4343 from Senky/ticket/14643
[ticket/14643] Offer latest backup to restore by default
2016-05-31 21:43:16 +02:00
Marc Alexander
72248cab45 [ticket/14291] Do not update filesize if displaying thumbnail
PHPBB3-14291
2016-05-30 20:05:45 +02:00
Jakub Senko
73073ac8c3 [ticket/14643] Offer latest backup to restore by default
PHPBB3-14643
2016-05-29 17:28:33 +02:00
Jakub Senko
9961aefa38 [ticket/14652] Fix typos in core.index_modify_birthdays_list vars descriptions
PHPBB3-14652
2016-05-29 11:42:32 +02:00
Jakub Senko
6350798e97 [ticket/14506] Add mcp_move_before template event
PHPBB3-14506
2016-05-29 11:41:54 +02:00
Marc Alexander
0a512b2695 Merge pull request #4173 from lavigor/ticket/14466
[ticket/14466] Add an event to cron.php
2016-05-28 09:59:47 +02:00
Marc Alexander
e30518461c Merge pull request #4332 from Senky/ticket/11446
[ticket/11446] Use sql_in_set properly in phpbb_notification_manager
2016-05-27 21:16:32 +02:00
Jakub Senko
10d96d4f33 [ticket/14429] Add core.modify_users_online_string_modify
PHPBB3-14429
2016-05-27 13:46:23 +02:00
Máté Bartus
191b80a750 Merge pull request #4335 from marc1706/ticket/14650
[ticket/14650] Move CONTRIBUTING.md and add pull request template
2016-05-27 13:27:26 +02:00
Jakub Senko
c103c42857 [ticket/11446] Make get_notification_type_ids work with string too
PHPBB3-11446
2016-05-27 12:59:30 +02:00
Marc Alexander
dcf90a8d8b [ticket/14650] Semi-colon instead of slash to make Matt happy
PHPBB3-14650
2016-05-26 18:46:34 +02:00
Marc Alexander
a8fb33218c [ticket/14650] Move CONTRIBUTING.md and add pull request template
PHPBB3-14650
2016-05-26 18:34:55 +02:00
Jakub Senko
e6e4c0e62d [ticket/13978] Add core.ucp_profile_modify_signature_sql_ary
PHPBB3-13978
2016-05-24 18:07:11 +02:00
Jakub Senko
7e6371ea8e [ticket/11446] Use sql_in_set properly in phpbb_notification_manager
PHPBB3-11446
2016-05-23 18:13:17 +02:00
Jakub Senko
c3fd07a5f0 [ticket/13865] Add id_ary, show_results to core.search_modify_param_before
PHPBB3-13865
2016-05-22 14:26:01 +02:00
Oliver Schramm
559325fbd6 [ticket/12230] Remove users from new users group when post limit is 0
PHPBB3-12230
2016-05-17 16:56:42 +02:00
Richard McGirr
0d7625c534 [ticket/13716] Remove extra br tag and correct missing closing a html tag
PHPBB3-13716
2016-05-16 18:01:55 -04:00
Richard McGirr
06507f9fa6 [ticket/14630] Change event name and fix capitalization
PHPBB3-14630
2016-05-16 17:57:26 -04:00
Jakub Senko
9ca3cd519a [ticket/14615] Fix HTML5 validation errors on avatar deletion
PHPBB3-14615
2016-05-16 22:21:31 +02:00
Marc Alexander
e7262e2d39 Merge pull request #4314 from rmcgirr83/ticket_14624
[ticket/14624] Add event to ucp_profile in signature section
2016-05-15 23:52:37 +02:00
Marc Alexander
734972cc3d Merge pull request #4317 from rmcgirr83/ticket_14610
[ticket/14610] Don't log an error if the Q&A captcha has been solved
2016-05-12 19:15:58 +02:00
Richard McGirr
03348087d8 [ticket/14610] Implement lavigor method
PHPBB3-14610
2016-05-09 17:28:55 -04:00
Richard McGirr
f57f09f814 [ticket/14610] Remove whitespace
PHPBB3-14610
2016-05-08 09:24:11 -04:00
Richard McGirr
3572f4c92e [ticket/14610] Don't log an error if the Q&A captcha has been solved
https://tracker.phpbb.com/browse/PHPBB3-14610

PHPBB3-14610
2016-05-08 08:50:06 -04:00
Richard McGirr
c7bbcd7b84 [ticket/14630] Add event to modify pm message
https://tracker.phpbb.com/browse/PHPBB3-14630

PHPBB3-14630
2016-05-06 06:31:35 -04:00
Richard McGirr
c0f3463819 [ticket/14624] Remove whitespace
PHPBB3-14624
2016-05-05 06:42:28 -04:00
Richard McGirr
c3b30144e3 [ticket/14624] Fix typo and phpBB version
PHPBB3-14624
2016-05-05 06:10:56 -04:00
Richard McGirr
aa3c5286cd [ticket/14624] Move event so it actually works
PHPBB3-14624
2016-05-05 06:09:11 -04:00
Richard McGirr
8e1102b1da [ticket/14624] Add event to ucp_profile in signature section
PHPBB3-14624
2016-05-05 05:26:19 -04:00
3Di
269e253524 [ticket/14596] Deny installation of Ascraeus under PHP 7
PHPBB3-14596
2016-04-23 07:11:34 +02:00
Joas Schilling
4cdec74e94 Merge branch 'prep-release-3.1.9' into 3.1.x 2016-04-16 12:48:56 +02:00
Máté Bartus
ed378a2ec3 Merge pull request #4287 from Nicofuma/ticket/14598
[ticket/14598] Support vars docblock in sniffer
2016-04-13 10:18:34 +02:00
Tristan Darricau
96bdcedacd [ticket/14598] Support vars docblock in sniffer
PHPBB3-14598
2016-04-12 22:26:57 +02:00
Richard McGirr
c938077172 [ticket/13716] Fix verboseness
PHPBB3-13716
2016-04-12 05:17:02 -04:00
Joas Schilling
58dfff38fa [3.1.x] Increase version for 3.1.10 development 2016-04-09 19:50:00 +02:00
Joas Schilling
c4ef83e4d2 Merge branch 'prep-release-3.1.9' into 3.1.x 2016-04-09 19:48:35 +02:00
Richard McGirr
e80f79fc9a [ticket/13716] Fix grammar and href title tags
PHPBB3-13716
2016-04-06 06:18:26 -04:00
RMcGirr83
920219dc56 [ticket/13716] Remove extraneous blank line
PHPBB3-13716
2016-04-05 14:55:42 -04:00
Richard McGirr
04f320cb01 [ticket/13716] Check phpBB version against config version
Display a warning in the ACP if the version constant (files)
does not match the phpbb_config version
(often indicating that the database updates hasn't been run)

PHPBB3-13716
2016-04-05 07:09:12 -04:00
lavigor
ebe5eb8342 [ticket/14466] Fix class name in PHPDoc comment.
PHPBB3-14466
2016-03-25 23:16:49 +03:00
lavigor
3479f95090 [ticket/14466] Add an event to cron.php
PHPBB3-14466
2016-02-07 16:50:17 +03:00
117 changed files with 2325 additions and 1032 deletions

10
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,10 @@
Checklist:
- [ ] Correct branch: master for new features; 3.2.x, 3.1.x for fixes
- [ ] Tests pass
- [ ] Code follows coding guidelines: [master / 3.2.x](https://area51.phpbb.com/docs/master/coding-guidelines.html), [3.1.x](https://area51.phpbb.com/docs/31x/coding-guidelines.html)
- [ ] Commit follows commit message [format](https://wiki.phpbb.com/Git#Commit_Messages)
Tracker ticket (set the ticket ID to **your ticket ID**):
https://tracker.phpbb.com/browse/PHPBB3-12345

View File

@@ -19,6 +19,7 @@
"jquery": true,
"globals": {
"JSON": true
"JSON": true,
"phpbb": true
}
}

View File

@@ -22,12 +22,9 @@ matrix:
env: DB=mysqli
- php: 5.6
env: DB=mysqli
- php: 7.0
env: DB=mysqli
- php: hhvm
env: DB=mysqli
allow_failures:
- php: 7.0
- php: hhvm
fast_finish: true

View File

@@ -2,9 +2,9 @@
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build -->
<property name="newversion" value="3.1.9" />
<property name="prevversion" value="3.1.8" />
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.9-RC1" />
<property name="newversion" value="3.1.10-RC1" />
<property name="prevversion" value="3.1.9" />
<property name="olderversions" value="3.0.14, 3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />
@@ -49,7 +49,7 @@
-->
<target name="composer">
<exec dir="phpBB"
command="php ../composer.phar install --dev"
command="php ../composer.phar install"
checkreturn="true"
passthru="true" />
</target>
@@ -143,6 +143,7 @@
<phingcall target="export">
<property name="revision" value="release-${version}" />
<property name="dir" value="build/old_versions/release-${version}" />
<property name="skip-composer" value="true" />
</phingcall>
<phingcall target="clean-diff-dir">
@@ -251,26 +252,35 @@
<equals arg1="${composer-has-dependencies}" arg2="1" trim="true" />
<then>
<!-- We have non-dev composer dependencies -->
<exec dir="."
command="git ls-tree ${revision} composer.phar"
checkreturn="true"
outputProperty='composer-ls-tree-output' />
<if>
<equals arg1="${composer-ls-tree-output}" arg2="" trim="true" />
<not><isset property="skip-composer" /></not>
<then>
<fail message="There are composer dependencies, but composer.phar is missing." />
</then>
<else>
<!-- Export the phar, install dependencies, delete phar. -->
<exec dir="."
command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
checkreturn="true" />
<exec dir="${dir}"
command="php composer.phar install --no-dev --optimize-autoloader"
command="git ls-tree ${revision} composer.phar"
checkreturn="true"
passthru="true" />
<delete file="${dir}/composer.phar" />
</else>
outputProperty='composer-ls-tree-output' />
<if>
<equals arg1="${composer-ls-tree-output}" arg2="" trim="true" />
<then>
<fail message="There are composer dependencies, but composer.phar is missing." />
</then>
<else>
<!-- Export the phar, install dependencies, delete phar. -->
<exec dir="."
command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
checkreturn="true" />
<exec dir="${dir}"
command="php composer.phar install --no-dev --optimize-autoloader"
checkreturn="true"
passthru="true" />
<delete file="${dir}/composer.phar" />
<phingcall target="clean-vendor-dir">
<property name="dir" value="${dir}" />
</phingcall>
</else>
</if>
</then>
</if>
</then>
<else>
@@ -287,10 +297,6 @@
<delete dir="${dir}/develop" />
<delete dir="${dir}/install/data" />
<phingcall target="clean-vendor-dir">
<property name="dir" value="${dir}" />
</phingcall>
<echo msg="Setting permissions for checkout of ${revision} in ${dir}" />
<!-- set permissions of all files to 644, directories to 755 -->
<exec dir="${dir}" command="find . -type f|xargs chmod 644" escape="false" />
@@ -307,6 +313,7 @@
<delete dir="${dir}/vendor/lusitanian/oauth/examples" />
<delete dir="${dir}/vendor/lusitanian/oauth/tests" />
<delete file="${dir}/vendor/lusitanian/oauth/.gitignore" />
<delete file="${dir}/vendor/lusitanian/oauth/.scrutinizer.yml" />
<delete file="${dir}/vendor/lusitanian/oauth/.travis.yml" />
<delete file="${dir}/vendor/lusitanian/oauth/phpunit.xml.dist" />
<delete file="${dir}/vendor/lusitanian/oauth/README.md" />
@@ -381,10 +388,9 @@
<delete file="${dir}/vendor/twig/twig/.editorconfig" />
<delete file="${dir}/vendor/twig/twig/.gitignore" />
<delete file="${dir}/vendor/twig/twig/.travis.yml" />
<delete file="${dir}/vendor/twig/twig/AUTHORS" />
<delete file="${dir}/vendor/twig/twig/CHANGELOG" />
<delete file="${dir}/vendor/twig/twig/phpunit.xml.dist" />
<delete file="${dir}/vendor/twig/twig/README.markdown" />
<delete file="${dir}/vendor/twig/twig/README.rst" />
</target>
<target name="clean-diff-dir">

View File

@@ -129,53 +129,19 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
}
}
$old_docblock = $stackPtr;
while (($docblock = $phpcsFile->findNext(T_DOC_COMMENT_CLOSE_TAG, ($old_docblock + 1))) !== false)
{
$old_docblock = $docblock;
$ok = $this->checkDocblock($phpcsFile, $docblock, $tokens, $class_name_full, $class_name_short) ? true : $ok;
}
// Checks in type hinting
$old_function_declaration = $stackPtr;
while (($function_declaration = $phpcsFile->findNext(T_FUNCTION, ($old_function_declaration + 1))) !== false)
{
$old_function_declaration = $function_declaration;
// Check docblocks
$find = array(
T_COMMENT,
T_DOC_COMMENT_CLOSE_TAG,
T_DOC_COMMENT,
T_CLASS,
T_FUNCTION,
T_OPEN_TAG,
);
$comment_end = $phpcsFile->findPrevious($find, ($function_declaration - 1));
if ($comment_end !== false)
{
if ($tokens[$comment_end]['code'] === T_DOC_COMMENT_CLOSE_TAG)
{
$comment_start = $tokens[$comment_end]['comment_opener'];
foreach ($tokens[$comment_start]['comment_tags'] as $tag) {
if ($tokens[$tag]['content'] !== '@param' && $tokens[$tag]['content'] !== '@return' && $tokens[$tag]['content'] !== '@throws') {
continue;
}
$classes = $tokens[($tag + 2)]['content'];
$space = strpos($classes, ' ');
if ($space !== false) {
$classes = substr($classes, 0, $space);
}
$tab = strpos($classes, "\t");
if ($tab !== false) {
$classes = substr($classes, 0, $tab);
}
$classes = explode('|', str_replace('[]', '', $classes));
foreach ($classes as $class)
{
$ok = $this->check($phpcsFile, $class, $class_name_full, $class_name_short, $tokens[$tag + 2]['line']) ? true : $ok;
}
}
}
}
// Check type hint
$params = $phpcsFile->getMethodParameters($function_declaration);
foreach ($params as $param)
@@ -234,4 +200,49 @@ class phpbb_Sniffs_Namespaces_UnusedUseSniff implements PHP_CodeSniffer_Sniff
return false;
}
/**
* @param PHP_CodeSniffer_File $phpcsFile
* @param int $field
* @param array $tokens
* @param string $class_name_full
* @param string $class_name_short
* @param bool $ok
*
* @return bool
*/
private function checkDocblock(PHP_CodeSniffer_File $phpcsFile, $comment_end, $tokens, $class_name_full, $class_name_short)
{
$ok = false;
$comment_start = $tokens[$comment_end]['comment_opener'];
foreach ($tokens[$comment_start]['comment_tags'] as $tag)
{
if (!in_array($tokens[$tag]['content'], array('@param', '@var', '@return', '@throws'), true))
{
continue;
}
$classes = $tokens[($tag + 2)]['content'];
$space = strpos($classes, ' ');
if ($space !== false)
{
$classes = substr($classes, 0, $space);
}
$tab = strpos($classes, "\t");
if ($tab !== false)
{
$classes = substr($classes, 0, $tab);
}
$classes = explode('|', str_replace('[]', '', $classes));
foreach ($classes as $class)
{
$ok = $this->check($phpcsFile, $class, $class_name_full, $class_name_short, $tokens[$tag + 2]['line']) ? true : $ok;
}
}
return $ok;
}
}

View File

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

View File

@@ -14,7 +14,7 @@
<legend>{L_RESTORE_OPTIONS}</legend>
<dl>
<dt><label for="file">{L_SELECT_FILE}{L_COLON}</label></dt>
<dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_LAST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd>
<dd><select id="file" name="file" size="10"><!-- BEGIN files --><option value="{files.FILE}"<!-- IF files.S_FIRST_ROW --> selected="selected"<!-- ENDIF -->>{files.NAME}</option><!-- END files --></select></dd>
</dl>
<p class="submit-buttons">

View File

@@ -14,7 +14,11 @@
<p>{L_ADMIN_INTRO}</p>
<!-- IF S_VERSIONCHECK_FAIL -->
<!-- IF S_UPDATE_INCOMPLETE -->
<div class="errorbox">
<p>{L_UPDATE_INCOMPLETE} <a href="{U_VERSIONCHECK}">{L_MORE_INFORMATION}</a></p>
</div>
<!-- ELSEIF S_VERSIONCHECK_FAIL -->
<div class="errorbox notice">
<p>{L_VERSIONCHECK_FAIL}</p>
<p>{VERSIONCHECK_FAIL_REASON}</p>

View File

@@ -63,6 +63,7 @@
<!-- ENDIF -->
<!-- ENDIF -->
</select>
<!-- EVENT acp_posting_buttons_custom_tags_before -->
<!-- BEGIN custom_tags -->
<input type="button" class="button2" name="addbbcode{custom_tags.BBCODE_ID}" value="{custom_tags.BBCODE_TAG}" onclick="bbstyle({custom_tags.BBCODE_ID})" title="{custom_tags.BBCODE_HELPLINE}" />
<!-- END custom_tags -->

View File

@@ -6,11 +6,16 @@
<p>{L_VERSION_CHECK_EXPLAIN}</p>
<!-- IF S_UPDATE_INCOMPLETE -->
<div class="errorbox">
<p>{L_UPDATE_INCOMPLETE} {L_UPDATE_INCOMPLETE_MORE}</p>
</div>
<!-- ENDIF -->
<!-- IF S_UP_TO_DATE -->
<div class="successbox">
<p>{L_VERSION_UP_TO_DATE_ACP} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
</div>
<!-- ELSE -->
<!-- ELSEIF not S_UPDATE_INCOMPLETE -->
<div class="errorbox">
<p>{L_VERSION_NOT_UP_TO_DATE_ACP} - <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE}</a></p>
</div>
@@ -18,10 +23,21 @@
<fieldset>
<legend></legend>
<!-- IF not S_UPDATE_INCOMPLETE -->
<dl>
<dt><label>{L_CURRENT_VERSION}</label></dt>
<dd><strong>{CURRENT_VERSION}</strong></dd>
</dl>
<!-- ELSE -->
<dl>
<dt><label>{L_FILES_VERSION}</label></dt>
<dd><strong>{FILES_VERSION}</strong></dd>
</dl>
<dl>
<dt><label>{L_DATABASE_VERSION}</label></dt>
<dd><strong>{CURRENT_VERSION}</strong></dd>
</dl>
<!-- ENDIF -->
</fieldset>
<!-- BEGIN updates_available -->
@@ -38,6 +54,11 @@
</fieldset>
<!-- END updates_available -->
<!-- IF S_UPDATE_INCOMPLETE -->
{INCOMPLETE_INSTRUCTIONS}
<br>
<!-- ENDIF -->
<!-- IF not S_UP_TO_DATE -->
{UPDATE_INSTRUCTIONS}
<br /><br />

206
phpBB/composer.lock generated
View File

@@ -1,10 +1,11 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "33fa9de480a8a9c8f7e3f2926cd4c034",
"content-hash": "2d9c1857e65554ceb4cfa435495df188",
"packages": [
{
"name": "lusitanian/oauth",
@@ -109,17 +110,17 @@
},
{
"name": "symfony/config",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Config",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
"reference": "1324aed10a750ed5a0446a71d95e321bf5d3bd24"
"reference": "16a645cef1c09ebfc907d3c9b3e9f5836a7d4d3b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/config/zipball/1324aed10a750ed5a0446a71d95e321bf5d3bd24",
"reference": "1324aed10a750ed5a0446a71d95e321bf5d3bd24",
"url": "https://api.github.com/repos/symfony/config/zipball/16a645cef1c09ebfc907d3c9b3e9f5836a7d4d3b",
"reference": "16a645cef1c09ebfc907d3c9b3e9f5836a7d4d3b",
"shasum": ""
},
"require": {
@@ -156,21 +157,21 @@
],
"description": "Symfony Config Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 07:12:06"
"time": "2016-05-30 08:14:41"
},
{
"name": "symfony/console",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Console",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "cc386594e19024e53e81ee7b6d6c37c221864c4e"
"reference": "20c12c6d6c5a087a66d4e77999451713a92a3507"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/cc386594e19024e53e81ee7b6d6c37c221864c4e",
"reference": "cc386594e19024e53e81ee7b6d6c37c221864c4e",
"url": "https://api.github.com/repos/symfony/console/zipball/20c12c6d6c5a087a66d4e77999451713a92a3507",
"reference": "20c12c6d6c5a087a66d4e77999451713a92a3507",
"shasum": ""
},
"require": {
@@ -212,21 +213,21 @@
],
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 09:20:54"
"time": "2016-05-26 08:04:58"
},
{
"name": "symfony/debug",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Debug",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
"reference": "a6f7b78e406658897f689fa8b00a06205446bebd"
"reference": "863d29c31a1ddfcf1faedf5f8362f392e3261632"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/debug/zipball/a6f7b78e406658897f689fa8b00a06205446bebd",
"reference": "a6f7b78e406658897f689fa8b00a06205446bebd",
"url": "https://api.github.com/repos/symfony/debug/zipball/863d29c31a1ddfcf1faedf5f8362f392e3261632",
"reference": "863d29c31a1ddfcf1faedf5f8362f392e3261632",
"shasum": ""
},
"require": {
@@ -274,21 +275,21 @@
],
"description": "Symfony Debug Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 13:04:09"
"time": "2016-03-30 09:02:35"
},
{
"name": "symfony/dependency-injection",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/DependencyInjection",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
"reference": "7cbda8ce5b5e4bd865401cf243070708e1f9a5e6"
"reference": "06265ee128644eb70356bd72ab28c9ded6618d19"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/7cbda8ce5b5e4bd865401cf243070708e1f9a5e6",
"reference": "7cbda8ce5b5e4bd865401cf243070708e1f9a5e6",
"url": "https://api.github.com/repos/symfony/dependency-injection/zipball/06265ee128644eb70356bd72ab28c9ded6618d19",
"reference": "06265ee128644eb70356bd72ab28c9ded6618d19",
"shasum": ""
},
"require": {
@@ -333,21 +334,21 @@
],
"description": "Symfony DependencyInjection Component",
"homepage": "https://symfony.com",
"time": "2016-03-08 16:58:37"
"time": "2016-05-30 08:31:06"
},
{
"name": "symfony/event-dispatcher",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/EventDispatcher",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
"reference": "b2d9d812e21d6e00983061d49ee61a82f54cace7"
"reference": "fd6d162d97bf3e6060622e5c015af39ca72e33bc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b2d9d812e21d6e00983061d49ee61a82f54cace7",
"reference": "b2d9d812e21d6e00983061d49ee61a82f54cace7",
"url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fd6d162d97bf3e6060622e5c015af39ca72e33bc",
"reference": "fd6d162d97bf3e6060622e5c015af39ca72e33bc",
"shasum": ""
},
"require": {
@@ -390,21 +391,21 @@
],
"description": "Symfony EventDispatcher Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 07:12:06"
"time": "2016-04-04 09:22:54"
},
{
"name": "symfony/filesystem",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Filesystem",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "56f6725f520a357e19deaef6558c3d223046b843"
"reference": "8fd9cd1da0afe63f0d9d4f27875782a2b7d590d3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/56f6725f520a357e19deaef6558c3d223046b843",
"reference": "56f6725f520a357e19deaef6558c3d223046b843",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/8fd9cd1da0afe63f0d9d4f27875782a2b7d590d3",
"reference": "8fd9cd1da0afe63f0d9d4f27875782a2b7d590d3",
"shasum": ""
},
"require": {
@@ -440,21 +441,21 @@
],
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"time": "2016-03-10 16:50:02"
"time": "2016-04-12 15:20:10"
},
{
"name": "symfony/http-foundation",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/HttpFoundation",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
"reference": "f5cd42d4895d9ede5d26cb1b2883dd4f7e455a40"
"reference": "9f4dbb1f3e3cad22d9462e0306c9c71212458f61"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/f5cd42d4895d9ede5d26cb1b2883dd4f7e455a40",
"reference": "f5cd42d4895d9ede5d26cb1b2883dd4f7e455a40",
"url": "https://api.github.com/repos/symfony/http-foundation/zipball/9f4dbb1f3e3cad22d9462e0306c9c71212458f61",
"reference": "9f4dbb1f3e3cad22d9462e0306c9c71212458f61",
"shasum": ""
},
"require": {
@@ -494,21 +495,21 @@
],
"description": "Symfony HttpFoundation Component",
"homepage": "https://symfony.com",
"time": "2016-03-12 16:03:08"
"time": "2016-05-13 15:22:39"
},
{
"name": "symfony/http-kernel",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/HttpKernel",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
"reference": "a704146970a1ff261c05e865b636bcc5d95f1b5b"
"reference": "57e0329236e8edf2b0e683043c604f7c9aba9398"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/a704146970a1ff261c05e865b636bcc5d95f1b5b",
"reference": "a704146970a1ff261c05e865b636bcc5d95f1b5b",
"url": "https://api.github.com/repos/symfony/http-kernel/zipball/57e0329236e8edf2b0e683043c604f7c9aba9398",
"reference": "57e0329236e8edf2b0e683043c604f7c9aba9398",
"shasum": ""
},
"require": {
@@ -570,20 +571,20 @@
],
"description": "Symfony HttpKernel Component",
"homepage": "https://symfony.com",
"time": "2016-03-13 16:38:02"
"time": "2016-05-30 08:41:10"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.1.1",
"version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "1289d16209491b584839022f29257ad859b8532d"
"reference": "dff51f72b0706335131b00a7f49606168c582594"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/1289d16209491b584839022f29257ad859b8532d",
"reference": "1289d16209491b584839022f29257ad859b8532d",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594",
"reference": "dff51f72b0706335131b00a7f49606168c582594",
"shasum": ""
},
"require": {
@@ -595,7 +596,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
"dev-master": "1.2-dev"
}
},
"autoload": {
@@ -629,21 +630,21 @@
"portable",
"shim"
],
"time": "2016-01-20 09:13:37"
"time": "2016-05-18 14:26:46"
},
{
"name": "symfony/routing",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Routing",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
"reference": "9f464f27cb127232f5c32d5a736fe769e5249442"
"reference": "5b8a2bb7569df81401171829498809e90d6e446c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/routing/zipball/9f464f27cb127232f5c32d5a736fe769e5249442",
"reference": "9f464f27cb127232f5c32d5a736fe769e5249442",
"url": "https://api.github.com/repos/symfony/routing/zipball/5b8a2bb7569df81401171829498809e90d6e446c",
"reference": "5b8a2bb7569df81401171829498809e90d6e446c",
"shasum": ""
},
"require": {
@@ -691,21 +692,21 @@
],
"description": "Symfony Routing Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 07:12:06"
"time": "2016-05-29 10:13:06"
},
{
"name": "symfony/yaml",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "d5a6f4c771ae5d3faedda30eeb8db4cfb40a59fe"
"reference": "2cb5f366f9e0df014fc93de46cc416ba0a3055f8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/d5a6f4c771ae5d3faedda30eeb8db4cfb40a59fe",
"reference": "d5a6f4c771ae5d3faedda30eeb8db4cfb40a59fe",
"url": "https://api.github.com/repos/symfony/yaml/zipball/2cb5f366f9e0df014fc93de46cc416ba0a3055f8",
"reference": "2cb5f366f9e0df014fc93de46cc416ba0a3055f8",
"shasum": ""
},
"require": {
@@ -741,20 +742,20 @@
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 07:12:08"
"time": "2016-05-30 08:10:17"
},
{
"name": "twig/twig",
"version": "v1.24.0",
"version": "v1.24.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
"reference": "3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8"
"reference": "3566d311a92aae4deec6e48682dc5a4528c4a512"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8",
"reference": "3e5aa30ebfbafd5951fb1b01e338e1800ce7e0e8",
"url": "https://api.github.com/repos/twigphp/Twig/zipball/3566d311a92aae4deec6e48682dc5a4528c4a512",
"reference": "3566d311a92aae4deec6e48682dc5a4528c4a512",
"shasum": ""
},
"require": {
@@ -802,7 +803,7 @@
"keywords": [
"templating"
],
"time": "2016-01-25 21:22:18"
"time": "2016-05-30 09:11:59"
}
],
"packages-dev": [
@@ -1421,21 +1422,24 @@
},
{
"name": "phpunit/php-timer",
"version": "1.0.7",
"version": "1.0.8",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b"
"reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
"reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260",
"reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"require-dev": {
"phpunit/phpunit": "~4|~5"
},
"type": "library",
"autoload": {
"classmap": [
@@ -1458,7 +1462,7 @@
"keywords": [
"timer"
],
"time": "2015-06-21 08:01:12"
"time": "2016-05-12 18:03:57"
},
{
"name": "phpunit/php-token-stream",
@@ -1863,16 +1867,16 @@
},
{
"name": "sebastian/environment",
"version": "1.3.5",
"version": "1.3.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf"
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf",
"reference": "dc7a29032cf72b54f36dac15a1ca5b3a1b6029bf",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716",
"shasum": ""
},
"require": {
@@ -1909,20 +1913,20 @@
"environment",
"hhvm"
],
"time": "2016-02-26 18:40:46"
"time": "2016-05-17 03:18:57"
},
{
"name": "sebastian/exporter",
"version": "1.2.1",
"version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
"reference": "7ae5513327cb536431847bcc0c10edba2701064e"
"reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/7ae5513327cb536431847bcc0c10edba2701064e",
"reference": "7ae5513327cb536431847bcc0c10edba2701064e",
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
"reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
"shasum": ""
},
"require": {
@@ -1930,12 +1934,13 @@
"sebastian/recursion-context": "~1.0"
},
"require-dev": {
"ext-mbstring": "*",
"phpunit/phpunit": "~4.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2.x-dev"
"dev-master": "1.3.x-dev"
}
},
"autoload": {
@@ -1975,7 +1980,7 @@
"export",
"exporter"
],
"time": "2015-06-21 07:55:53"
"time": "2016-06-17 09:04:28"
},
{
"name": "sebastian/recursion-context",
@@ -2067,19 +2072,20 @@
},
{
"name": "squizlabs/php_codesniffer",
"version": "2.5.1",
"version": "2.6.2",
"source": {
"type": "git",
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
"reference": "6731851d6aaf1d0d6c58feff1065227b7fda3ba8"
"reference": "4edb770cb853def6e60c93abb088ad5ac2010c83"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6731851d6aaf1d0d6c58feff1065227b7fda3ba8",
"reference": "6731851d6aaf1d0d6c58feff1065227b7fda3ba8",
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/4edb770cb853def6e60c93abb088ad5ac2010c83",
"reference": "4edb770cb853def6e60c93abb088ad5ac2010c83",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
"php": ">=5.1.2"
@@ -2140,11 +2146,11 @@
"phpcs",
"standards"
],
"time": "2016-01-19 23:39:10"
"time": "2016-07-13 23:29:13"
},
{
"name": "symfony/browser-kit",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/BrowserKit",
"source": {
"type": "git",
@@ -2202,7 +2208,7 @@
},
{
"name": "symfony/css-selector",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/CssSelector",
"source": {
"type": "git",
@@ -2256,17 +2262,17 @@
},
{
"name": "symfony/dom-crawler",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/DomCrawler",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
"reference": "507dca599566359a4489aa732612347ff65b9a51"
"reference": "b1a52aeafe4dd31914c75e72fc9b9ca3a3e5981d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/507dca599566359a4489aa732612347ff65b9a51",
"reference": "507dca599566359a4489aa732612347ff65b9a51",
"url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b1a52aeafe4dd31914c75e72fc9b9ca3a3e5981d",
"reference": "b1a52aeafe4dd31914c75e72fc9b9ca3a3e5981d",
"shasum": ""
},
"require": {
@@ -2308,21 +2314,21 @@
],
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 07:12:08"
"time": "2016-04-06 13:13:46"
},
{
"name": "symfony/finder",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Finder",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
"reference": "24cbc57da78ef7d05250c657b18b1ddcb1298bdf"
"reference": "dce4b58434fc1cbd66e3006e539bb53074dfea82"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/finder/zipball/24cbc57da78ef7d05250c657b18b1ddcb1298bdf",
"reference": "24cbc57da78ef7d05250c657b18b1ddcb1298bdf",
"url": "https://api.github.com/repos/symfony/finder/zipball/dce4b58434fc1cbd66e3006e539bb53074dfea82",
"reference": "dce4b58434fc1cbd66e3006e539bb53074dfea82",
"shasum": ""
},
"require": {
@@ -2358,21 +2364,21 @@
],
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"time": "2016-03-09 12:50:31"
"time": "2016-05-13 14:58:35"
},
{
"name": "symfony/process",
"version": "v2.3.39",
"version": "v2.3.42",
"target-dir": "Symfony/Component/Process",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
"reference": "12b5d095f70d2dd706c181e51106005e008e5ca8"
"reference": "89aced1438655ad81fc828c2e2e555e9b88fef3b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/process/zipball/12b5d095f70d2dd706c181e51106005e008e5ca8",
"reference": "12b5d095f70d2dd706c181e51106005e008e5ca8",
"url": "https://api.github.com/repos/symfony/process/zipball/89aced1438655ad81fc828c2e2e555e9b88fef3b",
"reference": "89aced1438655ad81fc828c2e2e555e9b88fef3b",
"shasum": ""
},
"require": {
@@ -2408,7 +2414,7 @@
],
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"time": "2016-03-04 07:12:06"
"time": "2016-03-31 08:39:43"
}
],
"aliases": [],

View File

@@ -25,6 +25,7 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%
feed.forums:
@@ -38,6 +39,7 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%
feed.news:
@@ -51,6 +53,7 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%
feed.overall:
@@ -64,6 +67,7 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%
feed.topic:
@@ -77,6 +81,7 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%
feed.topics:
@@ -90,6 +95,7 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%
feed.topics_active:
@@ -103,4 +109,5 @@ services:
- @user
- @auth
- @content.visibility
- @dispatcher
- %core.php_ext%

View File

@@ -55,6 +55,18 @@ if ($cron_lock->acquire())
$task = $cron->find_task($cron_type);
if ($task)
{
/**
* This event enables you to catch the task before it runs
*
* @event core.cron_run_before
* @var \phpbb\cron\task\wrapper task Current Cron task
* @since 3.1.8-RC1
*/
$vars = array(
'task',
);
extract($phpbb_dispatcher->trigger_event('core.cron_run_before', compact($vars)));
if ($task->is_parametrized())
{
$task->parse_parameters($request);

View File

@@ -50,6 +50,7 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<li><a href="#v319">Changes since 3.1.9</a></li>
<li><a href="#v318">Changes since 3.1.8</a></li>
<li><a href="#v317pl1">Changes since 3.1.7-PL1</a></li>
<li><a href="#v317">Changes since 3.1.7</a></li>
@@ -118,7 +119,88 @@
<div class="content">
<a name="v318"></a><h3>Changes since 3.1.8</h3>
<a name="v319"></a><h3>Changes since 3.1.9</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-11446">PHPBB3-11446</a>] - Use sql_in_set as designed and consistent with the rest of phpBB code in phpbb_notification_manager</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12230">PHPBB3-12230</a>] - Do not auto remove user group when Newly Registered Users group was disabled</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12925">PHPBB3-12925</a>] - Use plural for permanent delete posts/topics confirmation</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14109">PHPBB3-14109</a>] - MySQL InnoDB does not support multiple index definitions on the same query.</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14291">PHPBB3-14291</a>] - Function send_file_to_browser() endlessly overwrites 'filesize' in ATTACHMENTS_TABLE</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14610">PHPBB3-14610</a>] - Q&amp;A CAPTCHA logs error when it has been solved</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14615">PHPBB3-14615</a>] - delete avatar triggers the new min max value in the HTML5 inputs</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14616">PHPBB3-14616</a>] - Auto-prune fails on large forums</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14631">PHPBB3-14631</a>] - 3.1.9 DB cli update crashes with PHP Fatal error: Call to undefined function phpbb\truncate_string()</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14654">PHPBB3-14654</a>] - Imagemagick &gt; ImageMagick</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14661">PHPBB3-14661</a>] - Fix a typo in twig.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14673">PHPBB3-14673</a>] - Missing Language Variable</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14683">PHPBB3-14683</a>] - Typos in operators in some email templates</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14703">PHPBB3-14703</a>] - module.add adds a module to the wrong parent</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14704">PHPBB3-14704</a>] - Remove unused language files and corresponding functions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14721">PHPBB3-14721</a>] - New registrants choosing old deleted usernames get linked to old accounts with namechange</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14742">PHPBB3-14742</a>] - Improvements to migrator</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14745">PHPBB3-14745</a>] - &quot;U_NOTIFICATION_SETTINGS&quot; contains an HTML entity but is printed in a plaintext email</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14755">PHPBB3-14755</a>] - Error in MCP Move posts</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14782">PHPBB3-14782</a>] - Quick Links &gt; Your Posts gives mysql error</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14788">PHPBB3-14788</a>] - Update developer list to reflect team changes</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14796">PHPBB3-14796</a>] - Log table is using constant in log delete method</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13709">PHPBB3-13709</a>] - Fallback to english in email templates by extensions</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13716">PHPBB3-13716</a>] - Check phpBB version constant against config version</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13865">PHPBB3-13865</a>] - Complement core event search_modify_param</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14184">PHPBB3-14184</a>] - Missing info on SMTP mail function option</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14429">PHPBB3-14429</a>] - core.obtain_users_online_string_modify</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14466">PHPBB3-14466</a>] - Add an event to cron.php</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14469">PHPBB3-14469</a>] - [Template] - &lt;!-- EVENT viewforum_topicrow_before --&gt;</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14516">PHPBB3-14516</a>] - [Template] - memberlist_email_before</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14581">PHPBB3-14581</a>] - Add core events relating to soft delete</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14592">PHPBB3-14592</a>] - [PHP] - core.search_backend_search_after</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14596">PHPBB3-14596</a>] - Prevent installs of 3.1 on PHP 7</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14624">PHPBB3-14624</a>] - Add event to ucp_profile in signature section</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14630">PHPBB3-14630</a>] - Add event to ucp_pm_compose</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14638">PHPBB3-14638</a>] - [PHP] - multiple UCP subscription events for form data and template variables</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14643">PHPBB3-14643</a>] - Select newest file in restore list</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14652">PHPBB3-14652</a>] - Typo birthdays</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14664">PHPBB3-14664</a>] - Fix PHPDoc comment in cron manager</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14672">PHPBB3-14672</a>] - Add template event to viewforum</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14685">PHPBB3-14685</a>] - PHP event for altering announcements sql</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14687">PHPBB3-14687</a>] - Modify viewforum_modify_topicrow</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14688">PHPBB3-14688</a>] - Add core events to the feeds</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14689">PHPBB3-14689</a>] - Build 3.2.x API docs</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14695">PHPBB3-14695</a>] - Add posting_editor_subject_prepend/append template events</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14712">PHPBB3-14712</a>] - Add search.php core event to allow modifying the forum select list</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14713">PHPBB3-14713</a>] - Add core event to the admin function get_forum_list()</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14715">PHPBB3-14715</a>] - Add template events in posting_topic_review &amp; mcp_topic</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14720">PHPBB3-14720</a>] - Add global javascript variable 'phpbb' to jshint settings</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14727">PHPBB3-14727</a>] - Event core.search_modify_submit_parameters</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14738">PHPBB3-14738</a>] - Add core events to improve modifying forum lists</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14747">PHPBB3-14747</a>] - Add topic_last_poster_id and topic_last_post_time to Event core.modify_posting_auth</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14762">PHPBB3-14762</a>] - Add core event to session.php to alter IP address</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14781">PHPBB3-14781</a>] - Add core event to the function group_user_attributes()</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14783">PHPBB3-14783</a>] - Event - ACP Posting Buttons Before Custom BBCodes</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14784">PHPBB3-14784</a>] - missing rewrite for lighttpd</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14785">PHPBB3-14785</a>] - [Template event] - overall_header_headerbar_append</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14787">PHPBB3-14787</a>] - Add more parameters to the core.search_modify_url_parameters event</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14789">PHPBB3-14789</a>] - Add missing link hash and form token checks to ACP</li>
</ul>
<h4>New Feature</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-13978">PHPBB3-13978</a>] - [PHP] - User control panel - on signature change</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14484">PHPBB3-14484</a>] - Support extensions in UI tests</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14506">PHPBB3-14506</a>] - [Template] - mcp_move_before</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-12133">PHPBB3-12133</a>] - Update list of browsers supporting filename* in Content-Disposition</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14538">PHPBB3-14538</a>] - Update composer dependencies</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14598">PHPBB3-14598</a>] - Phing Sniffer Testing Use Statements in DocBlocks</li>
<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-14743">PHPBB3-14743</a>] - Remove PHP7 from test matrix in 3.1.x</li>
</ul>
<a name="v318"></a><h3>Changes since 3.1.8</h3>
<h4>Bug</h4>
<ul>

View File

@@ -1,6 +1,6 @@
/**
*
* phpBB © Copyright phpBB Limited 2003-2014
* phpBB © Copyright phpBB Limited 2003-2016
* http://www.phpbb.com
*
* phpBB is free software. You can redistribute it and/or modify it
@@ -20,13 +20,13 @@
phpBB Project Manager: Marshalrusty (Yuriy Rusko)
phpBB Lead Developer: naderman (Nils Adermann)
phpBB Product Manager: naderman (Nils Adermann)
phpBB Lead Developer: Marc (Marc Alexander)
phpBB Developers: bantu (Andreas Fischer)
CHItA (Máté Bartus)
dhruv.goel92 (Dhruv Goel)
Elsensee (Oliver Schramm)
marc1706 (Marc Alexander)
nickvergessen (Joas Schilling)
Nicofuma (Tristan Darricau)
prototech (Cesar Gallegos)
@@ -54,6 +54,7 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
ckwalsh (Cullen Walsh) [01/2010 - 07/2011]
DavidMJ (David M.) [12/2005 - 08/2009]
dhn (Dominik Dröscher) [05/2007 - 01/2011]
dhruv.goel92 (Dhruv Goel) [04/2013 - 05/2016]
EXreaction (Nathan Guse) [07/2012 - 05/2014]
GrahamJE (Graham Eames) [09/2005 - 11/2006]
igorw (Igor Wiedler) [08/2010 - 02/2013]

View File

@@ -160,7 +160,7 @@
<li>zlib Compression support</li>
<li>Remote FTP support</li>
<li>XML support</li>
<li>Imagemagick support</li>
<li>ImageMagick support</li>
<li>GD Support</li>
</ul>
</li>

View File

@@ -343,6 +343,13 @@ acp_posting_buttons_before
* Since: 3.1.0-b4
* Purpose: Add content before BBCode posting buttons in the ACP
acp_posting_buttons_custom_tags_before
===
* Locations:
+ adm/style/acp_posting_buttons.html
* Since: 3.1.10-RC1
* Purpose: Add content before the custom BBCodes in the ACP
acp_profile_contact_before
===
* Locations:
@@ -843,6 +850,14 @@ mcp_front_latest_unapproved_before
* Since: 3.1.3-RC1
* Purpose: Add content before latest unapproved posts list
mcp_move_before
===
* Locations:
+ styles/prosilver/template/mcp_move.html
+ styles/subsilver2/template/mcp_move.html
* Since: 3.1.10-RC1
* Purpose: Add content before move topic/post form
mcp_post_additional_options
===
* Locations:
@@ -867,6 +882,22 @@ mcp_topic_options_before
* Since: 3.1.6-RC1
* Purpose: Add some options (field, checkbox, ...) before the subject field when split a subject
mcp_topic_postrow_post_details_after
===
* Locations:
+ styles/prosilver/template/mcp_topic.html
+ styles/subsilver2/template/mcp_topic.html
* Since: 3.1.10-RC1
* Purpose: Add content after post details in topic moderation
mcp_topic_postrow_post_details_before
===
* Locations:
+ styles/prosilver/template/mcp_topic.html
+ styles/subsilver2/template/mcp_topic.html
* Since: 3.1.10-RC1
* Purpose: Add content before post details in topic moderation
mcp_topic_topic_title_after
===
* Locations:
@@ -951,6 +982,14 @@ memberlist_body_username_prepend
* Purpose: Add information before every username in the memberlist. Works in
all display modes (leader, group and normal memberlist).
memberlist_email_before
===
* Locations:
+ styles/prosilver/template/memberlist_email.html
+ styles/subsilver2/template/memberlist_email.html
* Since: 3.1.10-RC1
* Purpose: Allow adding customizations before the memberlist_email form.
memberlist_search_fields_after
===
* Locations:
@@ -1336,6 +1375,20 @@ overall_header_head_append
* Since: 3.1.0-a1
* Purpose: Add asset calls directly before the `</head>` tag
overall_header_headerbar_after
===
* Locations:
+ styles/prosilver/template/overall_header.html
* Since: 3.1.10-RC1
* Purpose: Add content at the end of the headerbar
overall_header_headerbar_before
===
* Locations:
+ styles/prosilver/template/overall_header.html
* Since: 3.1.10-RC1
* Purpose: Add content at the beginning of the headerbar
overall_header_navbar_before
===
* Locations:
@@ -1487,6 +1540,14 @@ posting_editor_subject_after
* Since: 3.1.0-a2
* Purpose: Add field (e.g. textbox) to the posting screen after the subject
posting_editor_subject_append
===
* Locations:
+ styles/prosilver/template/posting_editor.html
+ styles/subsilver2/template/posting_body.html
* Since: 3.1.10-RC1
* Purpose: Add field, text, etc. to the posting after the subject text box
posting_editor_subject_before
===
* Locations:
@@ -1495,6 +1556,14 @@ posting_editor_subject_before
* Since: 3.1.0-a2
* Purpose: Add field (e.g. textbox) to the posting screen before the subject
posting_editor_subject_prepend
===
* Locations:
+ styles/prosilver/template/posting_editor.html
+ styles/subsilver2/template/posting_body.html
* Since: 3.1.10-RC1
* Purpose: Add field, text, etc. to the posting before the subject text box
posting_editor_submit_buttons
===
* Locations:
@@ -1556,6 +1625,22 @@ posting_preview_poll_after
* Since: 3.1.7-RC1
* Purpose: Add content after the poll preview block
posting_topic_review_row_post_details_after
===
* Locations:
+ styles/prosilver/template/posting_topic_review.html
+ styles/subsilver2/template/posting_topic_review.html
* Since: 3.1.10-RC1
* Purpose: Add content after post details in topic review
posting_topic_review_row_post_details_before
===
* Locations:
+ styles/prosilver/template/posting_topic_review.html
+ styles/subsilver2/template/posting_topic_review.html
* Since: 3.1.10-RC1
* Purpose: Add content before post details in topic review
posting_topic_title_after
===
* Locations:
@@ -1853,6 +1938,18 @@ topiclist_row_append
* Changed: 3.1.6-RC1 Added event to mcp_forum.html
* Purpose: Add content into topic rows (inside the elements containing topic titles)
topiclist_row_topic_title_after
===
* Locations:
+ styles/prosilver/template/search_results.html
+ styles/prosilver/template/viewforum_body.html
+ styles/prosilver/template/mcp_forum.html
+ styles/subsilver2/template/search_results.html
+ styles/subsilver2/template/viewforum_body.html
+ styles/subsilver2/template/mcp_forum.html
* Since: 3.1.10-RC1
* Purpose: Add content into topic rows (after the elements containing the topic titles)
ucp_agreement_terms_after
===
* Locations:
@@ -2227,6 +2324,14 @@ viewforum_body_topic_row_prepend
* Since: 3.1.7-RC1
* Purpose: Add content at the end of the topic list item.
viewforum_body_topicrow_row_before
===
* Locations:
+ styles/prosilver/template/viewforum_body.html
+ styles/subsilver2/template/viewforum_body.html
* Since: 3.1.10-RC1
* Purpose: Add content before list of topics.
viewforum_buttons_bottom_before
===
* Locations:

View File

@@ -1,7 +1,7 @@
# Sample lighttpd configuration file for phpBB.
# Global settings have been removed, copy them
# from your system's lighttpd.conf.
# Tested with lighttpd 1.4.26
# Tested with lighttpd 1.4.35
# If you want to use the X-Sendfile feature,
# uncomment the 'allow-x-send-file' for the fastcgi
@@ -16,6 +16,7 @@
server.modules += (
"mod_access",
"mod_fastcgi",
"mod_rewrite",
"mod_accesslog"
)
@@ -49,7 +50,15 @@ $HTTP["host"] == "www.myforums.com" {
$HTTP["url"] =~ "/\.htaccess|/\.htpasswd|/\.htgroups" {
url.access-deny = ( "" )
}
# The following 3 lines will rewrite URLs passed through the front controller
# to not require app.php in the actual URL. In other words, a controller is
# by default accessed at /app.php/my/controller, but can also be accessed at
# /my/controller
url.rewrite-if-not-file = (
"^/(.*)$" => "/app.php/$1"
)
fastcgi.server = ( ".php" =>
((
"bin-path" => "/usr/bin/php-cgi",

View File

@@ -84,6 +84,20 @@ $feed->open();
// Iterate through items
while ($row = $feed->get_item())
{
/**
* Event to modify the feed row
*
* @event core.feed_modify_feed_row
* @var int forum_id Forum ID
* @var string mode Feeds mode (forums|topics|topics_new|topics_active|news)
* @var array row Array with feed data
* @var int topic_id Topic ID
*
* @since 3.1.10-RC1
*/
$vars = array('forum_id', 'mode', 'row', 'topic_id');
extract($phpbb_dispatcher->trigger_event('core.feed_modify_feed_row', compact($vars)));
// BBCode options to correctly disable urls, smilies, bbcode...
if ($feed->get('options') === NULL)
{

View File

@@ -449,7 +449,7 @@ class acp_board
'legend2' => 'SMTP_SETTINGS',
'smtp_delivery' => array('lang' => 'USE_SMTP', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'smtp_host' => array('lang' => 'SMTP_SERVER', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => false),
'smtp_host' => array('lang' => 'SMTP_SERVER', 'validate' => 'string', 'type' => 'text:25:50', 'explain' => true),
'smtp_port' => array('lang' => 'SMTP_PORT', 'validate' => 'int:0:99999', 'type' => 'number:0:99999', 'explain' => true),
'smtp_auth_method' => array('lang' => 'SMTP_AUTH_METHOD', 'validate' => 'string', 'type' => 'select', 'method' => 'mail_auth_select', 'explain' => true),
'smtp_username' => array('lang' => 'SMTP_USERNAME', 'validate' => 'string', 'type' => 'text:25:255', 'explain' => true),

View File

@@ -39,6 +39,14 @@ class acp_database
$action = request_var('action', '');
$submit = (isset($_POST['submit'])) ? true : false;
$form_key = 'acp_database';
add_form_key($form_key);
if ($submit && !check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$template->assign_vars(array(
'MODE' => $mode
));

View File

@@ -842,9 +842,26 @@ class acp_forums
ORDER BY left_id";
$result = $db->sql_query($sql);
if ($row = $db->sql_fetchrow($result))
$rowset = array();
while ($row = $db->sql_fetchrow($result))
{
do
$rowset[(int) $row['forum_id']] = $row;
}
$db->sql_freeresult($result);
/**
* Modify the forum list data
*
* @event core.acp_manage_forums_modify_forum_list
* @var array rowset Array with the forums list data
* @since 3.1.10-RC1
*/
$vars = array('rowset');
extract($phpbb_dispatcher->trigger_event('core.acp_manage_forums_modify_forum_list', compact($vars)));
if (!empty($rowset))
{
foreach ($rowset as $row)
{
$forum_type = $row['forum_type'];
@@ -888,7 +905,6 @@ class acp_forums
'U_SYNC' => $url . '&amp;action=sync')
);
}
while ($row = $db->sql_fetchrow($result));
}
else if ($this->parent_id)
{
@@ -904,7 +920,7 @@ class acp_forums
'U_SYNC' => $url . '&amp;action=sync')
);
}
$db->sql_freeresult($result);
unset($rowset);
$template->assign_vars(array(
'ERROR_MSG' => (sizeof($errors)) ? implode('<br />', $errors) : '',

View File

@@ -40,6 +40,15 @@ class acp_icons
$action = (isset($_POST['edit'])) ? 'edit' : $action;
$action = (isset($_POST['import'])) ? 'import' : $action;
$icon_id = request_var('id', 0);
$submit = $request->is_set_post('submit', false);
$form_key = 'acp_icons';
add_form_key($form_key);
if ($submit && !check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$mode = ($mode == 'smilies') ? 'smilies' : 'icons';
@@ -811,6 +820,11 @@ class acp_icons
case 'move_up':
case 'move_down':
if (!check_link_hash($request->variable('hash', ''), 'acp_icons'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
// Get current order id...
$sql = "SELECT {$fields}_order as current_order
FROM $table
@@ -928,8 +942,8 @@ class acp_icons
'EMOTION' => (isset($row['emotion'])) ? $row['emotion'] : '',
'U_EDIT' => $this->u_action . '&amp;action=edit&amp;id=' . $row[$fields . '_id'],
'U_DELETE' => $this->u_action . '&amp;action=delete&amp;id=' . $row[$fields . '_id'],
'U_MOVE_UP' => $this->u_action . '&amp;action=move_up&amp;id=' . $row[$fields . '_id'] . '&amp;start=' . $pagination_start,
'U_MOVE_DOWN' => $this->u_action . '&amp;action=move_down&amp;id=' . $row[$fields . '_id'] . '&amp;start=' . $pagination_start,
'U_MOVE_UP' => $this->u_action . '&amp;action=move_up&amp;id=' . $row[$fields . '_id'] . '&amp;start=' . $pagination_start . '&amp;hash=' . generate_link_hash('acp_icons'),
'U_MOVE_DOWN' => $this->u_action . '&amp;action=move_down&amp;id=' . $row[$fields . '_id'] . '&amp;start=' . $pagination_start . '&amp;hash=' . generate_link_hash('acp_icons'),
));
if (!$spacer && !$row['display_on_posting'])

View File

@@ -244,6 +244,11 @@ class acp_language
break;
case 'install':
if (!check_link_hash($request->variable('hash', ''), 'acp_language'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$lang_iso = request_var('iso', '');
$lang_iso = basename($lang_iso);
@@ -423,7 +428,7 @@ class acp_language
'ISO' => htmlspecialchars($lang_ary['iso']),
'LOCAL_NAME' => htmlspecialchars($lang_ary['local_name'], ENT_COMPAT, 'UTF-8'),
'NAME' => htmlspecialchars($lang_ary['name'], ENT_COMPAT, 'UTF-8'),
'U_INSTALL' => $this->u_action . '&amp;action=install&amp;iso=' . urlencode($lang_ary['iso']))
'U_INSTALL' => $this->u_action . '&amp;action=install&amp;iso=' . urlencode($lang_ary['iso']) . '&amp;hash=' . generate_link_hash('acp_language'))
);
}
}

View File

@@ -453,6 +453,12 @@ class acp_main
$template->assign_var('S_VERSION_UP_TO_DATE', true);
}
// Incomplete update?
if (phpbb_version_compare($config['version'], PHPBB_VERSION, '<'))
{
$template->assign_var('S_UPDATE_INCOMPLETE', true);
}
/**
* Notice admin
*

View File

@@ -46,6 +46,9 @@ class acp_modules
$user->add_lang('acp/modules');
$this->tpl_name = 'acp_modules';
$form_key = 'acp_modules';
add_form_key($form_key);
// module class
$this->module_class = $mode;
@@ -119,6 +122,11 @@ class acp_modules
trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
}
if (!check_link_hash($request->variable('hash', ''), 'acp_modules'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
}
$sql = 'SELECT *
FROM ' . MODULES_TABLE . "
WHERE module_class = '" . $db->sql_escape($this->module_class) . "'
@@ -150,6 +158,11 @@ class acp_modules
trigger_error($user->lang['NO_MODULE_ID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
}
if (!check_link_hash($request->variable('hash', ''), 'acp_modules'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
}
$sql = 'SELECT *
FROM ' . MODULES_TABLE . "
WHERE module_class = '" . $db->sql_escape($this->module_class) . "'
@@ -273,6 +286,11 @@ class acp_modules
if ($submit)
{
if (!check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
}
if (!$module_data['module_langname'])
{
trigger_error($user->lang['NO_MODULE_LANGNAME'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
@@ -460,12 +478,12 @@ class acp_modules
'S_ACP_MODULE_MANAGEMENT' => ($this->module_class == 'acp' && ($row['module_basename'] == 'modules' || $row['module_langname'] == 'ACP_MODULE_MANAGEMENT')) ? true : false,
'U_MODULE' => $this->u_action . '&amp;parent_id=' . $row['module_id'],
'U_MOVE_UP' => $url . '&amp;action=move_up',
'U_MOVE_DOWN' => $url . '&amp;action=move_down',
'U_MOVE_UP' => $url . '&amp;action=move_up&amp;hash=' . generate_link_hash('acp_modules'),
'U_MOVE_DOWN' => $url . '&amp;action=move_down&amp;hash=' . generate_link_hash('acp_modules'),
'U_EDIT' => $url . '&amp;action=edit',
'U_DELETE' => $url . '&amp;action=delete',
'U_ENABLE' => $url . '&amp;action=enable',
'U_DISABLE' => $url . '&amp;action=disable')
'U_ENABLE' => $url . '&amp;action=enable&amp;hash=' . generate_link_hash('acp_modules'),
'U_DISABLE' => $url . '&amp;action=disable&amp;hash=' . generate_link_hash('acp_modules'))
);
}
while ($row = $db->sql_fetchrow($result));
@@ -484,8 +502,8 @@ class acp_modules
'U_EDIT' => $url . '&amp;action=edit',
'U_DELETE' => $url . '&amp;action=delete',
'U_ENABLE' => $url . '&amp;action=enable',
'U_DISABLE' => $url . '&amp;action=disable')
'U_ENABLE' => $url . '&amp;action=enable&amp;hash=' . generate_link_hash('acp_modules'),
'U_DISABLE' => $url . '&amp;action=disable&amp;hash=' . generate_link_hash('acp_modules'))
);
}
$db->sql_freeresult($result);

View File

@@ -366,6 +366,11 @@ class acp_permission_roles
case 'move_up':
case 'move_down':
if (!check_link_hash($request->variable('hash', ''), 'acp_permission_roles'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$sql = 'SELECT role_order
FROM ' . ACL_ROLES_TABLE . "
WHERE role_id = $role_id";
@@ -440,8 +445,8 @@ class acp_permission_roles
'U_EDIT' => $this->u_action . '&amp;action=edit&amp;role_id=' . $row['role_id'],
'U_REMOVE' => $this->u_action . '&amp;action=remove&amp;role_id=' . $row['role_id'],
'U_MOVE_UP' => $this->u_action . '&amp;action=move_up&amp;role_id=' . $row['role_id'],
'U_MOVE_DOWN' => $this->u_action . '&amp;action=move_down&amp;role_id=' . $row['role_id'],
'U_MOVE_UP' => $this->u_action . '&amp;action=move_up&amp;role_id=' . $row['role_id'] . '&amp;hash=' . generate_link_hash('acp_permission_roles'),
'U_MOVE_DOWN' => $this->u_action . '&amp;action=move_down&amp;role_id=' . $row['role_id'] . '&amp;hash=' . generate_link_hash('acp_permission_roles'),
'U_DISPLAY_ITEMS' => ($row['role_id'] == $display_item) ? '' : $this->u_action . '&amp;display_item=' . $row['role_id'] . '#assigned_to')
);

View File

@@ -53,6 +53,9 @@ class acp_profile
$error = array();
$s_hidden_fields = '';
$form_key = 'acp_profile';
add_form_key($form_key);
if (!$field_id && in_array($action, array('delete','activate', 'deactivate', 'move_up', 'move_down', 'edit')))
{
trigger_error($user->lang['NO_FIELD_ID'] . adm_back_link($this->u_action), E_USER_WARNING);
@@ -161,6 +164,11 @@ class acp_profile
case 'activate':
if (!check_link_hash($request->variable('hash', ''), 'acp_profile'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$sql = 'SELECT lang_id
FROM ' . LANG_TABLE . "
WHERE lang_iso = '" . $db->sql_escape($config['default_lang']) . "'";
@@ -201,6 +209,11 @@ class acp_profile
case 'deactivate':
if (!check_link_hash($request->variable('hash', ''), 'acp_profile'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$sql = 'UPDATE ' . PROFILE_FIELDS_TABLE . "
SET field_active = 0
WHERE field_id = $field_id";
@@ -230,6 +243,11 @@ class acp_profile
case 'move_up':
case 'move_down':
if (!check_link_hash($request->variable('hash', ''), 'acp_profile'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$sql = 'SELECT field_order
FROM ' . PROFILE_FIELDS_TABLE . "
WHERE field_id = $field_id";
@@ -579,6 +597,11 @@ class acp_profile
if (!sizeof($error))
{
if (!check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
if (($step == 3 && (sizeof($this->lang_defs['iso']) == 1 || $save)) || ($action == 'edit' && $save))
{
$this->save_profile_field($cp, $field_type, $action);
@@ -735,12 +758,12 @@ class acp_profile
'FIELD_TYPE' => $profile_field->get_name(),
'L_ACTIVATE_DEACTIVATE' => $user->lang[$active_lang],
'U_ACTIVATE_DEACTIVATE' => $this->u_action . "&amp;action=$active_value&amp;field_id=$id",
'U_ACTIVATE_DEACTIVATE' => $this->u_action . "&amp;action=$active_value&amp;field_id=$id" . '&amp;hash=' . generate_link_hash('acp_profile'),
'U_EDIT' => $this->u_action . "&amp;action=edit&amp;field_id=$id",
'U_TRANSLATE' => $this->u_action . "&amp;action=edit&amp;field_id=$id&amp;step=3",
'U_DELETE' => $this->u_action . "&amp;action=delete&amp;field_id=$id",
'U_MOVE_UP' => $this->u_action . "&amp;action=move_up&amp;field_id=$id",
'U_MOVE_DOWN' => $this->u_action . "&amp;action=move_down&amp;field_id=$id",
'U_MOVE_UP' => $this->u_action . "&amp;action=move_up&amp;field_id=$id" . '&amp;hash=' . generate_link_hash('acp_profile'),
'U_MOVE_DOWN' => $this->u_action . "&amp;action=move_down&amp;field_id=$id" . '&amp;hash=' . generate_link_hash('acp_profile'),
'S_NEED_EDIT' => $s_need_edit)
);

View File

@@ -282,6 +282,11 @@ class acp_reasons
case 'move_up':
case 'move_down':
if (!check_link_hash($request->variable('hash', ''), 'acp_reasons'))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$sql = 'SELECT reason_order
FROM ' . REPORTS_REASONS_TABLE . "
WHERE reason_id = $reason_id";
@@ -383,8 +388,8 @@ class acp_reasons
'U_EDIT' => $this->u_action . '&amp;action=edit&amp;id=' . $row['reason_id'],
'U_DELETE' => (!$other_reason) ? $this->u_action . '&amp;action=delete&amp;id=' . $row['reason_id'] : '',
'U_MOVE_UP' => $this->u_action . '&amp;action=move_up&amp;id=' . $row['reason_id'],
'U_MOVE_DOWN' => $this->u_action . '&amp;action=move_down&amp;id=' . $row['reason_id'])
'U_MOVE_UP' => $this->u_action . '&amp;action=move_up&amp;id=' . $row['reason_id'] . '&amp;hash=' . generate_link_hash('acp_reasons'),
'U_MOVE_DOWN' => $this->u_action . '&amp;action=move_down&amp;id=' . $row['reason_id'] . '&amp;hash=' . generate_link_hash('acp_reasons'))
);
}
$db->sql_freeresult($result);

View File

@@ -54,6 +54,13 @@ class acp_search
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
$submit = (isset($_POST['submit'])) ? true : false;
$form_key = 'acp_search';
add_form_key($form_key);
if ($submit && !check_form_key($form_key))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
$search_types = $this->get_search_types();
@@ -232,7 +239,7 @@ class acp_search
function index($id, $mode)
{
global $db, $user, $auth, $template, $cache;
global $db, $user, $auth, $template, $cache, $request;
global $config, $phpbb_root_path, $phpbb_admin_path, $phpEx;
$action = request_var('action', '');
@@ -244,6 +251,15 @@ class acp_search
$this->state = array();
$this->save_state();
}
$submit = $request->is_set_post('submit', false);
$form_key = 'acp_search';
add_form_key($form_key);
if (!check_form_key($form_key) && in_array($action, array('delete', 'create')))
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
}
if ($action)
{

View File

@@ -62,5 +62,17 @@ class acp_update
'UPDATE_INSTRUCTIONS' => sprintf($user->lang['UPDATE_INSTRUCTIONS'], $update_link),
));
// Incomplete update?
if (phpbb_version_compare($config['version'], PHPBB_VERSION, '<'))
{
$database_update_link = append_sid($phpbb_root_path . 'install/database_update.' . $phpEx);
$template->assign_vars(array(
'S_UPDATE_INCOMPLETE' => true,
'FILES_VERSION' => PHPBB_VERSION,
'INCOMPLETE_INSTRUCTIONS' => $user->lang('UPDATE_INCOMPLETE_EXPLAIN', $database_update_link),
));
}
}
}

View File

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

View File

@@ -4334,6 +4334,30 @@ function obtain_users_online_string($online_users, $item_id = 0, $item = 'forum'
}
}
}
/**
* Modify online userlist data
*
* @event core.obtain_users_online_string_before_modify
* @var array online_users Array with online users data
* from obtain_users_online()
* @var int item_id Restrict online users to item id
* @var string item Restrict online users to a certain
* session item, e.g. forum for
* session_forum_id
* @var array rowset Array with online users data
* @var array user_online_link Array with online users items (usernames)
* @since 3.1.10-RC1
*/
$vars = array(
'online_users',
'item_id',
'item',
'rowset',
'user_online_link',
);
extract($phpbb_dispatcher->trigger_event('core.obtain_users_online_string_before_modify', compact($vars)));
$online_userlist = implode(', ', $user_online_link);
if (!$online_userlist)

View File

@@ -65,7 +65,7 @@ function recalc_nested_sets(&$new_id, $pkey, $table, $parent_id = 0, $where = ar
*/
function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl = false, $ignore_nonpost = false, $ignore_emptycat = true, $only_acl_post = false, $return_array = false)
{
global $db, $user, $auth;
global $db, $user, $auth, $phpbb_dispatcher;
// This query is identical to the jumpbox one
$sql = 'SELECT forum_id, forum_name, parent_id, forum_type, forum_flags, forum_options, left_id, right_id
@@ -73,16 +73,33 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =
ORDER BY left_id ASC';
$result = $db->sql_query($sql, 600);
$rowset = array();
while ($row = $db->sql_fetchrow($result))
{
$rowset[(int) $row['forum_id']] = $row;
}
$db->sql_freeresult($result);
$right = 0;
$padding_store = array('0' => '');
$padding = '';
$forum_list = ($return_array) ? array() : '';
/**
* Modify the forum list data
*
* @event core.make_forum_select_modify_forum_list
* @var array rowset Array with the forums list data
* @since 3.1.10-RC1
*/
$vars = array('rowset');
extract($phpbb_dispatcher->trigger_event('core.make_forum_select_modify_forum_list', compact($vars)));
// Sometimes it could happen that forums will be displayed here not be displayed within the index page
// This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions.
// If this happens, the padding could be "broken"
while ($row = $db->sql_fetchrow($result))
foreach ($rowset as $row)
{
if ($row['left_id'] < $right)
{
@@ -133,8 +150,7 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =
$forum_list .= '<option value="' . $row['forum_id'] . '"' . (($disabled) ? ' disabled="disabled" class="disabled-option"' : $selected) . '>' . $padding . $row['forum_name'] . '</option>';
}
}
$db->sql_freeresult($result);
unset($padding_store);
unset($padding_store, $rowset);
return $forum_list;
}
@@ -201,7 +217,7 @@ function group_select_options($group_id, $exclude_ids = false, $manage_founder =
*/
function get_forum_list($acl_list = 'f_list', $id_only = true, $postable_only = false, $no_cache = false)
{
global $db, $auth;
global $db, $auth, $phpbb_dispatcher;
static $forum_rows;
if (!isset($forum_rows))
@@ -256,6 +272,16 @@ function get_forum_list($acl_list = 'f_list', $id_only = true, $postable_only =
}
}
/**
* Modify the forum list data
*
* @event core.get_forum_list_modify_data
* @var array rowset Array with the forum list data
* @since 3.1.10-RC1
*/
$vars = array('rowset');
extract($phpbb_dispatcher->trigger_event('core.get_forum_list_modify_data', compact($vars)));
return $rowset;
}
@@ -2531,7 +2557,7 @@ function sync($mode, $where_type = '', $where_ids = '', $resync_parents = false,
/**
* Prune function
*/
function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync = true)
function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync = true, $prune_limit = 0)
{
global $db, $phpbb_dispatcher;
@@ -2583,9 +2609,19 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
* @var int prune_flags The prune flags
* @var bool auto_sync Whether or not to perform auto sync
* @var string sql_and SQL text appended to where clause
* @var int prune_limit The prune limit
* @since 3.1.3-RC1
* @changed 3.1.10-RC1 Added prune_limit
*/
$vars = array('forum_id', 'prune_mode', 'prune_date', 'prune_flags', 'auto_sync', 'sql_and');
$vars = array(
'forum_id',
'prune_mode',
'prune_date',
'prune_flags',
'auto_sync',
'sql_and',
'prune_limit',
);
extract($phpbb_dispatcher->trigger_event('core.prune_sql', compact($vars)));
$sql = 'SELECT topic_id
@@ -2593,7 +2629,7 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
WHERE ' . $db->sql_in_set('forum_id', $forum_id) . "
AND poll_start = 0
$sql_and";
$result = $db->sql_query($sql);
$result = $db->sql_query_limit($sql, $prune_limit);
$topic_list = array();
while ($row = $db->sql_fetchrow($result))
@@ -2610,7 +2646,7 @@ function prune($forum_id, $prune_mode, $prune_date, $prune_flags = 0, $auto_sync
AND poll_start > 0
AND poll_last_vote < $prune_date
$sql_and";
$result = $db->sql_query($sql);
$result = $db->sql_query_limit($sql, $prune_limit);
while ($row = $db->sql_fetchrow($result))
{
@@ -2643,12 +2679,15 @@ function auto_prune($forum_id, $prune_mode, $prune_flags, $prune_days, $prune_fr
$prune_date = time() - ($prune_days * 86400);
$next_prune = time() + ($prune_freq * 86400);
prune($forum_id, $prune_mode, $prune_date, $prune_flags, true);
$result = prune($forum_id, $prune_mode, $prune_date, $prune_flags, true, 300);
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET prune_next = $next_prune
WHERE forum_id = $forum_id";
$db->sql_query($sql);
if ($result['topics'] == 0 && $result['posts'] == 0)
{
$sql = 'UPDATE ' . FORUMS_TABLE . "
SET prune_next = $next_prune
WHERE forum_id = $forum_id";
$db->sql_query($sql);
}
add_log('admin', 'LOG_AUTO_PRUNE', $row['forum_name']);
}

View File

@@ -150,7 +150,7 @@ function gen_sort_selects(&$limit_days, &$sort_by_text, &$sort_days, &$sort_key,
*/
function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list = false, $force_display = false)
{
global $config, $auth, $template, $user, $db, $phpbb_path_helper;
global $config, $auth, $template, $user, $db, $phpbb_path_helper, $phpbb_dispatcher;
// We only return if the jumpbox is not forced to be displayed (in case it is needed for functionality)
if (!$config['load_jumpbox'] && $force_display === false)
@@ -163,16 +163,33 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
ORDER BY left_id ASC';
$result = $db->sql_query($sql, 600);
$rowset = array();
while ($row = $db->sql_fetchrow($result))
{
$rowset[(int) $row['forum_id']] = $row;
}
$db->sql_freeresult($result);
$right = $padding = 0;
$padding_store = array('0' => 0);
$display_jumpbox = false;
$iteration = 0;
/**
* Modify the jumpbox forum list data
*
* @event core.make_jumpbox_modify_forum_list
* @var array rowset Array with the forums list data
* @since 3.1.10-RC1
*/
$vars = array('rowset');
extract($phpbb_dispatcher->trigger_event('core.make_jumpbox_modify_forum_list', compact($vars)));
// Sometimes it could happen that forums will be displayed here not be displayed within the index page
// This is the result of forums not displayed at index, having list permissions and a parent of a forum with no permissions.
// If this happens, the padding could be "broken"
while ($row = $db->sql_fetchrow($result))
foreach ($rowset as $row)
{
if ($row['left_id'] < $right)
{
@@ -205,20 +222,21 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
continue;
}
$tpl_ary = array();
if (!$display_jumpbox)
{
$template->assign_block_vars('jumpbox_forums', array(
$tpl_ary[] = array(
'FORUM_ID' => ($select_all) ? 0 : -1,
'FORUM_NAME' => ($select_all) ? $user->lang['ALL_FORUMS'] : $user->lang['SELECT_FORUM'],
'S_FORUM_COUNT' => $iteration,
'LINK' => $phpbb_path_helper->append_url_params($action, array('f' => $forum_id)),
));
);
$iteration++;
$display_jumpbox = true;
}
$template->assign_block_vars('jumpbox_forums', array(
$tpl_ary[] = array(
'FORUM_ID' => $row['forum_id'],
'FORUM_NAME' => $row['forum_name'],
'SELECTED' => ($row['forum_id'] == $forum_id) ? ' selected="selected"' : '',
@@ -227,7 +245,25 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
'S_IS_LINK' => ($row['forum_type'] == FORUM_LINK) ? true : false,
'S_IS_POST' => ($row['forum_type'] == FORUM_POST) ? true : false,
'LINK' => $phpbb_path_helper->append_url_params($action, array('f' => $row['forum_id'])),
));
);
/**
* Modify the jumpbox before it is assigned to the template
*
* @event core.make_jumpbox_modify_tpl_ary
* @var array row The data of the forum
* @var array tpl_ary Template data of the forum
* @since 3.1.10-RC1
*/
$vars = array(
'row',
'tpl_ary',
);
extract($phpbb_dispatcher->trigger_event('core.make_jumpbox_modify_tpl_ary', compact($vars)));
$template->assign_block_vars_array('jumpbox_forums', $tpl_ary);
unset($tpl_ary);
for ($i = 0; $i < $padding; $i++)
{
@@ -235,8 +271,7 @@ function make_jumpbox($action, $forum_id = false, $select_all = false, $acl_list
}
$iteration++;
}
$db->sql_freeresult($result);
unset($padding_store);
unset($padding_store, $rowset);
$url_parts = $phpbb_path_helper->get_url_parts($action);

View File

@@ -166,7 +166,7 @@ function send_file_to_browser($attachment, $upload_dir, $category)
}
// Make sure the database record for the filesize is correct
if ($size > 0 && $size != $attachment['filesize'])
if ($size > 0 && $size != $attachment['filesize'] && strpos($attachment['physical_filename'], 'thumb_') === false)
{
// Update database record
$sql = 'UPDATE ' . ATTACHMENTS_TABLE . '
@@ -284,7 +284,7 @@ function header_filename($file)
// There be dragons here.
// Not many follows the RFC...
if (strpos($user_agent, 'MSIE') !== false || strpos($user_agent, 'Safari') !== false || strpos($user_agent, 'Konqueror') !== false)
if (strpos($user_agent, 'MSIE') !== false || strpos($user_agent, 'Konqueror') !== false)
{
return "filename=" . rawurlencode($file);
}

View File

@@ -231,6 +231,13 @@ class messenger
$template_lang = basename($config['default_lang']);
}
$ext_template_paths = array(
array(
'name' => $template_lang . '_email',
'ext_path' => 'language/' . $template_lang . '/email' . $template_dir_prefix,
),
);
if ($template_path)
{
$template_paths = array(
@@ -246,23 +253,38 @@ class messenger
$template_path . $template_dir_prefix,
);
$board_language = basename($config['default_lang']);
// we can only specify default language fallback when the path is not a custom one for which we
// do not know the default language alternative
if ($template_lang !== basename($config['default_lang']))
if ($template_lang !== $board_language)
{
$fallback_template_path = (!empty($user->lang_path)) ? $user->lang_path : $phpbb_root_path . 'language/';
$fallback_template_path .= basename($config['default_lang']) . '/email';
$fallback_template_path .= $board_language . '/email';
$template_paths[] = $fallback_template_path . $template_dir_prefix;
$ext_template_paths[] = array(
'name' => $board_language . '_email',
'ext_path' => 'language/' . $board_language . '/email' . $template_dir_prefix,
);
}
// If everything fails just fall back to en template
if ($template_lang !== 'en' && $board_language !== 'en')
{
$fallback_template_path = (!empty($user->lang_path)) ? $user->lang_path : $phpbb_root_path . 'language/';
$fallback_template_path .= 'en/email';
$template_paths[] = $fallback_template_path . $template_dir_prefix;
$ext_template_paths[] = array(
'name' => 'en_email',
'ext_path' => 'language/en/email' . $template_dir_prefix,
);
}
}
$this->set_template_paths(array(
array(
'name' => $template_lang . '_email',
'ext_path' => 'language/' . $template_lang . '/email' . $template_dir_prefix,
),
), $template_paths);
$this->set_template_paths($ext_template_paths, $template_paths);
$this->template->set_filenames(array(
'body' => $template_file . '.txt',

View File

@@ -702,7 +702,7 @@ function create_thumbnail($source, $destination, $mimetype)
$used_imagick = false;
// Only use imagemagick if defined and the passthru function not disabled
// Only use ImageMagick if defined and the passthru function not disabled
if ($config['img_imagick'] && function_exists('passthru'))
{
if (substr($config['img_imagick'], -1) !== '/')

View File

@@ -119,19 +119,29 @@ function user_update_name($old_name, $new_name)
global $config, $db, $cache, $phpbb_dispatcher;
$update_ary = array(
FORUMS_TABLE => array('forum_last_poster_name'),
MODERATOR_CACHE_TABLE => array('username'),
POSTS_TABLE => array('post_username'),
TOPICS_TABLE => array('topic_first_poster_name', 'topic_last_poster_name'),
FORUMS_TABLE => array(
'forum_last_poster_id' => 'forum_last_poster_name',
),
MODERATOR_CACHE_TABLE => array(
'user_id' => 'username',
),
POSTS_TABLE => array(
'poster_id' => 'post_username',
),
TOPICS_TABLE => array(
'topic_poster' => 'topic_first_poster_name',
'topic_last_poster_id' => 'topic_last_poster_name',
),
);
foreach ($update_ary as $table => $field_ary)
{
foreach ($field_ary as $field)
foreach ($field_ary as $id_field => $name_field)
{
$sql = "UPDATE $table
SET $field = '" . $db->sql_escape($new_name) . "'
WHERE $field = '" . $db->sql_escape($old_name) . "'";
SET $name_field = '" . $db->sql_escape($new_name) . "'
WHERE $name_field = '" . $db->sql_escape($old_name) . "'
AND $id_field <> " . ANONYMOUS;
$db->sql_query($sql);
}
}
@@ -3076,7 +3086,7 @@ function remove_default_rank($group_id, $user_ids)
*/
function group_user_attributes($action, $group_id, $user_id_ary = false, $username_ary = false, $group_name = false, $group_attributes = false)
{
global $db, $auth, $phpbb_root_path, $phpEx, $config, $phpbb_container;
global $db, $auth, $phpbb_root_path, $phpEx, $config, $phpbb_container, $phpbb_dispatcher;
// We need both username and user_id info
$result = user_get_id_name($user_id_ary, $username_ary);
@@ -3207,6 +3217,28 @@ function group_user_attributes($action, $group_id, $user_id_ary = false, $userna
break;
}
/**
* Event to perform additional actions on setting user group attributes
*
* @event core.user_set_group_attributes
* @var int group_id ID of the group
* @var string group_name Name of the group
* @var array user_id_ary IDs of the users to set group attributes
* @var array username_ary Names of the users to set group attributes
* @var array group_attributes Group attributes which were changed
* @var string action Action to perform over the group members
* @since 3.1.10-RC1
*/
$vars = array(
'group_id',
'group_name',
'user_id_ary',
'username_ary',
'group_attributes',
'action',
);
extract($phpbb_dispatcher->trigger_event('core.user_set_group_attributes', compact($vars)));
// Clear permissions cache of relevant users
$auth->acl_clear_prefetch($user_id_ary);

View File

@@ -273,7 +273,7 @@ function mcp_forum_view($id, $mode, $action, $forum_info)
'TOPIC_ICON_IMG_WIDTH' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['width'] : '',
'TOPIC_ICON_IMG_HEIGHT' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['height'] : '',
'UNAPPROVED_IMG' => ($topic_unapproved || $posts_unapproved) ? $user->img('icon_topic_unapproved', ($topic_unapproved) ? 'TOPIC_UNAPPROVED' : 'POSTS_UNAPPROVED') : '',
'DELETED_IMG' => ($topic_deleted) ? $user->img('icon_topic_deleted', 'POSTS_DELETED') : '',
'DELETED_IMG' => ($topic_deleted) ? $user->img('icon_topic_deleted', 'TOPIC_DELETED') : '',
'TOPIC_AUTHOR' => get_username_string('username', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
'TOPIC_AUTHOR_COLOUR' => get_username_string('colour', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),

View File

@@ -877,11 +877,12 @@ function mcp_delete_topic($topic_ids, $is_soft = false, $soft_delete_reason = ''
}
$template->assign_vars(array(
'S_SHADOW_TOPICS' => $only_shadow,
'S_SOFTDELETED' => $only_softdeleted,
'S_TOPIC_MODE' => true,
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
'S_SHADOW_TOPICS' => $only_shadow,
'S_SOFTDELETED' => $only_softdeleted,
'S_TOPIC_MODE' => true,
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
'DELETE_TOPIC_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_TOPIC_PERMANENTLY', sizeof($topic_ids)),
));
$l_confirm = (sizeof($topic_ids) == 1) ? 'DELETE_TOPIC' : 'DELETE_TOPICS';
@@ -1116,9 +1117,10 @@ function mcp_delete_post($post_ids, $is_soft = false, $soft_delete_reason = '',
}
$template->assign_vars(array(
'S_SOFTDELETED' => $only_softdeleted,
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
'S_SOFTDELETED' => $only_softdeleted,
'S_ALLOWED_DELETE' => $auth->acl_get('m_delete', $forum_id),
'S_ALLOWED_SOFTDELETE' => $auth->acl_get('m_softdelete', $forum_id),
'DELETE_POST_PERMANENTLY_EXPLAIN' => $user->lang('DELETE_POST_PERMANENTLY', sizeof($post_ids)),
));
$l_confirm = (sizeof($post_ids) == 1) ? 'DELETE_POST' : 'DELETE_POSTS';

View File

@@ -35,7 +35,7 @@ class ucp_main
function main($id, $mode)
{
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx;
global $config, $db, $user, $auth, $template, $phpbb_root_path, $phpEx, $phpbb_dispatcher;
global $request;
switch ($mode)
@@ -215,6 +215,14 @@ class ucp_main
$unwatch = (isset($_POST['unwatch'])) ? true : false;
/**
* Read and potentially modify the post data used to remove subscriptions to forums/topics
*
* @event core.ucp_main_subscribed_post_data
* @since 3.1.10-RC1
*/
$phpbb_dispatcher->dispatch('core.ucp_main_subscribed_post_data');
if ($unwatch)
{
if (check_form_key('ucp_front_subscribed'))
@@ -300,6 +308,20 @@ class ucp_main
$tracking_topics = ($tracking_topics) ? tracking_unserialize($tracking_topics) : array();
}
/**
* Modify the query used to retrieve a list of subscribed forums
*
* @event core.ucp_main_subscribed_forums_modify_query
* @var array sql_array The subscribed forums query
* @var array forbidden_forums The list of forbidden forums
* @since 3.1.10-RC1
*/
$vars = array(
'sql_array',
'forbidden_forums',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_main_subscribed_forums_modify_query', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
@@ -341,7 +363,7 @@ class ucp_main
$last_post_time = $last_post_url = '';
}
$template->assign_block_vars('forumrow', array(
$template_vars = array(
'FORUM_ID' => $forum_id,
'FORUM_IMG_STYLE' => $folder_image,
'FORUM_FOLDER_IMG' => $user->img($folder_image, $folder_alt),
@@ -360,8 +382,36 @@ class ucp_main
'S_UNREAD_FORUM' => $unread_forum,
'U_LAST_POST' => $last_post_url,
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']))
'U_VIEWFORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id'])
);
/**
* Add template variables to a subscribed forum row.
*
* @event core.ucp_main_subscribed_forum_modify_template_vars
* @var array template_vars Array containing the template variables for the row
* @var array row Array containing the subscribed forum row data
* @var int forum_id Forum ID
* @var string folder_image Folder image
* @var string folder_alt Alt text for the folder image
* @var bool unread_forum Whether the forum has unread content or not
* @var string last_post_time The time of the most recent post, expressed as a formatted date string
* @var string last_post_url The URL of the most recent post in the forum
* @since 3.1.10-RC1
*/
$vars = array(
'template_vars',
'row',
'forum_id',
'folder_image',
'folder_alt',
'unread_forum',
'last_post_time',
'last_post_url',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_main_subscribed_forum_modify_template_vars', compact($vars)));
$template->assign_block_vars('forumrow', $template_vars);
}
$db->sql_freeresult($result);
}
@@ -643,7 +693,7 @@ class ucp_main
*/
function assign_topiclist($mode = 'subscribed', $forbidden_forum_ary = array())
{
global $user, $db, $template, $config, $cache, $auth, $phpbb_root_path, $phpEx, $phpbb_container;
global $user, $db, $template, $config, $cache, $auth, $phpbb_root_path, $phpEx, $phpbb_container, $request, $phpbb_dispatcher;
$table = ($mode == 'subscribed') ? TOPICS_WATCH_TABLE : BOOKMARKS_TABLE;
$start = request_var('start', 0);
@@ -664,6 +714,23 @@ class ucp_main
AND i.user_id = ' . $user->data['user_id'] . '
AND ' . $db->sql_in_set('t.forum_id', $forbidden_forum_ary, true, true),
);
/**
* Modify the query used to retrieve the count of subscribed/bookmarked topics
*
* @event core.ucp_main_topiclist_count_modify_query
* @var array sql_array The subscribed/bookmarked topics query
* @var array forbidden_forum_ary The list of forbidden forums
* @var string mode The type of topic list ('subscribed' or 'bookmarks')
* @since 3.1.10-RC1
*/
$vars = array(
'sql_array',
'forbidden_forum_ary',
'mode',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_main_topiclist_count_modify_query', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$topics_count = (int) $db->sql_fetchfield('topics_count');
@@ -732,6 +799,22 @@ class ucp_main
$sql_array['SELECT'] .= ', tp.topic_posted';
}
/**
* Modify the query used to retrieve the list of subscribed/bookmarked topics
*
* @event core.ucp_main_topiclist_modify_query
* @var array sql_array The subscribed/bookmarked topics query
* @var array forbidden_forum_ary The list of forbidden forums
* @var string mode The type of topic list ('subscribed' or 'bookmarks')
* @since 3.1.10-RC1
*/
$vars = array(
'sql_array',
'forbidden_forum_ary',
'mode',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_main_topiclist_modify_query', compact($vars)));
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
@@ -796,7 +879,7 @@ class ucp_main
$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params);
// Send vars to template
$template->assign_block_vars('topicrow', array(
$template_vars = array(
'FORUM_ID' => $forum_id,
'TOPIC_ID' => $topic_id,
'FIRST_POST_TIME' => $user->format_date($row['topic_time']),
@@ -838,7 +921,41 @@ class ucp_main
'U_LAST_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params . '&amp;p=' . $row['topic_last_post_id']) . '#p' . $row['topic_last_post_id'],
'U_VIEW_TOPIC' => $view_topic_url,
'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id),
));
);
/**
* Add template variables to a subscribed/bookmarked topic row.
*
* @event core.ucp_main_topiclist_topic_modify_template_vars
* @var array template_vars Array containing the template variables for the row
* @var array row Array containing the subscribed/bookmarked topic row data
* @var int forum_id ID of the forum containing the topic
* @var int topic_id Topic ID
* @var int replies Number of replies in the topic
* @var string topic_type Topic type
* @var string folder_img Folder image
* @var string folder_alt Alt text for the folder image
* @var array icons Array containing topic icons
* @var bool unread_topic Whether the topic has unread content or not
* @var string view_topic_url The URL of the topic
* @since 3.1.10-RC1
*/
$vars = array(
'template_vars',
'row',
'forum_id',
'topic_id',
'replies',
'topic_type',
'folder_img',
'folder_alt',
'icons',
'unread_topic',
'view_topic_url',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_main_topiclist_topic_modify_template_vars', compact($vars)));
$template->assign_block_vars('topicrow', $template_vars);
$pagination->generate_template_pagination(append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $row['forum_id'] . "&amp;t=$topic_id"), 'topicrow.pagination', 'start', $replies + 1, $config['posts_per_page'], 1, true, true);
}

View File

@@ -751,6 +751,34 @@ function compose_pm($id, $mode, $action, $user_folders = array())
$enable_urls = (isset($_POST['disable_magic_url'])) ? 0 : 1;
$enable_sig = (!$config['allow_sig'] ||!$config['allow_sig_pm']) ? false : ((isset($_POST['attach_sig'])) ? true : false);
/**
* Modify private message
*
* @event core.ucp_pm_compose_modify_parse_before
* @var bool enable_bbcode Whether or not bbcode is enabled
* @var bool enable_smilies Whether or not smilies are enabled
* @var bool enable_urls Whether or not urls are enabled
* @var bool enable_sig Whether or not signature is enabled
* @var string subject PM subject text
* @var object message_parser The message parser object
* @var bool submit Whether or not the form has been sumitted
* @var bool preview Whether or not the signature is being previewed
* @var array error Any error strings
* @since 3.1.10-RC1
*/
$vars = array(
'enable_bbcode',
'enable_smilies',
'enable_urls',
'enable_sig',
'subject',
'message_parser',
'submit',
'preview',
'error',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_pm_compose_modify_parse_before', compact($vars)));
if ($submit)
{
$status_switch = (($enable_bbcode+1) << 8) + (($enable_smilies+1) << 4) + (($enable_urls+1) << 2) + (($enable_sig+1) << 1);

View File

@@ -479,6 +479,32 @@ class ucp_profile
{
$message_parser = new parse_message($signature);
/**
* Modify user signature on editing profile in UCP
*
* @event core.ucp_profile_modify_signature
* @var bool enable_bbcode Whether or not bbcode is enabled
* @var bool enable_smilies Whether or not smilies are enabled
* @var bool enable_urls Whether or not urls are enabled
* @var string signature Users signature text
* @var object message_parser The message parser object
* @var array error Any error strings
* @var bool submit Whether or not the form has been sumitted
* @var bool preview Whether or not the signature is being previewed
* @since 3.1.10-RC1
*/
$vars = array(
'enable_bbcode',
'enable_smilies',
'enable_urls',
'signature',
'message_parser',
'error',
'submit',
'preview',
);
extract($phpbb_dispatcher->trigger_event('core.ucp_profile_modify_signature', compact($vars)));
// Allowing Quote BBCode
$message_parser->parse($enable_bbcode, $enable_urls, $enable_smilies, $config['allow_sig_img'], $config['allow_sig_flash'], true, $config['allow_sig_links'], true, 'sig');
@@ -505,6 +531,16 @@ class ucp_profile
'user_sig_bbcode_bitfield' => $message_parser->bbcode_bitfield
);
/**
* Modify user registration data before submitting it to the database
*
* @event core.ucp_profile_modify_signature_sql_ary
* @var array sql_ary Array with user signature data to submit to the database
* @since 3.1.10-RC1
*/
$vars = array('sql_ary');
extract($phpbb_dispatcher->trigger_event('core.ucp_profile_modify_signature_sql_ary', compact($vars)));
$sql = 'UPDATE ' . USERS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $sql_ary) . '
WHERE user_id = ' . $user->data['user_id'];

View File

@@ -184,8 +184,8 @@ if ($config['load_birthdays'] && $config['allow_birthdays'] && $auth->acl_gets('
* Event to modify the birthdays list
*
* @event core.index_modify_birthdays_list
* @var array birthdays Array with the users birhtdays data
* @var array rows Array with the birhtdays SQL query result
* @var array birthdays Array with the users birthdays data
* @var array rows Array with the birthdays SQL query result
* @since 3.1.7-RC1
*/
$vars = array('birthdays', 'rows');

View File

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

View File

@@ -211,13 +211,6 @@ while (!$migrator->finished())
phpbb_end_update($cache, $config);
}
$state = array_merge(array(
'migration_schema_done' => false,
'migration_data_done' => false,
),
$migrator->last_run_migration['state']
);
// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
if ((time() - $update_start_time) >= $safe_time_limit)
{

View File

@@ -151,10 +151,10 @@ class install_install extends module
'LEGEND_EXPLAIN' => $lang['PHP_SETTINGS_EXPLAIN'],
));
// Test the minimum PHP version
// Test the minimum and maximum version of PHP
$php_version = PHP_VERSION;
if (version_compare($php_version, '5.3.3') < 0)
if ((version_compare($php_version, '5.3.3') < 0) || (version_compare($php_version, '7.0.0-dev', '>=')))
{
$result = '<strong style="color:red">' . $lang['NO'] . '</strong>';
}
@@ -404,7 +404,7 @@ class install_install extends module
));
}
// Can we find Imagemagick anywhere on the system?
// Can we find ImageMagick anywhere on the system?
$exe = (DIRECTORY_SEPARATOR == '\\') ? '.exe' : '';
$magic_home = getenv('MAGICK_HOME');

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_path', 'files');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.9');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.1.10-RC1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');

View File

@@ -117,7 +117,7 @@ $lang = array_merge($lang, array(
'IMAGE_LINK_SIZE' => 'Image link dimensions',
'IMAGE_LINK_SIZE_EXPLAIN' => 'Display image attachment as an inline text link if image is larger than this. To disable this behaviour, set the values to 0px by 0px.',
'IMAGICK_PATH' => 'Imagemagick path',
'IMAGICK_PATH' => 'ImageMagick path',
'IMAGICK_PATH_EXPLAIN' => 'Full path to the imagemagick convert application, e.g. <samp>/usr/bin/</samp>.',
'MAX_ATTACHMENTS' => 'Maximum number of attachments per post',
@@ -153,7 +153,7 @@ $lang = array_merge($lang, array(
'REMOVE_DISALLOWED_IPS' => 'Remove or un-exclude <em>disallowed</em> IPs/hostnames',
'RESYNC_FILES_STATS_CONFIRM' => 'Are you sure you wish to resynchronise file statistics?',
'SEARCH_IMAGICK' => 'Search for Imagemagick',
'SEARCH_IMAGICK' => 'Search for ImageMagick',
'SECURE_ALLOW_DENY' => 'Allow/Deny list',
'SECURE_ALLOW_DENY_EXPLAIN' => 'Change the default behaviour when secure downloads are enabled of the Allow/Deny list to that of a <strong>whitelist</strong> (Allow) or a <strong>blacklist</strong> (Deny).',
'SECURE_DOWNLOADS' => 'Enable secure downloads',

View File

@@ -570,6 +570,7 @@ $lang = array_merge($lang, array(
'SMTP_PORT' => 'SMTP server port',
'SMTP_PORT_EXPLAIN' => 'Only change this if you know your SMTP server is on a different port.',
'SMTP_SERVER' => 'SMTP server address',
'SMTP_SERVER_EXPLAIN' => 'Note that you have to provide the protocol that your server uses. If you are using SSL, this has to be "ssl://your.mailserver.com"',
'SMTP_SETTINGS' => 'SMTP settings',
'SMTP_USERNAME' => 'SMTP username',
'SMTP_USERNAME_EXPLAIN' => 'Only enter a username if your SMTP server requires it.',

View File

@@ -54,7 +54,7 @@ $lang = array_merge($lang, array(
'DELETING_INDEX_IN_PROGRESS_EXPLAIN' => 'The search backend is currently cleaning its index. This can take a few minutes.',
'FULLTEXT_MYSQL_INCOMPATIBLE_DATABASE' => 'The MySQL fulltext backend can only be used with MySQL4 and above.',
'FULLTEXT_MYSQL_NOT_SUPPORTED' => 'MySQL fulltext indexes can only be used with MyISAM or InnoDB tables. MySQL 5.6.4 or later is required for fulltext indexes on InnoDB tables.',
'FULLTEXT_MYSQL_NOT_SUPPORTED' => 'MySQL fulltext indexes can only be used with MyISAM or InnoDB tables. MySQL 5.6.8 or later is required for fulltext indexes on InnoDB tables.',
'FULLTEXT_MYSQL_TOTAL_POSTS' => 'Total number of indexed posts',
'FULLTEXT_MYSQL_MIN_SEARCH_CHARS_EXPLAIN' => 'Words with at least this many characters will be indexed for searching. You or your host can only change this setting by changing the mysql configuration.',
'FULLTEXT_MYSQL_MAX_SEARCH_CHARS_EXPLAIN' => 'Words with no more than this many characters will be indexed for searching. You or your host can only change this setting by changing the mysql configuration.',

View File

@@ -2,7 +2,7 @@ Subject: Forum post notification - "{FORUM_NAME}"
Hello {USERNAME},
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}"<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the last unread reply, no more notifications will be sent until you visit the topic.
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new reply to the topic "{TOPIC_TITLE}"<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the last unread reply, no more notifications will be sent until you visit the topic.
{U_NEWEST_POST}

View File

@@ -2,7 +2,7 @@ Subject: New topic notification - "{FORUM_NAME}"
Hello {USERNAME},
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
{U_FORUM}

View File

@@ -2,7 +2,7 @@ Subject: New topic notification - "{FORUM_NAME}"
Hello {USERNAME},
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
You are receiving this notification because you are watching the forum "{FORUM_NAME}" at "{SITENAME}". This forum has received a new topic<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit, "{TOPIC_TITLE}". You can use the following link to view the forum, no more notifications will be sent until you visit the forum.
{U_FORUM}

View File

@@ -2,7 +2,7 @@ Subject: Topic reply notification - "{TOPIC_TITLE}"
Hello {USERNAME},
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. You can use the following link to view the replies made, no more notifications will be sent until you visit the topic.
If you want to view the newest post made since your last visit, click the following link:
{U_NEWEST_POST}

View File

@@ -2,7 +2,7 @@ Subject: Topic reply notification - "{TOPIC_TITLE}"
Hello {USERNAME},
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME !== '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. No more notifications will be sent until you visit the topic.
You are receiving this notification because you are watching the topic "{TOPIC_TITLE}" at "{SITENAME}". This topic has received a reply<!-- IF AUTHOR_NAME != '' --> by {AUTHOR_NAME}<!-- ENDIF --> since your last visit. No more notifications will be sent until you visit the topic.
If you want to view the newest post made since your last visit, click the following link:
{U_NEWEST_POST}

View File

@@ -44,7 +44,7 @@ $lang = array_merge($lang, array(
'ADMIN_TEST' => 'Check administrator settings',
'ADMIN_USERNAME' => 'Administrator username',
'ADMIN_USERNAME_EXPLAIN' => 'Please enter a username between 3 and 20 characters in length.',
'APP_MAGICK' => 'Imagemagick support [ Attachments ]',
'APP_MAGICK' => 'ImageMagick support [ Attachments ]',
'AUTHOR_NOTES' => 'Author notes<br />» %s',
'AVAILABLE' => 'Available',
'AVAILABLE_CONVERTORS' => 'Available convertors',
@@ -282,7 +282,7 @@ $lang = array_merge($lang, array(
'NOT_UNDERSTAND' => 'Could not understand %s #%d, table %s (“%s”)',
'NO_CONVERTORS' => 'No convertors are available for use.',
'NO_CONVERT_SPECIFIED' => 'No convertor specified.',
'NO_LOCATION' => 'Cannot determine location. If you know Imagemagick is installed, you may specify the location later within your administration control panel',
'NO_LOCATION' => 'Cannot determine location. If you know ImageMagick is installed, you may specify the location later within your administration control panel',
'NO_TABLES_FOUND' => 'No tables found.',
'OVERVIEW_BODY' => 'Welcome to phpBB3!<br /><br />phpBB® is the most widely used open source bulletin board solution in the world. phpBB3 is the latest installment in a package line started in 2000. Like its predecessors, phpBB3 is feature-rich, user-friendly, and fully supported by the phpBB Team. phpBB3 greatly improves on what made phpBB2 popular, and adds commonly requested features that were not present in previous versions. We hope it exceeds your expectations.<br /><br />This installation system will guide you through installing phpBB3, updating to the latest version of phpBB3 from past releases, as well as converting to phpBB3 from a different discussion board system (including phpBB2). For more information, we encourage you to read <a href="../docs/INSTALL.html">the installation guide</a>.<br /><br />To read the phpBB3 license or learn about obtaining support and our stance on it, please select the respective options from the side menu. To continue, please select the appropriate tab above.',
@@ -301,10 +301,10 @@ $lang = array_merge($lang, array(
'PHP_REGISTER_GLOBALS_EXPLAIN' => 'phpBB will still run if this setting is enabled, but if possible, it is recommended that register_globals is disabled on your PHP install for security reasons.',
'PHP_SAFE_MODE' => 'Safe mode',
'PHP_SETTINGS' => 'PHP version and settings',
'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 5.3.3 of PHP in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.',
'PHP_SETTINGS_EXPLAIN' => '<strong>Required</strong> - You must be running at least version 5.3.3 of PHP (PHP 7 is not supported) in order to install phpBB. If <var>safe mode</var> is displayed below your PHP installation is running in that mode. This will impose limitations on remote administration and similar features.',
'PHP_URL_FOPEN_SUPPORT' => 'PHP setting <var>allow_url_fopen</var> is enabled',
'PHP_URL_FOPEN_SUPPORT_EXPLAIN' => '<strong>Optional</strong> - This setting is optional, however certain phpBB functions like off-site avatars will not work properly without it.',
'PHP_VERSION_REQD' => 'PHP version >= 5.3.3',
'PHP_VERSION_REQD' => 'PHP version: >= 5.3.3, < 7.0.0-dev',
'POST_ID' => 'Post ID',
'PREFIX_FOUND' => 'A scan of your tables has shown a valid installation using <strong>%s</strong> as table prefix.',
'PREPROCESS_STEP' => 'Executing pre-processing functions/queries',
@@ -400,6 +400,7 @@ $lang = array_merge($lang, array(
'DATABASE_UPDATE_CONTINUE' => 'Continue database update',
'DATABASE_UPDATE_INFO_OLD' => 'The database update file within the install directory is outdated. Please make sure you uploaded the correct version of the file.',
'DATABASE_UPDATE_NOT_COMPLETED' => 'The database update has not yet completed.',
'DATABASE_VERSION' => 'Database version',
'DELETE_USER_REMOVE' => 'Delete user and remove posts',
'DELETE_USER_RETAIN' => 'Delete user but keep posts',
'DESTINATION' => 'Destination file',
@@ -439,6 +440,7 @@ $lang = array_merge($lang, array(
'FILES_NOT_MODIFIED_EXPLAIN' => 'The following files are not modified and represent the original phpBB files from the version you want to update from.',
'FILES_UP_TO_DATE' => 'Already updated files',
'FILES_UP_TO_DATE_EXPLAIN' => 'The following files are already up to date and do not need to be updated.',
'FILES_VERSION' => 'Files Version',
'FTP_SETTINGS' => 'FTP settings',
'FTP_UPDATE_METHOD' => 'FTP upload',
@@ -486,6 +488,7 @@ $lang = array_merge($lang, array(
'OLD_UPDATE_FILES' => 'Update files are out of date. The update files found are for updating from phpBB %1$s to phpBB %2$s but the latest version of phpBB is %3$s.',
'PACKAGE_UPDATES_TO' => 'Current package updates to version',
'PACKAGE_VERSION' => 'Package version installed',
'PERFORM_DATABASE_UPDATE' => 'Perform database update',
'PERFORM_DATABASE_UPDATE_EXPLAIN' => 'Below you will find a button to the database update script. The database update can take a while, so please do not stop the execution if it seems to hang. After the database update has been performed just follow the instructions to continue the update process.',
'PREVIOUS_VERSION' => 'Previous version',
@@ -530,6 +533,12 @@ $lang = array_merge($lang, array(
'UPDATE_DATABASE_SCHEMA' => 'Updating database schema',
'UPDATE_FILES' => 'Update files',
'UPDATE_FILES_NOTICE' => 'Please make sure you have updated your board files too, this file is only updating your database.',
'UPDATE_INCOMPLETE' => 'Your phpBB installation has not been correctly updated.',
'UPDATE_INCOMPLETE_MORE' => 'Please read the information below in order to fix this error.',
'UPDATE_INCOMPLETE_EXPLAIN' => '<h1>Incomplete update</h1>
<p>We noticed that the last update of your phpBB installation hasnt been completed. Visit the <a href="%1$s" title="%1$s">database_update script</a> and run it. If it is missing, please <a href="https://www.phpbb.com/downloads/" title="phpBB downloads">download your package version</a>, upload the "install" folder to your phpBB root directory (where your config.php file is) and <a href="%1$s" title="%1$s">run the database update script</a>.</p>',
'UPDATE_INSTALLATION' => 'Update phpBB installation',
'UPDATE_INSTALLATION_EXPLAIN' => 'With this option, it is possible to update your phpBB installation to the latest version.<br />During the process all of your files will be checked for their integrity. You are able to review all differences and files before the update.<br /><br />The file update itself can be done in two different ways.</p><h2>Manual Update</h2><p>With this update you only download your personal set of changed files to make sure you do not lose your file modifications you may have done. After you downloaded this package you need to manually upload the files to their correct position under your phpBB root directory. Once done, you are able to do the file check stage again to see if you moved the files to their correct location.</p><h2>Automatic Update with FTP</h2><p>This method is similar to the first one but without the need to download the changed files and uploading them on your own. This will be done for you. In order to use this method you need to know your FTP login details since you will be asked for them. Once finished you will be redirected to the file check again to make sure everything got updated correctly.<br /><br />',
'UPDATE_INSTRUCTIONS' => '

View File

@@ -50,6 +50,7 @@ $lang = array_merge($lang, array(
'MIGRATION_NOT_FULFILLABLE' => 'The migration "%1$s" is not fulfillable, missing migration "%2$s".',
'MIGRATION_NOT_VALID' => '%s is not a valid migration.',
'MIGRATION_SCHEMA_DONE' => 'Installed Schema: %1$s; Time: %2$.2f seconds',
'MIGRATION_SCHEMA_IN_PROGRESS' => 'Installing Schema: %1$s; Time: %2$.2f seconds',
'MIGRATION_SCHEMA_RUNNING' => 'Installing Schema: %s.',
'MIGRATION_INVALID_DATA_MISSING_CONDITION' => 'A migration is invalid. An if statement helper is missing a condition.',
@@ -60,9 +61,12 @@ $lang = array_merge($lang, array(
'MIGRATION_INVALID_DATA_UNDEFINED_METHOD' => 'A migration is invalid. An undefined migration tool method was encountered.',
'MODULE_ERROR' => 'An error occurred while creating a module: %s',
'MODULE_EXISTS' => 'A module already exists: %s',
'MODULE_EXIST_MULTIPLE' => 'Several modules with the given parent module langname already exist: %s. Try using before/after keys to clarify the module placement.',
'MODULE_INFO_FILE_NOT_EXIST' => 'A required module info file is missing: %2$s',
'MODULE_NOT_EXIST' => 'A required module does not exist: %s',
'PARENT_MODULE_FIND_ERROR' => 'Unable to determine the parent module identifier: %s',
'PERMISSION_NOT_EXIST' => 'The permission setting "%s" unexpectedly does not exist.',
'ROLE_NOT_EXIST' => 'The permission role "%s" unexpectedly does not exist.',

View File

@@ -90,14 +90,20 @@ $lang = array_merge($lang, array(
'DELETE_PERMANENTLY' => 'Delete permanently',
'DELETE_POST_CONFIRM' => 'Are you sure you want to delete this post?',
'DELETE_POST_PERMANENTLY_CONFIRM' => 'Are you sure you want to <strong>permanently</strong> delete this post?',
'DELETE_POST_PERMANENTLY' => 'Permanently delete this post so it can not be recovered',
'DELETE_POST_PERMANENTLY' => array(
1 => 'Permanently delete this post so it can not be recovered',
2 => 'Permanently delete %1$d posts so they can not be recovered',
),
'DELETE_POSTS_CONFIRM' => 'Are you sure you want to delete these posts?',
'DELETE_POSTS_PERMANENTLY_CONFIRM' => 'Are you sure you want to <strong>permanently</strong> delete these posts?',
'DELETE_REASON' => 'Reason for deletion',
'DELETE_REASON_EXPLAIN' => 'The specified reason for deletion will be visible to moderators.',
'DELETE_POST_WARN' => 'Delete this post',
'DELETE_TOPIC_CONFIRM' => 'Are you sure you want to delete this topic?',
'DELETE_TOPIC_PERMANENTLY' => 'Permanently delete this topic so it can not be recovered',
'DELETE_TOPIC_PERMANENTLY' => array(
1 => 'Permanently delete this topic so it can not be recovered',
2 => 'Permanently delete %1$d topics so they can not be recovered',
),
'DELETE_TOPIC_PERMANENTLY_CONFIRM' => 'Are you sure you want to <strong>permanently</strong> delete this topic?',
'DELETE_TOPICS_CONFIRM' => 'Are you sure you want to delete these topics?',
'DELETE_TOPICS_PERMANENTLY_CONFIRM' => 'Are you sure you want to <strong>permanently</strong> delete these topics?',

View File

@@ -1,271 +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.
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
$words = array(
'a',
'about',
'after',
'ago',
'all',
'almost',
'along',
'alot',
'also',
'am',
'an',
'and',
'answer',
'any',
'anybody',
'anybodys',
'anywhere',
'are',
'arent',
'around',
'as',
'ask',
'askd',
'at',
'bad',
'be',
'because',
'been',
'before',
'being',
'best',
'better',
'between',
'big',
'btw',
'but',
'by',
'can',
'cant',
'come',
'could',
'couldnt',
'day',
'days',
'days',
'did',
'didnt',
'do',
'does',
'doesnt',
'dont',
'down',
'each',
'etc',
'either',
'else',
'even',
'ever',
'every',
'everybody',
'everybodys',
'everyone',
'far',
'find',
'for',
'found',
'from',
'get',
'go',
'going',
'gone',
'good',
'got',
'gotten',
'had',
'has',
'have',
'havent',
'having',
'her',
'here',
'hers',
'him',
'his',
'home',
'how',
'hows',
'href',
'I',
'Ive',
'if',
'in',
'ini',
'into',
'is',
'isnt',
'it',
'its',
'its',
'just',
'know',
'large',
'less',
'like',
'liked',
'little',
'looking',
'look',
'looked',
'looking',
'lot',
'maybe',
'many',
'me',
'more',
'most',
'much',
'must',
'mustnt',
'my',
'near',
'need',
'never',
'new',
'news',
'no',
'none',
'not',
'nothing',
'now',
'of',
'off',
'often',
'old',
'on',
'once',
'only',
'oops',
'or',
'other',
'our',
'ours',
'out',
'over',
'page',
'please',
'put',
'question',
'questions',
'questioned',
'quote',
'rather',
'really',
'recent',
'said',
'saw',
'say',
'says',
'she',
'see',
'sees',
'should',
'sites',
'small',
'so',
'some',
'something',
'sometime',
'somewhere',
'soon',
'take',
'than',
'true',
'thank',
'that',
'thatd',
'thats',
'the',
'their',
'theirs',
'theres',
'theirs',
'them',
'then',
'there',
'these',
'they',
'theyll',
'theyd',
'theyre',
'this',
'those',
'though',
'through',
'thus',
'time',
'times',
'to',
'too',
'under',
'until',
'untrue',
'up',
'upon',
'use',
'users',
'version',
'very',
'via',
'want',
'was',
'way',
'we',
'well',
'went',
'were',
'werent',
'what',
'when',
'where',
'which',
'who',
'whom',
'whose',
'why',
'wide',
'will',
'with',
'within',
'without',
'wont',
'world',
'worse',
'worst',
'would',
'wrote',
'www',
'yes',
'yet',
'you',
'youd',
'youll',
'your',
'youre',
'yours',
'AFAIK',
'IIRC',
'LOL',
'ROTF',
'ROTFLMAO',
'YMMV',
);

View File

@@ -1,191 +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.
*
*/
if (!defined('IN_PHPBB'))
{
exit;
}
$synonyms = array(
'abcense' => 'absence',
'abridgement' => 'abridgment',
'accomodate' => 'accommodate',
'acknowledgment' => 'acknowledgement',
'airplane' => 'aeroplane',
'allright' => 'alright ',
'andy' => 'andrew',
'anemia' => 'anaemia',
'anemic' => 'anaemic',
'anesthesia' => 'anaesthesia',
'apologize' => 'apologise',
'archean' => 'archaean',
'archeology' => 'archaeology',
'archeozoic' => 'archaeozoic',
'armor' => 'armour',
'artic' => 'arctic',
'attachment' => 'attachement',
'attendence' => 'attendance',
'barbecue' => 'barbeque',
'behavior' => 'behaviour',
'biassed' => 'biased',
'biol' => 'biology',
'buletin' => 'bulletin',
'calender' => 'calendar',
'canceled' => 'cancelled',
'car' => 'automobile',
'catalog' => 'catalogue',
'cenozoic' => 'caenozoic',
'center' => 'centre',
'check' => 'cheque',
'color' => 'colour',
'comission' => 'commission',
'comittee' => 'committee',
'commitee' => 'committee',
'conceed' => 'concede',
'creating' => 'createing',
'curiculum' => 'curriculum',
'defense' => 'defence',
'develope' => 'develop',
'discription' => 'description',
'dulness' => 'dullness',
'encyclopedia' => 'encyclopaedia',
'enroll' => 'enrol',
'esthetic' => 'aesthetic',
'etiology' => 'aetiology',
'exhorbitant' => 'exorbitant',
'exhuberant' => 'exuberant',
'existance' => 'existence',
'favorite' => 'favourite',
'fetus' => 'foetus',
'ficticious' => 'fictitious',
'flavor' => 'flavour',
'flourescent' => 'fluorescent',
'foriegn' => 'foreign',
'fourty' => 'forty',
'gage' => 'gauge',
'geneology' => 'genealogy',
'grammer' => 'grammar',
'gray' => 'grey',
'guerilla' => 'guerrilla',
'gynecology' => 'gynaecology',
'harbor' => 'harbour',
'heighth' => 'height',
'hemaglobin' => 'haemaglobin',
'hematin' => 'haematin',
'hematite' => 'haematite',
'hematology' => 'haematology',
'honor' => 'honour',
'innoculate' => 'inoculate',
'installment' => 'instalment',
'irrelevent' => 'irrelevant',
'irrevelant' => 'irrelevant',
'jeweler' => 'jeweller',
'judgment' => 'judgement',
'labeled' => 'labelled',
'labor' => 'labour',
'laborer' => 'labourer',
'laborers' => 'labourers',
'laboring' => 'labouring',
'licence' => 'license',
'liesure' => 'leisure',
'liquify' => 'liquefy',
'maintainance' => 'maintenance',
'maintenence' => 'maintenance',
'medieval' => 'mediaeval',
'meter' => 'metre',
'milage' => 'mileage',
'millipede' => 'millepede',
'miscelaneous' => 'miscellaneous',
'morgage' => 'mortgage',
'noticable' => 'noticeable',
'occurence' => 'occurrence',
'offense' => 'offence',
'ommision' => 'omission',
'ommission' => 'omission',
'optimize' => 'optimise',
'organize' => 'organise',
'pajamas' => 'pyjamas',
'paleography' => 'palaeography',
'paleolithic' => 'palaeolithic',
'paleontological' => 'palaeontological',
'paleontologist' => 'palaeontologist',
'paleontology' => 'palaeontology',
'paleozoic' => 'palaeozoic',
'pamplet' => 'pamphlet',
'paralell' => 'parallel',
'parl' => 'parliament',
'parlt' => 'parliament',
'pediatric' => 'paediatric',
'pediatrician' => 'paediatrician',
'pediatrics' => 'paediatrics',
'pedodontia' => 'paedodontia',
'pedodontics' => 'paedodontics',
'personel' => 'personnel',
'practise' => 'practice',
'program' => 'programme',
'psych' => 'psychology',
'questionaire' => 'questionnaire',
'rarify' => 'rarefy',
'reccomend' => 'recommend',
'recieve' => 'receive',
'resistence' => 'resistance',
'restaraunt' => 'restaurant',
'savior' => 'saviour',
'sep' => 'september',
'seperate' => 'separate',
'sept' => 'september',
'sieze' => 'seize',
'summarize' => 'summarise',
'summerize' => 'summarise',
'superceed' => 'supercede',
'superintendant' => 'superintendent',
'supersede' => 'supercede',
'suprise' => 'surprise',
'surprize' => 'surprise',
'synchronise' => 'synchronize',
'temperary' => 'temporary',
'theater' => 'theatre',
'threshhold' => 'threshold',
'transfered' => 'transferred',
'truely' => 'truly',
'truley' => 'truly',
'useable' => 'usable',
'valor' => 'valour',
'vigor' => 'vigour',
'vol' => 'volume',
'whack' => 'wack',
'withold' => 'withhold',
'yeild' => 'yield',
);

View File

@@ -52,8 +52,8 @@ class gravatar extends \phpbb\avatar\driver\driver
public function prepare_form($request, $template, $user, $row, &$error)
{
$template->assign_vars(array(
'AVATAR_GRAVATAR_WIDTH' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_width']) ? $row['avatar_width'] : $request->variable('avatar_gravatar_width', 0),
'AVATAR_GRAVATAR_HEIGHT' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_height']) ? $row['avatar_height'] : $request->variable('avatar_gravatar_width', 0),
'AVATAR_GRAVATAR_WIDTH' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_width']) ? $row['avatar_width'] : $request->variable('avatar_gravatar_width', ''),
'AVATAR_GRAVATAR_HEIGHT' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar_height']) ? $row['avatar_height'] : $request->variable('avatar_gravatar_width', ''),
'AVATAR_GRAVATAR_EMAIL' => (($row['avatar_type'] == $this->get_name() || $row['avatar_type'] == 'gravatar') && $row['avatar']) ? $row['avatar'] : '',
));

View File

@@ -36,8 +36,8 @@ class remote extends \phpbb\avatar\driver\driver
public function prepare_form($request, $template, $user, $row, &$error)
{
$template->assign_vars(array(
'AVATAR_REMOTE_WIDTH' => ((in_array($row['avatar_type'], array(AVATAR_REMOTE, $this->get_name(), 'remote'))) && $row['avatar_width']) ? $row['avatar_width'] : $request->variable('avatar_remote_width', 0),
'AVATAR_REMOTE_HEIGHT' => ((in_array($row['avatar_type'], array(AVATAR_REMOTE, $this->get_name(), 'remote'))) && $row['avatar_height']) ? $row['avatar_height'] : $request->variable('avatar_remote_width', 0),
'AVATAR_REMOTE_WIDTH' => ((in_array($row['avatar_type'], array(AVATAR_REMOTE, $this->get_name(), 'remote'))) && $row['avatar_width']) ? $row['avatar_width'] : $request->variable('avatar_remote_width', ''),
'AVATAR_REMOTE_HEIGHT' => ((in_array($row['avatar_type'], array(AVATAR_REMOTE, $this->get_name(), 'remote'))) && $row['avatar_height']) ? $row['avatar_height'] : $request->variable('avatar_remote_width', ''),
'AVATAR_REMOTE_URL' => ((in_array($row['avatar_type'], array(AVATAR_REMOTE, $this->get_name(), 'remote'))) && $row['avatar']) ? $row['avatar'] : '',
));

View File

@@ -222,7 +222,11 @@ class qa
{
global $phpbb_log, $template, $user;
if ($this->is_solved() || empty($this->question_text) || !count($this->question_ids))
if ($this->is_solved())
{
return false;
}
else if (empty($this->question_text) || !count($this->question_ids))
{
/** @var \phpbb\log\log_interface $phpbb_log */
$phpbb_log->add('critical', $user->data['user_id'], $user->ip, 'LOG_ERROR_CAPTCHA', time(), array($user->lang('CONFIRM_QUESTION_MISSING')));
@@ -231,10 +235,10 @@ class qa
else
{
$template->assign_vars(array(
'QA_CONFIRM_QUESTION' => $this->question_text,
'QA_CONFIRM_ID' => $this->confirm_id,
'S_CONFIRM_CODE' => true,
'S_TYPE' => $this->type,
'QA_CONFIRM_QUESTION' => $this->question_text,
'QA_CONFIRM_ID' => $this->confirm_id,
'S_CONFIRM_CODE' => true,
'S_TYPE' => $this->type,
));
return 'captcha_qa.html';

View File

@@ -417,13 +417,46 @@ class content_visibility
return array();
}
if (!function_exists('truncate_string'))
{
include($this->phpbb_root_path . 'includes/functions_content.' . $this->php_ext);
}
$data = array(
'post_visibility' => (int) $visibility,
'post_delete_user' => (int) $user_id,
'post_delete_time' => ((int) $time) ?: time(),
'post_delete_reason' => truncate_string($reason, 255, 255, false),
);
/**
* Perform actions right before the query to change post visibility
*
* @event core.set_post_visibility_before_sql
* @var int visibility Element of {ITEM_APPROVED, ITEM_DELETED, ITEM_REAPPROVE}
* @var array post_id Array containing all post IDs to be modified. If blank, all posts within the topic are modified.
* @var int topic_id Topic of the post IDs to be modified.
* @var int forum_id Forum ID that the topic_id resides in.
* @var int user_id User ID doing this action.
* @var int timestamp Timestamp of this action.
* @var string reason Reason specified by the user for this change.
* @var bool is_starter Are we changing the topic's starter?
* @var bool is_latest Are we changing the topic's latest post?
* @var array data The data array for this action.
* @since 3.1.10-RC1
*/
$vars = array(
'visibility',
'post_id',
'topic_id',
'forum_id',
'user_id',
'timestamp',
'reason',
'is_starter',
'is_latest',
'data',
);
extract($this->phpbb_dispatcher->trigger_event('core.set_post_visibility_before_sql', compact($vars)));
$sql = 'UPDATE ' . $this->posts_table . '
SET ' . $this->db->sql_build_array('UPDATE', $data) . '
WHERE ' . $this->db->sql_in_set('post_id', $post_ids);
@@ -580,7 +613,35 @@ class content_visibility
WHERE topic_id = ' . (int) $topic_id;
$this->db->sql_query($sql);
}
/**
* Perform actions after all steps to changing post visibility
*
* @event core.set_post_visibility_after
* @var int visibility Element of {ITEM_APPROVED, ITEM_DELETED, ITEM_REAPPROVE}
* @var array post_id Array containing all post IDs to be modified. If blank, all posts within the topic are modified.
* @var int topic_id Topic of the post IDs to be modified.
* @var int forum_id Forum ID that the topic_id resides in.
* @var int user_id User ID doing this action.
* @var int timestamp Timestamp of this action.
* @var string reason Reason specified by the user for this change.
* @var bool is_starter Are we changing the topic's starter?
* @var bool is_latest Are we changing the topic's latest post?
* @var array data The data array for this action.
* @since 3.1.10-RC1
*/
$vars = array(
'visibility',
'post_id',
'topic_id',
'forum_id',
'user_id',
'timestamp',
'reason',
'is_starter',
'is_latest',
'data',
);
extract($this->phpbb_dispatcher->trigger_event('core.set_post_visibility_after', compact($vars)));
return $data;
}
@@ -628,6 +689,11 @@ class content_visibility
}
}
if (!function_exists('truncate_string'))
{
include($this->phpbb_root_path . 'includes/functions_content.' . $this->php_ext);
}
// Note, we do not set a reason for the posts, just for the topic
$data = array(
'topic_visibility' => (int) $visibility,
@@ -635,7 +701,31 @@ class content_visibility
'topic_delete_time' => ((int) $time) ?: time(),
'topic_delete_reason' => truncate_string($reason, 255, 255, false),
);
/**
* Perform actions right before the query to change topic visibility
*
* @event core.set_topic_visibility_before_sql
* @var int visibility Element of {ITEM_APPROVED, ITEM_DELETED, ITEM_REAPPROVE}
* @var int topic_id Topic of the post IDs to be modified.
* @var int forum_id Forum ID that the topic_id resides in.
* @var int user_id User ID doing this action.
* @var int timestamp Timestamp of this action.
* @var string reason Reason specified by the user for this change.
* @var bool force_update_all Force an update on all posts within the topic, regardless of their current approval state.
* @var array data The data array for this action.
* @since 3.1.10-RC1
*/
$vars = array(
'visibility',
'topic_id',
'forum_id',
'user_id',
'timestamp',
'reason',
'force_update_all',
'data',
);
extract($this->phpbb_dispatcher->trigger_event('core.set_topic_visibility_before_sql', compact($vars)));
$sql = 'UPDATE ' . $this->topics_table . '
SET ' . $this->db->sql_build_array('UPDATE', $data) . '
WHERE topic_id = ' . (int) $topic_id;
@@ -660,7 +750,31 @@ class content_visibility
{
$this->set_post_visibility($visibility, false, $topic_id, $forum_id, $user_id, $time, '', true, true);
}
/**
* Perform actions after all steps to changing topic visibility
*
* @event core.set_topic_visibility_after
* @var int visibility Element of {ITEM_APPROVED, ITEM_DELETED, ITEM_REAPPROVE}
* @var int topic_id Topic of the post IDs to be modified.
* @var int forum_id Forum ID that the topic_id resides in.
* @var int user_id User ID doing this action.
* @var int timestamp Timestamp of this action.
* @var string reason Reason specified by the user for this change.
* @var bool force_update_all Force an update on all posts within the topic, regardless of their current approval state.
* @var array data The data array for this action.
* @since 3.1.10-RC1
*/
$vars = array(
'visibility',
'topic_id',
'forum_id',
'user_id',
'timestamp',
'reason',
'force_update_all',
'data',
);
extract($this->phpbb_dispatcher->trigger_event('core.set_topic_visibility_after', compact($vars)));
return $data;
}

View File

@@ -110,7 +110,7 @@ class manager
* Web runner uses this method to resolve names to tasks.
*
* @param string $name Name of the task to look up.
* @return \phpbb\cron\task\task A task corresponding to the given name, or null.
* @return \phpbb\cron\task\wrapper A wrapped task corresponding to the given name, or null.
*/
public function find_task($name)
{

View File

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

View File

@@ -81,4 +81,36 @@ class helper
return $steps;
}
/**
* Reverse the update steps from an array of data changes
*
* 'If' statements and custom methods will be skipped, for all
* other calls the reverse method of the tool class will be called
*
* @param array $steps Update changes from migration
*
* @return array
*/
public function reverse_update_data($steps)
{
$reversed_array = array();
foreach ($steps as $step)
{
$parts = explode('.', $step[0]);
$parameters = $step[1];
$class = $parts[0];
$method = isset($parts[1]) ? $parts[1] : false;
if ($class !== 'if' && $class !== 'custom')
{
array_unshift($parameters, $method);
$reversed_array[] = array($class . '.reverse', $parameters);
}
}
return array_reverse($reversed_array);
}
}

View File

@@ -150,6 +150,11 @@ class config implements \phpbb\db\migration\tool\tool_interface
$arguments[0],
);
break;
case 'reverse':
// Reversing a reverse is just the call itself
$call = array_shift($arguments);
break;
}
if ($call)

View File

@@ -115,6 +115,11 @@ class config_text implements \phpbb\db\migration\tool\tool_interface
$arguments[] = '';
}
break;
case 'reverse':
// Reversing a reverse is just the call itself
$call = array_shift($arguments);
break;
}
if ($call)

View File

@@ -36,6 +36,9 @@ class module implements \phpbb\db\migration\tool\tool_interface
/** @var string */
protected $modules_table;
/** @var array */
protected $module_categories = array();
/**
* Constructor
*
@@ -87,30 +90,8 @@ class module implements \phpbb\db\migration\tool\tool_interface
$parent_sql = '';
if ($parent !== false)
{
// Allows '' to be sent as 0
$parent = $parent ?: 0;
if (!is_numeric($parent))
{
$sql = 'SELECT module_id
FROM ' . $this->modules_table . "
WHERE module_langname = '" . $this->db->sql_escape($parent) . "'
AND module_class = '" . $this->db->sql_escape($class) . "'";
$result = $this->db->sql_query($sql);
$module_id = $this->db->sql_fetchfield('module_id');
$this->db->sql_freeresult($result);
if (!$module_id)
{
return false;
}
$parent_sql = 'AND parent_id = ' . (int) $module_id;
}
else
{
$parent_sql = 'AND parent_id = ' . (int) $parent;
}
$parent = $this->get_parent_module_id($parent, $module);
$parent_sql = 'AND parent_id = ' . (int) $parent;
}
$sql = 'SELECT module_id
@@ -171,15 +152,14 @@ class module implements \phpbb\db\migration\tool\tool_interface
*/
public function add($class, $parent = 0, $data = array())
{
// Allows '' to be sent as 0
$parent = $parent ?: 0;
// allow sending the name as a string in $data to create a category
if (!is_array($data))
{
$data = array('module_langname' => $data);
}
$parent = $data['parent_id'] = $this->get_parent_module_id($parent, $data);
if (!isset($data['module_langname']))
{
// The "automatic" way
@@ -210,31 +190,14 @@ class module implements \phpbb\db\migration\tool\tool_interface
}
// The "manual" way
if (!is_numeric($parent))
{
$sql = 'SELECT module_id
FROM ' . $this->modules_table . "
WHERE module_langname = '" . $this->db->sql_escape($parent) . "'
AND module_class = '" . $this->db->sql_escape($class) . "'";
$result = $this->db->sql_query($sql);
$module_id = $this->db->sql_fetchfield('module_id');
$this->db->sql_freeresult($result);
if (!$module_id)
{
throw new \phpbb\db\migration\exception('MODULE_NOT_EXIST', $parent);
}
$parent = $data['parent_id'] = $module_id;
}
else if (!$this->exists($class, false, $parent))
if (!$this->exists($class, false, $parent))
{
throw new \phpbb\db\migration\exception('MODULE_NOT_EXIST', $parent);
}
if ($this->exists($class, $parent, $data['module_langname']))
{
return;
throw new \phpbb\db\migration\exception('MODULE_EXISTS', $module_id);
}
if (!class_exists('acp_modules'))
@@ -373,26 +336,8 @@ class module implements \phpbb\db\migration\tool\tool_interface
$parent_sql = '';
if ($parent !== false)
{
// Allows '' to be sent as 0
$parent = ($parent) ?: 0;
if (!is_numeric($parent))
{
$sql = 'SELECT module_id
FROM ' . $this->modules_table . "
WHERE module_langname = '" . $this->db->sql_escape($parent) . "'
AND module_class = '" . $this->db->sql_escape($class) . "'";
$result = $this->db->sql_query($sql);
$module_id = $this->db->sql_fetchfield('module_id');
$this->db->sql_freeresult($result);
// we know it exists from the module_exists check
$parent_sql = 'AND parent_id = ' . (int) $module_id;
}
else
{
$parent_sql = 'AND parent_id = ' . (int) $parent;
}
$parent = $this->get_parent_module_id($parent, $module);
$parent_sql = 'AND parent_id = ' . (int) $parent;
}
$module_ids = array();
@@ -454,6 +399,11 @@ class module implements \phpbb\db\migration\tool\tool_interface
case 'remove':
$call = 'add';
break;
case 'reverse':
// Reversing a reverse is just the call itself
$call = array_shift($arguments);
break;
}
if ($call)
@@ -487,4 +437,110 @@ class module implements \phpbb\db\migration\tool\tool_interface
return array_pop($module);
}
/**
* Get the list of installed module categories
* key - module_id
* value - module_langname
*
* @return null
*/
protected function get_categories_list()
{
// Select the top level categories
// and 2nd level [sub]categories which exist for ACP only
$sql = 'SELECT m2.module_id, m2.module_langname
FROM ' . $this->modules_table . ' m1, ' . $this->modules_table . " m2
WHERE m1.parent_id = 0
AND (m1.module_id = m2.module_id
OR m2.module_class = 'acp' AND m2.parent_id = m1.module_id)
ORDER BY m1.module_id, m2.module_id ASC";
$result = $this->db->sql_query($sql);
while ($row = $this->db->sql_fetchrow($result))
{
$this->module_categories[(int) $row['module_id']] = $row['module_langname'];
}
$this->db->sql_freeresult($result);
}
/**
* Get parent module id
*
* @param string|int $parent_id The parent module_id|module_langname
* @param int|string|array $data The module_id, module_langname for existance checking or module data array for adding
* @return int The parent module_id
* @throws \phpbb\db\migration\exception
*/
public function get_parent_module_id($parent_id, $data = '')
{
// Allow '' to be sent as 0
$parent_id = $parent_id ?: 0;
// If automatic adding is in action, convert array back to string to simplify things
if (is_array($data) && sizeof($data) == 1)
{
$data = $data['module_langname'];
}
if (!is_numeric($parent_id))
{
// Refresh the $module_categories array
$this->get_categories_list();
// Search for the parent module_langname
$ids = array_keys($this->module_categories, $parent_id);
switch (sizeof($ids))
{
// No parent with the given module_langname exist
case 0:
throw new \phpbb\db\migration\exception('MODULE_NOT_EXIST', $parent_id);
break;
// Return the module id
case 1:
$parent_id = (int) $ids[0];
break;
// Several modules with the given module_langname were found
// Try to determine the parent_id by the neighbour module parent
default:
if (is_array($data) && (isset($data['before']) || isset($data['after'])))
{
$neighbour_module_langname = isset($data['before']) ? $data['before'] : $data['after'];
$sql = 'SELECT parent_id
FROM ' . $this->modules_table . "
WHERE module_langname = '" . $this->db->sql_escape($neighbour_module_langname) . "'
AND " . $this->db->sql_in_set('parent_id', $ids);
$result = $this->db->sql_query($sql);
$parent_id = (int) $this->db->sql_fetchfield('parent_id');
if (!$parent_id)
{
throw new \phpbb\db\migration\exception('PARENT_MODULE_FIND_ERROR', $data['parent_id']);
}
}
else if (!empty($data) && !is_array($data))
{
// The module_langname is set, checking for the module existance
// As more than 1 parents were found already, there's no way for null parent_id here
$sql = 'SELECT m2.module_id as module_parent_id
FROM ' . $this->modules_table . ' m1, ' . $this->modules_table . " m2
WHERE " . ((is_numeric($data)) ? 'm1.module_id = ' . (int) $data : "m1.module_langname = '" . $this->db->sql_escape($data)) . "'
AND m2.module_id = m1.parent_id
AND " . $this->db->sql_in_set('m2.module_id', $ids);
$result = $this->db->sql_query($sql);
$parent_id = (int) $this->db->sql_fetchfield('module_parent_id');
}
else
{
//Unable to get the parent module id, throwing an exception
throw new \phpbb\db\migration\exception('MODULE_EXIST_MULTIPLE', $parent_id);
}
break;
}
}
return $parent_id;
}
}

View File

@@ -637,6 +637,11 @@ class permission implements \phpbb\db\migration\tool\tool_interface
$arguments[0],
);
break;
case 'reverse':
// Reversing a reverse is just the call itself
$call = array_shift($arguments);
break;
}
if ($call)

View File

@@ -80,14 +80,14 @@ class migrator
*
* @var array
*/
public $last_run_migration = false;
protected $last_run_migration = false;
/**
* The output handler. A null handler is configured by default.
*
* @var migrator_output_handler_interface
*/
public $output_handler;
protected $output_handler;
/**
* Constructor of the database migrator
@@ -152,6 +152,7 @@ class migrator
$this->migration_state[$migration['migration_name']] = $migration;
$this->migration_state[$migration['migration_name']]['migration_depends_on'] = unserialize($migration['migration_depends_on']);
$this->migration_state[$migration['migration_name']]['migration_data_state'] = !empty($migration['migration_data_state']) ? unserialize($migration['migration_data_state']) : '';
}
}
@@ -160,6 +161,19 @@ class migrator
$this->db->sql_return_on_error(false);
}
/**
* Get an array with information about the last migration run.
*
* The array contains 'name', 'class' and 'state'. 'effectively_installed' is set
* and set to true if the last migration was effectively_installed.
*
* @return array
*/
public function get_last_run_migration()
{
return $this->last_run_migration;
}
/**
* Sets the list of available migration class names to the given array.
*
@@ -297,38 +311,70 @@ class migrator
if (!$state['migration_schema_done'])
{
$this->output_handler->write(array('MIGRATION_SCHEMA_RUNNING', $name), migrator_output_handler_interface::VERBOSITY_VERBOSE);
$verbosity = empty($state['migration_data_state']) ?
migrator_output_handler_interface::VERBOSITY_VERBOSE : migrator_output_handler_interface::VERBOSITY_DEBUG;
$this->output_handler->write(array('MIGRATION_SCHEMA_RUNNING', $name), $verbosity);
$this->last_run_migration['task'] = 'process_schema_step';
$total_time = (is_array($state['migration_data_state']) && isset($state['migration_data_state']['_total_time'])) ?
$state['migration_data_state']['_total_time'] : 0.0;
$elapsed_time = microtime(true);
$steps = $this->helper->get_schema_steps($migration->update_schema());
$result = $this->process_data_step($steps, $state['migration_data_state']);
$elapsed_time = microtime(true) - $elapsed_time;
$total_time += $elapsed_time;
if (is_array($result))
{
$result['_total_time'] = $total_time;
}
$state['migration_data_state'] = ($result === true) ? '' : $result;
$state['migration_schema_done'] = ($result === true);
$this->output_handler->write(array('MIGRATION_SCHEMA_DONE', $name, $elapsed_time), migrator_output_handler_interface::VERBOSITY_NORMAL);
if ($state['migration_schema_done'])
{
$this->output_handler->write(array('MIGRATION_SCHEMA_DONE', $name, $total_time), migrator_output_handler_interface::VERBOSITY_NORMAL);
}
else
{
$this->output_handler->write(array('MIGRATION_SCHEMA_IN_PROGRESS', $name, $elapsed_time), migrator_output_handler_interface::VERBOSITY_VERY_VERBOSE);
}
}
else if (!$state['migration_data_done'])
{
try
{
$this->output_handler->write(array('MIGRATION_DATA_RUNNING', $name), migrator_output_handler_interface::VERBOSITY_VERBOSE);
$verbosity = empty($state['migration_data_state']) ?
migrator_output_handler_interface::VERBOSITY_VERBOSE : migrator_output_handler_interface::VERBOSITY_DEBUG;
$this->output_handler->write(array('MIGRATION_DATA_RUNNING', $name), $verbosity);
$this->last_run_migration['task'] = 'process_data_step';
$total_time = (is_array($state['migration_data_state']) && isset($state['migration_data_state']['_total_time'])) ?
$state['migration_data_state']['_total_time'] : 0.0;
$elapsed_time = microtime(true);
$result = $this->process_data_step($migration->update_data(), $state['migration_data_state']);
$elapsed_time = microtime(true) - $elapsed_time;
$total_time += $elapsed_time;
if (is_array($result))
{
$result['_total_time'] = $total_time;
}
$state['migration_data_state'] = ($result === true) ? '' : $result;
$state['migration_data_done'] = ($result === true);
$state['migration_end_time'] = ($result === true) ? time() : 0;
if ($state['migration_schema_done'])
if ($state['migration_data_done'])
{
$this->output_handler->write(array('MIGRATION_DATA_DONE', $name, $elapsed_time), migrator_output_handler_interface::VERBOSITY_NORMAL);
$this->output_handler->write(array('MIGRATION_DATA_DONE', $name, $total_time), migrator_output_handler_interface::VERBOSITY_NORMAL);
}
else
{
@@ -337,10 +383,12 @@ class migrator
}
catch (\phpbb\db\migration\exception $e)
{
// Revert the schema changes
// Reset data state and revert the schema changes
$state['migration_data_state'] = '';
$this->set_migration_state($name, $state);
$this->revert_do($name);
// Rethrow exception
throw $e;
}
}
@@ -416,19 +464,11 @@ class migrator
if ($state['migration_data_done'])
{
if ($state['migration_data_state'] !== 'revert_data')
{
$result = $this->process_data_step($migration->update_data(), $state['migration_data_state'], true);
$steps = array_merge($this->helper->reverse_update_data($migration->update_data()), $migration->revert_data());
$result = $this->process_data_step($steps, $state['migration_data_state']);
$state['migration_data_state'] = ($result === true) ? 'revert_data' : $result;
}
else
{
$result = $this->process_data_step($migration->revert_data(), '', false);
$state['migration_data_state'] = ($result === true) ? '' : $result;
$state['migration_data_done'] = ($result === true) ? false : true;
}
$state['migration_data_state'] = ($result === true) ? '' : $result;
$state['migration_data_done'] = ($result === true) ? false : true;
$this->set_migration_state($name, $state);
}
@@ -446,8 +486,13 @@ class migrator
WHERE migration_name = '" . $this->db->sql_escape($name) . "'";
$this->db->sql_query($sql);
$this->last_run_migration = false;
unset($this->migration_state[$name]);
}
else
{
$this->set_migration_state($name, $state);
}
}
return true;
@@ -464,7 +509,12 @@ class migrator
*/
protected function process_data_step($steps, $state, $revert = false)
{
$state = ($state) ? unserialize($state) : false;
if (sizeof($steps) === 0)
{
return true;
}
$state = is_array($state) ? $state : false;
// reverse order of steps if reverting
if ($revert === true)
@@ -472,54 +522,45 @@ class migrator
$steps = array_reverse($steps);
}
foreach ($steps as $step_identifier => $step)
$step = $last_result = 0;
if ($state)
{
$last_result = 0;
if ($state)
$step = $state['step'];
// We send the result from last time to the callable function
$last_result = $state['result'];
}
try
{
// Result will be null or true if everything completed correctly
// Stop after each update step, to let the updater control the script runtime
$result = $this->run_step($steps[$step], $last_result, $revert);
if (($result !== null && $result !== true) || $step + 1 < sizeof($steps))
{
// Continue until we reach the step that matches the last step called
if ($state['step'] != $step_identifier)
return array(
'result' => $result,
// Move on if the last call finished
'step' => ($result !== null && $result !== true) ? $step : $step + 1,
);
}
}
catch (\phpbb\db\migration\exception $e)
{
// We should try rolling back here
foreach ($steps as $reverse_step_identifier => $reverse_step)
{
// If we've reached the current step we can break because we reversed everything that was run
if ($reverse_step_identifier == $step)
{
continue;
break;
}
// We send the result from last time to the callable function
$last_result = $state['result'];
// Set state to false since we reached the point we were at
$state = false;
// Reverse the step that was run
$result = $this->run_step($reverse_step, false, !$revert);
}
try
{
// Result will be null or true if everything completed correctly
$result = $this->run_step($step, $last_result, $revert);
if ($result !== null && $result !== true)
{
return serialize(array(
'result' => $result,
'step' => $step_identifier,
));
}
}
catch (\phpbb\db\migration\exception $e)
{
// We should try rolling back here
foreach ($steps as $reverse_step_identifier => $reverse_step)
{
// If we've reached the current step we can break because we reversed everything that was run
if ($reverse_step_identifier == $step_identifier)
{
break;
}
// Reverse the step that was run
$result = $this->run_step($reverse_step, false, !$revert);
}
// rethrow the exception
throw $e;
}
throw $e;
}
return true;
@@ -587,6 +628,13 @@ class migrator
throw new \phpbb\db\migration\exception('MIGRATION_INVALID_DATA_MISSING_STEP', $step);
}
if ($reverse)
{
// We might get unexpected results when trying
// to revert this, so just avoid it
return false;
}
$condition = $parameters[0];
if (!$condition)
@@ -664,6 +712,7 @@ class migrator
{
$migration_row = $state;
$migration_row['migration_depends_on'] = serialize($state['migration_depends_on']);
$migration_row['migration_data_state'] = !empty($state['migration_data_state']) ? serialize($state['migration_data_state']) : '';
if (isset($this->migration_state[$name]))
{

View File

@@ -15,11 +15,11 @@ namespace phpbb\db;
interface migrator_output_handler_interface
{
const VERBOSITY_QUIET = 0;
const VERBOSITY_NORMAL = 1;
const VERBOSITY_VERBOSE = 2;
const VERBOSITY_VERY_VERBOSE = 3;
const VERBOSITY_DEBUG = 4;
const VERBOSITY_QUIET = 16;
const VERBOSITY_NORMAL = 32;
const VERBOSITY_VERBOSE = 64;
const VERBOSITY_VERY_VERBOSE = 128;
const VERBOSITY_DEBUG = 256;
/**
* Write output using the configured closure.

View File

@@ -39,6 +39,12 @@ abstract class base
/** @var \phpbb\auth\auth */
protected $auth;
/** @var \phpbb\content_visibility */
protected $content_visibility;
/** @var \phpbb\event\dispatcher_interface */
protected $phpbb_dispatcher;
/** @var string */
protected $phpEx;
@@ -79,10 +85,21 @@ abstract class base
* @param \phpbb\cache\driver\driver_interface $cache Cache object
* @param \phpbb\user $user User object
* @param \phpbb\auth\auth $auth Auth object
* @param \phpbb\content_visibility $content_visibility Auth object
* @param \phpbb\content_visibility $content_visibility Content visibility object
* @param \phpbb\event\dispatcher_interface $phpbb_dispatcher Event dispatcher object
* @param string $phpEx php file extension
*/
function __construct(\phpbb\feed\helper $helper, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\cache\driver\driver_interface $cache, \phpbb\user $user, \phpbb\auth\auth $auth, \phpbb\content_visibility $content_visibility, $phpEx)
function __construct(
\phpbb\feed\helper $helper,
\phpbb\config\config $config,
\phpbb\db\driver\driver_interface $db,
\phpbb\cache\driver\driver_interface $cache,
\phpbb\user $user,
\phpbb\auth\auth $auth,
\phpbb\content_visibility $content_visibility,
\phpbb\event\dispatcher_interface $phpbb_dispatcher,
$phpEx
)
{
$this->config = $config;
$this->helper = $helper;
@@ -91,6 +108,7 @@ abstract class base
$this->user = $user;
$this->auth = $auth;
$this->content_visibility = $content_visibility;
$this->phpbb_dispatcher = $phpbb_dispatcher;
$this->phpEx = $phpEx;
$this->set_keys();
@@ -239,6 +257,21 @@ abstract class base
return false;
}
$sql_ary = $this->sql;
/**
* Event to modify the feed item sql
*
* @event core.feed_base_modify_item_sql
* @var array sql_ary The SQL array to get the feed item data
*
* @since 3.1.10-RC1
*/
$vars = array('sql_ary');
extract($this->phpbb_dispatcher->trigger_event('core.feed_base_modify_item_sql', compact($vars)));
$this->sql = $sql_ary;
unset($sql_ary);
// Query database
$sql = $this->db->sql_build_query('SELECT', $this->sql);
$this->result = $this->db->sql_query_limit($sql, $this->num_items);

View File

@@ -402,7 +402,7 @@ class log implements \phpbb\log\log_interface
}
}
$sql = 'DELETE FROM ' . LOG_TABLE . "
$sql = 'DELETE FROM ' . $this->log_table . "
$sql_where";
$this->db->sql_query($sql);

View File

@@ -192,7 +192,7 @@ class manager
$sql = 'SELECT n.*, nt.notification_type_name
FROM ' . $this->notifications_table . ' n, ' . $this->notification_types_table . ' nt
WHERE n.user_id = ' . (int) $options['user_id'] .
(($options['notification_id']) ? ((is_array($options['notification_id'])) ? ' AND ' . $this->db->sql_in_set('n.notification_id', $options['notification_id']) : ' AND n.notification_id = ' . (int) $options['notification_id']) : '') . '
(($options['notification_id']) ? ' AND ' . $this->db->sql_in_set('n.notification_id', $options['notification_id']) : '') . '
AND nt.notification_type_id = n.notification_type_id
AND nt.notification_type_enabled = 1
ORDER BY n.' . $this->db->sql_escape($options['order_by']) . ' ' . $this->db->sql_escape($options['order_dir']);
@@ -275,10 +275,9 @@ class manager
$sql = 'UPDATE ' . $this->notifications_table . "
SET notification_read = 1
WHERE notification_time <= " . (int) $time .
(($notification_type_name !== false) ? ' AND ' .
(is_array($notification_type_name) ? $this->db->sql_in_set('notification_type_id', $this->get_notification_type_ids($notification_type_name)) : 'notification_type_id = ' . $this->get_notification_type_id($notification_type_name)) : '') .
(($user_id !== false) ? ' AND ' . (is_array($user_id) ? $this->db->sql_in_set('user_id', $user_id) : 'user_id = ' . (int) $user_id) : '') .
(($item_id !== false) ? ' AND ' . (is_array($item_id) ? $this->db->sql_in_set('item_id', $item_id) : 'item_id = ' . (int) $item_id) : '');
(($notification_type_name !== false) ? ' AND ' . $this->db->sql_in_set('notification_type_id', $this->get_notification_type_ids($notification_type_name)) : '') .
(($user_id !== false) ? ' AND ' . $this->db->sql_in_set('user_id', $user_id) : '') .
(($item_id !== false) ? ' AND ' . $this->db->sql_in_set('item_id', $item_id) : '');
$this->db->sql_query($sql);
}
@@ -297,10 +296,9 @@ class manager
$sql = 'UPDATE ' . $this->notifications_table . "
SET notification_read = 1
WHERE notification_time <= " . (int) $time .
(($notification_type_name !== false) ? ' AND ' .
(is_array($notification_type_name) ? $this->db->sql_in_set('notification_type_id', $this->get_notification_type_ids($notification_type_name)) : 'notification_type_id = ' . $this->get_notification_type_id($notification_type_name)) : '') .
(($item_parent_id !== false) ? ' AND ' . (is_array($item_parent_id) ? $this->db->sql_in_set('item_parent_id', $item_parent_id, false, true) : 'item_parent_id = ' . (int) $item_parent_id) : '') .
(($user_id !== false) ? ' AND ' . (is_array($user_id) ? $this->db->sql_in_set('user_id', $user_id) : 'user_id = ' . (int) $user_id) : '');
(($notification_type_name !== false) ? ' AND ' . $this->db->sql_in_set('notification_type_id', $this->get_notification_type_ids($notification_type_name)) : '') .
(($item_parent_id !== false) ? ' AND ' . $this->db->sql_in_set('item_parent_id', $item_parent_id, false, true) : '') .
(($user_id !== false) ? ' AND ' . $this->db->sql_in_set('user_id', $user_id) : '');
$this->db->sql_query($sql);
}
@@ -317,7 +315,7 @@ class manager
$sql = 'UPDATE ' . $this->notifications_table . "
SET notification_read = 1
WHERE notification_time <= " . (int) $time . '
AND ' . ((is_array($notification_id)) ? $this->db->sql_in_set('notification_id', $notification_id) : 'notification_id = ' . (int) $notification_id);
AND ' . $this->db->sql_in_set('notification_id', $notification_id);
$this->db->sql_query($sql);
}
@@ -542,8 +540,8 @@ class manager
$sql = 'DELETE FROM ' . $this->notifications_table . '
WHERE notification_type_id = ' . (int) $notification_type_id . '
AND ' . (is_array($item_id) ? $this->db->sql_in_set('item_id', $item_id) : 'item_id = ' . (int) $item_id) .
(($parent_id !== false) ? ' AND ' . ((is_array($parent_id) ? $this->db->sql_in_set('item_parent_id', $parent_id) : 'item_parent_id = ' . (int) $parent_id)) : '');
AND ' . $this->db->sql_in_set('item_id', $item_id) .
(($parent_id !== false) ? ' AND ' . $this->db->sql_in_set('item_parent_id', $parent_id) : '');
$this->db->sql_query($sql);
}
@@ -969,11 +967,16 @@ class manager
/**
* Get notification type ids (as an array)
*
* @param array $notification_type_names Array of strings
* @param string|array $notification_type_names Notification type names
* @return array Array of integers
*/
public function get_notification_type_ids(array $notification_type_names)
public function get_notification_type_ids($notification_type_names)
{
if (!is_array($notification_type_names))
{
$notification_type_names = array($notification_type_names);
}
$notification_type_ids = array();
foreach ($notification_type_names as $name)

View File

@@ -81,7 +81,7 @@ abstract class messenger_base extends \phpbb\notification\method\base
$messenger->assign_vars(array_merge(array(
'USERNAME' => $user['username'],
'U_NOTIFICATION_SETTINGS' => generate_board_url() . '/ucp.' . $this->php_ext . '?i=ucp_notifications&amp;mode=notification_options',
'U_NOTIFICATION_SETTINGS' => generate_board_url() . '/ucp.' . $this->php_ext . '?i=ucp_notifications&mode=notification_options',
), $notification->get_email_template_variables()));
$messenger->send($notify_method);

View File

@@ -36,52 +36,6 @@ class base
$error = true;
}
/**
* Retrieves a language dependend list of words that should be ignored by the search
*/
function get_ignore_words()
{
if (!sizeof($this->ignore_words))
{
global $user, $phpEx;
$words = array();
if (file_exists("{$user->lang_path}{$user->lang_name}/search_ignore_words.$phpEx"))
{
// include the file containing ignore words
include("{$user->lang_path}{$user->lang_name}/search_ignore_words.$phpEx");
}
$this->ignore_words = $words;
unset($words);
}
}
/**
* Stores a list of synonyms that should be replaced in $this->match_synonym and $this->replace_synonym and caches them
*/
function get_synonyms()
{
if (!sizeof($this->match_synonym))
{
global $user, $phpEx;
$synonyms = array();
if (file_exists("{$user->lang_path}{$user->lang_name}/search_synonyms.$phpEx"))
{
// include the file containing synonyms
include("{$user->lang_path}{$user->lang_name}/search_synonyms.$phpEx");
}
$this->match_synonym = array_keys($synonyms);
$this->replace_synonym = array_values($synonyms);
unset($synonyms);
}
}
/**
* Retrieves cached search results
*

View File

@@ -177,8 +177,10 @@ class fulltext_mysql extends \phpbb\search\base
$engine === 'MyISAM' ||
// FULLTEXT is supported on InnoDB since MySQL 5.6.4 according to
// http://dev.mysql.com/doc/refman/5.6/en/innodb-storage-engine.html
// We also require https://bugs.mysql.com/bug.php?id=67004 to be
// fixed for proper overall operation. Hence we require 5.6.8.
$engine === 'InnoDB' &&
phpbb_version_compare($this->db->sql_server_info(true), '5.6.4', '>=');
phpbb_version_compare($this->db->sql_server_info(true), '5.6.8', '>=');
if (!$fulltext_supported)
{

View File

@@ -1262,7 +1262,7 @@ class fulltext_native extends \phpbb\search\base
if (!$total_results && $is_mysql)
{
// Count rows for the executed queries. Replace $select within $sql with SQL_CALC_FOUND_ROWS, and run it.
$sql_calc = str_replace('SELECT ' . $select, 'SELECT DISTINCT SQL_CALC_FOUND_ROWS p.post_id', $sql);
$sql_calc = str_replace('SELECT ' . $select, 'SELECT SQL_CALC_FOUND_ROWS ' . $select, $sql);
$result = $this->db->sql_query($sql_calc);
$this->db->sql_freeresult($result);

View File

@@ -219,7 +219,7 @@ class session
function session_begin($update_session_page = true)
{
global $phpEx, $SID, $_SID, $_EXTRA_URL, $db, $config, $phpbb_root_path;
global $request, $phpbb_container;
global $request, $phpbb_container, $phpbb_dispatcher;
// Give us some basic information
$this->time_now = time();
@@ -281,11 +281,21 @@ class session
// Why no forwarded_for et al? Well, too easily spoofed. With the results of my recent requests
// it's pretty clear that in the majority of cases you'll at least be left with a proxy/cache ip.
$this->ip = htmlspecialchars_decode($request->server('REMOTE_ADDR'));
$this->ip = preg_replace('# {2,}#', ' ', str_replace(',', ' ', $this->ip));
$ip = htmlspecialchars_decode($request->server('REMOTE_ADDR'));
$ip = preg_replace('# {2,}#', ' ', str_replace(',', ' ', $ip));
/**
* Event to alter user IP address
*
* @event core.session_ip_after
* @var string ip REMOTE_ADDR
* @since 3.1.10-RC1
*/
$vars = array('ip');
extract($phpbb_dispatcher->trigger_event('core.session_ip_after', compact($vars)));
// split the list of IPs
$ips = explode(' ', trim($this->ip));
$ips = explode(' ', trim($ip));
// Default IP if REMOTE_ADDR is invalid
$this->ip = '127.0.0.1';
@@ -1585,7 +1595,7 @@ class session
$this->data = array_merge($this->data, $sql_ary);
if ($this->data['user_id'] != ANONYMOUS && !empty($config['new_member_post_limit']) && $this->data['user_new'] && $config['new_member_post_limit'] <= $this->data['user_posts'])
if ($this->data['user_id'] != ANONYMOUS && isset($config['new_member_post_limit']) && $this->data['user_new'] && $config['new_member_post_limit'] <= $this->data['user_posts'])
{
$this->leave_newly_registered();
}

View File

@@ -350,7 +350,7 @@ class twig extends \phpbb\template\base
return $this->twig->render($this->get_filename_from_handle($handle), $this->get_template_vars());
}
$this->assign_var($template_var, $this->twig->render($this->get_filename_from_handle($handle, $this->get_template_vars())));
$this->assign_var($template_var, $this->twig->render($this->get_filename_from_handle($handle), $this->get_template_vars()));
return $this;
}

View File

@@ -371,7 +371,9 @@ switch ($mode)
* NOTE: Should be actual language strings, NOT
* language keys.
* @var bool is_authed Does the user have the required permissions?
* @var array post_data All post data from database
* @since 3.1.3-RC1
* @changed 3.1.10-RC1 Added post_data
*/
$vars = array(
'post_id',
@@ -387,6 +389,7 @@ $vars = array(
'mode',
'error',
'is_authed',
'post_data',
);
extract($phpbb_dispatcher->trigger_event('core.modify_posting_auth', compact($vars)));
@@ -1741,6 +1744,7 @@ $page_data = array(
'L_POST_A' => $page_title,
'L_ICON' => ($mode == 'reply' || $mode == 'quote' || ($mode == 'edit' && $post_id != $post_data['topic_first_post_id'])) ? $user->lang['POST_ICON'] : $user->lang['TOPIC_ICON'],
'L_MESSAGE_BODY_EXPLAIN' => $user->lang('MESSAGE_BODY_EXPLAIN', (int) $config['max_post_chars']),
'L_DELETE_POST_PERMANENTLY' => $user->lang('DELETE_POST_PERMANENTLY', 1),
'FORUM_NAME' => $post_data['forum_name'],
'FORUM_DESC' => ($post_data['forum_desc']) ? generate_text_for_display($post_data['forum_desc'], $post_data['forum_desc_uid'], $post_data['forum_desc_bitfield'], $post_data['forum_desc_options']) : '',

View File

@@ -126,6 +126,26 @@ gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $
$phpbb_content_visibility = $phpbb_container->get('content.visibility');
$pagination = $phpbb_container->get('pagination');
/**
* This event allows you to alter the above parameters, such as keywords and submit
*
* @event core.search_modify_submit_parameters
* @var string keywords The search keywords
* @var string author Specifies the author match, when ANONYMOUS is also a search-match
* @var int author_id ID of the author to search by
* @var string search_id Predefined search type name
* @var bool submit Whether or not the form has been submitted
* @since 3.1.10-RC1
*/
$vars = array(
'keywords',
'author',
'author_id',
'search_id',
'submit',
);
extract($phpbb_dispatcher->trigger_event('core.search_modify_submit_parameters', compact($vars)));
if ($keywords || $author || $author_id || $search_id || $submit)
{
// clear arrays
@@ -320,7 +340,10 @@ if ($keywords || $author || $author_id || $search_id || $submit)
* @var array ex_fid_ary Array of excluded forum ids
* @var array author_id_ary Array of exclusive author ids
* @var string search_id The id of the search request
* @var array id_ary Array of post or topic ids for search result
* @var string show_results 'posts' or 'topics' type of ids
* @since 3.1.3-RC1
* @changed 3.1.10-RC1 Added id_ary, show_results
*/
$vars = array(
'keywords',
@@ -328,6 +351,8 @@ if ($keywords || $author || $author_id || $search_id || $submit)
'ex_fid_ary',
'author_id_ary',
'search_id',
'id_ary',
'show_results',
);
extract($phpbb_dispatcher->trigger_event('core.search_modify_param_before', compact($vars)));
@@ -570,6 +595,48 @@ if ($keywords || $author || $author_id || $search_id || $submit)
$total_match_count = $search->author_search($show_results, $firstpost_only, $sort_by_sql, $sort_key, $sort_dir, $sort_days, $ex_fid_ary, $m_approve_posts_fid_sql, $topic_id, $author_id_ary, $sql_author_match, $id_ary, $start, $per_page);
}
/**
* Event to search otherwise than by keywords or author
*
* @event core.search_backend_search_after
* @var string show_results 'posts' or 'topics' type of ids
* @var string search_fields The data fields to search in
* @var string search_terms Is either 'all' (use query as entered, words without prefix should default to "have to be in field") or 'any' (ignore search query parts and just return all posts that contain any of the specified words)
* @var array sort_by_sql Array of SQL sorting instructions
* @var string sort_key The sort key
* @var string sort_dir The sort direction
* @var int sort_days Limit the age of results
* @var array ex_fid_ary Array of excluded forum ids
* @var string m_approve_posts_fid_sql Specifies which types of posts the user can view in which forums
* @var int topic_id is set to 0 or a topic id, if it is not 0 then only posts in this topic should be searched
* @var array author_id_ary Array of exclusive author ids
* @var string sql_author_match Specifies the author match, when ANONYMOUS is also a search-match
* @var array id_ary Array of post or topic ids for search result
* @var int start The starting id of the results
* @var int per_page Number of ids each page is supposed to contain
* @var int total_match_count The total number of search matches
* @since 3.1.10-RC1
*/
$vars = array(
'show_results',
'search_fields',
'search_terms',
'sort_by_sql',
'sort_key',
'sort_dir',
'sort_days',
'ex_fid_ary',
'm_approve_posts_fid_sql',
'topic_id',
'author_id_ary',
'sql_author_match',
'id_ary',
'start',
'per_page',
'total_match_count',
);
extract($phpbb_dispatcher->trigger_event('core.search_backend_search_after', compact($vars)));
$sql_where = '';
if (sizeof($id_ary))
@@ -620,11 +687,18 @@ if ($keywords || $author || $author_id || $search_id || $submit)
* @event core.search_modify_url_parameters
* @var string u_search Search URL parameters string
* @var string search_id Predefined search type name
* @var string show_results String indicating the show results mode
* @var string sql_where The SQL WHERE string used by search to get topic data
* @var int total_match_count The total number of search matches
* @since 3.1.7-RC1
* @changed 3.1.10-RC1 Added show_results, sql_where, total_match_count
*/
$vars = array(
'u_search',
'search_id',
'show_results',
'sql_where',
'total_match_count',
);
extract($phpbb_dispatcher->trigger_event('core.search_modify_url_parameters', compact($vars)));
@@ -1249,6 +1323,7 @@ if ($keywords || $author || $author_id || $search_id || $submit)
}
// Search forum
$rowset = array();
$s_forums = '';
$sql = 'SELECT f.forum_id, f.forum_name, f.parent_id, f.forum_type, f.left_id, f.right_id, f.forum_password, f.enable_indexing, fa.user_id
FROM ' . FORUMS_TABLE . ' f
@@ -1257,11 +1332,27 @@ $sql = 'SELECT f.forum_id, f.forum_name, f.parent_id, f.forum_type, f.left_id, f
ORDER BY f.left_id ASC";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$rowset[(int) $row['forum_id']] = $row;
}
$db->sql_freeresult($result);
$right = $cat_right = $padding_inc = 0;
$padding = $forum_list = $holding = '';
$pad_store = array('0' => '');
while ($row = $db->sql_fetchrow($result))
/**
* Modify the forum select list for advanced search page
*
* @event core.search_modify_forum_select_list
* @var array rowset Array with the forums list data
* @since 3.1.10-RC1
*/
$vars = array('rowset');
extract($phpbb_dispatcher->trigger_event('core.search_modify_forum_select_list', compact($vars)));
foreach ($rowset as $row)
{
if ($row['forum_type'] == FORUM_CAT && ($row['left_id'] + 1 == $row['right_id']))
{
@@ -1333,8 +1424,8 @@ if ($holding)
$s_forums .= $holding;
}
$db->sql_freeresult($result);
unset($pad_store);
unset($rowset);
if (!$s_forums)
{

View File

@@ -21,8 +21,8 @@
# General Information about this style
name = prosilver
copyright = © phpBB Limited, 2007
style_version = 3.1.9
phpbb_version = 3.1.9
style_version = 3.1.10
phpbb_version = 3.1.10
# Defining a different template bitfield
# template_bitfield = lNg=

View File

@@ -7,7 +7,7 @@
<label>
<strong>{L_DELETE_PERMANENTLY}{L_COLON}</strong>
<input id="delete_permanent" name="delete_permanent" type="checkbox" value="1" {S_CHECKED_PERMANENT} />
<!-- IF S_TOPIC_MODE -->{L_DELETE_TOPIC_PERMANENTLY}<!-- ELSE -->{L_DELETE_POST_PERMANENTLY}<!-- ENDIF -->
<!-- IF S_TOPIC_MODE -->{DELETE_TOPIC_PERMANENTLY_EXPLAIN}<!-- ELSE -->{DELETE_POST_PERMANENTLY_EXPLAIN}<!-- ENDIF -->
</label>
<!-- ENDIF -->
@@ -43,7 +43,7 @@
<dd>
<label for="delete_permanent">
<input id="delete_permanent" name="delete_permanent" type="checkbox" value="1" {S_CHECKED_PERMANENT} />
<!-- IF S_TOPIC_MODE -->{L_DELETE_TOPIC_PERMANENTLY}<!-- ELSE -->{L_DELETE_POST_PERMANENTLY}<!-- ENDIF -->
<!-- IF S_TOPIC_MODE -->{DELETE_TOPIC_PERMANENTLY_EXPLAIN}<!-- ELSE -->{DELETE_POST_PERMANENTLY_EXPLAIN}<!-- ENDIF -->
</label>
</dd>
</dl>

View File

@@ -50,7 +50,7 @@
<!-- IF topicrow.S_TOPIC_REPORTED --><a href="{topicrow.U_MCP_REPORT}">{REPORTED_IMG}</a><!-- ENDIF -->
<!-- IF topicrow.S_MOVED_TOPIC and S_CAN_DELETE -->&nbsp;<a href="{topicrow.U_DELETE_TOPIC}" class="topictitle">[ {L_DELETE_SHADOW_TOPIC} ]</a><!-- ENDIF -->
<br />
<!-- EVENT topiclist_row_topic_title_after -->
<div class="responsive-show" style="display: none;">
<!-- IF topicrow.ATTACH_ICON_IMG -->{topicrow.ATTACH_ICON_IMG} <!-- ENDIF -->
{L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} &laquo; {topicrow.LAST_POST_TIME}<br />

View File

@@ -31,6 +31,8 @@
<!-- INCLUDE overall_header.html -->
<!-- EVENT mcp_move_before -->
<form id="confirm" action="{S_CONFIRM_ACTION}" method="post">
<div class="panel">
@@ -54,7 +56,7 @@
</fieldset>
<fieldset class="submit-buttons">
{S_HIDDEN_FIELDS}<input type="submit" name="confirm" value="{YES_VALUE}" class="button1" />&nbsp;
{S_HIDDEN_FIELDS}<input type="submit" name="confirm" value="{YES_VALUE}" class="button1" />&nbsp;
<input type="submit" name="cancel" value="{L_NO}" class="button2" />
{S_FORM_TOKEN}
</fieldset>

View File

@@ -73,7 +73,7 @@
<dl>
<dt><label for="to_topic_id">{L_MERGE_TOPIC_ID}{L_COLON}</label></dt>
<dd>
<input class="inputbox autowidth" type="number" min="0" max="999999" name="to_topic_id" id="to_topic_id" value="{TO_TOPIC_ID}" />
<input class="inputbox autowidth" type="number" min="0" max="9999999999" name="to_topic_id" id="to_topic_id" value="{TO_TOPIC_ID}" />
<a href="{U_SELECT_TOPIC}" >{L_SELECT_TOPIC}</a>
</dd>
<!-- IF TO_TOPIC_INFO --><dd>{TO_TOPIC_INFO}</dd><!-- ENDIF -->
@@ -112,7 +112,10 @@
</ul>
<h3><a href="{postrow.U_POST_DETAILS}">{postrow.POST_SUBJECT}</a></h3>
<!-- EVENT mcp_topic_postrow_post_details_before -->
<p class="author"><a href="#pr{postrow.POST_ID}">{postrow.MINI_POST_IMG}</a> {L_POSTED} {postrow.POST_DATE} {L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong><!-- IF postrow.U_MCP_DETAILS --> [ <a href="{postrow.U_MCP_DETAILS}">{L_POST_DETAILS}</a> ]<!-- ENDIF --></p>
<!-- EVENT mcp_topic_postrow_post_details_after -->
<!-- IF postrow.S_POST_UNAPPROVED -->
<p class="post-notice unapproved">

View File

@@ -1,5 +1,7 @@
<!-- INCLUDE overall_header.html -->
<!-- EVENT memberlist_email_before -->
<!-- IF S_CONTACT_ADMIN-->
<h2 class="titlespace">{L_CONTACT_ADMIN}</h2>
<!-- ELSEIF S_SEND_USER -->

View File

@@ -76,6 +76,7 @@
<a id="top" class="anchor" accesskey="t"></a>
<div id="page-header">
<div class="headerbar" role="banner">
<!-- EVENT overall_header_headerbar_before -->
<div class="inner">
<div id="site-description">
@@ -100,6 +101,7 @@
<!-- ENDIF -->
</div>
<!-- EVENT overall_header_headerbar_after -->
</div>
<!-- EVENT overall_header_navbar_before -->
<!-- INCLUDE navbar_header.html -->

View File

@@ -23,7 +23,11 @@
<!-- IF S_POST_ACTION or S_PRIVMSGS or S_EDIT_DRAFT -->
<dl style="clear: left;">
<dt><label for="subject">{L_SUBJECT}{L_COLON}</label></dt>
<dd><input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->120<!-- ELSE -->124<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" /></dd>
<dd>
<!-- EVENT posting_editor_subject_prepend -->
<input type="text" name="subject" id="subject" size="45" maxlength="<!-- IF S_NEW_MESSAGE -->120<!-- ELSE -->124<!-- ENDIF -->" tabindex="2" value="{SUBJECT}{DRAFT_SUBJECT}" class="inputbox autowidth" />
<!-- EVENT posting_editor_subject_append -->
</dd>
</dl>
<!-- IF CAPTCHA_TEMPLATE and S_CONFIRM_CODE -->
<!-- DEFINE $CAPTCHA_TAB_INDEX = 3 -->

View File

@@ -43,7 +43,10 @@
</ul>
<!-- ENDIF -->
<!-- EVENT posting_topic_review_row_post_details_before -->
<p class="author"><!-- IF S_IS_BOT -->{topic_review_row.MINI_POST_IMG}<!-- ELSE --><a href="{topic_review_row.U_MINI_POST}">{topic_review_row.MINI_POST_IMG}</a><!-- ENDIF --> {L_POST_BY_AUTHOR} <strong>{topic_review_row.POST_AUTHOR_FULL}</strong> &raquo; {topic_review_row.POST_DATE} </p>
<!-- EVENT posting_topic_review_row_post_details_after -->
<div class="content">{topic_review_row.MESSAGE}</div>
<!-- IF topic_review_row.S_HAS_ATTACHMENTS -->

View File

@@ -91,6 +91,7 @@
</div>
<!-- ENDIF -->
<!-- IF searchresults.S_HAS_POLL -->{POLL_IMG} <!-- ENDIF -->
<!-- EVENT topiclist_row_topic_title_after -->
{L_POST_BY_AUTHOR} {searchresults.TOPIC_AUTHOR_FULL} &raquo; {searchresults.FIRST_POST_TIME} &raquo; {L_IN} <a href="{searchresults.U_VIEW_FORUM}">{searchresults.FORUM_TITLE}</a>
<!-- EVENT topiclist_row_append -->

View File

@@ -121,6 +121,8 @@
<!-- ENDIF -->
<!-- EVENT viewforum_body_topic_row_before -->
<!-- BEGIN topicrow -->
<!-- IF not topicrow.S_TOPIC_TYPE_SWITCH and not topicrow.S_FIRST_ROW -->
@@ -145,7 +147,7 @@
<ul class="topiclist topics">
<!-- ENDIF -->
<!-- EVENT viewforum_body_topic_row_before -->
<!-- EVENT viewforum_body_topicrow_row_before -->
<li class="row<!-- IF topicrow.S_ROW_COUNT is even --> bg1<!-- ELSE --> bg2<!-- ENDIF --><!-- IF topicrow.S_POST_GLOBAL --> global-announce<!-- ENDIF --><!-- IF topicrow.S_POST_ANNOUNCE --> announce<!-- ENDIF --><!-- IF topicrow.S_POST_STICKY --> sticky<!-- ENDIF --><!-- IF topicrow.S_TOPIC_REPORTED --> reported<!-- ENDIF -->">
<!-- EVENT viewforum_body_topic_row_prepend -->
<dl class="icon {topicrow.TOPIC_IMG_STYLE}">
@@ -157,7 +159,7 @@
<!-- IF topicrow.S_TOPIC_UNAPPROVED or topicrow.S_POSTS_UNAPPROVED --><a href="{topicrow.U_MCP_QUEUE}">{topicrow.UNAPPROVED_IMG}</a> <!-- ENDIF -->
<!-- IF topicrow.S_TOPIC_DELETED --><a href="{topicrow.U_MCP_QUEUE}">{DELETED_IMG}</a> <!-- ENDIF -->
<!-- IF topicrow.S_TOPIC_REPORTED --><a href="{topicrow.U_MCP_REPORT}">{REPORTED_IMG}</a><!-- ENDIF --><br />
<!-- EVENT topiclist_row_topic_title_after -->
<!-- IF not S_IS_BOT -->
<div class="responsive-show" style="display: none;">
{L_LAST_POST} {L_POST_BY_AUTHOR} {topicrow.LAST_POST_AUTHOR_FULL} &laquo; <a href="{topicrow.U_LAST_POST}" title="{L_GOTO_LAST_POST}">{topicrow.LAST_POST_TIME}</a>

View File

@@ -21,8 +21,8 @@
# General Information about this style
name = subsilver2
copyright = © 2005 phpBB Limited
style_version = 3.1.9
phpbb_version = 3.1.9
style_version = 3.1.10
phpbb_version = 3.1.10
# Defining a different template bitfield
# template_bitfield = lNg=

View File

@@ -43,6 +43,7 @@
<!-- IF topicrow.S_MOVED_TOPIC and S_CAN_DELETE -->
[ <a href="{topicrow.U_DELETE_TOPIC}">{L_DELETE_SHADOW_TOPIC}</a> ]&nbsp;
<!-- ENDIF -->
<!-- EVENT topiclist_row_topic_title_after -->
</p>
<!-- EVENT topiclist_row_append -->
</td>

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