X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_userinfo.inc;h=097c7ccdc90f2030cdd4cbc0d35b5e28ba0ff126;hb=cf52f2875e8d24c2985898e38bfe03acf8900e44;hp=9b68abc5421fd6b61015946b61cf904162f6cd18;hpb=2d9801739f47b1985c6c8f93d8c876a32ed2833b;p=gosa.git diff --git a/include/class_userinfo.inc b/include/class_userinfo.inc index 9b68abc54..097c7ccdc 100644 --- a/include/class_userinfo.inc +++ b/include/class_userinfo.inc @@ -67,14 +67,22 @@ class userinfo /* Initialize ACL_CACHE */ $_SESSION['ACL_CACHE']= array(); + $this->reset_acl_cache(); } + public function reset_acl_cache() + { + /* Initialize ACL_CACHE */ + $_SESSION['ACL_CACHE']= array(); + } + function loadACL() { $this->ACL= array(); $this->groups= array(); $this->result_cache =array(); + $this->reset_acl_cache(); $ldap= $this->config->get_ldap_link(); $ldap->cd($this->config->current['BASE']); @@ -183,7 +191,14 @@ class userinfo { /* Push cache answer? */ if (isset($_SESSION['ACL_CACHE']["$dn+$object+$attribute"])){ - return ($_SESSION['ACL_CACHE']["$dn+$object+$attribute"]); + + /* Remove write if needed */ + if ($skip_write){ + $ret = preg_replace('/w/', '', $_SESSION['ACL_CACHE']["$dn+$object+$attribute"]); + }else{ + $ret = $_SESSION['ACL_CACHE']["$dn+$object+$attribute"]; + } + return($ret); } $acl= array("r" => "", "w" => "", "c" => "", "d" => "", "m" => "", "a" => ""); @@ -258,12 +273,12 @@ class userinfo } } + $_SESSION['ACL_CACHE']["$dn+$object+$attribute"]= $ret; + /* Remove write if needed */ if ($skip_write){ $ret= preg_replace('/w/', '', $ret); } - - $_SESSION['ACL_CACHE']["$dn+$object+$attribute"]= $ret; return ($ret); } @@ -272,6 +287,11 @@ class userinfo accessible department) */ function get_module_departments($module) { + /* Use cached results if possilbe */ + if(isset($_SESSION['ACL_CACHE']['MODULE_DEPARTMENTS'][serialize($module)])){ + return($_SESSION['ACL_CACHE']['MODULE_DEPARTMENTS'][serialize($module)]); + } + global $plist; $objects= array(); @@ -364,6 +384,7 @@ class userinfo } } + $_SESSION['ACL_CACHE']['MODULE_DEPARTMENTS'][serialize($module)] = $deps; return ($deps); }