aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.appveyor.yml24
-rw-r--r--.github/PULL_REQUEST_TEMPLATE.md6
-rw-r--r--.travis.yml3
-rw-r--r--phpBB/adm/style/acp_ext_list.html2
-rw-r--r--phpBB/adm/style/acp_groups.html2
-rw-r--r--phpBB/adm/style/acp_language.html2
-rw-r--r--phpBB/adm/style/acp_main.html10
-rw-r--r--phpBB/adm/style/acp_styles.html4
-rw-r--r--phpBB/composer.json2
-rw-r--r--phpBB/config/default/container/services_text_formatter.yml1
-rw-r--r--phpBB/docs/INSTALL.html2
-rw-r--r--phpBB/docs/README.html4
-rw-r--r--phpBB/includes/acp/acp_forums.php4
-rw-r--r--phpBB/includes/acp/acp_groups.php3
-rw-r--r--phpBB/includes/acp/acp_main.php1
-rw-r--r--phpBB/includes/acp/acp_styles.php1
-rw-r--r--phpBB/includes/acp/acp_users.php2
-rw-r--r--phpBB/includes/functions_messenger.php3
-rw-r--r--phpBB/includes/functions_posting.php3
-rw-r--r--phpBB/language/en/acp/board.php2
-rw-r--r--phpBB/language/en/acp/common.php1
-rw-r--r--phpBB/language/en/acp/styles.php1
-rw-r--r--phpBB/language/en/install.php3
-rw-r--r--phpBB/phpbb/db/migration/data/v32x/fix_user_styles.php6
-rw-r--r--phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php37
-rw-r--r--phpBB/phpbb/template/assets_bag.php4
-rw-r--r--phpBB/phpbb/textformatter/s9e/bbcode_merger.php3
-rw-r--r--phpBB/phpbb/textformatter/s9e/factory.php43
-rw-r--r--phpBB/phpbb/textreparser/plugins/poll_title.php2
-rw-r--r--phpBB/styles/prosilver/template/overall_footer.html35
-rw-r--r--phpBB/styles/prosilver/template/viewtopic_topic_tools.html2
-rw-r--r--phpBB/viewtopic.php1
-rw-r--r--tests/template/template_includecss_test.php8
-rw-r--r--tests/template/template_includejs_test.php32
-rw-r--r--tests/test_framework/phpbb_functional_test_case.php7
-rw-r--r--tests/test_framework/phpbb_test_case_helpers.php7
-rw-r--r--tests/text_formatter/s9e/factory_test.php18
-rw-r--r--tests/text_formatter/s9e/fixtures/malformed_bbcode.xml28
-rw-r--r--tests/text_reparser/plugins/fixtures/polls.xml11
-rwxr-xr-xtravis/setup-phpbb.sh2
-rwxr-xr-xtravis/setup-webserver.sh53
41 files changed, 248 insertions, 137 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index e536a561ff..a4fac799b2 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -15,10 +15,10 @@ environment:
php: 7.0
- db: mssql
db_version: sql2016
- php: 7.0
- - db: mssql
- db_version: sql2017
- php: 7.1
+ php: 7.1.12
+# - db: mssql
+# db_version: sql2017
+# php: 7.1
# - db: mariadb
# php: 7.1
# - db: mysqli
@@ -40,10 +40,10 @@ before_test:
- ps: |
Set-Service wuauserv -StartupType Manual
cinst -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
- Get-ChildItem -Path "c:\tools\php$($env:php -replace '[.]','')" -Recurse |
+ Get-ChildItem -Path "c:\tools\php$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1$2')" -Recurse |
Move-Item -destination "c:\tools\php"
cd c:\tools\php
- cat php.ini-production | %{$_ -replace "memory_limit = 128M","memory_limit = 1024M"} | Out-File -Encoding "Default" php.ini
+ cat php.ini-development | %{$_ -replace "memory_limit = 128M","memory_limit = 1024M"} | Out-File -Encoding "Default" php.ini
Add-Content php.ini "`n date.timezone=UTC"
Add-Content php.ini "`n display_errors=On"
Add-Content php.ini "`n extension_dir=ext"
@@ -64,10 +64,10 @@ before_test:
if ($env:db -eq "mssql") {
cd c:\tools\php\ext
$DLLVersion = "4.1.6.1"
- appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/sqlsrv/$($:DLLVersion)/php_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc14-x64.zip
- 7z x -y php_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc14-x64.zip > $null
- appveyor-retry appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/pdo_sqlsrv/$($DLLVersion)/php_pdo_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc14-x64.zip
- 7z x -y php_pdo_sqlsrv-$($DLLVersion)-$($env:php)-nts-vc14-x64.zip > $null
+ appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/sqlsrv/$($:DLLVersion)/php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip
+ 7z x -y php_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip > $null
+ appveyor-retry appveyor DownloadFile http://windows.php.net/downloads/pecl/releases/pdo_sqlsrv/$($DLLVersion)/php_pdo_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip
+ 7z x -y php_pdo_sqlsrv-$($DLLVersion)-$($env:php -replace '([0-9])[.]([0-9])[.]?([0-9]+)?','$1.$2')-nts-vc14-x64.zip > $null
Remove-Item c:\tools\php\* -include .zip
cd c:\tools\php
Add-Content php.ini "`nextension=php_sqlsrv.dll"
@@ -114,6 +114,10 @@ before_test:
# Install PhantomJS
cinst -y phantomjs
Start-Process "phantomjs" "--webdriver=8910" | Out-Null
+ - ps: |
+ cd c:\projects\phpbb\phpBB
+ (Get-Content c:\projects\phpbb\phpBB\web.config).replace("<configuration>", "<configuration>`n`t<system.web>`n`t`t<customErrors mode=`"Off`"/>`n`t</system.web>") | Set-Content c:\projects\phpbb\phpBB\web.config
+ (Get-Content c:\projects\phpbb\phpBB\web.config).replace("`t</system.webServer>", "`t`t<httpErrors errorMode=`"Detailed`" />`n`t</system.webServer>") | Set-Content c:\projects\phpbb\phpBB\web.config
- cd c:\projects\phpbb\phpBB
- php ..\composer.phar install
- choco install -y urlrewrite
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 39eb83e454..cacfcf1118 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,9 +1,9 @@
Checklist:
-- [ ] Correct branch: master for new features; 3.2.x, 3.1.x for fixes
+- [ ] Correct branch: master for new features; 3.2.x for fixes
- [ ] Tests pass
-- [ ] Code follows coding guidelines: [master / 3.2.x](https://area51.phpbb.com/docs/master/coding-guidelines.html), [3.1.x](https://area51.phpbb.com/docs/31x/coding-guidelines.html)
-- [ ] Commit follows commit message [format](https://wiki.phpbb.com/Git#Commit_Messages)
+- [ ] Code follows coding guidelines: [master](https://area51.phpbb.com/docs/dev/master/development/coding_guidelines.html) and [3.2.x](https://area51.phpbb.com/docs/dev/3.2.x/development/coding_guidelines.html)
+- [ ] Commit follows commit message [format](https://area51.phpbb.com/docs/dev/3.2.x/development/git.html)
Tracker ticket (set the ticket ID to **your ticket ID**):
diff --git a/.travis.yml b/.travis.yml
index db3e4311c5..91b8b4932c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -30,10 +30,7 @@ matrix:
env: DB=mysqli
- php: nightly
env: DB=mysqli
- - php: hhvm
- env: DB=mysqli
allow_failures:
- - php: hhvm
- php: nightly
fast_finish: true
diff --git a/phpBB/adm/style/acp_ext_list.html b/phpBB/adm/style/acp_ext_list.html
index 7ab2608e13..8e2c7452a3 100644
--- a/phpBB/adm/style/acp_ext_list.html
+++ b/phpBB/adm/style/acp_ext_list.html
@@ -7,7 +7,7 @@
<p>{L_EXTENSIONS_EXPLAIN}</p>
<fieldset class="quick">
- <span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.1" target="_blank">{L_BROWSE_EXTENSIONS_DATABASE}</a> &bull; <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE_ALL}</a> &bull; <a href="javascript:phpbb.toggleDisplay('version_check_settings');">{L_SETTINGS}</a></span>
+ <span class="small"><a href="https://www.phpbb.com/go/customise/extensions/3.2" target="_blank">{L_BROWSE_EXTENSIONS_DATABASE}</a> &bull; <a href="{U_VERSIONCHECK_FORCE}">{L_VERSIONCHECK_FORCE_UPDATE_ALL}</a> &bull; <a href="javascript:phpbb.toggleDisplay('version_check_settings');">{L_SETTINGS}</a></span>
</fieldset>
<form id="version_check_settings" method="post" action="{U_ACTION}" style="display:none">
diff --git a/phpBB/adm/style/acp_groups.html b/phpBB/adm/style/acp_groups.html
index 26d7030531..d0096370d9 100644
--- a/phpBB/adm/style/acp_groups.html
+++ b/phpBB/adm/style/acp_groups.html
@@ -316,7 +316,7 @@
<tbody>
<!-- ELSE -->
<tr>
- <td><strong>{groups.GROUP_NAME}</strong></td>
+ <td><strong<!-- IF groups.GROUP_COLOR --> style="color: #{groups.GROUP_COLOR}"<!-- ENDIF -->>{groups.GROUP_NAME}</strong></td>
<td style="text-align: center;">{groups.TOTAL_MEMBERS}</td>
<td style="text-align: center;">{groups.PENDING_MEMBERS}</td>
<td style="text-align: center;"><a href="{groups.U_EDIT}">{L_SETTINGS}</a></td>
diff --git a/phpBB/adm/style/acp_language.html b/phpBB/adm/style/acp_language.html
index f708eb1508..79fef94207 100644
--- a/phpBB/adm/style/acp_language.html
+++ b/phpBB/adm/style/acp_language.html
@@ -69,7 +69,7 @@
<p>{L_ACP_LANGUAGE_PACKS_EXPLAIN}</p>
<fieldset class="quick">
- <span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.1" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
+ <span class="small"><a href="https://www.phpbb.com/go/customise/language-packs/3.2" target="_blank">{L_BROWSE_LANGUAGE_PACKS_DATABASE}</a></span>
</fieldset>
<table class="table1 zebra-table">
diff --git a/phpBB/adm/style/acp_main.html b/phpBB/adm/style/acp_main.html
index 9522baa9c2..12477a4b77 100644
--- a/phpBB/adm/style/acp_main.html
+++ b/phpBB/adm/style/acp_main.html
@@ -153,8 +153,14 @@
<td><strong>{PHP_VERSION_INFO}</strong></td>
<!-- IF S_TOTAL_ORPHAN -->
<td>{L_NUMBER_ORPHAN}{L_COLON} </td>
- <td><strong>{TOTAL_ORPHAN}</strong></td>
- <!-- ELSE -->
+ <td>
+ <!-- IF TOTAL_ORPHAN > 0 -->
+ <a href="{U_ATTACH_ORPHAN}" title="{L_MORE_INFORMATION}"><strong>{TOTAL_ORPHAN}</strong></a>
+ <!-- ELSE -->
+ <strong>{TOTAL_ORPHAN}</strong>
+ <!-- ENDIF -->
+ </td>
+ <!-- ELSE -->
<td>&nbsp;</td>
<td>&nbsp;</td>
<!-- ENDIF -->
diff --git a/phpBB/adm/style/acp_styles.html b/phpBB/adm/style/acp_styles.html
index 43c2f96a65..38bec5a1e4 100644
--- a/phpBB/adm/style/acp_styles.html
+++ b/phpBB/adm/style/acp_styles.html
@@ -33,7 +33,7 @@
<!-- IF L_EXPLAIN --><p>{L_EXPLAIN}</p><!-- ENDIF -->
<fieldset class="quick">
- <span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.1" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
+ <span class="small"><a href="https://www.phpbb.com/go/customise/styles/3.2" target="_blank">{L_BROWSE_STYLES_DATABASE}</a></span>
</fieldset>
<form id="acp_styles" method="post" action="{U_ACTION}">
@@ -96,6 +96,7 @@
<thead>
<tr>
<th>{L_STYLE_NAME}</th>
+ <th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_PHPBB_VERSION}</th>
<!-- IF not STYLES_LIST_HIDE_COUNT --><th width="10%" style="white-space: nowrap; text-align: center;">{L_STYLE_USED_BY}</th><!-- ENDIF -->
<th width="25%" style="white-space: nowrap; text-align: center;">{L_ACTIONS}</th>
{STYLES_LIST_EXTRA}
@@ -129,6 +130,7 @@
<span class="style-path"><br />{L_STYLE_PATH}{L_COLON} {styles_list.STYLE_PATH_FULL}</span>
<!-- ENDIF -->
</td>
+ <td class="{$ROW_CLASS} users">{styles_list.STYLE_PHPBB_VERSION}</td>
<!-- IF not STYLES_LIST_HIDE_COUNT -->
<td class="{$ROW_CLASS} users">{styles_list.USERS}</td>
<!-- ENDIF -->
diff --git a/phpBB/composer.json b/phpBB/composer.json
index 926fad5188..4f796a9dcb 100644
--- a/phpBB/composer.json
+++ b/phpBB/composer.json
@@ -4,7 +4,7 @@
"type": "project",
"keywords": ["phpbb", "forum"],
"homepage": "https://www.phpbb.com",
- "license": "GPL-2.0",
+ "license": "GPL-2.0-only",
"authors": [
{
"name": "phpBB Limited",
diff --git a/phpBB/config/default/container/services_text_formatter.yml b/phpBB/config/default/container/services_text_formatter.yml
index 74624ea4e4..07087cd4a9 100644
--- a/phpBB/config/default/container/services_text_formatter.yml
+++ b/phpBB/config/default/container/services_text_formatter.yml
@@ -39,6 +39,7 @@ services:
- '@dispatcher'
- '@config'
- '@text_formatter.s9e.link_helper'
+ - '@log'
- '%text_formatter.cache.dir%'
- '%text_formatter.cache.parser.key%'
- '%text_formatter.cache.renderer.key%'
diff --git a/phpBB/docs/INSTALL.html b/phpBB/docs/INSTALL.html
index 956a384263..2d97373721 100644
--- a/phpBB/docs/INSTALL.html
+++ b/phpBB/docs/INSTALL.html
@@ -147,7 +147,7 @@
<li>Oracle</li>
</ul>
</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>
diff --git a/phpBB/docs/README.html b/phpBB/docs/README.html
index 7fd80b3c2d..8fb9036ad8 100644
--- a/phpBB/docs/README.html
+++ b/phpBB/docs/README.html
@@ -323,11 +323,11 @@
<div class="content">
- <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.4. We recommend that you upgrade to the latest stable release of PHP to run phpBB. The minimum version required is PHP 5.4.7 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>
<a name="phpsec"></a><h3>7.i. Notice on PHP security issues</h3>
diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php
index cf01ff2489..6b841560c9 100644
--- a/phpBB/includes/acp/acp_forums.php
+++ b/phpBB/includes/acp/acp_forums.php
@@ -1431,6 +1431,8 @@ class acp_forums
return $errors;
}
+ $db->sql_transaction('begin');
+
$moved_forums = get_forum_branch($from_id, 'children', 'descending');
$from_data = $moved_forums[0];
$diff = count($moved_forums) * 2;
@@ -1502,6 +1504,8 @@ class acp_forums
WHERE " . $db->sql_in_set('forum_id', $moved_ids);
$db->sql_query($sql);
+ $db->sql_transaction('commit');
+
return $errors;
}
diff --git a/phpBB/includes/acp/acp_groups.php b/phpBB/includes/acp/acp_groups.php
index 70ae9876f4..0e058213e0 100644
--- a/phpBB/includes/acp/acp_groups.php
+++ b/phpBB/includes/acp/acp_groups.php
@@ -926,7 +926,7 @@ class acp_groups
);
// Get us all the groups
- $sql = 'SELECT g.group_id, g.group_name, g.group_type
+ $sql = 'SELECT g.group_id, g.group_name, g.group_type, g.group_colour
FROM ' . GROUPS_TABLE . ' g
ORDER BY g.group_type ASC, g.group_name';
$result = $db->sql_query($sql);
@@ -985,6 +985,7 @@ class acp_groups
'S_GROUP_SPECIAL' => ($row['group_type'] == GROUP_SPECIAL) ? true : false,
'GROUP_NAME' => $group_name,
+ 'GROUP_COLOR' => $row['group_colour'],
'TOTAL_MEMBERS' => $row['total_members'],
'PENDING_MEMBERS' => $row['pending_members']
));
diff --git a/phpBB/includes/acp/acp_main.php b/phpBB/includes/acp/acp_main.php
index 4efa8c70b3..8f169d15a7 100644
--- a/phpBB/includes/acp/acp_main.php
+++ b/phpBB/includes/acp/acp_main.php
@@ -585,6 +585,7 @@ class acp_main
'U_INACTIVE_USERS' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=inactive&amp;mode=list'),
'U_VERSIONCHECK' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=update&amp;mode=version_check'),
'U_VERSIONCHECK_FORCE' => append_sid("{$phpbb_admin_path}index.$phpEx", 'versioncheck_force=1'),
+ 'U_ATTACH_ORPHAN' => append_sid("{$phpbb_admin_path}index.$phpEx", 'i=acp_attachments&mode=orphan'),
'S_VERSIONCHECK' => ($auth->acl_get('a_board')) ? true : false,
'S_ACTION_OPTIONS' => ($auth->acl_get('a_board')) ? true : false,
diff --git a/phpBB/includes/acp/acp_styles.php b/phpBB/includes/acp/acp_styles.php
index 4c390c5f0e..1bf5a3c6a8 100644
--- a/phpBB/includes/acp/acp_styles.php
+++ b/phpBB/includes/acp/acp_styles.php
@@ -952,6 +952,7 @@ class acp_styles
// Style data
'STYLE_ID' => $style['style_id'],
'STYLE_NAME' => htmlspecialchars($style['style_name']),
+ 'STYLE_PHPBB_VERSION' => $this->read_style_cfg($style['style_path'])['phpbb_version'],
'STYLE_PATH' => htmlspecialchars($style['style_path']),
'STYLE_COPYRIGHT' => strip_tags($style['style_copyright']),
'STYLE_ACTIVE' => $style['style_active'],
diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php
index 7ef5cb9981..60afccdc22 100644
--- a/phpBB/includes/acp/acp_users.php
+++ b/phpBB/includes/acp/acp_users.php
@@ -2099,7 +2099,7 @@ class acp_users
if ($request->is_set_post('preview'))
{
- $decoded_message = generate_text_for_edit($signature, $bbcode_uid, $bbcode_bitfield);
+ $decoded_message = generate_text_for_edit($signature, $bbcode_uid, $bbcode_flags);
}
/** @var \phpbb\controller\helper $controller_helper */
diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php
index b866e108c0..a85a3b67c5 100644
--- a/phpBB/includes/functions_messenger.php
+++ b/phpBB/includes/functions_messenger.php
@@ -24,8 +24,9 @@ if (!defined('IN_PHPBB'))
*/
class messenger
{
- var $msg, $extra_headers, $replyto, $from, $subject;
+ var $msg, $replyto, $from, $subject;
var $addresses = array();
+ var $extra_headers = array();
var $mail_priority = MAIL_NORMAL_PRIORITY;
var $use_queue = true;
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php
index 21f31c9fa2..78c66ac6b8 100644
--- a/phpBB/includes/functions_posting.php
+++ b/phpBB/includes/functions_posting.php
@@ -727,10 +727,11 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a
// We display the posted attachments within the desired order.
($config['display_order']) ? krsort($attachment_data) : ksort($attachment_data);
+ $attachrow_template_vars = [];
+
foreach ($attachment_data as $count => $attach_row)
{
$hidden = '';
- $attachrow_template_vars = array();
$attach_row['real_filename'] = utf8_basename($attach_row['real_filename']);
foreach ($attach_row as $key => $value)
diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php
index 25d70813f6..b050af070a 100644
--- a/phpBB/language/en/acp/board.php
+++ b/phpBB/language/en/acp/board.php
@@ -585,7 +585,7 @@ $lang = array_merge($lang, array(
'SMTP_POP_BEFORE_SMTP' => 'POP-BEFORE-SMTP',
'SMTP_PORT' => 'SMTP server port',
'SMTP_PORT_EXPLAIN' => 'Only change this if you know your SMTP server is on a different port.',
- 'SMTP_SERVER' => 'SMTP server address',
+ 'SMTP_SERVER' => 'SMTP server address and protocol',
'SMTP_SERVER_EXPLAIN' => 'Note that you have to provide the protocol that your server uses. If you are using SSL, this has to be "ssl://your.mailserver.com"',
'SMTP_SETTINGS' => 'SMTP settings',
'SMTP_USERNAME' => 'SMTP username',
diff --git a/phpBB/language/en/acp/common.php b/phpBB/language/en/acp/common.php
index de5039f047..0d5f6fee25 100644
--- a/phpBB/language/en/acp/common.php
+++ b/phpBB/language/en/acp/common.php
@@ -552,6 +552,7 @@ $lang = array_merge($lang, array(
'LOG_BBCODE_ADD' => '<strong>Added new BBCode</strong><br />» %s',
'LOG_BBCODE_EDIT' => '<strong>Edited BBCode</strong><br />» %s',
'LOG_BBCODE_DELETE' => '<strong>Deleted BBCode</strong><br />» %s',
+ 'LOG_BBCODE_CONFIGURATION_ERROR' => '<strong>Error while configuring BBCode</strong>: %1$s<br />» %2$s',
'LOG_BOT_ADDED' => '<strong>New bot added</strong><br />» %s',
'LOG_BOT_DELETE' => '<strong>Deleted bot</strong><br />» %s',
diff --git a/phpBB/language/en/acp/styles.php b/phpBB/language/en/acp/styles.php
index 9293d67ecc..ab85d9d2f5 100644
--- a/phpBB/language/en/acp/styles.php
+++ b/phpBB/language/en/acp/styles.php
@@ -80,6 +80,7 @@ $lang = array_merge($lang, array(
'STYLE_UNINSTALL' => 'Uninstall',
'STYLE_UNINSTALL_DEPENDENT' => 'Style "%s" cannot be uninstalled because it has one or more child styles.',
'STYLE_UNINSTALLED' => 'Style "%s" uninstalled successfully.',
+ 'STYLE_PHPBB_VERSION' => 'phpBB Version',
'STYLE_USED_BY' => 'Used by (including robots)',
'STYLE_VERSION' => 'Style version',
diff --git a/phpBB/language/en/install.php b/phpBB/language/en/install.php
index f7d9f58d43..af18339136 100644
--- a/phpBB/language/en/install.php
+++ b/phpBB/language/en/install.php
@@ -49,7 +49,7 @@ $lang = array_merge($lang, array(
// Support page
'SUPPORT_TITLE' => 'Support',
- 'SUPPORT_BODY' => 'Full support will be provided for the current stable release of phpBB3, free of charge. This includes:</p><ul><li>installation</li><li>configuration</li><li>technical questions</li><li>problems relating to potential bugs in the software</li><li>updating from Release Candidate (RC) versions to the latest stable version</li><li>converting from phpBB 2.0.x to phpBB3</li><li>converting from other discussion board software to phpBB3 (please see the <a href="https://www.phpbb.com/community/viewforum.php?f=486">Convertors Forum</a>)</li></ul><p>We encourage users still running beta versions of phpBB3 to replace their installation with a fresh copy of the latest version.</p><h2>Extensions / Styles</h2><p>For issues relating to Extensions, please post in the appropriate <a href="https://www.phpbb.com/community/viewforum.php?f=451">Extensions Forum</a>.<br />For issues relating to styles, templates and themes, please post in the appropriate <a href="https://www.phpbb.com/community/viewforum.php?f=471">Styles Forum</a>.<br /><br />If your question relates to a specific package, please post directly in the topic dedicated to the package.</p><h2>Obtaining Support</h2><p><a href="https://www.phpbb.com/community/viewtopic.php?f=14&amp;t=571070">The phpBB Welcome Package</a><br /><a href="https://www.phpbb.com/support/">Support Section</a><br /><a href="https://www.phpbb.com/support/docs/en/3.1/ug/quickstart/">Quick Start Guide</a><br /><br />To ensure you stay up to date with the latest news and releases, why not <a href="https://www.phpbb.com/support/">subscribe to our mailing list</a>?<br /><br />',
+ 'SUPPORT_BODY' => 'Full support will be provided for the current stable release of phpBB3, free of charge. This includes:</p><ul><li>installation</li><li>configuration</li><li>technical questions</li><li>problems relating to potential bugs in the software</li><li>updating from Release Candidate (RC) versions to the latest stable version</li><li>converting from phpBB 2.0.x to phpBB3</li><li>converting from other discussion board software to phpBB3 (please see the <a href="https://www.phpbb.com/community/viewforum.php?f=486">Convertors Forum</a>)</li></ul><p>We encourage users still running beta versions of phpBB3 to replace their installation with a fresh copy of the latest version.</p><h2>Extensions / Styles</h2><p>For issues relating to Extensions, please post in the appropriate <a href="https://www.phpbb.com/community/viewforum.php?f=451">Extensions Forum</a>.<br />For issues relating to styles, templates and themes, please post in the appropriate <a href="https://www.phpbb.com/community/viewforum.php?f=471">Styles Forum</a>.<br /><br />If your question relates to a specific package, please post directly in the topic dedicated to the package.</p><h2>Obtaining Support</h2><p><a href="https://www.phpbb.com/support/">Support Section</a><br /><a href="https://www.phpbb.com/support/docs/en/3.2/ug/quickstart/">Quick Start Guide</a><br /><br />To ensure you stay up to date with the latest news and releases, follow us on <a href="https://www.twitter.com/phpbb/">Twitter</a> and <a href="https://www.facebook.com/phpbb/">Facebook</a><br /><br />',
// License
'LICENSE_TITLE' => 'General Public License',
@@ -193,6 +193,7 @@ $lang = array_merge($lang, array(
'DB_OPTION_SQLITE3' => 'SQLite 3',
// Errors
+ 'INST_ERR_DB' => 'Database installation error',
'INST_ERR_NO_DB' => 'Cannot load the PHP module for the selected database type.',
'INST_ERR_DB_INVALID_PREFIX' => 'The prefix you entered is invalid. It must start with a letter and must only contain letters, numbers and underscores.',
'INST_ERR_PREFIX_TOO_LONG' => 'The table prefix you have specified is too long. The maximum length is %d characters.',
diff --git a/phpBB/phpbb/db/migration/data/v32x/fix_user_styles.php b/phpBB/phpbb/db/migration/data/v32x/fix_user_styles.php
index 282c6bef2f..16fbdbc77b 100644
--- a/phpBB/phpbb/db/migration/data/v32x/fix_user_styles.php
+++ b/phpBB/phpbb/db/migration/data/v32x/fix_user_styles.php
@@ -33,13 +33,17 @@ class fix_user_styles extends \phpbb\db\migration\migration
public function styles_fix()
{
$default_style = (int) $this->config['default_style'];
+ $enabled_styles = array();
// Get enabled styles
$sql = 'SELECT style_id
FROM ' . STYLES_TABLE . '
WHERE style_active = 1';
$result = $this->db->sql_query($sql);
- $enabled_styles = $result->fetch_array();
+ while ($row = $this->db->sql_fetchrow($result))
+ {
+ $enabled_styles[] = (int) $row['style_id'];
+ }
$this->db->sql_freeresult($result);
// Set the default style to users who have an invalid style
diff --git a/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php b/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php
index 3bf442bab5..71ee19e3dd 100644
--- a/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php
+++ b/phpBB/phpbb/db/migration/data/v32x/merge_duplicate_bbcodes.php
@@ -13,7 +13,7 @@
namespace phpbb\db\migration\data\v32x;
-class merge_duplicate_bbcodes extends \phpbb\db\migration\migration
+class merge_duplicate_bbcodes extends \phpbb\db\migration\container_aware_migration
{
public function update_data()
{
@@ -30,7 +30,7 @@ class merge_duplicate_bbcodes extends \phpbb\db\migration\migration
while ($row = $this->db->sql_fetchrow($result))
{
$variant = (substr($row['bbcode_tag'], -1) === '=') ? 'with': 'without';
- $bbcode_name = rtrim($row['bbcode_tag'], '=');
+ $bbcode_name = strtolower(rtrim($row['bbcode_tag'], '='));
$bbcodes[$bbcode_name][$variant] = $row;
}
$this->db->sql_freeresult($result);
@@ -46,16 +46,25 @@ class merge_duplicate_bbcodes extends \phpbb\db\migration\migration
protected function merge_bbcodes(array $without, array $with)
{
- $merged = $this->container->get('text_formatter.s9e.bbcode_merger')->merge_bbcodes(
- [
- 'usage' => $without['bbcode_match'],
- 'template' => $without['bbcode_tpl']
- ],
- [
- 'usage' => $with['bbcode_match'],
- 'template' => $with['bbcode_tpl']
- ]
- );
+ try
+ {
+ $merged = $this->container->get('text_formatter.s9e.bbcode_merger')->merge_bbcodes(
+ [
+ 'usage' => $without['bbcode_match'],
+ 'template' => $without['bbcode_tpl']
+ ],
+ [
+ 'usage' => $with['bbcode_match'],
+ 'template' => $with['bbcode_tpl']
+ ]
+ );
+ }
+ catch (\Exception $e)
+ {
+ // Ignore the pair and move on. The BBCodes would have to be fixed manually
+ return;
+ }
+
$bbcode_data = [
'bbcode_tag' => $without['bbcode_tag'],
'bbcode_helpline' => $without['bbcode_helpline'] . ' | ' . $with['bbcode_helpline'],
@@ -65,11 +74,11 @@ class merge_duplicate_bbcodes extends \phpbb\db\migration\migration
$sql = 'UPDATE ' . BBCODES_TABLE . '
SET ' . $this->db->sql_build_array('UPDATE', $bbcode_data) . '
- WHERE bbcode_id = ' . $without['bbcode_id'];
+ WHERE bbcode_id = ' . (int) $without['bbcode_id'];
$this->sql_query($sql);
$sql = 'DELETE FROM ' . BBCODES_TABLE . '
- WHERE bbcode_id = ' . $with['bbcode_id'];
+ WHERE bbcode_id = ' . (int) $with['bbcode_id'];
$this->sql_query($sql);
}
}
diff --git a/phpBB/phpbb/template/assets_bag.php b/phpBB/phpbb/template/assets_bag.php
index 9013061b96..067b0eb8f1 100644
--- a/phpBB/phpbb/template/assets_bag.php
+++ b/phpBB/phpbb/template/assets_bag.php
@@ -71,7 +71,7 @@ class assets_bag
$output = '';
foreach ($this->stylesheets as $stylesheet)
{
- $output .= "<link href=\"{$stylesheet->get_url()}\" rel=\"stylesheet\" type=\"text/css\" media=\"screen\" />\n";
+ $output .= "<link href=\"{$stylesheet->get_url()}\" rel=\"stylesheet\" media=\"screen\" />\n";
}
return $output;
@@ -87,7 +87,7 @@ class assets_bag
$output = '';
foreach ($this->scripts as $script)
{
- $output .= "<script type=\"text/javascript\" src=\"{$script->get_url()}\"></script>\n";
+ $output .= "<script src=\"{$script->get_url()}\"></script>\n";
}
return $output;
diff --git a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php
index 72b1473751..a05ca3c2b8 100644
--- a/phpBB/phpbb/textformatter/s9e/bbcode_merger.php
+++ b/phpBB/phpbb/textformatter/s9e/bbcode_merger.php
@@ -37,6 +37,9 @@ class bbcode_merger
*
* All of the arrays contain a "usage" element and a "template" element
*
+ * @throws InvalidArgumentException if a definition cannot be interpreted
+ * @throws RuntimeException if something unexpected occurs
+ *
* @param array $without BBCode definition without an attribute
* @param array $with BBCode definition with an attribute
* @return array Merged definition
diff --git a/phpBB/phpbb/textformatter/s9e/factory.php b/phpBB/phpbb/textformatter/s9e/factory.php
index 1e85856898..c0bbc7b0e8 100644
--- a/phpBB/phpbb/textformatter/s9e/factory.php
+++ b/phpBB/phpbb/textformatter/s9e/factory.php
@@ -132,6 +132,11 @@ class factory implements \phpbb\textformatter\cache_interface
protected $dispatcher;
/**
+ * @var \phpbb\log\log_interface
+ */
+ protected $log;
+
+ /**
* Constructor
*
* @param \phpbb\textformatter\data_access $data_access
@@ -139,11 +144,12 @@ class factory implements \phpbb\textformatter\cache_interface
* @param \phpbb\event\dispatcher_interface $dispatcher
* @param \phpbb\config\config $config
* @param \phpbb\textformatter\s9e\link_helper $link_helper
+ * @param \phpbb\log\log_interface $log
* @param string $cache_dir Path to the cache dir
* @param string $cache_key_parser Cache key used for the parser
* @param string $cache_key_renderer Cache key used for the renderer
*/
- public function __construct(\phpbb\textformatter\data_access $data_access, \phpbb\cache\driver\driver_interface $cache, \phpbb\event\dispatcher_interface $dispatcher, \phpbb\config\config $config, \phpbb\textformatter\s9e\link_helper $link_helper, $cache_dir, $cache_key_parser, $cache_key_renderer)
+ public function __construct(\phpbb\textformatter\data_access $data_access, \phpbb\cache\driver\driver_interface $cache, \phpbb\event\dispatcher_interface $dispatcher, \phpbb\config\config $config, \phpbb\textformatter\s9e\link_helper $link_helper, \phpbb\log\log_interface $log, $cache_dir, $cache_key_parser, $cache_key_renderer)
{
$this->link_helper = $link_helper;
$this->cache = $cache;
@@ -153,6 +159,7 @@ class factory implements \phpbb\textformatter\cache_interface
$this->config = $config;
$this->data_access = $data_access;
$this->dispatcher = $dispatcher;
+ $this->log = $log;
}
/**
@@ -272,7 +279,7 @@ class factory implements \phpbb\textformatter\cache_interface
// Add default BBCodes
foreach ($this->get_default_bbcodes($configurator) as $bbcode)
{
- $configurator->BBCodes->addCustom($bbcode['usage'], new UnsafeTemplate($bbcode['template']));
+ $this->add_bbcode($configurator, $bbcode['usage'], $bbcode['template']);
}
if (isset($configurator->tags['QUOTE']))
{
@@ -299,17 +306,7 @@ class factory implements \phpbb\textformatter\cache_interface
},
$row['bbcode_tpl']
);
-
- try
- {
- $configurator->BBCodes->addCustom($row['bbcode_match'], new UnsafeTemplate($tpl));
- }
- catch (\Exception $e)
- {
- /**
- * @todo log an error?
- */
- }
+ $this->add_bbcode($configurator, $row['bbcode_match'], $tpl);
}
// Load smilies
@@ -419,6 +416,26 @@ class factory implements \phpbb\textformatter\cache_interface
}
/**
+ * Add a BBCode to given configurator
+ *
+ * @param Configurator $configurator
+ * @param string $usage
+ * @param string $template
+ * @return void
+ */
+ protected function add_bbcode(Configurator $configurator, $usage, $template)
+ {
+ try
+ {
+ $configurator->BBCodes->addCustom($usage, new UnsafeTemplate($template));
+ }
+ catch (\Exception $e)
+ {
+ $this->log->add('critical', null, null, 'LOG_BBCODE_CONFIGURATION_ERROR', false, [$usage, $e->getMessage()]);
+ }
+ }
+
+ /**
* Configure the Autolink / Autoemail plugins used to linkify text
*
* @param \s9e\TextFormatter\Configurator $configurator
diff --git a/phpBB/phpbb/textreparser/plugins/poll_title.php b/phpBB/phpbb/textreparser/plugins/poll_title.php
index 76d30655c9..5ca8bb063b 100644
--- a/phpBB/phpbb/textreparser/plugins/poll_title.php
+++ b/phpBB/phpbb/textreparser/plugins/poll_title.php
@@ -34,7 +34,7 @@ class poll_title extends \phpbb\textreparser\row_based_plugin
$sql = 'SELECT t.topic_id AS id, t.poll_title AS text, p.enable_bbcode, p.enable_smilies, p.enable_magic_url, p.bbcode_uid
FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
WHERE t.topic_id BETWEEN ' . $min_id . ' AND ' . $max_id .'
- AND t.poll_max_options > 0
+ AND t.poll_start > 0
AND p.post_id = t.topic_first_post_id';
return $sql;
diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html
index 97a21f9a6e..b01b0bb213 100644
--- a/phpBB/styles/prosilver/template/overall_footer.html
+++ b/phpBB/styles/prosilver/template/overall_footer.html
@@ -62,24 +62,27 @@
<!-- IF S_COOKIE_NOTICE -->
<script src="{T_ASSETS_PATH}/cookieconsent/cookieconsent.min.js?assets_version={T_ASSETS_VERSION}"></script>
<script>
- window.addEventListener("load", function(){
- window.cookieconsent.initialise({
- "palette": {
- "popup": {
- "background": "#0F538A"
+ if (typeof window.cookieconsent === "object") {
+ window.addEventListener("load", function(){
+ window.cookieconsent.initialise({
+ "palette": {
+ "popup": {
+ "background": "#0F538A"
+ },
+ "button": {
+ "background": "#E5E5E5"
+ }
},
- "button": {
- "background": "#E5E5E5"
+ "theme": "classic",
+ "content": {
+ "message": "{LA_COOKIE_CONSENT_MSG}",
+ "dismiss": "{LA_COOKIE_CONSENT_OK}",
+ "link": "{LA_COOKIE_CONSENT_INFO}",
+ "href": "{LA_COOKIE_CONSENT_HREF}"
}
- },
- "theme": "classic",
- "content": {
- "message": "{LA_COOKIE_CONSENT_MSG}",
- "dismiss": "{LA_COOKIE_CONSENT_OK}",
- "link": "{LA_COOKIE_CONSENT_INFO}",
- "href": "{LA_COOKIE_CONSENT_HREF}"
- }
- })});
+ });
+ });
+ }
</script>
<!-- ENDIF -->
diff --git a/phpBB/styles/prosilver/template/viewtopic_topic_tools.html b/phpBB/styles/prosilver/template/viewtopic_topic_tools.html
index 397c807bb3..272a434f6a 100644
--- a/phpBB/styles/prosilver/template/viewtopic_topic_tools.html
+++ b/phpBB/styles/prosilver/template/viewtopic_topic_tools.html
@@ -11,7 +11,7 @@
<!-- IF U_WATCH_TOPIC -->
<li>
<a href="{U_WATCH_TOPIC}" class="watch-topic-link" title="{S_WATCH_TOPIC_TITLE}" data-ajax="toggle_link" data-toggle-class="icon <!-- IF S_WATCHING_TOPIC -->fa-check-square-o<!-- ELSE -->fa-square-o<!-- ENDIF --> fa-fw" data-toggle-text="{S_WATCH_TOPIC_TOGGLE}" data-toggle-url="{U_WATCH_TOPIC_TOGGLE}" data-update-all=".watch-topic-link">
- <i class="icon <!-- IF S_WATCHING_FORUM -->fa-square-o<!-- ELSE -->fa-check-square-o<!-- ENDIF --> fa-fw" aria-hidden="true"></i><span>{S_WATCH_TOPIC_TITLE}</span>
+ <i class="icon <!-- IF S_WATCHING_TOPIC -->fa-square-o<!-- ELSE -->fa-check-square-o<!-- ENDIF --> fa-fw" aria-hidden="true"></i><span>{S_WATCH_TOPIC_TITLE}</span>
</a>
</li>
<!-- ENDIF -->
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php
index 38eba32374..155dca7788 100644
--- a/phpBB/viewtopic.php
+++ b/phpBB/viewtopic.php
@@ -1994,6 +1994,7 @@ for ($i = 0, $end = count($post_list); $i < $end; ++$i)
'S_FIRST_UNREAD' => $s_first_unread,
'S_CUSTOM_FIELDS' => (isset($cp_row['row']) && count($cp_row['row'])) ? true : false,
'S_TOPIC_POSTER' => ($topic_data['topic_poster'] == $poster_id) ? true : false,
+ 'S_FIRST_POST' => ($topic_data['topic_first_post_id'] == $row['post_id']) ? true : false,
'S_IGNORE_POST' => ($row['foe']) ? true : false,
'L_IGNORE_POST' => ($row['foe']) ? sprintf($user->lang['POST_BY_FOE'], get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username'])) : '',
diff --git a/tests/template/template_includecss_test.php b/tests/template/template_includecss_test.php
index bc871aa612..4eb30eda1e 100644
--- a/tests/template/template_includecss_test.php
+++ b/tests/template/template_includecss_test.php
@@ -95,19 +95,19 @@ class phpbb_template_template_includecss_test extends phpbb_template_template_te
*/
array(
array('TEST' => 1),
- '<link href="tests/template/templates/child_only.css?assets_version=1" rel="stylesheet" type="text/css" media="screen" />',
+ '<link href="tests/template/templates/child_only.css?assets_version=1" rel="stylesheet" media="screen" />',
),
array(
array('TEST' => 2),
- '<link href="tests/template/parent_templates/parent_only.css?assets_version=1" rel="stylesheet" type="text/css" media="screen" />',
+ '<link href="tests/template/parent_templates/parent_only.css?assets_version=1" rel="stylesheet" media="screen" />',
),
array(
array('TEST' => 3),
- '<link href="tests/template/ext/include/css/styles/all/theme/test.css?assets_version=1" rel="stylesheet" type="text/css" media="screen" />',
+ '<link href="tests/template/ext/include/css/styles/all/theme/test.css?assets_version=1" rel="stylesheet" media="screen" />',
),
array(
array('TEST' => 4),
- '<link href="tests/template/ext/include/css/styles/all/theme/child_only.css?assets_version=1" rel="stylesheet" type="text/css" media="screen" />',
+ '<link href="tests/template/ext/include/css/styles/all/theme/child_only.css?assets_version=1" rel="stylesheet" media="screen" />',
),
);
}
diff --git a/tests/template/template_includejs_test.php b/tests/template/template_includejs_test.php
index 232f551b4a..19c016ae5e 100644
--- a/tests/template/template_includejs_test.php
+++ b/tests/template/template_includejs_test.php
@@ -28,67 +28,67 @@ class phpbb_template_template_includejs_test extends phpbb_template_template_tes
*/
array(
array('TEST' => 1),
- '<script type="text/javascript" src="tests/template/templates/parent_and_child.js?assets_version=1"></script>',
+ '<script src="tests/template/templates/parent_and_child.js?assets_version=1"></script>',
),
array(
array('TEST' => 2),
- '<script type="text/javascript" src="tests/template/templates/parent_and_child.js?assets_version=0"></script>',
+ '<script src="tests/template/templates/parent_and_child.js?assets_version=0"></script>',
),
array(
array('TEST' => 3),
- '<script type="text/javascript" src="tests/template/templates/parent_and_child.js?test=1&assets_version=0"></script>',
+ '<script src="tests/template/templates/parent_and_child.js?test=1&assets_version=0"></script>',
),
array(
array('TEST' => 4),
- '<script type="text/javascript" src="tests/template/templates/parent_and_child.js?test=1&amp;assets_version=0"></script>',
+ '<script src="tests/template/templates/parent_and_child.js?test=1&amp;assets_version=0"></script>',
),
array(
array('TEST' => 6),
- '<script type="text/javascript" src="tests/template/parent_templates/parent_only.js?assets_version=1"></script>',
+ '<script src="tests/template/parent_templates/parent_only.js?assets_version=1"></script>',
),
array(
array('TEST' => 7),
- '<script type="text/javascript" src="tests/template/templates/child_only.js?assets_version=1"></script>',
+ '<script src="tests/template/templates/child_only.js?assets_version=1"></script>',
),
array(
array('TEST' => 8),
- '<script type="text/javascript" src="tests/template/templates/subdir/parent_only.js?assets_version=1"></script>',
+ '<script src="tests/template/templates/subdir/parent_only.js?assets_version=1"></script>',
),
array(
array('TEST' => 9),
- '<script type="text/javascript" src="tests/template/templates/subdir/subsubdir/parent_only.js?assets_version=1"></script>',
+ '<script src="tests/template/templates/subdir/subsubdir/parent_only.js?assets_version=1"></script>',
),
array(
array('TEST' => 10),
- '<script type="text/javascript" src="tests/template/templates/subdir/parent_only.js?assets_version=1"></script>',
+ '<script src="tests/template/templates/subdir/parent_only.js?assets_version=1"></script>',
),
array(
array('TEST' => 11),
- '<script type="text/javascript" src="tests/template/templates/child_only.js?test1=1&amp;test2=2&amp;assets_version=1#test3"></script>',
+ '<script src="tests/template/templates/child_only.js?test1=1&amp;test2=2&amp;assets_version=1#test3"></script>',
),
array(
array('TEST' => 12),
- '<script type="text/javascript" src="tests/template/parent_templates/parent_only.js?test1=1&amp;test2=2&amp;assets_version=1#test3"></script>',
+ '<script src="tests/template/parent_templates/parent_only.js?test1=1&amp;test2=2&amp;assets_version=1#test3"></script>',
),
array(
array('TEST' => 14),
- '<script type="text/javascript" src="tests/template/parent_templates/parent_only.js?test1=&quot;&amp;assets_version=1#test3"></script>',
+ '<script src="tests/template/parent_templates/parent_only.js?test1=&quot;&amp;assets_version=1#test3"></script>',
),
array(
array('TEST' => 15),
- '<script type="text/javascript" src="http://phpbb.com/b.js?c=d#f"></script>',
+ '<script src="http://phpbb.com/b.js?c=d#f"></script>',
),
array(
array('TEST' => 16),
- '<script type="text/javascript" src="http://phpbb.com/b.js?c=d&assets_version=2#f"></script>',
+ '<script src="http://phpbb.com/b.js?c=d&assets_version=2#f"></script>',
),
array(
array('TEST' => 17),
- '<script type="text/javascript" src="//phpbb.com/b.js"></script>',
+ '<script src="//phpbb.com/b.js"></script>',
),
array(
array('TEST' => 18),
- '<script type="text/javascript" src="tests/template/templates/parent_and_child.js?test=1&test2=0&amp;assets_version=1"></script>',
+ '<script src="tests/template/templates/parent_and_child.js?test=1&test2=0&amp;assets_version=1"></script>',
),
);
}
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 2be16c7198..e1daa4558a 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -911,10 +911,15 @@ class phpbb_functional_test_case extends phpbb_test_case
* status code. This assertion tries to catch that.
*
* @param int $status_code Expected status code
- * @return null
+ * @return void
*/
static public function assert_response_status_code($status_code = 200)
{
+ if ($status_code != self::$client->getResponse()->getStatus() &&
+ preg_match('/^5[0-9]{2}/', self::$client->getResponse()->getStatus()))
+ {
+ self::fail("Encountered unexpected server error:\n" . self::$client->getResponse()->getContent());
+ }
self::assertEquals($status_code, self::$client->getResponse()->getStatus(), 'HTTP status code does not match');
}
diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 7fb9a740b8..c792976b1e 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -385,7 +385,7 @@ class phpbb_test_case_helpers
$mb = $this->test_case->getMockBuilder('phpbb\\textformatter\\data_access');
$mb->setMethods(array('get_bbcodes', 'get_censored_words', 'get_smilies', 'get_styles'));
$mb->setConstructorArgs(array(
- $this->test_case->getMock('phpbb\\db\\driver\\driver'),
+ $this->test_case->getMockBuilder('phpbb\\db\\driver\\driver')->getMock(),
'phpbb_bbcodes',
'phpbb_smilies',
'phpbb_styles',
@@ -489,8 +489,11 @@ class phpbb_test_case_helpers
$request = new phpbb_mock_request;
}
+ // Get a log interface
+ $log = ($container->has('log')) ? $container->get('log') : $this->test_case->getMockBuilder('phpbb\\log\\log_interface')->getMock();
+
// Create and register the text_formatter.s9e.factory service
- $factory = new \phpbb\textformatter\s9e\factory($dal, $cache, $dispatcher, $config, new \phpbb\textformatter\s9e\link_helper, $cache_dir, $cache_key_parser, $cache_key_renderer);
+ $factory = new \phpbb\textformatter\s9e\factory($dal, $cache, $dispatcher, $config, new \phpbb\textformatter\s9e\link_helper, $log, $cache_dir, $cache_key_parser, $cache_key_renderer);
$container->set('text_formatter.s9e.factory', $factory);
// Create a user if none was provided, and add the common lang strings
diff --git a/tests/text_formatter/s9e/factory_test.php b/tests/text_formatter/s9e/factory_test.php
index d35330a975..0d780a19a9 100644
--- a/tests/text_formatter/s9e/factory_test.php
+++ b/tests/text_formatter/s9e/factory_test.php
@@ -56,6 +56,7 @@ class phpbb_textformatter_s9e_factory_test extends phpbb_database_test_case
$this->dispatcher,
new \phpbb\config\config(array('allowed_schemes_links' => 'http,https,ftp')),
new \phpbb\textformatter\s9e\link_helper,
+ $this->getMockBuilder('phpbb\\log\\log_interface')->getMock(),
$this->get_cache_dir(),
'_foo_parser',
'_foo_renderer'
@@ -264,6 +265,23 @@ class phpbb_textformatter_s9e_factory_test extends phpbb_database_test_case
}
/**
+ * @testdox Logs malformed BBCodes
+ */
+ public function test_malformed_bbcodes()
+ {
+ $log = $this->getMockBuilder('phpbb\\log\\log_interface')->getMock();
+ $log->expects($this->once())
+ ->method('add')
+ ->with('critical', null, null, 'LOG_BBCODE_CONFIGURATION_ERROR', false, ['[x !x]{TEXT}[/x]', 'Cannot interpret the BBCode definition']);
+
+ $container = new phpbb_mock_container_builder;
+ $container->set('log', $log);
+
+ $fixture = __DIR__ . '/fixtures/malformed_bbcode.xml';
+ $this->get_test_case_helpers()->set_s9e_services($container, $fixture);
+ }
+
+ /**
* @testdox get_configurator() triggers events before and after configuration
*/
public function test_configure_events()
diff --git a/tests/text_formatter/s9e/fixtures/malformed_bbcode.xml b/tests/text_formatter/s9e/fixtures/malformed_bbcode.xml
new file mode 100644
index 0000000000..7e7aa1a39c
--- /dev/null
+++ b/tests/text_formatter/s9e/fixtures/malformed_bbcode.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+ <table name="phpbb_bbcodes">
+ <column>bbcode_id</column>
+ <column>bbcode_tag</column>
+ <column>bbcode_helpline</column>
+ <column>display_on_posting</column>
+ <column>bbcode_match</column>
+ <column>bbcode_tpl</column>
+ <column>first_pass_match</column>
+ <column>first_pass_replace</column>
+ <column>second_pass_match</column>
+ <column>second_pass_replace</column>
+
+ <row>
+ <value>13</value>
+ <value>x</value>
+ <value></value>
+ <value>1</value>
+ <value>[x !x]{TEXT}[/x]</value>
+ <value>...</value>
+ <value/>
+ <value/>
+ <value/>
+ <value/>
+ </row>
+ </table>
+</dataset>
diff --git a/tests/text_reparser/plugins/fixtures/polls.xml b/tests/text_reparser/plugins/fixtures/polls.xml
index 2960d640a9..5247fb906d 100644
--- a/tests/text_reparser/plugins/fixtures/polls.xml
+++ b/tests/text_reparser/plugins/fixtures/polls.xml
@@ -44,55 +44,66 @@
<column>topic_id</column>
<column>topic_first_post_id</column>
<column>poll_title</column>
+ <column>poll_start</column>
<row>
<value>1</value>
<value>1</value>
<value>This row should be [b]ignored[/b]</value>
+ <value>1</value>
</row>
<row>
<value>2</value>
<value>1</value>
<value>[b]Not bold[/b] :) http://example.org</value>
+ <value>1</value>
</row>
<row>
<value>3</value>
<value>2</value>
<value>[b:abcd1234]Bold[/b:abcd1234] :) http://example.org</value>
+ <value>1</value>
</row>
<row>
<value>4</value>
<value>3</value>
<value><![CDATA[[b]Not bold[/b] <!-- s:) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile" /><!-- s:) --> http://example.org]]></value>
+ <value>1</value>
</row>
<row>
<value>5</value>
<value>4</value>
<value><![CDATA[[b]Not bold[/b] :) <!-- m --><a class="postlink" href="http://example.org">http://example.org</a><!-- m -->]]></value>
+ <value>1</value>
</row>
<row>
<value>6</value>
<value>2</value>
<value><![CDATA[[flash=123,345:abcd1234]http&#58;//example&#46;org/flash&#46;swf[/flash:abcd1234]]]></value>
+ <value>1</value>
</row>
<row>
<value>7</value>
<value>1</value>
<value><![CDATA[[flash=123,345]http://example.org/flash.swf[/flash]]]></value>
+ <value>1</value>
</row>
<row>
<value>8</value>
<value>2</value>
<value><![CDATA[[img:abcd1234]http&#58;//example&#46;org/img&#46;png[/img:abcd1234]]]></value>
+ <value>1</value>
</row>
<row>
<value>9</value>
<value>1</value>
<value><![CDATA[[img]http://example.org/img.png[/img]]]></value>
+ <value>1</value>
</row>
<row>
<value>1000</value>
<value>1</value>
<value>This row should be [b]ignored[/b]</value>
+ <value>1</value>
</row>
</table>
</dataset>
diff --git a/travis/setup-phpbb.sh b/travis/setup-phpbb.sh
index f9fd9522ca..be9eb703d5 100755
--- a/travis/setup-phpbb.sh
+++ b/travis/setup-phpbb.sh
@@ -26,7 +26,7 @@ then
travis/setup-mariadb.sh
fi
-if [ "$NOTESTS" != '1' -a "$TRAVIS_PHP_VERSION" != "hhvm" ]
+if [ "$NOTESTS" != '1' ]
then
travis/setup-php-extensions.sh
fi
diff --git a/travis/setup-webserver.sh b/travis/setup-webserver.sh
index 3369d740fe..7fb67e0454 100755
--- a/travis/setup-webserver.sh
+++ b/travis/setup-webserver.sh
@@ -22,39 +22,26 @@ PHPBB_ROOT_PATH=$(realpath "$DIR/../phpBB")
NGINX_CONF="/etc/nginx/sites-enabled/default"
APP_SOCK=$(realpath "$DIR")/php-app.sock
-if [ "$TRAVIS_PHP_VERSION" = 'hhvm' ]
-then
- HHVM_LOG=$(realpath "$DIR")/hhvm.log
-
- sudo service hhvm stop
- sudo hhvm \
- --mode daemon \
- --user "$USER" \
- -vServer.Type=fastcgi \
- -vServer.FileSocket="$APP_SOCK" \
- -vLog.File="$HHVM_LOG"
-else
- # php-fpm
- PHP_FPM_BIN="$HOME/.phpenv/versions/$TRAVIS_PHP_VERSION/sbin/php-fpm"
- PHP_FPM_CONF="$DIR/php-fpm.conf"
-
- echo "
- [global]
-
- [travis]
- user = $USER
- group = $USER
- listen = $APP_SOCK
- listen.mode = 0666
- pm = static
- pm.max_children = 2
-
- php_admin_value[memory_limit] = 128M
- " > $PHP_FPM_CONF
-
- sudo $PHP_FPM_BIN \
- --fpm-config "$DIR/php-fpm.conf"
-fi
+# php-fpm
+PHP_FPM_BIN="$HOME/.phpenv/versions/$TRAVIS_PHP_VERSION/sbin/php-fpm"
+PHP_FPM_CONF="$DIR/php-fpm.conf"
+
+echo "
+ [global]
+
+ [travis]
+ user = $USER
+ group = $USER
+ listen = $APP_SOCK
+ listen.mode = 0666
+ pm = static
+ pm.max_children = 2
+
+ php_admin_value[memory_limit] = 128M
+" > $PHP_FPM_CONF
+
+sudo $PHP_FPM_BIN \
+ --fpm-config "$DIR/php-fpm.conf"
# nginx
cat $DIR/../phpBB/docs/nginx.sample.conf \