diff options
Diffstat (limited to 'inc/auth.php')
-rw-r--r-- | inc/auth.php | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/inc/auth.php b/inc/auth.php index db53a4c19..63f84e141 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -380,13 +380,20 @@ function auth_aclcheck($id,$user,$groups){ * @see rawurldecode() */ function auth_nameencode($name,$skip_group=false){ - if($skip_group && $name{0} =='@'){ - return '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', - "'%'.dechex(ord('\\1'))",substr($name,1)); - }else{ - return preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', - "'%'.dechex(ord('\\1'))",$name); + global $cache_authname; + $cache =& $cache_authname; + + if (!isset($cache[$name][$skip_group])) { + if($skip_group && $name{0} =='@'){ + $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', + "'%'.dechex(ord('\\1'))",substr($name,1)); + }else{ + $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', + "'%'.dechex(ord('\\1'))",$name); + } } + + return $cache[$name][$skip_group]; } /** |