diff options
author | Andreas Fischer <bantu@phpbb.com> | 2011-04-22 11:16:32 +0200 |
---|---|---|
committer | Andreas Fischer <bantu@phpbb.com> | 2011-04-22 11:16:32 +0200 |
commit | bc48fe17048092d6b8d8bfc386dc3d446d5575ea (patch) | |
tree | ed97ddc58a767e4f768a282cfcef558844df1ec0 | |
parent | 0a8893498dbbb0cb7979fd5b35a3f424981e5d48 (diff) | |
parent | f49656986cc1898e85d6d7e4cd859ec8e980dc4a (diff) | |
download | forums-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.php | 12 |
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; } } |