add authname memory cache

actions which concern multiple pages (e.g. search, backlinks, recents)
end up repeatedly encoding the current user's name and groups. This
change caches the results of the encoding allowing them to be reused.

darcs-hash:20060923161206-9b6ab-a3ec8f1c2ec284d84b9ff85cba1e56165b2967a7.gz
This commit is contained in:
chris 2006-09-23 18:12:06 +02:00
parent 720307d9ce
commit a424cd8e52
2 changed files with 17 additions and 9 deletions

View File

@ -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];
}
/**

View File

@ -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;