diff options
-rw-r--r-- | inc/auth.php | 19 | ||||
-rw-r--r-- | inc/init.php | 7 |
2 files changed, 17 insertions, 9 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]; } /** diff --git a/inc/init.php b/inc/init.php index 2ba16c2c3..1b8f99825 100644 --- a/inc/init.php +++ b/inc/init.php @@ -24,9 +24,10 @@ else { error_reporting(DOKU_E_LEVEL); } // init memory caches - global $cache_revinfo; $cache_revinfo = array(); - global $cache_wikifn; $cache_wikifn = array(); - global $cache_wikifn; $cache_cleanid = array(); + global $cache_revinfo; $cache_revinfo = array(); + global $cache_wikifn; $cache_wikifn = array(); + global $cache_cleanid; $cache_cleanid = array(); + global $cache_authname; $cache_authname = array(); //prepare config array() global $conf; |