diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index 21fbeff610..0e6814d394 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -105,6 +105,7 @@
[Change] Performance increase for format_date() (Bug #37575 - Patch by BartVB)
[Change] Changed prosilver date separator from 'on' to '»'
[Change] Performance increase for get_username_string() (Bug #37545 - Patch by BartVB)
+ [Change] Slight performance increase for common parameter calls to append_sid() (Bug #37555 - Patch by BartVB)
[Feature] Added 'AGO' setting to relative date strings. For example: posted 14 minutes ago. (Patch by BartVB)
diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php
index f92b4f91ab..3ed71add61 100644
--- a/phpBB/includes/functions.php
+++ b/phpBB/includes/functions.php
@@ -1831,6 +1831,33 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
}
}
+ $params_is_array = is_array($params);
+
+ // Get anchor
+ $anchor = '';
+ if (strpos($url, '#') !== false)
+ {
+ list($url, $anchor) = explode('#', $url, 2);
+ $anchor = '#' . $anchor;
+ }
+ else if (!$params_is_array && strpos($params, '#') !== false)
+ {
+ list($params, $anchor) = explode('#', $params, 2);
+ $anchor = '#' . $anchor;
+ }
+
+ // Handle really simple cases quickly
+ if ($_SID == '' && $session_id === false && empty($_EXTRA_URL) && !$params_is_array && !$anchor)
+ {
+ if ($params === false)
+ {
+ return $url;
+ }
+
+ $url_delim = (strpos($url, '?') === false) ? '?' : (($is_amp) ? '&' : '&');
+ return $url . ($params !== false ? $url_delim. $params : '');
+ }
+
// Assign sid if session id is not specified
if ($session_id === false)
{
@@ -1843,18 +1870,6 @@ function append_sid($url, $params = false, $is_amp = true, $session_id = false)
// Appending custom url parameter?
$append_url = (!empty($_EXTRA_URL)) ? implode($amp_delim, $_EXTRA_URL) : '';
- $anchor = '';
- if (strpos($url, '#') !== false)
- {
- list($url, $anchor) = explode('#', $url, 2);
- $anchor = '#' . $anchor;
- }
- else if (!is_array($params) && strpos($params, '#') !== false)
- {
- list($params, $anchor) = explode('#', $params, 2);
- $anchor = '#' . $anchor;
- }
-
// Use the short variant if possible ;)
if ($params === false)
{