added in class cache to Tinebase_Group_Abstract/Sql
[tine20] / tine20 / Tinebase / Group / Abstract.php
index 0fb397a..d5edffd 100644 (file)
@@ -5,7 +5,7 @@
  * @package     Tinebase
  * @subpackage  Group
  * @license     http://www.gnu.org/licenses/agpl.html AGPL3
- * @copyright   Copyright (c) 2008 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @copyright   Copyright (c) 2008-2014 Metaways Infosystems GmbH (http://www.metaways.de)
  * @author      Lars Kneschke <l.kneschke@metaways.de>
  * 
  * @todo        add search count function
 abstract class Tinebase_Group_Abstract
 {
     /**
+     * in class cache 
+     * 
+     * @var array
+     */
+    protected $_classCache = array ();
+    
+    /**
      * return all groups an account is member of
      *
      * @param mixed $_accountId the account as integer or Tinebase_Model_User
@@ -64,6 +71,23 @@ abstract class Tinebase_Group_Abstract
     abstract public function removeGroupMember($_groupId, $_accountId);
     
     /**
+     * reset class cache
+     * 
+     * @param string $key
+     * @return Tinebase_Group_Sql
+     */
+    public function resetClassCache($key = null)
+    {
+        foreach ($this->_classCache as $cacheKey => $cacheValue) {
+            if ($key === null || $key === $cacheKey) {
+                $this->_classCache[$cacheKey] = array();
+            }
+        }
+        
+        return $this;
+    }
+    
+    /**
      * create a new group
      *
      * @param string $_groupName