1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-19 04:21:47 +02:00

Compare commits

..

688 Commits

Author SHA1 Message Date
Nils Adermann
7b4cdc94a8 [develop-olympus] Updating changelog for last minute 3.0.8-RC1 fixes. 2010-11-10 19:01:54 +01:00
Nils Adermann
cdb57aaa64 Merge branch 'ticket/nickvergessen/9140' into develop-olympus
* ticket/nickvergessen/9140:
  [ticket/9140] Check current board version in incremental update packages
2010-11-10 19:00:45 +01:00
Nils Adermann
cb94085323 Merge branch 'ticket/nickvergessen/9891' into develop-olympus
* ticket/nickvergessen/9891:
  [ticket/9891] Updater drops language-selection after database-update
2010-11-10 19:00:32 +01:00
Joas Schilling
4340e5a217 [ticket/9140] Check current board version in incremental update packages
We need to use $this->current_version in this case instead of
$config['version']. Otherwise the message will be displayed after the database
got updated from database_update.php. Using PHPBB_VERSION from
includes/constants.php is not the right selection either, because than the
message is displayed after the files got updated and are checked one last time.

PHPBB3-9140
2010-11-10 18:26:02 +01:00
Joas Schilling
9d55794e33 [ticket/9891] Updater drops language-selection after database-update
PHPBB3-9891
2010-11-10 17:56:05 +01:00
Nils Adermann
88602d138c [develop-olympus] Updating changelog with latest changes for 3.0.8-RC1 2010-11-10 16:29:34 +01:00
Nils Adermann
2ed9b3e1d5 Merge branch 'ticket/nickvergessen/9886' into develop-olympus
* ticket/nickvergessen/9886:
  [ticket/9886] Update fails on PostgreSQL because of an error in _add_module
2010-11-10 16:16:16 +01:00
Nils Adermann
1b12884c7d Merge branch 'ticket/igorw/9884' into develop-olympus
* ticket/igorw/9884:
  [ticket/9884] Reduce queue interval to 60 seconds, email package size to 20
2010-11-10 15:56:53 +01:00
Igor Wiedler
c9c19874d6 [ticket/9884] Reduce queue interval to 60 seconds, email package size to 20
PHPBB3-9884
2010-11-10 15:50:53 +01:00
Joas Schilling
d722eeb64b [ticket/9886] Update fails on PostgreSQL because of an error in _add_module
PHPBB3-9886
2010-11-09 07:56:37 +01:00
Andreas Fischer
05dce726d0 Merge branch 'ticket/nickvergessen/9888' into develop-olympus
* ticket/nickvergessen/9888:
  [ticket/9888] Update fails when Bing [Bot] was already added to the users table
2010-11-08 23:41:19 +01:00
Nils Adermann
1a637a3860 Merge branch 'ticket/bantu/9885' into develop-olympus
* ticket/bantu/9885:
  [ticket/9885] Fix extension group name updater. Loop through all languages.
2010-11-08 23:22:23 +01:00
Joas Schilling
b88f35caef [ticket/9888] Update fails when Bing [Bot] was already added to the users table
Added a check whether the user already exists before we try to add it.

PHPBB3-9888
2010-11-08 23:22:06 +01:00
Nils Adermann
794c0f6b68 [develop-olympus] Bumping version number for 3.0.8-RC1. 2010-11-08 23:21:27 +01:00
Andreas Fischer
f7e37dae86 [ticket/9885] Fix extension group name updater. Loop through all languages.
Fix a regression introduced by 58dc5a191c.

The problem is that $user->add_lang() includes language strings from the board
root folder instead of the update folder. Because the database updater is run
first, the root folder files have not been upgrade yet. Thus, the language
strings we're looking for cannot be found.

Since the language strings we are looking for have been moved from the
install.php language file to acp/attachments.php it should be possible to
always find them in either file. When there is an acp/attachments.php file in
the update package, it can also be used.

We now also loop through all the installed languages as well, because the board
could have been installed in a language other than the admin's current
language.

PHPBB3-9885
PHPBB3-7717
2010-11-08 14:19:53 +01:00
Andreas Fischer
e71911a8d2 Merge branch 'ticket/sa007/9847' into develop-olympus
* ticket/sa007/9847:
  [ticket/9847] Fix typo in search synonyms. Use british english for 'judgement'.
2010-11-08 12:48:19 +01:00
SA007
fd03ecad01 [ticket/9847] Fix typo in search synonyms. Use british english for 'judgement'.
The word "gauge" was misspelled as "guage".
The word "judgement" is preferred over "judgment" in british english.

PHPBB3-9847
2010-11-08 12:32:19 +01:00
Chris Smith
6f3b06e2b5 Merge branch 'ticket/sa007/9883' into develop-olympus
* ticket/sa007/9883:
  [ticket/9883] Change an American English spelling to British English.
2010-11-08 01:43:54 +00:00
SA007
babfd0075d [ticket/9883] Change an American English spelling to British English.
PHPBB3-9883
2010-11-08 01:29:46 +00:00
Andreas Fischer
0e731ca5dd Merge branch 'task/naderman/phing-build' into develop-olympus
* task/naderman/phing-build:
  [task/phing-build] Correct the path for update package patch files.
2010-11-08 00:17:47 +01:00
Nils Adermann
2847b2125e [task/phing-build] Correct the path for update package patch files.
PHPBB3-9849
2010-11-08 00:13:23 +01:00
Andreas Fischer
6c04e7ed80 Merge branch 'ticket/bantu/9880' into develop-olympus
* ticket/bantu/9880:
  [ticket/9880] Change "antibot" to "anti-spambot".
  [ticket/9880] Changing the term 'CAPTCHA' to something more obvious.
2010-11-07 14:57:07 +01:00
Andreas Fischer
81ca3d202e [ticket/9880] Change "antibot" to "anti-spambot".
PHPBB3-9880
2010-11-07 13:17:27 +01:00
Andreas Fischer
371e54e054 Merge branch 'ticket/paul999/9696' into develop-olympus
* ticket/paul999/9696:
  [ticket/9696] Surpress is_dir() notice when using SQLite with open_basedir.
2010-11-07 13:12:16 +01:00
Paul Sohier
5cdf27edef [ticket/9696] Surpress is_dir() notice when using SQLite with open_basedir.
PHPBB3-9696
2010-11-07 12:50:32 +01:00
Andreas Fischer
2e5217f773 Merge branch 'task/naderman/phing-build' into develop-olympus
* task/naderman/phing-build:
  [task/phing-build] Automatically trigger build_diff
  [task/phing-build] Added a build.xml configuration for phing.
2010-11-07 12:33:40 +01:00
Chris Smith
7b1d9fbbe2 [ticket/9880] Changing the term 'CAPTCHA' to something more obvious.
PHPBB3-9880
2010-11-07 05:28:29 +00:00
Nils Adermann
225482c06a Merge branch 'ticket/cs278/9752' into develop-olympus
* ticket/cs278/9752:
  [ticket/9752] Mark unused language variable as such.
  [ticket/9752] Change reference to 'confirmation code' to be more generic.
2010-11-07 03:27:44 +01:00
Chris Smith
dd1532a72c [ticket/9752] Mark unused language variable as such.
PHPBB3-9752
2010-11-07 02:16:56 +00:00
576de284a7 [ticket/9752] Change reference to 'confirmation code' to be more generic.
Related to 71b35a924f

PHPBB3-9752
2010-11-07 02:15:33 +00:00
Nils Adermann
48e6126094 Merge remote branches 'github-bantu/ticket/9879' and 'github-cs278/ticket/9095' into develop-olympus
* github-bantu/ticket/9879:
  [ticket/9879] Fix markup and use Q&A instead of Q & A for consistency.
  [ticket/9879] Spelling, punctuation and grammar update for the Q&A CAPTCHA.

* github-cs278/ticket/9095:
  [ticket/9095] Update CAPTCHA related strings to reflect CAPTCHAs plugins.
2010-11-07 03:10:57 +01:00
71b35a924f [ticket/9095] Update CAPTCHA related strings to reflect CAPTCHAs plugins.
With the addition of CAPTCHA plugins in 3.0.6 a number of language
strings need updating to account for non visual based CAPTCHAs.

PHPBB3-9095
2010-11-07 01:52:53 +00:00
Nils Adermann
e1aff2841b [task/phing-build] Automatically trigger build_diff
The build_diff script generates MOD format change descriptions for
language and style files. It is automatically triggered by phin with
the correct version numbers now so it does not need to be changed
anymore.

PHPBB3-9849
2010-11-07 02:14:49 +01:00
Andreas Fischer
5d9a9d6874 [ticket/9879] Fix markup and use Q&A instead of Q & A for consistency.
PHPBB3-9879
2010-11-07 00:35:11 +01:00
2299c40137 [ticket/9879] Spelling, punctuation and grammar update for the Q&A CAPTCHA.
Fixed spelling, punctuation and grammar as well as removed registration
specific language from plugin as it can be/is used for form submissions other
than registration.

PHPBB3-9879
2010-11-07 00:13:01 +01:00
Nils Adermann
f7180f4430 Merge branch 'ticket/bantu/9075' into develop-olympus
* ticket/bantu/9075:
  [ticket/9075] CPF Numbers fields: Prevent SQL error on registration page.
2010-11-07 00:03:15 +01:00
Andreas Fischer
516282dfa9 Merge branch 'ticket/bantu/9835' into develop-olympus
* ticket/bantu/9835:
  [ticket/9835] subsilver2: Don't show "To prevent automated ..." when logging in
2010-11-06 18:53:32 +01:00
Andreas Fischer
414d8a41e5 Merge branch 'ticket/bantu/9827' into develop-olympus
* ticket/bantu/9827:
  [ticket/9827] No longer emulate Internet Explorer 7 when using IE9.
2010-11-06 18:51:52 +01:00
Andreas Fischer
46dbdfdef4 Merge branch 'ticket/igorw/9850' into develop-olympus
* ticket/igorw/9850:
  [ticket/9850] Display upgrade instructions for feature release in acp
2010-11-06 18:47:19 +01:00
Adam Reyher
3b7414fca8 [ticket/9827] No longer emulate Internet Explorer 7 when using IE9.
The IE9 beta fixes the IE8 textarea width bug which required IE7 emulation in
phpBB's styles. Emulation should only occur when using IE8 now.

PHPBB3-9827
2010-11-05 17:07:18 +01:00
Andreas Fischer
e3b460a518 Merge branch 'task/naderman/mssql-db-tests' into develop-olympus
* task/naderman/mssql-db-tests:
  [task/mssql-db-tests] Remove MS SQL helper values from SELECT LIMIT results.
  [task/mssql-db-tests] Split up database tests into SELECT and write operations
  [task/mssql-db-tests] PHPUnit output got stuck after unterminated ob_start.
  [task/mssql-db-tests] sql_query_limit must return all results when total = 0
  [task/mssql-db-tests] Add support for odbc & sqlsrv PDO test connections
  [task/mssql-db-tests] Refactored getConnection into multiple smaller parts.
  [task/mssql-db-tests] Allow test configuration with environment variables.
  [task/mssql-db-tests] No longer display an error when skipping db tests.
  [task/mssql-db-tests] Use a simple getter for test case helpers.
2010-11-03 11:32:13 +01:00
Igor Wiedler
857271ebbd [ticket/9850] Display upgrade instructions for feature release in acp
PHPBB3-9850
2010-11-02 23:53:14 +01:00
Andreas Fischer
ec3dac0595 [ticket/9075] CPF Numbers fields: Prevent SQL error on registration page.
When an administrator set a numbers field to default to 'not specified', a SQL
error was caused on the registration page because it was tried to insert an
empty string into an integer column.
Because the column already supports NULL values, empty strings are now
converted to NULL for custom profile fields of the type 'Numbers' before
insertion into the data table.

PHPBB3-9075
2010-10-30 12:42:23 +02:00
a009614afb [ticket/9835] subsilver2: Don't show "To prevent automated ..." when logging in
This makes subsilver2 consistent with prosilver.

PHPBB3-9835
2010-10-28 22:35:53 +02:00
Andreas Fischer
6ff403c9f8 Merge branch 'ticket/cs278/9061' into develop-olympus
* ticket/cs278/9061:
  [ticket/9061] Simplify conditional statements by reworking the logic.
  [ticket/9061] Fixed a race condition in queue locking.
2010-10-27 13:06:21 +02:00
Chris Smith
9819700247 [ticket/9061] Simplify conditional statements by reworking the logic.
PHPBB3-9061
2010-10-27 11:31:42 +01:00
Oleg Pudeyev
01ef46a510 [ticket/9061] Fixed a race condition in queue locking.
Changed queue locking to cover all queue file operations,
in particular the check for queue file existince and
inclusion of queue file must be done under one lock.

Also refactored queue locking and unlocking into separate
methods.

PHPBB3-9061
2010-10-27 11:31:27 +01:00
Igor Wiedler
832b09d60d Merge branches 'ticket/bantu/9101', 'ticket/bantu/9595' and 'ticket/bantu/9853' into develop-olympus
* ticket/bantu/9101:
  [ticket/9101] Remove misleading 'below' from RECAPTCHA_EXPLAIN.

* ticket/bantu/9595:
  [ticket/9595] List min/max characters indexed by search for mysql_fulltext.

* ticket/bantu/9853:
  [ticket/9853] Change recaptcha theme from default to 'clean'.
2010-10-25 22:08:37 +02:00
Andreas Fischer
52546e8d15 Merge branch 'ticket/naderman/9686' into develop-olympus
* ticket/naderman/9686:
  [ticket/9686] Fix mssqlnative database data export
2010-10-25 21:54:49 +02:00
Andreas Fischer
a5bc7c90f5 Merge branch 'ticket/rxu/9478' into develop-olympus
* ticket/rxu/9478:
  [ticket/9478] Validate maximum number of allowed recipients per PM value.
2010-10-25 21:52:50 +02:00
rxu
257e264af7 [ticket/9478] Validate maximum number of allowed recipients per PM value.
Do not allow to enter the value larger than it's allowed by MySQL mediumnt(8).

PHPBB3-9478
2010-10-25 21:47:13 +02:00
Nils Adermann
76e8a9466e [task/mssql-db-tests] Remove MS SQL helper values from SELECT LIMIT results.
PHPBB3-9868
2010-10-25 19:43:39 +02:00
Nils Adermann
fa8dca2400 [task/mssql-db-tests] Split up database tests into SELECT and write operations
SELECT is based on the user table fixture, write (INSERT/UPDATE/DELETE) is
tested using the config table fixture.

PHPBB3-9868
2010-10-25 19:43:39 +02:00
Nils Adermann
9b4da98653 [task/mssql-db-tests] PHPUnit output got stuck after unterminated ob_start.
PHPBB3-9868
2010-10-25 19:43:39 +02:00
Nils Adermann
ee0993a8a6 [task/mssql-db-tests] sql_query_limit must return all results when total = 0
PHPBB3-9868
2010-10-25 19:43:39 +02:00
Nils Adermann
801f66b4a2 [task/mssql-db-tests] Add support for odbc & sqlsrv PDO test connections
PHPBB3-9868
2010-10-25 19:43:18 +02:00
Nils Adermann
832035f744 [task/mssql-db-tests] Refactored getConnection into multiple smaller parts.
This is a first step to simplify the extraction of database specific code
parts into separate classes.

PHPBB3-9868
2010-10-25 19:40:11 +02:00
Nils Adermann
a397f81a2b [task/mssql-db-tests] Allow test configuration with environment variables.
To allow execution of the tests with different configurations without having
to use the test_config.php file, environment variables of the form
PHPBB_TEST_<name> can now be used, e.g. PHPBB_TEST_DBMS to set the variables
otherwise expected in test_config.php

PHPBB3-9868
2010-10-25 19:39:12 +02:00
Nils Adermann
9dbbfea5fd [task/mssql-db-tests] No longer display an error when skipping db tests.
Tests are run with sqlite by default now anyway, so in the majority of cases
the error message explaining how to set up database test running will not be
displayed anyway. Database tests are now generally simply skipped if no
configuration can be found. The RUNNING_TESTS.txt file explains how to set
them up however, and more info is available on the wiki.

The get_database_config method was moved from test_case_helpers to
database_test_case because it has no general purpose.

PHPBB3-9868
2010-10-25 19:38:58 +02:00
Nils Adermann
ee846c461c [task/mssql-db-tests] Use a simple getter for test case helpers.
Calling initialisation to then use the member directly seems more
complicated than just having a method that returns the instance or
creates it if necessary.

PHPBB3-9868
2010-10-25 19:38:35 +02:00
Nils Adermann
5c5b0fc4be [ticket/9686] Fix mssqlnative database data export
We require version 1.1 of the sqlsrv extension anyway so the regular
sqlsrv_num_rows can be used instead of buffering the result. The result
buffer (class result_mssqlnative) should never automatically free the
resource it receives - we consistently close resources using sql_freeresult().

PHPBB3-9686
2010-10-25 03:33:37 +02:00
Nils Adermann
e87a8ef02c Merge branch 'ticket/igorw/9807' into develop-olympus
* ticket/igorw/9807:
  [ticket/9807] Update existing module permissions in database
  [ticket/9807] Hide avatar tab in UCP when avatars are disabled
2010-10-23 14:08:38 +02:00
Andreas Fischer
294c2c63c0 [ticket/9595] List min/max characters indexed by search for mysql_fulltext.
PHPBB3-9595
2010-10-21 20:31:00 +02:00
Igor Wiedler
b9afa26280 [ticket/9807] Update existing module permissions in database
PHPBB3-9807
2010-10-21 10:22:03 +02:00
Igor Wiedler
d503272645 Merge branch 'ticket/bantu/9857' into develop-olympus
* ticket/bantu/9857:
  [ticket/9857] Remove visible $Id$ from phpBB/docs files.
2010-10-19 14:03:44 +02:00
Igor Wiedler
5f0f8c25be Merge branch 'ticket/igorw/9509' into develop-olympus
* ticket/igorw/9509:
  [ticket/9509] Remove section 8 from index
  [ticket/9509] Close anchor tag in coding guidelines
  [ticket/9509] The VCS is now git
2010-10-19 13:55:18 +02:00
Igor Wiedler
c4dfe24fec [ticket/9509] Remove section 8 from index
Thanks Andreas.

PHPBB3-9509
2010-10-19 13:52:00 +02:00
Igor Wiedler
5ad5930c8f [ticket/9509] Close anchor tag in coding guidelines
Thanks Andreas.

PHPBB3-9509
2010-10-19 13:45:50 +02:00
Andreas Fischer
435636e626 Merge branch 'ticket/jellydoughnut/9854' into develop-olympus
* ticket/jellydoughnut/9854:
  [ticket/9854] Revise docs/auth_api.html to add more methods
2010-10-19 12:32:09 +02:00
Josh Woody
9950fa34c6 [ticket/9854] Revise docs/auth_api.html to add more methods
Notably, the auth_admin class is still missing documentation.

PHPBB3-9854
2010-10-19 12:31:18 +02:00
Andreas Fischer
b27b69cf37 [ticket/9857] Remove visible $Id$ from phpBB/docs files.
PHPBB3-9857
2010-10-19 12:22:07 +02:00
Nils Adermann
b6a60d4d64 [ticket/9509] The VCS is now git
Partially cherry-picked from 163a0974.

PHPBB3-9509
2010-10-18 13:17:16 +02:00
Andreas Fischer
acabe5a013 Merge branch 'ticket/rxu/9840' into develop-olympus
* ticket/rxu/9840:
  [ticket/9840] Display view unread posts link for guests.
2010-10-18 11:50:51 +02:00
Andreas Fischer
6236cfc9fa [ticket/9101] Remove misleading 'below' from RECAPTCHA_EXPLAIN.
Remove misleading 'below' from RECAPTCHA_EXPLAIN because recaptcha is actually
displayed to the side.

PHPBB3-9101
2010-10-18 11:24:04 +02:00
Andreas Fischer
d6aa25ede1 [ticket/9853] Change recaptcha theme from default to 'clean'.
Change recaptcha theme to 'clean' to better coordinate with the color schemes
of prosilver and subsilver2. The default red theme doesn't really fit prosilver
and subsilver2.

PHPBB3-9853
2010-10-18 10:59:00 +02:00
Igor Wiedler
6eb061ef0c Merge branch 'ticket/naderman/9855' into develop-olympus
* ticket/naderman/9855:
  [ticket/9855] Do not include the PHPUnit Framework manually on 3.5+.
  [ticket/9855] Make tests run under PHPUnit 3.5.
2010-10-17 23:36:09 +02:00
Nils Adermann
d56bf3b060 [ticket/9855] Do not include the PHPUnit Framework manually on 3.5+.
PHPBB3-9855
2010-10-17 23:32:57 +02:00
Nils Adermann
e195c91b1d [ticket/9855] Make tests run under PHPUnit 3.5.
PHPBB3-9855
2010-10-17 23:10:49 +02:00
Igor Wiedler
642f940bc8 Merge branch 'ticket/bantu/9848' into develop-olympus
* ticket/bantu/9848:
  [ticket/9848] Add avatars, attachments and store files to .gitignore.
2010-10-17 21:43:29 +02:00
Igor Wiedler
1722c1c819 Merge branch 'ticket/bantu/9841' into develop-olympus
* ticket/bantu/9841:
  [ticket/9841] Change "Save" to "Save draft", "Load" to "Load draft".
2010-10-17 21:38:38 +02:00
Igor Wiedler
2e26f86f02 Merge branch 'ticket/bantu/9822' into develop-olympus
* ticket/bantu/9822:
  [ticket/9822] Correct some style related ACP explain statements.
2010-10-17 21:35:41 +02:00
Igor Wiedler
8ac0efce65 Merge branch 'ticket/bantu/9698' into develop-olympus
* ticket/bantu/9698:
  [ticket/9698] Add .htaccess to the includes subdirectory.
2010-10-17 21:34:31 +02:00
Igor Wiedler
f6db95914b Merge branch 'ticket/bantu/9664' into develop-olympus
* ticket/bantu/9664:
  [ticket/9664] Resolve conflict with accesskey="t", change addlitsitem to "y".
2010-10-17 21:33:45 +02:00
Igor Wiedler
2895ade566 Merge branch 'ticket/bantu/7538' into develop-olympus
* ticket/bantu/7538:
  [ticket/7538] Limit user_login_attempts to prevent SQL errors.
2010-10-17 21:32:20 +02:00
Igor Wiedler
6582455e5d Merge branch 'ticket/bantu/7417' into develop-olympus
* ticket/bantu/7417:
  [ticket/7417] Also focus search keywords and username in subsilver2.
  [ticket/7417] Focus username field when prosilver login page is loaded.
  [ticket/7417] Focus search keywords field when prosilver search page is loaded.
2010-10-17 21:30:40 +02:00
Andreas Fischer
0aecbfa806 Merge branch 'ticket/cs278/7332' into develop-olympus
* ticket/cs278/7332:
  [ticket/7332] Fix post details expand link rendering on Webkit.
2010-10-17 18:33:29 +02:00
Andreas Fischer
003fe87080 Merge branch 'ticket/igorw/9162' into develop-olympus
* ticket/igorw/9162:
  [ticket/9162] Prevent notice on unset poll title
2010-10-17 18:30:59 +02:00
Chris Smith
e2d57fb4da [ticket/7332] Fix post details expand link rendering on Webkit.
PHPBB3-7332
2010-10-17 12:25:20 +01:00
Nils Adermann
5d9aef4794 [task/phing-build] Added a build.xml configuration for phing.
The current state of the phing build script allowed the removal of
some code from the old packaging process written entirely in PHP.
Further simplifcations of the PHP code and additions to the phing
build file will follow.

PHPBB3-9849
2010-10-17 01:19:23 +02:00
rxu
880bace355 [ticket/9840] Display view unread posts link for guests.
Display view unread posts link for guests if applicable.

PHPBB3-9840
2010-10-16 20:46:38 +08:00
Igor Wiedler
07a8d5a3dd [ticket/9162] Prevent notice on unset poll title
Regression from a81c857c96

PHPBB3-9162
2010-10-16 13:55:17 +02:00
Oleg Pudeyev
940191973f [ticket/7417] Also focus search keywords and username in subsilver2.
PHPBB3-7417
2010-10-16 12:24:54 +02:00
Oleg Pudeyev
6e9cf09adb [ticket/7417] Focus username field when prosilver login page is loaded.
PHPBB3-7417
2010-10-16 12:24:48 +02:00
Oleg Pudeyev
105de6b637 [ticket/7417] Focus search keywords field when prosilver search page is loaded.
PHPBB3-7417
2010-10-16 12:24:37 +02:00
Andreas Fischer
931bd25e34 [ticket/9841] Change "Save" to "Save draft", "Load" to "Load draft".
This has confused people that are less familiar with phpBB or web applications
in general. "Save draft" should make it clear that a draft is being saved, but
it is still short enough to be used in a button.

PHPBB3-9841
2010-10-15 19:42:29 +02:00
Andreas Fischer
2c4c1f9257 [ticket/9664] Resolve conflict with accesskey="t", change addlitsitem to "y".
PHPBB3-9664
2010-10-15 19:14:20 +02:00
Andreas Fischer
0452da2bf1 [ticket/7538] Limit user_login_attempts to prevent SQL errors.
PHPBB3-7538
2010-10-15 19:00:14 +02:00
Andreas Fischer
32ee8955b2 [ticket/9848] Add avatars, attachments and store files to .gitignore.
PHPBB3-9848
2010-10-15 18:08:43 +02:00
Andreas Fischer
59e62d271c [ticket/9822] Correct some style related ACP explain statements.
Remove "Additionally, if you have permission you can elect to remove the set
from the filesystem." because that functionality is not implemented.

Also remove unnecessary "When the imageset is deleted it is gone for good."
statement, "It is recommended that you first export your set for possible
future use." should be clear enough.

PHPBB3-9822
2010-10-15 17:57:43 +02:00
Andreas Fischer
d485664404 [ticket/9698] Add .htaccess to the includes subdirectory.
Add .htaccess to the includes folder to prevent full path disclosure when
running PHP 5.3. When the error_reporting setting in php.ini contains the
E_DEPRECATED error level, the PHP parser throws an error message containing
the local filesystem path when accessing one of the captcha plugins directly.
This is because the captcha plugins return explicit references for PHP 4
compatibility.

PHPBB3-9698
2010-10-15 16:47:21 +02:00
Andreas Fischer
b8f37a5024 Merge branch 'ticket/igorw/9816' into develop-olympus
* ticket/igorw/9816:
  [ticket/9816] Remove config.php from repository

Conflicts:
	.gitignore
2010-10-15 15:39:36 +02:00
Andreas Fischer
7ac8838b69 Merge branch 'ticket/igorw/9830' into develop-olympus
* ticket/igorw/9830:
  [ticket/9830] Redirect to install directly when config.php does not exist.
2010-10-15 15:33:27 +02:00
Igor Wiedler
c439cdc618 Merge branch 'ticket/marc1706/9810' into develop-olympus
* ticket/marc1706/9810:
  [ticket/9810] Hide "Select All" of code bbcode on print page
2010-10-04 20:27:00 +02:00
Igor Wiedler
8e7f2e179e Merge branch 'ticket/bantu/9829' into develop-olympus
* ticket/bantu/9829:
  [ticket/9829] Fix error in recaptcha validation.
2010-10-04 17:17:09 +02:00
Andreas Fischer
e081531a21 Merge branch 'ticket/igorw/9804' into develop-olympus
* ticket/igorw/9804:
  [ticket/9804] Account evil3 renamed to igorw, adjust AUTHORS
2010-09-24 12:07:26 +02:00
Igor Wiedler
f6700815a8 [ticket/9804] Account evil3 renamed to igorw, adjust AUTHORS
PHPBB3-9804
2010-09-21 00:53:30 +02:00
Cristian Rodriguez
68b35b5845 [ticket/9829] Fix error in recaptcha validation.
The recaptcha plugin falsely accepted error responses by recaptcha as valid
solutions.

PHPBB3-9829
2010-09-19 16:29:12 +02:00
Igor Wiedler
41245f9f7a Merge branch 'ticket/bantu/9091' into develop-olympus
* ticket/bantu/9091:
  [ticket/9091] Extract IPv4 address from addresses mapped into IPv6.
2010-09-16 23:38:50 +02:00
Igor Wiedler
ed783506c6 Merge branch 'ticket/bantu/9825' into develop-olympus
* ticket/bantu/9825:
  [ticket/9825] Add unit test config and db to gitignore
  [ticket/9825] Unit tests: Use sqlite when possible and no test_config exists.
2010-09-16 23:17:29 +02:00
Igor Wiedler
81d3f382a9 [ticket/9825] Add unit test config and db to gitignore
PHPBB3-9825
2010-09-16 23:16:30 +02:00
Igor Wiedler
46810f8747 Merge branch 'ticket/bantu/9644' into develop-olympus
* ticket/bantu/9644:
  [ticket/9644] Check $mode before calling user_notification() from submit_post()
2010-09-16 22:42:07 +02:00
Igor Wiedler
9015e03d05 Merge branch 'ticket/bantu/9613' into develop-olympus
* ticket/bantu/9613:
  [ticket/9613] Slightly update language strings.
  [ticket/9613] Fix missing database part for unread posts search load switch.
  [ticket/9613] Implement a load switch for unread posts search feature.
2010-09-16 22:34:48 +02:00
Igor Wiedler
3465c5e48d Merge branch 'ticket/bantu/9785' into develop-olympus
* ticket/bantu/9785:
  [ticket/9785] Allow users to request new passwords when board is disabled.
2010-09-16 22:29:18 +02:00
Igor Wiedler
6b5d5e1f63 Merge branch 'ticket/bantu/9609' into develop-olympus
* ticket/bantu/9609:
  [ticket/9609] Change header() calls setting HTTP status to send_status_line().
2010-09-16 22:24:49 +02:00
Igor Wiedler
6bfae1cd1a [ticket/9830] Redirect to install directly when config.php does not exist.
PHPBB3-9830
2010-09-16 22:00:17 +02:00
Andreas Fischer
ac753fa853 [ticket/9825] Unit tests: Use sqlite when possible and no test_config exists.
PHPBB3-9825
2010-09-16 00:03:52 +02:00
Andreas Fischer
d874c32374 Merge branch 'ticket/evil3/9592' into develop-olympus
* ticket/evil3/9592:
  [ticket/9592] Slight adjustments to simplify db test cases
  [ticket/9592] Remove test cases for empty IN()
  [ticket/9592] Test suite does not run on SQlite
2010-09-15 16:01:12 +02:00
Igor Wiedler
a4742f795e [ticket/9592] Slight adjustments to simplify db test cases
PHPBB3-9592
2010-09-15 09:50:04 +02:00
Andreas Fischer
20460dc12c Merge branch 'ticket/nickvergessen/9162' into develop-olympus
* ticket/nickvergessen/9162:
  [ticket/9162] BBCode in poll options is broken, when posting without question.
2010-09-14 16:47:46 +02:00
Andreas Fischer
b4b3efa45b Merge branch 'ticket/nickvergessen/9820' into develop-olympus
* ticket/nickvergessen/9820:
  [ticket/9820] phpBB Debug Error when trying to post a new topic.
2010-09-14 16:29:21 +02:00
Joas Schilling
ffd9437948 [ticket/9820] phpBB Debug Error when trying to post a new topic.
Regression from aa4519fb44

PHPBB3-9820
PHPBB3-7260
2010-09-14 15:43:05 +02:00
Joas Schilling
a81c857c96 [ticket/9162] BBCode in poll options is broken, when posting without question.
PHPBB3-9162
2010-09-14 13:20:38 +02:00
Igor Wiedler
05c88bb00d Merge branch 'ticket/bantu/9804' into develop-olympus
* ticket/bantu/9804:
  [ticket/9804] Update docs/AUTHORS. Move DavidMJ, add evil<3.
2010-09-12 20:36:34 +02:00
Andreas Fischer
4776952959 [ticket/9804] Update docs/AUTHORS. Move DavidMJ, add evil<3.
PHPBB3-9804
2010-09-12 19:19:30 +02:00
Igor Wiedler
161be96c66 Merge branch 'ticket/bantu/9748' into develop-olympus
* ticket/bantu/9748:
  [ticket/9748] Replace <br /> before converting < and > to their entities.
2010-09-12 14:59:59 +02:00
Igor Wiedler
20505ff326 [ticket/9816] Remove config.php from repository
PHPBB3-9816
2010-09-12 14:21:25 +02:00
Igor Wiedler
e08395745b Merge branch 'ticket/bantu/9503' into develop-olympus
* ticket/bantu/9503:
  [ticket/9503] Show 'No subject specified' in 'Posts awaiting approval'.
2010-09-12 13:40:02 +02:00
Igor Wiedler
e51e7701cd Merge branch 'ticket/bantu/9754' into develop-olympus
* ticket/bantu/9754:
  [ticket/9754] Populate S_USER_POSTED variable with correct value in search.php
2010-09-12 13:11:21 +02:00
Igor Wiedler
566ddf8a4b [ticket/9592] Remove test cases for empty IN()
They failed under SQLite because SQLite accepts empty IN() syntax.

PHPBB3-9592
2010-09-12 00:51:27 +02:00
Igor Wiedler
4fd45adfc5 [ticket/9592] Test suite does not run on SQlite
PHPBB3-9592
2010-09-11 23:34:14 +02:00
Andreas Fischer
bef108a5cc [ticket/9609] Change header() calls setting HTTP status to send_status_line().
PHPBB3-9609
2010-09-11 22:01:31 +02:00
Marc Alexander
a235f770f6 [ticket/9810] Hide "Select All" of code bbcode on print page
PHPBB3-9810
2010-09-10 05:34:57 -07:00
Igor Wiedler
fecca4ef21 Merge branch 'ticket/cs278/8935' into develop-olympus
* ticket/cs278/8935:
  [ticket/8935] Prevent setting maximum avatar dimensions less than the minimums.
2010-09-10 10:31:07 +02:00
Chris Smith
264ef66c5c [ticket/8935] Prevent setting maximum avatar dimensions less than the minimums.
This change actually applies to any configruation setting that is a pair
of values one representing the maximum and one minimum. This change enforces
that the maximum value cannot be less than the minimum value.

PHPBB3-8935
2010-09-09 23:42:20 +01:00
Igor Wiedler
2e891c5eba Merge branch 'task/cs278/git-tools' into develop-olympus
* task/cs278/git-tools:
  [task/git-tools] Change the GNU --lines argument to the POSIX -l
  [task/git-tools] Solve dependency on the GNU wc --max-line-length option
2010-09-09 00:20:38 +02:00
Chris Smith
e08e1e0d9a [task/git-tools] Change the GNU --lines argument to the POSIX -l
Changed to awk which handles the formatting differences between the
two versions of wc -- BSD version prefixes the output with spaces,
the GNU version does not.

PHPBB3-9808
2010-09-08 22:53:37 +01:00
Chris Smith
8ce2f63d73 [task/git-tools] Solve dependency on the GNU wc --max-line-length option
PHPBB3-9808
2010-09-07 23:35:47 +01:00
Igor Wiedler
a27811b1d4 [ticket/9807] Hide avatar tab in UCP when avatars are disabled
PHPBB3-9807
2010-09-07 22:27:41 +02:00
Chris Smith
1b3b79b694 Merge branch 'ticket/evil3/8944' into develop-olympus
* ticket/evil3/8944:
  [ticket/8944] Patch db_tools to support index length for MySQL4
  [ticket/8944] Add index length to CREATE INDEX for MySQL4 in database_update
2010-09-05 02:41:34 +01:00
Chris Smith
7de1fc40b3 Merge branch 'ticket/evil3/9800' into develop-olympus
* ticket/evil3/9800:
  [ticket/9800] Update tracker URL in docs/README.html
2010-09-05 02:14:46 +01:00
Igor Wiedler
e7b86871f0 [ticket/8944] Patch db_tools to support index length for MySQL4 2010-09-05 03:14:27 +02:00
Chris Smith
1b7c840bc8 Merge branch 'ticket/evil3/9039' into develop-olympus
* ticket/evil3/9039:
  [ticket/9039] Make mssqlnative.php non-executable
2010-09-05 02:07:14 +01:00
Igor Wiedler
58bdd91d61 [ticket/9039] Make mssqlnative.php non-executable
PHPBB3-9039
2010-09-03 22:43:29 +02:00
Igor Wiedler
bb191a1d69 [ticket/8944] Add index length to CREATE INDEX for MySQL4 in database_update
Fixes following SQL error when updating the database to 3.0.6.

BLOB column 'post_username' used in key specification without a key length

PHPBB3-8944
2010-09-03 22:26:06 +02:00
Igor Wiedler
fdd04eef49 [ticket/9800] Update tracker URL in docs/README.html
PHPBB3-9800
2010-09-02 20:15:33 +02:00
Andreas Fischer
ba0072080d Merge branch 'ticket/jellydoughnut/9662' into develop-olympus
* ticket/jellydoughnut/9662:
  [ticket/9662] Search flood interval no longer applies to non-keyword searches
2010-09-02 17:32:15 +02:00
Chris Smith
ebb4a50d9b Merge branch 'ticket/bantu/9615' into develop-olympus
* ticket/bantu/9615:
  [ticket/9615] magic_quotes_gpc: call stripslashes() before utf8_basename()
2010-08-30 14:55:50 +01:00
Nils Adermann
bb4eb41088 Merge branch 'ticket/bantu/9793' into develop-olympus
* ticket/bantu/9793:
  [ticket/9793] Make sure send_status_line() is defined when in avatar mode.
2010-08-30 00:19:31 +02:00
Andreas Fischer
f9764c684f [ticket/9613] Slightly update language strings.
PHPBB3-9613
2010-08-29 16:50:57 +02:00
rxu
b83163634f [ticket/9613] Fix missing database part for unread posts search load switch.
A record for load_unreads_search parameter had to be added to CONFIG_TABLE.

PHPBB3-9613
2010-08-29 16:09:41 +02:00
rxu
f1d5005797 [ticket/9613] Implement a load switch for unread posts search feature.
Since unread posts search can produce a high server load in certain
circumstances, we implement a switch for ACP "Load settings" to have an option
to disable this type of search.

PHPBB3-9613
2010-08-29 16:09:09 +02:00
Andreas Fischer
dbe8fb6488 Merge branch 'ticket/rxu/9117' into develop-olympus
* ticket/rxu/9117:
  [ticket/9117] Wrong redirection after login.
2010-08-28 23:25:30 +02:00
Andreas Fischer
098ff47602 Merge branch 'ticket/cs278/7369' into develop-olympus
* ticket/cs278/7369:
  [ticket/7369] CPF date should always render the users selection.
2010-08-28 23:25:21 +02:00
Andreas Fischer
250c04c8d5 Merge branch 'ticket/nickvergessen/7296' into develop-olympus
* ticket/nickvergessen/7296:
  [ticket/7296] Exporting styles to tar creates corrupted archives.
2010-08-28 23:25:14 +02:00
Andreas Fischer
dfd3c4a5df Merge branch 'ticket/nickvergessen/9519' into develop-olympus
* ticket/nickvergessen/9519:
  [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
  [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
  [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
  [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
2010-08-28 23:25:05 +02:00
Andreas Fischer
3c02a1cff7 Merge branch 'ticket/jellydoughnut/9772' into develop-olympus
* ticket/jellydoughnut/9772:
  [ticket/9772] Unify permissions for sending email when board_email_form is off
2010-08-28 23:24:55 +02:00
rxu
c71236ff4d [ticket/9117] Wrong redirection after login.
Go easy way for now - just place S_LOGIN_REDIRECT before S_HIDDEN_FIELDS so
the last value override the previous one.

PHPBB3-9117
2010-08-28 23:16:00 +02:00
Josh Woody
2a59e6d486 [ticket/9772] Unify permissions for sending email when board_email_form is off
Sending email via memberlist.php was limited to users having u_sendemail. When
board_email_form is disabled, no such requirement was enforced.  This is now
changed.

PHPBB3-9772
2010-08-28 15:49:47 -05:00
Andreas Fischer
3afd2c6948 [ticket/9793] Make sure send_status_line() is defined when in avatar mode.
When download/file.php is in avatar mode set_modified_headers() can be called,
which then calls send_status_line() which is not available because
includes/functions.php is not included in avatar mode.

We also load includes/functions.php in the bootstrap now to solve this problem.

Regression from c1a4cb1d01.

PHPBB3-9793
PHPBB3-7782
2010-08-27 15:36:26 +02:00
Chris Smith
50c6af0216 [ticket/7369] CPF date should always render the users selection.
CPF render code was incorrectly adding the users timezone offset instead
of removing it to compensate for the addition made in user::format_date().

PHPBB3-7369
2010-08-23 06:24:13 +01:00
Andreas Fischer
cd46b39967 Merge branch 'ticket/jellydoughnut/9646' into develop-olympus
* ticket/jellydoughnut/9646:
  [ticket/9646] Honor CSS comments in @import statements
2010-08-22 21:50:17 +02:00
Chris Smith
e4a1f08364 Merge branch 'ticket/nickvergessen/7260' into develop-olympus
* ticket/nickvergessen/7260:
  [ticket/7260] Don't delete poll if one exists and editing user lacks permission
2010-08-22 19:39:46 +01:00
Joas Schilling
aa4519fb44 [ticket/7260] Don't delete poll if one exists and editing user lacks permission
PHPBB3-7260
2010-08-22 19:30:43 +01:00
Andreas Fischer
889eace41c [ticket/9785] Allow users to request new passwords when board is disabled.
PHPBB3-9785
2010-08-22 20:26:18 +02:00
Joas Schilling
3cbcff56b2 [ticket/7296] Exporting styles to tar creates corrupted archives.
Add the folders to the archive before putting the files inside, seems to break
the tar-archives.

PHPBB3-7296
2010-08-22 11:16:19 -04:00
Andreas Fischer
9731f2492f Merge branch 'ticket/nickvergessen/7716' into develop-olympus
* ticket/nickvergessen/7716:
  [ticket/7716] Data too long for column 'message_subject'
2010-08-21 21:27:07 +02:00
Andreas Fischer
32bffe1a32 Revert "[ticket/7716] Data too long for column 'message_subject'"
This reverts commit 91a60aa878.
2010-08-21 21:25:34 +02:00
Andreas Fischer
7474b69175 Merge branch 'ticket/nickvergessen/7716' into develop-olympus
* ticket/nickvergessen/7716:
  [ticket/7716] Data too long for column 'message_subject'
2010-08-21 21:19:12 +02:00
Joas Schilling
2455a744e6 [ticket/7716] Data too long for column 'message_subject'
PHPBB3-7716
2010-08-21 15:14:16 -04:00
Andreas Fischer
81db8a8644 Merge branch 'ticket/nickvergessen/9104' into develop-olympus
* ticket/nickvergessen/9104:
  [ticket/9104] Safari does not display box headers correctly in the ACP.
2010-08-21 20:32:45 +02:00
Andreas Fischer
4222510e9c Merge branch 'ticket/cs278/7332' into develop-olympus
* ticket/cs278/7332:
  [ticket/7332] Redirect users back to post details when performing actions.
  [ticket/7332] Collapse post details content down to a maximum of 300px heigh
2010-08-21 20:30:33 +02:00
Josh Woody
c3a5fd30ee [ticket/9646] Honor CSS comments in @import statements
Add a basic CSS comment parser that allows comments to prevent loading an
@import statement. For simplicity, only whitespace is allowed between /* and
the @import. Also adjust regex to not parse improper quotation marks.

PHPBB3-9646
PHPBB3-8169
2010-08-20 16:02:58 -05:00
Andreas Fischer
bcf4f4fbdf Merge branch 'ticket/cs278/7972' into develop-olympus
* ticket/cs278/7972:
  [ticket/7972] Copying topics in the MCP now indexes the new topic.
2010-08-20 22:25:20 +02:00
Andreas Fischer
34c3732856 Merge branch 'ticket/nickvergessen/9635' into develop-olympus
* ticket/nickvergessen/9635:
  [ticket/9635] Useless parameter $data['post_time'] in function submit_post.
2010-08-20 22:15:15 +02:00
Andreas Fischer
31144ed4c5 Merge branch 'ticket/nickvergessen/9782' into develop-olympus
* ticket/nickvergessen/9782:
  [ticket/9782] Board disable radio set on when server load high
2010-08-20 22:11:04 +02:00
Chris Smith
de8c334aeb Merge branch 'ticket/bantu/9780' into develop-olympus
* ticket/bantu/9780:
  [ticket/9780] Adding unit tests for gen_rand_string().
  [ticket/9780] Add length check back to gen_rand_string().
2010-08-20 20:56:17 +01:00
Andreas Fischer
e09d6c6d71 [ticket/9780] Adding unit tests for gen_rand_string().
PHPBB3-9780
2010-08-20 21:36:56 +02:00
Josh Woody
c901a9eb70 [ticket/9662] Search flood interval no longer applies to non-keyword searches
The search interval was not consistently applied to "special" searches like
"unread posts" and "view your topics."  Now the special searches are always
exempt from the flood interval.

PHPBB3-9662
2010-08-20 14:22:56 -05:00
Joas Schilling
d533121741 [ticket/9780] Add length check back to gen_rand_string().
PHPBB3-9780
2010-08-20 20:11:36 +02:00
Chris Smith
b73d45ffc8 [ticket/7972] Copying topics in the MCP now indexes the new topic.
PHPBB3-7972
2010-08-20 13:59:21 -04:00
Joas Schilling
932b35ab7a [ticket/9782] Board disable radio set on when server load high
PHPBB3-9782
2010-08-20 13:41:06 -04:00
Joas Schilling
cc9a1952d9 [ticket/9635] Useless parameter $data['post_time'] in function submit_post.
PHPBB3-9635
2010-08-19 23:48:25 -04:00
Joas Schilling
5e330044b8 [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
In the ACM-Modules we need to check whether the function is loaded, before we
use it, as this is not the case from download/file.php in avatar-mode.

PHPBB3-9519
2010-08-19 12:30:24 -04:00
Chris Smith
0ee49ca432 Merge branch 'ticket/bantu/9777' into develop-olympus
* ticket/bantu/9777:
  [ticket/9777] Print error message in pre-commit hook when php is not installed.
2010-08-19 17:26:35 +01:00
Joas Schilling
44125f5533 [ticket/9104] Safari does not display box headers correctly in the ACP.
PHPBB3-9104
2010-08-19 12:22:18 -04:00
Josh Woody
3eb01d50cb Merge branch 'ticket/bantu/9702' into develop-olympus
* ticket/bantu/9702:
  [ticket/9702] Take user's timezone settings into account when banning Until ->
2010-08-19 10:56:34 -05:00
Josh Woody
f0aaecd6cc Merge branch 'ticket/bantu/9599' into develop-olympus
* ticket/bantu/9599:
  [ticket/9599] Reimplement phpbb_checkdnsrr() function.
  [ticket/9599] Adding tests for phpbb_checkdnsrr().
  [ticket/9599] Adding network function tests.
2010-08-19 10:53:10 -05:00
Josh Woody
6343e67fab Merge branch 'ticket/bantu/9534' into develop-olympus
* ticket/bantu/9534:
  [ticket/9534] Update function documentation for user_ipwhois().
  [ticket/9534] Adding support for IPv6 addresses in user_ipwhois().
2010-08-19 10:48:41 -05:00
Oleg Pudeyev
90d8fc7e86 [ticket/9777] Print error message in pre-commit hook when php is not installed.
PHPBB3-9777
2010-08-19 17:44:54 +02:00
Josh Woody
5eb175cefd Merge branch 'ticket/bantu/9694' into develop-olympus
* ticket/bantu/9694:
  [ticket/9694] Call error_reporting() in download/file.php when in avatar mode.
  [ticket/9694] Make sure string offset 0 exists to avoid E_NOTICE message.
2010-08-19 10:26:49 -05:00
Josh Woody
68744484c8 Merge branch 'ticket/bantu/9167' into develop-olympus
* ticket/bantu/9167:
  [ticket/9167] Detect and remove any dead left over shadow topics on update.
  [ticket/9167] Remove shadow topics from remaining forums when deleting a forum

Conflicts:
	phpBB/install/database_update.php
2010-08-19 10:09:32 -05:00
Joas Schilling
91a60aa878 [ticket/7716] Data too long for column 'message_subject'
PHPBB3-7716
2010-08-19 11:00:42 -04:00
Josh Woody
25c579c00d Merge branch 'ticket/bantu/9612' into develop-olympus
* ticket/bantu/9612:
  [ticket/9612] Introduce new function gen_rand_string_friendly().
2010-08-19 09:11:36 -05:00
Josh Woody
46d2d97a37 Merge branch 'ticket/bantu/9611' into develop-olympus
* ticket/bantu/9611:
  [ticket/9611] Make length of activation keys variable between 6 and 10.
2010-08-19 09:03:45 -05:00
Joas Schilling
89b35f7ab9 [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
PHPBB3-9519
2010-08-13 17:10:35 +02:00
Joas Schilling
884cc2ac9b [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
includes/functions_convert.php and install/install_convert.php tested by Dicky.

PHPBB3-9519
2010-08-13 16:40:56 +02:00
Joas Schilling
4c95ed0eeb [ticket/9519] Replace remaining is_writable() calls with phpbb_is_writable().
acm_memory.php is untested. install/install_convert.php and
includes/functions_convert.php are going to be tested and committed afterwards.

PHPBB3-9519
2010-08-10 16:11:39 +02:00
Andreas Fischer
64e6faa877 Merge branch 'ticket/cs278/9771' into develop-olympus
* ticket/cs278/9771:
  [ticket/9771] Remove query string parameters that have no name.
2010-08-10 16:05:45 +02:00
Andreas Fischer
59a0bcd38f Merge branch 'ticket/cs278/9761' into develop-olympus
* ticket/cs278/9761:
  [ticket/9761] Reworded quote nesting depth ACP option to match the behaviour
2010-08-10 16:05:18 +02:00
Andreas Fischer
d66aadc33f Merge branch 'ticket/cs278/9760' into develop-olympus
* ticket/cs278/9760:
  [ticket/9760] Remove unrestricted wildcards from search terms.
2010-08-10 16:04:49 +02:00
Andreas Fischer
19599b4c69 Merge branch 'ticket/nickvergessen/9743' into develop-olympus
* ticket/nickvergessen/9743:
  [ticket/9743] Fix background of top2-class in prosilver for RTL-languages.
2010-08-10 16:03:56 +02:00
Andreas Fischer
19d9d12339 Merge branch 'ticket/rxu/6747' into develop-olympus
* ticket/rxu/6747:
  [ticket/9747] Improve word censor.
2010-08-10 16:00:28 +02:00
Andreas Fischer
1778b53f12 Merge branch 'task/cs278/git-tools' into develop-olympus
* task/cs278/git-tools:
  [task/git-tools] Ignore git commit message comments
  [task/git-tools] Adjust the hook to enforce that a ticket is always mentioned
  [task/git-tools] Vastly expanded commit-msg hook.
  [task/git-tools] Beginnings of a syntax checking hook.
  [task/git-tools] Append ticket identifier to commit message prior to editing.
  [task/git-tools] add install and uninstall scripts for hooks
  [task/git-tools] move ticket id appending to commit-msg hook
  [task/git-tools] append ticket id to git log message
2010-08-10 15:50:53 +02:00
Chris Smith
e17ffa01e6 [task/git-tools] Ignore git commit message comments
Git commit message comments can be contained anywhere in the message and
this change ignores where they appear.

PHPBB3-9768
2010-08-10 14:48:46 +01:00
Chris Smith
a9046e5608 [task/git-tools] Adjust the hook to enforce that a ticket is always mentioned
PHPBB3-9768
2010-08-10 14:48:46 +01:00
Chris Smith
db13dc2d43 [task/git-tools] Vastly expanded commit-msg hook.
This updated hook supports validates each line of the commit message
confirms to the phpBB standards [1], there are two git config options
which adjust the behaviour of the hook. They are:

* phpbb.hooks.commit-msg.fatal: Set to false for the hook to allow
	commits with malformed structure, useful if you'll be squashing
	or editing the commits later. True is the default value.
* phpbb.hooks.commit-msg.debug: Any integer value greater than 0 will
	increase the debugging verbosity of the hook, the default value is 0.

[1] http://wiki.phpbb.com/display/DEV/Git

PHPBB3-9768
2010-08-10 14:48:46 +01:00
Chris Smith
66e58234ec [task/git-tools] Beginnings of a syntax checking hook.
Currently this hook checks line length is less than or equal to 80 characters.

PHPBB3-9768
2010-08-10 14:48:45 +01:00
Chris Smith
bfa7b28734 [task/git-tools] Append ticket identifier to commit message prior to editing.
PHPBB3-9770
2010-08-10 14:48:40 +01:00
Chris Smith
b7a1add009 [ticket/7332] Redirect users back to post details when performing actions.
Moderators are redirected to the index page of the MCP after locking a post,
a better location would be to direct them back to the post details.

PHPBB3-7332
2010-08-08 22:54:21 +01:00
Chris Smith
42e7c8a440 [ticket/7332] Collapse post details content down to a maximum of 300px heigh
The MCP post details can be difficult to use if the post is particularly long
this change shrinks the post area to a maximum of 300 pixels, like the topic
review, making it easier to access the functions beneath the post content.

PHPBB3-7332
2010-08-08 22:49:48 +01:00
Chris Smith
013f0b62b8 [ticket/9771] Remove query string parameters that have no name.
PHPBB3-9771
2010-08-08 16:14:05 +01:00
Chris Smith
76348ce43f [ticket/9760] Remove unrestricted wildcards from search terms.
Wildcards without any further result restrictions will cause phpBB to search
for everything, potentially allowing a DoS attack against the DB server by any
user who can use the search system.

PHPBB3-9760
2010-08-08 14:02:34 +01:00
Andreas Fischer
dd63f57344 [ticket/9615] magic_quotes_gpc: call stripslashes() before utf8_basename()
When magic_quotes_gpc is 'On' it also affects the $_FILES array and a filename
like 'bantu"s testfile.txt' will be returned as 'bantu\"s testfile.txt'.

Because utf8_basename() also strips off anything before the last backslash
the filename was returned as '"s testfile.txt'.

Calling stripslashes() before utf8_basename() solves the problem.

PHPBB3-9615
2010-08-04 12:35:19 +02:00
Andreas Fischer
24e23755cf [ticket/9599] Reimplement phpbb_checkdnsrr() function.
Use gethostbyname(), checkdnsrr(), dns_get_record() or nslookup via exec().

PHPBB3-9599
2010-08-03 10:50:41 +02:00
Andreas Fischer
4707b0c18e [ticket/9599] Adding tests for phpbb_checkdnsrr().
Tests for existing and non-existing records of the types:
MX, A, AAAA, NS, CNAME, TXT

PHPBB3-9599
2010-08-03 10:50:41 +02:00
Andreas Fischer
3e111bb41a [ticket/9599] Adding network function tests.
PHPBB3-9599
2010-08-03 10:50:41 +02:00
Joas Schilling
8045f63b41 [ticket/9743] Fix background of top2-class in prosilver for RTL-languages.
PHPBB3-9743
2010-08-02 11:35:38 +02:00
Andreas Fischer
e1328e87ce Merge branch 'ticket/jellydoughnut/9757' into develop-olympus
* ticket/jellydoughnut/9757:
  [ticket/9757] Fix empty template variable {HISTORY_TITLE}
2010-07-31 02:11:33 +02:00
Andreas Fischer
f179987f64 Merge branch 'ticket/jellydoughnut/9499' into develop-olympus
* ticket/jellydoughnut/9499:
  [ticket/9499] Unify definition of dE() and other javascript functions
2010-07-31 02:10:00 +02:00
Andreas Fischer
ccb4182d29 Merge branch 'ticket/kellanved/9521' into develop-olympus
* ticket/kellanved/9521:
  [ticket/9521] Fix error reporting for the native SQL Server plugin.
2010-07-31 02:08:40 +02:00
Andreas Fischer
4d61788843 Merge branch 'ticket/jellydoughnut/9679' into develop-olympus
* ticket/jellydoughnut/9679:
  [ticket/9679] phpBB offers to notify poster even if notification is disabled
2010-07-31 02:07:25 +02:00
Andreas Fischer
d0d9122165 Merge branch 'ticket/jellydoughnut/9722' into develop-olympus
* ticket/jellydoughnut/9722:
  [ticket/9722] Adjust "New Topic" title attribute for consistency in prosilver
2010-07-31 02:06:44 +02:00
Andreas Fischer
4de440826d Merge branch 'ticket/jellydoughnut/9749' into develop-olympus
* ticket/jellydoughnut/9749:
  [ticket/9749] Fulltext mysql unexpected behavior on entering a dash in query
2010-07-31 02:06:12 +02:00
Andreas Fischer
c8bb9a2d37 Merge branch 'ticket/jellydoughnut/9559' into develop-olympus
* ticket/jellydoughnut/9559:
  [ticket/9559] Do not override queue package size in the case of an overflow
2010-07-31 02:04:54 +02:00
Henry Sudhof
47557fd4d2 [ticket/9521] Fix error reporting for the native SQL Server plugin.
The native SQL Server plugin used to return an error string when calling
sql_error. However, some error condition checks are done using is_array.
This patch wraps the error into an array to follow the error logic used
elsewhere.

PHPBB3-9521
2010-07-31 01:48:13 +02:00
Josh Woody
15d7010d46 [ticket/9757] Fix empty template variable {HISTORY_TITLE}
The template variable {HISTORY_TITLE} was always being set to the empty string.
It is now filled with the title of the currently displayed message.  It is not
showed in prosilver or subsilver2 for aesthetic reasons (title is already
prominent)

PHPBB3-9757
2010-07-29 13:19:19 -05:00
Josh Woody
ac56b71c3e [ticket/9749] Fulltext mysql unexpected behavior on entering a dash in query
The Fulltext_mysql class had different behavior when a dash was entered in the
search query than the fulltext_native class.  Specifically, a dash was
automatically turned into boolean NOT even when the user wanted to search for
legitimate hyphenated words like farty-pants

PHPBB3-9749
2010-07-29 10:13:17 -05:00
Josh Woody
8ea0309ed1 [ticket/9679] phpBB offers to notify poster even if notification is disabled
The "notify user" check box would not do anything if checked in this case, but
it was still presented.  The checkbox is now only shown if there are
notification options enabled.

PHPBB3-9679
2010-07-29 10:01:35 -05:00
Andreas Fischer
18079d01b3 Merge branch 'task/evil3/set-permissions' into develop-olympus
* task/evil3/set-permissions:
  [task/set-permissions] shell script to set file permissions
2010-07-29 14:57:53 +02:00
Andreas Fischer
843d6e53fb [ticket/9754] Populate S_USER_POSTED variable with correct value in search.php
PHPBB3-9754
2010-07-26 23:58:10 +02:00
Josh Woody
4880305436 [ticket/9499] Unify definition of dE() and other javascript functions
dE() was defined differently in the ACP and in prosilver.  Other javascript
in editor.js files has also been unified (taking the prosilver implementation
as cannonical)

PHPBB3-9499
2010-07-26 13:29:53 -05:00
rxu
4d0a53b5ee [ticket/9747] Improve word censor.
Better handling of the asterisk inside censor pattern like 'bad*word' etc.

PHPBB3-9747
2010-07-25 16:57:00 +08:00
Richard Foote
66fc086742 [ticket/9748] Replace <br /> before converting < and > to their entities.
PHPBB3-9748
2010-07-24 11:48:47 +02:00
Andreas Fischer
95e0340daf [ticket/9644] Check $mode before calling user_notification() from submit_post()
PHPBB3-9644
2010-07-23 20:30:21 +02:00
Andreas Fischer
2f67eafd34 [ticket/9503] Show 'No subject specified' in 'Posts awaiting approval'.
Show 'No subject specified' in 'Posts awaiting approval' if post subject is
empty.

PHPBB3-9503
2010-07-23 19:50:17 +02:00
Andreas Fischer
aca0e024fa [ticket/9702] Take user's timezone settings into account when banning Until ->
PHPBB3-9702
2010-07-23 18:41:49 +02:00
Andreas Fischer
e5d5d58172 [ticket/9091] Extract IPv4 address from addresses mapped into IPv6.
PHPBB3-9091
2010-07-23 12:48:01 +02:00
Josh Woody
2f312b2175 [ticket/9559] Do not override queue package size in the case of an overflow
This reverts r8025 to includes/functions_messenger.php.  That code caused
problems on hosters with email limits less than package_size*2.5.  And it isn't
desirable in general to over-ride the admin's configuration options.

PHPBB3-9559
2010-07-22 10:44:31 -05:00
Josh Woody
c284ffade9 [ticket/9722] Adjust "New Topic" title attribute for consistency in prosilver
Title attribute was being applied to a <div> at the top of the page and to an
<a> at the bottom of the page.  Now both being applied to the <div>.

PHPBB3-9722
2010-07-21 22:42:44 -05:00
Andreas Fischer
fc25fe694a Merge branch 'ticket/bantu/9068' into develop-olympus
* ticket/bantu/9068:
  [ticket/9068] Added a missing comma in acp load settings explanation text.
2010-07-22 01:41:02 +02:00
Andreas Fischer
0f5814ac4f Merge branch 'ticket/bantu/9744' into develop-olympus
* ticket/bantu/9744:
  [ticket/9744] Fix mistyped word 'then' in FAQ. It should be 'than'.
2010-07-22 01:40:44 +02:00
Andreas Fischer
fada2ad261 Merge branch 'ticket/t-backoff/9099' into develop-olympus
* ticket/t-backoff/9099:
  [ticket/9099] Add missing commas in acp language.
2010-07-22 01:40:19 +02:00
Andreas Fischer
cfe0b5356f Merge branch 'ticket/jellydoughnut/9727' into develop-olympus
* ticket/jellydoughnut/9727:
  [ticket/9727] Smiley Path replacement in feeds is too generic
2010-07-22 01:39:18 +02:00
Nick Anderegg
afff4f7923 [ticket/9068] Added a missing comma in acp load settings explanation text.
PHPBB3-9068
2010-07-22 01:36:08 +02:00
Andreas Fischer
72dddf3aa3 [ticket/9744] Fix mistyped word 'then' in FAQ. It should be 'than'.
PHPBB3-9744
2010-07-22 00:31:13 +02:00
Tabitha Backoff
875fcda506 [ticket/9099] Add missing commas in acp language.
PHPBB3-9099
2010-07-21 17:37:14 +02:00
Josh Woody
16c95b4f83 [ticket/9727] Smiley Path replacement in feeds is too generic
The smiley path replacement in the feeds was too broad: any post content
containing "./" was changed to the fully qualified board URL. This broke CSS
for example.

PHPBB3-9727
2010-07-18 11:51:13 -05:00
Andreas Fischer
0dc05a2d84 Merge branch 'ticket/kellanved/9504' into develop-olympus
* ticket/kellanved/9504:
  [ticket/9504] Allow whitespaces in gallery avatars
2010-07-15 23:15:41 +02:00
Andreas Fischer
cb043b0e61 Merge branch 'ticket/rxu/9658' into develop-olympus
* ticket/rxu/9658:
  [ticket/9658] Optimize topic splitting.
2010-07-15 23:15:36 +02:00
rxu
1363ee109b [ticket/9658] Optimize topic splitting.
Split topics takes too long in some cases because of wrong variables or arrays
values types adjustment. Cast values representing topic and forum ids as int.

PHPBB3-9658
2010-07-15 23:10:22 +02:00
Henry Sudhof
8690d25b4f [ticket/9504] Allow whitespaces in gallery avatars
Gallery avatars are discovered on the server filesystem; to allow linking to
the images, the filenames are urlencoded before being written to the database.
However, getimagesize needs the decoded filename as input.

PHPBB3-9504
2010-07-15 13:05:56 +02:00
Andreas Fischer
e7e98f1de5 Merge branch 'ticket/nickvergessen/7720' into develop-olympus
* ticket/nickvergessen/7720:
  [ticket/7720] Fix alternative image-description for unread posts.
2010-07-14 20:55:49 +02:00
Joas Schilling
954b3c3484 [ticket/7720] Fix alternative image-description for unread posts.
Changed the wrong word "new" to "unread" as that is, what we show with the
red-icons, not whether the post is new or not. Language variables were
kept for backwards compatibility.

PHPBB3-7720
2010-07-14 20:55:07 +02:00
Patrick W
54713dcdc7 [ticket/9761] Reworded quote nesting depth ACP option to match the behaviour
The nesting depth applies per quote block, not per post which the previous
label and description indicated.

PHPBB3-9761
2010-07-12 02:04:29 +01:00
Igor Wiedler
14e5da90c3 [task/git-tools] add install and uninstall scripts for hooks
PHPBB3-9769
2010-07-12 02:04:29 +01:00
Igor Wiedler
6b2f4b6a85 [task/git-tools] move ticket id appending to commit-msg hook
PHPBB3-9770
2010-07-12 02:04:29 +01:00
Igor Wiedler
f0509e4620 [task/git-tools] append ticket id to git log message
PHPBB3-9770
2010-07-12 02:04:29 +01:00
Andreas Fischer
da256b33d9 Merge branch 'ticket/ckwalsh/9715' into develop-olympus
* ticket/ckwalsh/9715:
  [ticket/9715] Better email regex
  [ticket/9715] Extend email unit tests
2010-07-12 01:56:00 +02:00
Andreas Fischer
d869fc9804 Merge branch 'ticket/bantu/9714' into develop-olympus
* ticket/bantu/9714:
  [ticket/9714] Use correct variable name in email regular expression tests.
2010-07-12 01:55:52 +02:00
Andreas Fischer
88f6caf012 Merge branch 'ticket/naderman/9701' into develop-olympus
* ticket/naderman/9701:
  [ticket/9701] Prevent notices from being hidden by template tests
2010-07-12 01:53:58 +02:00
Andreas Fischer
eb7254a0c4 Merge branch 'ticket/naderman/9140' into develop-olympus
* ticket/naderman/9140:
  [ticket/9140] Check current board version in incremental update packages
2010-07-12 01:38:39 +02:00
Gabriel Vazquez
2ba6360e43 [ticket/9140] Check current board version in incremental update packages
Since we do not want to limit the updater functionality we only display
a prominent warning when the current board version does not match the
version the update files are meant to update from.

PHPBB3-9140
2010-07-12 01:37:05 +02:00
Cullen Walsh
593e193bdc [ticket/9715] Better email regex
Using email regex created by James Watts and Francisco Jose Martin Moreno.
This passes many more tests for RFC valid emails.

PHPBB3-9715
2010-07-11 16:22:26 -07:00
Cullen Walsh
a0b9f7806a [ticket/9715] Extend email unit tests
Adding more email tests for a wider range of valid email formats.

PHPBB3-9715
2010-07-11 16:20:27 -07:00
Andreas Fischer
6724b79967 Merge branch 'ticket/nickvergessen/9531' into develop-olympus
* ticket/nickvergessen/9531:
  [ticket/9531] BBCode-less quotes fallback-option is missing "Author wrote:"
2010-07-12 00:04:33 +02:00
Joas Schilling
5d9948e39c [ticket/9531] BBCode-less quotes fallback-option is missing "Author wrote:"
When quoting from the topic-review the statement "Author wrote:" is missing. The fix for this was not complete: Now it's backwards compatibile and uses the LA_ for the language variables.

PHPBB3-9531
2010-07-11 10:18:45 +02:00
Andreas Fischer
062d8fda04 Merge branch 'ticket/adamreyher/9012' into develop-olympus
* ticket/adamreyher/9012:
  [ticket/9012] Adjust shadow topic title to the title at the time it was moved.
2010-07-11 02:53:06 +02:00
Adam Reyher
b939ce5940 [ticket/9012] Adjust shadow topic title to the title at the time it was moved.
Moved topics which have their title changed in the new forum will now show the
old title in the original viewforum instead of the new title.

PHPBB3-9012
2010-07-11 02:44:07 +02:00
Andreas Fischer
2d9aa45aef Merge branch 'ticket/jellydoughnut/9637' into develop-olympus
* ticket/jellydoughnut/9637:
  [ticket/9637] Do not cache SQL server version in all cases
2010-07-11 01:44:59 +02:00
Josh Woody
9c61455d26 [ticket/9637] Do not cache SQL server version in all cases
Because the existing cache is global, there is no way to differentiate between
each of two databases which may be two different DBAL objects pointing to
servers with wildly different versions of an RDBMS. phpBB only has this
situation in the UCF, thus only one file changed outside the DBAL. I have
added a second optional parameter, $use_cache to each of the implementations
of dbal::sql_server_info()

PHPBB3-9637
2010-07-11 01:41:38 +02:00
Andreas Fischer
08a34ebe94 Merge branch 'ticket/jellydoughnut/9629' into develop-olympus
* ticket/jellydoughnut/9629:
  [ticket/9629] Allow style.php to retrieve its session ID from cookies
2010-07-11 01:41:22 +02:00
Josh Woody
c40b2c7601 [ticket/9629] Allow style.php to retrieve its session ID from cookies
style.php takes a session ID to ensure it gets the right language for a user,
but that session ID is always passed in GET. This allows change allows the SID
to be read from the cookie, and theoretically makes it friendlier for caching
engines like Varnish.

PHPBB3-9629
2010-07-11 01:35:01 +02:00
Andreas Fischer
c0183cabd0 [ticket/9534] Update function documentation for user_ipwhois().
PHPBB3-9534
2010-07-11 01:19:42 +02:00
Andreas Fischer
ed44235d26 [ticket/9534] Adding support for IPv6 addresses in user_ipwhois().
whois.arin.net does currently not refer to other servers (using ReferralServer)
when queried for an IPv6 address. whois.sixxs.net however works in this case.

This also adds '.' to the hostname to make sure we're querying the dns root.

PHPBB3-9534
2010-07-11 01:19:27 +02:00
Andreas Fischer
e46745ed34 Merge branch 'ticket/nickvergessen/9678' into develop-olympus
* ticket/nickvergessen/9678:
  [ticket/9678] Flash attachments are not displayed in subsilver2.
2010-07-10 21:22:33 +02:00
Andreas Fischer
e629929958 Merge branch 'ticket/nickvergessen/9677' into develop-olympus
* ticket/nickvergessen/9677:
  [ticket/9677] Subsilver2 is missing the bbcode-helpline for inline-attachments.
2010-07-10 21:22:31 +02:00
Andreas Fischer
0c2512bea2 Merge branch 'ticket/jellydoughnut/9650' into develop-olympus
* ticket/jellydoughnut/9650:
  [ticket/9650] Do not allow banning the anonymous user by username
2010-07-10 21:22:16 +02:00
Nils Adermann
bbc3105466 [ticket/9701] Prevent notices from being hidden by template tests
The template tests disable NOTICEs for the duration of template execution since
the current version of the template engine does not generate sufficiently clean
code. The error level is reset aftwards, however that part is skipped when
trigger_error is called which is converted into a regular exception by PHPUnit
and passed down until caught. Such exceptions are now caught to reset the error
level, and then the exception is rethrown.

This uncovered another issue in the template tests which only passed because
NOTICEs were unintentionally disabled at this point. assign_display is also
required to operate without NOTICEs. The respective code has been added around
its callee as well. However no handling of exceptions takes place there. If
another test checking for errors in that function is ever added similar catch
logic will have to be added there.

PHPBB3-9701
2010-07-08 22:46:28 +02:00
Joas Schilling
df99bdbd53 [ticket/9678] Flash attachments are not displayed in subsilver2.
PHPBB3-9678
2010-07-08 21:22:54 +02:00
Joas Schilling
fc89d5d7db [ticket/9677] Subsilver2 is missing the bbcode-helpline for inline-attachments.
PHPBB3-9677
2010-07-08 21:13:17 +02:00
Andreas Fischer
c6c4d01fe9 [ticket/9714] Use correct variable name in email regular expression tests.
PHPBB3-9714
2010-07-08 20:26:50 +02:00
Josh Woody
ae967d16f1 [ticket/9650] Do not allow banning the anonymous user by username
Banning anonymous can result in bad things, like not being able to log in.  However, it was possible until now.

PHPBB3-9650
2010-07-08 13:24:45 -05:00
Andreas Fischer
6da582e8be Merge branch 'ticket/p/9570' into develop-olympus
* ticket/p/9570:
  [ticket/9570] Changed "system" to "guest" timezone in ACP, added explanation.
2010-07-08 20:02:34 +02:00
Andreas Fischer
29716cd5d5 Merge branch 'ticket/p/9589' into develop-olympus
* ticket/p/9589:
  [ticket/9589] Added sample nginx configuration file for phpbb.
2010-07-08 20:01:22 +02:00
Andreas Fischer
7a0b554724 Merge branch 'ticket/p/9593' into develop-olympus
* ticket/p/9593:
  [ticket/9593] A readme file for unit tests and running unit tests.
2010-07-08 20:00:26 +02:00
Andreas Fischer
c3db21bfa2 Merge branch 'ticket/bantu/9451' into develop-olympus
* ticket/bantu/9451:
  [ticket/9451] Add optional $can_upload parameter to avatar_process_user().
2010-07-08 19:52:29 +02:00
Andreas Fischer
f92c96d424 Merge branch 'ticket/jellydoughnut/9690' into develop-olympus
* ticket/jellydoughnut/9690:
  [ticket/9690] Add forthcoming Bing Bot to list of recognized bots
2010-07-08 19:49:22 +02:00
Andreas Fischer
c86f9eb25a Merge branch 'ticket/evil3/9704' into develop-olympus
* ticket/evil3/9704:
  [ticket/9704] Fix minor typo in coding guidelines.
2010-07-08 19:44:39 +02:00
Igor Wiedler
58cb46d344 [ticket/9704] Fix minor typo in coding guidelines.
PHPBB3-9704
2010-07-08 09:15:03 +02:00
Andreas Fischer
c79df9700d Merge branch 'ticket/nickvergessen/9578' into develop-olympus
* ticket/nickvergessen/9578:
  [ticket/9578] ACP Posting tab is missing "Post settings" module.
2010-07-08 02:20:25 +02:00
Andreas Fischer
c592cab989 Merge branch 'ticket/nickvergessen/9628' into develop-olympus
* ticket/nickvergessen/9628:
  [ticket/9628] _add_module 'after'-parameter does not work correctly.
2010-07-08 02:20:05 +02:00
Andreas Fischer
f22f89888d Merge branch 'ticket/jellydoughnut/9695' into develop-olympus
* ticket/jellydoughnut/9695:
  [ticket/9695] Correct the improper display of user input in mcp_ban.php
2010-07-08 01:41:16 +02:00
Andreas Fischer
c091a04a55 Merge branch 'ticket/nickvergessen/9697' into develop-olympus
* ticket/nickvergessen/9697:
  [ticket/9697] Backlink broken when the select parent forum does not exist.
2010-07-08 01:29:47 +02:00
Andreas Fischer
e3fe4d7b56 Merge branch 'ticket/jellydoughnut/9703' into develop-olympus
* ticket/jellydoughnut/9703:
  [ticket/9703] Correct database leak where deleting user did not rm some PM data
2010-07-08 01:24:18 +02:00
Andreas Fischer
ef753d046d Merge branch 'ticket/cs278/9712' into develop-olympus
* ticket/cs278/9712:
  [ticket/9712] Future dates can be formatted as 'less than one minute ago'
2010-07-08 01:21:55 +02:00
Chris Smith
9764a32138 [ticket/9712] Future dates can be formatted as 'less than one minute ago'
PHPBB3-9712
2010-07-07 23:04:46 +01:00
Josh Woody
d00f2ec183 [ticket/9690] Add forthcoming Bing Bot to list of recognized bots
Microsoft will rename MSN Bot to Bing Bot later this year, and change its user agent.  This updates phpBB to be aware of Bing Bot

PHPBB3-9690
2010-07-07 15:51:31 -05:00
Thatbitextra
e130a6bad9 [ticket/9451] Add optional $can_upload parameter to avatar_process_user().
Avoid unnecessary overhead in avatar_process_user() by optionally passing in
the value of $can_upload.

PHPBB3-9451
2010-07-07 16:45:00 +02:00
Oleg Pudeyev
030f9c03c6 [ticket/9593] A readme file for unit tests and running unit tests.
Added a readme file explaining prerequisites for unit tests, and how to run
unit tests.

PHPBB3-9593
2010-07-07 16:10:13 +02:00
Andreas Fischer
4ac5d5e352 Merge branch 'ticket/naderman/9659' into develop-olympus
* ticket/naderman/9659:
  [ticket/9659] Signature options in set_user_options
2010-07-07 12:09:04 +02:00
Richard Foote
b64f456c40 [ticket/9659] Signature options in set_user_options
The phpBB3 defaults are being used.

PHPBB3-9659
2010-07-06 14:43:50 +02:00
Oleg Pudeyev
097854ca85 [ticket/9570] Changed "system" to "guest" timezone in ACP, added explanation.
PHPBB3-9570
2010-07-06 13:14:04 +02:00
Josh Woody
24cc3fd0f9 [ticket/9703] Correct database leak where deleting user did not rm some PM data
Users' PM rules and PM folders were being left intact when deleting them.

PHPBB3-9703
2010-07-03 21:21:22 -05:00
Joas Schilling
0db657381b [ticket/9697] Backlink broken when the select parent forum does not exist.
PHPBB3-9697
2010-07-02 12:28:06 +02:00
Josh Woody
0e93d8386b [ticket/9695] Correct the improper display of user input in mcp_ban.php
Correct the improper display of "ban_reason" and "ban_give_reason" in mcp_ban.php

PHPBB3-9695
2010-07-01 17:48:32 -05:00
Andreas Fischer
881c74688b [ticket/9694] Call error_reporting() in download/file.php when in avatar mode.
PHPBB3-9694
2010-07-01 23:30:48 +02:00
Andreas Fischer
32882fd798 [ticket/9694] Make sure string offset 0 exists to avoid E_NOTICE message.
PHPBB3-9694
2010-07-01 23:29:25 +02:00
Igor Wiedler
38cc9ce72f [task/set-permissions] shell script to set file permissions
PHPBB3-9689
2010-06-28 18:12:56 +02:00
Andreas Fischer
b7ae0fe4e9 Merge branch 'ticket/bantu/9655' into develop-olympus
* ticket/bantu/9655:
  [ticket/9655] Pass E_USER_WARNING, so it doesn't look like a successful action.
2010-06-20 22:46:23 +02:00
Andreas Fischer
352c69f7b2 Merge branch 'ticket/bantu/9665' into develop-olympus
* ticket/bantu/9665:
  [ticket/9665] Allow preview of signature when it is the string "0".
2010-06-20 22:46:14 +02:00
Andreas Fischer
d537dc60ce Merge branch 'ticket/bantu/9656' into develop-olympus
* ticket/bantu/9656:
  [ticket/9656] Remove @ from phpinfo() to get correct error_reporting value.
2010-06-20 22:45:55 +02:00
Andreas Fischer
b91950d413 Merge branch 'ticket/bantu/9653' into develop-olympus
* ticket/bantu/9653:
  [ticket/9653] Valid XHTML with code BBCode in subsilver2 viewtopic signatures
2010-06-20 22:45:47 +02:00
Andreas Fischer
3496948b94 Merge branch 'ticket/bantu/9643' into develop-olympus
* ticket/bantu/9643:
  [ticket/9643] Only split $port from $sqlserver, if it's not an IPv6 address.
2010-06-20 22:45:28 +02:00
Andreas Fischer
6b1f7a2d9d Merge branch 'ticket/bantu/9112' into develop-olympus
* ticket/bantu/9112:
  [ticket/9112] Make sure current user can see most active forum/topic.
2010-06-20 22:45:16 +02:00
Andreas Fischer
ac45f07402 [ticket/9653] Valid XHTML with code BBCode in subsilver2 viewtopic signatures
PHPBB3-9653
2010-06-20 21:48:07 +02:00
Andreas Fischer
52c3b51c95 [ticket/9656] Remove @ from phpinfo() to get correct error_reporting value.
PHPBB3-9656
2010-06-20 21:43:56 +02:00
Andreas Fischer
6221ba4dd1 [ticket/9665] Allow preview of signature when it is the string "0".
Since only the SIGNATURE_PREVIEW parameter is evaluated in the templates
<!-- IF SIGNATURE_PREVIEW --> will not allow the signature to be "0".
<!-- IF SIGNATURE_PREVIEW != '' --> however does allow "0".

PHPBB3-9665
2010-06-20 13:38:36 +02:00
Andreas Fischer
6d248097e5 Merge branch 'ticket/jellydoughnut/9132' into develop-olympus
* ticket/jellydoughnut/9132:
  [ticket/9132] Oracle CLOB support is broken, preventing storage of long strings
2010-06-17 19:15:17 +02:00
Andreas Fischer
4eac7dca6d Merge branch 'ticket/rxu/9606' into develop-olympus
* ticket/rxu/9606:
  [ticket/9606] Optimize unread search option.
2010-06-17 19:10:59 +02:00
Andreas Fischer
876a6e4686 Merge branch 'ticket/bantu/9626' into develop-olympus
* ticket/bantu/9626:
  [ticket/9626] Adding tests for the URL regular expression.
  [ticket/9626] Add missing class prefix.
  [ticket/9626] A few tests for the email regular expression.
  [ticket/9626] More IPv6 regex tests.
  [ticket/9626] Adding tests for the IPv4 regular expression.
  [ticket/9626] Adding tests for regular expressions.
2010-06-17 18:50:41 +02:00
Andreas Fischer
26057fe3ff Merge branch 'ticket/bantu/9587' into develop-olympus
* ticket/bantu/9587:
  [ticket/9587] Replace '0px' with '0'.
2010-06-17 18:35:53 +02:00
Andreas Fischer
4bc2158235 [ticket/9587] Replace '0px' with '0'.
This has been introduced by merge of c7a25c58b8, which was not supposed to be merged. 1b2a65333b5be1f6086bbd1d438e061041bd2b75 was supposed to be merged instead.

PHPBB3-9587
2010-06-17 17:01:13 +02:00
Andreas Fischer
f9105084b0 Merge branch 'ticket/nickvergessen/9605' into develop-olympus
* ticket/nickvergessen/9605:
  [ticket/9605] Wrong class added to topiclist, when there's no announcement topic.
2010-06-17 16:47:48 +02:00
Andreas Fischer
9975d24b9d Merge branch 'ticket/nickvergessen/9605' into develop-olympus
* ticket/nickvergessen/9605:
  [ticket/9605] Wrong class added to topiclist, when there's no announcement topic.
2010-06-17 16:31:38 +02:00
Andreas Fischer
84e58260ae Merge branch 'ticket/nickvergessen/9587' into develop-olympus
* ticket/nickvergessen/9587:
  [ticket/9587] Prosilver overrides reCaptcha class.
2010-06-17 16:27:25 +02:00
Andreas Fischer
8d18b98e15 Merge branch 'feature/bantu/dbal-tests' into develop-olympus
* feature/bantu/dbal-tests:
  [feature/dbal-tests] Follow the coding guidelines and ...
  [feature/dbal-tests] Update data
  [feature/dbal-tests] Multi insert
  [feature/dbal-tests] Delete data
  [feature/dbal-tests] Insert data
  [feature/dbal-tests] Fix SQL-ERROR: invalid input syntax for integer: ""
2010-06-17 16:17:06 +02:00
Joas Schilling
ef69f22698 [feature/dbal-tests] Follow the coding guidelines and ...
resolved a bug caused by a missing order-by.

PHPBB3-9625
2010-06-17 16:06:17 +02:00
Joas Schilling
e3420de295 [feature/dbal-tests] Update data
PHPBB3-9625
2010-06-17 16:06:10 +02:00
Joas Schilling
d9c2e6cbcf [feature/dbal-tests] Multi insert
PHPBB3-9625
2010-06-17 16:06:10 +02:00
Joas Schilling
c4b0814c62 [feature/dbal-tests] Delete data
PHPBB3-9625
2010-06-17 16:06:10 +02:00
Joas Schilling
539ae0ffaf [feature/dbal-tests] Insert data
PHPBB3-9625
2010-06-17 16:06:10 +02:00
Joas Schilling
b03a7a2c83 [feature/dbal-tests] Fix SQL-ERROR: invalid input syntax for integer: ""
PHPBB3-9625
2010-06-17 16:06:10 +02:00
Joas Schilling
82db1c9c50 [ticket/9605] Wrong class added to topiclist, when there's no announcement topic.
Compare the topic_type on their real value, to ensure there is no MOD causing problems, because of a new topic-type.

PHPBB3-9605
2010-06-17 15:56:25 +02:00
Andreas Fischer
e66c089626 [ticket/9112] Make sure current user can see most active forum/topic.
PHPBB3-9112
2010-06-15 20:20:02 +02:00
Andreas Fischer
6c7d16894b Merge branch 'ticket/jellydoughnut/9633' into develop-olympus 2010-06-15 14:28:00 +02:00
Andreas Fischer
7c789795fb Merge branch 'ticket/jellydoughnut/9623' into develop-olympus 2010-06-15 13:41:02 +02:00
Josh Woody
d6551b1233 [ticket/9623] Proper UTF8 encoding for usernames in pruning section
The username textboxes were not being properly encoded in UTF8.

PHPBB3-9623
2010-06-15 13:39:58 +02:00
Andreas Fischer
46cae83264 [ticket/9655] Pass E_USER_WARNING, so it doesn't look like a successful action.
PHPBB3-9655
2010-06-14 22:27:23 +02:00
Josh Woody
e942af5331 [ticket/9132] Oracle CLOB support is broken, preventing storage of long strings
This reverts Oracle support to the state it was in prior to phpBB 3.0.6.  That is, storage of long strings works again (e.g. posts > 4 KB), but the database backup/restore functionality is broken.  We feel that the ability to store long strings is more important than the DB restore, since Oracle 10g itself provides tools for backing up databases.

PHPBB3-9132
2010-06-13 19:18:35 -05:00
Andreas Fischer
38fc35a497 [ticket/9167] Detect and remove any dead left over shadow topics on update.
PHPBB3-9167
2010-06-11 21:52:04 +02:00
Andreas Fischer
30891ffb46 [ticket/9167] Remove shadow topics from remaining forums when deleting a forum
including posts.

The function delete_topic_shadows() had to be reimplemented.
It was there but it was completly broken and hasn't been used at all.

PHPBB3-9167
2010-06-11 21:50:08 +02:00
Oleg Pudeyev
bb32daab63 [ticket/9589] Added sample nginx configuration file for phpbb.
PHPBB3-9589
2010-06-10 15:58:49 +02:00
Andreas Fischer
879bc89524 [ticket/9643] Only split $port from $sqlserver, if it's not an IPv6 address.
PHPBB3-9643
2010-06-08 19:27:55 +02:00
Josh Woody
b4df815547 [ticket/9633] Newly Registered Group Colour not used in "Our Newest Member"
Due to an oversight, the default group was not properly checked in the user_add function.  This fix corrects the check.  No other changes are needed because they go direct to the database, this one used an array in memory.

PHPBB3-9633
2010-06-01 00:19:43 -05:00
Nils Adermann
a5b238019b Merge branch 'feature/notify_status' into develop-olympus
* feature/notify_status:
  [ticket/9179] Remove unnecessary newline.
2010-05-30 15:20:37 +02:00
Andreas Fischer
491fc0516e [ticket/9179] Remove unnecessary newline.
cc8d22bed6 added one empty line too much.

PHPBB3-9179
2010-05-30 15:20:15 +02:00
Nils Adermann
c38cb1761c Merge branch 'ticket/nickvergessen/9147' into develop-olympus
* ticket/nickvergessen/9147:
  [ticket/9147] "Change topic type"-option "Normal" always selected.
2010-05-30 15:05:06 +02:00
Nils Adermann
8f91e6ce8b Merge branch 'ticket/nickvergessen/9135' into develop-olympus
* ticket/nickvergessen/9135:
  [ticket/9135] Fix report-icon for moderators in PM folders.
2010-05-30 14:58:30 +02:00
Nils Adermann
a6b07eef5a Merge branch 'ticket/nickvergessen/9094' into develop-olympus
* ticket/nickvergessen/9094:
  [ticket/9094] Hide "Copy permissions" message, when permissions were copied.
2010-05-30 14:54:22 +02:00
Nils Adermann
760957e7e7 Merge branch 'ticket/nickvergessen/8936' into develop-olympus
* ticket/nickvergessen/8936:
  [ticket/8936] Subsilver2 missing reply-to-all feature.
2010-05-30 14:26:17 +02:00
Nils Adermann
b7afeadd6d Merge branch 'ticket/bantu/8792' into develop-olympus
* ticket/bantu/8792:
  [ticket/8792] Add LDAP_SEARCH_FAILED string for when ldap_search() fails.
2010-05-30 14:19:58 +02:00
Nils Adermann
26c2efc083 Merge branch 'ticket/p/7782' into develop-olympus
* ticket/p/7782:
  [ticket/7782] Return 404 HTTP status code for nonexistent attachments.
  [ticket/7782] Added spaces.
  [ticket/7782] Added phpdoc comment for send_status_line function.
  [ticket/7782] Send status line using refactored download/file.php logic.
2010-05-29 23:23:08 +02:00
Joas Schilling
801a44b3f0 [ticket/9147] "Change topic type"-option "Normal" always selected.
PHPBB3-9147
2010-05-28 14:25:56 +02:00
Joas Schilling
4637709f0a [ticket/9628] _add_module 'after'-parameter does not work correctly.
The modules were grouped by left_id so num_modules is always one (hopefully), but the number of rows is the actual value we'd like to know. Removing the GROUP BY resolves the issue.

PHPBB3-9628
2010-05-28 13:13:53 +02:00
Joas Schilling
160d1bfd07 [ticket/9578] ACP Posting tab is missing "Post settings" module.
PHPBB3-9578
2010-05-28 13:03:56 +02:00
Joas Schilling
4746a60d22 [ticket/9094] Hide "Copy permissions" message, when permissions were copied.
When creating a forum, you afterwards read "Forum created successfully. Now you are able to set permissions for this forum.", also when you already copied the permissions from another forum.

PHPBB3-9094
2010-05-27 15:17:03 +02:00
Joas Schilling
9e24993855 [ticket/9135] Fix report-icon for moderators in PM folders.
There was a S_TOPIC_REPORTED switch in the template of prosilver, which should indicate whether the PM is reported. But the variable was neither filled, nor named correctly. Now it is filled with a boolean and a link to the report is displayed for permitted users.

PHPBB3-9135
2010-05-26 01:38:19 +02:00
Andreas Fischer
aaaa4f9abe [ticket/9626] Adding tests for the URL regular expression.
PHPBB3-9626
2010-05-25 12:08:52 +02:00
Andreas Fischer
646b16f5db [ticket/9626] Add missing class prefix.
PHPBB3-9626
2010-05-25 12:08:51 +02:00
Andreas Fischer
6a5ad05d8a [ticket/9626] A few tests for the email regular expression.
PHPBB3-9626
2010-05-25 12:08:51 +02:00
Andreas Fischer
12e92fc45e [ticket/9626] More IPv6 regex tests.
PHPBB3-9626
2010-05-25 12:08:51 +02:00
Andreas Fischer
1c59f3dbd0 [ticket/9626] Adding tests for the IPv4 regular expression.
PHPBB3-9626
2010-05-25 12:08:51 +02:00
Andreas Fischer
222173adae [ticket/9626] Adding tests for regular expressions.
Adding tests for the IPv6 regular expression returned by get_preg_expression()

PHPBB3-9626
2010-05-25 12:08:51 +02:00
Joas Schilling
c7a25c58b8 [ticket/9587] Prosilver overrides reCaptcha class.
PHPBB3-9587
2010-05-24 23:59:28 +02:00
Joas Schilling
b6df5bdb14 [ticket/8936] Subsilver2 missing reply-to-all feature.
PHPBB3-8936
2010-05-24 23:32:18 +02:00
Joas Schilling
877d852a52 [ticket/9605] Wrong class added to topiclist, when there's no announcement topic.
Just added a check whether the type is announcement or higher.

PHPBB3-9605
2010-05-24 20:12:34 +02:00
Oleg Pudeyev
c185e45e09 [ticket/7782] Return 404 HTTP status code for nonexistent attachments.
PHPBB3-7782
2010-05-17 14:14:53 -04:00
rxu
d819ee343a [ticket/9606] Optimize unread search option.
Get rid of redundant SQL query in search.php that should increase performance slightly.

PHPBB3-9606
2010-05-17 21:14:02 +08:00
Andreas Fischer
c2b29c317f [ticket/9612] Introduce new function gen_rand_string_friendly().
Introduce new function gen_rand_string_friendly() for user friendly random
strings like passwords and captcha codes. Strings generated by
gen_rand_string_friendly() will not contain the characters 0 and O.

By adding a new function we can increase the entropy of strings
generated by gen_rand_string() by putting 0 and O back in.

PHPBB3-9612
2010-05-17 09:44:48 +02:00
Andreas Fischer
af21e38c1d [ticket/9611] Make length of activation keys variable between 6 and 10.
PHPBB3-9611
2010-05-17 08:54:51 +02:00
Oleg Pudeyev
d721e94b88 [ticket/7782] Added spaces.
PHPBB3-7782
2010-05-17 02:01:13 -04:00
Oleg Pudeyev
691f682fc2 [ticket/7782] Added phpdoc comment for send_status_line function.
PHPBB3-7782
2010-05-16 19:52:01 -04:00
Oleg Pudeyev
c1a4cb1d01 [ticket/7782] Send status line using refactored download/file.php logic.
PHPBB3-7782
2010-05-16 18:24:26 -04:00
Andreas Fischer
327f9afbc0 [ticket/8792] Add LDAP_SEARCH_FAILED string for when ldap_search() fails.
No longer use LDAP_NO_SERVER_CONNECTION in case ldap_search() fails.
Add and use LDAP_SEARCH_FAILED instead, so users can tell the difference
between ldap_connect() failing and ldap_search() failing.

PHPBB3-8792
2010-05-16 23:05:13 +02:00
Joas Schilling
6d7e30ae99 [develop-olympus] Move rxu and nickvergessen to Developers 2010-05-16 20:06:11 +02:00
Nils Adermann
0bf2c3eed5 Merge branch 'feature/notify_status' into develop-olympus
* feature/notify_status:
  [feature/notify_status] Define'd constants for notify_status
2010-05-16 19:51:25 +02:00
Mark
cc8d22bed6 [feature/notify_status] Define'd constants for notify_status
define'd constants NOTIFY_YES, NOTIFY_NO to replace magic numbers in
forums_watch table and topics_watch table

PHPBB3-9179
2010-05-16 19:50:35 +02:00
Nils Adermann
e36da18b1c Merge branch 'ticket/p/7782' into develop-olympus
* ticket/p/7782:
  [ticket/7782] Send 404 HTTP code when a nonexistent user/forum/topic is requested.
2010-05-16 19:25:41 +02:00
Oleg Pudeyev
82ce29ac58 [ticket/7782] Send 404 HTTP code when a nonexistent user/forum/topic is requested.
PHPBB3-7782
2010-05-16 19:23:54 +02:00
Nils Adermann
321f7a9946 Merge branch 'ticket/nickvergessen/9530' into develop-olympus
* ticket/nickvergessen/9530:
  [ticket/9530] The prosilver problem in #9531 exists in subsilver2 editor.js
  [ticket/9530] Subsilver2 is missing BBCode-less quotes fallback-option when bbcodes are disabled.
2010-05-16 19:17:25 +02:00
Joas Schilling
a11fa9c738 [ticket/9530] The prosilver problem in #9531 exists in subsilver2 editor.js
PHPBB3-9530
2010-05-16 19:14:57 +02:00
Joas Schilling
d147bdcd73 [ticket/9530] Subsilver2 is missing BBCode-less quotes fallback-option when bbcodes are disabled.
PHPBB3-9530
2010-05-16 19:14:36 +02:00
Nils Adermann
b1f9b39475 Merge branch 'ticket/nickvergessen/9531' into develop-olympus
* ticket/nickvergessen/9531:
  [ticket/9531] BBCode-less quotes fallback-option is missing "Author wrote:" line when quoting from topic-review.
2010-05-16 19:13:32 +02:00
Joas Schilling
fe9c5019b6 [ticket/9531] BBCode-less quotes fallback-option is missing "Author wrote:" line when quoting from topic-review.
PHPBB3-9531
2010-05-16 19:13:22 +02:00
Nils Adermann
b308cfe5ea Merge branch 'ticket/bantu/9547' into develop-olympus
* ticket/bantu/9547:
  [ticket/9547] Use separate constants for display/enable active topics.
2010-05-16 18:58:15 +02:00
Andreas Fischer
d555e83b80 [ticket/9547] Use separate constants for display/enable active topics.
Split S_DISPLAY_ACTIVE_TOPICS into S_DISPLAY_ACTIVE_TOPICS and
S_ENABLE_ACTIVE_TOPICS so we have correct default values when changing the
forum type.

PHPBB3-9547
2010-05-16 18:54:48 +02:00
Nils Adermann
7499c7c884 Merge branch 'ticket/nickvergessen/9535' into develop-olympus
* ticket/nickvergessen/9535:
  [ticket/9535] Also fix the margin in the install_update.html
  [ticket/9535] Fix some more rtl margin issues.
  [ticket/9535] Correctly set margin of textarea in ACP > Users signature for RTL languages.
2010-05-16 18:51:09 +02:00
Joas Schilling
9fa8bb82e4 [ticket/9535] Also fix the margin in the install_update.html
PHPBB3-9535
2010-05-16 18:50:48 +02:00
Joas Schilling
0da86964d5 [ticket/9535] Fix some more rtl margin issues.
PHPBB3-9535
2010-05-16 18:50:25 +02:00
Joas Schilling
41498fe3ee [ticket/9535] Correctly set margin of textarea in ACP > Users signature for RTL languages.
PHPBB3-9535
2010-05-16 18:49:17 +02:00
Nils Adermann
8ade14a036 Merge branch 'ticket/nickvergessen/9548' into develop-olympus
* ticket/nickvergessen/9548:
  [ticket/9548] Delete user quicktool drop down should have an empty or invalid selection as the default
2010-05-16 18:42:46 +02:00
Nils Adermann
273d926b08 Merge branch 'ticket/aptx/9525' into develop-olympus
* ticket/aptx/9525:
  [ticket/9524] IPv6 regex does not match all valid IPv6 addresses starting with ::
2010-05-16 18:38:28 +02:00
Marek A. Ruszczyński
1d2b4ffc65 [ticket/9524] IPv6 regex does not match all valid IPv6 addresses starting with ::
:: can replace 1 or more groups (not 2 or more)

PHPBB3-9524
2010-05-16 18:36:21 +02:00
Josh Woody
e6b9178c44 [ticket/9510] Unable to copy permissions from and to forums you cannot see
This commit fixes the bug mentioned, plus a large number of regressions caused by changing the behavior of make_forum_select() (in svn r10427, dated Jan 18, 2010).  It also rolls back the changes from branch "bug/58415", which are no longer needed.

PHPBB3-9510
2010-05-16 18:20:54 +02:00
Josh Woody
ed0a26ab16 [ticket/9510] Unable to copy permissions from and to forums you cannot see
This commit fixes the bug mentioned, plus a large number of regressions caused by changing the behavior of make_forum_select() (in svn r10427, dated Jan 18, 2010).  It also rolls back the changes from branch "bug/58415", which are no longer needed.

PHPBB3-9510
2010-05-16 18:19:28 +02:00
Nils Adermann
63d172e379 Merge branch 'ticket/bantu/9545' into develop-olympus
* ticket/bantu/9545:
  [ticket/9545] Initial forum should display active topics by default.
2010-05-16 17:50:36 +02:00
Andreas Fischer
36c1986986 [ticket/9545] Initial forum should display active topics by default.
The initial forum 'Your first forum' should show topics
(especially the 'Welcome to phpBB3' topic) in the active topics list after
installing phpBB because this is the default setting for new forums
(but not categories).

The default database column value for forum_flags is 32 =
FORUM_FLAG_POST_REVIEW, we therefore have to explicitly set forum_flags to
FORUM_FLAG_POST_REVIEW + FORUM_FLAG_ACTIVE_TOPICS = 48 for this forum.

PHPBB3-9545
2010-05-16 17:49:06 +02:00
Nils Adermann
2a806ddbaf Merge branch 'ticket/nickvergessen/9546' into develop-olympus
* ticket/nickvergessen/9546:
  [ticket/9546] Also delete bookmarks, when a topic is deleted.
2010-05-16 17:47:38 +02:00
Joas Schilling
d8b4c0db0c [ticket/9546] Also delete bookmarks, when a topic is deleted.
PHPBB3-9546
2010-05-16 17:47:05 +02:00
Nils Adermann
ffe17fa426 Merge branch 'ticket/rxu/9567' into develop-olympus
* ticket/rxu/9567:
  [ticket/9567] Newly registered users group description rewording.
2010-05-16 17:32:46 +02:00
Nils Adermann
a625e4b48a Merge branch 'ticket/nickvergessen/9529' into develop-olympus
* ticket/nickvergessen/9529:
  [ticket/9529] Topic review is not showing all selected posts.
2010-05-16 17:11:47 +02:00
Joas Schilling
a3874c2cd6 [ticket/9529] Topic review is not showing all selected posts.
PHPBB3-9529
2010-05-16 17:09:25 +02:00
Nils Adermann
355d4b8ff8 Merge branch 'ticket/nickvergessen/9528' into develop-olympus
* ticket/nickvergessen/9528:
  [ticket/9528] Also fall back to bbcode-less quotes for PMs, when bbcodes are disabled.
2010-05-16 17:06:50 +02:00
Joas Schilling
18e0b07487 [ticket/9528] Also fall back to bbcode-less quotes for PMs, when bbcodes are disabled.
PHPBB3-9528
2010-05-16 17:06:28 +02:00
Nils Adermann
1326264823 Merge branch 'ticket/nickvergessen/9146' into develop-olympus
* ticket/nickvergessen/9146:
  [ticket/9146] Fix double occurring tabindex="6" in prosilver's QR
2010-05-16 17:00:26 +02:00
Joas Schilling
97d180ab66 [ticket/9146] Fix double occurring tabindex="6" in prosilver's QR
PHPBB3-9146
2010-05-16 16:59:48 +02:00
Nils Adermann
0f35101c49 Merge branch 'ticket/nickvergessen/9119' into develop-olympus
* ticket/nickvergessen/9119:
  [ticket/9119] Respect language selection on automated update.
2010-05-16 16:56:29 +02:00
Joas Schilling
d8b5594c14 [ticket/9119] Respect language selection on automated update.
PHPBB3-9119
2010-05-16 16:54:29 +02:00
Nils Adermann
e477b3acc8 Merge branch 'ticket/nickvergessen/8894' into develop-olympus
* ticket/nickvergessen/8894:
  [ticket/8894] Fix JavaScript-Error and hide Quote-Button on topic review if BBCodes are not allowed.
2010-05-16 16:49:39 +02:00
Joas Schilling
e3ba934cd7 [ticket/8894] Fix JavaScript-Error and hide Quote-Button on topic review if BBCodes are not allowed.
PHPBB3-8894
2010-05-16 16:49:00 +02:00
Nils Adermann
478708346e Merge branch 'ticket/bantu/9174' into develop-olympus
* ticket/bantu/9174:
  [ticket/9173] No longer limit scope of numbers we store in the config table on
2010-05-14 02:46:56 +02:00
Nils Adermann
fa5845e8c5 Merge branch 'ticket/nickvergessen/7717' into develop-olympus
* ticket/nickvergessen/7717:
  [ticket/7717] Localise default extension groups for attachments
2010-05-14 02:44:19 +02:00
Joas Schilling
58dc5a191c [ticket/7717] Localise default extension groups for attachments
PHPBB3-7717
2010-05-14 02:42:21 +02:00
Nils Adermann
be1c550344 Merge branch 'ticket/bantu/9598' into develop-olympus
* ticket/bantu/9598:
  [ticket/9598] checkdnsrr() is now available on Windows with PHP 5.3 or later. Change if block order to always call checkdnsrr() if the function is available.
2010-05-14 02:39:17 +02:00
Andreas Fischer
99482e9555 [ticket/9598] checkdnsrr() is now available on Windows with PHP 5.3 or later. Change if block order to always call checkdnsrr() if the function is available.
PHPBB3-9598
2010-05-14 02:39:04 +02:00
Nils Adermann
39770de921 Merge branch 'ticket/bantu/9536' into develop-olympus
* ticket/bantu/9536:
  [ticket/9536] Small improvement for query against user/session tables when managing users from the ACP.
2010-05-14 02:33:52 +02:00
Andreas Fischer
032a9f58f9 [ticket/9173] No longer limit scope of numbers we store in the config table on
PostgreSQL and Firebird when using set_config_count().

Since we're using a VARCHAR(255) column to store the numbers we have to CAST
the varchar string to a type we can do maths on. Using int4 or integer as the
type however limits the scope to 4-byte-integer = 32-bit. Using DECIMAL(255, 0)
allows the 'full' scope of decimals in varchar(255).

PHPBB3-9173
2010-05-14 02:33:31 +02:00
Andreas Fischer
823f2571f5 [ticket/9536] Small improvement for query against user/session tables when managing users from the ACP.
There can be multiple entries in the session table for one user_id. We only need and also only fetch one. Using LIMIT 1 should therefore increase performance slightly. This is especially true when editing the anonymous user account because the session table can have many entries for the user_id ANONYMOUS.

PHPBB3-9536
2010-05-14 02:31:44 +02:00
Nils Adermann
928fbb0126 Merge branch 'ticket/bantu/9526' into develop-olympus
* ticket/bantu/9526:
  [ticket/9526] If an admin changes a user's 'user_allow_viewonline' flag to 'hide me' the admin usually wants that user to be hidden immediately. We therefore have to update his session if one exists.
2010-05-14 02:28:59 +02:00
Andreas Fischer
cb642cff11 [ticket/9526] If an admin changes a user's 'user_allow_viewonline' flag to 'hide me' the admin usually wants that user to be hidden immediately. We therefore have to update his session if one exists.
In the UCP this is not necessary, because there is code in $user->setup() that updates the session table on the next page reload.

Since we cannot tell if the user generally wants to be hidden or the user only wants to be hidden for one session, we only update the session table when setting the flag to 'hide me', but not 'show me' - equivalent to how it works in the UCP.

If the user is a bot we however also update the session when setting the flag to 'show me' because bots cannot login at all.

PHPBB3-9526
2010-05-14 02:27:37 +02:00
Nils Adermann
c7e8e7e0bc Merge branch 'ticket/bantu/9518' into develop-olympus
* ticket/bantu/9518:
  [ticket/9518] Correctly create new connection on PostgreSQL when new connection is forced.
2010-05-14 02:23:13 +02:00
Andreas Fischer
970848409d [ticket/9518] Correctly create new connection on PostgreSQL when new connection is forced.
pg_connect() takes an integer as the second parameter, but we were passing a boolean parameter. The function especially requires passing the PGSQL_CONNECT_FORCE_NEW constant if a new connection is to be forced. Passing 0 as the second parameter for 'do not force a new connection' doesn't work as expected, hence we're calling the function without a second parameter in this case.

PHPBB3-9518
2010-05-14 02:22:24 +02:00
Nils Adermann
8196d7d711 Merge branch 'ticket/bantu/9514' into develop-olympus
* ticket/bantu/9514:
  [ticket/9514] Correctly delete big datasets when deleting a forum including topics/posts on non-MySQL databases.
2010-05-14 02:17:45 +02:00
Nils Adermann
528816dcbd Merge branch 'ticket/bantu/9176' into develop-olympus
* ticket/bantu/9176:
  [ticket/9176] Take current board timezone settings into account when setting board date format.
2010-05-14 02:14:48 +02:00
Andreas Fischer
9ce0873bd1 [ticket/9514] Correctly delete big datasets when deleting a forum including topics/posts on non-MySQL databases.
PHPBB3-9514
2010-05-14 02:10:50 +02:00
Nils Adermann
b3bbe57603 Merge branch 'ticket/p/6726' into develop-olympus
* ticket/p/6726:
  [ticket/6726] Added localhost/127.0.0.1 note to database server hostname explanation in install language.
2010-05-14 01:41:31 +02:00
Oleg Pudeyev
3a515bffb9 [ticket/6726] Added localhost/127.0.0.1 note to database server hostname explanation in install language.
When using PostgreSQL adapter and connecting to local database server,
use localhost to connect via UNIX domain socket and 127.0.0.1 to connect
via TCP.

PHPBB3-6726
2010-05-14 01:41:10 +02:00
Nils Adermann
5fb945c220 Merge branch 'feature/bantu/remote_upload-filesize' into develop-olympus
* feature/bantu/remote_upload-filesize:
  [feature/remote_upload-filesize] Also check HTTP content-length before actually starting the file transfer.
  [feature/remote_upload-filesize] When transferring files from a remote webserver, abort the transfer as soon as the allowed filesize has been exceeded.
2010-05-14 01:19:49 +02:00
Andreas Fischer
e4398ef42e [feature/remote_upload-filesize] Also check HTTP content-length before actually starting the file transfer.
PHPBB3-9517
2010-05-14 01:19:34 +02:00
Andreas Fischer
d19565756a [feature/remote_upload-filesize] When transferring files from a remote webserver, abort the transfer as soon as the allowed filesize has been exceeded.
PHPBB3-9517
2010-05-14 01:19:34 +02:00
Andreas Fischer
3e9d15a25d [ticket/9176] Take current board timezone settings into account when setting board date format.
PHPBB3-9176
2010-05-13 14:25:44 +02:00
Nils Adermann
91399fd357 Merge branch 'feature/webpi' into develop-olympus
* feature/webpi:
  [feature/webpi] Validate inline with MSSQL password policy.
2010-05-03 19:43:57 +02:00
Nils Adermann
ad93eaaaf3 Merge branch 'ticket/cs278/9582' into develop-olympus
* ticket/cs278/9582:
  [ticket/9582] MSSQL native backups can now be restored.
  [ticket/9582] Advanced search cannot be accessed using MSSQL native.
  [ticket/9582] Removing a report reason leaves reports with an unknown reason under MSSQL native.
  [ticket/9582] Unable to edit CPFs from UCP under MSSQL native driver.
  [ticket/9582] Custom profile fields cannot be created under MSSQL native.
2010-05-03 19:41:04 +02:00
Chris Smith
11d097fc1a [ticket/9582] MSSQL native backups can now be restored.
PHPBB3-9583
PHPBB3-9582
2010-05-03 19:40:45 +02:00
e95faaeb68 [ticket/9582] Advanced search cannot be accessed using MSSQL native.
PHPBB3-9562
PHPBB3-9582
2010-05-03 19:40:39 +02:00
a20576fdd4 [ticket/9582] Removing a report reason leaves reports with an unknown reason under MSSQL native.
PHPBB3-9564
PHPBB3-9582
2010-05-03 19:40:33 +02:00
5739426136 [ticket/9582] Unable to edit CPFs from UCP under MSSQL native driver.
PHPBB3-9566
PHPBB3-9582
2010-05-03 19:40:26 +02:00
171807213f [ticket/9582] Custom profile fields cannot be created under MSSQL native.
PHPBB3-9565
PHPBB3-9582
2010-05-03 19:38:42 +02:00
Nils Adermann
38ba3dcdd9 Merge branch 'ticket/cs278/9520' into develop-olympus
* ticket/cs278/9520:
  [ticket/9520] Additionally filter requests for {common,config}.php
  [ticket/9520] New web.config file as suggested by Microsoft using request filter
  [ticket/9520] Removed per directory web.config files.
  [ticket/9520] Add suggested web.config for root files as suggested by Microsoft.
  [ticket/9520] Add some default web.config files for IIS.
2010-05-03 19:36:18 +02:00
Chris Smith
43f47dba4c [ticket/9520] Additionally filter requests for {common,config}.php
PHPBB3-9520
2010-05-03 19:32:29 +02:00
Chris Smith
8612fc23d4 [ticket/9520] New web.config file as suggested by Microsoft using request filter
PHPBB3-9520
2010-05-03 19:31:54 +02:00
Chris Smith
e11e53e11b [ticket/9520] Removed per directory web.config files.
These use the IIS rewriter to reject requests, Microsoft have suggested
we just use a single web.config with the builtin request filter.

PHPBB3-9520
2010-05-03 19:31:40 +02:00
Chris Smith
9ac7c492ed [ticket/9520] Add suggested web.config for root files as suggested by Microsoft.
PHPBB3-9520
2010-05-03 19:31:18 +02:00
Chris Smith
cdd9ecdd68 [ticket/9520] Add some default web.config files for IIS.
These deny access to the various directories written to by phpBB.

PHPBB3-9520
2010-05-03 19:30:52 +02:00
Nils Adermann
fd23bccd4d [develop-olympus] Basic gitignore file for cache files and backups. 2010-05-02 23:44:42 +02:00
Nils Adermann
e09ab8a4c5 Merge branch 'ticket/bantu/9170' into develop-olympus
* ticket/bantu/9170:
  [ticket/9170] Unable to get image size in img bbcode when URL has multiple parameters.
2010-05-02 23:43:46 +02:00
Andreas Fischer
abacc2d07d [ticket/9170] Unable to get image size in img bbcode when URL has multiple parameters.
Since we htmlspecialchars() all input we have to htmlspecialchars_decode() before passing the URL along to getimagesize().

PHPBB3-9170
2010-05-02 23:43:32 +02:00
rxu
b3028567c8 [ticket/9567] Newly registered users group description rewording.
Reword 'NEW_MEMBER_GROUP_DEFAULT_EXPLAIN' language entry to make it more linguistically correct.

PHPBB3-9567
2010-05-02 14:50:33 +08:00
Nils Adermann
cb3cf71805 Merge branch 'feature/cs278/git-tools' into develop-olympus
* feature/cs278/git-tools:
  [git-tools] Use @ instead of : in sed command in pre-commit hook for wider compatibility.
  [git-tools] Adjusted pre-commit hook to run under freebsd /bin/sh.
  [git-tools] Changed pre-commit hook to use sh instead of bash
2010-04-28 12:31:24 +02:00
Joas Schilling
5f4c6e9c91 [ticket/9548] Delete user quicktool drop down should have an empty or invalid selection as the default
PHPBB3-9548
2010-04-18 15:13:53 +02:00
Chris Smith
b22a651c5c [feature/webpi] Validate inline with MSSQL password policy. 2010-04-15 23:00:27 +01:00
Chris Smith
f6dd150ed8 Merge branch 'p/git-tools' into git-tools 2010-04-13 21:46:19 +01:00
Oleg Pudeyev
9674214b2f [git-tools] Use @ instead of : in sed command in pre-commit hook for wider compatibility. 2010-04-13 21:44:18 +01:00
Oleg Pudeyev
9afe2c9b6e [git-tools] Adjusted pre-commit hook to run under freebsd /bin/sh. 2010-04-13 21:44:12 +01:00
Oleg Pudeyev
5a3ec9901d [git-tools] Changed pre-commit hook to use sh instead of bash 2010-04-13 21:44:03 +01:00
Nils Adermann
03d50a2e83 Merge branch 'feature/cs278/webpi' into develop-olympus
* feature/cs278/webpi:
  [feature/webpi] Web PI supports UNIX line endings so we'll remove them
  [feature/webpi] Hopefully finally fix this
  [feature/webpi] Fix messed up line endings
  [feature/webpi] Add WebPI support to the build script.
  [feature/webpi] Package files for Microsoft Web Platform Installer
  [feature/dbal-tests] Remove hardcoded 'mysql' from PDO DSN in DBAL test.
  [feature/dbal-tests] Fix mysql (not mysqli) dbal test.
2010-04-09 09:10:12 +02:00
Chris Smith
cc127d8217 [feature/webpi] Web PI supports UNIX line endings so we'll remove them 2010-04-08 17:23:15 +01:00
Chris Smith
a2fe71a6d3 [feature/webpi] Hopefully finally fix this 2010-04-08 17:01:10 +01:00
Chris Smith
f9946de5b3 [feature/webpi] Fix messed up line endings 2010-04-08 16:56:24 +01:00
Chris Smith
839f464b78 [feature/webpi] Add WebPI support to the build script. 2010-04-08 17:29:05 +02:00
Chris Smith
02aed4b66f [feature/webpi] Package files for Microsoft Web Platform Installer 2010-04-08 17:28:47 +02:00
Andreas Fischer
eaa591046f [feature/dbal-tests] Remove hardcoded 'mysql' from PDO DSN in DBAL test. 2010-04-08 17:26:39 +02:00
Andreas Fischer
584206b8ae [feature/dbal-tests] Fix mysql (not mysqli) dbal test.
Correctly determine MySQL version from the database.
2010-04-08 17:26:38 +02:00
Nils Adermann
925a135613 Merge branch 'bug/cs278/59465' into develop-olympus
* bug/cs278/59465:
  [bug/59465] Remove start=0 from topic pagination links.
  [bug/59465] Removes start=0 from URLs used by viewtopic and viewforum.
2010-04-04 15:32:36 +02:00
Nils Adermann
560a1b3ad4 Merge branch 'bug/nickvergessen/9047' into develop-olympus
* bug/nickvergessen/9047:
  [bug/9047] Use correct forum_id to generate the active topics list. (Bug #9047)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-04 15:31:38 +02:00
Nils Adermann
1af1a96501 Merge branch 'feature/nickvergessen/unapproved-posts-in-feed' into develop-olympus
* feature/nickvergessen/unapproved-posts-in-feed:
  [feature/unapproved-posts-in-feed] Little changelog correction
  [feature/unapproved-posts-in-feed] Increase performance of is_moderator_approve_forum() as per bantu
  [feature/unapproved-posts-in-feed] View note for moderators on unapproved posts/topics with unapproved posts in ATOM Feed

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-04 15:29:45 +02:00
Nils Adermann
feb3987802 Merge branch 'bug/nickvergessen/9512' into develop-olympus
* bug/nickvergessen/9512:
  [bug/9512] Fix dead link in MCP on reports for global announcements in prosilver. (Bug #9512)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-04 15:26:50 +02:00
Nils Adermann
5b5463a981 Merge branch 'bug/nickvergessen/58745' into develop-olympus
* bug/nickvergessen/58745:
  [bug/58745] Correct changelog message
  [bug/58745] Correctly close user-delete-form in ACP User Overview (Bug #58745)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-04 15:21:27 +02:00
Nils Adermann
f07c9fab2b Merge branch 'bug/nickvergessen/58695' into develop-olympus
* bug/nickvergessen/58695:
  [bug/58695] Use method to get forums where user is moderator, thanks to bantu for the hint
  [bug/58695] Only show unapproved posts in ATOM Feeds for moderators (Bug #58695)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-04 15:17:48 +02:00
Nils Adermann
fa9510be23 Merge branch 'feature/evil3/git-tools' into develop-olympus
* feature/evil3/git-tools:
  [git-tools] add note about PHP_BIN using env
  [git-tools] do not display stderr
  [git-tools] Prepend the branch to the commit message for all branches.
  [git-tools] Use env to find the correct paths to binaries.
  [git-tools] Display what parse errors were found.
  [git-tools] This script requires bash to run, so point directly to bash.
  [git-tools] Improvements for the pre-commit hook
  [git-tools] Improvements on prepare-commt-msg hook
  [git-tools] Some pre-commit enhancements, abolish tempfile
  [git-tools] use mktemp in pre-commit (thanks nn-)
  [git-tools] pre-commit hook for syntax checking
2010-04-04 15:04:28 +02:00
Joas Schilling
39f26c5cfd [bug/9047] Use correct forum_id to generate the active topics list. (Bug #9047) 2010-04-04 12:23:07 +02:00
Joas Schilling
5f044a015e [bug/9512] Fix dead link in MCP on reports for global announcements in prosilver. (Bug #9512) 2010-04-04 02:03:23 +02:00
Joas Schilling
19c7ea3c16 [feature/unapproved-posts-in-feed] Little changelog correction 2010-04-04 01:49:56 +02:00
Joas Schilling
9b596faa39 [feature/unapproved-posts-in-feed] Increase performance of is_moderator_approve_forum() as per bantu 2010-04-04 01:35:55 +02:00
Joas Schilling
46f85329da [feature/unapproved-posts-in-feed] View note for moderators on unapproved posts/topics with unapproved posts in ATOM Feed 2010-04-04 01:34:47 +02:00
Igor Wiedler
11de6a46b1 [git-tools] add note about PHP_BIN using env 2010-04-03 22:06:25 +02:00
Igor Wiedler
8091e31666 [git-tools] do not display stderr 2010-04-03 21:53:09 +02:00
Joas Schilling
738914ac83 [bug/58745] Correct changelog message 2010-04-03 13:11:23 +02:00
Joas Schilling
492d86000e [bug/58745] Correctly close user-delete-form in ACP User Overview (Bug #58745) 2010-04-03 13:05:44 +02:00
Joas Schilling
0d4daeb615 [bug/58695] Use method to get forums where user is moderator, thanks to bantu for the hint 2010-04-03 12:56:52 +02:00
Joas Schilling
8d0c0dcbcd [bug/58695] Only show unapproved posts in ATOM Feeds for moderators (Bug #58695) 2010-04-03 12:55:31 +02:00
Igor Wiedler
e3ebdbd79b Merge branch 'develop-olympus' into git-tools 2010-04-03 10:47:07 +02:00
Chris Smith
3e5236dcd6 [git-tools] Prepend the branch to the commit message for all branches. 2010-04-03 02:13:48 +01:00
Chris Smith
b6920b7ca8 [git-tools] Use env to find the correct paths to binaries. 2010-04-03 02:12:21 +01:00
Chris Smith
5568b2134b [git-tools] Display what parse errors were found. 2010-04-03 01:53:12 +01:00
Chris Smith
a06ec8c7fd [git-tools] This script requires bash to run, so point directly to bash. 2010-04-03 01:51:37 +01:00
Nils Adermann
43774ef423 Merge branch 'feature/dbal-tests' into develop-olympus
* feature/dbal-tests:
  [feature/dbal-tests] Remove hardcoded 'mysql' from PDO DSN in DBAL test.
  [feature/dbal-tests] Fix mysql (not mysqli) dbal test.
2010-04-02 18:29:08 +02:00
Andreas Fischer
4a2a84d7a2 [feature/dbal-tests] Remove hardcoded 'mysql' from PDO DSN in DBAL test. 2010-04-02 18:28:40 +02:00
Andreas Fischer
e9de68f9a3 [feature/dbal-tests] Fix mysql (not mysqli) dbal test.
Correctly determine MySQL version from the database.
2010-04-02 18:28:06 +02:00
Nils Adermann
a2545d1203 Merge branch 'bug/bantu/9108' into develop-olympus
* bug/bantu/9108:
  [bug/9108] Fix table binding issues with PostgreSQL in board-wide feed. (Old Bug #58425)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-01 21:27:19 +02:00
Nils Adermann
6d9d2b6be6 Merge branch 'feature/dbal-tests' into develop-olympus
* feature/dbal-tests:
  [feature/dbal-tests] Only output the missing config error message once.
  [feature/dbal-tests] Make the PDO prefix depend on the dbms.
  [feature/dbal-tests] Fix whitespace and line endings.
  [feature/dbal-tests] Make some tests for build_array_data on SELECT
  [feature/dbal-tests] Make some tests for return_on_error on SELECT-queries
  [feature/dbal-tests] Tests for $db->sql_query_limit()
  [feature/dbal-tests] Load phpbb-schema after creating the connection to the database
  [feature/dbal-tests] Added tests for dbal fetchrow and fetchfield.
  [feature/dbal-tests] Added database test & refactored test framework
2010-04-01 19:16:45 +02:00
Nils Adermann
2bbfa9c29f [feature/dbal-tests] Only output the missing config error message once.
The error message was also not properly escaping the variables, thus
producing an incorrect example configuration file.
2010-04-01 19:15:34 +02:00
Nils Adermann
53ab8886b1 [feature/dbal-tests] Make the PDO prefix depend on the dbms.
The database base test will need a few more changes to run on all the
databases we support. But those really need to be made on a system where
they run and can be tested. Patches welcome!
2010-04-01 19:08:11 +02:00
Nils Adermann
23beaceadd [feature/dbal-tests] Fix whitespace and line endings. 2010-04-01 18:59:26 +02:00
Nils Adermann
f97d0e0195 Merge branch 'bug/nickvergessen/59135' into develop-olympus
* bug/nickvergessen/59135:
  [bug/59135] Fix open_basedir issues when accessing styles- and language-management. (Bug #59135)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-04-01 18:55:16 +02:00
Andreas Fischer
2b696cc632 [bug/9108] Fix table binding issues with PostgreSQL in board-wide feed. (Old Bug #58425)
The order in the FROM clause is important.
The posts table has to be the last one in the chain, so it can be correctly bound with the forums table in the LEFT JOIN.

This only affects the overall feed (board-wide feed). All the other feeds are unaffected.
2010-04-01 13:14:58 +02:00
Nils Adermann
e35392cb4f Merge branch 'bug/kellanved/59425' into develop-olympus
* bug/kellanved/59425:
  [bug/59425] Correctly check for double inclusion in captcha garbage collection
2010-03-28 15:09:09 +02:00
Nils Adermann
b111e4d927 Merge branch 'bug/kellanved/58465' into develop-olympus
* bug/kellanved/58465:
  [bug/58465] The redirect hidden field is now XHTML conform
2010-03-28 15:09:05 +02:00
U-H-PC\H
9be61f9e53 [bug/59425] Correctly check for double inclusion in captcha garbage collection
The check to avoid the double inclusion of the captcha factory class in the
garbage collection code was faulty, checking for "captcha_factory" instead of "phpbb_captcha_factory".
TerryE pointed the problem out, thanks!
2010-03-28 14:37:31 +02:00
U-H-PC\H
6cfb4c82dd [bug/58465] The redirect hidden field is now XHTML conform
The result of build_url was falsely un-entitized.
2010-03-28 14:17:42 +02:00
Igor Wiedler
472739bcbc Merge branch 'develop-olympus' into git-tools 2010-03-28 14:12:36 +02:00
Joas Schilling
53d316dc9e [feature/dbal-tests] Make some tests for build_array_data on SELECT 2010-03-27 10:42:09 +01:00
Joas Schilling
147d6fd590 [feature/dbal-tests] Make some tests for return_on_error on SELECT-queries 2010-03-26 23:27:49 +01:00
Joas Schilling
c6442ce640 [feature/dbal-tests] Tests for $db->sql_query_limit() 2010-03-26 21:02:56 +01:00
Nils Adermann
d79cff235c Merge remote branch 'github-nickvergessen/develop-olympus' into develop-olympus
* github-nickvergessen/develop-olympus:
  [develop-olympus] Make this test run on windows with backslash-paths.
2010-03-26 18:27:39 +01:00
Nils Adermann
4515a45e0c Merge branch 'bug/jellydoughnut/56965' into develop-olympus
* bug/jellydoughnut/56965:
  [bug/56965] Redirect fails with directory traversal
2010-03-26 18:24:47 +01:00
Joas Schilling
a7581085e0 [feature/dbal-tests] Load phpbb-schema after creating the connection to the database 2010-03-26 17:37:01 +01:00
Joas Schilling
af654814f6 [feature/dbal-tests] Added tests for dbal fetchrow and fetchfield. 2010-03-26 16:41:19 +01:00
Joas Schilling
94bc65e203 [feature/dbal-tests] Added database test & refactored test framework
There is now a phpbb_database_test_case which can be used as a base class for tests that require database access. You have to set up a test_config.php file in your tests/ directory containing host, user, pass etc.

Extra test functionality has been moved to phpbb_test_case_helpers to provide the same functionality in database tests and regular tests without duplicating the code. This is achieved through delegation of method calls.
2010-03-26 16:39:37 +01:00
Joas Schilling
c71b1245ec [develop-olympus] Make this test run on windows with backslash-paths. 2010-03-26 14:46:18 +01:00
Josh Woody
eca2db4afe [bug/56965] Redirect fails with directory traversal
Correct invalid r10536 with a boolean flag.  Note that this fix for the bug will not actually correct the redirects, it will only prevent phpBB from redirecting outside $phpbb_root_path when redirect()'s third argument is not provided.
2010-03-22 21:16:11 -05:00
Igor Wiedler
a5057c9f25 Merge branch 'develop-olympus' into git-tools 2010-03-22 22:54:24 +01:00
Nils Adermann
b3ff3be0dc Merge branch 'bug/cs278/58685' into develop-olympus
* bug/cs278/58685:
  [bug/58685] Correct spelling errors in append_sid() comments.
2010-03-18 22:13:25 +01:00
Nils Adermann
c6870ac3fe Merge branch 'bug/cs278/58025' into develop-olympus
* bug/cs278/58025:
  [bug/58025] Search robots are now redirected if they send a SID in the request

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-03-18 22:10:31 +01:00
Chris Smith
b64686073a [bug/58685] Correct spelling errors in append_sid() comments. 2010-03-18 21:07:19 +00:00
Chris Smith
492063cec6 [bug/59465] Remove start=0 from topic pagination links.
Patch once again by nn-.
2010-03-18 20:28:59 +00:00
Chris Smith
a3a8fb989c [bug/59465] Removes start=0 from URLs used by viewtopic and viewforum.
Having start=0 makes search engines index the page twice once with and
once without the start=0 parameter. This results in duplicate results
in the search results. Patch contributed by nn-.
2010-03-18 17:22:30 +00:00
Nils Adermann
5193160546 Merge branch 'feature/arstechnica/memcache-multi-server' into develop-olympus
* feature/arstechnica/memcache-multi-server:
  [feature/arstechnica/memcache-multi-server] Add memcache-multi-server to the changelog.
2010-03-18 17:09:52 +01:00
Nils Adermann
f7c41e1db7 [feature/arstechnica/memcache-multi-server] Add memcache-multi-server to the changelog. 2010-03-18 17:09:18 +01:00
Nils Adermann
da5c36fdeb Merge branch 'feature/arstechnica/memcache-multi-server' into develop-olympus
* feature/arstechnica/memcache-multi-server:
  [feature/memcache-multi-server] Changing format for multiple memcache hosts. Fixing code style issues in changes.
  [feature/memcache-multi-server] Adding support for multiple memcache servers to acm_memcache.php
2010-03-18 17:04:14 +01:00
mrkurt
c57c1f3fc6 [feature/memcache-multi-server] Changing format for multiple memcache hosts. Fixing code style issues in changes.
Host and ports are now represented like this in config:
host1/port1,host2/port2,host3/port3
2010-03-18 17:01:50 +01:00
mrkurt
559313eda6 [feature/memcache-multi-server] Adding support for multiple memcache servers to acm_memcache.php
You can define multiple memcache servers in your config using this format:

host::port,host::port,host::port

Example:
@define(PHPBB_ACM_MEMCACHE, '127.0.0.1::11211,10.0.0.2::11211,memcache1::11211'
2010-03-18 17:01:21 +01:00
Igor Wiedler
ae48c8ee9e [git-tools] Improvements for the pre-commit hook
One major issue with the pre-hook so far was partially staged files,
because it used filenames for php lint. These changes will make the hook read the file contents from the index instead.

Great thanks to David Soria Parra.
2010-03-17 23:07:57 +01:00
Nils Adermann
10f81ee79f Merge branch 'bug/jellydoughnut/58415' into develop-olympus
* bug/jellydoughnut/58415:
  Allow setting parent forums regardless of permission settings. (Bug #58415)

Conflicts:
	phpBB/docs/CHANGELOG.html
2010-03-17 18:05:17 +01:00
Josh Woody
144effd74c Allow setting parent forums regardless of permission settings. (Bug #58415) 2010-03-17 10:04:07 -05:00
Igor Wiedler
6a9304021f [git-tools] Improvements on prepare-commt-msg hook
prepare-commit-hook now uses `git symbolic-ref HEAD` instead of reading
$GIT_DIR/HEAD directly. This seems to be a more portable solution.

Thanks to Chris (cs278/ToonArmy) for the suggestion.
2010-03-13 13:10:14 +01:00
Joas Schilling
4349bec316 [bug/59135] Fix open_basedir issues when accessing styles- and language-management. (Bug #59135)
introduced in r10496 and r10360/r10361
2010-03-13 11:37:06 +01:00
Chris Smith
d07e152ea7 [bug/58025] Search robots are now redirected if they send a SID in the request
Previously search robots could stumble upon a board link somewhere on the web
containing a SID they'd follow it and end up indexing that page with the SID
in the request URI, this fix prevents that by redirecting them to the same URI
just without the SID.
2010-03-13 02:15:39 +00:00
Igor Wiedler
f9192bed79 [git-tools] Some pre-commit enhancements, abolish tempfile 2010-03-11 19:44:21 +01:00
Igor Wiedler
6df10358aa [git-tools] use mktemp in pre-commit (thanks nn-) 2010-03-10 21:37:55 +01:00
Igor Wiedler
3dd9040cc1 Merge branch 'develop-olympus' into git-tools 2010-03-10 20:12:10 +01:00
Igor Wiedler
db8c557e4c [git-tools] pre-commit hook for syntax checking
This pre-commit hook utilises PHP's command-line -l (lint) option, which
checks for syntax errors. In case of an error the commit is rejected and
the error displayed.

Testing is welcome.
2010-03-10 20:07:10 +01:00
Nils Adermann
60bd1edcb5 [develop-olympus] Backported 3.1 unit tests to 3.0.
Start adding unit tests for bugs you fix! Tests for anything are
welcome really. We have to work on these a lot.
2010-03-10 16:24:19 +01:00
Nils Adermann
d9567f121b Merge branch 'develop-olympus' of git://github.com/evil3/phpbb3 into develop-olympus 2010-03-08 01:07:27 +01:00
Igor Wiedler
0a6db697e6 Add feature/ support to branchname hook
The previously introduced branchname hook now will also use feature/
branch names, in addition to the existing bug/.
2010-03-08 01:04:33 +01:00
Nils Adermann
9f8d258de4 Merge branch 'develop-olympus' of git://github.com/evil3/phpbb3 into develop-olympus 2010-03-08 00:50:48 +01:00
Igor Wiedler
d0d1ab5471 Adding a branchname prepare-commit-msg hook
Git supports several hooks, some of which are client-side. The
prepare-commit-msg hook is run right after a `git commit` call, before
the editor is opened. This allows the initial message to be altered.

This hook will check if the current branch name begins with `bug/`, in
which case it will prepend `[$branchname]` to the commit message. This
makes it easier to create proper commit messages.

http://wiki.phpbb.com/Git#Commit_Messages

For more information refer to the hook source.
2010-03-08 00:41:42 +01:00
Nils Adermann
23141a2c51 Merge branch 'bug/dpward/58755' into develop-olympus 2010-03-07 21:56:48 +01:00
Nils Adermann
62e0c325b4 Merge branch 'bug/evil3/12531' into develop-olympus 2010-03-07 21:56:07 +01:00
Nils Adermann
c52a7e9a08 Adding the bugfix for #58755 to the changelog. 2010-03-07 21:54:56 +01:00
David Ward
865123ffda [bug/58755] Fix a redirection bug that can occur after login
This issue affects any forum (i.e. https://myforum/phpBB3/) where:
 - the forum is located in a directory underneath the web root (i.e., NOT https://myforum/)
 - a user accesses the forum with a URI pointing to a directory rather than a script (i.e., NOT https://myforum/phpBB3/index.php)
 - the URI used ends in a slash (i.e., NOT https://myforum/phpBB3)

If these conditions are met, after successful login the user is redirected to an invalid URI (i.e., https://myforum/phpBB3/phpBB3?sid=).

This change fixes extract_current_page() to handle the case correctly where the URI ends in a slash and is not the web root. So after successful login, the redirection back to the main page will work (i.e., https://myforum/phpBB3/?sid=)
2010-03-07 13:56:24 -05:00
Igor Wiedler
5cfa354433 [bug/12531] proposed solution for bug #12531 2010-03-06 17:57:27 +01:00
Nils Adermann
568fb83373 Merge branch 'master' into develop-olympus 2010-03-06 02:29:04 +01:00
Nils Adermann
5d1d32a65b Merge branch 'bug/evil3/51555' into develop-olympus 2010-03-06 02:13:31 +01:00
Igor Wiedler
9d005973b0 [bug/51555] proposed fix for bug #51555 2010-03-06 01:39:44 +01:00
Cullen Walsh
0307d1f4aa Oops, forgot the changelog for #57105 2010-03-06 01:36:23 +01:00
Nils Adermann
c4e02a1916 Merge commit 'release-3.0.7-PL1' 2010-03-06 01:20:12 +01:00
Nils Adermann
2e1cd98a5a exclude the image file with text in the name from having newlines fixed 2010-03-05 22:22:39 +01:00
Nils Adermann
39490abfff Incrementing the version number to 3.0.7-PL1 2010-03-05 21:09:37 +01:00
Nils Adermann
c8fd9f4266 Mark the bugfix #58595 as a security fix 2010-03-05 21:00:13 +01:00
Andreas Fischer
b1ab74b043 Fix Bug #58595 - ATOM Feed exposes forum content under some circumstances. 2010-03-05 20:59:20 +01:00
Nils Adermann
07fd270530 Merge branch 'bug/bantu/58595' into develop-olympus 2010-03-05 20:56:45 +01:00
Nils Adermann
f0a82396d4 Mark the bugfix #58595 as a security fix 2010-03-05 20:56:06 +01:00
Andreas Fischer
7f991e8480 Fix Bug #58595 - ATOM Feed exposes forum content under some circumstances. 2010-03-05 18:51:30 +01:00
Nils Adermann
ac32927566 Merge remote branch 'github-ckwalsh/bug/57105' into bug/ckwalsh/57105 2010-03-02 22:27:45 +01:00
Cullen Walsh
b853845069 Oops, forgot the changelog for #57105 2010-03-02 13:01:05 -08:00
Nils Adermann
be78817d27 Merge remote branch 'github-ckwalsh/bug/57105' into bug/ckwalsh/57105 2010-03-02 21:41:24 +01:00
Cullen Walsh
965ab55394 Parse urls in signature taking into account the allow_sig_links config option introduced in phpBB 3.0.6, per bug #57105 2010-03-02 12:22:11 -08:00
Nils Adermann
f493509eb2 Merge branch 'bug/aptx/54945' into develop-olympus 2010-03-02 21:15:13 +01:00
Marek A. Ruszczyński
93a2407f65 Bug #54945 again: MySQL 4 does not support aggregation in ORDER BY.
Moved the MIN(smiley_order) to the SELECT column list now, so it can be
used for sorting on MySQL 4, but also still works on MSSQL, which the
bug was originally about.
2010-03-02 21:12:35 +01:00
Chris Smith
5003595ed6 Missed one half of bug #54855 whoops 2010-03-02 21:07:07 +01:00
Nils Adermann
72e2af08e1 Merge remote branch 'github-cs278/bug/54855' into bug/cs278/54855 2010-03-02 20:46:19 +01:00
Nils Adermann
24fda6671d Merging master after 3.0.7 release into develop-olympus to make sure there are no inconsistencies. 2010-03-02 20:33:50 +01:00
Chris Smith
2f6c8a0164 Missed one half of bug #54855 whoops 2010-03-02 19:30:37 +00:00
Nils Adermann
ca8cc03763 Merge commit 'release-3.0.7' 2010-03-02 01:09:13 +01:00
Nils Adermann
35a62ed008 Merge commit 'release-3.0.7-RC2' 2010-03-02 01:09:11 +01:00
Nils Adermann
3b46681652 Merge commit 'release-3.0.7-RC1' 2010-03-02 01:09:02 +01:00
Nils Adermann
6606e4bffe Merge commit 'release-3.0.6' 2010-03-02 01:05:41 +01:00
Nils Adermann
723e38ece2 Merge commit 'release-3.0.6-RC4' 2010-03-02 01:05:41 +01:00
Nils Adermann
6ebc26e330 Merge commit 'release-3.0.6-RC3' 2010-03-02 01:05:41 +01:00
Nils Adermann
f0eb18fffd Merge commit 'release-3.0.6-RC2' 2010-03-02 01:05:40 +01:00
Nils Adermann
021c186be9 Merge commit 'release-3.0.6-RC1' 2010-03-02 01:05:40 +01:00
Nils Adermann
4f9c3b8f5c Merge commit 'release-3.0.5' 2010-03-02 01:05:40 +01:00
Nils Adermann
a45bca7c49 Merge commit 'release-3.0.5-RC1' 2010-03-02 01:05:39 +01:00
Nils Adermann
1f3498c0d6 Merge commit 'release-3.0.4' 2010-03-02 01:05:39 +01:00
Nils Adermann
a0b5877217 Merge commit 'release-3.0.4-RC1' 2010-03-02 01:05:39 +01:00
Nils Adermann
6482e72e7c Merge commit 'release-3.0.3' 2010-03-02 01:05:39 +01:00
Nils Adermann
25052e1f67 Merge commit 'release-3.0.3-RC1' 2010-03-02 01:05:39 +01:00
Nils Adermann
4cc06650d4 Merge commit 'release-3.0.2' 2010-03-02 01:05:39 +01:00
Nils Adermann
92271af9cd Merge commit 'release-3.0.2-RC2' 2010-03-02 01:05:38 +01:00
Nils Adermann
ee781806eb Merge commit 'release-3.0.2-RC1' 2010-03-02 01:05:38 +01:00
Nils Adermann
5324afeffd Merge commit 'release-3.0.1' 2010-03-02 01:05:38 +01:00
Nils Adermann
0434ccf303 Merge commit 'release-3.0.1-RC1' 2010-03-02 01:05:38 +01:00
Nils Adermann
2ba97da524 Merge commit 'release-3.0.0' 2010-03-02 01:05:37 +01:00
Nils Adermann
aa4495b8ad Merge commit 'release-3.0-RC8' 2010-03-02 01:05:37 +01:00
Nils Adermann
8a3c323933 Merge commit 'release-3.0-RC7' 2010-03-02 01:05:37 +01:00
Nils Adermann
54f94e0d42 Merge commit 'release-3.0-RC6' 2010-03-02 01:05:37 +01:00
Nils Adermann
1a09d0e238 Merge commit 'release-3.0-RC5' 2010-03-02 01:05:36 +01:00
Nils Adermann
75e7ffc317 Merge commit 'release-3.0-RC4' 2010-03-02 01:05:36 +01:00
Nils Adermann
1ceddd9eec Merge commit 'release-3.0-RC3' 2010-03-02 01:05:36 +01:00
Nils Adermann
0e0c8d7819 Merge commit 'release-3.0-RC2' 2010-03-02 01:05:35 +01:00
Nils Adermann
bae824e818 Merge commit 'release-3.0-RC1' 2010-03-02 01:05:35 +01:00
Nils Adermann
517f253532 Merge commit 'release-3.0-B5' 2010-03-02 01:05:34 +01:00
Nils Adermann
89b37954f9 Merge commit 'release-3.0-B4' 2010-03-02 01:05:34 +01:00
Nils Adermann
07633a66e8 Merge commit 'release-3.0-B3' 2010-03-02 01:05:34 +01:00
Nils Adermann
ee82970d96 Merge commit 'release-3.0-B2' 2010-03-02 01:05:33 +01:00
Yuriy Rusko
d62068cfad #58285 - Language pack fix
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10556 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-28 21:01:16 +00:00
Nils Adermann
5bd9d461e0 Make the new {INTTEXT} work on pcre installations without utf8 support, it only matches ascii characters & numbers there. [Bug #58055]
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10551 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-27 23:57:13 +00:00
Nils Adermann
e5c6cac09a After generating all packages go through the full installs and make sure the files do not contain any errors [Bug #58255]
3.0.7-RC2 contains an image file missing one byte (icon_textbox_search.gif) you can take it from an previous phpBB3 release, it was not changed.


git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10549 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-27 21:19:43 +00:00
Nils Adermann
bba33ead30 Updating the create_schema_files.php file to reflect the minor mssql schema change introduced in r10489 (implementing mssql native driver support - Bug #57055)
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10548 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-27 18:04:32 +00:00
Henry Sudhof
c115ad2b8f #58055 again
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10546 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-27 11:09:23 +00:00
Henry Sudhof
204b5f579e okay, minus should work now #58055
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10544 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-26 20:32:00 +00:00
Henry Sudhof
f03e986f81 possible cause of #58055
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10542 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-26 08:35:41 +00:00
Henry Sudhof
c2f2bff2ae only whitespaces, not newlines
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10540 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-25 21:48:21 +00:00
Andreas Fischer
cdc96b0c7d Bug #58085 - Add terminating semicolons to JavaScript code found by JSLint. Patch by nn-
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10539 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-25 10:51:35 +00:00
Andreas Fischer
e57981d1f5 Fix Bug #57875 - We have to add the paragraph tags there. Patch by HardStyle, Regression from r10096.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10537 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-25 10:33:06 +00:00
Josh Woody
9e64c3bd84 Bug #56965 - Allow redirect() to redirect across directories.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10536 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-25 00:18:30 +00:00
Nils Adermann
05b5dc3167 Tagging the 3.0.7-RC2 release.
git-svn-id: file:///svn/phpbb/tags/release_3_0_7-RC2@10535 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-24 01:21:06 +00:00
Nils Adermann
8f5155d272 Quick reply enable button was merged into 3.0.7: r10491, r10492 and r10529
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10530 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-23 23:49:15 +00:00
Nils Adermann
47ce0f2a93 Update: Store expected resulting file contents in cache and do not suggest further merges if the contents match, also fixes infinite merge loop [Bug #54075]
If you were trying to update from 3.0.5 to 3.0.6 but were presented with a dialogue
suggesting to merge the same file over and over take the install/install_update.php
from 3.0.7-RC2 or current svn, and replace your 3.0.5 one with it. It works fine in
3.0.5.


git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10528 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-23 23:35:48 +00:00
Andreas Fischer
2ec1d92388 Fix Bug #57375 - Do not delete unrelated attachments when deleting empty forums.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10526 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-23 18:52:06 +00:00
Nils Adermann
2c3c97b8ee merge r10513 into 3.0 branch: propdel
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10525 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-23 16:18:57 +00:00
Nils Adermann
83cf74de2b Fixing the code changes from diff building script: When an edit was detected as replacing an empty line by diff it would get dropped from the code changes
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10522 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-23 15:07:58 +00:00
Andreas Fischer
e8f01ff74b We have to use a 'snapshot' of the function there, because it might not be available yet. - Bug #57755
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10520 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-22 19:33:27 +00:00
Chris Smith
e01171ca85 General errors can't be logged if there isn't a database connection, introduced in r9924 #57975
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10518 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-22 00:57:01 +00:00
Henry Sudhof
22621e0439 Enter stage left: the INTTEXT token
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10516 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-21 11:33:29 +00:00
Nils Adermann
6b99b85c8f BBCode parser now uses the user object for all settings rather than taking some from the template object [Bug #57365]
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10515 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-21 01:31:10 +00:00
Yuriy Rusko
a4727a0f81 Bugs #53925 and #52085 - Language fixes related to the quick reply settings
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10514 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-20 22:36:22 +00:00
Henry Sudhof
14e21a1a38 warn users about TEXT
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10511 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-20 16:18:28 +00:00
Chris Smith
14b5aab07f Firebird based board can now access their global announcements, took a while to discover this one. #57525
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10509 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-20 00:02:56 +00:00
Josh Woody
d49806a043 #57715 - Correct behavior of "force_approved_state" when value is false.
(Merging r10507 into branches/phpBB-3_0_0)

git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10508 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-18 04:57:23 +00:00
Andreas Fischer
576722cead Adding 3.0.7-RC2 to database updater
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10504 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-18 02:06:20 +00:00
Andreas Fischer
c02fedb6c7 Revising r10499, #57755
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10503 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-18 02:01:32 +00:00
Andreas Fischer
9bcb25cd10 We can put the fix for #57505 into 3.0.7 because we have to regenerate the packages with the template changes anyway.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10500 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-18 01:23:31 +00:00
Andreas Fischer
30b83896a1 Fix Bug #57755 - Make user_email_hash() function independent from system's architecture.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10499 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-18 01:17:30 +00:00
Andreas Fischer
68cac354aa Add 3.0.7-RC1 to the updater.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10497 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-17 12:58:52 +00:00
Joas Schilling
c0e9bc5126 Bug #57795 - [Fix] Restrict search for language/../iso.txt to folders.
Authorised by: bantu


git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10496 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-17 12:49:05 +00:00
Andreas Fischer
e1ae09a787 Let's fix #57825 in 3.0.7. - r10493
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10494 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-17 09:59:04 +00:00
Andreas Fischer
68393ecc1c Fix Bug #57825 - Small language correction for the FAQ page.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10493 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-16 20:42:55 +00:00
Andreas Fischer
a0531a990b r10491 - Also in the Post Settings section. Thanks leviatan21
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10492 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-16 10:42:24 +00:00
Andreas Fischer
c6e176d88e Add sql_bit_or() dbal method. Add ability to enable quick reply in all forums. -- Voila ;-)
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10491 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-15 15:04:44 +00:00
Nils Adermann
7332b3b741 Forgot to properly update the file header of mssqlnative.php, revising r10489 [Bug #57055]
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10490 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-11 00:05:32 +00:00
Nils Adermann
1802b9ff92 Support for Microsoft's Native SQL Server Driver for PHP - Patch by Chris Pucci at Microsoft [Bug #57055]
If you are using SQL Server, please try to test this new dbal so we can safely include it in 3.0.8. If you
want to try it on a current phpBB version you can apply the latest version of the patch to your board which
you can find attached to the bug tracker ticket (look in the comments for the latest version, the one in the
ticket itself is outdated): http://www.phpbb.com/bugs/phpbb3/ticket.php?ticket_id=57055



git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10489 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-11 00:02:51 +00:00
Andreas Fischer
6c321c53a1 Fix Bug #57505 - Replace button2 with btnlite, button2 doesn't exist.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10488 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-09 14:10:42 +00:00
Andreas Fischer
964e9cf3ef Make those warnings more consistent.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10487 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-08 23:58:37 +00:00
Andreas Fischer
e3b07a88f4 Let's adjust those to the format of the other entries.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10485 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-08 16:49:21 +00:00
Andreas Fischer
037aea067b Fix Bug #57455 - Fix problems with firebird by no longer using 'count' as a column alias.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10484 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-08 16:43:39 +00:00
Josh Woody
d26f66703b Fix #57395, a regression from r10427
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10482 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-07 01:04:10 +00:00
Andreas Fischer
64b4a8bd44 No longer needed, as of r10480.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10481 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-07 00:50:21 +00:00
Andreas Fischer
4bb3266cc6 Bug #57345 - No longer return the character O in generated random strings and passwords.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10480 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-07 00:27:00 +00:00
Andreas Fischer
c0836e8835 Bug #13181 - Honor minimum and maximum password length in generated passwords as much as we can.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10479 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-07 00:20:46 +00:00
Andreas Fischer
aec50a4328 Fix Bug #57385
Correctly sort database backup file list by date on database restore page.
Take admin's time zone settings into account when listing database backup files.


git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10478 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-06 21:19:40 +00:00
Andreas Fischer
52c13bc741 Add 'Changes since 3.0.7' section to Changelog.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10477 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-06 21:07:25 +00:00
Josh Woody
8adf583bdf Bug #38765 - Unify BBCode selection across browsers (also needs fixing in subsilver2)
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10474 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-04 01:04:52 +00:00
Josh Woody
99c608e88c Bug #57265 - Convertors cannot read configuration files
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10473 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-04 00:40:19 +00:00
Josh Woody
63be6762f3 Bug #38765 - Unify BBCode selection across browsers
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10472 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-04 00:04:25 +00:00
Nils Adermann
67e8cbdd00 Tagging the 3.0.7-RC1 release.
git-svn-id: file:///svn/phpbb/tags/release_3_0_7-RC1@10471 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-02 01:32:43 +00:00
Chris Smith
6b519c8bdf Slight performance optimisation for r9624 refs #54265
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10470 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-01 22:14:04 +00:00
Nils Adermann
f90bab90c7 Change version number to 3.0.8-dev in preparation for development on next release
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10469 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-01 01:18:21 +00:00
Nils Adermann
5a429ee61e Change version numbers to 3.0.7 and 3.0.8-dev in preparation for development on next release
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@10468 89ea8834-ac86-4346-8a33-228a782c2dd0
2010-02-01 01:14:06 +00:00
Meik Sievertsen
338559baca Tag phpBB 3.0.6 Release
git-svn-id: file:///svn/phpbb/tags/release_3_0_6@10278 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-17 15:33:03 +00:00
Meik Sievertsen
98a2e3b938 merge focus qr code from 3_0_0
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10277 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-16 17:09:15 +00:00
Meik Sievertsen
7bf1e08a35 merge r10271 (late-late fix. :) But good someone at least noticed)
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10272 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-16 10:33:51 +00:00
Meik Sievertsen
46a07c94ba merge r10269
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10270 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-14 23:00:30 +00:00
Meik Sievertsen
0cdf46db0f merge r10267
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10268 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-14 20:15:50 +00:00
Meik Sievertsen
43598d7727 merge r10262
Fix for r10255

git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10263 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-09 16:49:15 +00:00
Meik Sievertsen
700347738c merging r10260
Fix sql error in cache_moderators() if using postgresql. (Bug #53765)

git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10261 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-09 16:29:30 +00:00
Meik Sievertsen
d5a7d20579 Branch off 3.0.6. This ensures we are able to work on the next release and also decide what will be included as late fixes in RC's.
git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_6@10259 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-09 14:24:06 +00:00
Meik Sievertsen
199bb13660 Tag phpBB Release Candidate 4
git-svn-id: file:///svn/phpbb/tags/release_3_0_6-RC4@10250 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-11-01 19:19:17 +00:00
Meik Sievertsen
8d12b40fc4 Tag phpBB 3.0.6-RC3
git-svn-id: file:///svn/phpbb/tags/release_3_0_6-RC3@10222 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-10-13 12:27:40 +00:00
Meik Sievertsen
ac5995551b Tag phpBB 3.0.6 Release Candidate 2
git-svn-id: file:///svn/phpbb/tags/release_3_0_6-RC2@10190 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-09-25 17:05:47 +00:00
Meik Sievertsen
3ddedd5ff2 Tag 3.0.6-RC1
git-svn-id: file:///svn/phpbb/tags/release_3_0_6-RC1@10140 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-09-12 17:15:03 +00:00
Meik Sievertsen
6c2760a736 Tag 3.0.5 release before we release
git-svn-id: file:///svn/phpbb/tags/release_3_0_5@9522 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-05-31 15:26:58 +00:00
Meik Sievertsen
6485d66743 3.0.5-RC1 release
git-svn-id: file:///svn/phpbb/tags/release_3_0_5-RC1@9509 89ea8834-ac86-4346-8a33-228a782c2dd0
2009-05-03 12:02:38 +00:00
Meik Sievertsen
a94c760650 Move tag 3_0_0_RC1 to 3_0_0-RC1, i tagged it wrongly
git-svn-id: file:///svn/phpbb/tags/release_3_0_4-RC1@9189 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-12-13 12:03:47 +00:00
Meik Sievertsen
d78df35da9 Tag 3.0.4
git-svn-id: file:///svn/phpbb/tags/release_3_0_4@9188 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-12-13 01:11:04 +00:00
Meik Sievertsen
141eeec915 Tag phpBB 3.0.4-RC1
git-svn-id: file:///svn/phpbb/tags/release_3_0_4_RC1@9183 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-12-08 14:37:33 +00:00
Meik Sievertsen
615b0d4e37 3.0.3 tag
git-svn-id: file:///svn/phpbb/tags/release_3_0_3@9059 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-11-12 21:06:22 +00:00
Meik Sievertsen
b0e185e7db Tag 3.0.3-RC1 release
git-svn-id: file:///svn/phpbb/tags/release_3_0_3-RC1@9047 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-11-02 22:13:35 +00:00
Meik Sievertsen
b21ca5be71 Tagging 3.0.2 release
git-svn-id: file:///svn/phpbb/tags/release_3_0_2@8679 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-07-10 21:19:26 +00:00
Meik Sievertsen
7e97da5285 3.0.2-RC2 released
git-svn-id: file:///svn/phpbb/tags/release_3_0_2-RC2@8676 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-06-29 10:39:19 +00:00
Meik Sievertsen
e2ef990121 Tag 3.0.2 RC1
git-svn-id: file:///svn/phpbb/tags/release_3_0_2-RC1@8658 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-06-14 15:20:12 +00:00
Meik Sievertsen
4ff33f5d49 tag release 3.0.1
git-svn-id: file:///svn/phpbb/tags/release_3.0.1@8498 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-04-08 12:21:52 +00:00
Meik Sievertsen
21ce021519 Creating Tag for 3.0.1-RC1
git-svn-id: file:///svn/phpbb/tags/release_3_0_1-RC1@8470 89ea8834-ac86-4346-8a33-228a782c2dd0
2008-03-26 11:47:33 +00:00
(no author)
7ecd17a993 This commit was manufactured by cvs2svn to create tag
'release_3_0_0'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_0@8279 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-12-12 16:46:54 +00:00
(no author)
0aef1e57a7 This commit was manufactured by cvs2svn to create tag
'release_3_0_RC8'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC8@8260 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-12-01 13:16:37 +00:00
(no author)
438f31326a This commit was manufactured by cvs2svn to create tag
'release_3_0_RC7'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC7@8195 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-10-14 23:10:22 +00:00
(no author)
b5535db081 This commit was manufactured by cvs2svn to create tag
'release_3_0_RC6'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC6@8175 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-10-13 12:30:53 +00:00
(no author)
f1e54d97fc This commit was manufactured by cvs2svn to create tag
'release_3_0_RC5'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC5@8071 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-08-24 18:26:15 +00:00
(no author)
e02e530204 This commit was manufactured by cvs2svn to create tag
'release_3_0_RC4'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC4@7975 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-07-28 16:40:59 +00:00
(no author)
aadda93973 This commit was manufactured by cvs2svn to create tag
'release_3_0_RC3'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC3@7843 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-07-08 16:39:48 +00:00
(no author)
4319ebbaf6 This commit was manufactured by cvs2svn to create tag
'release_3_0_RC2'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC2@7793 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-06-24 16:38:12 +00:00
(no author)
19c923cf1b This commit was manufactured by cvs2svn to create tag
'release_3_0_RC1'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_RC1@7657 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-05-20 14:59:17 +00:00
(no author)
7068d8b462 This commit was manufactured by cvs2svn to create tag
'release_3_0_B5'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_B5@6949 89ea8834-ac86-4346-8a33-228a782c2dd0
2007-01-28 17:00:03 +00:00
(no author)
80d429a02d This commit was manufactured by cvs2svn to create tag
'release_3_0_B4'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_B4@6680 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-11-27 21:41:56 +00:00
(no author)
5cfa0ec0c3 This commit was manufactured by cvs2svn to create tag
'release_3_0_B3'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_B3@6579 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-11-12 19:45:36 +00:00
(no author)
108312d52a This commit was manufactured by cvs2svn to create tag
'release_3_0_B2'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_B2@6288 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-08-12 20:24:25 +00:00
(no author)
c9f68f0b5c This commit was manufactured by cvs2svn to create tag
'release_3_0_B1'.

git-svn-id: file:///svn/phpbb/tags/release_3_0_B1@6094 89ea8834-ac86-4346-8a33-228a782c2dd0
2006-06-17 20:30:41 +00:00
230 changed files with 7775 additions and 1193 deletions

8
.gitignore vendored Normal file
View File

@@ -0,0 +1,8 @@
*~
phpBB/cache/*.php
phpBB/config.php
phpBB/files/*
phpBB/images/avatars/upload/*
phpBB/store/*
tests/phpbb_unit_tests.sqlite2
tests/test_config.php

149
build/build.xml Normal file
View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build -->
<property name="newversion" value="3.0.8-RC1" />
<property name="prevversion" value="3.0.7-PL1" />
<property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />
<property name="versions" value="${oldversions}, ${newversion}" />
<!-- These are the main targets which you will probably want to use -->
<target name="package" depends="clean,prepare,create-package" />
<target name="all" depends="clean,prepare,test,create-package" />
<target name="prepare">
<mkdir dir="build/logs" />
<mkdir dir="build/api" />
<mkdir dir="build/codebrowser" />
<mkdir dir="build/coverage" />
<mkdir dir="build/cpd" />
<mkdir dir="build/dependencies" />
<mkdir dir="build/new_version" />
<mkdir dir="build/new_version/files" />
<mkdir dir="build/new_version/patches" />
<mkdir dir="build/new_version/release_files" />
<mkdir dir="build/new_version/update" />
<mkdir dir="build/old_versions" />
<mkdir dir="build/save" />
</target>
<target name="clean">
<delete dir="build/logs" />
<delete dir="build/api" />
<delete dir="build/codebrowser" />
<delete dir="build/coverage" />
<delete dir="build/cpd" />
<delete dir="build/dependencies" />
<delete dir="build/new_version" />
<delete dir="build/old_versions" />
<delete dir="build/save" />
</target>
<target name="test">
<exec dir="tests"
command="phpunit --log-junit ../build/logs/phpunit.xml
--coverage-clover ../build/logs/clover.xml
--coverage-html ../build/coverage
phpbb_all_tests all_tests.php"
passthru="true" />
<!-- Does not allow changing the working directory to tests/
so this approach does not work for us unfortunately
<phpunit codecoverage="true" haltonfailure="true">
<formatter todir="build/logs" type="xml"/>
<batchtest>
<fileset dir="tests">
<include name="all_tests.php"/>
</fileset>
</batchtest>
</phpunit>
-->
</target>
<target name="old-version-diffs">
<foreach list="${oldversions}" param="version" target="old-version-diff" />
</target>
<!-- This target retrieves an old version from the git tag release-${version}
and creates a diff between that release and the new one -->
<target name="old-version-diff">
<echo msg="Retrieving version ${version}" />
<mkdir dir="build/old_versions/release-${version}" />
<phingcall target="export">
<property name="revision" value="release-${version}" />
<property name="dir" value="build/old_versions/release-${version}" />
</phingcall>
<phingcall target="clean-diff-dir">
<property name="dir" value="build/old_versions/release-${version}" />
</phingcall>
<exec dir="build/old_versions" command="diff -crNEBwd release-${version} release-${newversion} >
../new_version/patches/phpBB-${version}_to_${newversion}.patch" escape="false" />
</target>
<target name="prepare-new-version">
<!-- select the currently checked out commit (HEAD) for packaging -->
<mkdir dir="build/new_version/phpBB3" />
<phingcall target="export">
<property name="revision" value="HEAD" />
<property name="dir" value="build/new_version/phpBB3" />
</phingcall>
<!-- copy into directory for diffs -->
<exec dir="build" command="cp -rp new_version/phpBB3 old_versions/release-${newversion}" />
<!-- and clean up -->
<phingcall target="clean-diff-dir">
<property name="dir" value="build/old_versions/release-${newversion}" />
</phingcall>
<!-- create an empty config.php file (not for diffs) -->
<touch file="build/new_version/phpBB3/config.php" />
</target>
<target name="create-package" depends="prepare-new-version,old-version-diffs">
<exec dir="build" command="php -f package.php '${versions}' > logs/package.log" escape="false" />
<exec dir="build" command="php -f build_diff.php '${prevversion}' '${newversion}' > logs/build_diff.log" escape="false" />
</target>
<!--
This target can be called using phingcall to retrieve a clean
checkout of a commit from git. It will only export the phpBB directory.
The properties revision and dir are required.
This target will remove directories that are not needed in distribution
and set correct permissions.
-->
<target name="export">
<exec dir="phpBB"
command="git archive ${revision} | tar -x -C ../${dir}"
checkreturn="true" />
<delete file="${dir}/config.php" />
<delete dir="${dir}/develop" />
<delete dir="${dir}/install/data" />
<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" />
<exec dir="${dir}" command="find -type d|xargs chmod 755" escape="false" />
<!-- set permissions of some directories to 777 -->
<chmod mode="0777" file="${dir}/cache" />
<chmod mode="0777" file="${dir}/store" />
<chmod mode="0777" file="${dir}/files" />
<chmod mode="0777" file="${dir}/images/avatars/upload" />
</target>
<target name="clean-diff-dir">
<delete dir="${dir}/cache" />
<delete dir="${dir}/docs" />
<delete dir="${dir}/files" />
<delete dir="${dir}/install" />
<delete dir="${dir}/store" />
</target>
</project>

View File

@@ -9,16 +9,26 @@
*
*/
// CONFIG - Begin
$substitute_old = '3.0.6';
$substitute_new = '3.0.7';
$simple_name_old = 'phpbb306';
$simple_name_new = 'phpbb307';
if ($_SERVER['argc'] != 3)
{
die("Please specify the previous and current version as arguments (e.g. build_diff.php '1.0.2' '1.0.3').");
}
$old_version = trim($_SERVER['argv'][1]);
$new_version = trim($_SERVER['argv'][2]);
$substitute_old = $old_version;
$substitute_new = $new_version;
$simple_name_old = 'release-' . $old_version;
$simple_name_new = 'release-' . $new_version;
$echo_changes = false;
// DO NOT EVER USE THE FOLLOWING! Fix the script to generate proper changes,
// do NOT manually create them.
// Set this to true to just compress the changes and do not build them again
// This should be used for building custom modified txt file. ;)
$package_changed_files = false;
// CONFIG - End
//$debug_file = 'includes/functions_user.php'; //'styles/prosilver/style.cfg';
$debug_file = false;
@@ -36,9 +46,6 @@ if (!$package_changed_files)
{
if (!$echo_changes)
{
// Cleanup...
run_command("rm -R $location/save/*");
// Create directory...
run_command("mkdir $location/save/{$s_name}");
run_command("mkdir $location/save/{$s_name}/language");
@@ -72,14 +79,14 @@ if (!$echo_changes)
foreach ($compress_programs as $extension => $compress_command)
{
echo "Packaging code changes for $extension\n";
run_command("rm ./../../release_files/{$code_changes_filename}.{$extension}");
run_command("rm ./../../new_version/release_files/{$code_changes_filename}.{$extension}");
flush();
// Build Package
run_command("$compress_command ./../../release_files/{$code_changes_filename}.{$extension} *");
run_command("$compress_command ./../../new_version/release_files/{$code_changes_filename}.{$extension} *");
// Build MD5 Sum
run_command("md5sum ./../../release_files/{$code_changes_filename}.{$extension} > ./../../release_files/{$code_changes_filename}.{$extension}.md5");
run_command("md5sum ./../../new_version/release_files/{$code_changes_filename}.{$extension} > ./../../new_version/release_files/{$code_changes_filename}.{$extension}.md5");
flush();
}
}

View File

@@ -14,10 +14,6 @@ class build_package
var $old_packages;
var $versions;
var $locations;
var $clean_directory_structure;
var $files_to_copy;
var $files_to_remove;
var $remove_from_diff_structure;
// -c - context diff
// -r - compare recursive
@@ -53,11 +49,11 @@ class build_package
$this->package_infos = array(
'package_name' => 'phpBB3',
'name_prefix' => 'phpbb',
'simple_name' => 'phpbb' . str_replace('.', '', $_latest),
'simple_name' => 'release-' . $_latest,
'new_version_number' => $_latest,
'short_version_number' => str_replace('.', '', $_latest),
'release_filename' => 'phpBB-' . $_latest,
'last_version' => 'phpbb' . str_replace('.', '', $_before),
'last_version' => 'release-' . $_before,
'last_version_number' => $_before,
);
@@ -78,112 +74,7 @@ class build_package
continue;
}
$this->old_packages['phpbb' . str_replace('.', '', $package_version)] = $package_version . '_to_';
}
// We need to make sure this is up to date with the latest version
$this->clean_directory_structure = array(
'adm' => array(
'images' => '',
'style' => '',
),
'cache' => '',
'docs' => '',
'download' => '',
'files' => '',
'images' => array(
'avatars' => array(
'gallery' => '',
'upload' => '',
),
'icons' => array(
'misc' => '',
'smile' => '',
),
'ranks' => '',
'smilies' => '',
'upload_icons' => '',
),
'includes' => array(
'acm' => '',
'acp' => array(
'info' => '',
),
'auth' => '',
'captcha' => array(
'plugins' => '',
),
'diff' => '',
'db' => '',
'hooks' => '',
'mcp' => array(
'info' => '',
),
'questionnaire' => '',
'search' => '',
'ucp' => array(
'info' => '',
),
'utf' => array(
'data' => '',
),
),
'install' => array(
'convertors'=> '',
'schemas' => '',
// 'data' => '',
),
'language' => array(
'en' => array(
'acp' => '',
'email' => '',
'mods' => '',
),
),
'store' => '',
'styles' => array(
'subsilver2' => array(
'imageset' => array(
'en' => '',
),
'template' => '',
'theme' => array(
'images' => '',
),
),
'prosilver' => array(
'imageset' => array(
'en' => '',
),
'template' => '',
'theme' => array(
'images' => '',
),
),
),
);
// Files to remove (not include within package)
$this->files_to_remove = array(); //array('includes/utf/data/recode_cjk.php');
// Files within the main directory to copy - do not include config.php
$this->files_to_copy = array(
'.htaccess', 'common.php', 'cron.php', 'faq.php', 'feed.php', 'index.php', 'mcp.php', 'memberlist.php', 'posting.php', 'report.php',
'search.php', 'style.php', 'ucp.php', 'viewforum.php', 'viewonline.php', 'viewtopic.php'
);
// These files/directories will be removed and not used for creating the patch files
$this->remove_from_diff_structure = array(
'config.php', 'cache', 'docs', 'files', 'install', 'store', 'develop'
);
// Writeable directories
$this->writeable = array('cache', 'store', 'images/avatars/upload', 'files');
// Fill the rest of the files_to_copy array
foreach ($this->clean_directory_structure as $cur_dir => $dir_struct)
{
$this->_fill_files_to_copy($this->locations['new_version'] . $cur_dir, $cur_dir, $dir_struct);
$this->old_packages['release-' . $package_version] = $package_version . '_to_';
}
}
@@ -192,66 +83,6 @@ class build_package
return $this->package_infos[$var];
}
function _fill_files_to_copy($directory, $cur_dir, $dir_struct)
{
$dh = opendir($directory);
while ($file = readdir($dh))
{
if (is_file($directory . '/' . $file) && $file != '.' && $file != '..')
{
$_loc = str_replace($this->locations['new_version'], '', $directory . '/' . $file);
if (in_array($_loc, $this->files_to_remove))
{
continue;
}
$this->files_to_copy[] = $cur_dir . '/' . $file;
}
}
closedir($dh);
if (is_array($dir_struct))
{
foreach ($dir_struct as $_cur_dir => $_dir_struct)
{
$this->_fill_files_to_copy($directory . '/' . $_cur_dir, $cur_dir . '/' . $_cur_dir, $_dir_struct);
}
}
}
function adjust_permissions($directory)
{
$dh = opendir($directory);
while ($file = readdir($dh))
{
if ($file == '.' || $file == '..' || $file == '.svn')
{
continue;
}
// If file, then 644
if (is_file($directory . '/' . $file))
{
chmod($directory . '/' . $file, 0644);
}
else if (is_dir($directory . '/' . $file))
{
$_loc = str_replace($this->package_infos['dest_dir'] . '/', '', $directory . '/' . $file);
// If directory is within the writeable chmod to 777, else 755
$mode = (in_array($_loc, $this->writeable)) ? 0777 : 0755;
chmod($directory . '/' . $file, $mode);
// Now traverse to the directory
$this->adjust_permissions($directory . '/' . $file);
}
}
closedir($dh);
}
function begin_status($headline)
{
if ($this->status_begun)

View File

@@ -9,14 +9,17 @@
*
*/
// The only thing i need to adjust. ;)
// Please always add the latest version number to the end
// Only have 5 releases here...
// If RC8 drops remove the install/data directory
//$versions = array('3.0.2', '3.0.3-RC1', '3.0.3', '3.0.4-RC1', '3.0.4', '3.0.5-RC1', '3.0.5', '3.0.6-RC1', '3.0.6-RC2', '3.0.6-RC3');
//$versions = array('3.0.2', '3.0.3', '3.0.4', '3.0.5', '3.0.6', '3.0.7-RC1', '3.0.7');
$versions = array('3.0.2', '3.0.3', '3.0.4', '3.0.5', '3.0.6', '3.0.7-RC1', '3.0.7-RC2', '3.0.7');
$verbose = false;
//$versions = array('3.0.2', '3.0.3', '3.0.4', '3.0.5', '3.0.6', '3.0.7-RC1', '3.0.7-RC2', '3.0.7', '3.0.7-PL1');
if ($_SERVER['argc'] < 2)
{
die("Please specify a list of versions as the first argument (e.g. package.php '1.0.0, 1.0.1, 1.0.2').");
}
$versions = explode(',', $_SERVER['argv'][1]);
$versions = array_map('trim', $versions);
$verbose = true;
require('build_helper.php');
@@ -25,130 +28,6 @@ $package = new build_package($versions, $verbose);
echo "Building Release Packages\n";
echo "Now all three package types (patch, files, release) are built as well as the update package (update).\n";
$package->begin_status('Remove temporary files');
// Cleanup...
$package->run_command('rm -Rv ' . $package->get('dest_dir'));
$package->run_command('rm -Rv ' . $package->get('diff_dir'));
$package->run_command('rm -Rv ' . $package->get('patch_directory'));
$package->run_command('rm -Rv ' . $package->get('files_directory'));
$package->run_command('rm -Rv ' . $package->get('update_directory'));
$package->run_command('rm -Rv ' . $package->get('release_directory'));
$package->begin_status('Create new directories');
// Make sure the directories got removed
while (file_exists($package->get('update_directory')))
{
sleep(1);
}
if (!file_exists($package->get('dest_dir')))
{
$package->run_command('mkdir ' . $package->get('dest_dir'));
}
if (!file_exists($package->get('diff_dir')))
{
$package->run_command('mkdir ' . $package->get('diff_dir'));
}
if (!file_exists($package->get('patch_directory')))
{
$package->run_command('mkdir ' . $package->get('patch_directory'));
}
if (!file_exists($package->get('files_directory')))
{
$package->run_command('mkdir ' . $package->get('files_directory'));
}
if (!file_exists($package->get('update_directory')))
{
$package->run_command('mkdir ' . $package->get('update_directory'));
}
if (!file_exists($package->get('release_directory')))
{
$package->run_command('mkdir ' . $package->get('release_directory'));
}
$package->begin_status('Copy release files to clean release directory');
// Create config.php file
$package->run_command('touch ' . $package->get('dest_dir') . '/config.php');
//$package->run_command('sudo chown www-data:www-data ' . $package->get('dest_dir') . '/config.php');
// Create new directory structure
foreach ($package->clean_directory_structure as $dir => $dir_struct)
{
$package->create_directory($package->get('dest_dir') . '/' . $dir, $dir_struct);
}
// First step is to copy the new version over (clean structure)
foreach ($package->files_to_copy as $file)
{
$source_file = $package->locations['new_version'] . $file;
$dest_file = $package->get('dest_dir') . '/' . $file;
$package->run_command("cp -p $source_file $dest_file");
}
// fix line endings
chdir($package->get('dest_dir'));
$package->run_command($package->locations['new_version'] . 'develop/fix_files.sh');
// Now clean up the permissions
$package->begin_status('Adjust permissions');
$package->adjust_permissions($package->get('dest_dir'));
// Now create a version for diffing the version - copy the tree over to old_versions...
$package->begin_status('Create diff directory for obtaining file differences');
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/* ' . $package->get('diff_dir'));
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/.htaccess ' . $package->get('diff_dir'));
// Cleanup diff directory (only contents to diff)
foreach ($package->remove_from_diff_structure as $remove_dir)
{
$package->run_command('rm -Rv ' . $package->get('diff_dir') . '/' . $remove_dir);
}
// Now, first of all we need to rebuild all old packages we want to support
foreach ($package->old_packages as $package_name => $tag_name)
{
$package->begin_status('Create old packages directory for diffing to ' . $package_name);
chdir($package->locations['old_versions']);
if (is_dir($package->locations['old_versions'] . $package_name))
{
$package->run_command('rm -Rv ' . $package->locations['old_versions'] . $package_name);
}
// Now, create a new one...
$tag_name = 'release_' . str_replace(array('.', '_to_'), array('_', ''), $tag_name);
$package->run_command('svn export --non-interactive http://code.phpbb.com/svn/phpbb/tags/' . $tag_name . '/phpBB/ ' . $package_name);
$location = $package->locations['old_versions'] . $package_name;
chdir($location . '/');
$package->run_command($package->locations['new_version'] . 'develop/fix_files.sh');
// Now clean up the permissions
$package->begin_status('Adjust permissions for package ' . $package_name);
$package->adjust_permissions($location);
// Cleanup diff directory (only contents to diff)
foreach ($package->remove_from_diff_structure as $remove_dir)
{
$package->run_command('rm -Rv ' . $location . '/' . $remove_dir);
}
}
// Go trough all versions making a diff if we even have old versions
// For phpBB 3.0.x we might choose a different update method, rendering the things below useless...
if (sizeof($package->old_packages))
@@ -160,13 +39,13 @@ if (sizeof($package->old_packages))
foreach ($package->old_packages as $_package_name => $dest_package_filename)
{
$package->begin_status('Creating patch/diff files for phpBB-' . $dest_package_filename . $package->get('new_version_number'));
$dest_package_filename = $package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch';
$package->run_command('diff ' . $package->diff_options . ' ' . $_package_name . ' ' . $package->get('simple_name') . ' > ' . $dest_package_filename);
$package->begin_status('Parsing patch/diff files for phpBB-' . $dest_package_filename . $package->get('new_version_number'));
// Parse this diff to determine file changes from the checked versions and save them
$diff_file_changes[$_package_name] = $package->collect_diff_files($dest_package_filename, $_package_name);
$diff_file_changes[$_package_name] = $package->collect_diff_files(
$package->get('patch_directory') . '/phpBB-' . $dest_package_filename . $package->get('new_version_number') . '.patch',
$_package_name
);
}
// Now put those files determined within the correct directories
@@ -404,7 +283,6 @@ if (sizeof($package->old_packages))
foreach ($compress_programs as $extension => $compress_command)
{
$package->begin_status('Packaging phpBB Patch Files for ' . $extension);
$package->run_command('rm -v ../release_files/' . $package->get('release_filename') . '-patch.' . $extension);
// Build Package
$package->run_command($compress_command . ' ../release_files/' . $package->get('release_filename') . '-patch.' . $extension . ' *');
@@ -420,7 +298,6 @@ if (sizeof($package->old_packages))
{
$package->begin_status('Packaging phpBB Files for ' . $extension);
$package->run_command('rm -v ../release_files/' . $package->get('release_filename') . '-files.' . $extension);
$package->run_command('mkdir ' . $package->get('files_directory') . '/release');
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/docs ' . $package->get('files_directory') . '/release');
$package->run_command('cp -Rp ' . $package->get('dest_dir') . '/install ' . $package->get('files_directory') . '/release');
@@ -457,7 +334,6 @@ if (sizeof($package->old_packages))
$package->begin_status('Packaging phpBB Update for ' . $extension);
$package->run_command('rm -v ../release_files/' . $package->get('release_filename') . '-update.' . $extension);
$package->run_command('mkdir ' . $package->get('update_directory') . '/release');
// Pack update files
@@ -518,6 +394,13 @@ foreach ($compress_programs as $extension => $compress_command)
$package->run_command('md5sum ./release_files/' . $package->get('release_filename') . '.' . $extension . ' > ./release_files/' . $package->get('release_filename') . '.' . $extension . '.md5');
}
// Microsoft Web PI packaging
$package->begin_status('Packaging phpBB for Microsoft WebPI');
$file = './release_files/' . $package->get('release_filename') . '.webpi.zip';
$package->run_command('cp -p ./release_files/' . $package->get('release_filename') . ".zip $file");
$package->run_command('cd ./../webpi && ' . $compress_programs['zip'] . " ./../new_version/$file *");
$package->run_command("md5sum $file > $file.md5");
// verify results
chdir($package->locations['root']);
$package->begin_status('********** Verifying packages **********');

View File

@@ -0,0 +1,39 @@
/**********************************************************************/
/* Install.SQL */
/* Creates a login and makes the user a member of db roles */
/* */
/**********************************************************************/
-- Declare variables for database name, username and password
DECLARE @dbName sysname,
@dbUser sysname,
@dbPwd nvarchar(max);
-- Set variables for database name, username and password
SET @dbName = 'PlaceHolderForDb';
SET @dbUser = 'PlaceHolderForUser';
SET @dbPwd = 'PlaceHolderForPassword';
DECLARE @cmd nvarchar(max)
-- Create login
IF( SUSER_SID(@dbUser) is null )
BEGIN
print '-- Creating login '
SET @cmd = N'CREATE LOGIN ' + quotename(@dbUser) + N' WITH PASSWORD ='''+ replace(@dbPwd, '''', '''''') + N''''
EXEC(@cmd)
END
-- Create database user and map to login
-- and add user to the datareader, datawriter, ddladmin and securityadmin roles
--
SET @cmd = N'USE ' + quotename(@DBName) + N';
IF( NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = ''' + replace(@dbUser, '''', '''''') + N'''))
BEGIN
print ''-- Creating user'';
CREATE USER ' + quotename(@dbUser) + N' FOR LOGIN ' + quotename(@dbUser) + N';
print ''-- Adding user'';
EXEC sp_addrolemember ''db_owner'', ''' + replace(@dbUser, '''', '''''') + N''';
END'
EXEC(@cmd)
GO

View File

@@ -0,0 +1,15 @@
USE PlaceHolderForDb$$
DROP PROCEDURE IF EXISTS add_user $$
CREATE PROCEDURE add_user()
BEGIN
DECLARE EXIT HANDLER FOR 1044 BEGIN END;
GRANT ALL PRIVILEGES ON PlaceHolderForDb.* to 'PlaceHolderForUser'@'PlaceHolderForServer' IDENTIFIED BY 'PlaceHolderForPassword';
FLUSH PRIVILEGES;
END
$$
CALL add_user() $$
DROP PROCEDURE IF EXISTS add_user $$

13
build/webpi/manifest.xml Normal file
View File

@@ -0,0 +1,13 @@
<msdeploy.iisapp>
<iisapp path="phpBB3" />
<dbmysql path="install/mysql.sql" commandDelimiter="$$" removeCommandDelimiter="true" />
<dbfullsql path="install/mssql.sql" />
<setAcl path="phpBB3/cache" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" />
<setAcl path="phpBB3/files" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" />
<setAcl path="phpBB3/store" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" />
<setAcl path="phpBB3/images/avatars/upload" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" />
<setAcl path="phpBB3/config.php" setAclAccess="Modify" setAclUser="anonymousAuthenticationUser" setAclResourceType="File" />
</msdeploy.iisapp>

226
build/webpi/parameters.xml Normal file
View File

@@ -0,0 +1,226 @@
<parameters>
<parameter
name="AppPath"
defaultValue="Default Web Site/phpBB3"
tags="iisapp">
<parameterEntry
type="ProviderPath"
scope="iisapp"
match="phpBB3" />
</parameter>
<parameter
name="aclCache"
description="Sets the ACL on the cache/ folder"
defaultValue="{AppPath}/cache"
tags="Hidden">
<parameterEntry
type="ProviderPath"
scope="setAcl"
match="phpBB3/cache" />
</parameter>
<parameter
name="aclFiles"
description="Sets the ACL on the files/ folder"
defaultValue="{AppPath}/files"
tags="Hidden">
<parameterEntry
type="ProviderPath"
scope="setAcl"
match="phpBB3/files" />
</parameter>
<parameter
name="aclStore"
description="Sets the ACL on the store/ folder"
defaultValue="{AppPath}/store"
tags="Hidden">
<parameterEntry
type="ProviderPath"
scope="setAcl"
match="phpBB3/store" />
</parameter>
<parameter
name="aclAvatarUpload"
description="Sets the ACL on the avatars/upload/ folder"
defaultValue="{AppPath}/images/avatars/upload"
tags="Hidden">
<parameterEntry
type="ProviderPath"
scope="setAcl"
match="phpBB3/images/avatars/upload" />
</parameter>
<parameter
name="aclConfig"
description="Sets the ACL on the config.php file"
defaultValue="{AppPath}/config.php"
tags="Hidden">
<parameterEntry
type="ProviderPath"
scope="setAcl"
match="phpBB3/config.php" />
</parameter>
<parameter
name="DatabaseServer"
description="Enter the database server"
defaultValue=".\SQLExpress"
tags="SQL, dbServer" >
</parameter>
<parameter
name="DatabaseName"
description="Database name for your application."
defaultValue="phpbb"
tags="SQL, dbName">
<parameterEntry
type="TextFile"
scope="install/mssql.sql"
match="PlaceHolderForDb" />
</parameter>
<parameter
name="DatabaseAdministrator"
description="Database server administartor username."
defaultValue="sa"
tags="SQL, DbAdminUsername" >
</parameter>
<parameter
name="DatabaseAdministratorPassword"
description="Database server administrator password."
tags="Password,SQL,DbAdminPassword">
</parameter>
<parameter
name="Database Username"
description="Username to access your database."
defaultValue="phpbb"
tags="SQL, DbUsername">
<parameterEntry
type="TextFile"
scope="install/mssql.sql"
match="PlaceHolderForUser" />
</parameter>
<parameter
name="Database Password"
description="Password for your phpBB database. (Must be at least 8 characters, contain at least one lower case letter, one upper case letter and one digit)"
tags="New, Password,SQL, DbUserPassword">
<parameterValidation
type = "RegularExpression"
validationString = "^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$" />
<parameterEntry
type="TextFile"
scope="install/mssql.sql"
match="PlaceHolderForPassword" />
</parameter>
<parameter
name="ConnectionString"
description="Automatically sets the connection string for the connection request."
defaultValue="Server={DatabaseServer};Database={DatabaseName};uid={DatabaseAdministrator};Pwd={DatabaseAdministratorPassword};"
tags="Hidden,SQLConnectionString,Validate">
<parameterEntry
type="ProviderPath"
scope="dbfullsql"
match="install/mssql.sql" />
</parameter>
<parameter
name="SQL Database type"
description="SQL database type"
defaultValue="mssql"
tags="SQL,Hidden">
</parameter>
<parameter
name="MySQL Database Server"
description="Enter the hostname"
defaultValue="localhost"
tags="MySQL, dbServer">
<parameterEntry
type="TextFile"
scope="install/mysql.sql"
match="PlaceHolderForServer" />
</parameter>
<parameter
name="Application Database Name"
description="Database Name for your application."
defaultValue="phpbb"
tags="MySQL, dbName">
<parameterEntry
type="TextFile"
scope="install/mysql.sql"
match="PlaceHolderForDb" />
</parameter>
<parameter
name="MySQL Database Administrator"
description="Database administrator username."
defaultValue="root"
tags="MySQL, DbAdminUsername" >
</parameter>
<parameter
name="MySQL Database Administrator Password"
description="Database administrator password."
tags="Password,MySQL,DbAdminPassword" >
</parameter>
<parameter
name="phpBB Database Username"
description="Username to access your phpBB database."
defaultValue="phpbb"
tags="MySQL, DbUsername">
<parameterEntry
type="TextFile"
scope="install/mysql.sql"
match="PlaceHolderForUser" />
</parameter>
<parameter
name="MySQL Database Password"
description="Password for your phpBB database. (Minimum 4 characters)"
tags="New, Password,MySQL,DbUserPassword">
<parameterValidation
type = "RegularExpression"
validationString = "^.{4,}$" />
<parameterEntry
type="TextFile"
scope="install/mysql.sql"
match="PlaceHolderForPassword" />
</parameter>
<parameter
name="MySQLConnectionString"
description="Automatically sets the connection string for the connection request."
defaultValue="Server={MySQL Database Server};Database={Application Database Name};uid={MySQL Database Administrator};Pwd={MySQL Database Administrator Password};"
tags="Hidden,MySQLConnectionString,Validate">
<parameterEntry
type="ProviderPath"
scope="dbmysql"
match="install/mysql.sql" />
</parameter>
</parameters>

258
git-tools/hooks/commit-msg Executable file
View File

@@ -0,0 +1,258 @@
#!/bin/sh
#
# A hook to check syntax of a phpBB3 commit message, per:
# * <http://wiki.phpbb.com/display/DEV/Git>
# * <http://area51.phpbb.com/phpBB/viewtopic.php?p=209919#p209919>
#
# This is a commit-msg hook.
#
# To install this you can either copy or symlink it to
# $GIT_DIR/hooks, example:
#
# ln -s ../../git-tools/hooks/commit-msg \\
# .git/hooks/commit-msg
config_ns="phpbb.hooks.commit-msg";
if [ "$(git config --bool $config_ns.fatal)" = "false" ]
then
fatal=0;
else
fatal=1;
fi
debug_level=$(git config --int $config_ns.debug || echo 0);
# Error codes
ERR_LENGTH=1;
ERR_HEADER=2;
ERR_EMPTY=3;
ERR_DESCRIPTION=4;
ERR_FOOTER=5;
ERR_EOF=6;
ERR_UNKNOWN=42;
debug()
{
local level;
level=$1;
shift;
if [ $debug_level -ge $level ]
then
echo $@;
fi
}
quit()
{
if [ $1 -gt 0 ] && [ $1 -ne $ERR_UNKNOWN ] && [ $fatal -eq 0 ]
then
exit 0;
else
exit $1;
fi
}
msg=$(grep -nE '.{81,}' "$1");
if [ $? -eq 0 ]
then
echo "The following lines are greater than 80 characters long:\n" >&2;
echo $msg >&2;
quit $ERR_LENGTH;
fi
lines=$(wc -l "$1" | awk '{ print $1; }');
expecting=header;
in_description=0;
in_empty=0;
ticket=0;
branch_regex="[a-z]+[a-z0-9-]*[a-z0-9]+";
i=1;
tickets="";
while [ $i -le $lines ]
do
# Grab the line we are studying
line=$(head -n$i "$1" | tail -n1);
debug 1 "==> [$i] $line (description: $in_description, empty: $in_empty)";
err=$ERR_UNKNOWN;
if [ -z "$expecting" ]
then
quit $err;
fi
if [ "${expecting#comment}" = "$expecting" ]
then
# Prefix comments to the expected tokens list
expecting="comment $expecting";
fi
debug 2 "Expecting: $expecting";
# Loop over each of the expected line formats
for expect in $expecting
do
# Reset the error code each iteration
err=$ERR_UNKNOWN;
# Test for validity of each line format
# This is done first so $? contains the result
case $expect in
"header")
err=$ERR_HEADER;
echo "$line" | grep -Eq "^\[(ticket/[0-9]+|feature/$branch_regex|task/$branch_regex)\] [A-Z].+$"
;;
"empty")
err=$ERR_EMPTY;
echo "$line" | grep -Eq "^$"
;;
"description")
err=$ERR_DESCRIPTION;
# Free flow text, the line length was constrained by the initial check
echo "$line" | grep -Eq "^.+$";
;;
"footer")
err=$ERR_FOOTER;
# Each ticket is on its own line
echo "$line" | grep -Eq "^PHPBB3-[0-9]+$";
;;
"eof")
err=$ERR_EOF;
# Should not end up here
false
;;
"comment")
echo "$line" | grep -Eq "^#";
;;
*)
echo "Unrecognised token $expect" >&2;
quit $err;
;;
esac
# Preserve the result of the line check
result=$?;
debug 2 "$expect - '$line' - $result";
if [ $result -eq 0 ]
then
# Break out the loop on success
# otherwise roll on round and keep looking for a match
break;
fi
done
if [ $result -eq 0 ]
then
# Have we switched out of description mode?
if [ $in_description -eq 1 ] && [ "$expect" != "description" ] && [ "$expect" != "empty" ] && [ "$expect" != "comment" ]
then
# Yes, okay we need to backtrace one line and reanalyse
in_description=0;
i=$(( $i - $in_empty ));
# Reset the empty counter
in_empty=0;
continue;
fi
# Successful match, but on which line format
case $expect in
"header")
expecting="empty";
echo "$line" | grep -Eq "^\[ticket/[0-9]+\]$" && (
ticket=$(echo "$line" | sed 's,\[ticket/\([0-9]*\)\].*,\1,');
)
;;
"empty")
# Description might have empty lines as spacing
expecting="footer description";
in_empty=$(($in_empty + 1));
if [ $in_description -eq 1 ]
then
expecting="$expecting empty";
fi
;;
"description")
expecting="description empty";
in_description=1;
;;
"footer")
expecting="footer eof";
if [ "$tickets" = "" ]
then
tickets="$line";
else
tickets="$tickets $line";
fi
;;
"comment")
# Comments should expect the same thing again
;;
*)
echo "Unrecognised token $expect" >&2;
quit 254;
;;
esac
if [ "$expect" != "empty" ]
then
in_empty=0;
fi
debug 3 "Now expecting: $expecting";
else
# None of the expected line formats matched
# Guess we'll call it a day here then
echo "Syntax error on line $i:" >&2;
echo ">> $line" >&2;
echo -n "Expecting: " >&2;
echo "$expecting" | sed 's/ /, /g' >&2;
exit $err;
fi
i=$(( $i + 1 ));
done
# If EOF is expected exit cleanly
echo "$expecting" | grep -q "eof" || (
# Unexpected EOF, error
echo "Unexpected EOF encountered" >&2;
quit $ERR_EOF;
) && (
# Do post scan checks
if [ ! -z "$tickets" ]
then
# Check for duplicate tickets
dupes=$(echo "$tickets" | sed 's/ /\n/g' | sort | uniq -d);
if [ ! -z "$dupes" ]
then
echo "The following tickets are repeated:" >&2;
echo "$dupes" | sed 's/ /\n/g;s/^/* /g' >&2;
quit $ERR_FOOTER;
fi
fi
# Check the branch ticket is mentioned, doesn't make sense otherwise
if [ $ticket -gt 0 ]
then
echo "$tickets" | grep -Eq "\bPHPBB3-$ticket\b" || (
echo "Ticket ID [$ticket] of branch missing from list of tickets:" >&2;
echo "$tickets" | sed 's/ /\n/g;s/^/* /g' >&2;
quit $ERR_FOOTER;
) || exit $?;
fi
# Got here okay exit to reality
exit 0;
);
exit $?;

17
git-tools/hooks/install Executable file
View File

@@ -0,0 +1,17 @@
#!/bin/sh
#
# Script to install the git hooks
# by symlinking them into the .git/hooks directory
#
# Usage (from within git-tools/hooks):
# ./install
dir=$(dirname $0)
for file in $(ls $dir)
do
if [ $file != "install" ] && [ $file != "uninstall" ]
then
ln -s "../../git-tools/hooks/$file" "$dir/../../.git/hooks/$file"
fi
done

82
git-tools/hooks/pre-commit Executable file
View File

@@ -0,0 +1,82 @@
#!/bin/sh
#
# A hook to disallow php syntax errors to be committed
# by running php -l (lint) on them. It requires php-cli
# to be installed.
#
# This is a pre-commit hook.
#
# To install this you can either copy or symlink it to
# $GIT_DIR/hooks, example:
#
# ln -s ../../git-tools/hooks/pre-commit \\
# .git/hooks/pre-commit
# NOTE: this is run through /usr/bin/env
PHP_BIN=php
# necessary check for initial commit
if git rev-parse --verify HEAD >/dev/null 2>&1
then
against=HEAD
else
# Initial commit: diff against an empty tree object
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
error=0
errors=""
if ! which $PHP_BIN >/dev/null 2>&1
then
echo "PHP Syntax check failed:"
echo "PHP binary does not exist or is not in path: $PHP_BIN"
exit 1
fi
# dash does not support $'\n':
# http://forum.soft32.com/linux2/Bug-409179-DASH-Settings-IFS-work-properly-ftopict70039.html
IFS='
'
# get a list of staged files
for line in $(git diff-index --cached --full-index $against)
do
# split needed values
sha=$(echo $line | cut -d' ' -f4)
temp=$(echo $line | cut -d' ' -f5)
status=$(echo $temp | cut -d' ' -f1)
filename=$(echo $temp | cut -d' ' -f2)
# file extension
ext=$(echo $filename | sed 's/^.*\.//')
# only check files with php extension
if [ $ext != "php" ]
then
continue
fi
# do not check deleted files
if [ $status = "D" ]
then
continue
fi
# check the staged file content for syntax errors
# using php -l (lint)
result=$(git cat-file -p $sha | /usr/bin/env $PHP_BIN -l 2>/dev/null)
if [ $? -ne 0 ]
then
error=1
# Swap back in correct filenames
errors=$(echo "$errors"; echo "$result" |sed -e "s@in - on@in $filename on@g")
fi
done
unset IFS
if [ $error -eq 1 ]
then
echo -e "PHP Syntax check failed:";
echo -e "$errors" | grep "^Parse error:"
exit 1
fi

View File

@@ -0,0 +1,42 @@
#!/bin/sh
#
# A hook to add [$branch] to the beginning of a commit message
# if certain conditions are met.
#
# This is a prepare-commit-msg hook.
#
# To install this you can either copy or symlink it to
# $GIT_DIR/hooks, example:
#
# ln -s ../../git-tools/hooks/prepare-commit-msg \\
# .git/hooks/prepare-commit-msg
# get branch name
branch="$(git symbolic-ref HEAD)"
# exit if no branch name is present
# (eg. detached HEAD)
if [ $? -ne 0 ]
then
exit
fi
# strip off refs/heads/
branch="$(echo "$branch" | sed "s/refs\/heads\///g")"
# add [branchname] to commit message
# * only run when normal commit is made (without -m or -F;
# not a merge, etc.)
# * also make sure the branch name begins with bug/ or feature/
if [ "$2" = "" ]
then
tail="";
# Branch is prefixed with 'ticket/', append ticket ID to message
if [ "$branch" != "${branch##ticket/}" ];
then
tail="\n\nPHPBB3-${branch##ticket/}";
fi
echo "[$branch]$tail $(cat "$1")" > "$1"
fi

16
git-tools/hooks/uninstall Executable file
View File

@@ -0,0 +1,16 @@
#!/bin/sh
#
# Script to uninstall the git hooks
#
# Usage (from within git-tools/hooks):
# ./uninstall
dir=$(dirname $0)
for file in $(ls $dir)
do
if [ $file != "install" ] && [ $file != "uninstall" ]
then
rm -f "$dir/../../.git/hooks/$file"
fi
done

View File

@@ -432,6 +432,20 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
{
$error[] = sprintf($user->lang['SETTING_TOO_BIG'], $user->lang[$config_definition['lang']], $validator[$max]);
}
if (strpos($config_name, '_max') !== false)
{
// Min/max pairs of settings should ensure that min <= max
// Replace _max with _min to find the name of the minimum
// corresponding configuration variable
$min_name = str_replace('_max', '_min', $config_name);
if (isset($cfg_array[$min_name]) && is_numeric($cfg_array[$min_name]) && $cfg_array[$config_name] < $cfg_array[$min_name])
{
// A minimum value exists and the maximum value is less than it
$error[] = sprintf($user->lang['SETTING_TOO_LOW'], $user->lang[$config_definition['lang']], (int) $cfg_array[$min_name]);
}
}
break;
// Absolute path
@@ -533,7 +547,7 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
// Check if the path is writable
if ($config_definition['validate'] == 'wpath' || $config_definition['validate'] == 'rwpath')
{
if (file_exists($phpbb_root_path . $cfg_array[$config_name]) && !@is_writable($phpbb_root_path . $cfg_array[$config_name]))
if (file_exists($phpbb_root_path . $cfg_array[$config_name]) && !phpbb_is_writable($phpbb_root_path . $cfg_array[$config_name]))
{
$error[] = sprintf($user->lang['DIRECTORY_NOT_WRITABLE'], $cfg_array[$config_name]);
}

View File

@@ -31,9 +31,9 @@
function display_details(option)
{
document.getElementById('acp_unban').unbangivereason.value = ban_give_reason[option];
document.getElementById('acp_unban').unbanreason.value = ban_reason[option];
document.getElementById('acp_unban').unbanlength.value = ban_length[option];
document.getElementById('acp_unban').unbangivereason.innerHTML = ban_give_reason[option];
document.getElementById('acp_unban').unbanreason.innerHTML = ban_reason[option];
document.getElementById('acp_unban').unbanlength.innerHTML = ban_length[option];
}
// ]]>

View File

@@ -189,8 +189,8 @@
<legend>{L_GENERAL_FORUM_SETTINGS}</legend>
<dl>
<dt><label for="display_active">{L_DISPLAY_ACTIVE_TOPICS}:</label><br /><span>{L_DISPLAY_ACTIVE_TOPICS_EXPLAIN}</span></dt>
<dd><label><input type="radio" class="radio" name="display_active" value="1"<!-- IF S_DISPLAY_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="display_active" value="0"<!-- IF not S_DISPLAY_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
<dd><label><input type="radio" class="radio" name="display_active" value="1"<!-- IF S_ENABLE_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_YES}</label>
<label><input type="radio" class="radio" name="display_active" value="0"<!-- IF not S_ENABLE_ACTIVE_TOPICS --> id="display_active" checked="checked"<!-- ENDIF --> /> {L_NO}</label></dd>
</dl>
</fieldset>
</div>

View File

@@ -18,6 +18,12 @@
</div>
<!-- ENDIF -->
<!-- IF NEXT_FEATURE_VERSION -->
<div class="errorbox">
<p>{UPGRADE_INSTRUCTIONS}</p>
</div>
<!-- ENDIF -->
<fieldset>
<legend></legend>
<dl>

View File

@@ -140,7 +140,7 @@
<legend>{L_DELETE_USER}</legend>
<dl>
<dt><label for="delete_type">{L_DELETE_USER}:</label><br /><span>{L_DELETE_USER_EXPLAIN}</span></dt>
<dd><select id="delete_type" name="delete_type"><option value="retain">{L_RETAIN_POSTS}</option><option value="remove">{L_DELETE_POSTS}</option></select></dd>
<dd><select id="delete_type" name="delete_type"><option class="sep" value="">{L_SELECT_OPTION}</option><option value="retain">{L_RETAIN_POSTS}</option><option value="remove">{L_DELETE_POSTS}</option></select></dd>
</dl>
<p class="quick">
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
@@ -148,6 +148,6 @@
{S_FORM_TOKEN}
</p>
</fieldset>
<!-- ENDIF -->
</form>
<!-- ENDIF -->
<!-- ENDIF -->

View File

@@ -56,7 +56,7 @@
<input type="button" class="button2" accesskey="c" name="addbbcode8" value="Code" style="width: 40px" onclick="bbstyle(8)" onmouseover="helpline('c')" onmouseout="helpline('tip')" />
<input type="button" class="button2" accesskey="l" name="addbbcode10" value="List" style="width: 40px" onclick="bbstyle(10)" onmouseover="helpline('l')" onmouseout="helpline('tip')" />
<input type="button" class="button2" accesskey="o" name="addbbcode12" value="List=" style="width: 40px" onclick="bbstyle(12)" onmouseover="helpline('o')" onmouseout="helpline('tip')" />
<input type="button" class="button2" accesskey="t" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" onmouseover="helpline('e')" onmouseout="helpline('tip')" />
<input type="button" class="button2" accesskey="y" name="addlitsitem" value="[*]" style="width: 40px" onclick="bbstyle(-1)" onmouseover="helpline('e')" onmouseout="helpline('tip')" />
<!-- IF S_BBCODE_IMG -->
<input type="button" class="button2" accesskey="p" name="addbbcode14" value="Img" style="width: 40px" onclick="bbstyle(14)" onmouseover="helpline('p')" onmouseout="helpline('tip')" />
<!-- ENDIF -->
@@ -93,8 +93,8 @@
// ]]>
</script>
</dt>
<dd style="margin-left: 90px;"><textarea name="signature" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();">{SIGNATURE}</textarea></dd>
<dd style="margin-left: 90px; margin-top: 5px;">
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px;"><textarea name="signature" rows="10" cols="60" style="width: 95%;" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onfocus="initInsertions();">{SIGNATURE}</textarea></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 5px;">
<!-- IF S_BBCODE_ALLOWED -->
<label><input type="checkbox" class="radio" name="disable_bbcode"{S_BBCODE_CHECKED} /> {L_DISABLE_BBCODE}</label>
<!-- ENDIF -->
@@ -105,7 +105,7 @@
<label><input type="checkbox" class="radio" name="disable_magic_url"{S_MAGIC_URL_CHECKED} /> {L_DISABLE_MAGIC_URL}</label>
<!-- ENDIF -->
</dd>
<dd style="margin-left: 90px; margin-top: 10px;"><strong>{L_OPTIONS}: </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS}</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 90px; margin-top: 10px;"><strong>{L_OPTIONS}: </strong>{BBCODE_STATUS} :: {IMG_STATUS} :: {FLASH_STATUS} :: {URL_STATUS} :: {SMILIES_STATUS}</dd>
</dl>
</fieldset>

View File

@@ -670,14 +670,10 @@ legend {
position: relative;
text-transform: none;
line-height: 1.2em;
top: 0;
top: -.2em;
vertical-align: middle;
}
/* Hide from macIE \*/
legend { top: -1.2em; }
/* end */
* html legend {
margin: 0 0 -10px -7px;
line-height: 1em;

View File

@@ -46,7 +46,11 @@ function initInsertions()
{
textarea.focus();
baseHeight = doc.selection.createRange().duplicate().boundingHeight;
// document.body.focus();
if (!document.forms[form_name])
{
document.body.focus();
}
}
}
@@ -152,7 +156,7 @@ function insert_text(text, spaces, popup)
var sel_start = textarea.selectionStart;
var sel_end = textarea.selectionEnd;
mozWrap(textarea, text, '')
mozWrap(textarea, text, '');
textarea.selectionStart = sel_start + text.length;
textarea.selectionEnd = sel_end + text.length;
}
@@ -230,6 +234,7 @@ function addquote(post_id, username)
theSelection = theSelection.replace(/&lt\;/ig, '<');
theSelection = theSelection.replace(/&gt\;/ig, '>');
theSelection = theSelection.replace(/&amp\;/ig, '&');
theSelection = theSelection.replace(/&nbsp\;/ig, ' ');
}
else if (document.all)
{
@@ -269,12 +274,12 @@ function mozWrap(txtarea, open, close)
}
var s1 = (txtarea.value).substring(0,selStart);
var s2 = (txtarea.value).substring(selStart, selEnd)
var s2 = (txtarea.value).substring(selStart, selEnd);
var s3 = (txtarea.value).substring(selEnd, selLength);
txtarea.value = s1 + open + s2 + close + s3;
txtarea.selectionStart = selEnd + open.length + close.length;
txtarea.selectionEnd = txtarea.selectionStart;
txtarea.selectionStart = selStart + open.length;
txtarea.selectionEnd = selEnd + open.length;
txtarea.focus();
txtarea.scrollTop = scrollTop;
@@ -327,8 +332,8 @@ function colorPalette(dir, width, height)
for (b = 0; b < 5; b++)
{
color = String(numberList[r]) + String(numberList[g]) + String(numberList[b]);
document.write('<td bgcolor="#' + color + '">');
document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;" onmouseover="helpline(\'s\');" onmouseout="helpline(\'tip\');"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');
document.write('<td bgcolor="#' + color + '" style="width: ' + width + 'px; height: ' + height + 'px;">');
document.write('<a href="#" onclick="bbfontstyle(\'[color=#' + color + ']\', \'[/color]\'); return false;"><img src="images/spacer.gif" width="' + width + '" height="' + height + '" alt="#' + color + '" title="#' + color + '" /></a>');
document.writeln('</td>');
}

View File

@@ -200,7 +200,7 @@
<legend><img src="{T_IMAGE_PATH}file_up_to_date.gif" alt="{L_STATUS_UP_TO_DATE}" /></legend>
<!-- BEGIN up_to_date -->
<dl>
<dd class="full" style="text-align: left;"><strong>{up_to_date.FILENAME}</strong></dd>
<dd class="full" style="text-align: {S_CONTENT_FLOW_BEGIN};"><strong>{up_to_date.FILENAME}</strong></dd>
</dl>
<!-- END up_to_date -->
</fieldset>
@@ -218,11 +218,11 @@
<dt style="width: 60%;"><strong><!-- IF new.DIR_PART -->{new.DIR_PART}<br /><!-- ENDIF -->{new.FILE_PART}</strong>
<!-- IF new.S_CUSTOM --><br /><span><em>{L_FILE_USED}: </em>{new.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-left: 60%;">
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">
<!-- IF not new.S_BINARY -->[<a href="{new.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{new.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
<!-- IF new.S_CUSTOM -->
<dd style="margin-left: 60%;"><label><input type="checkbox" name="no_update[]" value="{new.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><label><input type="checkbox" name="no_update[]" value="{new.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- END new -->
@@ -242,9 +242,9 @@
<dt style="width: 60%;"><strong><!-- IF not_modified.DIR_PART -->{not_modified.DIR_PART}<br /><!-- ENDIF -->{not_modified.FILE_PART}</strong>
<!-- IF not_modified.S_CUSTOM --><br /><span><em>{L_FILE_USED}: </em>{not_modified.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-left: 60%;"><!-- IF not not_modified.S_BINARY -->[<a href="{not_modified.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{not_modified.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><!-- IF not not_modified.S_BINARY -->[<a href="{not_modified.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{not_modified.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd>
<!-- IF not_modified.S_CUSTOM -->
<dd style="margin-left: 60%;"><label><input type="checkbox" name="no_update[]" value="{not_modified.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><label><input type="checkbox" name="no_update[]" value="{not_modified.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- END not_modified -->
@@ -263,22 +263,22 @@
<dt style="width: 60%;"><strong><!-- IF modified.DIR_PART -->{modified.DIR_PART}<br /><!-- ENDIF -->{modified.FILE_PART}</strong>
<!-- IF modified.S_CUSTOM --><br /><span><em>{L_FILE_USED}: </em>{modified.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-left: 60%;">&nbsp;</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">&nbsp;</dd>
<!-- IF modified.S_CUSTOM -->
<dd style="margin-left: 60%;"><label><input type="checkbox" name="no_update[]" value="{modified.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><label><input type="checkbox" name="no_update[]" value="{modified.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="modified[{modified.FILENAME}]" value="0" checked="checked" /> {L_MERGE_MODIFICATIONS_OPTION}</label></dt>
<dd style="margin-left: 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{modified.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{modified.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF --></dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="modified[{modified.FILENAME}]" value="1" /> {L_MERGE_NO_MERGE_NEW_OPTION}</label></dt>
<dd style="margin-left: 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_VIEW_NO_MERGE_NEW}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]<!-- ELSE -->&nbsp;<!-- ENDIF --></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_VIEW_NO_MERGE_NEW}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]<!-- ELSE -->&nbsp;<!-- ENDIF --></dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="modified[{modified.FILENAME}]" value="2" /> {L_MERGE_NO_MERGE_MOD_OPTION}</label></dt>
<dd style="margin-left: 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_VIEW_NO_MERGE_MOD}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]<!-- ELSE -->&nbsp;<!-- ENDIF --></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><!-- IF not modified.S_BINARY -->[<a href="{modified.U_VIEW_NO_MERGE_MOD}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]<!-- ELSE -->&nbsp;<!-- ENDIF --></dd>
</dl>
</fieldset>
<!-- END modified -->
@@ -296,11 +296,11 @@
<dt style="width: 60%;"><strong><!-- IF new_conflict.DIR_PART -->{new_conflict.DIR_PART}<br /><!-- ENDIF -->{new_conflict.FILE_PART}</strong>
<!-- IF new_conflict.S_CUSTOM --><br /><span><em>{L_FILE_USED}: </em>{new_conflict.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
</dt>
<dd style="margin-left: 60%;">
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">
<!-- IF not new_conflict.S_BINARY -->[<a href="{new_conflict.U_SHOW_DIFF}" onclick="diff_popup(this.href); return false;">{new_conflict.L_SHOW_DIFF}</a>]<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
<!-- IF new_conflict.S_CUSTOM -->
<dd style="margin-left: 60%;"><label><input type="checkbox" name="no_update[]" value="{new_conflict.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><label><input type="checkbox" name="no_update[]" value="{new_conflict.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- END new_conflict -->
@@ -320,35 +320,35 @@
<!-- IF conflict.S_CUSTOM --><br /><span><em>{L_FILE_USED}: </em>{conflict.CUSTOM_ORIGINAL}</span><!-- ENDIF -->
<!-- IF conflict.NUM_CONFLICTS --><br /><span>{L_NUM_CONFLICTS}: {conflict.NUM_CONFLICTS}</span><!-- ENDIF -->
</dt>
<dd style="margin-left: 60%;">
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">
<!-- IF not conflict.S_BINARY -->[<a href="{conflict.U_SHOW_DIFF}">{L_DOWNLOAD_CONFLICTS}</a>]<br />{L_DOWNLOAD_CONFLICTS_EXPLAIN}
<!-- ELSE -->{L_BINARY_FILE}<!-- ENDIF -->
</dd>
<!-- IF conflict.S_CUSTOM -->
<dd style="margin-left: 60%;"><label><input type="checkbox" name="no_update[]" value="{conflict.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;"><label><input type="checkbox" name="no_update[]" value="{conflict.FILENAME}" class="radio" /> {L_DO_NOT_UPDATE}</label></dd>
<!-- ENDIF -->
</dl>
<!-- IF conflict.S_BINARY -->
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="1" checked="checked" /> {L_MERGE_NO_MERGE_NEW_OPTION}</label></dt>
<dd style="margin-left: 60%;">&nbsp;</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">&nbsp;</dd>
</dl>
<!-- ELSE -->
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="3" checked="checked" /> {L_MERGE_NEW_FILE_OPTION}</label></dt>
<dd style="margin-left: 60%;">[<a href="{conflict.U_VIEW_NEW_FILE}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_MODIFIED}</a>]</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">[<a href="{conflict.U_VIEW_NEW_FILE}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_MODIFIED}</a>]</dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="4" /> {L_MERGE_MOD_FILE_OPTION}</label></dt>
<dd style="margin-left: 60%;">[<a href="{conflict.U_VIEW_MOD_FILE}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_MODIFIED}</a>]</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">[<a href="{conflict.U_VIEW_MOD_FILE}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_MODIFIED}</a>]</dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="1" /> {L_MERGE_NO_MERGE_NEW_OPTION}</label></dt>
<dd style="margin-left: 60%;">[<a href="{conflict.U_VIEW_NO_MERGE_NEW}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">[<a href="{conflict.U_VIEW_NO_MERGE_NEW}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd>
</dl>
<dl>
<dt style="width: 60%"><label><input type="radio" class="radio" name="conflict[{conflict.FILENAME}]" value="2" /> {L_MERGE_NO_MERGE_MOD_OPTION}</label></dt>
<dd style="margin-left: 60%;">[<a href="{conflict.U_VIEW_NO_MERGE_MOD}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 60%;">[<a href="{conflict.U_VIEW_NO_MERGE_MOD}" onclick="diff_popup(this.href); return false;">{L_SHOW_DIFF_FINAL}</a>]</dd>
</dl>
<!-- ENDIF -->
</fieldset>

View File

@@ -40,7 +40,7 @@
<dl class="permissions-simple">
<dt style="width: 20%"><label for="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}">{L_ROLE}:</label></dt>
<!-- IF p_mask.f_mask.S_ROLE_OPTIONS -->
<dd style="margin-left: 20%"><select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" onchange="set_role_settings(this.options[selectedIndex].value, 'advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')">{p_mask.f_mask.S_ROLE_OPTIONS}</select></dd>
<dd style="margin-{S_CONTENT_FLOW_BEGIN}: 20%"><select id="role{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}" name="role[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" onchange="set_role_settings(this.options[selectedIndex].value, 'advanced{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}'); init_colours('{p_mask.S_ROW_COUNT}{p_mask.f_mask.S_ROW_COUNT}')">{p_mask.f_mask.S_ROLE_OPTIONS}</select></dd>
<!-- ELSE -->
<dd>{L_NO_ROLE_AVAILABLE}</dd>
<!-- ENDIF -->
@@ -118,7 +118,7 @@
</div>
<!-- IF not p_mask.S_VIEW -->
<fieldset class="quick" style="margin-right: 11px;">
<fieldset class="quick" style="margin-{S_CONTENT_FLOW_END}: 11px;">
<p class="small">{L_APPLY_PERMISSIONS_EXPLAIN}</p>
<input class="button1" type="submit" name="psubmit[{p_mask.f_mask.UG_ID}][{p_mask.f_mask.FORUM_ID}]" value="{L_APPLY_PERMISSIONS}" />
<!-- IF .p_mask.f_mask gt 1 or .p_mask gt 1 -->

View File

@@ -123,13 +123,11 @@ if (defined('IN_CRON'))
$phpbb_root_path = dirname(__FILE__) . DIRECTORY_SEPARATOR;
}
if (!file_exists($phpbb_root_path . 'config.' . $phpEx))
if (file_exists($phpbb_root_path . 'config.' . $phpEx))
{
die("<p>The config.$phpEx file could not be found.</p><p><a href=\"{$phpbb_root_path}install/index.$phpEx\">Click here to install phpBB</a></p>");
require($phpbb_root_path . 'config.' . $phpEx);
}
require($phpbb_root_path . 'config.' . $phpEx);
if (!defined('PHPBB_INSTALLED'))
{
// Redirect the user to the installer

View File

View File

@@ -266,7 +266,8 @@ foreach ($supported_dbms as $dbms)
case 'mssql':
$line = "/*\n\n \$I" . "d: $\n\n*/\n\n";
$line .= "BEGIN TRANSACTION\nGO\n\n";
// no need to do this, no transaction support for schema changes
//$line .= "BEGIN TRANSACTION\nGO\n\n";
break;
case 'oracle':
@@ -749,7 +750,8 @@ foreach ($supported_dbms as $dbms)
switch ($dbms)
{
case 'mssql':
$line = "\nCOMMIT\nGO\n\n";
// No need to do this, no transaction support for schema changes
//$line = "\nCOMMIT\nGO\n\n";
break;
case 'sqlite':

View File

@@ -14,7 +14,7 @@ find . > FILELIST.$$
grep -sv FILELIST FILELIST.$$ > FILELIST2.$$
grep -sv $(basename $0) FILELIST2.$$ > FILELIST.$$
grep -sv "^\.$" FILELIST.$$ > FILELIST2.$$
file -f FILELIST2.$$ |grep text | sed -e 's/^\([^\:]*\)\:.*$/\1/' > FILELIST
file -f FILELIST2.$$ |grep text | grep -v icon_textbox_search.gif | sed -e 's/^\([^\:]*\)\:.*$/\1/' > FILELIST
file -f FILELIST2.$$ |grep -sv text | sed -e 's/^\([^\:]*\)\:.*$/Not Modifying file: \1/'
rm FILELIST2.$$
rm FILELIST.$$

View File

@@ -18,14 +18,15 @@ $ls32 = "(?:$h16:$h16|$ipv4)";
$ipv6_construct = array(
array(false, '', '{6}', $ls32),
array(false, '::', '{5}', $ls32),
array(false, '::', '{0,5}', "(?:$h16(?::$h16)?|$ipv4)"),
array('', ':', '{4}', $ls32),
array('{1,2}', ':', '{3}', $ls32),
array('{1,3}', ':', '{2}', $ls32),
array('{1,4}', ':', '', $ls32),
array('{1,5}', ':', false, $ls32),
array('{1,6}', ':', false, $h16),
array('{1,7}', ':', false, '')
array('{1,7}', ':', false, ''),
array(false, '::', false, '')
);
$ipv6 = '(?:';

View File

@@ -0,0 +1,9 @@
#!/bin/sh
# set permissions required for installation
dir=$(dirname $0)
for file in cache files store config.php images/avatars/upload
do
chmod a+w $dir/../$file
done

View File

@@ -26,17 +26,17 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody)
Acyd Burn (Meik Sievertsen) [Lead 09/2005 - 01/2010]
APTX (Marek A. R.)
bantu (Andreas Fischer)
DavidMJ (David M.)
dhn (Dominik Dröscher)
igorw (Igor Wiedler)
kellanved (Henry Sudhof)
nickvergessen (Joas Schilling)
rxu (Ruslan Uzdenov)
Terrafrost (Jim Wigginton)
ToonArmy (Chris Smith)
Contributions by: Brainy (Cullen Walsh)
leviatan21 (Gabriel Vazquez)
nickvergessen (Joas Schilling)
Raimon (Raimon Meuldijk)
rxu (Ruslan Uzdenov)
Xore (Robert Hetzler)
@@ -49,6 +49,7 @@ phpBB Lead Developer: psoTFX (Paul S. Owen) [2001 - 09/2005]
phpBB Developers: Ashe (Ludovic Arnaud) [10/2002 - 11/2003, 06/2006 - 10/2006]
BartVB (Bart van Bragt) [11/2000 - 03/2006]
DavidMJ (David M.) [12/2005 - 08/2009]
GrahamJE (Graham Eames) [09/2005 - 11/2006]
Vic D'Elfant (Vic D'Elfant) [04/2007 - 04/2009]

View File

@@ -53,6 +53,8 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ol style="list-style-type: lower-roman;">
<li><a href="#v307-PL1">Changes since 3.0.7-PL1</a></li>
<li><a href="#v307">Changes since 3.0.7</a></li>
<li><a href="#v306">Changes since 3.0.6</a></li>
<li><a href="#v305">Changes since 3.0.5</a></li>
<li><a href="#v304">Changes since 3.0.4</a></li>
@@ -86,7 +88,460 @@
<div class="inner"><span class="corners-top"><span></span></span>
<div class="content">
<a name="v306"></a><h3>1.i. Changes since 3.0.6</h3>
<a name="v307-PL1"></a><h3>1.i. Changes since 3.0.7-PL1</h3>
<h4> Bug
</h4>
<ul>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-4923'>PHPBB3-4923</a>] - compress_tar incorrectly determines type
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-5164'>PHPBB3-5164</a>] - Honor minimum and maximum password length in generated passwords as much as possible.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-6726'>PHPBB3-6726</a>] - Connecting to PostgreSQL using &#39;localhost&#39; doesn&#39;t try to use a TCP connection
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-6747'>PHPBB3-6747</a>] - word censoring * does not handle space for two or more words
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7260'>PHPBB3-7260</a>] - Do not delete polls if one exists and editing user lacks permissions
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7296'>PHPBB3-7296</a>] - Style export to tar(.*) does not work
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7369'>PHPBB3-7369</a>] - Custom Profile dates display incorrectly
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7417'>PHPBB3-7417</a>] - Search keywords field does not initially get focus
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7538'>PHPBB3-7538</a>] - Query exceeds maximum value for user_login_attempts
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7716'>PHPBB3-7716</a>] - Data too long for column &#39;message_subject&#39;
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7720'>PHPBB3-7720</a>] - Fix alternative image-description for unread posts.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7782'>PHPBB3-7782</a>] - Send HTTP 404 if topic, forum or user do not exist
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7972'>PHPBB3-7972</a>] - Copied topics are not indexed
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8169'>PHPBB3-8169</a>] - Parse CSS Regex accepts invalid code
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8792'>PHPBB3-8792</a>] - Misleading error message in auth_ldap.php, function init_ldap()
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8894'>PHPBB3-8894</a>] - JavaScript error and visible quote button on topic review if BBCodes disallowed
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8924'>PHPBB3-8924</a>] - spelling in admin_welcome_inactive.txt
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8929'>PHPBB3-8929</a>] - MS SQL error on view all smilies after 3.0.6 upgrade
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8935'>PHPBB3-8935</a>] - able to set minimal avatar size larger than maximum
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8944'>PHPBB3-8944</a>] - Error on database update (must specify size of index on MySQL4)
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9012'>PHPBB3-9012</a>] - Retain original topic title in shadow topic when moving a topic and editing the title.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9034'>PHPBB3-9034</a>] - Redirect() fails with directory traversal
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9047'>PHPBB3-9047</a>] - Active topics and reported posts
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9049'>PHPBB3-9049</a>] - Password reminder system generates confusable passwords
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9053'>PHPBB3-9053</a>] - Correctly sort database backup file list by date on database restore page
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9061'>PHPBB3-9061</a>] - Race condition in queue locking
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9068'>PHPBB3-9068</a>] - Grammatical Error under Load Settings
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9075'>PHPBB3-9075</a>] - Missing / bad default values of CPFs result in SQL errors on registration of new users
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9091'>PHPBB3-9091</a>] - Wrong IP checking for IPv4 addresses mapped into IPv6
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9094'>PHPBB3-9094</a>] - Hide &quot;Copy permissions&quot; message, when permissions were copied.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9095'>PHPBB3-9095</a>] - Misleading setting text for CAPTCHA
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9099'>PHPBB3-9099</a>] - Missing comma in PASSWORD_EXPLAIN acp language strings
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9101'>PHPBB3-9101</a>] - Bad text placement for reCAPTCHA description
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9104'>PHPBB3-9104</a>] - Safari does not display box headers correctly in the ACP.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9107'>PHPBB3-9107</a>] - Can&#39;t Set Parent Forum
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9108'>PHPBB3-9108</a>] - RSS feeds does not work on Postgres
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9112'>PHPBB3-9112</a>] - Most active forum post count does not respect m_approve permission
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9114'>PHPBB3-9114</a>] - Recent bug fix for smilies causing problems on older MySQL versions
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9117'>PHPBB3-9117</a>] - Wrong redirection after login
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9119'>PHPBB3-9119</a>] - Language selection is disregarded in automatic update
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9120'>PHPBB3-9120</a>] - Typo fix in a comment in functions.php
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9121'>PHPBB3-9121</a>] - Forum feed shows posts that are currently on the moderation queue
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9125'>PHPBB3-9125</a>] - ACP User Overview: Unmatched &lt;/form&gt; tag when viewing own user
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9126'>PHPBB3-9126</a>] - Invalid redirection after login to forum not in web root
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9132'>PHPBB3-9132</a>] - Oracle CLOB support is broken, preventing storage of long strings
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9135'>PHPBB3-9135</a>] - Fix report-icon for moderators in PM folders.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9140'>PHPBB3-9140</a>] - Check current board version in incremental update packages
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9145'>PHPBB3-9145</a>] - Fix open_basedir issues when accessing styles- and language-management
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9146'>PHPBB3-9146</a>] - Quick-Reply tabindex=&quot;6&quot; set twice
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9147'>PHPBB3-9147</a>] - &quot;Change topic type&quot;-option &quot;Normal&quot; always selected.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9154'>PHPBB3-9154</a>] - Correctly check for double inclusion in captcha garbage collection
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9158'>PHPBB3-9158</a>] - viewforum/viewtopic pages unnecessarily duplicated with start=0
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9162'>PHPBB3-9162</a>] - BBCode in poll options is broken, when posting without question.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9167'>PHPBB3-9167</a>] - Remove shadow topics from remaining forums when deleting a forum including posts
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9170'>PHPBB3-9170</a>] - Unable to get image size in img bbcode when URL has multiple parameters.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9173'>PHPBB3-9173</a>] - sql_config_count() artificially limits number scope to 4byte-integer on PostgreSQL and Firebird
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9176'>PHPBB3-9176</a>] - When setting the board&#39;s date format the board&#39;s timezone settings aren&#39;t taken into account
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9451'>PHPBB3-9451</a>] - Unnecessary overhead in avatar_process_user function
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9478'>PHPBB3-9478</a>] - Validate maximum number of allowed recipients per PM value
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9495'>PHPBB3-9495</a>] - Loginbox &lt;input /&gt; redirect breaks xHTML
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9499'>PHPBB3-9499</a>] - Javascript function dE does not correctly detect element visibility
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9504'>PHPBB3-9504</a>] - Allow gallery avatars with whitespaces in the filename
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9509'>PHPBB3-9509</a>] - phpBB Coding Guidelines state subversion as the version control system for phpBB
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9510'>PHPBB3-9510</a>] - Unable to copy permissions from and to forums you cannot see
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9512'>PHPBB3-9512</a>] - Fix dead link in MCP on reports for global announcements in prosilver.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9514'>PHPBB3-9514</a>] - Correctly delete big datasets when deleting a forum including topics/posts on non-MySQL databases
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9518'>PHPBB3-9518</a>] - Postgres DBAL does not correctly create a new database connection when passing $new_link as true
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9519'>PHPBB3-9519</a>] - Replace remaining is_writable() calls with phpbb_is_writable().
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9521'>PHPBB3-9521</a>] - MSSQL error reporting returns String instead of an error
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9524'>PHPBB3-9524</a>] - IPv6 regular expression does not match addresses starting in ::
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9526'>PHPBB3-9526</a>] - User Preference to hide online status does not work for bots
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9528'>PHPBB3-9528</a>] - Quoting in a PM does not fall back to bbcode-less quotes using &quot;&gt; &quot; when bbcodes are disabled
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9529'>PHPBB3-9529</a>] - Topic review does not display all selected posts
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9530'>PHPBB3-9530</a>] - subsilver2 missing fallback option on quoting when bbcodes are disabled
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9531'>PHPBB3-9531</a>] - BBCode-less fall back option for quotes is missing &quot;Author wrote:&quot; line when quoting from topic-review.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9535'>PHPBB3-9535</a>] - Incorrect margins in RTL languages: signatures, permission ACP &amp; updater
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9545'>PHPBB3-9545</a>] - &#39;Your first forum&#39; should have &#39;Display active topics:&#39; set to &#39;Yes&#39;
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9546'>PHPBB3-9546</a>] - Moving all posts from one topic to another does not delete bookmarks
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9547'>PHPBB3-9547</a>] - Changing forum type applies FORUM_FLAG_ACTIVE_TOPICS to new forum type.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9548'>PHPBB3-9548</a>] - Delete user quicktool drop down should have an empty or invalid selection as the default
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9559'>PHPBB3-9559</a>] - Messenger Queue Batch Size configuration option is overridden
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9567'>PHPBB3-9567</a>] - Newly registered users group ACP wording
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9582'>PHPBB3-9582</a>] - Missing MSSQL native driver case statements
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9587'>PHPBB3-9587</a>] - Prosilver overrides reCaptcha class.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9592'>PHPBB3-9592</a>] - Test suite does not run on SQLite
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9593'>PHPBB3-9593</a>] - Missing documentation for running unit tests
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9599'>PHPBB3-9599</a>] - Windows workaround for checkdnsrr() returns wrong results
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9605'>PHPBB3-9605</a>] - Wrong class added to topiclist, when there&#39;s no announcement topic.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9615'>PHPBB3-9615</a>] - When attaching a file whose name contains quotes, filename before last quote is cut off in display
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9623'>PHPBB3-9623</a>] - Strings not properly normalized - acp_prune.php
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9626'>PHPBB3-9626</a>] - Regular expressions from get_preg_expression() are untested.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9628'>PHPBB3-9628</a>] - Add module function does not correctly insert a module after the specified one
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9633'>PHPBB3-9633</a>] - Newly registered users group color is not used in Our Newest Member
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9635'>PHPBB3-9635</a>] - Useless parameter $data[&#39;post_time&#39;] in function submit_post.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9637'>PHPBB3-9637</a>] - SET NAMES &#39;BINARY&#39; error in convertor
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9643'>PHPBB3-9643</a>] - DB connection error when $dbhost is an IPv6 address
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9644'>PHPBB3-9644</a>] - submit_post shows support for options that cause a trigger_error in the call to user_notification
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9646'>PHPBB3-9646</a>] - Cant hide/outcomment @import in stylesheet.css
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9650'>PHPBB3-9650</a>] - It should not be possible to ban Anonymous
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9653'>PHPBB3-9653</a>] - xhtml errors in subsilver2 when using the bbcodes code and quote in signatures
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9655'>PHPBB3-9655</a>] - Selecting an unavailable captcha plugin looks like a successful action
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9656'>PHPBB3-9656</a>] - PHP Information in ACP always lists error_reporting as 0
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9658'>PHPBB3-9658</a>] - Optimize topic splitting
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9662'>PHPBB3-9662</a>] - Search interval applied inconsistently
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9664'>PHPBB3-9664</a>] - Another duplicate accesskey: t = top and list item
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9665'>PHPBB3-9665</a>] - Signature &quot;0&quot; cannot be previewed
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9677'>PHPBB3-9677</a>] - Subsilver2 is missing the bbcode-helpline for inline-attachments.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9678'>PHPBB3-9678</a>] - Flash attachments are not displayed in subsilver2.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9679'>PHPBB3-9679</a>] - &quot;Notify User&quot; checkbox appears in MCP Queue even if no notification methods are enabled
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9686'>PHPBB3-9686</a>] - Unable to create data backup using the mssqlnative DBAL
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9694'>PHPBB3-9694</a>] - Calling download/file.php with empty avatar parameter can throw an E_NOTICE message
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9695'>PHPBB3-9695</a>] - Bad Display of User Input - mcp_ban
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9696'>PHPBB3-9696</a>] - Installation of phpBB with SQLite fails
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9697'>PHPBB3-9697</a>] - Backlink broken when the select parent forum does not exist.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9698'>PHPBB3-9698</a>] - Returning result of new by reference is deprecated in php 5.3
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9702'>PHPBB3-9702</a>] - &quot;Ban until (date)&quot; appears to be based on UTC time instead of local time
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9703'>PHPBB3-9703</a>] - Removing a user does not remove their private message folders or rules
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9704'>PHPBB3-9704</a>] - Coding guidelines typo
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9712'>PHPBB3-9712</a>] - Future dates display as &quot;less than one minute ago&quot;
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9714'>PHPBB3-9714</a>] - &quot;Undefined variable: email&quot; in email regular expression unit tests
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9715'>PHPBB3-9715</a>] - Fix email address regular expression or adjust email regular expression unit tests
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9722'>PHPBB3-9722</a>] - &quot;New Topic&quot; button title attribute mismatch in prosilver&#39;s viewforum
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9727'>PHPBB3-9727</a>] - Feed replaces ./ with board URL
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9743'>PHPBB3-9743</a>] - Fix background-position of top2-class in prosilver for RTL-languages.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9744'>PHPBB3-9744</a>] - Mistyped word &#39;then&#39; in FAQ. It should be &#39;than&#39;.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9748'>PHPBB3-9748</a>] - &lt;br /&gt; not being replaced in prepare_message
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9749'>PHPBB3-9749</a>] - fulltext_mysql.php overreacts on + and - characters in search words
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9752'>PHPBB3-9752</a>] - Misleading text when using Q&amp;A CAPTCHA
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9754'>PHPBB3-9754</a>] - Template variable S_USER_POSTED always set to false in search.php
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9757'>PHPBB3-9757</a>] - Empty template variable HISTORY_TITLE in ucp_pm_history
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9760'>PHPBB3-9760</a>] - Fulltext native search, wildcard * does not get escaped leading to long execution time
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9761'>PHPBB3-9761</a>] - Quote nesting depth explanation is misleading
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9771'>PHPBB3-9771</a>] - build_url() doesn&#39;t ignore empty parameters
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9772'>PHPBB3-9772</a>] - Under some circumstances, email addresses are shown to undesired users
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9780'>PHPBB3-9780</a>] - gen_rand_string() not respecting $num_chars parameter anymore.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9782'>PHPBB3-9782</a>] - Board disable radio in Board-Settings set on when server load high
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9793'>PHPBB3-9793</a>] - Undefined function send_status_line() in download/file.php when in avatar mode.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9807'>PHPBB3-9807</a>] - Avatar tab displays when avatars are disabled
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9810'>PHPBB3-9810</a>] - Clicking on &quot;Select All&quot; of code tag on print page results in a javascript error when using prosilver
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9820'>PHPBB3-9820</a>] - Fix undefined indexes when trying to post a new topic
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9822'>PHPBB3-9822</a>] - Can not delete style-components from the file-system as per explanation.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9829'>PHPBB3-9829</a>] - Recaptcha plugin result interpretation fault
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9835'>PHPBB3-9835</a>] - Login Confirm Explain Not Working
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9840'>PHPBB3-9840</a>] - Display view unread posts link for guests
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9841'>PHPBB3-9841</a>] - Change &quot;Save&quot; button to &quot;Save draft&quot;
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9847'>PHPBB3-9847</a>] - Language typo and written form (British/American)
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9854'>PHPBB3-9854</a>] - Auth API documentation is incomplete
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9855'>PHPBB3-9855</a>] - Tests don&#39;t run on PHPUnit 3.5
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9879'>PHPBB3-9879</a>] - captcha_qa.php spelling, punctuation and grammar errors
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9883'>PHPBB3-9883</a>] - CAPTCHA uses american english
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9884'>PHPBB3-9884</a>] - Massive email delays
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9885'>PHPBB3-9885</a>] - Default file extension groups not properly updated by database updater.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9886'>PHPBB3-9886</a>] - Database updater does not run on PostgreSQL because of an error in _add_module()
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9888'>PHPBB3-9888</a>] - Update fails when Bing [Bot] was already added to the users table
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9891'>PHPBB3-9891</a>] - Updater drops language-selection after database-update
</li>
</ul>
<h4> Improvement
</h4>
<ul>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7332'>PHPBB3-7332</a>] - MCP post details usability
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-7717'>PHPBB3-7717</a>] - Use user&#39;s language for standard-extensions-group name
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8709'>PHPBB3-8709</a>] - Multibyte keys in request_var not possible
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-8936'>PHPBB3-8936</a>] - subsilver2 missing reply-to-all feature
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9088'>PHPBB3-9088</a>] - Add missing semicolons in js files
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9179'>PHPBB3-9179</a>] - improve quasi-documentation of notify_status values
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9503'>PHPBB3-9503</a>] - Posts with empty titles in moderation queue are not easily approved
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9534'>PHPBB3-9534</a>] - user_ipwhois() does not support IPv6 addresses
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9536'>PHPBB3-9536</a>] - Small improvement for query against sessions table in acp_users.php
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9553'>PHPBB3-9553</a>] - Make git hooks run with /bin/sh instead of bash
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9570'>PHPBB3-9570</a>] - Change &quot;system timezone&quot; to &quot;guest timezone&quot; in acp, add explanation
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9578'>PHPBB3-9578</a>] - ACP Posting tab is missing &quot;Post settings&quot; module.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9589'>PHPBB3-9589</a>] - Sample nginx configuration file
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9595'>PHPBB3-9595</a>] - Search settings in ACP: Add information on minimum word size indexed when using Fulltext MySQL backend
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9598'>PHPBB3-9598</a>] - Call checkdnsrr() on Windows with PHP 5.3
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9609'>PHPBB3-9609</a>] - Use send_status_line instead of calling header
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9611'>PHPBB3-9611</a>] - Increase entropy in activation keys
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9612'>PHPBB3-9612</a>] - Split gen_rand_string() into gen_rand_string() and gen_rand_string_friendly()
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9629'>PHPBB3-9629</a>] - sid parameter forced for style.php makes caching difficult
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9659'>PHPBB3-9659</a>] - Default phpBB signature user_options need to be set for convertors
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9690'>PHPBB3-9690</a>] - MSN Bot will become Bing Bot
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9777'>PHPBB3-9777</a>] - Print useful error message in pre-commit hook when php is not installed.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9785'>PHPBB3-9785</a>] - Not able to recover a password when board disabled
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9825'>PHPBB3-9825</a>] - Run tests on sqlite if available and no test db configured
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9827'>PHPBB3-9827</a>] - IE9 Beta fixes IE8 textarea bug
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9830'>PHPBB3-9830</a>] - Awkward message when config.php is missing
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9850'>PHPBB3-9850</a>] - Allow version checker to display information on multiple releases
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9853'>PHPBB3-9853</a>] - Change default reCAPTCHA theme in Prosilver &amp; Subsilver2 to better coordinate with style color scheme
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9880'>PHPBB3-9880</a>] - Rename all mentions of CAPTCHA or visual confirmation to anti-bot
</li>
</ul>
<h4> New Feature
</h4>
<ul>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9039'>PHPBB3-9039</a>] - Native SQL Server Support mssqlnative.php
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9511'>PHPBB3-9511</a>] - View note for moderators on unapproved posts/topics with unapproved posts in ATOM Feed.
</li>
</ul>
<h4> Task
</h4>
<ul>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9520'>PHPBB3-9520</a>] - Add web.config files for IIS
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9625'>PHPBB3-9625</a>] - Update database UNIT-test
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9701'>PHPBB3-9701</a>] - Enable notices in unit tests
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9768'>PHPBB3-9768</a>] - Create git commit-msg hook that verifies the commit message conforms to our standards
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9769'>PHPBB3-9769</a>] - Add install and uninstall scripts for the git hooks
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9770'>PHPBB3-9770</a>] - Git commit message should be prefilled with branch and ticket information
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9800'>PHPBB3-9800</a>] - Update tracker URL in docs/README.html
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9804'>PHPBB3-9804</a>] - Update docs/AUTHORS (DavidMJ &amp; igorw)
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9808'>PHPBB3-9808</a>] - Git commit message hook depends on GNU wc
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9816'>PHPBB3-9816</a>] - Remove config.php from git repository
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9848'>PHPBB3-9848</a>] - Add phpBB data files to .gitignore.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9849'>PHPBB3-9849</a>] - Create build script using phing
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9857'>PHPBB3-9857</a>] - Remove visible $Id$ from docs files.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9868'>PHPBB3-9868</a>] - Make the test suite run and pass using the mssqlnative driver
</li>
</ul>
<h4> Sub-task
</h4>
<ul>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9517'>PHPBB3-9517</a>] - Remote avatar upload does not check the filesize before and during transfer.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9562'>PHPBB3-9562</a>] - Advanced Search is inaccessible using the mssqlnative DBAL
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9564'>PHPBB3-9564</a>] - Reported messages are not assigned the default report reason when a reason is removed from the ACP using the mssqlnative DBAL
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9565'>PHPBB3-9565</a>] - It is impossible to create a custom profile field using the mssqlnative DBAL
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9566'>PHPBB3-9566</a>] - Two debug notices are displayed when setting a custom profile field though the UCP using the mssqlnative DBAL
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9583'>PHPBB3-9583</a>] - MSSQL native backups cannot be restored
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9606'>PHPBB3-9606</a>] - Drop redundant SQL query for unreads fetching
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9613'>PHPBB3-9613</a>] - Implement a load switch for unreads search feature.
</li>
<li>[<a href='http://tracker.phpbb.com/browse/PHPBB3-9817'>PHPBB3-9817</a>] - Make build script create blank config.php
</li>
</ul>
<a name="v307"></a><h3>1.ii. Changes since 3.0.7</h3>
<ul>
<li>[Sec] Do not expose forum content of forums with ACL entries but no actual permission in ATOM Feeds. (Bug #58595)</li>
</ul>
<a name="v306"></a><h3>1.iii. Changes since 3.0.6</h3>
<ul>
<li>[Fix] Allow ban reason and length to be selected and copied in ACP and subsilver2 MCP. (Bug #51095)</li>
@@ -190,7 +645,7 @@
</ul>
<a name="v305"></a><h3>1.ii. Changes since 3.0.5</h3>
<a name="v305"></a><h3>1.iv. Changes since 3.0.5</h3>
<ul>
<li>[Fix] Allow whitespaces in avatar gallery names. (Bug #44955)</li>
@@ -412,7 +867,7 @@
<li>[Feature] Send anonymous statistical information to phpBB on installation and update (optional).</li>
</ul>
<a name="v304"></a><h3>1.iii. Changes since 3.0.4</h3>
<a name="v304"></a><h3>1.v. Changes since 3.0.4</h3>
<ul>
<li>[Fix] Delete user entry from ban list table upon user deletion (Bug #40015 - Patch by TerraFrost)</li>
@@ -501,7 +956,7 @@
<li>[Sec] Only use forum id supplied for posting if global announcement detected. (Reported by nickvergessen)</li>
</ul>
<a name="v303"></a><h3>1.iv. Changes since 3.0.3</h3>
<a name="v303"></a><h3>1.vi. Changes since 3.0.3</h3>
<ul>
<li>[Fix] Allow mixed-case template directories to be inherited (Bug #36725)</li>
@@ -533,7 +988,7 @@
<li>[Sec] Ask for forum password if post within passworded forum quoted in private message. (Reported by nickvergessen)</li>
</ul>
<a name="v302"></a><h3>1.v. Changes since 3.0.2</h3>
<a name="v302"></a><h3>1.vii. Changes since 3.0.2</h3>
<ul>
<li>[Fix] Correctly set topic starter if first post in topic removed (Bug #30575 - Patch by blueray2048)</li>
@@ -632,7 +1087,7 @@
<li>[Sec Precaution] Stricter validation of the HTTP_HOST header (Thanks to Techie-Micheal et al for pointing out possible issues in derived code)</li>
</ul>
<a name="v301"></a><h3>1.vi. Changes since 3.0.1</h3>
<a name="v301"></a><h3>1.viii. Changes since 3.0.1</h3>
<ul>
<li>[Fix] Ability to set permissions on non-mysql dbms (Bug #24955)</li>
@@ -680,7 +1135,7 @@
<li>[Sec] Only allow urls gone through redirect() being used within login_box(). (thanks nookieman)</li>
</ul>
<a name="v300"></a><h3>1.vii Changes since 3.0.0</h3>
<a name="v300"></a><h3>1.ix Changes since 3.0.0</h3>
<ul>
<li>[Change] Validate birthdays (Bug #15004)</li>
@@ -751,7 +1206,7 @@
<li>[Fix] Find and display colliding usernames correctly when converting from one database to another (Bug #23925)</li>
</ul>
<a name="v30rc8"></a><h3>1.viii. Changes since 3.0.RC8</h3>
<a name="v30rc8"></a><h3>1.x. Changes since 3.0.RC8</h3>
<ul>
<li>[Fix] Cleaned usernames contain only single spaces, so &quot;a_name&quot; and &quot;a__name&quot; are treated as the same name (Bug #15634)</li>
@@ -760,7 +1215,7 @@
<li>[Fix] Call garbage_collection() within database updater to correctly close connections (affects Oracle for example)</li>
</ul>
<a name="v30rc7"></a><h3>1.ix. Changes since 3.0.RC7</h3>
<a name="v30rc7"></a><h3>1.xi. Changes since 3.0.RC7</h3>
<ul>
<li>[Fix] Fixed MSSQL related bug in the update system</li>
@@ -795,7 +1250,7 @@
<li>[Fix] No duplication of active topics (Bug #15474)</li>
</ul>
<a name="v30rc6"></a><h3>1.x. Changes since 3.0.RC6</h3>
<a name="v30rc6"></a><h3>1.xii. Changes since 3.0.RC6</h3>
<ul>
<li>[Fix] Submitting language changes using acp_language (Bug #14736)</li>
@@ -805,7 +1260,7 @@
<li>[Fix] Able to request new password (Bug #14743)</li>
</ul>
<a name="v30rc5"></a><h3>1.xi. Changes since 3.0.RC5</h3>
<a name="v30rc5"></a><h3>1.xiii. Changes since 3.0.RC5</h3>
<ul>
<li>[Feature] Removing constant PHPBB_EMBEDDED in favor of using an exit_handler(); the constant was meant to achive this more or less.</li>
@@ -868,7 +1323,7 @@
<li>[Sec] New password hashing mechanism for storing passwords (#i42)</li>
</ul>
<a name="v30rc4"></a><h3>1.xii. Changes since 3.0.RC4</h3>
<a name="v30rc4"></a><h3>1.xiv. Changes since 3.0.RC4</h3>
<ul>
<li>[Fix] MySQL, PostgreSQL and SQLite related database fixes (Bug #13862)</li>
@@ -919,7 +1374,7 @@
<li>[Fix] odbc_autocommit causing existing result sets to be dropped (Bug #14182)</li>
</ul>
<a name="v30rc3"></a><h3>1.xiii. Changes since 3.0.RC3</h3>
<a name="v30rc3"></a><h3>1.xv. Changes since 3.0.RC3</h3>
<ul>
<li>[Fix] Fixing some subsilver2 and prosilver style issues</li>
@@ -1028,7 +1483,7 @@
</ul>
<a name="v30rc2"></a><h3>1.xiv. Changes since 3.0.RC2</h3>
<a name="v30rc2"></a><h3>1.xvi. Changes since 3.0.RC2</h3>
<ul>
<li>[Fix] Re-allow searching within the memberlist</li>
@@ -1074,7 +1529,7 @@
</ul>
<a name="v30rc1"></a><h3>1.xv. Changes since 3.0.RC1</h3>
<a name="v30rc1"></a><h3>1.xvii. Changes since 3.0.RC1</h3>
<ul>
<li>[Fix] (X)HTML issues within the templates (Bug #11255, #11255)</li>

View File

@@ -273,7 +273,7 @@
<p>This package is meant for those wanting to only replace changed files from a previous version to the latest version. This package normally contains the changed files from up to five previous versions.</p>
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <samp>3.0.6</samp> you should select the phpBB-3.0.6_to_3.0.7.zip/tar.gz file.</p>
<p>This package contains a number of archives, each contains the files changed from a given release to the latest version. You should select the appropriate archive for your current version, e.g. if you currently have <samp>3.0.7-PL1</samp> you should select the phpBB-3.0.7-PL1_to_3.0.8.zip/tar.gz file.</p>
<p>The directory structure has been preserved enabling you (if you wish) to simply upload the contents of the archive to the appropriate location on your server, i.e. simply overwrite the existing files with the new versions. Do not forget that if you have installed any MODs these files will overwrite the originals possibly destroying them in the process. You will need to re-add MODs to any affected file before uploading.</p>
@@ -285,7 +285,7 @@
<p>The patch file is one solution for those with many Modifications (MODs) or other changes who do not want to re-add them back to all the changed files if they use the method explained above. To use this you will need command line access to a standard UNIX type <strong>patch</strong> application. If you do not have access to such an application but still want to use this update approach, we strongly recommend the <a href="#update_auto">Automatic update package</a> explained below. It is also the recommended update method.</p>
<p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is 3.0.5 you need the phpBB-3.0.6_to_3.0.7.patch file. Place the correct patch in the parent directory containing the phpBB3 core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <strong>patch -cl -d [PHPBB DIRECTORY] -p1 &lt; [PATCH NAME]</strong> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB3, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
<p>A number of patch files are provided to allow you to update from previous stable releases. Select the correct patch, e.g. if your current version is 3.0.5 you need the phpBB-3.0.7-PL1_to_3.0.8.patch file. Place the correct patch in the parent directory containing the phpBB3 core files (i.e. index.php, viewforum.php, etc.). With this done you should run the following command: <strong>patch -cl -d [PHPBB DIRECTORY] -p1 &lt; [PATCH NAME]</strong> (where PHPBB DIRECTORY is the directory name your phpBB Installation resides in, for example phpBB3, and where PATCH NAME is the relevant filename of the selected patch file). This should complete quickly, hopefully without any HUNK FAILED comments.</p>
<p>If you do get failures you should look at using the <a href="#update_files">Changed files only</a> package to replace the files which failed to patch, please note that you will need to manually re-add any Modifications (MODs) to these particular files. Alternatively if you know how you can examine the .rej files to determine what failed where and make manual adjustments to the relevant source.</p>

View File

@@ -242,7 +242,7 @@
<p>The phpBB Group uses a bug tracking system to store, list and manage all reported bugs, it can be found at the location listed below. Please <strong>DO NOT</strong> post bug reports to our forums, they will be locked. In addition please <strong>DO NOT</strong> use the bug tracker for support requests. Posting such a request will only see you directed to the support forums (while taking time away from working on real bugs).</p>
<p><a href="http://www.phpbb.com/bugs/">http://www.phpbb.com/bugs/</a></p>
<p><a href="http://tracker.phpbb.com/">http://tracker.phpbb.com/</a></p>
<p>While we very much appreciate receiving bug reports (the more reports the more stable phpBB will be) we ask you carry out a few steps before adding new entries:</p>

View File

@@ -61,6 +61,9 @@
<li><a href="#acl_getf">acl_getf</a></li>
<li><a href="#acl_getf_global">acl_getf_global</a></li>
<li><a href="#acl_cache">acl_cache</a></li>
<li><a href="#acl_clear_prefetch">acl_clear_prefetch</a></li>
<li><a href="#acl_get_list">acl_get_list</a></li>
<li><a href="#misc">Miscellaneous</a></li>
</ol>
</li>
<li><a href="#admin_related">Admin related functions</a></li>
@@ -176,7 +179,7 @@ array(<em>forum_id1</em> =&gt; array(<em>option</em> =&gt; <em>integer</em>), <e
<p>This method is used to find out whether a user has a permission in at least one forum or globally. This method is similar to checking whether <code>acl_getf(option, true)</code> returned one or more forums but it's faster. It should be called in the following way:</p>
<div class="codebox"><pre>
$result = acl_getf_global(<code>option</code>)
$result = $auth-&gt;acl_getf_global(<code>option</code>)
</pre></div>
<p>As with the previous methods option is a string specifying the permission which has to be checked.</p>
@@ -187,6 +190,49 @@ $result = acl_getf_global(<code>option</code>)
<p>This should be considered a private method and not be called externally. It handles the generation of the user_permissions data from the basic user and group authorisation data. When necessary this method is called automatically by <code>acl</code>.</p>
<a name="acl_clear_prefetch"></a><h3>2.vii. acl_clear_prefetch</h3>
<p>This method clears the user_permissions column in the users table for the given user. If the user ID passed is zero, the permissions cache is cleared for all users. This method should be called whenever permissions are set.</p>
<div class="codebox"><pre>
// clear stored permissions for user 2
$user_id = 2;
$auth->acl_clear_prefetch($user_id);
</pre></div>
<p>This method returns void.</p>
<a name="acl_get_list"></a><h3>2.viii. acl_get_list</h3>
<p>This method returns an an array describing which users have permissions in given fora. The resultant array contains an entry for permission that every user has in every forum when no arguments are passed.</p>
<div class="codebox"><pre>
$user_id = array(2, 53);
$permissions = array('f_list', 'f_read');
$forum_id = array(1, 2, 3);
$result = $auth-&gt;acl_get_list($user_id, $permissions, $forum_id);
</pre></div>
<p>The parameters may be of the following legal types:</p>
<ul>
<li><strong>$user_id</strong>: <code>false</code>, int, array(int, int, int, ...)</li>
<li><strong>$permissions</strong>: <code>false</code>, string, array(string, string, ...)</li>
<li><strong>$forum_id</strong>: <code>false</code>, int, array(int, int, int, ...)</li>
</ul>
<a name="misc"></a><h3>2.ix. Miscellaneous</h3>
<p>There are other methods defined in the auth class which serve mostly as private methods, but are available for use if needed. Each of them is used to pull data directly from the database tables. They are:</p>
<ul>
<li><pre>function acl_group_raw_data($group_id = false, $opts = false, $forum_id = false)</pre></li>
<li><pre>function acl_user_raw_data($user_id = false, $opts = false, $forum_id = false)</pre></li>
<li><pre>function acl_raw_data_single_user($user_id)</pre></li>
<li><pre>function acl_raw_data($user_id = false, $opts = false, $forum_id = false)</pre></li>
<li><pre>function acl_role_data($user_type, $role_type, $ug_id = false, $forum_id = false)</pre></li>
</ul>
<p>Of these, <code>acl_raw_data</code> is the most general, but the others will be faster if you need a smaller amount of data.</p>
</div>
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
@@ -241,7 +287,7 @@ $auth_admin = new auth_admin();
<!-- END DOCUMENT -->
<div id="page-footer">
<div class="version"> $Id$ </div>
<div class="version">&nbsp;</div>
</div>
</div></div>

View File

@@ -90,10 +90,9 @@
<li><a href="#vcs">VCS Guidelines</a>
<ol style="list-style-type: lower-roman;">
<li><a href="#repostruct">Repository structure</a></li>
<li><a href="#commitmessage">Commit messages</a></li>
<li><a href="#commitmessage">Commit Messages and Repository Rules</a></li>
</ol>
</li>
<li><a href="#changes">Guidelines Changelog</a></li>
<li><a href="#disclaimer">Copyright and disclaimer</a></li>
</ol>
@@ -288,7 +287,7 @@ PHPBB_QA (Set board to QA-Mode, which means the updater also c
<div class="content">
<p>Please note that these Guidelines applies to all php, html, javascript and css files.</p>
<p>Please note that these guidelines apply to all php, html, javascript and css files.</p>
<a name="namingvars"></a><h3>2.i. Variable/Function Naming</h3>
@@ -2326,126 +2325,33 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
<div class="content">
<p>The version control system for phpBB3 is subversion. The repository is available at <a href="http://code.phpbb.com/svn/phpbb" title="repository">http://code.phpbb.com/svn/phpbb</a>.</p>
<p>The version control system for phpBB3 is git. The repository is available at <a href="http://github.com/phpbb/phpbb3" title="repository">http://github.com/phpbb/phpbb3</a>.</p>
<a name="repostruct"></a><h3>7.i. Repository Structure</h3>
<ul>
<li><strong>trunk</strong><br />The latest unstable development version with new features etc. Contains the actual board in <code>/trunk/phpBB</code></li>
<li><strong>branches</strong><br />Development branches of stable phpBB releases. Copied from <code>/trunk</code> at the time of release.
<li><strong>develop</strong><br />The latest unstable development version with new features etc.</li>
<li><strong>develop-*</strong><br />Development branches of stable phpBB releases. Branched off of <code>develop</code> at the time of feature freeze.
<ul>
<li><strong>phpBB3.0</strong><code>/branches/phpBB-3_0_0/phpBB</code><br />Development branch of the stable 3.0 line. Bug fixes are applied here.</li>
<li><strong>phpBB2</strong><code>/branches/phpBB-2_0_0/phpBB</code><br />Old phpBB2 development branch.</li>
<li><strong>phpBB3.0</strong><code>develop-olympus</code><br />Development branch of the stable 3.0 line. Bug fixes are applied here.</li>
<li><strong>phpBB3.1</strong><code>develop-ascraeus</code><br />Development branch of the stable 3.1 line. Bug fixes are applied here.</li>
</ul>
</li>
<li><strong>tags</strong><br />Released versions. Copies of trunk or the respective branch, made at the time of release.
<li><strong>master</strong><br />A branch containing all stable phpBB3 release points</li>
<li><strong>tags</strong><br />Released versions. Stable ones get merged into the master branch.
<ul>
<li><code>/tags/release_3_0_BX</code><br />Beta release X of the 3.0 line.</li>
<li><code>/tags/release_3_0_RCX</code><br />Release candidate X of the 3.0 line.</li>
<li><code>/tags/release_3_0_X-RCY</code><br />Release candidate Y of the stable 3.0.X release.</li>
<li><code>/tags/release_3_0_X</code><br />Stable <strong>3.0.X</strong> release.</li>
<li><code>/tags/release_2_0_X</code><br />Old stable 2.0.X release.</li>
<li><code>release-3.Y-BX</code><br />Beta release X of the 3.Y line.</li>
<li><code>release-3.Y-RCX</code><br />Release candidate X of the 3.Y line.</li>
<li><code>release-3.Y.Z-RCX</code><br />Release candidate X of the stable 3.Y.Z release.</li>
<li><code>release-3.0.X</code><br />Stable <strong>3.0.X</strong> release.</li>
<li><code>release-2.0.X</code><br />Old stable 2.0.X release.</li>
</ul>
</li>
</ul>
<a name="commitmessage"></a><h3>7.ii. Commit Messages</h3>
<p>The commit message should contain a brief explanation of all changes made within the commit. Often identical to the changelog entry. A bug ticket can be referenced by specifying the ticket ID with a hash, e.g. #12345. A reference to another revision should simply be prefixed with r, e.g. r12345.</p>
<p>Junior Developers need to have their patches approved by a development team member first. The commit message must end in a line with the following format:</p>
<div class="codebox"><pre>
Authorised by: developer1[, developer2[, ...]]
</pre></div>
</div>
<div class="back2top"><a href="#wrap" class="top">Back to Top</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr />
<a name="changes"></a><h2>8. Guidelines Changelog</h2>
<div class="paragraph">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="content">
<h3>Revision 10007</h3>
<ul>
<li>Added <a href="#constants">Special Constants</a> section.</li>
</ul>
<h3>Revision 9817</h3>
<ul>
<li>Added VCS section.</li>
</ul>
<h3>Revision 8732</h3>
<ul>
<li>Added cfg files.</li>
<li>Added template <a href="#inheritance">inheritance</a>.</li>
</ul>
<h3>Revision 8596+</h3>
<ul>
<li>Removed sql_build_array('MULTI_INSERT'... statements.</li>
<li>Added sql_multi_insert() explanation.</li>
</ul>
<h3>Revision 1.31</h3>
<ul>
<li>Added add_form_key and check_form_key. </li>
</ul>
<h3>Revision 1.24</h3>
<ul>
<li>Added <a href="#translation">5. Character Sets and Encodings</a> section to explain the recommended treatment of strings in phpBB.</li>
</ul>
<h3>Revision 1.16</h3>
<ul>
<li>Added <a href="#translation">6. Translation (<abbr title="Internationalisation">i18n</abbr>/<abbr title="Localisation">L10n</abbr>) Guidelines</a> section to explain expected format and authoring considerations for language packs that are to be created for phpBB.</li>
</ul>
<h3>Revision 1.11-1.15</h3>
<ul>
<li>Various document formatting, spelling, punctuation, grammar bugs.</li>
</ul>
<h3>Revision 1.9-1.10</h3>
<ul>
<li>Added sql_query_limit to <a href="#sql">2.iii. SQL/SQL Layout</a>.</li>
</ul>
<h3>Revision 1.8</h3>
<ul>
<li>Some adjustements to wordings</li>
<li>Updated paragraph <a href="#locations">1.iii. File Locations</a> to reflect recent changes</li>
<li>Extended paragraph <a href="#codelayout">2.ii. Code Layout</a>.</li>
<li>Added sql_in_set and sql_build_query explanation to <a href="#sql">2.iii. SQL/SQL Layout</a>.</li>
<li>Updated paragraph <a href="#styling">3. Styling</a>.</li>
<li>Updated paragraph <a href="#templating">4. Templating</a> to explain loop checking, loop breaking and other changes we recently made.</li>
</ul>
<h3>Revision 1.5</h3>
<ul>
<li>Changed General function usage paragraph in <a href="#general">2.v. General Guidelines</a></li>
</ul>
<a name="commitmessage"></a><h3>7.ii. Commit Messages and Reposiory Rules</h3>
<p>Information on repository rules, such as commit messages can be found at <a href="http://wiki.phpbb.com/display/DEV/Git" title="phpBB Git Information">http://wiki.phpbb.com/display/DEV/Git</a></p>.
</div>
@@ -2475,7 +2381,7 @@ Authorised by: developer1[, developer2[, ...]]
<!-- END DOCUMENT -->
<div id="page-footer">
<div class="version"> $Id$ </div>
<div class="version">&nbsp;</div>
</div>
</div></div>

View File

@@ -875,7 +875,7 @@ function phpbb_hook_register(&amp;$hook)
</div>
<div id="page-footer">
<div class="version">$Id$</div>
<div class="version">&nbsp;</div>
</div>
</div></div>

View File

@@ -0,0 +1,70 @@
# Sample nginx configuration file for phpBB.
# Global settings have been removed, copy them
# from your system's nginx.conf.
# Tested with nginx 0.8.35.
http {
# Compression - requires gzip and gzip static modules.
gzip on;
gzip_static on;
gzip_vary on;
gzip_http_version 1.1;
gzip_min_length 700;
gzip_comp_level 6;
gzip_disable "MSIE [1-6]\.";
# Catch-all server for requests to invalid hosts.
# Also catches vulnerability scanners probing IP addresses.
# Should be first.
server {
listen 80;
server_name bogus;
return 444;
root /var/empty;
}
# If you have domains with and without www prefix,
# redirect one to the other.
server {
listen 80;
server_name myforums.com;
rewrite ^(.*)$ http://www.myforums.com$1 permanent;
}
# The actual board domain.
server {
listen 80;
server_name www.myforums.com;
root /path/to/phpbb;
location / {
# phpbb uses index.htm
index index.php index.html index.htm;
}
# Deny access to internal phpbb files.
location ~ /(config\.php|common\.php|includes|cache|files|store|images/avatars/upload) {
deny all;
}
# Pass the php scripts to fastcgi server specified in upstream declaration.
location ~ \.php$ {
fastcgi_pass php;
# Necessary for php.
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Unmodified fastcgi_params from nginx distribution.
include fastcgi_params;
}
# Deny access to version control system directories.
location ~ /\.svn|/\.git {
deny all;
}
}
# If running php as fastcgi, specify php upstream.
upstream php {
server unix:/tmp/php.sock;
}
}

View File

@@ -31,6 +31,12 @@ else if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'
if (isset($_GET['avatar']))
{
if (!defined('E_DEPRECATED'))
{
define('E_DEPRECATED', 8192);
}
error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
require($phpbb_root_path . 'config.' . $phpEx);
if (!defined('PHPBB_INSTALLED') || empty($dbms) || empty($acm_type))
@@ -42,6 +48,7 @@ if (isset($_GET['avatar']))
require($phpbb_root_path . 'includes/cache.' . $phpEx);
require($phpbb_root_path . 'includes/db/' . $dbms . '.' . $phpEx);
require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/functions.' . $phpEx);
$db = new $sql_db();
$cache = new cache();
@@ -61,7 +68,7 @@ if (isset($_GET['avatar']))
$avatar_group = false;
$exit = false;
if ($filename[0] === 'g')
if (isset($filename[0]) && $filename[0] === 'g')
{
$avatar_group = true;
$filename = substr($filename, 1);
@@ -70,7 +77,7 @@ if (isset($_GET['avatar']))
// '==' is not a bug - . as the first char is as bad as no dot at all
if (strpos($filename, '.') == false)
{
header('HTTP/1.0 403 Forbidden');
send_status_line(403, 'Forbidden');
$exit = true;
}
@@ -84,7 +91,7 @@ if (isset($_GET['avatar']))
if (!$exit && !in_array($ext, array('png', 'gif', 'jpg', 'jpeg')))
{
// no way such an avatar could exist. They are not following the rules, stop the show.
header("HTTP/1.0 403 Forbidden");
send_status_line(403, 'Forbidden');
$exit = true;
}
@@ -94,7 +101,7 @@ if (isset($_GET['avatar']))
if (!$filename)
{
// no way such an avatar could exist. They are not following the rules, stop the show.
header("HTTP/1.0 403 Forbidden");
send_status_line(403, 'Forbidden');
}
else
{
@@ -192,7 +199,7 @@ else
$row['forum_id'] = false;
if (!$auth->acl_get('u_pm_download'))
{
header('HTTP/1.0 403 Forbidden');
send_status_line(403, 'Forbidden');
trigger_error('SORRY_AUTH_VIEW_ATTACH');
}
@@ -215,7 +222,7 @@ else
if (!$allowed)
{
header('HTTP/1.0 403 Forbidden');
send_status_line(403, 'Forbidden');
trigger_error('ERROR_NO_ATTACHMENT');
}
}
@@ -230,7 +237,7 @@ else
if (!download_allowed())
{
header('HTTP/1.0 403 Forbidden');
send_status_line(403, 'Forbidden');
trigger_error($user->lang['LINKAGE_FORBIDDEN']);
}
@@ -376,7 +383,7 @@ function send_avatar_to_browser($file, $browser)
}
else
{
header('HTTP/1.0 404 Not Found');
send_status_line(404, 'Not Found');
}
}
@@ -670,15 +677,7 @@ function set_modified_headers($stamp, $browser)
{
if ($last_load !== false && $last_load >= $stamp)
{
if (substr(strtolower(@php_sapi_name()),0,3) === 'cgi')
{
// in theory, we shouldn't need that due to php doing it. Reality offers a differing opinion, though
header('Status: 304 Not Modified', true, 304);
}
else
{
header('HTTP/1.0 304 Not Modified', true, 304);
}
send_status_line(304, 'Not Modified');
// seems that we need those too ... browsers
header('Pragma: public');
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 31536000));

View File

@@ -276,8 +276,8 @@ function feed_generate_content($content, $uid, $bitfield, $options)
// Add newlines
$content = str_replace('<br />', '<br />' . "\n", $content);
// Relative Path to Absolute path, Windows style
$content = str_replace('./', $board_url . '/', $content);
// Convert smiley Relative paths to Absolute path, Windows style
$content = str_replace($phpbb_root_path . $config['smilies_path'], $board_url . '/' . $config['smilies_path'], $content);
// Remove "Select all" link and mouse events
$content = str_replace('<a href="#" onclick="selectCode(this); return false;">' . $user->lang['SELECT_ALL_CODE'] . '</a>', '', $content);
@@ -522,7 +522,7 @@ class phpbb_feed_base
if (!isset($forum_ids))
{
$forum_ids = array_keys($auth->acl_getf('f_read'));
$forum_ids = array_keys($auth->acl_getf('f_read', true));
}
return $forum_ids;
@@ -535,12 +535,30 @@ class phpbb_feed_base
if (!isset($forum_ids))
{
$forum_ids = array_keys($auth->acl_getf('m_approve'));
$forum_ids = array_keys($auth->acl_getf('m_approve', true));
}
return $forum_ids;
}
function is_moderator_approve_forum($forum_id)
{
static $forum_ids;
if (!isset($forum_ids))
{
$forum_ids = array_flip($this->get_moderator_approve_forums());
}
if (!$forum_id)
{
// Global announcement, your a moderator in any forum than it's okay.
return (!empty($forum_ids)) ? true : false;
}
return (isset($forum_ids[$forum_id])) ? true : false;
}
function get_excluded_forums()
{
global $db, $cache;
@@ -677,7 +695,8 @@ class phpbb_feed_post_base extends phpbb_feed_base
if ($config['feed_item_statistics'])
{
$item_row['statistics'] = $user->lang['POSTED'] . ' ' . $user->lang['POST_BY_AUTHOR'] . ' ' . $this->user_viewprofile($row)
. ' ' . $this->separator_stats . ' ' . $user->format_date($row['post_time']);
. ' ' . $this->separator_stats . ' ' . $user->format_date($row['post_time'])
. (($this->is_moderator_approve_forum($row['forum_id']) && !$row['post_approved']) ? ' ' . $this->separator_stats . ' ' . $user->lang['POST_UNAPPROVED'] : '');
}
}
}
@@ -719,8 +738,9 @@ class phpbb_feed_topic_base extends phpbb_feed_base
{
$item_row['statistics'] = $user->lang['POSTED'] . ' ' . $user->lang['POST_BY_AUTHOR'] . ' ' . $this->user_viewprofile($row)
. ' ' . $this->separator_stats . ' ' . $user->format_date($row[$this->get('date')])
. ' ' . $this->separator_stats . ' ' . $user->lang['REPLIES'] . ' ' . $row['topic_replies']
. ' ' . $this->separator_stats . ' ' . $user->lang['VIEWS'] . ' ' . $row['topic_views'];
. ' ' . $this->separator_stats . ' ' . $user->lang['REPLIES'] . ' ' . (($this->is_moderator_approve_forum($row['forum_id'])) ? $row['topic_replies_real'] : $row['topic_replies'])
. ' ' . $this->separator_stats . ' ' . $user->lang['VIEWS'] . ' ' . $row['topic_views']
. (($this->is_moderator_approve_forum($row['forum_id']) && ($row['topic_replies_real'] != $row['topic_replies'])) ? ' ' . $this->separator_stats . ' ' . $user->lang['POSTS_UNAPPROVED'] : '');
}
}
}
@@ -780,11 +800,11 @@ class phpbb_feed_overall extends phpbb_feed_post_base
// Get the actual data
$this->sql = array(
'SELECT' => 'f.forum_id, f.forum_name, ' .
'p.post_id, p.topic_id, p.post_time, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' .
'p.post_id, p.topic_id, p.post_time, p.post_approved, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' .
'u.username, u.user_id',
'FROM' => array(
POSTS_TABLE => 'p',
USERS_TABLE => 'u',
POSTS_TABLE => 'p',
),
'LEFT_JOIN' => array(
array(
@@ -912,7 +932,7 @@ class phpbb_feed_forum extends phpbb_feed_post_base
}
$this->sql = array(
'SELECT' => 'p.post_id, p.topic_id, p.post_time, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' .
'SELECT' => 'p.post_id, p.topic_id, p.post_time, p.post_approved, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' .
'u.username, u.user_id',
'FROM' => array(
POSTS_TABLE => 'p',
@@ -994,7 +1014,7 @@ class phpbb_feed_topic extends phpbb_feed_post_base
if (!$this->topic_data['topic_approved'])
{
// Also require m_approve
$in_fid_ary = array_intersect($in_fid_ary, array_keys($auth->acl_getf('m_approve')));
$in_fid_ary = array_intersect($in_fid_ary, $this->get_moderator_approve_forums());
if (empty($in_fid_ary))
{
@@ -1077,7 +1097,7 @@ class phpbb_feed_topic extends phpbb_feed_post_base
global $auth, $db;
$this->sql = array(
'SELECT' => 'p.post_id, p.post_time, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' .
'SELECT' => 'p.post_id, p.post_time, p.post_approved, p.post_subject, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, ' .
'u.username, u.user_id',
'FROM' => array(
POSTS_TABLE => 'p',
@@ -1241,7 +1261,7 @@ class phpbb_feed_news extends phpbb_feed_topic_base
$this->sql = array(
'SELECT' => 'f.forum_id, f.forum_name,
t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_replies, t.topic_views, t.topic_time,
t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_replies, t.topic_replies_real, t.topic_views, t.topic_time,
p.post_id, p.post_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url',
'FROM' => array(
TOPICS_TABLE => 't',
@@ -1314,7 +1334,7 @@ class phpbb_feed_topics extends phpbb_feed_topic_base
$this->sql = array(
'SELECT' => 'f.forum_id, f.forum_name,
t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_replies, t.topic_views, t.topic_time,
t.topic_id, t.topic_title, t.topic_poster, t.topic_first_poster_name, t.topic_replies, t.topic_replies_real, t.topic_views, t.topic_time,
p.post_id, p.post_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url',
'FROM' => array(
TOPICS_TABLE => 't',
@@ -1412,7 +1432,7 @@ class phpbb_feed_topics_active extends phpbb_feed_topic_base
$this->sql = array(
'SELECT' => 'f.forum_id, f.forum_name,
t.topic_id, t.topic_title, t.topic_replies, t.topic_views,
t.topic_id, t.topic_title, t.topic_replies, t.topic_replies_real, t.topic_views,
t.topic_last_poster_id, t.topic_last_poster_name, t.topic_last_post_time,
p.post_id, p.post_time, p.post_text, p.bbcode_bitfield, p.bbcode_uid, p.enable_bbcode, p.enable_smilies, p.enable_magic_url',
'FROM' => array(

4
phpBB/includes/.htaccess Normal file
View File

@@ -0,0 +1,4 @@
<Files *>
Order Allow,Deny
Deny from All
</Files>

View File

@@ -78,8 +78,14 @@ class acm
if (!$this->_write('data_global'))
{
if (!function_exists('phpbb_is_writable'))
{
global $phpbb_root_path;
include($phpbb_root_path . 'includes/functions.' . $phpEx);
}
// Now, this occurred how often? ... phew, just tell the user then...
if (!@is_writable($this->cache_dir))
if (!phpbb_is_writable($this->cache_dir))
{
// We need to use die() here, because else we may encounter an infinite loop (the message handler calls $cache->unload())
die($this->cache_dir . ' is NOT writable.');
@@ -707,7 +713,13 @@ class acm
*/
function remove_file($filename, $check = false)
{
if ($check && !@is_writable($this->cache_dir))
if (!function_exists('phpbb_is_writable'))
{
global $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'includes/functions.' . $phpEx);
}
if ($check && !phpbb_is_writable($this->cache_dir))
{
// E_USER_ERROR - not using language entry - intended.
trigger_error('Unable to remove files within ' . $this->cache_dir . '. Please check directory permissions.', E_USER_ERROR);

View File

@@ -37,6 +37,12 @@ if (!defined('PHPBB_ACM_MEMCACHE_HOST'))
define('PHPBB_ACM_MEMCACHE_HOST', 'localhost');
}
if (!defined('PHPBB_ACM_MEMCACHE'))
{
//can define multiple servers with host1/port1,host2/port2 format
define('PHPBB_ACM_MEMCACHE', PHPBB_ACM_MEMCACHE_HOST . '/' . PHPBB_ACM_MEMCACHE_PORT);
}
/**
* ACM for Memcached
* @package acm
@@ -54,7 +60,11 @@ class acm extends acm_memory
parent::acm_memory();
$this->memcache = new Memcache;
$this->memcache->connect(PHPBB_ACM_MEMCACHE_HOST, PHPBB_ACM_MEMCACHE_PORT);
foreach(explode(',', PHPBB_ACM_MEMCACHE) as $u)
{
$parts = explode('/', $u);
$this->memcache->addServer(trim($parts[0]), trim($parts[1]));
}
$this->flags = (PHPBB_ACM_MEMCACHE_COMPRESS) ? MEMCACHE_COMPRESSED : 0;
}
@@ -125,4 +135,4 @@ class acm extends acm_memory
}
}
?>
?>

View File

@@ -407,7 +407,13 @@ class acm_memory
*/
function remove_file($filename, $check = false)
{
if ($check && !@is_writable($this->cache_dir))
if (!function_exists('phpbb_is_writable'))
{
global $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'includes/functions.' . $phpEx);
}
if ($check && !phpbb_is_writable($this->cache_dir))
{
// E_USER_ERROR - not using language entry - intended.
trigger_error('Unable to remove files within ' . $this->cache_dir . '. Please check directory permissions.', E_USER_ERROR);

View File

@@ -90,6 +90,7 @@ class acp_attachments
$s_assigned_groups = array();
while ($row = $db->sql_fetchrow($result))
{
$row['group_name'] = (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'];
$s_assigned_groups[$row['cat_id']][] = $row['group_name'];
}
$db->sql_freeresult($result);
@@ -494,6 +495,10 @@ class acp_attachments
$sql = 'SELECT group_id
FROM ' . EXTENSION_GROUPS_TABLE . "
WHERE LOWER(group_name) = '" . $db->sql_escape(utf8_strtolower($new_group_name)) . "'";
if ($group_id)
{
$sql .= ' AND group_id <> ' . $group_id;
}
$result = $db->sql_query($sql);
if ($db->sql_fetchrow($result))
@@ -551,6 +556,7 @@ class acp_attachments
$group_id = $db->sql_nextid();
}
$group_name = (isset($user->lang['EXT_GROUP_' . $group_name])) ? $user->lang['EXT_GROUP_' . $group_name] : $group_name;
add_log('admin', 'LOG_ATTACH_EXTGROUP_' . strtoupper($action), $group_name);
}
@@ -858,7 +864,7 @@ class acp_attachments
'U_EDIT' => $this->u_action . "&amp;action=edit&amp;g={$row['group_id']}",
'U_DELETE' => $this->u_action . "&amp;action=delete&amp;g={$row['group_id']}",
'GROUP_NAME' => $row['group_name'],
'GROUP_NAME' => (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'],
'CATEGORY' => $cat_lang[$row['cat_id']],
)
);
@@ -1118,6 +1124,7 @@ class acp_attachments
$group_name = array();
while ($row = $db->sql_fetchrow($result))
{
$row['group_name'] = (isset($user->lang['EXT_GROUP_' . $row['group_name']])) ? $user->lang['EXT_GROUP_' . $row['group_name']] : $row['group_name'];
$group_name[] = $row;
}
$db->sql_freeresult($result);
@@ -1215,7 +1222,7 @@ class acp_attachments
return;
}
if (!is_writable($phpbb_root_path . $upload_dir))
if (!phpbb_is_writable($phpbb_root_path . $upload_dir))
{
$error[] = sprintf($user->lang['NO_WRITE_UPLOAD'], $upload_dir);
return;

View File

@@ -224,7 +224,7 @@ class acp_ban
$template->assign_block_vars('ban_reason', array(
'BAN_ID' => $ban_id,
'REASON' => $reason,
'A_REASON' => addslashes(htmlspecialchars_decode($reason)),
'A_REASON' => addslashes($reason),
));
}
}
@@ -236,7 +236,7 @@ class acp_ban
$template->assign_block_vars('ban_give_reason', array(
'BAN_ID' => $ban_id,
'REASON' => $reason,
'A_REASON' => addslashes(htmlspecialchars_decode($reason)),
'A_REASON' => addslashes($reason),
));
}
}

View File

@@ -58,7 +58,7 @@ class acp_board
'board_disable_msg' => false,
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
'default_dateformat' => array('lang' => 'DEFAULT_DATE_FORMAT', 'validate' => 'string', 'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'string', 'type' => 'select', 'function' => 'tz_select', 'params' => array('{CONFIG_VALUE}', 1), 'explain' => false),
'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'string', 'type' => 'select', 'function' => 'tz_select', 'params' => array('{CONFIG_VALUE}', 1), 'explain' => true),
'board_dst' => array('lang' => 'SYSTEM_DST', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'default_style' => array('lang' => 'DEFAULT_STYLE', 'validate' => 'int', 'type' => 'select', 'function' => 'style_select', 'params' => array('{CONFIG_VALUE}', false), 'explain' => false),
'override_user_style' => array('lang' => 'OVERRIDE_STYLE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
@@ -319,6 +319,7 @@ class acp_board
'load_online_guests' => array('lang' => 'YES_ONLINE_GUESTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'load_onlinetrack' => array('lang' => 'YES_ONLINE_TRACK', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'load_birthdays' => array('lang' => 'YES_BIRTHDAYS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'load_unreads_search' => array('lang' => 'YES_UNREAD_SEARCH', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'load_moderators' => array('lang' => 'YES_MODERATORS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'load_jumpbox' => array('lang' => 'YES_JUMPBOX', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'load_user_activity' => array('lang' => 'LOAD_USER_ACTIVITY', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
@@ -888,8 +889,8 @@ class acp_board
$old_tz = $user->timezone;
$old_dst = $user->dst;
$user->timezone = $config['board_timezone'];
$user->dst = $config['board_dst'];
$user->timezone = $config['board_timezone'] * 3600;
$user->dst = $config['board_dst'] * 3600;
$dateformat_options = '';

View File

@@ -89,14 +89,14 @@ class acp_captcha
}
else
{
trigger_error($user->lang['CAPTCHA_UNAVAILABLE'] . adm_back_link($this->u_action));
trigger_error($user->lang['CAPTCHA_UNAVAILABLE'] . adm_back_link($this->u_action), E_USER_WARNING);
}
}
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($this->u_action));
}
else if ($submit)
{
trigger_error($user->lang['FORM_INVALID'] . adm_back_link());
trigger_error($user->lang['FORM_INVALID'] . adm_back_link(), E_USER_WARNING);
}
else
{

View File

@@ -109,6 +109,7 @@ class acp_database
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$extractor = new mssql_extractor($download, $store, $format, $filename, $time);
break;
@@ -138,6 +139,7 @@ class acp_database
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$extractor->flush('TRUNCATE TABLE ' . $table_name . "GO\n");
break;
@@ -392,6 +394,7 @@ class acp_database
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
while (($sql = $fgetd($fp, "GO\n", $read, $seek, $eof)) !== false)
{
$db->sql_query($sql);
@@ -435,7 +438,7 @@ class acp_database
{
if (in_array($matches[2], $methods))
{
$backup_files[gmdate("d-m-Y H:i:s", $matches[1])] = $file;
$backup_files[(int) $matches[1]] = $file;
}
}
}
@@ -450,7 +453,7 @@ class acp_database
{
$template->assign_block_vars('files', array(
'FILE' => $file,
'NAME' => $name,
'NAME' => $user->format_date($name, 'd-m-Y H:i:s', true),
'SUPPORTED' => true,
));
}
@@ -1509,6 +1512,10 @@ class mssql_extractor extends base_extractor
{
$this->write_data_mssql($table_name);
}
else if($db->sql_layer === 'mssqlnative')
{
$this->write_data_mssqlnative($table_name);
}
else
{
$this->write_data_odbc($table_name);
@@ -1608,7 +1615,111 @@ class mssql_extractor extends base_extractor
}
$this->flush($sql_data);
}
function write_data_mssqlnative($table_name)
{
global $db;
$ary_type = $ary_name = array();
$ident_set = false;
$sql_data = '';
// Grab all of the data from current table.
$sql = "SELECT * FROM $table_name";
$db->mssqlnative_set_query_options(array('Scrollable' => SQLSRV_CURSOR_STATIC));
$result = $db->sql_query($sql);
$retrieved_data = $db->mssqlnative_num_rows($result);
if (!$retrieved_data)
{
$db->sql_freeresult($result);
return;
}
$sql = "SELECT * FROM $table_name";
$result_fields = $db->sql_query_limit($sql, 1);
$row = new result_mssqlnative($result_fields);
$i_num_fields = $row->num_fields();
for ($i = 0; $i < $i_num_fields; $i++)
{
$ary_type[$i] = $row->field_type($i);
$ary_name[$i] = $row->field_name($i);
}
$db->sql_freeresult($result_fields);
$sql = "SELECT 1 as has_identity
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMNPROPERTY(object_id('$table_name'), COLUMN_NAME, 'IsIdentity') = 1";
$result2 = $db->sql_query($sql);
$row2 = $db->sql_fetchrow($result2);
if (!empty($row2['has_identity']))
{
$sql_data .= "\nSET IDENTITY_INSERT $table_name ON\nGO\n";
$ident_set = true;
}
$db->sql_freeresult($result2);
while ($row = $db->sql_fetchrow($result))
{
$schema_vals = $schema_fields = array();
// Build the SQL statement to recreate the data.
for ($i = 0; $i < $i_num_fields; $i++)
{
$str_val = $row[$ary_name[$i]];
// defaults to type number - better quote just to be safe, so check for is_int too
if (is_int($ary_type[$i]) || preg_match('#char|text|bool|varbinary#i', $ary_type[$i]))
{
$str_quote = '';
$str_empty = "''";
$str_val = sanitize_data_mssql(str_replace("'", "''", $str_val));
}
else if (preg_match('#date|timestamp#i', $ary_type[$i]))
{
if (empty($str_val))
{
$str_quote = '';
}
else
{
$str_quote = "'";
}
}
else
{
$str_quote = '';
$str_empty = 'NULL';
}
if (empty($str_val) && $str_val !== '0' && !(is_int($str_val) || is_float($str_val)))
{
$str_val = $str_empty;
}
$schema_vals[$i] = $str_quote . $str_val . $str_quote;
$schema_fields[$i] = $ary_name[$i];
}
// Take the ordered fields and their associated data and build it
// into a valid sql statement to recreate that field in the data.
$sql_data .= "INSERT INTO $table_name (" . implode(', ', $schema_fields) . ') VALUES (' . implode(', ', $schema_vals) . ");\nGO\n";
$this->flush($sql_data);
$sql_data = '';
}
$db->sql_freeresult($result);
if ($ident_set)
{
$sql_data .= "\nSET IDENTITY_INSERT $table_name OFF\nGO\n";
}
$this->flush($sql_data);
}
function write_data_odbc($table_name)
{
global $db;

View File

@@ -169,7 +169,7 @@ class acp_forums
$forum_data['forum_status'] = ITEM_UNLOCKED;
}
$forum_data['show_active'] = ($forum_data['forum_type'] == FORUM_POST) ? request_var('display_recent', true) : request_var('display_active', true);
$forum_data['show_active'] = ($forum_data['forum_type'] == FORUM_POST) ? request_var('display_recent', true) : request_var('display_active', false);
// Get data for forum rules if specified...
if ($forum_data['forum_rules'])
@@ -190,12 +190,14 @@ class acp_forums
$forum_perm_from = request_var('forum_perm_from', 0);
$cache->destroy('sql', FORUMS_TABLE);
$copied_permissions = false;
// Copy permissions?
if ($forum_perm_from && $forum_perm_from != $forum_data['forum_id'] &&
($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))))
{
copy_forum_permissions($forum_perm_from, $forum_data['forum_id'], ($action == 'edit') ? true : false);
cache_moderators();
$copied_permissions = true;
}
/* Commented out because of questionable UI workflow - re-visit for 3.0.7
else if (!$this->parent_id && $action != 'edit' && $auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))
@@ -211,13 +213,13 @@ class acp_forums
$message = ($action == 'add') ? $user->lang['FORUM_CREATED'] : $user->lang['FORUM_UPDATED'];
// Redirect to permissions
if ($auth->acl_get('a_fauth'))
if ($auth->acl_get('a_fauth') && !$copied_permissions)
{
$message .= '<br /><br />' . sprintf($user->lang['REDIRECT_ACL'], '<a href="' . append_sid("{$phpbb_admin_path}index.$phpEx", 'i=permissions' . $acl_url) . '">', '</a>');
}
// redirect directly to permission settings screen if authed
if ($action == 'add' && !$forum_perm_from && $auth->acl_get('a_fauth'))
if ($action == 'add' && !$copied_permissions && $auth->acl_get('a_fauth'))
{
meta_refresh(4, append_sid("{$phpbb_admin_path}index.$phpEx", 'i=permissions' . $acl_url));
}
@@ -639,7 +641,8 @@ class acp_forums
'S_PRUNE_OLD_POLLS' => ($forum_data['forum_flags'] & FORUM_FLAG_PRUNE_POLL) ? true : false,
'S_PRUNE_ANNOUNCE' => ($forum_data['forum_flags'] & FORUM_FLAG_PRUNE_ANNOUNCE) ? true : false,
'S_PRUNE_STICKY' => ($forum_data['forum_flags'] & FORUM_FLAG_PRUNE_STICKY) ? true : false,
'S_DISPLAY_ACTIVE_TOPICS' => ($forum_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS) ? true : false,
'S_DISPLAY_ACTIVE_TOPICS' => ($forum_data['forum_type'] == FORUM_POST) ? ($forum_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS) : true,
'S_ENABLE_ACTIVE_TOPICS' => ($forum_data['forum_type'] == FORUM_CAT) ? ($forum_data['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS) : false,
'S_ENABLE_POST_REVIEW' => ($forum_data['forum_flags'] & FORUM_FLAG_POST_REVIEW) ? true : false,
'S_ENABLE_QUICK_REPLY' => ($forum_data['forum_flags'] & FORUM_FLAG_QUICK_REPLY) ? true : false,
'S_CAN_COPY_PERMISSIONS' => ($action != 'edit' || empty($forum_id) || ($auth->acl_get('a_fauth') && $auth->acl_get('a_authusers') && $auth->acl_get('a_authgroups') && $auth->acl_get('a_mauth'))) ? true : false,
@@ -980,7 +983,7 @@ class acp_forums
if (!$row)
{
trigger_error($user->lang['PARENT_NOT_EXIST'] . adm_back_link($this->u_action . '&amp;' . $this->parent_id), E_USER_WARNING);
trigger_error($user->lang['PARENT_NOT_EXIST'] . adm_back_link($this->u_action . '&amp;parent_id=' . $this->parent_id), E_USER_WARNING);
}
if ($row['forum_type'] == FORUM_LINK)
@@ -1639,6 +1642,9 @@ class acp_forums
delete_attachments('topic', $topic_ids, false);
// Delete shadow topics pointing to topics in this forum
delete_topic_shadows($forum_id);
// Before we remove anything we make sure we are able to adjust the post counts later. ;)
$sql = 'SELECT poster_id
FROM ' . POSTS_TABLE . '
@@ -1705,6 +1711,9 @@ class acp_forums
)
);
// Amount of rows we select and delete in one iteration.
$batch_size = 500;
foreach ($tables_ary as $field => $tables)
{
$start = 0;
@@ -1714,7 +1723,7 @@ class acp_forums
$sql = "SELECT $field
FROM " . POSTS_TABLE . '
WHERE forum_id = ' . $forum_id;
$result = $db->sql_query_limit($sql, 500, $start);
$result = $db->sql_query_limit($sql, $batch_size, $start);
$ids = array();
while ($row = $db->sql_fetchrow($result))
@@ -1733,7 +1742,7 @@ class acp_forums
}
}
}
while ($row);
while (sizeof($ids) == $batch_size);
}
unset($ids);

View File

@@ -49,7 +49,7 @@ class acp_groups
// Clear some vars
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && @is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && phpbb_is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
$group_row = array();
// Grab basic data for group, if group_id is set and exists
@@ -394,6 +394,15 @@ class acp_groups
}
}
// Validate the length of "Maximum number of allowed recipients per private message" setting.
// We use 16777215 as a maximum because it matches MySQL unsigned mediumint maximum value
// which is the lowest amongst DBMSes supported by phpBB3
if ($max_recipients_error = validate_data($submit_ary, array('max_recipients' => array('num', false, 0, 16777215))))
{
// Replace "error" string with its real, localised form
$error = array_merge($error, array_map(array(&$user, 'lang'), $max_recipients_error));
}
if (!sizeof($error))
{
// Only set the rank, colour, etc. if it's changed or if we're adding a new

View File

@@ -1120,12 +1120,12 @@ class acp_language
{
while (($file = readdir($dp)) !== false)
{
if (!is_dir($phpbb_root_path . 'language/' . $file))
if ($file[0] == '.' || !is_dir($phpbb_root_path . 'language/' . $file))
{
continue;
}
if ($file[0] != '.' && file_exists("{$phpbb_root_path}language/$file/iso.txt"))
if (file_exists("{$phpbb_root_path}language/$file/iso.txt"))
{
if (!in_array($file, $installed))
{

View File

@@ -35,9 +35,9 @@ class acp_php_info
$this->tpl_name = 'acp_php_info';
$this->page_title = 'ACP_PHP_INFO';
ob_start();
@phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_VARIABLES);
phpinfo(INFO_GENERAL | INFO_CONFIGURATION | INFO_MODULES | INFO_VARIABLES);
$phpinfo = ob_get_clean();
$phpinfo = trim($phpinfo);

View File

@@ -1480,6 +1480,7 @@ class acp_profile
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
// We are defining the biggest common value, because of the possibility to edit the min/max values of each field.
$sql = 'ALTER TABLE [' . PROFILE_FIELDS_DATA_TABLE . "] ADD [$field_ident] ";

View File

@@ -315,8 +315,8 @@ class acp_prune
'mode' => $mode,
'prune' => 1,
'users' => request_var('users', '', true),
'username' => request_var('username', '', true),
'users' => utf8_normalize_nfc(request_var('users', '', true)),
'username' => utf8_normalize_nfc(request_var('username', '', true)),
'email' => request_var('email', ''),
'joined_select' => request_var('joined_select', ''),
'joined' => request_var('joined', ''),
@@ -369,7 +369,7 @@ class acp_prune
{
global $user, $db;
$users = request_var('users', '', true);
$users = utf8_normalize_nfc(request_var('users', '', true));
if ($users)
{
@@ -378,7 +378,7 @@ class acp_prune
}
else
{
$username = request_var('username', '', true);
$username = utf8_normalize_nfc(request_var('username', '', true));
$email = request_var('email', '');
$joined_select = request_var('joined_select', 'lt');

View File

@@ -233,6 +233,7 @@ class acp_reasons
// Standard? What's that?
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
// Change the reports using this reason to 'other'
$sql = "DECLARE @ptrval binary(16)

View File

@@ -643,13 +643,13 @@ parse_css_file = {PARSE_CSS_FILE}
{
while (($file = readdir($dp)) !== false)
{
if (!is_dir($phpbb_root_path . 'styles/' . $file))
if ($file[0] == '.' || !is_dir($phpbb_root_path . 'styles/' . $file))
{
continue;
}
$subpath = ($mode != 'style') ? "$mode/" : '';
if ($file[0] != '.' && file_exists("{$phpbb_root_path}styles/$file/$subpath$mode.cfg"))
if (file_exists("{$phpbb_root_path}styles/$file/$subpath$mode.cfg"))
{
if ($cfg = file("{$phpbb_root_path}styles/$file/$subpath$mode.cfg"))
{
@@ -748,7 +748,7 @@ parse_css_file = {PARSE_CSS_FILE}
$additional = '';
// If the template is stored on the filesystem try to write the file else store it in the database
if (!$safe_mode && !$template_info['template_storedb'] && file_exists($file) && @is_writable($file))
if (!$safe_mode && !$template_info['template_storedb'] && file_exists($file) && phpbb_is_writable($file))
{
if (!($fp = @fopen($file, 'wb')))
{
@@ -1155,7 +1155,7 @@ parse_css_file = {PARSE_CSS_FILE}
$message = $user->lang['THEME_UPDATED'];
// If the theme is stored on the filesystem try to write the file else store it in the database
if (!$safe_mode && !$theme_info['theme_storedb'] && file_exists($file) && @is_writable($file))
if (!$safe_mode && !$theme_info['theme_storedb'] && file_exists($file) && phpbb_is_writable($file))
{
if (!($fp = @fopen($file, 'wb')))
{
@@ -2040,23 +2040,18 @@ parse_css_file = {PARSE_CSS_FILE}
{
case 'tar':
$ext = '.tar';
$mimetype = 'x-tar';
$compress = 'compress_tar';
break;
case 'zip':
$ext = '.zip';
$mimetype = 'zip';
break;
case 'tar.gz':
$ext = '.tar.gz';
$mimetype = 'x-gzip';
break;
case 'tar.bz2':
$ext = '.tar.bz2';
$mimetype = 'x-bzip2';
break;
default:
@@ -2246,7 +2241,7 @@ parse_css_file = {PARSE_CSS_FILE}
{
// a rather elaborate check we have to do here once to avoid trouble later
$check = "{$phpbb_root_path}styles/" . $style_row["{$mode}_path"] . (($mode === 'theme') ? '/theme/stylesheet.css' : '/template');
if (($style_row["{$mode}_storedb"] != $store_db) && !$store_db && ($safe_mode || !@is_writable($check)))
if (($style_row["{$mode}_storedb"] != $store_db) && !$store_db && ($safe_mode || !phpbb_is_writable($check)))
{
$error[] = $user->lang['EDIT_' . strtoupper($mode) . '_STORED_DB'];
$store_db = 1;
@@ -2326,7 +2321,7 @@ parse_css_file = {PARSE_CSS_FILE}
{
$theme_data = $this->db_theme_data($style_row);
}
else if (!$store_db && !$safe_mode && @is_writable("{$phpbb_root_path}styles/{$style_row['theme_path']}/theme/stylesheet.css"))
else if (!$store_db && !$safe_mode && phpbb_is_writable("{$phpbb_root_path}styles/{$style_row['theme_path']}/theme/stylesheet.css"))
{
$store_db = 1;
$theme_data = $style_row['theme_data'];
@@ -2357,7 +2352,7 @@ parse_css_file = {PARSE_CSS_FILE}
}
else
{
if (!$store_db && !$safe_mode && @is_writable("{$phpbb_root_path}styles/{$style_row['template_path']}/template"))
if (!$store_db && !$safe_mode && phpbb_is_writable("{$phpbb_root_path}styles/{$style_row['template_path']}/template"))
{
$err = $this->store_in_fs('template', $style_row['template_id']);
if ($err)
@@ -2531,13 +2526,21 @@ parse_css_file = {PARSE_CSS_FILE}
// Match CSS imports
$matches = array();
preg_match_all('/@import url\(["\'](.*)["\']\);/i', $stylesheet, $matches);
preg_match_all('/@import url\((["\'])(.*)\1\);/i', $stylesheet, $matches);
// remove commented stylesheets (very simple parser, allows only whitespace
// around an @import statement)
preg_match_all('#/\*\s*@import url\((["\'])(.*)\1\);\s\*/#i', $stylesheet, $commented);
$matches[2] = array_diff($matches[2], $commented[2]);
if (sizeof($matches))
{
foreach ($matches[0] as $idx => $match)
{
$stylesheet = str_replace($match, acp_styles::load_css_file($theme_row['theme_path'], $matches[1][$idx]), $stylesheet);
if (isset($matches[2][$idx]))
{
$stylesheet = str_replace($match, acp_styles::load_css_file($theme_row['theme_path'], $matches[2][$idx]), $stylesheet);
}
}
}
@@ -3728,7 +3731,7 @@ parse_css_file = {PARSE_CSS_FILE}
$store_db = 0;
$error = array();
if (!$safe_mode && @is_writable("{$phpbb_root_path}styles/{$path}/template"))
if (!$safe_mode && phpbb_is_writable("{$phpbb_root_path}styles/{$path}/template"))
{
$sql = 'SELECT *
FROM ' . STYLES_TEMPLATE_DATA_TABLE . "

View File

@@ -51,6 +51,14 @@ class acp_update
$announcement_url = (strpos($announcement_url, '&amp;') === false) ? str_replace('&', '&amp;', $announcement_url) : $announcement_url;
$update_link = append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=update');
// next feature release
$next_feature_version = $next_feature_announcement_url = false;
if (isset($info[2]) && trim($info[2]) !== '')
{
$next_feature_version = trim($info[2]);
$next_feature_announcement_url = trim($info[3]);
}
// Determine automatic update...
$sql = 'SELECT config_value
FROM ' . CONFIG_TABLE . "
@@ -74,8 +82,10 @@ class acp_update
'LATEST_VERSION' => $latest_version,
'CURRENT_VERSION' => $config['version'],
'AUTO_VERSION' => $version_update_from,
'NEXT_FEATURE_VERSION' => $next_feature_version,
'UPDATE_INSTRUCTIONS' => sprintf($user->lang['UPDATE_INSTRUCTIONS'], $announcement_url, $update_link),
'UPGRADE_INSTRUCTIONS' => $next_feature_version ? $user->lang('UPGRADE_INSTRUCTIONS', $next_feature_version, $next_feature_announcement_url) : false,
));
}
}

View File

@@ -105,7 +105,7 @@ class acp_users
LEFT JOIN ' . SESSIONS_TABLE . ' s ON (s.session_user_id = u.user_id)
WHERE u.user_id = ' . $user_id . '
ORDER BY s.session_time DESC';
$result = $db->sql_query($sql);
$result = $db->sql_query_limit($sql, 1);
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
@@ -191,24 +191,31 @@ class acp_users
trigger_error($user->lang['CANNOT_REMOVE_YOURSELF'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
}
if (confirm_box(true))
if ($delete_type)
{
user_delete($delete_type, $user_id, $user_row['username']);
if (confirm_box(true))
{
user_delete($delete_type, $user_id, $user_row['username']);
add_log('admin', 'LOG_USER_DELETED', $user_row['username']);
trigger_error($user->lang['USER_DELETED'] . adm_back_link($this->u_action));
add_log('admin', 'LOG_USER_DELETED', $user_row['username']);
trigger_error($user->lang['USER_DELETED'] . adm_back_link($this->u_action));
}
else
{
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
'u' => $user_id,
'i' => $id,
'mode' => $mode,
'action' => $action,
'update' => true,
'delete' => 1,
'delete_type' => $delete_type))
);
}
}
else
{
confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
'u' => $user_id,
'i' => $id,
'mode' => $mode,
'action' => $action,
'update' => true,
'delete' => 1,
'delete_type' => $delete_type))
);
trigger_error($user->lang['NO_MODE'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
}
}
@@ -224,6 +231,11 @@ class acp_users
trigger_error($user->lang['CANNOT_BAN_YOURSELF'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
}
if ($user_id == ANONYMOUS)
{
trigger_error($user->lang['CANNOT_BAN_ANONYMOUS'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
}
if ($user_row['user_type'] == USER_FOUNDER)
{
trigger_error($user->lang['CANNOT_BAN_FOUNDER'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
@@ -307,10 +319,7 @@ class acp_users
$server_url = generate_board_url();
$user_actkey = gen_rand_string(10);
$key_len = 54 - (strlen($server_url));
$key_len = ($key_len > 6) ? $key_len : 6;
$user_actkey = substr($user_actkey, 0, $key_len);
$user_actkey = gen_rand_string(mt_rand(6, 10));
$email_template = ($user_row['user_type'] == USER_NORMAL) ? 'user_reactivate_account' : 'user_resend_inactive';
if ($user_row['user_type'] == USER_NORMAL)
@@ -1550,6 +1559,31 @@ class acp_users
WHERE user_id = $user_id";
$db->sql_query($sql);
// Check if user has an active session
if ($user_row['session_id'])
{
// We'll update the session if user_allow_viewonline has changed and the user is a bot
// Or if it's a regular user and the admin set it to hide the session
if ($user_row['user_allow_viewonline'] != $sql_ary['user_allow_viewonline'] && $user_row['user_type'] == USER_IGNORE
|| $user_row['user_allow_viewonline'] && !$sql_ary['user_allow_viewonline'])
{
// We also need to check if the user has the permission to cloak.
$user_auth = new auth();
$user_auth->acl($user_row);
$session_sql_ary = array(
'session_viewonline' => ($user_auth->acl_get('u_hideonline')) ? $sql_ary['user_allow_viewonline'] : true,
);
$sql = 'UPDATE ' . SESSIONS_TABLE . '
SET ' . $db->sql_build_array('UPDATE', $session_sql_ary) . "
WHERE session_user_id = $user_id";
$db->sql_query($sql);
unset($user_auth);
}
}
trigger_error($user->lang['USER_PREFS_UPDATED'] . adm_back_link($this->u_action . '&amp;u=' . $user_id));
}
@@ -1664,7 +1698,7 @@ class acp_users
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && @is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && phpbb_is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
if ($submit)
{
@@ -1674,7 +1708,7 @@ class acp_users
trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action . '&amp;u=' . $user_id), E_USER_WARNING);
}
if (avatar_process_user($error, $user_row))
if (avatar_process_user($error, $user_row, $can_upload))
{
trigger_error($user->lang['USER_AVATAR_UPDATED'] . adm_back_link($this->u_action . '&amp;u=' . $user_row['user_id']));
}
@@ -2084,7 +2118,7 @@ class acp_users
LEFT JOIN ' . SESSIONS_TABLE . ' s ON (s.session_user_id = u.user_id)
WHERE u.user_id = ' . $user_id . '
ORDER BY s.session_time DESC';
$result = $db->sql_query($sql);
$result = $db->sql_query_limit($sql, 1);
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}

View File

@@ -24,7 +24,7 @@ class acp_board_info
'features' => array('title' => 'ACP_BOARD_FEATURES', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'avatar' => array('title' => 'ACP_AVATAR_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'message' => array('title' => 'ACP_MESSAGE_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION', 'ACP_MESSAGES')),
'post' => array('title' => 'ACP_POST_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'post' => array('title' => 'ACP_POST_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION', 'ACP_MESSAGES')),
'signature' => array('title' => 'ACP_SIGNATURE_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'feed' => array('title' => 'ACP_FEED_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),
'registration' => array('title' => 'ACP_REGISTER_SETTINGS', 'auth' => 'acl_a_board', 'cat' => array('ACP_BOARD_CONFIGURATION')),

View File

@@ -134,7 +134,8 @@ function login_db(&$username, &$password)
// increase login attempt count to make sure this cannot be exploited
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_attempts = user_login_attempts + 1
WHERE user_id = ' . $row['user_id'];
WHERE user_id = ' . (int) $row['user_id'] . '
AND user_login_attempts < ' . LOGIN_ATTEMPTS_MAX;
$db->sql_query($sql);
return array(
@@ -194,7 +195,8 @@ function login_db(&$username, &$password)
// Password incorrect - increase login attempts
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_login_attempts = user_login_attempts + 1
WHERE user_id = ' . $row['user_id'];
WHERE user_id = ' . (int) $row['user_id'] . '
AND user_login_attempts < ' . LOGIN_ATTEMPTS_MAX;
$db->sql_query($sql);
// Give status about wrong password...

View File

@@ -74,7 +74,7 @@ function init_ldap()
if ($search === false)
{
return $user->lang['LDAP_NO_SERVER_CONNECTION'];
return $user->lang['LDAP_SEARCH_FAILED'];
}
$result = @ldap_get_entries($ldap, $search);

View File

@@ -82,11 +82,20 @@ class cache extends acm
$result = $db->sql_query($sql);
$censors = array();
$unicode = ((version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) && @preg_match('/\p{L}/u', 'a') !== false) ? true : false;
while ($row = $db->sql_fetchrow($result))
{
if ((version_compare(PHP_VERSION, '5.1.0', '>=') || (version_compare(PHP_VERSION, '5.0.0-dev', '<=') && version_compare(PHP_VERSION, '4.4.0', '>='))) && @preg_match('/\p{L}/u', 'a') !== false)
if ($unicode)
{
$censors['match'][] = '#(?<![\p{Nd}\p{L}_])(' . str_replace('\*', '[\p{Nd}\p{L}_]*?', preg_quote($row['word'], '#')) . ')(?![\p{Nd}\p{L}_])#iu';
// Unescape the asterisk to simplify further conversions
$row['word'] = str_replace('\*', '*', preg_quote($row['word'], '#'));
// Replace the asterisk inside the pattern, at the start and at the end of it with regexes
$row['word'] = preg_replace(array('#(?<=[\p{Nd}\p{L}_])\*(?=[\p{Nd}\p{L}_])#iu', '#^\*#', '#\*$#'), array('([\x20]*?|[\p{Nd}\p{L}_-]*?)', '[\p{Nd}\p{L}_-]*?', '[\p{Nd}\p{L}_-]*?'), $row['word']);
// Generate the final substitution
$censors['match'][] = '#(?<![\p{Nd}\p{L}_-])(' . $row['word'] . ')(?![\p{Nd}\p{L}_-])#iu';
}
else
{
@@ -297,6 +306,7 @@ class cache extends acm
{
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$sql = 'SELECT user_id, bot_agent, bot_ip
FROM ' . BOTS_TABLE . '
WHERE bot_active = 1

View File

@@ -59,7 +59,7 @@ class phpbb_default_captcha
{
global $user;
$this->code = gen_rand_string(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->seed = hexdec(substr(unique_id(), 4, 10));
// compute $seed % 0x7fffffff
@@ -235,7 +235,7 @@ class phpbb_default_captcha
{
global $db, $user;
$this->code = gen_rand_string(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->confirm_id = md5(unique_id($user->ip));
$this->seed = hexdec(substr(unique_id(), 4, 10));
$this->solved = 0;
@@ -259,7 +259,7 @@ class phpbb_default_captcha
{
global $db, $user;
$this->code = gen_rand_string(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->seed = hexdec(substr(unique_id(), 4, 10));
$this->solved = 0;
// compute $seed % 0x7fffffff
@@ -281,7 +281,7 @@ class phpbb_default_captcha
{
global $db, $user;
$this->code = gen_rand_string(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->code = gen_rand_string_friendly(mt_rand(CAPTCHA_MIN_CHARS, CAPTCHA_MAX_CHARS));
$this->seed = hexdec(substr(unique_id(), 4, 10));
$this->solved = 0;
// compute $seed % 0x7fffffff

View File

@@ -314,10 +314,7 @@ class phpbb_recaptcha extends phpbb_default_captcha
}
else
{
if ($answers[1] === 'incorrect-captcha-sol')
{
return $user->lang['RECAPTCHA_INCORRECT'];
}
return $user->lang['RECAPTCHA_INCORRECT'];
}
}

View File

@@ -25,7 +25,7 @@ if (!defined('IN_PHPBB'))
*/
// phpBB Version
define('PHPBB_VERSION', '3.0.7');
define('PHPBB_VERSION', '3.0.8-RC1');
// QA-related
// define('PHPBB_QA', 1);
@@ -69,6 +69,10 @@ define('LOGIN_ERROR_ATTEMPTS', 13);
define('LOGIN_ERROR_EXTERNAL_AUTH', 14);
define('LOGIN_ERROR_PASSWORD_CONVERT', 15);
// Maximum login attempts
// The value is arbitrary, but it has to fit into the user_login_attempts field.
define('LOGIN_ATTEMPTS_MAX', 100);
// Group settings
define('GROUP_OPEN', 0);
define('GROUP_CLOSED', 1);
@@ -117,6 +121,10 @@ define('NOTIFY_EMAIL', 0);
define('NOTIFY_IM', 1);
define('NOTIFY_BOTH', 2);
// Notify status
define('NOTIFY_YES', 0);
define('NOTIFY_NO', 1);
// Email Priority Settings
define('MAIL_LOW_PRIORITY', 4);
define('MAIL_NORMAL_PRIORITY', 3);

View File

@@ -160,6 +160,36 @@ class phpbb_db_tools
'VARBINARY' => '[varchar] (255)',
),
'mssqlnative' => array(
'INT:' => '[int]',
'BINT' => '[float]',
'UINT' => '[int]',
'UINT:' => '[int]',
'TINT:' => '[int]',
'USINT' => '[int]',
'BOOL' => '[int]',
'VCHAR' => '[varchar] (255)',
'VCHAR:' => '[varchar] (%d)',
'CHAR:' => '[char] (%d)',
'XSTEXT' => '[varchar] (1000)',
'STEXT' => '[varchar] (3000)',
'TEXT' => '[varchar] (8000)',
'MTEXT' => '[text]',
'XSTEXT_UNI'=> '[varchar] (100)',
'STEXT_UNI' => '[varchar] (255)',
'TEXT_UNI' => '[varchar] (4000)',
'MTEXT_UNI' => '[text]',
'TIMESTAMP' => '[int]',
'DECIMAL' => '[float]',
'DECIMAL:' => '[float]',
'PDECIMAL' => '[float]',
'PDECIMAL:' => '[float]',
'VCHAR_UNI' => '[varchar] (255)',
'VCHAR_UNI:'=> '[varchar] (%d)',
'VCHAR_CI' => '[varchar] (255)',
'VARBINARY' => '[varchar] (255)',
),
'oracle' => array(
'INT:' => 'number(%d)',
'BINT' => 'number(20)',
@@ -261,7 +291,7 @@ class phpbb_db_tools
* A list of supported DBMS. We change this class to support more DBMS, the DBMS itself only need to follow some rules.
* @var array
*/
var $supported_dbms = array('firebird', 'mssql', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite');
var $supported_dbms = array('firebird', 'mssql', 'mssqlnative', 'mysql_40', 'mysql_41', 'oracle', 'postgres', 'sqlite');
/**
* This is set to true if user only wants to return the 'to-be-executed' SQL statement(s) (as an array).
@@ -307,6 +337,10 @@ class phpbb_db_tools
$this->sql_layer = 'mssql';
break;
case 'mssqlnative':
$this->sql_layer = 'mssqlnative';
break;
default:
$this->sql_layer = $this->db->sql_layer;
break;
@@ -368,6 +402,7 @@ class phpbb_db_tools
switch ($this->sql_layer)
{
case 'mssql':
case 'mssqlnative':
$table_sql = 'CREATE TABLE [' . $table_name . '] (' . "\n";
break;
@@ -386,6 +421,7 @@ class phpbb_db_tools
switch ($this->sql_layer)
{
case 'mssql':
case 'mssqlnative':
$columns[] = "\t [{$column_name}] " . $prepared_column['column_type_sql_default'];
break;
@@ -425,6 +461,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$table_sql .= "\n) ON [PRIMARY]" . (($create_textimage) ? ' TEXTIMAGE_ON [PRIMARY]' : '');
$statements[] = $table_sql;
break;
@@ -453,6 +490,7 @@ class phpbb_db_tools
case 'firebird':
case 'mssql':
case 'mssqlnative':
// We need the data here
$old_return_statements = $this->return_statements;
$this->return_statements = true;
@@ -573,7 +611,7 @@ class phpbb_db_tools
* drop_columns: Removing/Dropping columns
* add_primary_keys: adding primary keys
* add_unique_index: adding an unique index
* add_index: adding an index
* add_index: adding an index (can be column:index_size if you need to provide size)
*
* The values are in this format:
* {TABLE NAME} => array(
@@ -970,6 +1008,7 @@ class phpbb_db_tools
// same deal with PostgreSQL, we must perform more complex operations than
// we technically could
case 'mssql':
case 'mssqlnative':
$sql = "SELECT c.name
FROM syscolumns c
LEFT JOIN sysobjects o ON c.id = o.id
@@ -1187,6 +1226,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$sql .= " {$column_type} ";
$sql_default = " {$column_type} ";
@@ -1335,6 +1375,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$statements[] = 'ALTER TABLE [' . $table_name . '] ADD [' . $column_name . '] ' . $column_data['column_type_sql_default'];
break;
@@ -1455,6 +1496,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$statements[] = 'ALTER TABLE [' . $table_name . '] DROP COLUMN [' . $column_name . ']';
break;
@@ -1549,6 +1591,7 @@ class phpbb_db_tools
switch ($this->sql_layer)
{
case 'mssql':
case 'mssqlnative':
$statements[] = 'DROP INDEX ' . $table_name . '.' . $index_name;
break;
@@ -1652,6 +1695,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$sql = "ALTER TABLE [{$table_name}] WITH NOCHECK ADD ";
$sql .= "CONSTRAINT [PK_{$table_name}] PRIMARY KEY CLUSTERED (";
$sql .= '[' . implode("],\n\t\t[", $column) . ']';
@@ -1745,6 +1789,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$statements[] = 'CREATE UNIQUE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ') ON [PRIMARY]';
break;
}
@@ -1759,6 +1804,12 @@ class phpbb_db_tools
{
$statements = array();
// remove index length unless MySQL4
if ('mysql_40' != $this->sql_layer)
{
$column = preg_replace('#:.*$#', '', $column);
}
switch ($this->sql_layer)
{
case 'firebird':
@@ -1769,11 +1820,22 @@ class phpbb_db_tools
break;
case 'mysql_40':
// add index size to definition as required by MySQL4
foreach ($column as $i => $col)
{
if (false !== strpos($col, ':'))
{
list($col, $index_size) = explode(':', $col);
$column[$i] = "$col($index_size)";
}
}
// no break
case 'mysql_41':
$statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ')';
break;
case 'mssql':
case 'mssqlnative':
$statements[] = 'CREATE INDEX ' . $index_name . ' ON ' . $table_name . '(' . implode(', ', $column) . ') ON [PRIMARY]';
break;
}
@@ -1791,7 +1853,7 @@ class phpbb_db_tools
{
$index_array = array();
if ($this->sql_layer == 'mssql')
if ($this->sql_layer == 'mssql' || $this->sql_layer == 'mssqlnative')
{
$sql = "EXEC sp_statistics '$table_name'";
$result = $this->db->sql_query($sql);
@@ -1900,6 +1962,7 @@ class phpbb_db_tools
break;
case 'mssql':
case 'mssqlnative':
$statements[] = 'ALTER TABLE [' . $table_name . '] ALTER COLUMN [' . $column_name . '] ' . $column_data['column_type_sql'];
if (!empty($column_data['default']))

View File

@@ -63,10 +63,19 @@ class dbal_firebird extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache forced to false for Interbase
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
/**
* force $use_cache false. I didn't research why the caching code there is no caching code
* but I assume its because the IB extension provides a direct method to access it
* without a query.
*/
$use_cache = false;
if ($this->service_handle !== false && function_exists('ibase_server_info'))
{
return @ibase_server_info($this->service_handle, IBASE_SVC_SERVER_VERSION);

View File

@@ -65,13 +65,14 @@ class dbal_mssql extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache If true, it is safe to retrieve the value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (empty($cache) || ($this->sql_server_version = $cache->get('mssql_version')) === false)
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mssql_version')) === false)
{
$result_id = @mssql_query("SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition')", $this->db_connect_id);
@@ -84,7 +85,7 @@ class dbal_mssql extends dbal
$this->sql_server_version = ($row) ? trim(implode(' ', $row)) : 0;
if (!empty($cache))
if (!empty($cache) && $use_cache)
{
$cache->put('mssql_version', $this->sql_server_version);
}

View File

@@ -76,13 +76,14 @@ class dbal_mssql_odbc extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache If true, it is safe to retrieve the value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (empty($cache) || ($this->sql_server_version = $cache->get('mssqlodbc_version')) === false)
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mssqlodbc_version')) === false)
{
$result_id = @odbc_exec($this->db_connect_id, "SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition')");
@@ -95,7 +96,7 @@ class dbal_mssql_odbc extends dbal
$this->sql_server_version = ($row) ? trim(implode(' ', $row)) : 0;
if (!empty($cache))
if (!empty($cache) && $use_cache)
{
$cache->put('mssqlodbc_version', $this->sql_server_version);
}

View File

@@ -0,0 +1,641 @@
<?php
/**
*
* @package dbal
* @version $Id$
* @copyright (c) 2010 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
* This is the MS SQL Server Native database abstraction layer.
* PHP mssql native driver required.
* @author Chris Pucci
*
*/
/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
exit;
}
include_once($phpbb_root_path . 'includes/db/dbal.' . $phpEx);
/**
* Prior to version 1.1 the SQL Server Native PHP driver didn't support sqlsrv_num_rows, or cursor based seeking so we recall all rows into an array
* and maintain our own cursor index into that array.
*/
class result_mssqlnative
{
public function result_mssqlnative($queryresult = false)
{
$this->m_cursor = 0;
$this->m_rows = array();
$this->m_num_fields = sqlsrv_num_fields($queryresult);
$this->m_field_meta = sqlsrv_field_metadata($queryresult);
while ($row = sqlsrv_fetch_array($queryresult, SQLSRV_FETCH_ASSOC))
{
if ($row !== null)
{
foreach($row as $k => $v)
{
if (is_object($v) && method_exists($v, 'format'))
{
$row[$k] = $v->format("Y-m-d\TH:i:s\Z");
}
}
$this->m_rows[] = $row;//read results into memory, cursors are not supported
}
}
$this->m_row_count = count($this->m_rows);
}
private function array_to_obj($array, &$obj)
{
foreach ($array as $key => $value)
{
if (is_array($value))
{
$obj->$key = new stdClass();
array_to_obj($value, $obj->$key);
}
else
{
$obj->$key = $value;
}
}
return $obj;
}
public function fetch($mode = SQLSRV_FETCH_BOTH, $object_class = 'stdClass')
{
if ($this->m_cursor >= $this->m_row_count || $this->m_row_count == 0)
{
return false;
}
$ret = false;
$arr_num = array();
if ($mode == SQLSRV_FETCH_NUMERIC || $mode == SQLSRV_FETCH_BOTH)
{
foreach($this->m_rows[$this->m_cursor] as $key => $value)
{
$arr_num[] = $value;
}
}
switch ($mode)
{
case SQLSRV_FETCH_ASSOC:
$ret = $this->m_rows[$this->m_cursor];
break;
case SQLSRV_FETCH_NUMERIC:
$ret = $arr_num;
break;
case 'OBJECT':
$ret = $this->array_to_obj($this->m_rows[$this->m_cursor], $o = new $object_class);
break;
case SQLSRV_FETCH_BOTH:
default:
$ret = $this->m_rows[$this->m_cursor] + $arr_num;
break;
}
$this->m_cursor++;
return $ret;
}
public function get($pos, $fld)
{
return $this->m_rows[$pos][$fld];
}
public function num_rows()
{
return $this->m_row_count;
}
public function seek($iRow)
{
$this->m_cursor = min($iRow, $this->m_row_count);
}
public function num_fields()
{
return $this->m_num_fields;
}
public function field_name($nr)
{
$arr_keys = array_keys($this->m_rows[0]);
return $arr_keys[$nr];
}
public function field_type($nr)
{
$i = 0;
$int_type = -1;
$str_type = '';
foreach ($this->m_field_meta as $meta)
{
if ($nr == $i)
{
$int_type = $meta['Type'];
break;
}
$i++;
}
//http://msdn.microsoft.com/en-us/library/cc296183.aspx contains type table
switch ($int_type)
{
case SQLSRV_SQLTYPE_BIGINT: $str_type = 'bigint'; break;
case SQLSRV_SQLTYPE_BINARY: $str_type = 'binary'; break;
case SQLSRV_SQLTYPE_BIT: $str_type = 'bit'; break;
case SQLSRV_SQLTYPE_CHAR: $str_type = 'char'; break;
case SQLSRV_SQLTYPE_DATETIME: $str_type = 'datetime'; break;
case SQLSRV_SQLTYPE_DECIMAL/*($precision, $scale)*/: $str_type = 'decimal'; break;
case SQLSRV_SQLTYPE_FLOAT: $str_type = 'float'; break;
case SQLSRV_SQLTYPE_IMAGE: $str_type = 'image'; break;
case SQLSRV_SQLTYPE_INT: $str_type = 'int'; break;
case SQLSRV_SQLTYPE_MONEY: $str_type = 'money'; break;
case SQLSRV_SQLTYPE_NCHAR/*($charCount)*/: $str_type = 'nchar'; break;
case SQLSRV_SQLTYPE_NUMERIC/*($precision, $scale)*/: $str_type = 'numeric'; break;
case SQLSRV_SQLTYPE_NVARCHAR/*($charCount)*/: $str_type = 'nvarchar'; break;
case SQLSRV_SQLTYPE_NTEXT: $str_type = 'ntext'; break;
case SQLSRV_SQLTYPE_REAL: $str_type = 'real'; break;
case SQLSRV_SQLTYPE_SMALLDATETIME: $str_type = 'smalldatetime'; break;
case SQLSRV_SQLTYPE_SMALLINT: $str_type = 'smallint'; break;
case SQLSRV_SQLTYPE_SMALLMONEY: $str_type = 'smallmoney'; break;
case SQLSRV_SQLTYPE_TEXT: $str_type = 'text'; break;
case SQLSRV_SQLTYPE_TIMESTAMP: $str_type = 'timestamp'; break;
case SQLSRV_SQLTYPE_TINYINT: $str_type = 'tinyint'; break;
case SQLSRV_SQLTYPE_UNIQUEIDENTIFIER: $str_type = 'uniqueidentifier'; break;
case SQLSRV_SQLTYPE_UDT: $str_type = 'UDT'; break;
case SQLSRV_SQLTYPE_VARBINARY/*($byteCount)*/: $str_type = 'varbinary'; break;
case SQLSRV_SQLTYPE_VARCHAR/*($charCount)*/: $str_type = 'varchar'; break;
case SQLSRV_SQLTYPE_XML: $str_type = 'xml'; break;
default: $str_type = $int_type;
}
return $str_type;
}
public function free()
{
unset($this->m_rows);
return;
}
}
/**
* @package dbal
*/
class dbal_mssqlnative extends dbal
{
var $m_insert_id = NULL;
var $last_query_text = '';
var $query_options = array();
/**
* Connect to server
*/
function sql_connect($sqlserver, $sqluser, $sqlpassword, $database, $port = false, $persistency = false, $new_link = false)
{
# Test for driver support, to avoid suppressed fatal error
if (!function_exists('sqlsrv_connect'))
{
trigger_error('Native MS SQL Server driver for PHP is missing or needs to be updated. Version 1.1 or later is required to install phpBB3. You can download the driver from: http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx\n', E_USER_ERROR);
}
//set up connection variables
$this->persistency = $persistency;
$this->user = $sqluser;
$this->dbname = $database;
$port_delimiter = (defined('PHP_OS') && substr(PHP_OS, 0, 3) === 'WIN') ? ',' : ':';
$this->server = $sqlserver . (($port) ? $port_delimiter . $port : '');
//connect to database
error_reporting(E_ALL);
$this->db_connect_id = sqlsrv_connect($this->server, array(
'Database' => $this->dbname,
'UID' => $this->user,
'PWD' => $sqlpassword
));
return ($this->db_connect_id) ? $this->db_connect_id : $this->sql_error('');
}
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache If true, it is safe to retrieve the value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mssql_version')) === false)
{
$arr_server_info = sqlsrv_server_info($this->db_connect_id);
$this->sql_server_version = $arr_server_info['SQLServerVersion'];
if (!empty($cache) && $use_cache)
{
$cache->put('mssql_version', $this->sql_server_version);
}
}
if ($raw)
{
return $this->sql_server_version;
}
return ($this->sql_server_version) ? 'MSSQL<br />' . $this->sql_server_version : 'MSSQL';
}
/**
* SQL Transaction
* @access private
*/
function _sql_transaction($status = 'begin')
{
switch ($status)
{
case 'begin':
return sqlsrv_begin_transaction($this->db_connect_id);
break;
case 'commit':
return sqlsrv_commit($this->db_connect_id);
break;
case 'rollback':
return sqlsrv_rollback($this->db_connect_id);
break;
}
return true;
}
/**
* Base query method
*
* @param string $query Contains the SQL query which shall be executed
* @param int $cache_ttl Either 0 to avoid caching or the time in seconds which the result shall be kept in cache
* @return mixed When casted to bool the returned value returns true on success and false on failure
*
* @access public
*/
function sql_query($query = '', $cache_ttl = 0)
{
if ($query != '')
{
global $cache;
// EXPLAIN only in extra debug mode
if (defined('DEBUG_EXTRA'))
{
$this->sql_report('start', $query);
}
$this->last_query_text = $query;
$this->query_result = ($cache_ttl && method_exists($cache, 'sql_load')) ? $cache->sql_load($query) : false;
$this->sql_add_num_queries($this->query_result);
if ($this->query_result === false)
{
if (($this->query_result = @sqlsrv_query($this->db_connect_id, $query, array(), $this->query_options)) === false)
{
$this->sql_error($query);
}
// reset options for next query
$this->query_options = array();
if (defined('DEBUG_EXTRA'))
{
$this->sql_report('stop', $query);
}
if ($cache_ttl && method_exists($cache, 'sql_save'))
{
$this->open_queries[(int) $this->query_result] = $this->query_result;
$cache->sql_save($query, $this->query_result, $cache_ttl);
}
else if (strpos($query, 'SELECT') === 0 && $this->query_result)
{
$this->open_queries[(int) $this->query_result] = $this->query_result;
}
}
else if (defined('DEBUG_EXTRA'))
{
$this->sql_report('fromcache', $query);
}
}
else
{
return false;
}
return $this->query_result;
}
/**
* Build LIMIT query
*/
function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0)
{
$this->query_result = false;
// total == 0 means all results - not zero results
if ($offset == 0 && $total !== 0)
{
if (strpos($query, "SELECT") === false)
{
$query = "TOP {$total} " . $query;
}
else
{
$query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP '.$total, $query);
}
}
else if ($offset > 0)
{
$query = preg_replace('/SELECT(\s*DISTINCT)?/Dsi', 'SELECT$1 TOP(10000000) ', $query);
$query = 'SELECT *
FROM (SELECT sub2.*, ROW_NUMBER() OVER(ORDER BY sub2.line2) AS line3
FROM (SELECT 1 AS line2, sub1.* FROM (' . $query . ') AS sub1) as sub2) AS sub3';
if ($total > 0)
{
$query .= ' WHERE line3 BETWEEN ' . ($offset+1) . ' AND ' . ($offset + $total);
}
else
{
$query .= ' WHERE line3 > ' . $offset;
}
}
$result = $this->sql_query($query, $cache_ttl);
return $result;
}
/**
* Return number of affected rows
*/
function sql_affectedrows()
{
return ($this->db_connect_id) ? @sqlsrv_rows_affected($this->db_connect_id) : false;
}
/**
* Fetch current row
*/
function sql_fetchrow($query_id = false)
{
global $cache;
if ($query_id === false)
{
$query_id = $this->query_result;
}
if (isset($cache->sql_rowset[$query_id]))
{
return $cache->sql_fetchrow($query_id);
}
if ($query_id === false)
{
return false;
}
$row = @sqlsrv_fetch_array($query_id, SQLSRV_FETCH_ASSOC);
if ($row)
{
foreach ($row as $key => $value)
{
$row[$key] = ($value === ' ' || $value === NULL) ? '' : $value;
}
// remove helper values from LIMIT queries
if (isset($row['line2']))
{
unset($row['line2'], $row['line3']);
}
}
return $row;
}
/**
* Seek to given row number
* rownum is zero-based
*/
function sql_rowseek($rownum, &$query_id)
{
global $cache;
if (isset($cache->sql_rowset[$query_id]))
{
return $cache->sql_rowseek($rownum, $query_id);
}
$seek = new result_mssqlnative($query_id);
$row = $seek->seek($rownum);
return ($row = $seek->fetch()) ? $row : false;
}
/**
* Get last inserted id after insert statement
*/
function sql_nextid()
{
$result_id = @sqlsrv_query($this->db_connect_id, 'SELECT @@IDENTITY');
if ($result_id !== false)
{
$row = @sqlsrv_fetch_array($result_id);
$id = $row[0];
@sqlsrv_free_stmt($result_id);
return $id;
}
else
{
return false;
}
}
/**
* Free sql result
*/
function sql_freeresult($query_id = false)
{
global $cache;
if ($query_id === false)
{
$query_id = $this->query_result;
}
if (isset($cache->sql_rowset[$query_id]))
{
return $cache->sql_freeresult($query_id);
}
if (isset($this->open_queries[$query_id]))
{
unset($this->open_queries[$query_id]);
return @sqlsrv_free_stmt($query_id);
}
return false;
}
/**
* Escape string used in sql query
*/
function sql_escape($msg)
{
return str_replace(array("'", "\0"), array("''", ''), $msg);
}
/**
* Build LIKE expression
* @access private
*/
function _sql_like_expression($expression)
{
return $expression . " ESCAPE '\\'";
}
/**
* return sql error array
* @access private
*/
function _sql_error()
{
$errors = @sqlsrv_errors(SQLSRV_ERR_ERRORS);
$error_message = '';
$code = 0;
if ($errors != null)
{
foreach ($errors as $error)
{
$error_message .= "SQLSTATE: ".$error[ 'SQLSTATE']."\n";
$error_message .= "code: ".$error[ 'code']."\n";
$code = $error['code'];
$error_message .= "message: ".$error[ 'message']."\n";
}
$this->last_error_result = $error_message;
$error = $this->last_error_result;
}
else
{
$error = (isset($this->last_error_result) && $this->last_error_result) ? $this->last_error_result : array();
}
return array(
'message' => $error,
'code' => $code,
);
}
/**
* Build db-specific query data
* @access private
*/
function _sql_custom_build($stage, $data)
{
return $data;
}
/**
* Close sql connection
* @access private
*/
function _sql_close()
{
return @sqlsrv_close($this->db_connect_id);
}
/**
* Build db-specific report
* @access private
*/
function _sql_report($mode, $query = '')
{
switch ($mode)
{
case 'start':
$html_table = false;
@sqlsrv_query($this->db_connect_id, 'SET SHOWPLAN_TEXT ON;');
if ($result = @sqlsrv_query($this->db_connect_id, $query))
{
@sqlsrv_next_result($result);
while ($row = @sqlsrv_fetch_array($result))
{
$html_table = $this->sql_report('add_select_row', $query, $html_table, $row);
}
}
@sqlsrv_query($this->db_connect_id, 'SET SHOWPLAN_TEXT OFF;');
@sqlsrv_free_stmt($result);
if ($html_table)
{
$this->html_hold .= '</table>';
}
break;
case 'fromcache':
$endtime = explode(' ', microtime());
$endtime = $endtime[0] + $endtime[1];
$result = @sqlsrv_query($this->db_connect_id, $query);
while ($void = @sqlsrv_fetch_array($result))
{
// Take the time spent on parsing rows into account
}
@sqlsrv_free_stmt($result);
$splittime = explode(' ', microtime());
$splittime = $splittime[0] + $splittime[1];
$this->sql_report('record_fromcache', $query, $endtime, $splittime);
break;
}
}
/**
* Utility method used to retrieve number of rows
* Emulates mysql_num_rows
* Used in acp_database.php -> write_data_mssqlnative()
* Requires a static or keyset cursor to be definde via
* mssqlnative_set_query_options()
*/
function mssqlnative_num_rows($res)
{
if ($res !== false)
{
return sqlsrv_num_rows($res);
}
else
{
return false;
}
}
/**
* Allows setting mssqlnative specific query options passed to sqlsrv_query as 4th parameter.
*/
function mssqlnative_set_query_options($options)
{
$this->query_options = $options;
}
}
?>

View File

@@ -96,13 +96,14 @@ class dbal_mysql extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache If true, it is safe to retrieve the value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (empty($cache) || ($this->sql_server_version = $cache->get('mysql_version')) === false)
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mysql_version')) === false)
{
$result = @mysql_query('SELECT VERSION() AS version', $this->db_connect_id);
$row = @mysql_fetch_assoc($result);
@@ -110,7 +111,7 @@ class dbal_mysql extends dbal
$this->sql_server_version = $row['version'];
if (!empty($cache))
if (!empty($cache) && $use_cache)
{
$cache->put('mysql_version', $this->sql_server_version);
}

View File

@@ -80,14 +80,14 @@ class dbal_mysqli extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache If true, it is safe to retrieve the value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (empty($cache) || ($this->sql_server_version = $cache->get('mysqli_version')) === false)
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('mysqli_version')) === false)
{
$result = @mysqli_query($this->db_connect_id, 'SELECT VERSION() AS version');
$row = @mysqli_fetch_assoc($result);
@@ -95,7 +95,7 @@ class dbal_mysqli extends dbal
$this->sql_server_version = $row['version'];
if (!empty($cache))
if (!empty($cache) && $use_cache)
{
$cache->put('mysqli_version', $this->sql_server_version);
}

View File

@@ -56,10 +56,18 @@ class dbal_oracle extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache forced to false for Oracle
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
/**
* force $use_cache false. I didn't research why the caching code below is commented out
* but I assume its because the Oracle extension provides a direct method to access it
* without a query.
*/
$use_cache = false;
/*
global $cache;
@@ -261,6 +269,10 @@ class dbal_oracle extends dbal
{
$cols = explode(', ', $regs[2]);
/* The code inside this comment block breaks clob handling, but does allow the
database restore script to work. If you want to allow no posts longer than 4KB
and/or need the db restore script, uncomment this.
preg_match_all('/\'(?:[^\']++|\'\')*+\'|[\d-.]+/', $regs[3], $vals, PREG_PATTERN_ORDER);
if (sizeof($cols) !== sizeof($vals))
@@ -310,6 +322,7 @@ class dbal_oracle extends dbal
$vals = array(0 => $vals);
}
*/
$inserts = $vals[0];
unset($vals);

View File

@@ -46,7 +46,10 @@ class dbal_postgres extends dbal
if ($sqlserver)
{
if (strpos($sqlserver, ':') !== false)
// $sqlserver can carry a port separated by : for compatibility reasons
// If $sqlserver has more than one : it's probably an IPv6 address.
// In this case we only allow passing a port via the $port variable.
if (substr_count($sqlserver, ':') === 1)
{
list($sqlserver, $port) = explode(':', $sqlserver);
}
@@ -76,7 +79,14 @@ class dbal_postgres extends dbal
$this->persistency = $persistency;
$this->db_connect_id = ($this->persistency) ? @pg_pconnect($connect_string, $new_link) : @pg_connect($connect_string, $new_link);
if ($this->persistency)
{
$this->db_connect_id = (!$new_link) ? @pg_pconnect($connect_string) : @pg_pconnect($connect_string, PGSQL_CONNECT_FORCE_NEW);
}
else
{
$this->db_connect_id = (!$new_link) ? @pg_connect($connect_string) : @pg_connect($connect_string, PGSQL_CONNECT_FORCE_NEW);
}
if ($this->db_connect_id)
{
@@ -98,13 +108,14 @@ class dbal_postgres extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache If true, it is safe to retrieve the value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (empty($cache) || ($this->sql_server_version = $cache->get('pgsql_version')) === false)
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('pgsql_version')) === false)
{
$query_id = @pg_query($this->db_connect_id, 'SELECT VERSION() AS version');
$row = @pg_fetch_assoc($query_id, null);
@@ -112,7 +123,7 @@ class dbal_postgres extends dbal
$this->sql_server_version = (!empty($row['version'])) ? trim(substr($row['version'], 10)) : 0;
if (!empty($cache))
if (!empty($cache) && $use_cache)
{
$cache->put('pgsql_version', $this->sql_server_version);
}

View File

@@ -50,19 +50,24 @@ class dbal_sqlite extends dbal
/**
* Version information about used database
* @param bool $raw if true, only return the fetched sql_server_version
* @param bool $use_cache if true, it is safe to retrieve the stored value from the cache
* @return string sql server version
*/
function sql_server_info($raw = false)
function sql_server_info($raw = false, $use_cache = true)
{
global $cache;
if (empty($cache) || ($this->sql_server_version = $cache->get('sqlite_version')) === false)
if (!$use_cache || empty($cache) || ($this->sql_server_version = $cache->get('sqlite_version')) === false)
{
$result = @sqlite_query('SELECT sqlite_version() AS version', $this->db_connect_id);
$row = @sqlite_fetch_array($result, SQLITE_ASSOC);
$this->sql_server_version = (!empty($row['version'])) ? $row['version'] : 0;
$cache->put('sqlite_version', $this->sql_server_version);
if (!empty($cache) && $use_cache)
{
$cache->put('sqlite_version', $this->sql_server_version);
}
}
return ($raw) ? $this->sql_server_version : 'SQLite ' . $this->sql_server_version;

View File

@@ -114,7 +114,7 @@ function request_var($var_name, $default, $multibyte = false, $cookie = false)
{
$_v = null;
}
set_var($_k, $_k, $sub_key_type);
set_var($_k, $_k, $sub_key_type, $multibyte);
set_var($var[$k][$_k], $_v, $sub_type, $multibyte);
}
}
@@ -175,11 +175,8 @@ function set_config_count($config_name, $increment, $is_dynamic = false)
switch ($db->sql_layer)
{
case 'firebird':
$sql_update = 'CAST(CAST(config_value as integer) + ' . (int) $increment . ' as VARCHAR(255))';
break;
case 'postgres':
$sql_update = 'int4(config_value) + ' . (int) $increment;
$sql_update = 'CAST(CAST(config_value as DECIMAL(255, 0)) + ' . (int) $increment . ' as VARCHAR(255))';
break;
// MySQL, SQlite, mssql, mssql_odbc, oracle
@@ -198,11 +195,28 @@ function set_config_count($config_name, $increment, $is_dynamic = false)
/**
* Generates an alphanumeric random string of given length
*
* @return string
*/
function gen_rand_string($num_chars = 8)
{
// [a, z] + [0, 9] = 36
return substr(strtoupper(base_convert(unique_id(), 16, 36)), 0, $num_chars);
}
/**
* Generates a user-friendly alphanumeric random string of given length
* We remove 0 and O so users cannot confuse those in passwords etc.
*
* @return string
*/
function gen_rand_string_friendly($num_chars = 8)
{
$rand_str = unique_id();
$rand_str = str_replace('0', 'Z', strtoupper(base_convert($rand_str, 16, 35)));
// Remove Z and Y from the base_convert(), replace 0 with Z and O with Y
// [a, z] + [0, 9] - {z, y} = [a, z] + [0, 9] - {0, o} = 34
$rand_str = str_replace(array('0', 'O'), array('Z', 'Y'), strtoupper(base_convert($rand_str, 16, 34)));
return substr($rand_str, 0, $num_chars);
}
@@ -704,7 +718,7 @@ function phpbb_chmod($filename, $perms = CHMOD_READ)
clearstatcache();
if (is_readable($filename) && is_writable($filename))
if (is_readable($filename) && phpbb_is_writable($filename))
{
break;
}
@@ -714,7 +728,7 @@ function phpbb_chmod($filename, $perms = CHMOD_READ)
clearstatcache();
if ((!($perms & CHMOD_READ) || is_readable($filename)) && (!($perms & CHMOD_WRITE) || is_writable($filename)))
if ((!($perms & CHMOD_READ) || is_readable($filename)) && (!($perms & CHMOD_WRITE) || phpbb_is_writable($filename)))
{
break;
}
@@ -724,7 +738,7 @@ function phpbb_chmod($filename, $perms = CHMOD_READ)
clearstatcache();
if ((!($perms & CHMOD_READ) || is_readable($filename)) && (!($perms & CHMOD_WRITE) || is_writable($filename)))
if ((!($perms & CHMOD_READ) || is_readable($filename)) && (!($perms & CHMOD_WRITE) || phpbb_is_writable($filename)))
{
break;
}
@@ -1038,7 +1052,7 @@ function phpbb_own_realpath($path)
// @todo If the file exists fine and open_basedir only has one path we should be able to prepend it
// because we must be inside that basedir, the question is where...
// @internal The slash in is_dir() gets around an open_basedir restriction
if (!@file_exists($resolved) || (!is_dir($resolved . '/') && !is_file($resolved)))
if (!@file_exists($resolved) || (!@is_dir($resolved . '/') && !is_file($resolved)))
{
return false;
}
@@ -1663,10 +1677,11 @@ function get_complete_topic_tracking($forum_id, $topic_ids, $global_announce_lis
* @param string $sql_extra Extra WHERE SQL statement
* @param string $sql_sort ORDER BY SQL sorting statement
* @param string $sql_limit Limits the size of unread topics list, 0 for unlimited query
* @param string $sql_limit_offset Sets the offset of the first row to search, 0 to search from the start
*
* @return array[int][int] Topic ids as keys, mark_time of topic as value
*/
function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $sql_limit = 1001)
function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $sql_limit = 1001, $sql_limit_offset = 0)
{
global $config, $db, $user;
@@ -1712,7 +1727,7 @@ function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $s
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query_limit($sql, $sql_limit);
$result = $db->sql_query_limit($sql, $sql_limit, $sql_limit_offset);
while ($row = $db->sql_fetchrow($result))
{
@@ -1745,7 +1760,7 @@ function get_unread_topics($user_id = false, $sql_extra = '', $sql_sort = '', $s
WHERE t.topic_last_post_time > ' . $user_lastmark . "
$sql_extra
$sql_sort";
$result = $db->sql_query_limit($sql, $sql_limit);
$result = $db->sql_query_limit($sql, $sql_limit, $sql_limit_offset);
while ($row = $db->sql_fetchrow($result))
{
@@ -2139,8 +2154,8 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
{
global $_SID, $_EXTRA_URL, $phpbb_hook;
// Developers using the hook function need to globalise the $_SID and $_EXTRA_URL on their own and also handle it appropiatly.
// They could mimick most of what is within this function
// Developers using the hook function need to globalise the $_SID and $_EXTRA_URL on their own and also handle it appropriately.
// They could mimic most of what is within this function
if (!empty($phpbb_hook) && $phpbb_hook->call_hook(__FUNCTION__, $url, $params, $is_amp, $session_id))
{
if ($phpbb_hook->hook_return(__FUNCTION__))
@@ -2297,6 +2312,8 @@ function redirect($url, $return = false, $disable_cd_check = false)
{
global $db, $cache, $config, $user, $phpbb_root_path;
$failover_flag = false;
if (empty($user->lang))
{
$user->add_lang('common');
@@ -2336,61 +2353,78 @@ function redirect($url, $return = false, $disable_cd_check = false)
// Relative uri
$pathinfo = pathinfo($url);
// Is the uri pointing to the current directory?
if ($pathinfo['dirname'] == '.')
if (!$disable_cd_check && !file_exists($pathinfo['dirname']))
{
$url = str_replace('./', '', $url);
$url = str_replace('../', '', $url);
$pathinfo = pathinfo($url);
// Strip / from the beginning
if ($url && substr($url, 0, 1) == '/')
if (!file_exists($pathinfo['dirname']))
{
$url = substr($url, 1);
// fallback to "last known user page"
// at least this way we know the user does not leave the phpBB root
$url = generate_board_url() . '/' . $user->page['page'];
$failover_flag = true;
}
}
if ($user->page['page_dir'])
if (!$failover_flag)
{
// Is the uri pointing to the current directory?
if ($pathinfo['dirname'] == '.')
{
$url = generate_board_url() . '/' . $user->page['page_dir'] . '/' . $url;
$url = str_replace('./', '', $url);
// Strip / from the beginning
if ($url && substr($url, 0, 1) == '/')
{
$url = substr($url, 1);
}
if ($user->page['page_dir'])
{
$url = generate_board_url() . '/' . $user->page['page_dir'] . '/' . $url;
}
else
{
$url = generate_board_url() . '/' . $url;
}
}
else
{
// Used ./ before, but $phpbb_root_path is working better with urls within another root path
$root_dirs = explode('/', str_replace('\\', '/', phpbb_realpath($phpbb_root_path)));
$page_dirs = explode('/', str_replace('\\', '/', phpbb_realpath($pathinfo['dirname'])));
$intersection = array_intersect_assoc($root_dirs, $page_dirs);
$root_dirs = array_diff_assoc($root_dirs, $intersection);
$page_dirs = array_diff_assoc($page_dirs, $intersection);
$dir = str_repeat('../', sizeof($root_dirs)) . implode('/', $page_dirs);
// Strip / from the end
if ($dir && substr($dir, -1, 1) == '/')
{
$dir = substr($dir, 0, -1);
}
// Strip / from the beginning
if ($dir && substr($dir, 0, 1) == '/')
{
$dir = substr($dir, 1);
}
$url = str_replace($pathinfo['dirname'] . '/', '', $url);
// Strip / from the beginning
if (substr($url, 0, 1) == '/')
{
$url = substr($url, 1);
}
$url = (!empty($dir) ? $dir . '/' : '') . $url;
$url = generate_board_url() . '/' . $url;
}
}
else
{
// Used ./ before, but $phpbb_root_path is working better with urls within another root path
$root_dirs = explode('/', str_replace('\\', '/', phpbb_realpath($phpbb_root_path)));
$page_dirs = explode('/', str_replace('\\', '/', phpbb_realpath($pathinfo['dirname'])));
$intersection = array_intersect_assoc($root_dirs, $page_dirs);
$root_dirs = array_diff_assoc($root_dirs, $intersection);
$page_dirs = array_diff_assoc($page_dirs, $intersection);
$dir = str_repeat('../', sizeof($root_dirs)) . implode('/', $page_dirs);
// Strip / from the end
if ($dir && substr($dir, -1, 1) == '/')
{
$dir = substr($dir, 0, -1);
}
// Strip / from the beginning
if ($dir && substr($dir, 0, 1) == '/')
{
$dir = substr($dir, 1);
}
$url = str_replace($pathinfo['dirname'] . '/', '', $url);
// Strip / from the beginning
if (substr($url, 0, 1) == '/')
{
$url = substr($url, 1);
}
$url = (!empty($dir) ? $dir . '/' : '') . $url;
$url = generate_board_url() . '/' . $url;
}
}
// Make sure no linebreaks are there... to prevent http response splitting for PHP < 4.4.2
@@ -2502,6 +2536,11 @@ function build_url($strip_vars = false)
$key = $arguments[0];
unset($arguments[0]);
if ($key === '')
{
continue;
}
$query[$key] = implode('=', $arguments);
}
@@ -2562,6 +2601,47 @@ function meta_refresh($time, $url, $disable_cd_check = false)
return $url;
}
/**
* Outputs correct status line header.
*
* Depending on php sapi one of the two following forms is used:
*
* Status: 404 Not Found
*
* HTTP/1.x 404 Not Found
*
* HTTP version is taken from HTTP_VERSION environment variable,
* and defaults to 1.0.
*
* Sample usage:
*
* send_status_line(404, 'Not Found');
*
* @param int $code HTTP status code
* @param string $message Message for the status code
* @return void
*/
function send_status_line($code, $message)
{
if (substr(strtolower(@php_sapi_name()), 0, 3) === 'cgi')
{
// in theory, we shouldn't need that due to php doing it. Reality offers a differing opinion, though
header("Status: $code $message", true, $code);
}
else
{
if (isset($_SERVER['HTTP_VERSION']))
{
$version = $_SERVER['HTTP_VERSION'];
}
else
{
$version = 'HTTP/1.0';
}
header("$version $code $message", true, $code);
}
}
//Form validation
@@ -3297,7 +3377,9 @@ function get_preg_expression($mode)
switch ($mode)
{
case 'email':
return '(?:[a-z0-9\'\.\-_\+\|]++|&amp;)+@[a-z0-9\-]+\.(?:[a-z0-9\-]+\.)*[a-z]+';
// Regex written by James Watts and Francisco Jose Martin Moreno
// http://fightingforalostcause.net/misc/2006/compare-email-regex.php
return '([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\'\*\+\-\/\=\?\^\`{\|\}\~]|&amp;)+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)';
break;
case 'bbcode_htm':
@@ -3319,7 +3401,7 @@ function get_preg_expression($mode)
break;
case 'ipv6':
return '#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){5}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:))$#i';
return '#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){0,5}(?:[\dA-F]{1,4}(?::[\dA-F]{1,4})?|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:)|(?:::))$#i';
break;
case 'url':
@@ -3380,25 +3462,110 @@ function short_ipv6($ip, $length)
/**
* Wrapper for php's checkdnsrr function.
*
* The windows failover is from the php manual
* Please make sure to check the return value for === true and === false, since NULL could
* be returned too.
* @param string $host Fully-Qualified Domain Name
* @param string $type Resource record type to lookup
* Supported types are: MX (default), A, AAAA, NS, TXT, CNAME
* Other types may work or may not work
*
* @return true if entry found, false if not, NULL if this function is not supported by this environment
* @return mixed true if entry found,
* false if entry not found,
* null if this function is not supported by this environment
*
* Since null can also be returned, you probably want to compare the result
* with === true or === false,
*
* @author bantu
*/
function phpbb_checkdnsrr($host, $type = '')
function phpbb_checkdnsrr($host, $type = 'MX')
{
$type = (!$type) ? 'MX' : $type;
if (DIRECTORY_SEPARATOR == '\\')
// The dot indicates to search the DNS root (helps those having DNS prefixes on the same domain)
if (substr($host, -1) == '.')
{
if (!function_exists('exec'))
$host_fqdn = $host;
$host = substr($host, 0, -1);
}
else
{
$host_fqdn = $host . '.';
}
// $host has format some.host.example.com
// $host_fqdn has format some.host.example.com.
// If we're looking for an A record we can use gethostbyname()
if ($type == 'A' && function_exists('gethostbyname'))
{
return (@gethostbyname($host_fqdn) == $host_fqdn) ? false : true;
}
// checkdnsrr() is available on Windows since PHP 5.3,
// but until 5.3.3 it only works for MX records
// See: http://bugs.php.net/bug.php?id=51844
// Call checkdnsrr() if
// we're looking for an MX record or
// we're not on Windows or
// we're running a PHP version where #51844 has been fixed
// checkdnsrr() supports AAAA since 5.0.0
// checkdnsrr() supports TXT since 5.2.4
if (
($type == 'MX' || DIRECTORY_SEPARATOR != '\\' || version_compare(PHP_VERSION, '5.3.3', '>=')) &&
($type != 'AAAA' || version_compare(PHP_VERSION, '5.0.0', '>=')) &&
($type != 'TXT' || version_compare(PHP_VERSION, '5.2.4', '>=')) &&
function_exists('checkdnsrr')
)
{
return checkdnsrr($host_fqdn, $type);
}
// dns_get_record() is available since PHP 5; since PHP 5.3 also on Windows,
// but on Windows it does not work reliable for AAAA records before PHP 5.3.1
// Call dns_get_record() if
// we're not looking for an AAAA record or
// we're not on Windows or
// we're running a PHP version where AAAA lookups work reliable
if (
($type != 'AAAA' || DIRECTORY_SEPARATOR != '\\' || version_compare(PHP_VERSION, '5.3.1', '>=')) &&
function_exists('dns_get_record')
)
{
// dns_get_record() expects an integer as second parameter
// We have to convert the string $type to the corresponding integer constant.
$type_constant = 'DNS_' . $type;
$type_param = (defined($type_constant)) ? constant($type_constant) : DNS_ANY;
// dns_get_record() might throw E_WARNING and return false for records that do not exist
$resultset = @dns_get_record($host_fqdn, $type_param);
if (empty($resultset) || !is_array($resultset))
{
return NULL;
return false;
}
else if ($type_param == DNS_ANY)
{
// $resultset is a non-empty array
return true;
}
// @exec('nslookup -retry=1 -timout=1 -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host), $output);
@exec('nslookup -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host) . '.', $output);
foreach ($resultset as $result)
{
if (
isset($result['host']) && $result['host'] == $host &&
isset($result['type']) && $result['type'] == $type
)
{
return true;
}
}
return false;
}
// If we're on Windows we can still try to call nslookup via exec() as a last resort
if (DIRECTORY_SEPARATOR == '\\' && function_exists('exec'))
{
@exec('nslookup -type=' . escapeshellarg($type) . ' ' . escapeshellarg($host_fqdn), $output);
// If output is empty, the nslookup failed
if (empty($output))
@@ -3408,25 +3575,71 @@ function phpbb_checkdnsrr($host, $type = '')
foreach ($output as $line)
{
if (!trim($line))
$line = trim($line);
if (empty($line))
{
continue;
}
// Valid records begin with host name:
if (strpos($line, $host) === 0)
// Squash tabs and multiple whitespaces to a single whitespace.
$line = preg_replace('/\s+/', ' ', $line);
switch ($type)
{
return true;
case 'MX':
if (stripos($line, "$host MX") === 0)
{
return true;
}
break;
case 'NS':
if (stripos($line, "$host nameserver") === 0)
{
return true;
}
break;
case 'TXT':
if (stripos($line, "$host text") === 0)
{
return true;
}
break;
case 'CNAME':
if (stripos($line, "$host canonical name") === 0)
{
return true;
}
default:
case 'A':
case 'AAAA':
if (!empty($host_matches))
{
// Second line
if (stripos($line, "Address: ") === 0)
{
return true;
}
else
{
$host_matches = false;
}
}
else if (stripos($line, "Name: $host") === 0)
{
// First line
$host_matches = true;
}
break;
}
}
return false;
}
else if (function_exists('checkdnsrr'))
{
// The dot indicates to search the DNS root (helps those having DNS prefixes on the same domain)
return (checkdnsrr($host . '.', $type)) ? true : false;
}
return NULL;
}
@@ -3540,7 +3753,7 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
}
// Do not send 200 OK, but service unavailable on errors
header('HTTP/1.1 503 Service Unavailable');
send_status_line(503, 'Service Unavailable');
garbage_collection();
@@ -3609,6 +3822,11 @@ function msg_handler($errno, $msg_text, $errfile, $errline)
$user->setup();
}
if ($msg_text == 'ERROR_NO_ATTACHMENT' || $msg_text == 'NO_FORUM' || $msg_text == 'NO_TOPIC' || $msg_text == 'NO_USER')
{
send_status_line(404, 'Not Found');
}
$msg_text = (!empty($user->lang[$msg_text])) ? $user->lang[$msg_text] : $msg_text;
$msg_title = (!isset($msg_title)) ? $user->lang['INFORMATION'] : ((!empty($user->lang[$msg_title])) ? $user->lang[$msg_title] : $msg_title);
@@ -4005,7 +4223,8 @@ function phpbb_http_login($param)
}
else if ($auth_result['status'] == LOGIN_ERROR_ATTEMPTS)
{
header('HTTP/1.0 401 Unauthorized');
send_status_line(401, 'Unauthorized');
trigger_error('NOT_AUTHORISED');
}
}
@@ -4017,7 +4236,7 @@ function phpbb_http_login($param)
$param['auth_message'] = preg_replace('/[\x80-\xFF]/', '?', $param['auth_message']);
header('WWW-Authenticate: Basic realm="' . $param['auth_message'] . '"');
header('HTTP/1.0 401 Unauthorized');
send_status_line(401, 'Unauthorized');
trigger_error('NOT_AUTHORISED');
}
@@ -4238,7 +4457,7 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
'S_TOPIC_ID' => $topic_id,
'S_LOGIN_ACTION' => ((!defined('ADMIN_START')) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login') : append_sid("index.$phpEx", false, true, $user->session_id)),
'S_LOGIN_REDIRECT' => build_hidden_fields(array('redirect' => str_replace('&amp;', '&', build_url()))),
'S_LOGIN_REDIRECT' => build_hidden_fields(array('redirect' => build_url())),
'S_ENABLE_FEEDS' => ($config['feed_enable']) ? true : false,
'S_ENABLE_FEEDS_OVERALL' => ($config['feed_overall']) ? true : false,
@@ -4247,6 +4466,8 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
'S_ENABLE_FEEDS_TOPICS_ACTIVE' => ($config['feed_topics_active']) ? true : false,
'S_ENABLE_FEEDS_NEWS' => ($s_feed_news) ? true : false,
'S_LOAD_UNREADS' => ($config['load_unreads_search'] && ($config['load_anon_lastread'] || $user->data['is_registered'])) ? true : false,
'T_THEME_PATH' => "{$web_path}styles/" . $user->theme['theme_path'] . '/theme',
'T_TEMPLATE_PATH' => "{$web_path}styles/" . $user->theme['template_path'] . '/template',
'T_SUPER_TEMPLATE_PATH' => (isset($user->theme['template_inherit_path']) && $user->theme['template_inherit_path']) ? "{$web_path}styles/" . $user->theme['template_inherit_path'] . '/template' : "{$web_path}styles/" . $user->theme['template_path'] . '/template',
@@ -4259,7 +4480,7 @@ function page_header($page_title = '', $display_online_list = true, $item_id = 0
'T_ICONS_PATH' => "{$web_path}{$config['icons_path']}/",
'T_RANKS_PATH' => "{$web_path}{$config['ranks_path']}/",
'T_UPLOAD_PATH' => "{$web_path}{$config['upload_path']}/",
'T_STYLESHEET_LINK' => (!$user->theme['theme_storedb']) ? "{$web_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : append_sid("{$phpbb_root_path}style.$phpEx", 'id=' . $user->theme['style_id'] . '&amp;lang=' . $user->data['user_lang'], true, $user->session_id),
'T_STYLESHEET_LINK' => (!$user->theme['theme_storedb']) ? "{$web_path}styles/" . $user->theme['theme_path'] . '/theme/stylesheet.css' : append_sid("{$phpbb_root_path}style.$phpEx", 'id=' . $user->theme['style_id'] . '&amp;lang=' . $user->data['user_lang']),
'T_STYLESHEET_NAME' => $user->theme['theme_name'],
'T_THEME_NAME' => $user->theme['theme_path'],

View File

@@ -96,16 +96,12 @@ function make_forum_select($select_id = false, $ignore_id = false, $ignore_acl =
$right = $row['right_id'];
$disabled = false;
if (!$ignore_acl && $auth->acl_get('f_list', $row['forum_id']))
if (!$ignore_acl && $auth->acl_gets(array('f_list', 'a_forum', 'a_forumadd', 'a_forumdel'), $row['forum_id']))
{
if ($only_acl_post && !$auth->acl_get('f_post', $row['forum_id']) || (!$auth->acl_get('m_approve', $row['forum_id']) && !$auth->acl_get('f_noapprove', $row['forum_id'])))
{
$disabled = true;
}
else if (!$only_acl_post && !$auth->acl_gets(array('f_list', 'a_forum', 'a_forumadd', 'a_forumdel'), $row['forum_id']))
{
$disabled = true;
}
}
else if (!$ignore_acl)
{
@@ -577,8 +573,8 @@ function move_posts($post_ids, $topic_id, $auto_sync = true)
while ($row = $db->sql_fetchrow($result))
{
$forum_ids[] = $row['forum_id'];
$topic_ids[] = $row['topic_id'];
$forum_ids[] = (int) $row['forum_id'];
$topic_ids[] = (int) $row['topic_id'];
}
$db->sql_freeresult($result);
@@ -595,7 +591,7 @@ function move_posts($post_ids, $topic_id, $auto_sync = true)
}
$sql = 'UPDATE ' . POSTS_TABLE . '
SET forum_id = ' . $forum_row['forum_id'] . ", topic_id = $topic_id
SET forum_id = ' . (int) $forum_row['forum_id'] . ", topic_id = $topic_id
WHERE " . $db->sql_in_set('post_id', $post_ids);
$db->sql_query($sql);
@@ -606,7 +602,7 @@ function move_posts($post_ids, $topic_id, $auto_sync = true)
if ($auto_sync)
{
$forum_ids[] = $forum_row['forum_id'];
$forum_ids[] = (int) $forum_row['forum_id'];
sync('topic_reported', 'topic_id', $topic_ids);
sync('topic_attachment', 'topic_id', $topic_ids);
@@ -675,7 +671,7 @@ function delete_topics($where_type, $where_ids, $auto_sync = true, $post_count_s
$db->sql_transaction('begin');
$table_ary = array(TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, POLL_VOTES_TABLE, POLL_OPTIONS_TABLE, TOPICS_WATCH_TABLE, TOPICS_TABLE);
$table_ary = array(BOOKMARKS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, POLL_VOTES_TABLE, POLL_OPTIONS_TABLE, TOPICS_WATCH_TABLE, TOPICS_TABLE);
foreach ($table_ary as $table)
{
@@ -1129,53 +1125,65 @@ function delete_attachments($mode, $ids, $resync = true)
}
/**
* Remove topic shadows
* Deletes shadow topics pointing to a specified forum.
*
* @param int $forum_id The forum id
* @param string $sql_more Additional WHERE statement, e.g. t.topic_time < (time() - 1234)
* @param bool $auto_sync Will call sync() if this is true
*
* @return array Array with affected forums
*
* @author bantu
*/
function delete_topic_shadows($max_age, $forum_id = '', $auto_sync = true)
function delete_topic_shadows($forum_id, $sql_more = '', $auto_sync = true)
{
$where = (is_array($forum_id)) ? 'AND ' . $db->sql_in_set('t.forum_id', array_map('intval', $forum_id)) : (($forum_id) ? 'AND t.forum_id = ' . (int) $forum_id : '');
global $db;
switch ($db->sql_layer)
if (!$forum_id)
{
case 'mysql4':
case 'mysqli':
$sql = 'DELETE t.*
FROM ' . TOPICS_TABLE . ' t, ' . TOPICS_TABLE . ' t2
WHERE t.topic_moved_id = t2.topic_id
AND t.topic_time < ' . (time() - $max_age)
. $where;
$db->sql_query($sql);
break;
default:
$sql = 'SELECT t.topic_id
FROM ' . TOPICS_TABLE . ' t, ' . TOPICS_TABLE . ' t2
WHERE t.topic_moved_id = t2.topic_id
AND t.topic_time < ' . (time() - $max_age)
. $where;
$result = $db->sql_query($sql);
$topic_ids = array();
while ($row = $db->sql_fetchrow($result))
{
$topic_ids[] = $row['topic_id'];
}
$db->sql_freeresult($result);
if (sizeof($topic_ids))
{
$sql = 'DELETE FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_id', $topic_ids);
$db->sql_query($sql);
}
break;
// Nothing to do.
return;
}
// Set of affected forums we have to resync
$sync_forum_ids = array();
// Amount of topics we select and delete at once.
$batch_size = 500;
do
{
$sql = 'SELECT t2.forum_id, t2.topic_id
FROM ' . TOPICS_TABLE . ' t2, ' . TOPICS_TABLE . ' t
WHERE t2.topic_moved_id = t.topic_id
AND t.forum_id = ' . (int) $forum_id . '
' . (($sql_more) ? 'AND ' . $sql_more : '');
$result = $db->sql_query_limit($sql, $batch_size);
$topic_ids = array();
while ($row = $db->sql_fetchrow($result))
{
$topic_ids[] = (int) $row['topic_id'];
$sync_forum_ids[(int) $row['forum_id']] = (int) $row['forum_id'];
}
$db->sql_freeresult($result);
if (!empty($topic_ids))
{
$sql = 'DELETE FROM ' . TOPICS_TABLE . '
WHERE ' . $db->sql_in_set('topic_id', $topic_ids);
$db->sql_query($sql);
}
}
while (sizeof($topic_ids) == $batch_size);
if ($auto_sync)
{
$where_type = ($forum_id) ? 'forum_id' : '';
sync('forum', $where_type, $forum_id, true, true);
sync('forum', 'forum_id', $sync_forum_ids, true, true);
}
return $sync_forum_ids;
}
/**
@@ -3042,6 +3050,7 @@ function get_database_size()
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$sql = 'SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize
FROM sysfiles';
$result = $db->sql_query($sql, 7200);
@@ -3290,7 +3299,7 @@ function obtain_latest_version_info($force_update = false, $warn_fail = false, $
$errstr = '';
$errno = 0;
$info = get_remote_file('www.phpbb.com', '/updatecheck',
$info = get_remote_file('version.phpbb.com', '/phpbb',
((defined('PHPBB_QA')) ? '30x_qa.txt' : '30x.txt'), $errstr, $errno);
if ($info === false)

View File

@@ -53,13 +53,18 @@ class compress
$filelist = filelist("$phpbb_root_path$src", '', '*');
krsort($filelist);
/**
* Commented out, as adding the folders produces corrupted archives
if ($src_path)
{
$this->data($src_path, '', true, stat("$phpbb_root_path$src"));
}
*/
foreach ($filelist as $path => $file_ary)
{
/**
* Commented out, as adding the folders produces corrupted archives
if ($path)
{
// Same as for src_path
@@ -68,6 +73,7 @@ class compress
$this->data("$src_path$path", '', true, stat("$phpbb_root_path$src$path"));
}
*/
foreach ($file_ary as $file)
{
@@ -502,8 +508,8 @@ class compress_tar extends compress
function compress_tar($mode, $file, $type = '')
{
$type = (!$type) ? $file : $type;
$this->isgz = (strpos($type, '.tar.gz') !== false || strpos($type, '.tgz') !== false) ? true : false;
$this->isbz = (strpos($type, '.tar.bz2') !== false) ? true : false;
$this->isgz = preg_match('#(\.tar\.gz|\.tgz)$#', $type);
$this->isbz = preg_match('#\.tar\.bz2$#', $type);
$this->mode = &$mode;
$this->file = &$file;

View File

@@ -1025,6 +1025,9 @@ function set_user_options()
'bbcode' => array('bit' => 8, 'default' => 1),
'smilies' => array('bit' => 9, 'default' => 1),
'popuppm' => array('bit' => 10, 'default' => 0),
'sig_bbcode' => array('bit' => 15, 'default' => 1),
'sig_smilies' => array('bit' => 16, 'default' => 1),
'sig_links' => array('bit' => 17, 'default' => 1),
);
$option_field = 0;
@@ -1645,6 +1648,7 @@ function mass_auth($ug_type, $forum_id, $ug_id, $acl_list, $setting = ACL_NO)
case 'mssql':
case 'sqlite':
case 'mssqlnative':
$sql = implode(' UNION ALL ', preg_replace('#^(.*?)$#', 'SELECT \1', $sql_subary));
break;
@@ -2302,7 +2306,7 @@ function copy_file($src, $trg, $overwrite = false, $die_on_failure = true, $sour
}
}
if (!is_writable($path))
if (!phpbb_is_writable($path))
{
@chmod($path, 0777);
}
@@ -2337,7 +2341,7 @@ function copy_dir($src, $trg, $copy_subdirs = true, $overwrite = false, $die_on_
@chmod($trg_path, 0777);
}
if (!@is_writable($trg_path))
if (!phpbb_is_writable($trg_path))
{
$bad_dirs[] = path($config['script_path']) . $trg;
}
@@ -2404,7 +2408,7 @@ function copy_dir($src, $trg, $copy_subdirs = true, $overwrite = false, $die_on_
@chmod($trg_path . $dir, 0777);
}
if (!@is_writable($trg_path . $dir))
if (!phpbb_is_writable($trg_path . $dir))
{
$bad_dirs[] = $trg . $dir;
$bad_dirs[] = $trg_path . $dir;

View File

@@ -396,7 +396,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
}
else
{
$folder_alt = ($forum_unread) ? 'NEW_POSTS' : 'NO_NEW_POSTS';
$folder_alt = ($forum_unread) ? 'UNREAD_POSTS' : 'NO_UNREAD_POSTS';
}
// Create last post link information, if appropriate
@@ -425,7 +425,7 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
$s_subforums_list = array();
foreach ($subforums_list as $subforum)
{
$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['NEW_POSTS'] : $user->lang['NO_NEW_POSTS']) . '">' . $subforum['name'] . '</a>';
$s_subforums_list[] = '<a href="' . $subforum['link'] . '" class="subforum ' . (($subforum['unread']) ? 'unread' : 'read') . '" title="' . (($subforum['unread']) ? $user->lang['UNREAD_POSTS'] : $user->lang['NO_UNREAD_POSTS']) . '">' . $subforum['name'] . '</a>';
}
$s_subforums_list = (string) implode(', ', $s_subforums_list);
$catless = ($row['parent_id'] == $root_data['forum_id']) ? true : false;
@@ -660,7 +660,7 @@ function topic_generate_pagination($replies, $url)
$times = 1;
for ($j = 0; $j < $replies + 1; $j += $per_page)
{
$pagination .= '<a href="' . $url . '&amp;start=' . $j . '">' . $times . '</a>';
$pagination .= '<a href="' . $url . ($j == 0 ? '' : '&amp;start=' . $j) . '">' . $times . '</a>';
if ($times == 1 && $total_pages > 5)
{
$pagination .= ' ... ';
@@ -854,7 +854,7 @@ function topic_status(&$topic_row, $replies, $unread_topic, &$folder_img, &$fold
$folder_img = ($unread_topic) ? $folder_new : $folder;
$folder_alt = ($unread_topic) ? 'NEW_POSTS' : (($topic_row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_NEW_POSTS');
$folder_alt = ($unread_topic) ? 'UNREAD_POSTS' : (($topic_row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_UNREAD_POSTS');
// Posted image?
if (!empty($topic_row['topic_posted']) && $topic_row['topic_posted'])
@@ -969,11 +969,16 @@ function display_user_activity(&$userdata)
$forum_ary = array_unique($forum_ary);
$forum_sql = (sizeof($forum_ary)) ? 'AND ' . $db->sql_in_set('forum_id', $forum_ary, true) : '';
$fid_m_approve = $auth->acl_getf('m_approve', true);
$sql_m_approve = (!empty($fid_m_approve)) ? 'OR ' . $db->sql_in_set('forum_id', array_keys($fid_m_approve)) : '';
// Obtain active forum
$sql = 'SELECT forum_id, COUNT(post_id) AS num_posts
FROM ' . POSTS_TABLE . '
WHERE poster_id = ' . $userdata['user_id'] . "
AND post_postcount = 1
AND (post_approved = 1
$sql_m_approve)
$forum_sql
GROUP BY forum_id
ORDER BY num_posts DESC";
@@ -996,6 +1001,8 @@ function display_user_activity(&$userdata)
FROM ' . POSTS_TABLE . '
WHERE poster_id = ' . $userdata['user_id'] . "
AND post_postcount = 1
AND (post_approved = 1
$sql_m_approve)
$forum_sql
GROUP BY topic_id
ORDER BY num_posts DESC";
@@ -1112,10 +1119,10 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,
{
$is_watching = true;
if ($notify_status)
if ($notify_status != NOTIFY_YES)
{
$sql = 'UPDATE ' . $table_sql . "
SET notify_status = 0
SET notify_status = " . NOTIFY_YES . "
WHERE $where_sql = $match_id
AND user_id = $user_id";
$db->sql_query($sql);
@@ -1134,7 +1141,7 @@ function watch_topic_forum($mode, &$s_watching, $user_id, $forum_id, $topic_id,
$is_watching = true;
$sql = 'INSERT INTO ' . $table_sql . " (user_id, $where_sql, notify_status)
VALUES ($user_id, $match_id, 0)";
VALUES ($user_id, $match_id, " . NOTIFY_YES . ')';
$db->sql_query($sql);
$message = $user->lang['ARE_WATCHING_' . strtoupper($mode)] . '<br /><br />' . sprintf($user->lang['RETURN_' . strtoupper($mode)], '<a href="' . $redirect_url . '">', '</a>');
}

View File

@@ -95,6 +95,16 @@ function get_available_dbms($dbms = false, $return_unavailable = false, $only_20
'AVAILABLE' => true,
'2.0.x' => true,
),
'mssqlnative' => array(
'LABEL' => 'MS SQL Server 2005+ [ Native ]',
'SCHEMA' => 'mssql',
'MODULE' => 'sqlsrv',
'DELIM' => 'GO',
'COMMENTS' => 'remove_comments',
'DRIVER' => 'mssqlnative',
'AVAILABLE' => true,
'2.0.x' => false,
),
'oracle' => array(
'LABEL' => 'Oracle',
'SCHEMA' => 'oracle',
@@ -220,6 +230,7 @@ function get_tables($db)
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$sql = "SELECT name
FROM sysobjects
WHERE type='U'";
@@ -313,6 +324,7 @@ function connect_check_db($error_connect, &$error, $dbms_details, $table_prefix,
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$prefix_length = 90;
break;

View File

@@ -631,6 +631,64 @@ class queue
$this->data[$object]['data'][] = $scope;
}
/**
* Obtains exclusive lock on queue cache file.
* Returns resource representing the lock
*/
function lock()
{
// For systems that can't have two processes opening
// one file for writing simultaneously
if (file_exists($this->cache_file . '.lock'))
{
$mode = 'rb';
}
else
{
$mode = 'wb';
}
$lock_fp = @fopen($this->cache_file . '.lock', $mode);
if ($mode == 'wb')
{
if (!$lock_fp)
{
// Two processes may attempt to create lock file at the same time.
// Have the losing process try opening the lock file again for reading
// on the assumption that the winning process created it
$mode = 'rb';
$lock_fp = @fopen($this->cache_file . '.lock', $mode);
}
else
{
// Only need to set mode when the lock file is written
@chmod($this->cache_file . '.lock', 0666);
}
}
if ($lock_fp)
{
@flock($lock_fp, LOCK_EX);
}
return $lock_fp;
}
/**
* Releases lock on queue cache file, using resource obtained from lock()
*/
function unlock($lock_fp)
{
// lock() will return null if opening lock file, and thus locking, failed.
// Accept null values here so that client code does not need to check them
if ($lock_fp)
{
@flock($lock_fp, LOCK_UN);
fclose($lock_fp);
}
}
/**
* Process queue
* Using lock file
@@ -639,24 +697,16 @@ class queue
{
global $db, $config, $phpEx, $phpbb_root_path, $user;
$lock_fp = $this->lock();
set_config('last_queue_run', time(), true);
// Delete stale lock file
if (file_exists($this->cache_file . '.lock') && !file_exists($this->cache_file))
if (!file_exists($this->cache_file) || filemtime($this->cache_file) > time() - $config['queue_interval'])
{
@unlink($this->cache_file . '.lock');
$this->unlock($lock_fp);
return;
}
if (!file_exists($this->cache_file) || (file_exists($this->cache_file . '.lock') && filemtime($this->cache_file) > time() - $config['queue_interval']))
{
return;
}
$fp = @fopen($this->cache_file . '.lock', 'wb');
fclose($fp);
@chmod($this->cache_file . '.lock', 0777);
include($this->cache_file);
foreach ($this->queue_data as $object => $data_ary)
@@ -671,11 +721,18 @@ class queue
$package_size = $data_ary['package_size'];
$num_items = (!$package_size || sizeof($data_ary['data']) < $package_size) ? sizeof($data_ary['data']) : $package_size;
/*
* This code is commented out because it causes problems on some web hosts.
* The core problem is rather restrictive email sending limits.
* This code is nly useful if you have no such restrictions from the
* web host and the package size setting is wrong.
// If the amount of emails to be sent is way more than package_size than we need to increase it to prevent backlogs...
if (sizeof($data_ary['data']) > $package_size * 2.5)
{
$num_items = sizeof($data_ary['data']);
}
*/
switch ($object)
{
@@ -713,6 +770,7 @@ class queue
break;
default:
$this->unlock($lock_fp);
return;
}
@@ -738,8 +796,6 @@ class queue
if (!$result)
{
@unlink($this->cache_file . '.lock');
messenger::error('EMAIL', $err_msg);
continue 2;
}
@@ -783,16 +839,14 @@ class queue
{
if ($fp = @fopen($this->cache_file, 'wb'))
{
@flock($fp, LOCK_EX);
fwrite($fp, "<?php\nif (!defined('IN_PHPBB')) exit;\n\$this->queue_data = unserialize(" . var_export(serialize($this->queue_data), true) . ");\n\n?>");
@flock($fp, LOCK_UN);
fclose($fp);
phpbb_chmod($this->cache_file, CHMOD_READ | CHMOD_WRITE);
}
}
@unlink($this->cache_file . '.lock');
$this->unlock($lock_fp);
}
/**
@@ -805,6 +859,8 @@ class queue
return;
}
$lock_fp = $this->lock();
if (file_exists($this->cache_file))
{
include($this->cache_file);
@@ -824,13 +880,13 @@ class queue
if ($fp = @fopen($this->cache_file, 'w'))
{
@flock($fp, LOCK_EX);
fwrite($fp, "<?php\nif (!defined('IN_PHPBB')) exit;\n\$this->queue_data = unserialize(" . var_export(serialize($this->data), true) . ");\n\n?>");
@flock($fp, LOCK_UN);
fclose($fp);
phpbb_chmod($this->cache_file, CHMOD_READ | CHMOD_WRITE);
}
$this->unlock($lock_fp);
}
}

View File

@@ -85,10 +85,10 @@ function generate_smilies($mode, $forum_id)
if ($mode == 'window')
{
$sql = 'SELECT smiley_url, MIN(emotion) as emotion, MIN(code) AS code, smiley_width, smiley_height
$sql = 'SELECT smiley_url, MIN(emotion) as emotion, MIN(code) AS code, smiley_width, smiley_height, MIN(smiley_order) AS min_smiley_order
FROM ' . SMILIES_TABLE . '
GROUP BY smiley_url, smiley_width, smiley_height
ORDER BY MIN(smiley_order)';
ORDER BY min_smiley_order';
$result = $db->sql_query_limit($sql, $config['smilies_per_page'], $start, 3600);
}
else
@@ -348,7 +348,7 @@ function posting_gen_topic_types($forum_id, $cur_topic_type = POST_NORMAL)
{
$topic_type_array = array_merge(array(0 => array(
'VALUE' => POST_NORMAL,
'S_CHECKED' => ($topic_type == POST_NORMAL) ? ' checked="checked"' : '',
'S_CHECKED' => ($cur_topic_type == POST_NORMAL) ? ' checked="checked"' : '',
'L_TOPIC_TYPE' => $user->lang['POST_NORMAL'])),
$topic_type_array
@@ -1146,7 +1146,7 @@ function topic_review($topic_id, $forum_id, $mode = 'topic_review', $cur_post_id
}
}
unset($rowset[$i]);
unset($rowset[$post_list[$i]]);
}
if ($mode == 'topic_review')
@@ -1201,8 +1201,8 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
FROM ' . (($topic_notification) ? TOPICS_WATCH_TABLE : FORUMS_WATCH_TABLE) . ' w, ' . USERS_TABLE . ' u
WHERE w.' . (($topic_notification) ? 'topic_id' : 'forum_id') . ' = ' . (($topic_notification) ? $topic_id : $forum_id) . "
AND w.user_id NOT IN ($sql_ignore_users)
AND w.notify_status = 0
AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
AND w.notify_status = " . NOTIFY_YES . '
AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')
AND u.user_id = w.user_id';
$result = $db->sql_query($sql);
@@ -1234,8 +1234,8 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u
WHERE fw.forum_id = $forum_id
AND fw.user_id NOT IN ($sql_ignore_users)
AND fw.notify_status = 0
AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
AND fw.notify_status = " . NOTIFY_YES . '
AND u.user_type IN (' . USER_NORMAL . ', ' . USER_FOUNDER . ')
AND u.user_id = fw.user_id';
$result = $db->sql_query($sql);
@@ -1344,8 +1344,8 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
if (!empty($update_notification['topic']))
{
$sql = 'UPDATE ' . TOPICS_WATCH_TABLE . "
SET notify_status = 1
$sql = 'UPDATE ' . TOPICS_WATCH_TABLE . '
SET notify_status = ' . NOTIFY_NO . "
WHERE topic_id = $topic_id
AND " . $db->sql_in_set('user_id', $update_notification['topic']);
$db->sql_query($sql);
@@ -1353,8 +1353,8 @@ function user_notification($mode, $subject, $topic_title, $forum_name, $forum_id
if (!empty($update_notification['forum']))
{
$sql = 'UPDATE ' . FORUMS_WATCH_TABLE . "
SET notify_status = 1
$sql = 'UPDATE ' . FORUMS_WATCH_TABLE . '
SET notify_status = ' . NOTIFY_NO . "
WHERE forum_id = $forum_id
AND " . $db->sql_in_set('user_id', $update_notification['forum']);
$db->sql_query($sql);
@@ -2537,7 +2537,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
if ($mode == 'post' || $mode == 'reply' || $mode == 'quote')
{
// Mark this topic as posted to
markread('post', $data['forum_id'], $data['topic_id'], $data['post_time']);
markread('post', $data['forum_id'], $data['topic_id']);
}
// Mark this topic as read
@@ -2583,7 +2583,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
}
// Send Notifications
if ($mode != 'edit' && $mode != 'delete' && $post_approval)
if (($mode == 'reply' || $mode == 'quote' || $mode == 'post') && $post_approval)
{
user_notification($mode, $subject, $data['topic_title'], $data['forum_name'], $data['forum_id'], $data['topic_id'], $data['post_id']);
}

View File

@@ -1380,6 +1380,9 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)
}
}
// First of all make sure the subject are having the correct length.
$subject = truncate_string($subject);
$db->sql_transaction('begin');
$sql = '';
@@ -1751,6 +1754,8 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
return false;
}
$title = $row['message_subject'];
$rowset = array();
$bbcode_bitfield = '';
$folder_url = append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm') . '&amp;folder=';
@@ -1774,8 +1779,6 @@ function message_history($msg_id, $user_id, $message_row, $folder, $in_post_mode
while ($row = $db->sql_fetchrow($result));
$db->sql_freeresult($result);
$title = $row['message_subject'];
if (sizeof($rowset) == 1 && !$in_post_mode)
{
return false;

View File

@@ -366,6 +366,7 @@ class custom_profile
case 'sqlite':
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$right_delim = ']';
$left_delim = '[';
break;
@@ -542,8 +543,9 @@ class custom_profile
else if ($day && $month && $year)
{
global $user;
// d/m/y 00:00 GMT isn't necessarily on the same d/m/y in the user's timezone, so add the timezone seconds
return $user->format_date(gmmktime(0, 0, 0, $month, $day, $year) + $user->timezone + $user->dst, $user->lang['DATE_FORMAT'], true);
// Date should display as the same date for every user regardless of timezone, so remove offset
// to compensate for the offset added by user::format_date()
return $user->format_date(gmmktime(0, 0, 0, $month, $day, $year) - ($user->timezone + $user->dst), $user->lang['DATE_FORMAT'], true);
}
return $value;
@@ -876,6 +878,11 @@ class custom_profile
$now = getdate();
$row['field_default_value'] = sprintf('%2d-%2d-%4d', $now['mday'], $now['mon'], $now['year']);
}
else if ($row['field_default_value'] === '' && $row['field_type'] == FIELD_INT)
{
// We cannot insert an empty string into an integer column.
$row['field_default_value'] = NULL;
}
$cp_data['pf_' . $row['field_ident']] = (in_array($row['field_type'], array(FIELD_TEXT, FIELD_STRING))) ? $row['lang_default_value'] : $row['field_default_value'];
}

View File

@@ -58,8 +58,9 @@ class filespec
$this->filename = $upload_ary['tmp_name'];
$this->filesize = $upload_ary['size'];
$name = trim(utf8_htmlspecialchars(utf8_basename($upload_ary['name'])));
$this->realname = $this->uploadname = (STRIP) ? stripslashes($name) : $name;
$name = (STRIP) ? stripslashes($upload_ary['name']) : $upload_ary['name'];
$name = trim(utf8_htmlspecialchars(utf8_basename($name)));
$this->realname = $this->uploadname = $name;
$this->mimetype = $upload_ary['type'];
// Opera adds the name to the mime type
@@ -775,7 +776,18 @@ class fileupload
{
if ($get_info)
{
$data .= @fread($fsock, 1024);
$block = @fread($fsock, 1024);
$filesize += strlen($block);
if ($this->max_filesize && $filesize > $this->max_filesize)
{
$max_filesize = get_formatted_filesize($this->max_filesize, false);
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
return $file;
}
$data .= $block;
}
else
{
@@ -791,6 +803,18 @@ class fileupload
{
$upload_ary['type'] = rtrim(str_replace('content-type: ', '', strtolower($line)));
}
else if ($this->max_filesize && stripos($line, 'content-length: ') !== false)
{
$length = (int) str_replace('content-length: ', '', strtolower($line));
if ($length && $length > $this->max_filesize)
{
$max_filesize = get_formatted_filesize($this->max_filesize, false);
$file = new fileerror(sprintf($user->lang[$this->error_prefix . 'WRONG_FILESIZE'], $max_filesize['value'], $max_filesize['unit']));
return $file;
}
}
else if (stripos($line, '404 not found') !== false)
{
$file = new fileerror($user->lang[$this->error_prefix . 'URL_NOT_FOUND']);

View File

@@ -297,6 +297,7 @@ function user_add($user_row, $cp_data = false)
if ($config['new_member_group_default'])
{
group_user_add($add_group_id, $user_id, false, false, true);
$user_row['group_id'] = $add_group_id;
}
else
{
@@ -527,7 +528,7 @@ function user_delete($mode, $user_id, $post_username = false)
$db->sql_transaction('begin');
$table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE);
$table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE, PRIVMSGS_FOLDER_TABLE, PRIVMSGS_RULES_TABLE);
foreach ($table_ary as $table)
{
@@ -765,7 +766,8 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas
if (sizeof($ban_other) == 3 && ((int)$ban_other[0] < 9999) &&
(strlen($ban_other[0]) == 4) && (strlen($ban_other[1]) == 2) && (strlen($ban_other[2]) == 2))
{
$ban_end = max($current_time, gmmktime(0, 0, 0, (int)$ban_other[1], (int)$ban_other[2], (int)$ban_other[0]));
$time_offset = (isset($user->timezone) && isset($user->dst)) ? (int) $user->timezone + (int) $user->dst : 0;
$ban_end = max($current_time, gmmktime(0, 0, 0, (int)$ban_other[1], (int)$ban_other[2], (int)$ban_other[0]) - $time_offset);
}
else
{
@@ -836,14 +838,15 @@ function user_ban($mode, $ban, $ban_len, $ban_len_other, $ban_exclude, $ban_reas
FROM ' . USERS_TABLE . '
WHERE ' . $db->sql_in_set('username_clean', $sql_usernames);
// Do not allow banning yourself
// Do not allow banning yourself, the guest account, or founders.
$non_bannable = array($user->data['user_id'], ANONYMOUS);
if (sizeof($founder))
{
$sql .= ' AND ' . $db->sql_in_set('user_id', array_merge(array_keys($founder), array($user->data['user_id'])), true);
$sql .= ' AND ' . $db->sql_in_set('user_id', array_merge(array_keys($founder), $non_bannable), true);
}
else
{
$sql .= ' AND user_id <> ' . $user->data['user_id'];
$sql .= ' AND ' . $db->sql_in_set('user_id', $non_bannable, true);
}
$result = $db->sql_query($sql);
@@ -1227,22 +1230,39 @@ function user_unban($mode, $ban)
}
/**
* Whois facility
* Internet Protocol Address Whois
* RFC3912: WHOIS Protocol Specification
*
* @link http://tools.ietf.org/html/rfc3912 RFC3912: WHOIS Protocol Specification
* @param string $ip Ip address, either IPv4 or IPv6.
*
* @return string Empty string if not a valid ip address.
* Otherwise make_clickable()'ed whois result.
*/
function user_ipwhois($ip)
{
$ipwhois = '';
// Check IP
// Only supporting IPv4 at the moment...
if (empty($ip) || !preg_match(get_preg_expression('ipv4'), $ip))
if (empty($ip))
{
return '';
}
if (($fsk = @fsockopen('whois.arin.net', 43)))
if (preg_match(get_preg_expression('ipv4'), $ip))
{
// IPv4 address
$whois_host = 'whois.arin.net.';
}
else if (preg_match(get_preg_expression('ipv6'), $ip))
{
// IPv6 address
$whois_host = 'whois.sixxs.net.';
}
else
{
return '';
}
$ipwhois = '';
if (($fsk = @fsockopen($whois_host, 43)))
{
// CRLF as per RFC3912
fputs($fsk, "$ip\r\n");
@@ -1255,7 +1275,7 @@ function user_ipwhois($ip)
$match = array();
// Test for referrals from ARIN to other whois databases, roll on rwhois
// Test for referrals from $whois_host to other whois databases, roll on rwhois
if (preg_match('#ReferralServer: whois://(.+)#im', $ipwhois, $match))
{
if (strpos($match[1], ':') !== false)
@@ -1283,7 +1303,7 @@ function user_ipwhois($ip)
@fclose($fsk);
}
// Use the result from ARIN if we don't get any result here
// Use the result from $whois_host if we don't get any result here
$ipwhois = (empty($buffer)) ? $ipwhois : $buffer;
}
@@ -2283,7 +2303,7 @@ function avatar_get_dimensions($avatar, $avatar_type, &$error, $current_x = 0, $
/**
* Uploading/Changing user avatar
*/
function avatar_process_user(&$error, $custom_userdata = false)
function avatar_process_user(&$error, $custom_userdata = false, $can_upload = null)
{
global $config, $phpbb_root_path, $auth, $user, $db;
@@ -2322,7 +2342,10 @@ function avatar_process_user(&$error, $custom_userdata = false)
$avatar_select = basename(request_var('avatar_select', ''));
// Can we upload?
$can_upload = ($config['allow_avatar_upload'] && file_exists($phpbb_root_path . $config['avatar_path']) && @is_writable($phpbb_root_path . $config['avatar_path']) && $change_avatar && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on')) ? true : false;
if (is_null($can_upload))
{
$can_upload = ($config['allow_avatar_upload'] && file_exists($phpbb_root_path . $config['avatar_path']) && phpbb_is_writable($phpbb_root_path . $config['avatar_path']) && $change_avatar && (@ini_get('file_uploads') || strtolower(@ini_get('file_uploads')) == 'on')) ? true : false;
}
if ((!empty($_FILES['uploadfile']['name']) || $data['uploadurl']) && $can_upload)
{
@@ -2347,7 +2370,7 @@ function avatar_process_user(&$error, $custom_userdata = false)
}
else
{
list($sql_ary['user_avatar_width'], $sql_ary['user_avatar_height']) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . $sql_ary['user_avatar']);
list($sql_ary['user_avatar_width'], $sql_ary['user_avatar_height']) = getimagesize($phpbb_root_path . $config['avatar_gallery_path'] . '/' . $category . '/' . urldecode($sql_ary['user_avatar']));
$sql_ary['user_avatar'] = $category . '/' . $sql_ary['user_avatar'];
}
}

View File

@@ -1048,6 +1048,35 @@ function mcp_fork_topic($topic_ids)
$total_posts = 0;
$new_topic_id_list = array();
if ($topic_data['enable_indexing'])
{
// Select the search method and do some additional checks to ensure it can actually be utilised
$search_type = basename($config['search_type']);
if (!file_exists($phpbb_root_path . 'includes/search/' . $search_type . '.' . $phpEx))
{
trigger_error('NO_SUCH_SEARCH_MODULE');
}
if (!class_exists($search_type))
{
include("{$phpbb_root_path}includes/search/$search_type.$phpEx");
}
$error = false;
$search = new $search_type($error);
$search_mode = 'post';
if ($error)
{
trigger_error($error);
}
}
else
{
$search_type = false;
}
foreach ($topic_data as $topic_id => $topic_row)
{
$sql_ary = array(
@@ -1158,6 +1187,12 @@ function mcp_fork_topic($topic_ids)
// Copy whether the topic is dotted
markread('post', $to_forum_id, $new_topic_id, 0, $row['poster_id']);
if ($search_type)
{
$search->index($search_mode, $sql_ary['post_id'], $sql_ary['post_text'], $sql_ary['post_subject'], $sql_ary['poster_id'], ($topic_row['topic_type'] == POST_GLOBAL) ? 0 : $to_forum_id);
$search_mode = 'reply'; // After one we index replies
}
// Copy Attachments
if ($row['post_attachment'])
{

View File

@@ -176,7 +176,7 @@ function mcp_post_details($id, $mode, $action)
}
$template->assign_vars(array(
'U_MCP_ACTION' => "$url&amp;i=main&amp;quickmod=1", // Use this for mode paramaters
'U_MCP_ACTION' => "$url&amp;i=main&amp;quickmod=1&amp;mode=post_details", // Use this for mode paramaters
'U_POST_ACTION' => "$url&amp;i=$id&amp;mode=post_details", // Use this for action parameters
'U_APPROVE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue&amp;p=$post_id&amp;f={$post_info['forum_id']}"),
@@ -200,7 +200,7 @@ function mcp_post_details($id, $mode, $action)
'U_VIEW_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&amp;p=' . $post_info['post_id'] . '#p' . $post_info['post_id']),
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&amp;t=' . $post_info['topic_id']),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
'RETURN_TOPIC' => sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f={$post_info['forum_id']}&amp;p=$post_id") . "#p$post_id\">", '</a>'),
'RETURN_FORUM' => sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", "f={$post_info['forum_id']}&amp;start={$start}") . '">', '</a>'),

View File

@@ -196,7 +196,7 @@ class mcp_queue
'U_VIEW_POST' => $post_url,
'U_VIEW_TOPIC' => $topic_url,
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue' . (($topic_id) ? '&amp;mode=unapproved_topics' : '&amp;mode=unapproved_posts')) . "&amp;start=$start\">", '</a>'),
'RETURN_POST' => sprintf($user->lang['RETURN_POST'], '<a href="' . $post_url . '">', '</a>'),
@@ -428,7 +428,7 @@ class mcp_queue
'POST_ID' => $row['post_id'],
'FORUM_NAME' => (!$global_topic) ? $forum_names[$row['forum_id']] : $user->lang['GLOBAL_ANNOUNCEMENT'],
'POST_SUBJECT' => $row['post_subject'],
'POST_SUBJECT' => ($row['post_subject'] != '') ? $row['post_subject'] : $user->lang['NO_SUBJECT'],
'TOPIC_TITLE' => $row['topic_title'],
'POST_TIME' => $user->format_date($row['post_time']))
);
@@ -691,16 +691,19 @@ function approve_post($post_id_list, $id, $mode)
{
$show_notify = false;
foreach ($post_info as $post_data)
if ($config['email_enable'] || $config['jab_enable'])
{
if ($post_data['poster_id'] == ANONYMOUS)
foreach ($post_info as $post_data)
{
continue;
}
else
{
$show_notify = true;
break;
if ($post_data['poster_id'] == ANONYMOUS)
{
continue;
}
else
{
$show_notify = true;
break;
}
}
}

View File

@@ -205,7 +205,7 @@ class mcp_reports
'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 'f=' . $post_info['forum_id'] . '&amp;t=' . $post_info['topic_id']),
'EDIT_IMG' => $user->img('icon_post_edit', $user->lang['EDIT_POST']),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
'UNAPPROVED_IMG' => $user->img('icon_topic_unapproved', $user->lang['POST_UNAPPROVED']),
'RETURN_REPORTS' => sprintf($user->lang['RETURN_REPORTS'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports' . (($post_info['post_reported']) ? '&amp;mode=reports' : '&amp;mode=reports_closed') . '&amp;start=' . $start . '&amp;f=' . $post_info['forum_id']) . '">', '</a>'),

View File

@@ -237,7 +237,7 @@ function mcp_topic_view($id, $mode, $action)
'POST_ID' => $row['post_id'],
'RETURN_TOPIC' => sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $topic_id) . '">', '</a>'),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'NEW_POST') : $user->img('icon_post_target', 'POST'),
'MINI_POST_IMG' => ($post_unread) ? $user->img('icon_post_target_unread', 'UNREAD_POST') : $user->img('icon_post_target', 'POST'),
'S_POST_REPORTED' => ($row['post_reported']) ? true : false,
'S_POST_UNAPPROVED' => ($row['post_approved']) ? false : true,

View File

@@ -300,7 +300,7 @@ class bbcode_firstpass extends bbcode
if ($config['max_' . $this->mode . '_img_height'] || $config['max_' . $this->mode . '_img_width'])
{
$stats = @getimagesize($in);
$stats = @getimagesize(htmlspecialchars_decode($in));
if ($stats === false)
{
@@ -1284,6 +1284,7 @@ class parse_message extends bbcode_firstpass
{
case 'mssql':
case 'mssql_odbc':
case 'mssqlnative':
$sql = 'SELECT *
FROM ' . SMILIES_TABLE . '
ORDER BY LEN(code) DESC';

View File

@@ -122,7 +122,7 @@ class fulltext_mysql extends search_backend
if ($terms == 'all')
{
$match = array('#\sand\s#iu', '#\sor\s#iu', '#\snot\s#iu', '#\+#', '#-#', '#\|#');
$match = array('#\sand\s#iu', '#\sor\s#iu', '#\snot\s#iu', '#(^|\s)\+#', '#(^|\s)-#', '#(^|\s)\|#');
$replace = array(' +', ' |', ' -', ' +', ' -', ' |');
$keywords = preg_replace($match, $replace, $keywords);
@@ -919,6 +919,14 @@ class fulltext_mysql extends search_backend
<dt><label>' . $user->lang['FULLTEXT_MYSQL_MBSTRING'] . '</label><br /><span>' . $user->lang['FULLTEXT_MYSQL_MBSTRING_EXPLAIN'] . '</span></dt>
<dd>' . (($this->mbstring_regex) ? $user->lang['YES'] : $user->lang['NO']). '</dd>
</dl>
<dl>
<dt><label>' . $user->lang['MIN_SEARCH_CHARS'] . ':</label><br /><span>' . $user->lang['FULLTEXT_MYSQL_MIN_SEARCH_CHARS_EXPLAIN'] . '</span></dt>
<dd>' . $config['fulltext_mysql_min_word_len'] . '</dd>
</dl>
<dl>
<dt><label>' . $user->lang['MAX_SEARCH_CHARS'] . ':</label><br /><span>' . $user->lang['FULLTEXT_MYSQL_MAX_SEARCH_CHARS_EXPLAIN'] . '</span></dt>
<dd>' . $config['fulltext_mysql_max_word_len'] . '</dd>
</dl>
';
// These are fields required in the config table

View File

@@ -83,7 +83,9 @@ class fulltext_native extends search_backend
{
global $db, $user, $config;
$keywords = trim($this->cleanup($keywords, '+-|()*'));
$tokens = '+-|()*';
$keywords = trim($this->cleanup($keywords, $tokens));
// allow word|word|word without brackets
if ((strpos($keywords, ' ') === false) && (strpos($keywords, '|') !== false) && (strpos($keywords, '(') === false))
@@ -114,6 +116,15 @@ class fulltext_native extends search_backend
case ' ':
$keywords[$i] = '|';
break;
case '*':
if ($i === 0 || ($keywords[$i - 1] !== '*' && strcspn($keywords[$i - 1], $tokens) === 0))
{
if ($i === $n - 1 || ($keywords[$i + 1] !== '*' && strcspn($keywords[$i + 1], $tokens) === 0))
{
$keywords = substr($keywords, 0, $i) . substr($keywords, $i + 1);
}
}
break;
}
}
else

View File

@@ -83,7 +83,7 @@ class session
$query_string = trim(implode('&', $use_args));
// basenamed page name (for example: index.php)
$page_name = basename($script_name);
$page_name = (substr($script_name, -1, 1) == '/') ? '' : basename($script_name);
$page_name = urlencode(htmlspecialchars($page_name));
// current directory within the phpBB root (for example: adm)
@@ -285,6 +285,17 @@ class session
break;
}
// Quick check for IPv4-mapped address in IPv6
if (stripos($ip, '::ffff:') === 0)
{
$ipv4 = substr($ip, 7);
if (preg_match(get_preg_expression('ipv4'), $ipv4))
{
$ip = $ipv4;
}
}
// Use the last in chain
$this->ip = $ip;
}
@@ -608,6 +619,12 @@ class session
}
else
{
// Bot user, if they have a SID in the Request URI we need to get rid of it
// otherwise they'll index this page with the SID, duplicate content oh my!
if (isset($_GET['sid']))
{
redirect(build_url(array('sid')));
}
$this->data['session_last_visit'] = $this->time_now;
}
@@ -742,7 +759,7 @@ class session
if ((int) $row['sessions'] > (int) $config['active_sessions'])
{
header('HTTP/1.1 503 Service Unavailable');
send_status_line(503, 'Service Unavailable');
trigger_error('BOARD_UNAVAILABLE');
}
}
@@ -977,7 +994,7 @@ class session
}
// only called from CRON; should be a safe workaround until the infrastructure gets going
if (!class_exists('captcha_factory'))
if (!class_exists('phpbb_captcha_factory'))
{
include($phpbb_root_path . "includes/captcha/captcha_factory." . $phpEx);
}
@@ -1815,7 +1832,7 @@ class user extends session
{
if ($this->data['is_bot'])
{
header('HTTP/1.1 503 Service Unavailable');
send_status_line(503, 'Service Unavailable');
}
$message = (!empty($config['board_disable_msg'])) ? $config['board_disable_msg'] : 'BOARD_DISABLE';
@@ -1825,7 +1842,7 @@ class user extends session
// Is load exceeded?
if ($config['limit_load'] && $this->load !== false)
{
if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN'))
if ($this->load > floatval($config['limit_load']) && !defined('IN_LOGIN') && !defined('IN_ADMIN'))
{
// Set board disabled to true to let the admins/mods get the proper notification
$config['board_disable'] = '1';
@@ -1834,7 +1851,7 @@ class user extends session
{
if ($this->data['is_bot'])
{
header('HTTP/1.1 503 Service Unavailable');
send_status_line(503, 'Service Unavailable');
}
trigger_error('BOARD_UNAVAILABLE');
}
@@ -2128,9 +2145,9 @@ class user extends session
// Zone offset
$zone_offset = $this->timezone + $this->dst;
// Show date <= 1 hour ago as 'xx min ago'
// Show date <= 1 hour ago as 'xx min ago' but not greater than 60 seconds in the future
// A small tolerence is given for times in the future but in the same minute are displayed as '< than a minute ago'
if ($delta <= 3600 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO']))
if ($delta <= 3600 && $delta > -60 && ($delta >= -5 || (($now / 60) % 60) == (($gmepoch / 60) % 60)) && $date_cache[$format]['is_short'] !== false && !$forcedate && isset($this->lang['datetime']['AGO']))
{
return $this->lang(array('datetime', 'AGO'), max(0, (int) floor($delta / 60)));
}

View File

@@ -22,7 +22,7 @@ class ucp_profile_info
'modes' => array(
'profile_info' => array('title' => 'UCP_PROFILE_PROFILE_INFO', 'auth' => '', 'cat' => array('UCP_PROFILE')),
'signature' => array('title' => 'UCP_PROFILE_SIGNATURE', 'auth' => '', 'cat' => array('UCP_PROFILE')),
'avatar' => array('title' => 'UCP_PROFILE_AVATAR', 'auth' => '', 'cat' => array('UCP_PROFILE')),
'avatar' => array('title' => 'UCP_PROFILE_AVATAR', 'auth' => 'cfg_allow_avatar && (cfg_allow_avatar_local || cfg_allow_avatar_remote || cfg_allow_avatar_upload || cfg_allow_avatar_remote_upload)', 'cat' => array('UCP_PROFILE')),
'reg_details' => array('title' => 'UCP_PROFILE_REG_DETAILS', 'auth' => '', 'cat' => array('UCP_PROFILE')),
),
);

View File

@@ -490,7 +490,7 @@ class ucp_groups
$avatar_select = basename(request_var('avatar_select', ''));
$category = basename(request_var('category', ''));
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && @is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
$can_upload = (file_exists($phpbb_root_path . $config['avatar_path']) && phpbb_is_writable($phpbb_root_path . $config['avatar_path']) && $file_uploads) ? true : false;
// Did we submit?
if ($update)

View File

@@ -119,7 +119,7 @@ class ucp_main
$unread_topic = (isset($topic_tracking_info[$topic_id]) && $row['topic_last_post_time'] > $topic_tracking_info[$topic_id]) ? true : false;
$folder_img = ($unread_topic) ? $folder_new : $folder;
$folder_alt = ($unread_topic) ? 'NEW_POSTS' : (($row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_NEW_POSTS');
$folder_alt = ($unread_topic) ? 'UNREAD_POSTS' : (($row['topic_status'] == ITEM_LOCKED) ? 'TOPIC_LOCKED' : 'NO_UNREAD_POSTS');
if ($row['topic_status'] == ITEM_LOCKED)
{
@@ -318,7 +318,7 @@ class ucp_main
else
{
$folder_image = ($unread_forum) ? 'forum_unread' : 'forum_read';
$folder_alt = ($unread_forum) ? 'NEW_POSTS' : 'NO_NEW_POSTS';
$folder_alt = ($unread_forum) ? 'UNREAD_POSTS' : 'NO_UNREAD_POSTS';
}
// Create last post link information, if appropriate

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