aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2011-04-22 11:16:32 +0200
committerAndreas Fischer <bantu@phpbb.com>2011-04-22 11:16:32 +0200
commitbc48fe17048092d6b8d8bfc386dc3d446d5575ea (patch)
treeed97ddc58a767e4f768a282cfcef558844df1ec0
parent0a8893498dbbb0cb7979fd5b35a3f424981e5d48 (diff)
parentf49656986cc1898e85d6d7e4cd859ec8e980dc4a (diff)
downloadforums-bc48fe17048092d6b8d8bfc386dc3d446d5575ea.tar
forums-bc48fe17048092d6b8d8bfc386dc3d446d5575ea.tar.gz
forums-bc48fe17048092d6b8d8bfc386dc3d446d5575ea.tar.bz2
forums-bc48fe17048092d6b8d8bfc386dc3d446d5575ea.tar.xz
forums-bc48fe17048092d6b8d8bfc386dc3d446d5575ea.zip
Merge branch 'ticket/p/10141' into develop-olympus
* ticket/p/10141: [ticket/10141] Save a hash lookup when value is not in cache. [ticket/10141] Split double-assignment into conditional and unconditional part. [ticket/10141] Use a cache in $auth->_fill_acl() for better performance.
-rw-r--r--phpBB/includes/auth.php12
1 files changed, 11 insertions, 1 deletions
diff --git a/phpBB/includes/auth.php b/phpBB/includes/auth.php
index 02819f9e78..8324cb4977 100644
--- a/phpBB/includes/auth.php
+++ b/phpBB/includes/auth.php
@@ -109,6 +109,7 @@ class auth
*/
function _fill_acl($user_permissions)
{
+ $seq_cache = array();
$this->acl = array();
$user_permissions = explode("\n", $user_permissions);
@@ -125,8 +126,17 @@ class auth
while ($subseq = substr($seq, $i, 6))
{
+ if (isset($seq_cache[$subseq]))
+ {
+ $converted = $seq_cache[$subseq];
+ }
+ else
+ {
+ $converted = $seq_cache[$subseq] = str_pad(base_convert($subseq, 36, 2), 31, 0, STR_PAD_LEFT);
+ }
+
// We put the original bitstring into the acl array
- $this->acl[$f] .= str_pad(base_convert($subseq, 36, 2), 31, 0, STR_PAD_LEFT);
+ $this->acl[$f] .= $converted;
$i += 6;
}
}