Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'prep-release-3.0.12'

* prep-release-3.0.12: (443 commits)
  [prep-release-3.0.12] Update changelog for 3.0.12 release.
  [ticket/11873] Add unit test for large password input.
  [ticket/11873] Do not hash very large passwords in order to safe resources.
  [prep-release-3.0.12] Bumping version number for 3.0.12 final.
  [prep-release-3.0.12] Remove changelog entry for ticket that was not resolved.
  [prep-release-3.0.12] Update Changelog for 3.0.12-RC3 release.
  [prep-release-3.0.12] Bumping version number for 3.0.12-RC3.
  [ticket/11769] Allow using 0 as poster name
  [ticket/11769] Allow '0' as username
  [ticket/11769] Allow '0' as username in notification mails
  [ticket/11769] Fix language issues in the doc blocks
  [ticket/11769] Correctly supply the post author's username in posting.php
  [ticket/11802] replace $browser with $user->browser
  [ticket/11775] Fix doc blocks syntax
  [ticket/11775] Remove spaces at line ends
  [ticket/11775] Split test into multiple steps
  [ticket/11775] Add functional test for moving the last post
  [ticket/11775] Backport moving of the posting functions to 3.0
  [ticket/11775] Fix error when moving the last post to another topic
  [prep-release-3.0.12] Update Changelog for 3.0.12-RC2 release.
  ...
  • Loading branch information...
commit 21e55ea6d23c94cbbcd672dcf31c939dd7ef08e9 2 parents 7eb16cb + 446ea99
@bantu bantu authored
Showing with 7,076 additions and 930 deletions.
  1. +1 −1  .gitignore
  2. +10 −6 .travis.yml
  3. +1 −1  README.md
  4. +64 −11 build/build.xml
  5. BIN  composer.phar
  6. +5 −52 git-tools/hooks/pre-commit
  7. +21 −6 git-tools/merge.php
  8. +66 −26 git-tools/setup_github_network.php
  9. +8 −1 phpBB/adm/index.php
  10. +2 −1  phpBB/adm/style/acp_users_overview.html
  11. +1 −1  phpBB/adm/style/install_footer.html
  12. +6 −1 phpBB/common.php
  13. +8 −0 phpBB/composer.json
  14. +966 −0 phpBB/composer.lock
  15. +1 −1  phpBB/develop/create_schema_files.php
  16. +1 −1  phpBB/develop/generate_utf_casefold.php
  17. +1 −1  phpBB/develop/generate_utf_confusables.php
  18. +1 −1  phpBB/develop/generate_utf_tables.php
  19. +21 −3 phpBB/develop/mysql_upgrader.php
  20. +1 −1  phpBB/develop/utf_normalizer_test.php
  21. +12 −9 phpBB/docs/AUTHORS
  22. +177 −21 phpBB/docs/CHANGELOG.html
  23. +6 −6 phpBB/docs/FAQ.html
  24. +89 −70 phpBB/docs/INSTALL.html
  25. +29 −29 phpBB/docs/README.html
  26. +2 −2 phpBB/docs/auth_api.html
  27. +5 −3 phpBB/docs/coding-guidelines.html
  28. +1 −1  phpBB/docs/hook_system.html
  29. +31 −10 phpBB/download/file.php
  30. +1 −1  phpBB/includes/acm/acm_apc.php
  31. +2 −2 phpBB/includes/acm/acm_eaccelerator.php
  32. +2 −2 phpBB/includes/acm/acm_memcache.php
  33. +2 −2 phpBB/includes/acm/acm_redis.php
  34. +1 −1  phpBB/includes/acm/acm_wincache.php
  35. +1 −1  phpBB/includes/acm/acm_xcache.php
  36. +11 −3 phpBB/includes/acp/acp_bbcodes.php
  37. +2 −2 phpBB/includes/acp/acp_board.php
  38. +2 −0  phpBB/includes/acp/acp_captcha.php
  39. +76 −38 phpBB/includes/acp/acp_groups.php
  40. +2 −2 phpBB/includes/acp/acp_main.php
  41. +1 −1  phpBB/includes/acp/acp_send_statistics.php
  42. +1 −1  phpBB/includes/acp/acp_update.php
  43. +1 −1  phpBB/includes/captcha/captcha_non_gd.php
  44. +2 −1  phpBB/includes/constants.php
  45. +16 −0 phpBB/includes/db/db_tools.php
  46. +1 −1  phpBB/includes/db/dbal.php
  47. +42 −24 phpBB/includes/db/mssql.php
  48. +35 −5 phpBB/includes/db/mssql_odbc.php
  49. +34 −21 phpBB/includes/db/mssqlnative.php
  50. +37 −8 phpBB/includes/db/mysql.php
  51. +25 −7 phpBB/includes/db/mysqli.php
  52. +45 −8 phpBB/includes/db/oracle.php
  53. +36 −5 phpBB/includes/db/sqlite.php
  54. +74 −10 phpBB/includes/functions.php
  55. +3 −3 phpBB/includes/functions_admin.php
  56. +206 −0 phpBB/includes/functions_database_helper.php
  57. +10 −1 phpBB/includes/functions_install.php
  58. +1 −1  phpBB/includes/functions_jabber.php
  59. +33 −4 phpBB/includes/functions_messenger.php
  60. +24 −16 phpBB/includes/functions_posting.php
  61. +27 −2 phpBB/includes/functions_user.php
  62. +9 −6 phpBB/includes/mcp/mcp_forum.php
  63. +22 −0 phpBB/includes/mcp/mcp_main.php
  64. +1 −0  phpBB/includes/mcp/mcp_pm_reports.php
  65. +51 −5 phpBB/includes/mcp/mcp_topic.php
  66. +1 −1  phpBB/includes/questionnaire/questionnaire.php
  67. +10 −3 phpBB/includes/search/fulltext_mysql.php
  68. +4 −3 phpBB/includes/session.php
  69. +1 −1  phpBB/includes/ucp/info/ucp_profile.php
  70. +1 −1  phpBB/includes/ucp/ucp_activate.php
  71. +8 −0 phpBB/includes/ucp/ucp_groups.php
  72. +7 −9 phpBB/includes/ucp/ucp_pm_compose.php
  73. +32 −0 phpBB/includes/ucp/ucp_prefs.php
  74. +2 −2 phpBB/install/convertors/convert_phpbb20.php
  75. +170 −24 phpBB/install/database_update.php
  76. +1 −1  phpBB/install/index.php
  77. +1 −1  phpBB/install/install_convert.php
  78. +8 −13 phpBB/install/install_install.php
  79. +3 −1 phpBB/install/install_update.php
  80. +1 −1  phpBB/install/schemas/schema_data.sql
  81. +1 −1  phpBB/language/en/acp/board.php
  82. +2 −2 phpBB/language/en/acp/common.php
  83. +1 −1  phpBB/language/en/acp/permissions.php
  84. +2 −1  phpBB/language/en/acp/posting.php
  85. +1 −1  phpBB/language/en/acp/search.php
  86. +8 −3 phpBB/language/en/common.php
  87. +1 −1  phpBB/language/en/email/forum_notify.txt
  88. +1 −1  phpBB/language/en/email/installed.txt
  89. +1 −1  phpBB/language/en/email/newtopic_notify.txt
  90. +1 −1  phpBB/language/en/email/topic_notify.txt
  91. +2 −2 phpBB/language/en/help_faq.php
  92. +8 −8 phpBB/language/en/install.php
  93. +3 −3 phpBB/language/en/posting.php
  94. +1 −0  phpBB/language/en/search.php
  95. +3 −3 phpBB/language/en/ucp.php
  96. +12 −4 phpBB/posting.php
  97. +98 −57 phpBB/report.php
  98. +2 −1  phpBB/search.php
  99. +1 −1  phpBB/styles/prosilver/imageset/imageset.cfg
  100. +1 −1  phpBB/styles/prosilver/style.cfg
  101. +25 −20 phpBB/styles/prosilver/template/login_forum.html
  102. +1 −1  phpBB/styles/prosilver/template/mcp_front.html
  103. +4 −0 phpBB/styles/prosilver/template/memberlist_search.html
  104. +4 −4 phpBB/styles/prosilver/template/posting_editor.html
  105. +4 −0 phpBB/styles/prosilver/template/report_body.html
  106. +1 −0  phpBB/styles/prosilver/template/search_results.html
  107. +1 −1  phpBB/styles/prosilver/template/template.cfg
  108. +9 −10 phpBB/styles/prosilver/template/ucp_groups_manage.html
  109. +1 −1  phpBB/styles/prosilver/template/ucp_pm_history.html
  110. +3 −4 phpBB/styles/prosilver/template/ucp_pm_viewmessage_print.html
  111. +7 −5 phpBB/styles/prosilver/template/ucp_prefs_personal.html
  112. +1 −1  phpBB/styles/prosilver/template/viewtopic_print.html
  113. +1 −1  phpBB/styles/prosilver/theme/stylesheet.css
  114. +1 −1  phpBB/styles/prosilver/theme/theme.cfg
  115. +1 −1  phpBB/styles/subsilver2/imageset/imageset.cfg
  116. +1 −1  phpBB/styles/subsilver2/style.cfg
  117. +1 −1  phpBB/styles/subsilver2/template/captcha_qa.html
  118. +8 −0 phpBB/styles/subsilver2/template/login_forum.html
  119. +8 −0 phpBB/styles/subsilver2/template/report_body.html
  120. +1 −1  phpBB/styles/subsilver2/template/simple_footer.html
  121. +1 −1  phpBB/styles/subsilver2/template/template.cfg
  122. +1 −1  phpBB/styles/subsilver2/template/ucp_pm_history.html
  123. +1 −1  phpBB/styles/subsilver2/template/ucp_pm_viewmessage_print.html
  124. +3 −1 phpBB/styles/subsilver2/template/ucp_prefs_personal.html
  125. +1 −1  phpBB/styles/subsilver2/template/viewforum_body.html
  126. +1 −1  phpBB/styles/subsilver2/template/viewtopic_print.html
  127. +1 −1  phpBB/styles/subsilver2/theme/stylesheet.css
  128. +1 −1  phpBB/styles/subsilver2/theme/theme.cfg
  129. +0 −6 phpBB/ucp.php
  130. +8 −1 phpBB/viewtopic.php
  131. +4 −0 phpunit.xml.all
  132. +4 −0 phpunit.xml.dist
  133. +4 −0 phpunit.xml.functional
  134. +151 −0 tests/RUNNING_TESTS.md
  135. +0 −76 tests/RUNNING_TESTS.txt
  136. +1 −1  tests/bbcode/url_bbcode_test.php
  137. +15 −0 tests/bootstrap.php
  138. 0  tests/compress/archive/.gitkeep
  139. +173 −0 tests/compress/compress_test.php
  140. 0  tests/compress/extract/.gitkeep
  141. +1 −0  tests/compress/fixtures/1.txt
  142. BIN  tests/compress/fixtures/archive.tar
  143. BIN  tests/compress/fixtures/archive.tar.bz2
  144. BIN  tests/compress/fixtures/archive.tar.gz
  145. BIN  tests/compress/fixtures/archive.zip
  146. +1 −0  tests/compress/fixtures/dir/2.txt
  147. +1 −0  tests/compress/fixtures/dir/3.txt
  148. +1 −0  tests/compress/fixtures/dir/subdir/4.txt
  149. +43 −0 tests/dbal/connect_test.php
  150. +7 −2 tests/dbal/order_lower_test.php
  151. +8 −8 tests/dbal/select_test.php
  152. +55 −0 tests/dbal/write_sequence_test.php
  153. +2 −2 tests/dbal/write_test.php
  154. +9 −0 tests/fixtures/empty.xml
  155. +21 −0 tests/functional/acp_groups_test.php
  156. +11 −3 tests/functional/auth_test.php
  157. +3 −3 tests/functional/browse_test.php
  158. +93 −0 tests/functional/common_groups_test.php
  159. +45 −0 tests/functional/forum_style_test.php
  160. +67 −0 tests/functional/mcp_test.php
  161. +35 −0 tests/functional/posting_test.php
  162. +66 −0 tests/functional/report_post_captcha_test.php
  163. +21 −0 tests/functional/ucp_groups_test.php
  164. +44 −0 tests/functions/clean_path_test.php
  165. +21 −0 tests/functions/fixtures/language_select.xml
  166. +121 −0 tests/functions/fixtures/obtain_online.xml
  167. +23 −0 tests/functions/fixtures/style_select.xml
  168. +23 −0 tests/functions/fixtures/validate_email.xml
  169. +38 −0 tests/functions/fixtures/validate_username.xml
  170. +71 −0 tests/functions/get_formatted_filesize_test.php
  171. +75 −0 tests/functions/get_remote_file_test.php
  172. +56 −0 tests/functions/is_absolute_test.php
  173. +39 −0 tests/functions/language_select_test.php
  174. +238 −0 tests/functions/obtain_online_test.php
  175. +41 −0 tests/functions/style_select_test.php
  176. +36 −0 tests/functions/validate_data_helper.php
  177. +82 −0 tests/functions/validate_date_test.php
  178. +108 −0 tests/functions/validate_email_test.php
  179. +121 −0 tests/functions/validate_hex_colour_test.php
  180. +79 −0 tests/functions/validate_jabber_test.php
  181. +60 −0 tests/functions/validate_lang_iso_test.php
  182. +49 −0 tests/functions/validate_match_test.php
  183. +59 −0 tests/functions/validate_num_test.php
  184. +96 −0 tests/functions/validate_password_test.php
  185. +70 −0 tests/functions/validate_string_test.php
  186. +190 −0 tests/functions/validate_username_test.php
  187. +47 −0 tests/functions_database_helper/fixtures/bookmarks_duplicates.xml
  188. +80 −0 tests/functions_database_helper/fixtures/topics_watch_duplicates.xml
  189. +101 −0 tests/functions_database_helper/update_rows_avoiding_duplicates_notify_status_test.php
  190. +71 −0 tests/functions_database_helper/update_rows_avoiding_duplicates_test.php
  191. +74 −0 tests/lint_test.php
  192. +26 −1 tests/mock/cache.php
  193. +42 −0 tests/mock/null_cache.php
  194. +13 −0 tests/{mock_user.php → mock/user.php}
  195. +1 −1  tests/privmsgs/delete_user_pms_test.php
  196. +1 −1  tests/request/request_var_test.php
  197. +1 −1  tests/security/extract_current_page_test.php
  198. +8 −0 tests/security/hash_test.php
  199. +1 −1  tests/security/redirect_test.php
  200. +50 −51 tests/session/append_sid_test.php
  201. +4 −3 tests/session/{init_test.php → creation_test.php}
  202. +41 −8 tests/template/template_test.php
  203. +2 −0  tests/template/templates/include_define.html
  204. +2 −0  tests/template/templates/include_define_variable.html
  205. +4 −0 tests/template/templates/include_loop_define.html
  206. +37 −0 tests/test_framework/phpbb_database_connection_odbc_pdo_wrapper.php
  207. +88 −0 tests/test_framework/phpbb_database_test_case.php
  208. +291 −9 tests/test_framework/phpbb_database_test_connection_manager.php
  209. +566 −80 tests/test_framework/phpbb_functional_test_case.php
  210. +3 −1 tests/test_framework/phpbb_test_case_helpers.php
  211. +1 −1  tests/text_processing/censor_text_test.php
  212. +1 −1  tests/text_processing/make_clickable_test.php
  213. +1 −1  tests/utf/utf8_clean_string_test.php
  214. +3 −1 travis/phpunit-mysql-travis.xml
  215. +3 −1 travis/phpunit-postgres-travis.xml
  216. +54 −0 travis/setup-webserver.sh
  217. BIN  vendor/goutte.phar
View
2  .gitignore
@@ -2,7 +2,7 @@
/phpunit.xml
/phpBB/cache/*.html
/phpBB/cache/*.php
-/phpBB/cache/queue.php.lock
+/phpBB/cache/*.lock
/phpBB/composer.phar
/phpBB/config.php
/phpBB/config_dev.php
View
16 .travis.yml
@@ -4,21 +4,25 @@ php:
- 5.3.3
- 5.3
- 5.4
+ - 5.5
env:
- DB=mysql
- DB=postgres
before_script:
- - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres; fi"
- - sh -c "if [ '$DB' = 'pgsql' ]; then psql -c 'create database phpbb_tests;' -U postgres; fi"
+ - sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'DROP DATABASE IF EXISTS phpbb_tests;' -U postgres; fi"
+ - sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database phpbb_tests;' -U postgres; fi"
- sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS phpbb_tests;'; fi"
- - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then pear install --force phpunit/DbUnit; else pyrus install --force phpunit/DbUnit; fi"
- - phpenv rehash
+ - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then pear install --force phpunit/DbUnit; phpenv rehash; fi"
+ - cd phpBB
+ - sh -c "if [ '$TRAVIS_PHP_VERSION' != '5.2' ]; then php ../composer.phar install --dev --no-interaction --prefer-source; fi"
+ - cd ..
+ - sh -c "if [ `php -r "echo (int) version_compare(PHP_VERSION, '5.3.19', '>=');"` = "1" ]; then travis/setup-webserver.sh; fi"
script:
- - phpunit --configuration travis/phpunit-$DB-travis.xml
-
+ - sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.2' ]; then phpunit --configuration travis/phpunit-$DB-travis.xml; else phpBB/vendor/bin/phpunit --configuration travis/phpunit-$DB-travis.xml; fi"
+
notifications:
email:
recipients:
View
2  README.md
@@ -1,4 +1,4 @@
-[![phpBB](http://www.phpbb.com/theme/images/logos/blue/160x52.png)](http://www.phpbb.com)
+[![phpBB](https://www.phpbb.com/theme/images/logos/blue/160x52.png)](http://www.phpbb.com)
## ABOUT
View
75 build/build.xml
@@ -2,18 +2,17 @@
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build -->
- <property name="newversion" value="3.0.11" />
- <property name="prevversion" value="3.0.10" />
- <property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.7-PL1, 3.0.8, 3.0.9, 3.0.11-RC1, 3.0.11-RC2" />
+ <property name="newversion" value="3.0.12" />
+ <property name="prevversion" value="3.0.11" />
+ <property name="olderversions" value="3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.0.6, 3.0.7, 3.0.7-PL1, 3.0.8, 3.0.9, 3.0.10, 3.0.12-RC1, 3.0.12-RC2, 3.0.12-RC3" />
<!-- 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,docs,create-package" />
- <target name="build" depends="clean,prepare,test,docs" />
+ <target name="all" depends="clean,prepare,composer,test,docs,package" />
+ <target name="build" depends="clean,prepare,composer,test,docs" />
<target name="prepare">
<mkdir dir="build/logs" />
@@ -43,17 +42,31 @@
<delete dir="build/save" />
</target>
- <target name="test" depends="clean,prepare">
+ <!--
+ This target basically just runs composer in the phpBB tree to ensure
+ all dependencies are loaded. Additional development dependencies are
+ loaded because testing framework may depend on them.
+ -->
+ <target name="composer">
+ <exec dir="phpBB"
+ command="php ../composer.phar install --dev"
+ checkreturn="true"
+ passthru="true" />
+ </target>
+
+ <target name="test" depends="clean,prepare,composer">
<exec dir="."
- command="phpunit --log-junit build/logs/phpunit.xml
+ command="phpBB/vendor/bin/phpunit
+ --log-junit build/logs/phpunit.xml
--coverage-clover build/logs/clover.xml
--coverage-html build/coverage"
passthru="true" />
</target>
- <target name="test-slow" depends="clean,prepare">
+ <target name="test-slow" depends="clean,prepare,composer">
<exec dir="."
- command="phpunit --log-junit build/logs/phpunit.xml
+ command="phpBB/vendor/bin/phpunit
+ --log-junit build/logs/phpunit.xml
--configuration phpunit.xml.all
--group slow
--coverage-clover build/logs/clover-slow.xml
@@ -116,7 +129,7 @@
</target>
- <target name="create-package" depends="prepare-new-version,old-version-diffs">
+ <target name="package" depends="clean,prepare,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" />
@@ -155,6 +168,45 @@
<exec dir="phpBB"
command="git archive ${revision} | tar -xf - -C ../${dir}"
checkreturn="true" />
+
+ <!-- Install composer dependencies, if there are any. -->
+ <exec dir="."
+ command='php -r "\$j = json_decode(file_get_contents("composer.json")); echo isset(\$j->require);"'
+ checkreturn="true"
+ outputProperty='composer-has-dependencies' />
+ <if>
+ <equals arg1="${composer-has-dependencies}" arg2="1" trim="true" />
+ <then>
+ <!-- We have non-dev composer dependencies -->
+ <exec dir="."
+ command="git ls-tree ${revision} composer.phar"
+ checkreturn="true"
+ outputProperty='composer-ls-tree-output' />
+ <if>
+ <equals arg1="${composer-ls-tree-output}" arg2="" trim="true" />
+ <then>
+ <fail message="There are composer dependencies, but composer.phar is missing." />
+ </then>
+ <else>
+ <!-- Export the phar, install dependencies, delete phar. -->
+ <exec dir="."
+ command="git archive ${revision} composer.phar | tar -xf - -C ${dir}"
+ checkreturn="true" />
+ <exec dir="${dir}"
+ command="php composer.phar install"
+ checkreturn="true"
+ passthru="true" />
+ <delete file="${dir}/composer.phar" />
+ </else>
+ </if>
+ </then>
+ <else>
+ <!-- We do not have composer dependencies, do not ship composer files -->
+ <delete file="${dir}/composer.json" />
+ <delete file="${dir}/composer.lock" />
+ </else>
+ </if>
+
<delete file="${dir}/config.php" />
<delete dir="${dir}/develop" />
<delete dir="${dir}/install/data" />
@@ -176,6 +228,7 @@
<delete dir="${dir}/files" />
<delete dir="${dir}/install" />
<delete dir="${dir}/store" />
+ <delete dir="${dir}/vendor" />
</target>
</project>
View
BIN  composer.phar
Binary file not shown
View
57 git-tools/hooks/pre-commit
@@ -33,9 +33,7 @@ else
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
-error=0
errors=""
-
if ! which "$PHP_BIN" >/dev/null 2>&1
then
echo "PHP Syntax check failed:"
@@ -73,63 +71,18 @@ do
# check the staged file content for syntax errors
# using php -l (lint)
- # note: if display_errors=stderr in php.ini,
- # parse errors are printed on stderr; otherwise
- # they are printed on stdout.
- # we filter everything other than parse errors
- # with a grep below, therefore it should be safe
- # to combine stdout and stderr in all circumstances
- result=$(git cat-file -p $sha | "$PHP_BIN" -l 2>&1)
+ result=$(git cat-file -p $sha | "$PHP_BIN" -n -l -ddisplay_errors\=1 -derror_reporting\=E_ALL -dlog_errrors\=0 2>&1)
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")
+ errors=$(echo "$errors"; echo "$result" | grep ':' | sed -e "s@in - on@in $filename on@g")
fi
done
unset IFS
-if [ $error -eq 1 ]
+if [ -n "$errors" ]
then
- echo "PHP Syntax check failed:"
- # php "display errors" (display_errors php.ini value)
- # and "log errors" (log_errors php.ini value).
- # these are independent settings - see main/main.c in php source.
- # the "log errors" setting produces output which
- # starts with "PHP Parse error:"; the "display errors"
- # setting produces output starting with "Parse error:".
- # if both are turned on php dumps the parse error twice.
- # therefore here we try to grep for one version and
- # if that yields no results grep for the other version.
- #
- # other fun php facts:
- #
- # 1. in cli, display_errors and log_errors have different
- # destinations by default. display_errors prints to
- # standard output and log_errors prints to standard error.
- # whether these destinations make sense is left
- # as an exercise for the reader.
- # 2. as mentioned above, with all output turned on
- # php will print parse errors twice, one time on stdout
- # and one time on stderr.
- # 3. it is possible to set both display_errors and log_errors
- # to off. if this is done php will print the text
- # "Errors parsing <file>" but will not say what
- # the errors are. useful behavior, this.
- # 4. on my system display_errors defaults to on and
- # log_errors defaults to off, therefore providing
- # by default one copy of messages. your mileage may vary.
- # 5. by setting display_errors=stderr and log_errors=on,
- # both sets of messages will be printed on stderr.
- # 6. php-cgi binary, given display_errors=stderr and
- # log_errors=on, still prints both sets of messages
- # on stderr, but formats one set as an html fragment.
- # 7. your entry here? ;)
- $echo_e "$errors" | grep "^Parse error:"
- if [ $? -ne 0 ]
- then
- # match failed
- $echo_e "$errors" | grep "^PHP Parse error:"
- fi
+ echo "PHP Syntax check failed: "
+ $echo_e "$errors"
exit 1
fi
View
27 git-tools/merge.php
@@ -78,12 +78,12 @@ function work($pull_id, $remote)
add_remote($pull_user, 'phpbb3');
run("git fetch $pull_user");
run("git merge --no-ff $pull_user/$pull_branch");
- run("phpunit");
+ run("phpBB/vendor/bin/phpunit");
run("git checkout develop");
run("git pull $remote develop");
run("git merge --no-ff develop-olympus");
- run("phpunit");
+ run("phpBB/vendor/bin/phpunit");
break;
case 'develop':
@@ -93,7 +93,7 @@ function work($pull_id, $remote)
add_remote($pull_user, 'phpbb3');
run("git fetch $pull_user");
run("git merge --no-ff $pull_user/$pull_branch");
- run("phpunit");
+ run("phpBB/vendor/bin/phpunit");
break;
default:
@@ -124,19 +124,34 @@ function get_repository_url($username, $repository, $ssh = false)
function api_request($query)
{
- $contents = file_get_contents("http://github.com/api/v2/json/$query");
+ return api_url_request("https://api.github.com/$query?per_page=100");
+}
+
+function api_url_request($url)
+{
+ $contents = file_get_contents($url, false, stream_context_create(array(
+ 'http' => array(
+ 'header' => "User-Agent: phpBB/1.0\r\n",
+ ),
+ )));
if ($contents === false)
{
throw new RuntimeException("Error: failed to retrieve pull request data\n", 4);
}
+ $contents = json_decode($contents);
+
+ if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0)
+ {
+ throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4);
+ }
- return json_decode($contents);
+ return $contents;
}
function get_pull($username, $repository, $pull_id)
{
- $request = api_request("pulls/$username/$repository/$pull_id");
+ $request = api_request("repos/$username/$repository/pulls/$pull_id");
$pull = $request->pull;
View
92 git-tools/setup_github_network.php
@@ -15,14 +15,14 @@ function show_usage()
echo "$filename adds repositories of a github network as remotes to a local git repository.\n";
echo "\n";
- echo "Usage: [php] $filename -s collaborators|organisation|contributors|network [OPTIONS]\n";
+ echo "Usage: [php] $filename -s collaborators|organisation|contributors|forks [OPTIONS]\n";
echo "\n";
echo "Scopes:\n";
echo " collaborators Repositories of people who have push access to the specified repository\n";
echo " contributors Repositories of people who have contributed to the specified repository\n";
echo " organisation Repositories of members of the organisation at github\n";
- echo " network All repositories of the whole github network\n";
+ echo " forks All repositories of the whole github network\n";
echo "\n";
echo "Options:\n";
@@ -55,31 +55,31 @@ function show_usage()
function work($scope, $username, $repository, $developer)
{
// Get some basic data
- $network = get_network($username, $repository);
+ $forks = get_forks($username, $repository);
$collaborators = get_collaborators($username, $repository);
- if ($network === false || $collaborators === false)
+ if ($forks === false || $collaborators === false)
{
- echo "Error: failed to retrieve network or collaborators\n";
+ echo "Error: failed to retrieve forks or collaborators\n";
return 1;
}
switch ($scope)
{
case 'collaborators':
- $remotes = array_intersect_key($network, $collaborators);
+ $remotes = array_intersect_key($forks, $collaborators);
break;
case 'organisation':
- $remotes = array_intersect_key($network, get_organisation_members($username));
+ $remotes = array_intersect_key($forks, get_organisation_members($username));
break;
case 'contributors':
- $remotes = array_intersect_key($network, get_contributors($username, $repository));
+ $remotes = array_intersect_key($forks, get_contributors($username, $repository));
break;
- case 'network':
- $remotes = $network;
+ case 'forks':
+ $remotes = $forks;
break;
default:
@@ -145,26 +145,66 @@ function get_repository_url($username, $repository, $ssh = false)
function api_request($query)
{
- $contents = file_get_contents("http://github.com/api/v2/json/$query");
+ return api_url_request("https://api.github.com/$query?per_page=100");
+}
+
+function api_url_request($url)
+{
+ $contents = file_get_contents($url, false, stream_context_create(array(
+ 'http' => array(
+ 'header' => "User-Agent: phpBB/1.0\r\n",
+ ),
+ )));
+
+ $sub_request_result = array();
+ // Check headers for pagination links
+ if (!empty($http_response_header))
+ {
+ foreach ($http_response_header as $header_element)
+ {
+ // Find Link Header which gives us a link to the next page
+ if (strpos($header_element, 'Link: ') === 0)
+ {
+ list($head, $header_content) = explode(': ', $header_element);
+ foreach (explode(', ', $header_content) as $links)
+ {
+ list($url, $rel) = explode('; ', $links);
+ if ($rel == 'rel="next"')
+ {
+ // Found a next link, follow it and merge the results
+ $sub_request_result = api_url_request(substr($url, 1, -1));
+ }
+ }
+ }
+ }
+ }
+
if ($contents === false)
{
return false;
}
- return json_decode($contents);
+ $contents = json_decode($contents);
+
+ if (isset($contents->message) && strpos($contents->message, 'API Rate Limit') === 0)
+ {
+ throw new RuntimeException('Reached github API Rate Limit. Please try again later' . "\n", 4);
+ }
+
+ return ($sub_request_result) ? array_merge($sub_request_result, $contents) : $contents;
}
function get_contributors($username, $repository)
{
- $request = api_request("repos/show/$username/$repository/contributors");
+ $request = api_request("repos/$username/$repository/stats/contributors");
if ($request === false)
{
return false;
}
$usernames = array();
- foreach ($request->contributors as $contributor)
+ foreach ($request as $contribution)
{
- $usernames[$contributor->login] = $contributor->login;
+ $usernames[$contribution->author->login] = $contribution->author->login;
}
return $usernames;
@@ -172,14 +212,14 @@ function get_contributors($username, $repository)
function get_organisation_members($username)
{
- $request = api_request("organizations/$username/public_members");
+ $request = api_request("orgs/$username/public_members");
if ($request === false)
{
return false;
}
$usernames = array();
- foreach ($request->users as $member)
+ foreach ($request as $member)
{
$usernames[$member->login] = $member->login;
}
@@ -189,35 +229,35 @@ function get_organisation_members($username)
function get_collaborators($username, $repository)
{
- $request = api_request("repos/show/$username/$repository/collaborators");
+ $request = api_request("repos/$username/$repository/collaborators");
if ($request === false)
{
return false;
}
$usernames = array();
- foreach ($request->collaborators as $collaborator)
+ foreach ($request as $collaborator)
{
- $usernames[$collaborator] = $collaborator;
+ $usernames[$collaborator->login] = $collaborator->login;
}
return $usernames;
}
-function get_network($username, $repository)
+function get_forks($username, $repository)
{
- $request = api_request("repos/show/$username/$repository/network");
+ $request = api_request("repos/$username/$repository/forks");
if ($request === false)
{
return false;
}
$usernames = array();
- foreach ($request->network as $network)
+ foreach ($request as $fork)
{
- $usernames[$network->owner] = array(
- 'username' => $network->owner,
- 'repository' => $network->name,
+ $usernames[$fork->owner->login] = array(
+ 'username' => $fork->owner->login,
+ 'repository' => $fork->name,
);
}
View
9 phpBB/adm/index.php
@@ -199,7 +199,7 @@ function adm_page_footer($copyright_html = true)
'DEBUG_OUTPUT' => (defined('DEBUG')) ? $debug_output : '',
'TRANSLATION_INFO' => (!empty($user->lang['TRANSLATION_INFO'])) ? $user->lang['TRANSLATION_INFO'] : '',
'S_COPYRIGHT_HTML' => $copyright_html,
- 'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="http://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Group'),
+ 'CREDIT_LINE' => $user->lang('POWERED_BY', '<a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Group'),
'VERSION' => $config['version'])
);
@@ -449,6 +449,13 @@ function validate_config_vars($config_vars, &$cfg_array, &$error)
}
break;
+ case 'email':
+ if (!preg_match('/^' . get_preg_expression('email') . '$/i', $cfg_array[$config_name]))
+ {
+ $error[] = $user->lang['EMAIL_INVALID_EMAIL'];
+ }
+ break;
+
// Absolute path
case 'script_path':
if (!$cfg_array[$config_name])
View
3  phpBB/adm/style/acp_users_overview.html
@@ -142,10 +142,11 @@
<dt><label for="delete_type">{L_DELETE_USER}:</label><br /><span>{L_DELETE_USER_EXPLAIN}</span></dt>
<dd>
<!-- IF USER_HAS_POSTS -->
- <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>
+ <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>
<!-- ELSE -->
{L_USER_NO_POSTS_TO_DELETE}<input type="hidden" id="delete_type" name="delete_type" value="retain" />
<!-- ENDIF -->
+ </dd>
</dl>
<p class="quick">
<input class="button1" type="submit" name="update" value="{L_SUBMIT}" />
View
2  phpBB/adm/style/install_footer.html
@@ -8,7 +8,7 @@
</div>
<div id="page-footer">
- Powered by <a href="http://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Group
+ Powered by <a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Group
</div>
</div>
View
7 phpBB/common.php
@@ -26,6 +26,8 @@
if (!defined('PHPBB_INSTALLED'))
{
// Redirect the user to the installer
+ require($phpbb_root_path . 'includes/functions.' . $phpEx);
+
// We have to generate a full HTTP/1.1 header here since we can't guarantee to have any of the information
// available as used by the redirect function
$server_name = (!empty($_SERVER['HTTP_HOST'])) ? strtolower($_SERVER['HTTP_HOST']) : ((!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : getenv('SERVER_NAME'));
@@ -38,10 +40,13 @@
$script_name = (!empty($_SERVER['REQUEST_URI'])) ? $_SERVER['REQUEST_URI'] : getenv('REQUEST_URI');
}
+ // $phpbb_root_path accounts for redirects from e.g. /adm
+ $script_path = trim(dirname($script_name)) . '/' . $phpbb_root_path . 'install/index.' . $phpEx;
// Replace any number of consecutive backslashes and/or slashes with a single slash
// (could happen on some proxy setups and/or Windows servers)
- $script_path = trim(dirname($script_name)) . '/install/index.' . $phpEx;
$script_path = preg_replace('#[\\\\/]{2,}#', '/', $script_path);
+ // Eliminate . and .. from the path
+ $script_path = phpbb_clean_path($script_path);
$url = (($secure) ? 'https://' : 'http://') . $server_name;
View
8 phpBB/composer.json
@@ -0,0 +1,8 @@
+{
+ "require-dev": {
+ "fabpot/goutte": "v0.1.0",
+ "phpunit/dbunit": "1.2.*",
+ "phpunit/phpunit": "3.7.*",
+ "phing/phing": "2.4.*"
+ }
+}
View
966 phpBB/composer.lock
@@ -0,0 +1,966 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
+ ],
+ "hash": "ef6d05965cca4e390fff7ce63e9d2d49",
+ "packages": [
+
+ ],
+ "packages-dev": [
+ {
+ "name": "fabpot/goutte",
+ "version": "v0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fabpot/Goutte",
+ "reference": "v0.1.0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/fabpot/Goutte/archive/v0.1.0.zip",
+ "reference": "v0.1.0",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "guzzle/guzzle": "3.0.*",
+ "php": ">=5.3.0",
+ "symfony/browser-kit": "2.1.*",
+ "symfony/css-selector": "2.1.*",
+ "symfony/dom-crawler": "2.1.*",
+ "symfony/finder": "2.1.*",
+ "symfony/process": "2.1.*"
+ },
+ "type": "application",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Goutte": "."
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "A simple PHP Web Scraper",
+ "homepage": "https://github.com/fabpot/Goutte",
+ "keywords": [
+ "scraper"
+ ],
+ "time": "2012-12-02 13:44:35"
+ },
+ {
+ "name": "guzzle/guzzle",
+ "version": "v3.0.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle",
+ "reference": "v3.0.7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/guzzle/guzzle/archive/v3.0.7.zip",
+ "reference": "v3.0.7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-curl": "*",
+ "php": ">=5.3.2",
+ "symfony/event-dispatcher": ">=2.1"
+ },
+ "replace": {
+ "guzzle/batch": "self.version",
+ "guzzle/cache": "self.version",
+ "guzzle/common": "self.version",
+ "guzzle/http": "self.version",
+ "guzzle/inflection": "self.version",
+ "guzzle/iterator": "self.version",
+ "guzzle/log": "self.version",
+ "guzzle/parser": "self.version",
+ "guzzle/plugin": "self.version",
+ "guzzle/plugin-async": "self.version",
+ "guzzle/plugin-backoff": "self.version",
+ "guzzle/plugin-cache": "self.version",
+ "guzzle/plugin-cookie": "self.version",
+ "guzzle/plugin-curlauth": "self.version",
+ "guzzle/plugin-history": "self.version",
+ "guzzle/plugin-log": "self.version",
+ "guzzle/plugin-md5": "self.version",
+ "guzzle/plugin-mock": "self.version",
+ "guzzle/plugin-oauth": "self.version",
+ "guzzle/service": "self.version",
+ "guzzle/stream": "self.version"
+ },
+ "require-dev": {
+ "doctrine/common": "*",
+ "monolog/monolog": "1.*",
+ "phpunit/phpunit": "3.7.*",
+ "symfony/class-loader": "*",
+ "zend/zend-cache1": "1.12",
+ "zend/zend-log1": "1.12",
+ "zendframework/zend-cache": "2.0.*",
+ "zendframework/zend-log": "2.0.*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Guzzle\\Tests": "tests/",
+ "Guzzle": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Guzzle Community",
+ "homepage": "https://github.com/guzzle/guzzle/contributors"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "time": "2012-12-19 23:06:35"
+ },
+ {
+ "name": "phing/phing",
+ "version": "2.4.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phingofficial/phing",
+ "reference": "2.4.14"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/phingofficial/phing/archive/2.4.14.zip",
+ "reference": "2.4.14",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.2.0"
+ },
+ "bin": [
+ "bin/phing"
+ ],
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "classes/phing/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "classes"
+ ],
+ "license": [
+ "LGPL3"
+ ],
+ "authors": [
+ {
+ "name": "Michiel Rook",
+ "email": "mrook@php.net"
+ },
+ {
+ "name": "Phing Community",
+ "homepage": "http://www.phing.info/trac/wiki/Development/Contributors"
+ }
+ ],
+ "description": "PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.",
+ "homepage": "http://www.phing.info/",
+ "keywords": [
+ "build",
+ "task",
+ "tool"
+ ],
+ "time": "2012-11-29 21:23:47"
+ },
+ {
+ "name": "phpunit/dbunit",
+ "version": "1.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/dbunit.git",
+ "reference": "1.2.3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/dbunit/zipball/1.2.3",
+ "reference": "1.2.3",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pdo": "*",
+ "ext-simplexml": "*",
+ "php": ">=5.3.3",
+ "phpunit/phpunit": ">=3.7.0@stable"
+ },
+ "bin": [
+ "dbunit.php"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "PHPUnit/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "",
+ "../../symfony/yaml/"
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "DbUnit port for PHP/PHPUnit to support database interaction testing.",
+ "homepage": "https://github.com/sebastianbergmann/dbunit/",
+ "keywords": [
+ "database",
+ "testing",
+ "xunit"
+ ],
+ "time": "2013-03-01 11:50:46"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "1.2.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "1.2.12"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1.2.12",
+ "reference": "1.2.12",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "phpunit/php-file-iterator": ">=1.3.0@stable",
+ "phpunit/php-text-template": ">=1.1.1@stable",
+ "phpunit/php-token-stream": ">=1.1.3@stable"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "3.7.*@dev"
+ },
+ "suggest": {
+ "ext-dom": "*",
+ "ext-xdebug": ">=2.0.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "PHP/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2013-07-06 06:26:16"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.3.3",
+ "source": {
+ "type": "git",
+ "url": "git://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "1.3.3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator/zipball/1.3.3",
+ "reference": "1.3.3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "File/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "http://www.phpunit.de/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2012-10-11 04:44:38"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "git://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "1.1.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/sebastianbergmann/php-text-template/zipball/1.1.4",
+ "reference": "1.1.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "Text/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2012-10-31 11:15:28"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.4",
+ "source": {
+ "type": "git",
+ "url": "git://github.com/sebastianbergmann/php-timer.git",
+ "reference": "1.0.4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/sebastianbergmann/php-timer/zipball/1.0.4",
+ "reference": "1.0.4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "PHP/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "http://www.phpunit.de/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2012-10-11 04:45:58"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "1.1.5",
+ "source": {
+ "type": "git",
+ "url": "git://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "1.1.5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/sebastianbergmann/php-token-stream/zipball/1.1.5",
+ "reference": "1.1.5",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "PHP/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "http://www.phpunit.de/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2012-10-11 04:47:14"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "3.7.22",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "3.7.22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3.7.22",
+ "reference": "3.7.22",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=5.3.3",
+ "phpunit/php-code-coverage": "~1.2.1",
+ "phpunit/php-file-iterator": ">=1.3.1",
+ "phpunit/php-text-template": ">=1.1.1",
+ "phpunit/php-timer": "~1.0.2",
+ "phpunit/phpunit-mock-objects": "~1.2.0",
+ "symfony/yaml": "~2.0"
+ },
+ "require-dev": {
+ "pear-pear/pear": "1.9.4"
+ },
+ "suggest": {
+ "ext-json": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "phpunit/php-invoker": ">=1.1.0,<1.2.0"
+ },
+ "bin": [
+ "composer/bin/phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.7.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "PHPUnit/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ "",
+ "../../symfony/yaml/"
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "http://www.phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2013-07-06 06:29:15"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "1.2.3",
+ "source": {
+ "type": "git",
+ "url": "git://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "1.2.3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects/archive/1.2.3.zip",
+ "reference": "1.2.3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "phpunit/php-text-template": ">=1.1.1@stable"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "PHPUnit/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "include-path": [
+ ""
+ ],
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2013-01-13 10:24:48"
+ },
+ {
+ "name": "symfony/browser-kit",
+ "version": "v2.1.11",
+ "target-dir": "Symfony/Component/BrowserKit",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/BrowserKit.git",
+ "reference": "v2.1.11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/BrowserKit/zipball/v2.1.11",
+ "reference": "v2.1.11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/dom-crawler": "2.1.*"
+ },
+ "require-dev": {
+ "symfony/css-selector": "2.1.*",
+ "symfony/process": "2.1.*"
+ },
+ "suggest": {
+ "symfony/process": "2.1.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\BrowserKit": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony BrowserKit Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-04-29 20:22:06"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "v2.1.11",
+ "target-dir": "Symfony/Component/CssSelector",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/CssSelector.git",
+ "reference": "v2.1.11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/CssSelector/zipball/v2.1.11",
+ "reference": "v2.1.11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\CssSelector": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony CssSelector Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-05-17 00:31:34"
+ },
+ {
+ "name": "symfony/dom-crawler",
+ "version": "v2.1.11",
+ "target-dir": "Symfony/Component/DomCrawler",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/DomCrawler.git",
+ "reference": "v2.1.11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/DomCrawler/zipball/v2.1.11",
+ "reference": "v2.1.11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "symfony/css-selector": "2.1.*"
+ },
+ "suggest": {
+ "symfony/css-selector": "2.1.*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\DomCrawler": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony DomCrawler Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-05-16 00:06:15"
+ },
+ {
+ "name": "symfony/event-dispatcher",
+ "version": "v2.3.1",
+ "target-dir": "Symfony/Component/EventDispatcher",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/EventDispatcher.git",
+ "reference": "v2.3.1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/v2.3.1",
+ "reference": "v2.3.1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "symfony/dependency-injection": ">=2.0,<3.0"
+ },
+ "suggest": {
+ "symfony/dependency-injection": "",
+ "symfony/http-kernel": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\EventDispatcher\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony EventDispatcher Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-05-13 14:36:40"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v2.1.11",
+ "target-dir": "Symfony/Component/Finder",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Finder.git",
+ "reference": "v2.1.11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Finder/zipball/v2.1.11",
+ "reference": "v2.1.11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Finder": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Finder Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-05-25 15:47:15"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v2.1.11",
+ "target-dir": "Symfony/Component/Process",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Process.git",
+ "reference": "v2.1.11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Process/zipball/v2.1.11",
+ "reference": "v2.1.11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Process": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Process Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-05-06 10:21:56"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v2.3.1",
+ "target-dir": "Symfony/Component/Yaml",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/Yaml.git",
+ "reference": "v2.3.1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/v2.3.1",
+ "reference": "v2.3.1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Symfony\\Component\\Yaml\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "http://symfony.com",
+ "time": "2013-05-10 18:12:13"
+ }
+ ],
+ "aliases": [
+
+ ],
+ "minimum-stability": "stable",
+ "stability-flags": [
+
+ ],
+ "platform": [
+
+ ],
+ "platform-dev": [
+
+ ]
+}
View
2  phpBB/develop/create_schema_files.php
@@ -237,7 +237,7 @@
foreach ($supported_dbms as $dbms)
{
- $fp = fopen($schema_path . $dbms . '_schema.sql', 'wt');
+ $fp = fopen($schema_path . $dbms . '_schema.sql', 'wb');
$line = '';
View
2  phpBB/develop/generate_utf_casefold.php
@@ -111,7 +111,7 @@ function my_var_export($var)
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
View
2  phpBB/develop/generate_utf_confusables.php
@@ -199,7 +199,7 @@ function my_var_export($var)
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
View
2  phpBB/develop/generate_utf_tables.php
@@ -481,7 +481,7 @@ function my_var_export($var)
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
View
24 phpBB/develop/mysql_upgrader.php
@@ -149,7 +149,8 @@
list($orig_column_type, $column_length) = explode(':', $column_data[0]);
$column_type = sprintf($dbms_type_map['mysql_41'][$orig_column_type . ':'], $column_length);
- if (isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0]))
+ if (isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit']) &&
+ isset($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0]))
{
switch ($dbms_type_map['mysql_40'][$orig_column_type . ':']['limit'][0])
{
@@ -694,6 +695,24 @@ function get_schema_struct()
),
);
+ $schema_data['phpbb_login_attempts'] = array(
+ 'COLUMNS' => array(
+ 'attempt_ip' => array('VCHAR:40', ''),
+ 'attempt_browser' => array('VCHAR:150', ''),
+ 'attempt_forwarded_for' => array('VCHAR:255', ''),
+ 'attempt_time' => array('TIMESTAMP', 0),
+ 'user_id' => array('UINT', 0),
+ 'username' => array('VCHAR_UNI:255', 0),
+ 'username_clean' => array('VCHAR_CI', 0),
+ ),
+ 'KEYS' => array(
+ 'att_ip' => array('INDEX', array('attempt_ip', 'attempt_time')),
+ 'att_for' => array('INDEX', array('attempt_forwarded_for', 'attempt_time')),
+ 'att_time' => array('INDEX', array('attempt_time')),
+ 'user_id' => array('INDEX', 'user_id'),
+ ),
+ );
+
$schema_data['phpbb_moderator_cache'] = array(
'COLUMNS' => array(
'forum_id' => array('UINT', 0),
@@ -897,6 +916,7 @@ function get_schema_struct()
'field_default_value' => array('VCHAR_UNI', ''),
'field_validation' => array('VCHAR_UNI:20', ''),
'field_required' => array('BOOL', 0),
+ 'field_show_novalue' => array('BOOL', 0),
'field_show_on_reg' => array('BOOL', 0),
'field_show_on_vt' => array('BOOL', 0),
'field_show_profile' => array('BOOL', 0),
@@ -1396,5 +1416,3 @@ function get_schema_struct()
return $schema_data;
}
-
-?>
View
2  phpBB/develop/utf_normalizer_test.php
@@ -222,7 +222,7 @@
* Download a file to the develop/ dir
*
* @param string $url URL of the file to download
-* @return void
+* @return null
*/
function download($url)
{
View
21 phpBB/docs/AUTHORS
@@ -22,15 +22,11 @@ involved in phpBB.
phpBB Lead Developer: naderman (Nils Adermann)
-phpBB Developers: Acyd Burn (Meik Sievertsen) [Lead 09/2005 - 01/2010]
- Arty (Vjacheslav Trushkin)
- bantu (Andreas Fischer)
+phpBB Developers: bantu (Andreas Fischer)
+ EXreaction (Nathan Guse)
+ dhruv.goel92 (Dhruv Goel)
imkingdavid (David King)
- igorw (Igor Wiedler)
nickvergessen (Joas Schilling)
- Oleg (Oleg Pudeyev)
- rxu (Ruslan Uzdenov)
- ToonArmy (Chris Smith)
Contributions by: leviatan21 (Gabriel Vazquez)
Raimon (Raimon Meuldijk)
@@ -39,13 +35,16 @@ Contributions by: leviatan21 (Gabriel Vazquez)
-- Former Contributors --
-phpBB Project Manager: theFinn (James Atkinson) [Founder - 04/2007]
+phpBB Project Manager: theFinn (James Atkinson) [Founder - 04/2007]
SHS` (Jonathan Stanley)
-phpBB Lead Developer: psoTFX (Paul S. Owen) [2001 - 09/2005]
+phpBB Lead Developer: Acyd Burn (Meik Sievertsen) [09/2005 - 01/2010]
+ psoTFX (Paul S. Owen) [2001 - 09/2005]
phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
+ Acyd Burn (Meik Sievertsen) [02/2003 - 09/2005]
APTX (Marek A. Ruszczyński) [12/2007 - 04/2011]
+ Arty (Vjacheslav Trushkin) [02/2012 - 07/2012]
Ashe (Ludovic Arnaud) [10/2002 - 11/2003, 06/2006 - 10/2006]
BartVB (Bart van Bragt) [11/2000 - 03/2006]
ckwalsh (Cullen Walsh) [01/2010 - 07/2011]
@@ -53,7 +52,11 @@ phpBB Developers: A_Jelly_Doughnut (Josh Woody) [01/2010 - 11/2010]
dhn (Dominik Dröscher) [05/2007 - 01/2011]
GrahamJE (Graham Eames) [09/2005 - 11/2006]
kellanved (Henry Sudhof) [04/2007 - 03/2011]
+ igorw (Igor Wiedler) [08/2010 - 02/2013]
+ Oleg (Oleg Pudeyev) [01/2011 - 05/2013]
+ rxu (Ruslan Uzdenov) [04/2010 - 12/2012]
TerraFrost (Jim Wigginton) [04/2009 - 01/2011]
+ ToonArmy (Chris Smith) [06/2008 - 11/2011]
Vic D'Elfant (Vic D'Elfant) [04/2007 - 04/2009]
-- Copyrights --
View
198 phpBB/docs/CHANGELOG.html
@@ -53,6 +53,7 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ol style="list-style-type: lower-roman;">
+ <li><a href="#v3011">Changes since 3.0.11</a></li>
<li><a href="#v3010">Changes since 3.0.10</a></li>
<li><a href="#v309">Changes since 3.0.9</a></li>
<li><a href="#v308">Changes since 3.0.8</a></li>
@@ -92,7 +93,162 @@
<div class="content">
- <a name="v3010"></a><h3>1.i. Changes since 3.0.10</h3>
+ <a name="v3011"></a><h3>1.i. Changes since 3.0.11</h3>
+
+<h4>Bug</h4>
+<ul>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-6723">PHPBB3-6723</a>] - Empty message in deleted messages in PM history</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-7262">PHPBB3-7262</a>] - Clarify docs about is_dynamic not being updated by set_config()</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-8319">PHPBB3-8319</a>] - LOCAL_URL not enforced in bbcodes</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9551">PHPBB3-9551</a>] - Mysql fulltext index creation fails due to partial collation change</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-9975">PHPBB3-9975</a>] - Hard coded language in sessions.php</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10184">PHPBB3-10184</a>] - Bots can be sent private messages</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10491">PHPBB3-10491</a>] - Fatal error in functional tests when server returns 404</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10568">PHPBB3-10568</a>] - Modify the trigger language when you edit a PM</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10602">PHPBB3-10602</a>] - A bug in mail queue processing</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10661">PHPBB3-10661</a>] - UCP &gt; PM &gt; Compose &gt; enumerated recipients &gt; BCC group misses a &amp;nbsp; (prosilver)</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10678">PHPBB3-10678</a>] - Provide Firebird, Oracle, and increased MSSQL support in unit tests</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10772">PHPBB3-10772</a>] - trigger_error is using the default style</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10789">PHPBB3-10789</a>] - PM print template (prosilver) with unnecessary variables</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10820">PHPBB3-10820</a>] - Display images directly in IE9 and 10 instead of download</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10828">PHPBB3-10828</a>] - PostgreSQL dbal tests try to connect to the database named as user specified in configuration</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10838">PHPBB3-10838</a>] - Functional tests are not mentioned in RUNNING_TESTS.txt</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10840">PHPBB3-10840</a>] - If you add a member to a group, the form_token can be set to 0 if the creation_time is 0 too. Maybe even if creation_time is unchanged.</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10848">PHPBB3-10848</a>] - Wrong redirect to installer from acp</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10850">PHPBB3-10850</a>] - create_schema_files.php is not creating the oracle or postgres' schema file properly</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10879">PHPBB3-10879</a>] - prosilver: attachment-link will be displayed wrong, when filename is too long </li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10880">PHPBB3-10880</a>] - m_approve should not imply f_noapprove</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10896">PHPBB3-10896</a>] - board_email &amp; board_contact are not validated as email addresses in ACP</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10897">PHPBB3-10897</a>] - Bot Definitions are outdated</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10918">PHPBB3-10918</a>] - docs/INSTALL.html claims there are tar.gz packages</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10943">PHPBB3-10943</a>] - Search Box should display keywords entered by the user</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10967">PHPBB3-10967</a>] - PHPBB_USE_BOARD_URL_PATH not implemented in posting_gen_topic_icons</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10986">PHPBB3-10986</a>] - Invalid email message ids because config variable server_name is used even when force server URL settings is disabled</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10995">PHPBB3-10995</a>] - Return value of $db-&gt;sql_fetchrow() on empty tables is not consistent on mssqlnative</li>
+<li>[<a href="http://tracker.phpbb.com/browse/PHPBB3-10996">PHPBB3-10996</a>] - Travis tests fail on Postgres because database does not exist</li>