The attachrow_template_vars array needs to be defined once in front of the
foreach instead of resetting the array on every iteration of the foreach.
PHPBB3-15506
is_route expects a flag of whether this is a route that was generated
with the router as opposed to is_router_used() which returns whether
the router will be used via app.php.
PHPBB3-15498
In PHP 7.2, the severity of the message “Use of undefined constant” was raised
from E_NOTICE to E_WARNING, so calling $array[ITEM] causes warning caught by
error collector. Use undefined offset notice to get an empty message as such.
PHPBB3-14972
Added new function "is_visible", and replaced several immediate
uses of the above, including a single event in the new function
to handle change in all places consistently, and much simpler.
PHPBB3-15266
The -f parameter can now be added via configuration in the ACP. Addtionally,
the config setting for the mail function name has been removed.
PHPBB3-15322
Refactor assign_block_var to use the same block selection mechanism
as is used in alter_block_array. This allows creating new blocks
at any position in the template structure, not only on the last block.
Allows selecting a block as outer[2].middle.
Added tests. Added PHP 7.2 compatibility.
PHPBB3-14994
Refactor assign_block_var to use the same block selection mechanism
as is used in alter_block_array. This allows creating new blocks
at any position in the template structure, not only on the last block.
Allows selecting a block as outer[2].middle.
Added tests. Added PHP 7.2 compatibility.
PHPBB3-14994
Refactor assign_block_var to use the same block selection mechanism
as is used in alter_block_array. This allows creating new blocks
at any position in the template structure, not only on the last block.
Allows selecting a block as outer[2].middle.
Added tests.
PHPBB3-14994
Make vertical left border bars for height for Topics and Posts columns
in board index forum rows when these columns have less height than e.g.
the Last Post column.
PHPBB3-15387
Refactor assign_block_var to use the same block selection mechanism
as is used in alter_block_array. This allows creating new blocks
at any position in the template structure, not only on the last block.
Allows selecting a block as outer[2].middle.
PHPBB3-14994
Fix a vertical bar and menu text running through the Admin Permission
Role Tooltip pop-up caused by z-index on menu div (and opacity of the
popup of .95 rather than 1).
PHPBB3-15390
according to the latest wiki info:
http://wiki.nginx.org/Pitfalls#Taxing_Rewrites
`return 301` is preferred over a rewrite.
also, the 'security' regex breaks some official extensions because it
will match and deny access to `/ext/phpbb`.
looking through the names of dirs and files containing `phpbb`, it
looks like the intent of the regex was to only disallow the folder
`phpbb` in the root dir and not other `/phpbb` matches.
a negative lookbehind was added to specifically not match `/ext/phpbb`
but still match other occurrences of `/phpbb`.
Tracker ticket: https://tracker.phpbb.com/browse/PHPBB3-15385
[ticket/15289] Allow to configure storage from acp
* github.com:phpbb/phpbb: (38 commits)
[ticket/15289] Add phpdoc
[ticket/15289] Remove common language from acp module
[ticket/15289] Check form
[ticket/15289] Use empty instead of count
[ticket/15289] Language fixes
[ticket/15289] Add missing files
[ticket/15289] Use twig syntax in variables
[ticket/15289] Use lang_defined()
[ticket/15289] Dont use short names
[ticket/15289] Dont use short names
[ticket/15289] Use Twig includes
[ticket/15289] Update acp module
[ticket/15289] Fix comment typo
[ticket/15289] Fix show field description
[ticket/15289] Update event
[ticket/15289] Remove switch since there is only one mode
[ticket/15289] Improve error messages
[ticket/15289] Fix code style
[ticket/15289] Update acp storage
[ticket/15289] Update acp storage template
...
[ticket/15355] Remove version field when no update is available
* github.com:phpbb/phpbb:
[ticket/15355] Remove version field when no update is available
[ticket/15350] Changes outdated wiki-link for plural-rules to new docs/
* github.com:phpbb/phpbb:
[ticket/15350] Changes outdated wiki-link to new docs/
[ticket/15332] Don't remove dark background if fadedark is false
* github.com:phpbb/phpbb:
[ticket/15332] Don't remove dark background if fadedark is false
[ticket/15305] Add streams for storage
* github.com:phpbb/phpbb:
[ticket/15305] Update phpdoc
[ticket/15305] Remove not_implemented exception
[ticket/15305] Close stream before throwing an exception
[ticket/15305] Update annotations
[ticket/15305] Remove not_implemented exception in streams
[ticket/15305] Use streams in filespec
[ticket/15305] Throw exception if stream_copy_to_stream() fail
[ticket/15305] Use php://temp stream instead of tmpfile()
[ticket/15305] Revert open in w+b mode
[ticket/15305] Fix typo
[ticket/15305] Open file in w+b mode
[ticket/15305] Open file in binary mode
[ticket/15305] Simulate streams if they are not implemented
[ticket/15305] Use an aditional interface for streams
[ticket/15305] Fix streams
[ticket/15305] Add tests
[ticket/15305] Update PHPDoc
[ticket/15305] Add streams
In some functions like sql_save in cache/memory.php, code try to save a key/value in cache with ttl = 0 so key should never expire. In current redis.php cache driver, it fails so key never get cached. This cause for example that when you create a subforum, it not appear in the forum box in the admincp.
To solve, if ttl is 0, we use redis->set instead of setex
[ticket/15274] Allow "custom" migrations to use parameters
* github.com:phpbb/phpbb:
[ticket/15274] Allow "custom" migrations to use parameters
[ticket/15274] Allow "custom" migrations to use parameters
[ticket/15303] Correctly refer to $memcached and not $memcache
* github.com:phpbb/phpbb:
[ticket/15303] Correctly refer to $memcached and not $memcache
[ticket/14972] PHP 7.2 compatibility
* github.com:phpbb/phpbb:
[ticket/14972] Temporarily pull PHP nightly build out of allowed tests failures
[ticket/14972] replace all occurrences of sizeof() with the count()
[ticket/14972] Fix find_key_index method
[ticket/14972] Update tests matrix to reflect bumping PHP version requirement
[ticket/14972] Fix test_collection_with_mask test
[ticket/14972] Avoid using self as constant in tests
[ticket/14972] Fix create_insert_array() declaration in admin_activate_user
[ticket/14972] Fix use of deprecated media attachment constants
[ticket/14972] Migrate from deprecated getMock() method to createMock()
[ticket/14972] Fix sizeof calls
[ticket/14972] Bump PHP requirements to 5.6. Update dependencies.
[ticket/15269] Set development environment and enable all debugs when installing with vagrant
* github.com:phpbb/phpbb:
[ticket/15269] Don't enable DEBUG_CONTAINER by default
[ticket/15269] Remove comment only if is the beginning of a line
[ticket/15269] Set development environment and enable all debugs with vagrant
In PHP 7.2, the severity of the message “Use of undefined constant” was raised
from E_NOTICE to E_WARNING, so calling $array[ITEM] causes warning caught by
error collector. Use undefined offset notice to get an empty message as such.
PHPBB3-14972
Additional errors found. The event parameter 'timestamp' does
not exist, it is really called 'time'. Affects four events:
core.set_post_visibility_before_sql
core.set_post_visibility_after
core.set_topic_visibility_before_sql
core.set_topic_visibility_after
PHPBB3-15266
Fixes core.phpbb_content_visibility_get_visibility_sql_before,
core.phpbb_content_visibility_get_forums_visibility_before,
core.phpbb_content_visibility_get_global_visibility_before
Does not modify the events, but fixes some comments, and changes
the rest of the function to allow (at least) the documented
event functionality.
PHPBB3-15266
Add new cache driver apcu.php (based closely on existing APC cache driver)
Add new unit test apcu_driver_test.php for the new driver
Update RUNNING_TESTS.md to clarify requirements for apc, apcu and apc_bc extensions
and add a couple of general hints to RUNNING_TESTS.md
PHPBB3-15247
* 3.2.x:
[ticket/15219] Add console command for updating hashes to bcrypt
[ticket/15219] Add missing space
[ticket/15219] Update hashes to bcrypt with cron
* 3.2.x:
[ticket/8116] Add missing new line
[ticket/8116] Correctly get other users who posted under IP
[ticket/8116] Improve code and add tests for helper functions
[ticket/8116] Add pagination for IP tables on post info
* 3.2.x:
[ticket/15151] Use redirected link for consistency
[ticket/15151] ACP Cookie settings explanatory text
[ticket/15151] ACP Cookie settings add explanatory text where it was missing
* 3.2.x:
[ticket/15097] New 'Installed software' lead section
[ticket/15097] Resolve travis-ci error
[ticket/15097] Resolve travis-ci error
[ticket/15097] Add PHP version to Board statistics
[ticket/15097] Add PHP version to Board statistics
[ticket/15154] Load compatibility globals into the CLI installer
* github.com:phpbb/phpbb:
[ticket/15154] Load compatibility globals into the CLI installer
* 3.2.x:
[ticket/15135] Correctly pass exception arguments and add back link again
[ticket/15135] Parse language files in acp_extensions instead of md manager
* 3.2.x:
[ticket/14968] Use earlier version as written in comment
[ticket/14968] Update docblock and ensure method returns array
[ticket/14968] Display possible upgrade on acp index and update page
[ticket/14968] Add method for retrieving updates on current branch
* 3.2.x:
[ticket/15011] Output meaningful errors when validating all metadata
[ticket/11076] State current and minimum required versions in old PHP notice
* 3.2.x:
[ticket/14895] Fix broken tests
[ticket/14895] Fix issues in CLI classes
[ticket/14895] Use SymfonyStyle in all CLI
[ticket/14895] Use SymfonyIO styling
[ticket/14895] CLI reparser:list should display proper list
* 3.2.x: (47 commits)
[ticket/14492] Add user service to installer & only instantiate if needed
[ticket/14492] Fix redirection to help phpBB page
[ticket/14492] Encode URI components in systemdata for stats
[ticket/14492] Always update the time the stats were sent
[ticket/14492] Update versions in files
[ticket/14492] Add missing event variable
[ticket/14492] Don't explicitly pass data providers by refs
[ticket/14492] Update phpBB version and fix miscellaneous code issues
[ticket/14492] Install all extensions if 'all' is specified for extensions
[ticket/14492] Checkout master if viglink tag does not exist for latest version
[ticket/14492] Add language variables for updating extensions
[ticket/14492] Prevent timeouts in install & update extensions tasks
[ticket/14492] Use same list for checking if extension should be updated
[ticket/14492] Add missing config to schema_data.sql
[ticket/14492] Unify version check for installing default extensions
[ticket/14492] Use extension manager instead of finder and add try/catch
[ticket/14492] Checkout viglink for each version depending on tags
[ticket/14492] Remove unused use statement
[ticket/14492] Redirect to help phpBB page after installation
[ticket/14492] Properly retrieve version updating from
...
* 3.2.x:
[ticket/14733] Make sure detect_algorithm() works correctly and add tests
[ticket/14733] Extend passwords driver_interface in rehashable_driver_interface
[ticket/14733] Use new interface to preserve backwards compatibility
[ticket/14733] Use default cost factor in bcrypt constructor
[ticket/14733] Support increasing hashing cost factor
* 3.2.x:
[ticket/9590] Update permissions with correct permission role
[ticket/9590] Correctly update submit size and replace all forum_id[]
[ticket/9590] Further deduplicate code for form data
[ticket/9590] Preserve selected forums after previous page redirect
[ticket/9590] Support ajax submit of permissions for specific forums
[ticket/9590] Correctly set roles and refresh page using POST
[ticket/9590] Submit permissions form in chunks when using "Apply all"
* 3.2.x:
[ticket/14875] Add raw_variable() to request mock
[ticket/14875] Move raw_variable() method to request_interface
[ticket/14875] Use raw_variable() method in _variable() to get raw data
[ticket/14875] Add method for raw input to request and add to installer
[ticket/14875] Add method for untrimmed input to ajax iohandler
* 3.2.x:
[ticket/14831] Rename migration and replace preg_replace() with simpler methods
[ticket/14831] Compare depends_on for migrations and remove prefixless names
[ticket/14831] Add migration for deduplicating entries and fix typo
[ticket/14831] Add method for getting valid migration name
[ticket/14831] Fall back to possible migration names instead of adding prefix
[ticket/14831] Make sure migrations always start with backslash
* 3.2.x:
[ticket/14831] Optimize code construction
[ticket/14831] Add more tests against UCP modules
[ticket/14831] Add more tests, better name for $e placeholder
[ticket/14831] Do not throw exception on the module existence checking
[ticket/14831] Fix module migrator tool
* 3.2.x:
[ticket/14789] Remove obsolete check_form_key() and add missing hashes
[ticket/14789] Move form key checks to where they actually do something
* 3.2.x:
[ticket/14484] Remove duplicate methods and no longer needed calls
[ticket/14484] Remove invalid code caused by merge conflict
[ticket/14484] Properly enable extensions in UI tests
[ticket/14484] Move facebook/webdriver back to tests dir composer.json
[ticket/14484] Move facebook webdriver to main composer.json
* 3.2.x:
[ticket/14595] Added smtp_port where places where smtp_host exists. PHPBB3-14595
[ticket/14595] Added SMTP port to getConfigTreeBuilder PHPBB3-14595
* prep-release-3.2.0-b2:
[prep-release-3.2.0-b2] Add schema.json
[prep-release-3.2.0-b2] Add changelog for 3.2.0-b2
[prep-release-3.2.0-b2] Add migration for 3.2.0-b2
[prep-release-3.2.0-b2] Update version to 3.2.0-b2
* 3.2.x:
[ticket/13616] Fix CS + constant in the core extension
[ticket/13616] Fix UI tests
[ticket/13616] Cleanup globals after installing the board in func tests
[ticket/13616] Updates direct call to twig environment constructor
[ticket/13616] Uses a php 5.4 compatible version
[ticket/13616] Uses symfony/proxy-manager-bridge to lazy load twig lexer
Conflicts:
phpBB/composer.lock
* 3.2.x:
[ticket/14561] Remove requires for functions in tests
[ticket/14561] Small change to progress bar output
[ticket/14561] Fix function docblock in activate command
[ticket/14561] Add a progress bar to reclean command
[ticket/14561] Use the user loader where appropriate
[ticket/14561] Add extra help explaining reclean command
[ticket/14561] Import classes with use statements
[ticket/14561] Remove unused use statements
[ticket/14561] Refactor tests
[ticket/14561] Reclean usernames command
[ticket/14561] User activate command
[ticket/14561] User delete command
* 3.2.x:
[ticket/13502] Also cover passing object to resolver in tests
[ticket/13502] Test getArguments() method of controller resolver
[ticket/13502] Fix coding style
[ticket/13502] Controller resolver should handle callable functions and objects
* 3.2.x:
Revert "[ticket/14562] Language fallback for extension permissions"
[ticket/14562] Language fallback for extension permissions (3.2.x)
[ticket/14562] Language fallback for extension permissions
* 3.2.x:
[ticket/14272] Allow input of floats for filesize
[ticket/14272] Use input type number instead of text in avatars
[ticket/14272] Assign min and max values for avatar driver settings
[ticket/14272] Define min and max values for avatar width and height
[ticket/14272] Disable not toggled form elements
[ticket/14272] Make sure phpbb_avatar_manager was defined
[ticket/14272] Remove useless check
[ticket/14272] Fix invalid or missing min/max settings
[ticket/14272] Assign min/max for all allowed types
[ticket/14272] Only use maxlength and size for allowed input elements
* 3.2.x:
[ticket/14481] Add tests for x_forwarded_proto header
[ticket/14481] Use port 443 if https is specified in x-forwarded-proto
[ticket/14481] Respect HTTP_X_FORWARDED headers for implying https
* 3.2.x: (26 commits)
[ticket/12684] Use a switch statement for readability
[ticket/12684] Refactor a test
[ticket/12684] Use interactive method correctly
[ticket/12684] Extract interactivity to a method
[ticket/12684] Update option help
[ticket/12684] Add extended help for the user:add command
[ticket/12684] Add shorthand alternates to the options
[ticket/12684] Remove whitespace
[ticket/12684] Add an error on user creation failure
[ticket/12684] Remove unnecessary null arguments
[ticket/12684] Additional clean up
[ticket/12684] Allowed to use $this in enclosure
[ticket/12684] Move all lang keys to cli
[ticket/12684] Fix a few mistakes and clean it up
[ticket/12684] Some code clean up
[ticket/12684] Another little fix
[ticket/12684] Fix tests
[ticket/12684] Update to use non-deprecated methods
[ticket/12684] Add send email option
[ticket/12684] Add input validation
...
* 3.2.x:
[ticket/14437] Make sure attachments array is properly ordered before processing
[ticket/14437] Preserve attachment ID order by ordering by attach_id
[ticket/14437] Sort attachments after assigning inline attachments
[ticket/14437] Correctly assume index from attachment display order
* 3.2.x:
[ticket/14497] Do not check for doctype on index and use correct return
[ticket/14497] Add test for visiting installer
[ticket/14497] Use nginx sample config in travis tests
[ticket/14497] Support second app.php script in install folder
* 3.2.x:
[ticket/14527] Decode automatically generated postlink without prefix
[ticket/14527] Add tests for reverted improper fix
[ticket/14527] Retrieve link URL from href and not link text
@@ -20,7 +20,7 @@ To be able to run an installation from the repo (and not from a pre-built packag
1. [Create an account on phpBB.com](http://www.phpbb.com/community/ucp.php?mode=register)
2. [Create a ticket (unless there already is one)](http://tracker.phpbb.com/secure/CreateIssue!default.jspa)
3. Read our [Coding guidelines](https://wiki.phpbb.com/Coding_guidelines) and [Git Contribution Guidelines](http://wiki.phpbb.com/Git)
3. Read our [Coding guidelines](https://area51.phpbb.com/docs/dev/development/coding_guidelines.html) and [Git Contribution Guidelines](https://area51.phpbb.com/docs/dev/development/git.html)
4. Send us a pull request
## VAGRANT
@@ -29,11 +29,11 @@ Read our [Vagrant documentation](phpBB/docs/vagrant.md) to find out how to use V
## AUTOMATED TESTING
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](http://bamboo.phpbb.com) or check our travis builds below:
We have unit and functional tests in order to prevent regressions. You can view the bamboo continuous integration [here](https://bamboo.phpbb.com) or check our travis builds below:
* [](http://travis-ci.org/phpbb/phpbb) **master** - Latest development version
* [](http://travis-ci.org/phpbb/phpbb) **3.2.x** - Development of version 3.2.x
* [](http://travis-ci.org/phpbb/phpbb) **3.1.x** - Development of version 3.1.x
* [](http://travis-ci.org/phpbb/phpbb)[](https://ci.appveyor.com/project/phpBB/phpbb/branch/master)**master** - Latest development version
* [](http://travis-ci.org/phpbb/phpbb)[](https://ci.appveyor.com/project/phpBB/phpbb/branch/3.2.x)**3.2.x** - Development of version 3.2.x
* [](http://travis-ci.org/phpbb/phpbb) **3.1.x** - Development of version 3.1.x
$scheme=($inline)?'[a-z][a-z\d+]*':'[a-z][a-z\d+\-.]*';// avoid automatic parsing of "word" in "last word.http://..."
$scheme=($inline)?'[a-z][a-z\d+]*(?<!javascript)':'[a-z][a-z\d+\-.]*(?<!javascript)';// avoid automatic parsing of "word" in "last word.http://..."
$pchar="(?:[^$remove_chars]*[$unreserved$sub_delims:@|]+|$pct_encoded)";// rfc: no "|"
$reg_name="(?:[^$remove_chars]*[$unreserved$sub_delims:@|]+|$pct_encoded)+";// rfc: * instead of + and no "|" and no "@" and no ":" (included instead of userinfo)
<li><ahref="#v320rc1">Changes since 3.2.0-RC1</a></li>
<li><ahref="#v320b2">Changes since 3.2.0-b2</a></li>
@@ -57,6 +59,7 @@
<li><ahref="#v320a2">Changes since 3.2.0-a2</a></li>
<li><ahref="#v320a1">Changes since 3.2.0-a1</a></li>
<li><ahref="#v31x">Changes since 3.1.x</a></li>
<li><ahref="#v3111">Changes since 3.1.11</a></li>
<li><ahref="#v3110">Changes since 3.1.10</a></li>
<li><ahref="#v319">Changes since 3.1.9</a></li>
<li><ahref="#v318">Changes since 3.1.8</a></li>
@@ -126,6 +129,201 @@
<divclass="inner">
<divclass="content">
<aname="v322"></a><h3>Changes since 3.2.2</h3>
<h4>Bug</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14936">PHPBB3-14936</a>] - Missing language variable INST_ERR_DB</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15491">PHPBB3-15491</a>] - Outdated linkes in installer support page</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15492">PHPBB3-15492</a>] - Permissions role combobox does not work in RTL</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15500">PHPBB3-15500</a>] - Docs outdated for new PHP 5.4.7 requirement</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15502">PHPBB3-15502</a>] - Errors in migrations in 3.2.2 release</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15506">PHPBB3-15506</a>] - Previewing new post empties attachment list of all but first attachment</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-12579">PHPBB3-12579</a>] - Add BUTTON_ language strings for post & PM buttons</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15495">PHPBB3-15495</a>] - Use transactions for queries in move_forum</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15499">PHPBB3-15499</a>] - Drop HHVM support</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15510">PHPBB3-15510</a>] - Link Orphan attachments in ACP>General to Orphaned attachments page </li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15514">PHPBB3-15514</a>] - Improve accessibility by adding vital info from explanation to a title</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15518">PHPBB3-15518</a>] - Do not attempt to accurately determine whether posters can read private messages in viewtopic</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15528">PHPBB3-15528</a>] - Display the version of the installed styles in acp</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15529">PHPBB3-15529</a>] - Color groups in ACP</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15547">PHPBB3-15547</a>] - Add file object to event core.avatar_driver_upload_move_file_before</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15561">PHPBB3-15561</a>] - Add core events for adding columns to MySQL and Postgres search backends</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15568">PHPBB3-15568</a>] - Update depencies to latest versions</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15569">PHPBB3-15569</a>] - Adjust update instructions to suggest file replacement method</li>
</ul>
<h4>New Feature</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15398">PHPBB3-15398</a>] - Add event to oauth login after ID check</li>
</ul>
<h4>Security Issue</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15570">PHPBB3-15570</a>] - Extension version check is restricted to TLS 1.0</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15466">PHPBB3-15466</a>] - Move Nils in CREDITS.txt</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15516">PHPBB3-15516</a>] - Add instructions on running UI tests</li>
</ul>
<aname="v321"></a><h3>Changes since 3.2.1</h3>
<h4>Security Issue</h4>
<ul>
<li>[SECURITY-211] - URLs with javascript scheme should not be made clickable</li>
</ul>
<h4>Bug</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-7845">PHPBB3-7845</a>] - Error on posting local image when script path is empty</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-13214">PHPBB3-13214</a>] - Contact us page textarea looks narrow in responsive mode</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14629">PHPBB3-14629</a>] - acp global quick reply will not enable quick reply correctly</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14857">PHPBB3-14857</a>] - ordinal suffix in dateformat is not handled in translations</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15041">PHPBB3-15041</a>] - Cannot delete Orphaned Attachments when large number of attachments</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15060">PHPBB3-15060</a>] - Online user list fails on notifications</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15089">PHPBB3-15089</a>] - Enable/Disable settings backwards for Cookie Secure</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15133">PHPBB3-15133</a>] - Fast image size library sometimes returns no size or invalid sizes</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15149">PHPBB3-15149</a>] - Unexpected Ctrl+Enter behavior on reply</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15172">PHPBB3-15172</a>] - $request->server('server_port') is returning wrong port</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15174">PHPBB3-15174</a>] - Unable to purge cache (ext & acp)</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15195">PHPBB3-15195</a>] - Code direction in print view is not defined as "ltr"</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15201">PHPBB3-15201</a>] - Removing style sets user_style to 0</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15224">PHPBB3-15224</a>] - Advanced search in "message text only" crashes with SQL error when using Mysql fulltext search index</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15245">PHPBB3-15245</a>] - Relative URLs in atom feeds broken when accessing via app.php</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15262">PHPBB3-15262</a>] - WebFontConfig google families script issue in 3.2.1</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15266">PHPBB3-15266</a>] - Content visibility events do not allow what they describe</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15273">PHPBB3-15273</a>] - 'COOKIE_PATH_EXPLAIN' does not make sense</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15285">PHPBB3-15285</a>] - Travis tests are failing due to trusty changes</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15292">PHPBB3-15292</a>] - Retina imageset is blurry when displayed in Chrome browser</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15297">PHPBB3-15297</a>] - Current date in board index is broken into lines in RTL</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15298">PHPBB3-15298</a>] - Errors being suppressed in cli</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15303">PHPBB3-15303</a>] - Typo in memcached driver</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15306">PHPBB3-15306</a>] - Error and missing information in core.acp_users_profile_validate event</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15309">PHPBB3-15309</a>] - Improved fix for pagination layout in tables</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15314">PHPBB3-15314</a>] - Wrong class constructor definition for convertor component</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15319">PHPBB3-15319</a>] - Database update v310\style_update_p2 fails to drop sequences</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15320">PHPBB3-15320</a>] - Redis cache does not save keys with expiration date 0 (no expiration)</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15322">PHPBB3-15322</a>] - Wrong return Return-Path in emails</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15331">PHPBB3-15331</a>] - Gravatars cannot be overridden</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15332">PHPBB3-15332</a>] - Dark background is always removed after confirm popup</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15333">PHPBB3-15333</a>] - Callback isn't called when confirm dialog is canceled</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15339">PHPBB3-15339</a>] - Missing acp_send_statistics -> Upgrading to 3.2.0 fails for phpBB 3.0.5</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15346">PHPBB3-15346</a>] - The installer tries to enable all extensions even if they are not enableable</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15347">PHPBB3-15347</a>] - Password updater in cron generates invalid postgres SQL</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15349">PHPBB3-15349</a>] - Cli doesn't check if an extension is enableable before enable it</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15350">PHPBB3-15350</a>] - Links to Plural rules are outdated</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15351">PHPBB3-15351</a>] - Confirm box function does not work with symlink on server config</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15353">PHPBB3-15353</a>] - Invalid HTML in ACP board settings</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15355">PHPBB3-15355</a>] - Empty version field in versioncheck when using the latest version</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15367">PHPBB3-15367</a>] - Sphinx search backend doesn't escape special characters</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15368">PHPBB3-15368</a>] - Schema upgrade fails in 3.2.1 when using SQL Server</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15379">PHPBB3-15379</a>] - Reparser cron will always run</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15381">PHPBB3-15381</a>] - L_CONTACT_US_ENABLE_EXPLAIN should specify that "Enable board-wide emails" is also needed for it to work</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15390">PHPBB3-15390</a>] - Admin permissions role tooltip popup has vertical bar running through it.</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15396">PHPBB3-15396</a>] - revert_schema() steps not executed in correct order</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15401">PHPBB3-15401</a>] - Use separate constant for memcached driver config</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15419">PHPBB3-15419</a>] - Sphinx does not search UTF keywords in delta index</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15423">PHPBB3-15423</a>] - Wrong title for topic's "Unappproved posts" icon</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15432">PHPBB3-15432</a>] - Don't remove dark background if fadedark is false</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15433">PHPBB3-15433</a>] - phpbbcli can enable non-existent extension</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15445">PHPBB3-15445</a>] - Git Contribution Guidelines in README.md is outdated</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15464">PHPBB3-15464</a>] - Can't reparse [IMG] - in uppercase</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15489">PHPBB3-15489</a>] - Wrong footer text on forum of type "category"</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15496">PHPBB3-15496</a>] - SQL Error in PostgreSQL Fulltext search when results displayed as topics</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15497">PHPBB3-15497</a>] - Declaration of admin_activate_user::create_insert_array not compatible with base</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15498">PHPBB3-15498</a>] - confirm_box() adds duplicate strings to URLs in extensions</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-7488">PHPBB3-7488</a>] - View Only - Categories: No Message</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-9819">PHPBB3-9819</a>] - Move functions definitions out of mcp.php and includes/mcp/mcp_*.php</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-12291">PHPBB3-12291</a>] - Allow extensions to use custom topic icons</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-12939">PHPBB3-12939</a>] - Drop support for IE <11 on January 2016</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14677">PHPBB3-14677</a>] - Extension update check is not very colorblind / colourblind friendly.</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14820">PHPBB3-14820</a>] - Style Version Missing</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14919">PHPBB3-14919</a>] - Inconsistent use of globals vs class elements in acp_extensions</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14944">PHPBB3-14944</a>] - Add possibility to search for template loop indexes by key</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14950">PHPBB3-14950</a>] - Add possibility to delete a template block with alter_block_array</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14979">PHPBB3-14979</a>] - Remove underline from unread icon</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14994">PHPBB3-14994</a>] - Refactor template->assign_block_var to be consistent with alter_block_array</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15387">PHPBB3-15387</a>] - prosilver: vertical bars on forum rows on index page not full height</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15389">PHPBB3-15389</a>] - Simplify migration between event names</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15391">PHPBB3-15391</a>] - Remove not needed image rendering from topic/forum images</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15394">PHPBB3-15394</a>] - Add $user_cache and $post_edit_list to core.viewtopic_modify_post_row</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15408">PHPBB3-15408</a>] - Reject duplicate BBCodes in ACP</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15409">PHPBB3-15409</a>] - Add u_action to core.acp_users_overview_run_quicktool</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15442">PHPBB3-15442</a>] - Allow unsafe HTML in bbcode.html</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15444">PHPBB3-15444</a>] - Merge duplicate BBCodes via a migration</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15470">PHPBB3-15470</a>] - attachment boxes need there own font-size</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15471">PHPBB3-15471</a>] - Add core events to ACP when pruning a forum</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15476">PHPBB3-15476</a>] - Add core event before search rows are edited</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15485">PHPBB3-15485</a>] - Add template event to forumlist_body > forum images</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15486">PHPBB3-15486</a>] - Add core event to the function user_add() to modify notifications data</li>
</ul>
<h4>New Feature</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-13344">PHPBB3-13344</a>] - Add new events for logging</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15122">PHPBB3-15122</a>] - Support using memcached instead of memcache</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15372">PHPBB3-15372</a>] - Add a "Can view topics" permission</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-12835">PHPBB3-12835</a>] - Jump-box dropdown menu doesn't expand with according to line length in IE8</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-13360">PHPBB3-13360</a>] - rename_too_long_indexes migration never deleted the old unique index</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-13464">PHPBB3-13464</a>] - problem with drop down options and Arabic letters in chrome</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-13574">PHPBB3-13574</a>] - Last post not showing in "Active topics" when Prosilver goes responsive</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15174">PHPBB3-15174</a>] - Unable to purge cache (ext & acp)</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15285">PHPBB3-15285</a>] - Travis tests are failing due to trusty changes</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15303">PHPBB3-15303</a>] - Typo in memcached driver</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15347">PHPBB3-15347</a>] - Password updater in cron generates invalid postgres SQL</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-15367">PHPBB3-15367</a>] - Sphinx search backend doesn't escape special characters</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-10122">PHPBB3-10122</a>] - [list=] - should support "none", along with CSS2 types</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-11063">PHPBB3-11063</a>] - Change version check to SSL</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14820">PHPBB3-14820</a>] - Style Version Missing</li>
<li>[<ahref="http://tracker.phpbb.com/browse/PHPBB3-14919">PHPBB3-14919</a>] - Inconsistent use of globals vs class elements in acp_extensions</li>
<li><strong>PHP 5.4.0+</strong> with support for the database you intend to use.</li>
<li><strong>PHP 5.4.7+</strong> with support for the database you intend to use.</li>
<li>The following PHP modules are required:
<ul>
<li>json</li>
@@ -269,11 +269,11 @@
<aname="update_full"></a><h3>4.i. Full package</h3>
<p>The full package is normally meant for new installations only, but if you want to replace all source files, this package comes in handy.</p>
<p>Updating using the full package is the recommended update method for boards without modifications to core phpBB files.</p>
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB files, you may want to leave your <code>files/</code>, <code>images/</code> and <code>ext/</code> directories in place, otherwise you will lose your file attachments, uploaded images and get error due to missing extension files. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <ahref="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
<p>First, you should make a copy of your existing <code>config.php</code> file; keep it in a safe place! Next, delete all the existing phpBB files, you should leave your <code>files/</code>, <code>images/</code> and <code>ext/</code> directories in place, otherwise you will lose your file attachments, uploaded images and get errors due to missing extension files. You can leave alternative styles in place too. With this complete, you can upload the new phpBB files (see <ahref="#install">New installation</a> for details if necessary). Once complete, copy back your saved <code>config.php</code>, replacing the new one. Another method is to just <strong>replace</strong> the existing files with the files from the full package - though make sure you do <strong>not</strong> overwrite your config.php file.</p>
<p>You should now got to <code>/install/app.php/update</code> which will display a warning: <strong>No valid update directory was found, please make sure you uploaded the relevant files</strong>. Beneath that warning you will see a radion button <em>Update database only</em>, just click <strong>Submit</strong>. Depending on your previous version this will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker). If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
<p>You should now got to <code>/install/app.php/update</code> which will display a warning: <strong>No valid update directory was found, please make sure you uploaded the relevant files</strong>. Beneath that warning you will see a radio button <em>Update database only</em>, just click <strong>Submit</strong>. Depending on your previous version this will make a number of database changes. You may receive <em>FAILURES</em> during this procedure. They should not be a cause for concern unless you see an actual <em>ERROR</em>, in which case the script will stop (in this case you should seek help via our forums or bug tracker). If you have shell access to your server, you may wish to update via the command line interface. From your board's root, execute the following command: <code>php bin/phpbbcli.php --safe-mode db:migrate</code>.</p>
<p>Once <code>/install/app.php/update</code> has completed, it displays the success message: <strong>The database update was successful</strong>. You may proceed to the Administration Control Panel and then remove the install directory as advised.</p>
<p>This update method is the recommended method for updating. This package detects changed files automatically and merges in changes if needed.</p>
<p>This update method is only recommended for installations with modifications to core phpBB files. This package detects changed files automatically and merges in changes if needed.</p>
<p>The automatic update package will update the board from a given version to the latest version. A number of automatic update files are available, and you should choose the one that corresponds to the version of the board that you are currently running. For example, if your current version is <strong>3.2.0</strong>, you need the <code>phpBB-3.2.0_to_3.2.1.zip/tar.bz2</code> file.</p>
<p>phpBB 3.2.x takes advantage of new features added in PHP 5.4. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.4.0 and the maximum supported version is the latest stable version of PHP.</p>
<p>phpBB 3.2.x takes advantage of new features added in PHP 5.5.9. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.5.9 and the maximum supported version is the latest stable version of PHP.</p>
<p>Please remember that running any application on a development (unstable, e.g. a beta release) version of PHP can lead to strange/unexpected results which may appear to be bugs in the application. Therefore, we recommend you upgrade to the newest stable version of PHP before running phpBB. If you are running a development version of PHP please check any bugs you find on a system running a stable release before submitting.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 5.4.x above 5.6.x to 7.0.x without problem.</p>
<p>This board has been developed and tested under Linux and Windows (amongst others) running Apache using MySQL 3.23, 4.x, 5.x, MariaDB 5.x, PostgreSQL 8.x, Oracle 8 and SQLite 3. Versions of PHP used range from 5.4.7 above 5.6.x to 7.1.x and 7.2.x without problem.</p>
<aname="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>
<p>The <code>empty()</code> function is useful if you want to check if a variable is not set or being empty (an empty string, 0 as an integer or string, NULL, false, an empty array or a variable declared, but without a value in a class). Therefore empty should be used in favor of <code>isset($array) &&sizeof($array) > 0</code> - this can be written in a shorter way as <code>!empty($array)</code>.</p>
<p>The <code>empty()</code> function is useful if you want to check if a variable is not set or being empty (an empty string, 0 as an integer or string, NULL, false, an empty array or a variable declared, but without a value in a class). Therefore empty should be used in favor of <code>isset($array) &&count($array) > 0</code> - this can be written in a shorter way as <code>!empty($array)</code>.</p>
<h4>Switch statements:</h4>
<p>Switch/case code blocks can get a bit long sometimes. To have some level of notice and being in-line with the opening/closing brace requirement (where they are on the same line for better readability), this also applies to switch/case code blocks and the breaks. An example:</p>
<p>Always try to optimize your loops if operations are going on at the comparing part, since this part is executed every time the loop is parsed through. For assignments a descriptive name should be chosen. Example:</p>
<pclass="bad">// On every iteration the sizeof function is called</p>
<pclass="bad">// On every iteration the count function is called</p>
<p>Try to match text class types with existing useage, e.g. don't use the nav class where viewtopic uses gensmall for example.</p>
<p>Try to match text class types with existing usage, e.g. don't use the nav class where viewtopic uses gensmall for example.</p>
<p>Row colours/classes are now defined by the template, use an <code>IF S_ROW_COUNT</code> switch, see viewtopic or viewforum for an example.</p>
@@ -1223,7 +1222,7 @@ parent = prosilver</pre>
<p>The separate catXXXX and thXXX classes are gone. When defining a header cell just use <code><th></code> rather than <code><th class="thHead"></code> etc. Similarly for cat, don't use <code><td class="catLeft"></code> use <code><td class="cat"></code> etc.</p>
<p>Try to retain consistency of basic layout and class useage, i.e. _EXPLAIN text should generally be placed below the title it explains, e.g. <code>{L_POST_USERNAME}<br /><span class="gensmall">{L_POST_USERNAME_EXPLAIN}</span></code> is the typical way of handling this ... there may be exceptions and this isn't a hard and fast rule.</p>
<p>Try to retain consistency of basic layout and class usage, i.e. _EXPLAIN text should generally be placed below the title it explains, e.g. <code>{L_POST_USERNAME}<br /><span class="gensmall">{L_POST_USERNAME_EXPLAIN}</span></code> is the typical way of handling this ... there may be exceptions and this isn't a hard and fast rule.</p>
<p>Try to keep template conditional and other statements tabbed in line with the block to which they refer.</p>
@@ -1767,7 +1766,7 @@ This may span multiple lines.
<p>The <ahref="http://en.wikipedia.org/wiki/Universal_Character_Set">Universal Character Set (UCS)</a> described in ISO/IEC 10646 consists of a large amount of characters. Each of them has a unique name and a code point which is an integer number. <ahref="http://en.wikipedia.org/wiki/Unicode">Unicode</a> - which is an industry standard - complements the Universal Character Set with further information about the characters' properties and alternative character encodings. More information on Unicode can be found on the <ahref="http://www.unicode.org/">Unicode Consortium's website</a>. One of the Unicode encodings is the <ahref="http://en.wikipedia.org/wiki/UTF-8">8-bit Unicode Transformation Format (UTF-8)</a>. It encodes characters with up to four bytes aiming for maximum compatibility with the <ahref="http://en.wikipedia.org/wiki/ASCII">American Standard Code for Information Interchange</a> which is a 7-bit encoding of a relatively small subset of the UCS.</p>
<h4>phpBB's use of Unicode</h4>
<p>Unfortunately PHP does not faciliate the use of Unicode prior to version 6. Most functions simply treat strings as sequences of bytes assuming that each character takes up exactly one byte. This behaviour still allows for storing UTF-8 encoded text in PHP strings but many operations on strings have unexpected results. To circumvent this problem we have created some alternative functions to PHP's native string operations which use code points instead of bytes. These functions can be found in <code>/includes/utf/utf_tools.php</code>. They are also covered in the <ahref="http://area51.phpbb.com/docs/code/">phpBB3 Sourcecode Documentation</a>. A lot of native PHP functions still work with UTF-8 as long as you stick to certain restrictions. For example <code>explode</code> still works as long as the first and the last character of the delimiter string are ASCII characters.</p>
<p>Unfortunately PHP does not facilitate the use of Unicode prior to version 6. Most functions simply treat strings as sequences of bytes assuming that each character takes up exactly one byte. This behaviour still allows for storing UTF-8 encoded text in PHP strings but many operations on strings have unexpected results. To circumvent this problem we have created some alternative functions to PHP's native string operations which use code points instead of bytes. These functions can be found in <code>/includes/utf/utf_tools.php</code>. They are also covered in the <ahref="http://area51.phpbb.com/docs/code/">phpBB3 Sourcecode Documentation</a>. A lot of native PHP functions still work with UTF-8 as long as you stick to certain restrictions. For example <code>explode</code> still works as long as the first and the last character of the delimiter string are ASCII characters.</p>
<p>phpBB only uses the ASCII and the UTF-8 character encodings. Still all Strings are UTF-8 encoded because ASCII is a subset of UTF-8. The only exceptions to this rule are code sections which deal with external systems which use other encodings and character sets. Such external data should be converted to UTF-8 using the <code>utf8_recode()</code> function supplied with phpBB. It supports a variety of other character sets and encodings, a full list can be found below.</p>
@@ -1848,7 +1847,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
<p>The <abbrtitle="Internet Engineering Task Force">IETF</abbr> recently published <ahref="http://tools.ietf.org/html/rfc4646">RFC 4646</a> for tags used to identify languages, which in combination with <ahref="http://tools.ietf.org/html/rfc4647">RFC 4647</a> obseletes the older <ahref="http://tools.ietf.org/html/rfc3066">RFC 3006</a> and older-still <ahref="http://tools.ietf.org/html/rfc1766">RFC 1766</a>. <ahref="http://tools.ietf.org/html/rfc4646">RFC 4646</a> uses <ahref="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO 639-1/ISO 639-2</a>, <ahref="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a>, <ahref="http://www.unicode.org/iso15924/iso15924-codes.html">ISO 15924</a> and <ahref="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a> to define a language tag. Each complete tag is composed of subtags which are not case sensitive and can also be empty.</p>
<p>Ordering of the subtags in the case that they are all non-empty is: <code>language</code>-<code>script</code>-<code>region</code>-<code>variant</code>-<code>extension</code>-<code>privateuse</code>. Should any subtag be empty, its corresponding hyphen would also be ommited. Thus, the language tag for English will be <code>en</code><strong>and not</strong><code>en-----</code>.</p>
<p>Ordering of the subtags in the case that they are all non-empty is: <code>language</code>-<code>script</code>-<code>region</code>-<code>variant</code>-<code>extension</code>-<code>privateuse</code>. Should any subtag be empty, its corresponding hyphen would also be omitted. Thus, the language tag for English will be <code>en</code><strong>and not</strong><code>en-----</code>.</p>
<p>Most language tags consist of a two- or three-letter language subtag (from <ahref="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO 639-1/ISO 639-2</a>). Sometimes, this is followed by a two-letter or three-digit region subtag (from <ahref="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> or <ahref="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a>). Some examples are:</p>
@@ -1902,7 +1901,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
<p>The ultimate aim of a language tag is to convey the needed <strong>useful distingushing information</strong>, whilst keeping it as <strong>short as possible</strong>. So for example, use <code>en</code>, <code>fr</code> and <code>ja</code> as opposed to <code>en-GB</code>, <code>fr-FR</code> and <code>ja-JP</code>, since we know English, French and Japanese are the native language of Great Britain, France and Japan respectively.</p>
<p>Next is the <ahref="http://www.unicode.org/iso15924/iso15924-codes.html">ISO 15924</a> language script code and when one should or shouldn't use it. For example, whilst <code>en-Latn</code> is syntaxically correct for describing English written with Latin script, real world English writing is <strong>more-or-less exclusively in the Latin script</strong>. For such languages like English that are written in a single script, the <ahref="http://www.iana.org/assignments/language-subtag-registry"><abbrtitle="Internet Assigned Numbers Authority">IANA</abbr> Language Subtag Registry</a> has a "Suppress-Script" field meaning the script code <strong>should be ommitted</strong> unless a specific language tag requires a specific script code. Some languages are <strong>written in more than one script</strong> and in such cases, the script code <strong>is encouraged</strong> since an end-user may be able to read their language in one script, but not the other. Some examples are:</p>
<p>Next is the <ahref="http://www.unicode.org/iso15924/iso15924-codes.html">ISO 15924</a> language script code and when one should or shouldn't use it. For example, whilst <code>en-Latn</code> is syntaxically correct for describing English written with Latin script, real world English writing is <strong>more-or-less exclusively in the Latin script</strong>. For such languages like English that are written in a single script, the <ahref="http://www.iana.org/assignments/language-subtag-registry"><abbrtitle="Internet Assigned Numbers Authority">IANA</abbr> Language Subtag Registry</a> has a "Suppress-Script" field meaning the script code <strong>should be omitted</strong> unless a specific language tag requires a specific script code. Some languages are <strong>written in more than one script</strong> and in such cases, the script code <strong>is encouraged</strong> since an end-user may be able to read their language in one script, but not the other. Some examples are:</p>
<table>
<caption>Examples of using a language subtag in combination with a script subtag</caption>
@@ -1967,7 +1966,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
</tbody>
</table>
<p>Usage of the three-digit <ahref="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a> code over the two-letter <ahref="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> code should hapen if a macro-geographical entity is required and/or the <ahref="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> is ambiguous.</p>
<p>Usage of the three-digit <ahref="http://unstats.un.org/unsd/methods/m49/m49.htm">UN M.49</a> code over the two-letter <ahref="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> code should happen if a macro-geographical entity is required and/or the <ahref="http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166-1 alpha-2</a> is ambiguous.</p>
<p>Examples of English using marco-geographical regions:</p>
@@ -2387,7 +2386,7 @@ if (utf8_case_fold_nfc($string1) == utf8_case_fold_nfc($string2))
You have <code>[1/21/31] slon</code>, <code>[2/3/4] slona</code>, <code>[0/5/6] slonova</code> and <code>[7/8/9/11] ...</code> and some more difficult rules.
</p>
<p>The <ahref="https://wiki.phpbb.com/Plural_Rules">plural system</a> takes care of this and can be used as follows:</p>
<p>The <ahref="https://area51.phpbb.com/docs/dev/32x/language/plurals.html">plural system</a> takes care of this and can be used as follows:</p>
<p>The PHP code will basically look like this:</p>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.