1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-09-16 11:07:03 +02:00

Compare commits

..

57 Commits

Author SHA1 Message Date
Marc Alexander
81f67f3a6e [prep-release-3.3.1] Update changelog for 3.3.10 2023-02-04 20:32:52 +01:00
Marc Alexander
4a185ed02e [prep-release-3.3.1] Add migration for 3.3.10 2023-02-04 20:31:26 +01:00
Marc Alexander
cfd0fe6943 [prep-release-3.3.1] Update version numbers to 3.3.10 2023-02-04 20:31:19 +01:00
Marc Alexander
6590827316 Merge pull request #6453 from Noxwizard/ticket/17092
[ticket/17092] Check for Spamhaus error codes
2023-01-18 19:52:18 +01:00
Marc Alexander
738dd786ba [ticket/17092] Clean up docblock and remove redundant check
PHPBB3-17092
2023-01-17 20:44:05 +01:00
Patrick Webster
17f2d6e03a [ticket/17092] Check for Spamhaus error codes
Fix indentation

PHPBB3-17092
2023-01-17 20:37:49 +01:00
Patrick Webster
20c3371460 [ticket/17092] Check for Spamhaus error codes
Remove leftover logging

PHPBB3-17092
2023-01-17 20:37:49 +01:00
Patrick Webster
aa523eadf1 [ticket/17092] Check for Spamhaus error codes
Switches to using callbacks for each DNSBL so that special cases can be
handled when needed. Adds support for Spamhaus error codes and disables DNSBL
checking if errors are encountered since they probably won't be resolved in a
timely manner by the owner or host.

PHPBB3-17092
2023-01-17 20:37:48 +01:00
Marc Alexander
179dcd9642 Merge pull request #6452 from marc1706/ticket/17091
[ticket/17091] Limit doctrine/instantiator to 1.x versions
2023-01-17 20:35:30 +01:00
Marc Alexander
8ebb64a92a [ticket/17091] Ensure session length is int
PHPBB3-17091
2023-01-16 16:56:12 +01:00
Marc Alexander
e091adcc9c [ticket/17091] Add kernel terminate logic and exit to cron response handling
PHPBB3-17091
2023-01-16 16:56:11 +01:00
Marc Alexander
61a7e0fdfc [ticket/17091] Update windows build commands as well
PHPBB3-17091
2023-01-15 22:00:21 +01:00
Marc Alexander
ad794c17ed [ticket/17091] Limit doctrine/instantiator to 1.x versions
PHPBB3-17091
2023-01-15 21:36:53 +01:00
Marc Alexander
6d8468c91a [prep-release-3.3.10] Update changelog for 3.3.10-RC1 2023-01-13 21:12:01 +01:00
Marc Alexander
aff7fab65f [prep-release-3.3.10] Add migration for 3.3.10-RC1 2023-01-13 21:11:51 +01:00
Marc Alexander
be053c3381 [prep-release-3.3.10] Update version numbers to 3.3.10 2023-01-13 21:11:31 +01:00
Marc Alexander
e805a47a98 [prep-release-3.3.10] Update version numbers to 3.3.10-RC1 2023-01-13 21:11:14 +01:00
Marc Alexander
9feae900d3 Merge pull request #68 from phpbb/ticket/security/275
[ticket/security/275] Gracefully handle exceptions thrown by wrong cron route
2023-01-12 20:33:42 +01:00
Marc Alexander
34f23477ff [ticket/security/275] Use unicode quote types
SECURITY-275
2023-01-12 20:12:33 +01:00
Marc Alexander
e5f069b15b [ticket/security/275] Add language vars and proper error codes
SECURITY-275
2023-01-11 20:33:08 +01:00
Marc Alexander
fd550bc25a [ticket/security/275] Gracefully handle exceptions thrown by wrong cron route
SECURITY-275
2023-01-10 21:09:48 +01:00
Marc Alexander
378c63b002 Merge pull request #6436 from LukeWCS/ticket/17068
[ticket/17068] ALLOW_CDN_EXPLAIN: Refines and expands the description
2023-01-10 20:38:20 +01:00
Marc Alexander
51766ffaee [ticket/17068] Slight adjustment to grammar in line with previous text
PHPBB3-17068
2023-01-10 20:03:25 +01:00
Marc Alexander
83b53690b5 Merge pull request #6450 from marc1706/ticket/17071
[ticket/17071] Switch to jsdelivr CDN for twemoji emojis
2023-01-09 21:58:31 +01:00
Marc Alexander
191f38b9a0 Merge pull request #6449 from marc1706/ticket/17039
[ticket/17039] Use correct template var for group colour in ucp groups manage
2023-01-09 21:40:17 +01:00
Marc Alexander
96afebf969 Merge pull request #6448 from marc1706/ticket/16938
[ticket/16938] Replace invalid nowrap with white-space css
2023-01-09 21:39:22 +01:00
Marc Alexander
3ece314338 [ticket/17071] Switch to jsdelivr CDN for twemoji emojis
PHPBB3-17071
2023-01-09 21:25:46 +01:00
Marc Alexander
c62d9e4c05 Merge pull request #6446 from rubencm/ticket/17082
[ticket/17082] Remove ability to warn anonymous
2023-01-07 21:02:12 +01:00
Marc Alexander
34b56205a3 [ticket/17039] Use correct template var for group colour in ucp groups manage
PHPBB3-17039
2023-01-07 20:51:40 +01:00
Marc Alexander
a0477a10ce [ticket/16938] Replace invalid nowrap with white-space css
PHPBB3-16938
2023-01-07 15:44:29 +01:00
Marc Alexander
9e44ba096e Merge pull request #6445 from rubencm/ticket/17081
[ticket/17081] Fix accept attribute in upload input
2023-01-07 15:40:21 +01:00
Ruben Calvo
7d29f133e5 [ticket/17082] Remove ability to warn anonymous
PHPBB3-17082
2023-01-06 04:33:09 +01:00
Ruben Calvo
e535f8e054 [ticket/17081] Fix accept attribute in upload input
PHPBB3-17081
2023-01-06 04:29:32 +01:00
Marc Alexander
11e68e910b Merge pull request #6444 from iMattPro/ticket/17075
[ticket/17075] Add template events to ACP footers after $SCRIPT
2023-01-04 21:47:53 +01:00
Marc Alexander
02efbc251e Merge pull request #6443 from rubencm/ticket/17074
[ticket/17074] Don't allow to create two roles with the same name
2023-01-03 22:52:04 +01:00
Matt Friedman
7434783b07 [ticket/17075] Add template events to ACP footers after $SCRIPT
PHPBB3-17075
2023-01-03 08:24:07 -08:00
Ruben Calvo
d446030a9b [ticket/17074] Don't allow to create two roles with the same name
PHPBB3-17074
2023-01-03 01:46:56 +01:00
LukeWCS
d6e3dfff6d [ticket/17068] ALLOW_CDN_EXPLAIN: Refines and expands the description
Concerns the description of the switch "APC > GENERAL > Load settings > Allow
usage of third party content delivery networks:".

* The text gives the impression that the choice of the switch state is a
personal preference of individual administrators. In fact, this is a matter of
local privacy laws.
* Missing mention that the switch also controls the integration of Font
Awesome, part of phpBB's GUI and extensions.

PHPBB3-17068
2022-12-26 11:07:42 +01:00
Marc Alexander
369ee44b6f Merge pull request #6423 from marc1706/ticket/13291
[ticket/13291] Close notifications dropdown during mark all read
2022-12-12 19:42:22 +01:00
Marc Alexander
0543c810a7 Merge pull request #6433 from marc1706/ticket/17066
[ticket/17066] Update actions to resolve deprecation warnings
2022-12-11 22:13:00 +01:00
Marc Alexander
bb0f6d040c [ticket/17066] Use Ubuntu 20.04 instead of 18.04
PHPBB3-17066
2022-12-11 20:43:01 +01:00
Marc Alexander
02ef7c5da4 [ticket/17066] Use new way of saving to github output
PHPBB3-17066
2022-12-11 16:54:37 +01:00
Marc Alexander
90899a17dd [ticket/17066] Use version 3 of actions checkout and cache
PHPBB3-17066
2022-12-11 15:10:44 +01:00
Marc Alexander
9c70c15e1c Merge pull request #6432 from Crizz0/ticket/17065
[ticket/17065] Add utf8_encode_ucr to $usernotes
2022-12-11 14:16:42 +01:00
Marc Alexander
21374390ad Merge pull request #6428 from wordlesswind/ticket/16105
[ticket/16105] Use Google reCAPTCHA globally
2022-12-09 21:43:06 +01:00
Marc Alexander
d03a853f6e Merge branch 'prep-release-3.3.9' into 3.3.x 2022-11-28 20:40:46 +01:00
Christian Schnegelberger
014008fd48 [ticket/17065] Add utf8_encode_ucr to $usernotes
PHPBB3-17065
2022-11-28 18:24:59 +01:00
Marc Alexander
ad9e5e6891 [ticket/16105] Replace const with lowercase version
PHPBB3-16105
2022-11-21 17:24:11 +01:00
Marc Alexander
b828efa9e6 [ticket/16105] Use domain setting for recaptcha v2 as well
PHPBB3-16105
2022-11-21 17:24:11 +01:00
Marc Alexander
c66923bafc [ticket/16105] Add domain selection to recaptcha v2 & check against list
PHPBB3-16105
2022-11-21 17:24:10 +01:00
wordlesswind
ebc5e1ead0 [ticket/16105] Use Google reCAPTCHA globally
PHPBB3-16105
2022-11-21 17:23:39 +01:00
Marc Alexander
c2968212d8 Merge branch 'prep-release-3.3.9' into 3.3.x 2022-11-14 20:07:55 +01:00
Marc Alexander
696ff06263 Merge pull request #6425 from SagePtr/ticket/17056
[ticket/17056] Fix PHP 8.2 deprecation warning about ${var} syntax
2022-11-03 20:06:12 +01:00
SagePtr
b86d15a766 [ticket/17056] Fix PHP 8.2 deprecation warning about ${var} syntax
The "${var}" style of string interpolation is deprecated in PHP 8.2,
using "{$var}" syntax instead.

PHPBB3-17056
2022-11-02 00:30:46 +02:00
Marc Alexander
637844f264 [ticket/13291] Close notifications dropdown during mark all read
PHPBB3-13291
2022-10-27 00:01:36 +02:00
Marc Alexander
c410829a42 [3.3.x] Update versions to 3.3.10-dev 2022-10-26 22:44:56 +02:00
Marc Alexander
8ef6a5c1bc Merge branch 'prep-release-3.3.9' into 3.3.x 2022-10-26 22:43:17 +02:00
37 changed files with 390 additions and 83 deletions

View File

@@ -31,6 +31,6 @@ php ../composer.phar install --dev --no-interaction
if [[ "$PHP_VERSION" =~ ^nightly$ || "$PHP_VERSION" =~ ^8 ]]
then
php ../composer.phar remove phpunit/dbunit --dev --update-with-dependencies \
&& php ../composer.phar require symfony/yaml:~4.4 misantron/dbunit:~5.0 phpunit/phpunit:^9.3 --dev --update-with-all-dependencies --ignore-platform-reqs
&& php ../composer.phar require symfony/yaml:~4.4 misantron/dbunit:~5.0 phpunit/phpunit:^9.3 doctrine/instantiator:^1.4 --dev --update-with-all-dependencies --ignore-platform-reqs
fi
cd ..

View File

@@ -17,7 +17,7 @@ on:
jobs:
# Basic checks, e.g. parse errors, commit messages, etc.
basic-checks:
runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
include:
@@ -29,7 +29,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
with:
fetch-depth: 100
@@ -46,12 +46,12 @@ jobs:
PHP_VERSION: ${{ matrix.php }}
run: |
cd phpBB
echo "::set-output name=dir::$(composer config cache-files-dir)"
echo "::set-output name=version::${PHP_VERSION%.*}"
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -88,7 +88,7 @@ jobs:
# Tests for MySQL and MariaDB
mysql-tests:
runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
include:
@@ -157,14 +157,14 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- id: database-type
env:
MATRIX_DB: ${{ matrix.db }}
run: |
db=$(echo "${MATRIX_DB%%:*}")
echo "::set-output name=db::$db"
echo "db=$db" >> $GITHUB_OUTPUT
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -179,12 +179,12 @@ jobs:
PHP_VERSION: ${{ matrix.php }}
run: |
cd phpBB
echo "::set-output name=dir::$(composer config cache-files-dir)"
echo "::set-output name=version::${PHP_VERSION%.*}"
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -229,7 +229,7 @@ jobs:
# Tests for PostgreSQL
postgres-tests:
runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
include:
@@ -290,14 +290,14 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- id: database-type
env:
MATRIX_DB: ${{ matrix.db }}
run: |
db=$(echo "${MATRIX_DB%%:*}")
echo "::set-output name=db::$db"
echo "db=$db" >> $GITHUB_OUTPUT
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -312,12 +312,12 @@ jobs:
PHP_VERSION: ${{ matrix.php }}
run: |
cd phpBB
echo "::set-output name=dir::$(composer config cache-files-dir)"
echo "::set-output name=version::${PHP_VERSION%.*}"
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -345,7 +345,7 @@ jobs:
# Other database types, namely sqlite3 and mssql
other-tests:
runs-on: ubuntu-18.04
runs-on: ubuntu-20.04
strategy:
matrix:
include:
@@ -388,7 +388,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- id: database-type
env:
@@ -400,7 +400,7 @@ jobs:
else
db=$(echo "${MATRIX_DB%%:*}")
fi
echo "::set-output name=db::$db"
echo "db=$db" >> $GITHUB_OUTPUT
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -415,12 +415,12 @@ jobs:
PHP_VERSION: ${{ matrix.php }}
run: |
cd phpBB
echo "::set-output name=dir::$(composer config cache-files-dir)"
echo "::set-output name=version::${PHP_VERSION%.*}"
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
echo "version=${PHP_VERSION%.*}" >> $GITHUB_OUTPUT
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -485,7 +485,7 @@ jobs:
git config --system core.autocrlf false
git config --system core.eol lf
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Setup PHP
uses: shivammathur/setup-php@v2
@@ -499,13 +499,13 @@ jobs:
id: composer-cache
run: |
cd phpBB
echo "::set-output name=dir::$(composer config cache-files-dir)"
echo "dir=$(composer config cache-files-dir)" >> $env:GITHUB_OUTPUT
$major_version="${{ matrix.php }}".substring(0,1)
echo "::set-output name=version::$major_version"
echo "version=$major_version" >> $env:GITHUB_OUTPUT
cd ..
- name: Cache Composer dependencies
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: composer-${{ steps.composer-cache.outputs.version }}-${{ hashFiles('phpBB/composer.lock') }}
@@ -548,7 +548,7 @@ jobs:
cd ${env:GITHUB_WORKSPACE}\phpBB
php ..\composer.phar install
php ..\composer.phar remove phpunit/dbunit --dev --update-with-dependencies
php ..\composer.phar require symfony/yaml:~4.4 misantron/dbunit:~5.0 phpunit/phpunit:^9.3 --dev --update-with-all-dependencies --ignore-platform-reqs
php ..\composer.phar require symfony/yaml:~4.4 misantron/dbunit:~5.0 phpunit/phpunit:^9.3 doctrine/instantiator:^1.4 --dev --update-with-all-dependencies --ignore-platform-reqs
cd ..
- name: Setup database
run: |

View File

@@ -2,9 +2,9 @@
<project name="phpBB" description="The phpBB forum software" default="all" basedir="../">
<!-- a few settings for the build -->
<property name="newversion" value="3.3.9" />
<property name="prevversion" value="3.3.8" />
<property name="olderversions" value="3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.3.9-RC1" />
<property name="newversion" value="3.3.10" />
<property name="prevversion" value="3.3.9" />
<property name="olderversions" value="3.1.0, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.1.6, 3.1.7, 3.1.7-pl1, 3.1.8, 3.1.9, 3.1.10, 3.1.11, 3.1.12, 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.2.7, 3.2.8, 3.2.9, 3.2.10, 3.2.11, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.3.8, 3.3.10-RC1" />
<!-- no configuration should be needed beyond this point -->
<property name="oldversions" value="${olderversions}, ${prevversion}" />

View File

@@ -14,7 +14,7 @@
<!-- BEGIN warn -->
<tr>
<td>{warn.USERNAME}</td>
<td style="text-align: center; nowrap: nowrap;">{warn.DATE}</td>
<td style="text-align: center; white-space: nowrap;">{warn.DATE}</td>
<td>{warn.ACTION}</td>
<td style="text-align: center;"><input type="checkbox" class="radio" name="mark[]" value="{warn.ID}" /></td>
</tr>

View File

@@ -21,6 +21,20 @@
<dd><input id="recaptcha_privkey" name="recaptcha_privkey" value="{RECAPTCHA_PRIVKEY}" size="50" type="text" /></dd>
</dl>
<dl>
<dt>
<label>{{ lang('RECAPTCHA_V3_DOMAIN') ~ lang('COLON') }}</label>
<br><span>{{ lang('RECAPTCHA_V3_DOMAIN_EXPLAIN') }}</span>
</dt>
<dd>
{% for domain in RECAPTCHA_V2_DOMAINS %}
<label>
<input class="radio" name="recaptcha_v2_domain" type="radio" value="{{ domain }}"{{ domain == RECAPTCHA_V2_DOMAIN ? ' checked' }}>
<span>{{ domain }}</span>
</label>
{% endfor %}
</dd>
</dl>
</fieldset>
<fieldset>

View File

@@ -42,5 +42,7 @@
<!-- EVENT acp_overall_footer_after -->
{$SCRIPTS}
{% EVENT acp_overall_footer_body_after %}
</body>
</html>

View File

@@ -23,5 +23,7 @@
<!-- EVENT acp_simple_footer_after -->
{$SCRIPTS}
{% EVENT acp_simple_footer_body_after %}
</body>
</html>

View File

@@ -12,6 +12,9 @@
*/
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\ExceptionInterface;
use Symfony\Component\Routing\Exception\RouteNotFoundException;
/**
*/
@@ -28,10 +31,49 @@ $cron_type = $request->variable('cron_type', '');
$get_params_array = $request->get_super_global(\phpbb\request\request_interface::GET);
/* @var $http_kernel \Symfony\Component\HttpKernel\HttpKernel */
$http_kernel = $phpbb_container->get('http_kernel');
/* @var $symfony_request \phpbb\symfony_request */
$symfony_request = $phpbb_container->get('symfony_request');
/** @var \phpbb\controller\helper $controller_helper */
$controller_helper = $phpbb_container->get('controller.helper');
$response = new RedirectResponse(
$controller_helper->route('phpbb_cron_run', $get_params_array, false),
301
$cron_route = 'phpbb_cron_run';
try
{
$response = new RedirectResponse(
$controller_helper->route($cron_route, $get_params_array, false),
Response::HTTP_MOVED_PERMANENTLY
);
$response->send();
$http_kernel->terminate($symfony_request, $response);
exit();
}
catch (RouteNotFoundException $exception)
{
$error = 'ROUTE_NOT_FOUND';
$error_parameters = $cron_route;
$error_code = Response::HTTP_NOT_FOUND;
}
catch (ExceptionInterface $exception)
{
$error = 'ROUTE_INVALID_MISSING_PARAMS';
$error_parameters = $cron_route;
$error_code = Response::HTTP_BAD_REQUEST;
}
catch (Throwable $exception)
{
$error = $exception->getMessage();
$error_parameters = [];
$error_code = Response::HTTP_INTERNAL_SERVER_ERROR;
}
$language = $phpbb_container->get('language');
$response = new Response(
$language->lang($error, $error_parameters),
$error_code
);
$response->send();
$http_kernel->terminate($symfony_request, $response);

View File

@@ -50,6 +50,8 @@
<ol>
<li><a href="#changelog">Changelog</a>
<ul>
<li><a href="#v3310rc1">Changes since 3.3.10-RC1</a></li>
<li><a href="#v339">Changes since 3.3.9</a></li>
<li><a href="#v339rc1">Changes since 3.3.9-RC1</a></li>
<li><a href="#v338">Changes since 3.3.8</a></li>
<li><a href="#v337">Changes since 3.3.7</a></li>
@@ -164,6 +166,41 @@
<div class="inner">
<div class="content">
<a name="v3310rc1"></a><h3>Changes since 3.3.10-RC1</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17091">PHPBB3-17091</a>] - PHP 8.0 builds fail due to incompatible doctrine/instantiator</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17092">PHPBB3-17092</a>] - Check for error codes when querying Spamhaus</li>
</ul>
<a name="v339"></a><h3>Changes since 3.3.9</h3>
<h4>Bug</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16938">PHPBB3-16938</a>] - Unexistent css property in inline style</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17039">PHPBB3-17039</a>] - Group name not colored in manage groups due to typo</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17056">PHPBB3-17056</a>] - PHP 8.2 Deprecation warning about ${var} syntax</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17065">PHPBB3-17065</a>] - Emoji characters in MCP add feedback cause SQL error</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17074">PHPBB3-17074</a>] - Condition to avoid creation of roles with same name is broken</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17081">PHPBB3-17081</a>] - Invalid accept attribute in the post editor</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17082">PHPBB3-17082</a>] - Ability to warn Anonymous</li>
</ul>
<h4>Improvement</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-13291">PHPBB3-13291</a>] - Close notification drop down after clicking &quot;mark all read&quot;</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-16105">PHPBB3-16105</a>] - Use &quot;global&quot; reCAPTCHA domain to circumvent blocking in some countries</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17068">PHPBB3-17068</a>] - ALLOW_CDN_EXPLAIN: Incomplete and imprecise description</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17075">PHPBB3-17075</a>] - Add template events to ACP footer after SCRIPTS</li>
</ul>
<h4>Task</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17066">PHPBB3-17066</a>] - Update GitHub Actions configuration to resolve deprecations</li>
<li>[<a href="https://tracker.phpbb.com/browse/PHPBB3-17071">PHPBB3-17071</a>] - Update the emoji CDN</li>
</ul>
<h4>Hardening</h4>
<ul>
<li>[<a href="https://tracker.phpbb.com/browse/SECURITY-275">SECURITY-275</a>] - Improve handling of exceptions in cron redirect</li>
</ul>
<a name="v339rc1"></a><h3>Changes since 3.3.9-RC1</h3>
<h4>Bug</h4>
<ul>

View File

@@ -274,6 +274,12 @@ acp_overall_footer_after
* Since: 3.1.0-a1
* Purpose: Add content below the footer in the ACP
acp_overall_footer_body_after
===
* Location: adm/style/overall_footer.html
* Since: 3.3.10-RC1
* Purpose: Add content before the `</body>` tag but after the $SCRIPTS var, i.e. after the js scripts have been loaded
acp_overall_header_body_before
===
* Location: adm/style/overall_header.html
@@ -558,6 +564,12 @@ acp_simple_footer_after
* Since: 3.1.0-a1
* Purpose: Add content below the simple footer in the ACP
acp_simple_footer_body_after
===
* Location: adm/style/simple_footer.html
* Since: 3.3.10-RC1
* Purpose: Add content before the `</body>` tag but after the $SCRIPTS var, i.e. after the js scripts have been loaded
acp_simple_header_body_before
===
* Location: adm/style/simple_header.html

View File

@@ -179,7 +179,7 @@ class acp_permission_roles
$db->sql_freeresult($result);
// Make sure we only print out the error if we add the role or change it's name
if ($row && ($mode == 'add' || ($mode == 'edit' && $role_row['role_name'] != $role_name)))
if ($row && ($action == 'add' || ($action == 'edit' && $role_row['role_name'] != $role_name)))
{
trigger_error(sprintf($user->lang['ROLE_NAME_ALREADY_EXIST'], $role_name) . adm_back_link($this->u_action), E_USER_WARNING);
}

View File

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

View File

@@ -834,7 +834,7 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a
'FILESIZE' => $config['max_filesize'],
'FILE_COMMENT' => (isset($filename_data['filecomment'])) ? $filename_data['filecomment'] : '',
'MAX_ATTACHMENT_FILESIZE' => $config['max_filesize'] > 0 ? $user->lang('MAX_ATTACHMENT_FILESIZE', get_formatted_filesize($config['max_filesize'])) : '',
'ALLOWED_ATTACHMENTS' => !empty($allowed_attachments) ? implode(',', $allowed_attachments) : '',
'ALLOWED_ATTACHMENTS' => !empty($allowed_attachments) ? '.' . implode(',.', $allowed_attachments) : '',
];
/**

View File

@@ -98,7 +98,7 @@ class mcp_notes
$userrow = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!$userrow)
if (!$userrow || (int) $userrow['user_id'] === ANONYMOUS)
{
trigger_error('NO_USER');
}
@@ -162,16 +162,16 @@ class mcp_notes
{
if (check_form_key('mcp_notes'))
{
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, array($userrow['username']));
$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, array(
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, [$userrow['username']]);
$phpbb_log->add('mod', $user->data['user_id'], $user->ip, 'LOG_USER_FEEDBACK', false, [
'forum_id' => 0,
'topic_id' => 0,
$userrow['username']
));
$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GENERAL', false, array(
]);
$phpbb_log->add('user', $user->data['user_id'], $user->ip, 'LOG_USER_GENERAL', false, [
'reportee_id' => $user_id,
$usernote
));
utf8_encode_ucr($usernote)
]);
$msg = $user->lang['USER_FEEDBACK_ADDED'];
}

View File

@@ -386,7 +386,7 @@ class mcp_warn
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if (!$user_row)
if (!$user_row || (int) $user_row['user_id'] === ANONYMOUS)
{
trigger_error('NO_USER');
}

View File

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

View File

@@ -23,7 +23,7 @@ if (php_sapi_name() !== 'cli')
define('IN_PHPBB', true);
define('IN_INSTALL', true);
define('PHPBB_ENVIRONMENT', 'production');
define('PHPBB_VERSION', '3.3.9');
define('PHPBB_VERSION', '3.3.10');
$phpbb_root_path = __DIR__ . '/../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

View File

@@ -316,7 +316,7 @@ INSERT INTO phpbb_config (config_name, config_value) VALUES ('update_hashes_lock
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_icons_path', 'images/upload_icons');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('upload_path', 'files');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('use_system_cron', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.3.9');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('version', '3.3.10');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_expire_days', '90');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('warnings_gc', '14400');

View File

@@ -386,7 +386,7 @@ $lang = array_merge($lang, array(
'ACP_LOAD_SETTINGS_EXPLAIN' => 'Here you can enable and disable certain board functions to reduce the amount of processing required. On most servers there is no need to disable any functions. However on certain systems or in shared hosting environments it may be beneficial to disable capabilities you do not really need. You can also specify limits for system load and active sessions beyond which the board will go offline.',
'ALLOW_CDN' => 'Allow usage of third party content delivery networks',
'ALLOW_CDN_EXPLAIN' => 'If this setting is enabled, some files will be served from external third party servers instead of your server. This reduces the network bandwidth required by your server, but may present a privacy issue for some board administrators. In a default phpBB installation, this includes loading “jQuery” and the font “Open Sans” from Googles content delivery network.',
'ALLOW_CDN_EXPLAIN' => 'If this setting is enabled, some files will be served from external third party servers instead of your server. This reduces the network bandwidth used by your server, but may present a privacy issue in some countries. In a default phpBB installation, this includes loading “jQuery” and the font “Open Sans” from Googles content delivery network. This also applies to the “Font Awesome” font, which phpBB and some extensions use to render icons.',
'ALLOW_LIVE_SEARCHES' => 'Allow live searches',
'ALLOW_LIVE_SEARCHES_EXPLAIN' => 'If this setting is enabled, users are provided with keyword suggestions as they type in certain fields throughout the board.',
'CUSTOM_PROFILE_FIELDS' => 'Custom profile fields',

View File

@@ -738,6 +738,10 @@ $lang = array_merge($lang, array(
'LOG_SEARCH_INDEX_CREATED' => '<strong>Created search index for</strong><br />» %s',
'LOG_SEARCH_INDEX_REMOVED' => '<strong>Removed search index for</strong><br />» %s',
'LOG_SPHINX_ERROR' => '<strong>Sphinx Error</strong><br />» %s',
'LOG_SPAMHAUS_OPEN_RESOLVER' => 'Spamhaus does not allow queries using an open resolver. Blacklist checking has been disabled. For more information, see https://www.spamhaus.com/product/help-for-spamhaus-public-mirror-users/.',
'LOG_SPAMHAUS_VOLUME_LIMIT' => 'Spamhaus query volume limit has been exceeded. Blacklist checking has been disabled. For more information, see https://www.spamhaus.com/product/help-for-spamhaus-public-mirror-users/.',
'LOG_STYLE_ADD' => '<strong>Added new style</strong><br />» %s',
'LOG_STYLE_DELETE' => '<strong>Deleted style</strong><br />» %s',
'LOG_STYLE_EDIT_DETAILS' => '<strong>Edited style</strong><br />» %s',

View File

@@ -678,6 +678,10 @@ $lang = array_merge($lang, array(
'RETURN_TOPIC' => '%sReturn to the topic last visited%s',
'RETURN_TO' => 'Return to “%s”',
'RETURN_TO_INDEX' => 'Return to Board Index',
'ROUTE_NOT_FOUND' => 'The requested route “%s” could not be found.',
'ROUTE_INVALID_MISSING_PARAMS' => 'Invalid or missing parameters passed for route “%s”.',
'FEED' => 'Feed',
'FEED_NEWS' => 'News',
'FEED_TOPICS_ACTIVE' => 'Active Topics',

View File

@@ -15,18 +15,13 @@ namespace phpbb\captcha\plugins;
class recaptcha extends captcha_abstract
{
var $recaptcha_server = 'http://www.google.com/recaptcha/api';
var $recaptcha_server_secure = 'https://www.google.com/recaptcha/api'; // class constants :(
var $response;
private $response;
/**
* Constructor
*/
public function __construct()
{
global $request;
$this->recaptcha_server = $request->is_secure() ? $this->recaptcha_server_secure : $this->recaptcha_server;
}
function init($type)
@@ -94,6 +89,12 @@ class recaptcha extends captcha_abstract
}
}
$recaptcha_domain = $request->variable('recaptcha_v2_domain', '', true);
if (in_array($recaptcha_domain, recaptcha_v3::$supported_domains))
{
$config->set('recaptcha_v2_domain', $recaptcha_domain);
}
$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_CONFIG_VISUAL');
trigger_error($user->lang['CONFIG_UPDATED'] . adm_back_link($module->u_action));
}
@@ -110,9 +111,11 @@ class recaptcha extends captcha_abstract
}
$template->assign_vars(array(
'CAPTCHA_PREVIEW' => $this->get_demo_template($id),
'CAPTCHA_NAME' => $this->get_service_name(),
'U_ACTION' => $module->u_action,
'CAPTCHA_PREVIEW' => $this->get_demo_template($id),
'CAPTCHA_NAME' => $this->get_service_name(),
'RECAPTCHA_V2_DOMAIN' => $config['recaptcha_v2_domain'] ?? recaptcha_v3::GOOGLE,
'RECAPTCHA_V2_DOMAINS' => recaptcha_v3::$supported_domains,
'U_ACTION' => $module->u_action,
));
}
@@ -140,9 +143,10 @@ class recaptcha extends captcha_abstract
{
$contact_link = phpbb_get_board_contact_link($config, $phpbb_root_path, $phpEx);
$explain = $user->lang(($this->type != CONFIRM_POST) ? 'CONFIRM_EXPLAIN' : 'POST_CONFIRM_EXPLAIN', '<a href="' . $contact_link . '">', '</a>');
$domain = $config['recaptcha_v2_domain'] ?? recaptcha_v3::GOOGLE;
$template->assign_vars(array(
'RECAPTCHA_SERVER' => $this->recaptcha_server,
'RECAPTCHA_SERVER' => sprintf('//%1$s/recaptcha/api', $domain),
'RECAPTCHA_PUBKEY' => isset($config['recaptcha_pubkey']) ? $config['recaptcha_pubkey'] : '',
'S_RECAPTCHA_AVAILABLE' => self::is_available(),
'S_CONFIRM_CODE' => true,

View File

@@ -30,6 +30,14 @@ class recaptcha_v3 extends captcha_abstract
*/
const GOOGLE = 'google.com';
const RECAPTCHA = 'recaptcha.net';
const RECAPTCHA_CN = 'recaptcha.google.cn';
/** @var string[] List of supported domains */
static public $supported_domains = [
self::GOOGLE,
self::RECAPTCHA,
self::RECAPTCHA_CN
];
/** @var array CAPTCHA types mapped to their action */
static protected $actions = [
@@ -180,9 +188,14 @@ class recaptcha_v3 extends captcha_abstract
trigger_error($language->lang('EMPTY_RECAPTCHA_V3_REQUEST_METHOD') . adm_back_link($module->u_action), E_USER_WARNING);
}
$recaptcha_domain = $request->variable('recaptcha_v3_domain', '', true);
if (in_array($recaptcha_domain, self::$supported_domains))
{
$config->set('recaptcha_v3_domain', $recaptcha_domain);
}
$config->set('recaptcha_v3_key', $request->variable('recaptcha_v3_key', '', true));
$config->set('recaptcha_v3_secret', $request->variable('recaptcha_v3_secret', '', true));
$config->set('recaptcha_v3_domain', $request->variable('recaptcha_v3_domain', '', true));
$config->set('recaptcha_v3_method', $recaptcha_v3_method);
foreach (self::$actions as $action)
@@ -211,7 +224,7 @@ class recaptcha_v3 extends captcha_abstract
'RECAPTCHA_V3_SECRET' => $config['recaptcha_v3_secret'] ?? '',
'RECAPTCHA_V3_DOMAIN' => $config['recaptcha_v3_domain'] ?? self::GOOGLE,
'RECAPTCHA_V3_DOMAINS' => [self::GOOGLE, self::RECAPTCHA],
'RECAPTCHA_V3_DOMAINS' => self::$supported_domains,
'RECAPTCHA_V3_METHOD' => $config['recaptcha_v3_method'] ?? '',
'RECAPTCHA_V3_METHODS' => [

View File

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

View File

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

View File

@@ -182,7 +182,7 @@ class mssql extends tools
if (isset($prepared_column['auto_increment']) && $prepared_column['auto_increment'] && strlen($column_name) > 26) // "${column_name}_gen"
{
trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
trigger_error("Index name '{$column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
}
// here we add the definition of the new column to the list of columns

View File

@@ -147,7 +147,7 @@ class postgres extends tools
if (isset($prepared_column['auto_increment']) && $prepared_column['auto_increment'] && strlen($column_name) > 26) // "${column_name}_gen"
{
trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
trigger_error("Index name '{$column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
}
// here we add the definition of the new column to the list of columns

View File

@@ -275,7 +275,7 @@ class tools implements tools_interface
if (isset($prepared_column['auto_increment']) && $prepared_column['auto_increment'] && strlen($column_name) > 26) // "${column_name}_gen"
{
trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
trigger_error("Index name '{$column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
}
// here we add the definition of the new column to the list of columns

View File

@@ -420,7 +420,7 @@ class session
// Else check the autologin length... and also removing those having autologin enabled but no longer allowed board-wide.
if (!$this->data['session_autologin'])
{
if ($this->data['session_time'] < $this->time_now - ($config['session_length'] + 60))
if ($this->data['session_time'] < $this->time_now - ((int) $config['session_length'] + 60))
{
$session_expired = true;
}
@@ -1346,6 +1346,109 @@ class session
}
}
/**
* Check if ip is blacklisted by Spamhaus SBL
*
* Disables DNSBL setting if errors are returned by Spamhaus due to a policy violation.
* https://www.spamhaus.com/product/help-for-spamhaus-public-mirror-users/
*
* @param string $dnsbl the blacklist to check against
* @param string|false $ip the IPv4 address to check
*
* @return bool true if listed in spamhaus database, false if not
*/
function check_dnsbl_spamhaus($dnsbl, $ip = false)
{
global $config, $phpbb_log;
if ($ip === false)
{
$ip = $this->ip;
}
// Spamhaus does not support IPv6 addresses.
if (strpos($ip, ':') !== false)
{
return false;
}
if ($ip)
{
$quads = explode('.', $ip);
$reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0];
$records = dns_get_record($reverse_ip . '.' . $dnsbl . '.', DNS_A);
if (empty($records))
{
return false;
}
else
{
$error = false;
foreach ($records as $record)
{
if ($record['ip'] == '127.255.255.254')
{
$error = 'LOG_SPAMHAUS_OPEN_RESOLVER';
break;
}
else if ($record['ip'] == '127.255.255.255')
{
$error = 'LOG_SPAMHAUS_VOLUME_LIMIT';
break;
}
}
if ($error !== false)
{
$config->set('check_dnsbl', 0);
$phpbb_log->add('critical', $this->data['user_id'], $ip, $error);
}
else
{
// The existence of a non-error A record means it's a hit
return true;
}
}
}
return false;
}
/**
* Checks if an IPv4 address is in a specified DNS blacklist
*
* Only checks if a record is returned or not.
*
* @param string $dnsbl the blacklist to check against
* @param string|false $ip the IPv4 address to check
*
* @return bool true if record is returned, false if not
*/
function check_dnsbl_ipv4_generic($dnsbl, $ip = false)
{
if ($ip === false)
{
$ip = $this->ip;
}
// This function does not support IPv6 addresses.
if (strpos($ip, ':') !== false)
{
return false;
}
$quads = explode('.', $ip);
$reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0];
if (checkdnsrr($reverse_ip . '.' . $dnsbl . '.', 'A') === true)
{
return true;
}
return false;
}
/**
* Check if ip is blacklisted
* This should be called only where absolutely necessary
@@ -1372,28 +1475,25 @@ class session
}
$dnsbl_check = array(
'sbl.spamhaus.org' => 'http://www.spamhaus.org/query/bl?ip=',
'sbl.spamhaus.org' => ['http://www.spamhaus.org/query/bl?ip=', 'check_dnsbl_spamhaus'],
);
if ($mode == 'register')
{
$dnsbl_check['bl.spamcop.net'] = 'http://spamcop.net/bl.shtml?';
$dnsbl_check['bl.spamcop.net'] = ['http://spamcop.net/bl.shtml?', 'check_dnsbl_ipv4_generic'];
}
if ($ip)
{
$quads = explode('.', $ip);
$reverse_ip = $quads[3] . '.' . $quads[2] . '.' . $quads[1] . '.' . $quads[0];
// Need to be listed on all servers...
$listed = true;
$info = array();
foreach ($dnsbl_check as $dnsbl => $lookup)
{
if (checkdnsrr($reverse_ip . '.' . $dnsbl . '.', 'A') === true)
if (call_user_func(array($this, $lookup[1]), $dnsbl, $ip) === true)
{
$info = array($dnsbl, $lookup . $ip);
$info = array($dnsbl, $lookup[0] . $ip);
}
else
{

View File

@@ -356,10 +356,10 @@ class factory implements \phpbb\textformatter\cache_interface
$tag = $configurator->Emoji->getTag();
$tag->template = '<xsl:choose>
<xsl:when test="@tseq">
<img alt="{.}" class="emoji" draggable="false" src="//twemoji.maxcdn.com/2/svg/{@tseq}.svg"/>
<img alt="{.}" class="emoji" draggable="false" src="//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/{@tseq}.svg"/>
</xsl:when>
<xsl:otherwise>
<img alt="{.}" class="emoji" draggable="false" src="https://cdn.jsdelivr.net/gh/s9e/emoji-assets-twemoji@11.2/dist/svgz/{@seq}.svgz"/>
<img alt="{.}" class="emoji" draggable="false" src="//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/{@seq}.svg"/>
</xsl:otherwise>
</xsl:choose>';
$tag->template = '<xsl:choose><xsl:when test="$S_VIEWSMILIES">' . str_replace('class="emoji"', 'class="emoji smilies"', $tag->template) . '</xsl:when><xsl:otherwise><xsl:value-of select="."/></xsl:otherwise></xsl:choose>';

View File

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

View File

@@ -101,6 +101,7 @@ phpbb.addAjaxCallback('mark_topics_read', function(res, updateTopicLinks) {
phpbb.addAjaxCallback('notification.mark_all_read', function(res) {
if (typeof res.success !== 'undefined') {
phpbb.markNotifications($('#notification_list li.bg2'), 0);
phpbb.toggleDropdown.call($('#notification_list_button'));
phpbb.closeDarkenWrapper(3000);
}
});

View File

@@ -1,6 +1,6 @@
<!-- INCLUDE ucp_header.html -->
<h2<!-- IF GROUP_COLOR --> style="color:#{GROUP_COLOR};"<!-- ENDIF -->>{L_USERGROUPS}<!-- IF GROUP_NAME --> :: {GROUP_NAME}<!-- ENDIF --></h2>
<h2<!-- IF GROUP_COLOUR --> style="color:#{GROUP_COLOUR};"<!-- ENDIF -->>{L_USERGROUPS}<!-- IF GROUP_NAME --> :: {GROUP_NAME}<!-- ENDIF --></h2>
<form id="ucp" method="post" action="{S_UCP_ACTION}"{S_FORM_ENCTYPE}>

View File

@@ -92,7 +92,7 @@ class phpbb_functional_acp_permissions_test extends phpbb_functional_test_case
public function test_change_permission($description, $permission_type, $permission, $mode, $object_name, $object_id)
{
// Get the form
$crawler = self::request('GET', "adm/index.php?i=acp_permissions&icat=16&mode=$mode&${object_name}[0]=$object_id&type=$permission_type&sid=" . $this->sid);
$crawler = self::request('GET', "adm/index.php?i=acp_permissions&icat=16&mode=$mode&{$object_name}[0]=$object_id&type=$permission_type&sid=" . $this->sid);
$this->assertStringContainsString($this->lang('ACL_SET'), $crawler->filter('h1')->eq(1)->text());
// XXX globals for \phpbb\auth\auth, refactor it later

View File

@@ -310,7 +310,7 @@ class phpbb_textformatter_s9e_default_formatting_test extends phpbb_test_case
),
array(
"Emoji: \xF0\x9F\x98\x80",
'Emoji: <img alt="' . "\xF0\x9F\x98\x80" . '" class="emoji smilies" draggable="false" src="//twemoji.maxcdn.com/2/svg/1f600.svg">'
'Emoji: <img alt="' . "\xF0\x9F\x98\x80" . '" class="emoji smilies" draggable="false" src="//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f600.svg">'
),
array(
"Emoji: \xF0\x9F\x98\x80",

View File

@@ -1 +1 @@
<img class="smilies" src="phpBB/images/smilies/icon_e_surprised.gif" width="15" height="17" alt=":o" title="First half of :ok:"> <img class="smilies" src="phpBB/images/smilies/icon_lol.gif" width="15" height="17" alt="k:" title="Second half of :ok:"> <img alt=":ok:" class="emoji smilies" draggable="false" src="//twemoji.maxcdn.com/2/svg/1f197.svg">
<img class="smilies" src="phpBB/images/smilies/icon_e_surprised.gif" width="15" height="17" alt=":o" title="First half of :ok:"> <img class="smilies" src="phpBB/images/smilies/icon_lol.gif" width="15" height="17" alt="k:" title="Second half of :ok:"> <img alt=":ok:" class="emoji smilies" draggable="false" src="//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f197.svg">

View File

@@ -1 +1 @@
<img alt=":man_judge:" class="emoji smilies" draggable="false" src="//twemoji.maxcdn.com/2/svg/1f468-200d-2696-fe0f.svg"> <img alt="👨‍⚖️" class="emoji smilies" draggable="false" src="//twemoji.maxcdn.com/2/svg/1f468-200d-2696-fe0f.svg">
<img alt=":man_judge:" class="emoji smilies" draggable="false" src="//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f468-200d-2696-fe0f.svg"> <img alt="👨‍⚖️" class="emoji smilies" draggable="false" src="//cdn.jsdelivr.net/gh/twitter/twemoji@latest/assets/svg/1f468-200d-2696-fe0f.svg">