X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_plugin.inc;h=ba5c715c72d8504c21f5a1e96a026576399a1f80;hb=f04b7b95f6468a806353f05cdd3faf97dd744d5c;hp=bb5d80135f421177af7715334feaae413062f08e;hpb=ab2391c806f2ad3813d3966b689520ff98fa321c;p=gosa.git diff --git a/gosa-core/include/class_plugin.inc b/gosa-core/include/class_plugin.inc index bb5d80135..ba5c715c7 100644 --- a/gosa-core/include/class_plugin.inc +++ b/gosa-core/include/class_plugin.inc @@ -145,6 +145,9 @@ class plugin */ function plugin (&$config, $dn= NULL, $object= NULL) { + + $this->initTime = microtime(TRUE); + /* Configuration is fine, allways */ $this->config= &$config; $this->dn= $dn; @@ -161,6 +164,10 @@ class plugin } } + // Create statistic table entry + stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'open', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); + /* Handle new accounts, don't read information from LDAP */ if ($dn == "new"){ return; @@ -282,6 +289,10 @@ class plugin session::set('LOCK_VARS_USED_REQUEST',array()); pathNavigator::registerPlugin($this); + + // Create statistic table entry + stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'view', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); } /*! \brief Removes object from parent @@ -319,6 +330,13 @@ class plugin /* $ldap->modify($this->attrs); */ + if($this->initially_was_account){ + $this->handle_pre_events('remove'); + + // Create statistic table entry + stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'remove', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); + } } @@ -398,6 +416,45 @@ class plugin /* Handle tagging */ $this->tag_attrs($this->attrs); + + if($this->is_new){ + $this->handle_pre_events('add'); + + // Create statistic table entry + stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'create', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); + }else{ + $this->handle_pre_events('modify'); + + // Create statistic table entry + stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'modify', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); + } + } + + + /*! \brief Forward command execution requests + * to the hook execution method. + */ + function handle_pre_events($mode, $addAttrs= array()) + { + if(!in_array($mode, array('add','remove','modify'))){ + trigger_error(sprintf("Invalid pre event type given %s! Valid types are [add,modify,remove].", $mode)); + return; + } + switch ($mode){ + case "add": + plugin::callHook($this,"PRECREATE", $addAttrs); + break; + + case "modify": + plugin::callHook($this,"PREMODIFY", $addAttrs); + break; + + case "remove": + plugin::callHook($this,"PREREMOVE", $addAttrs); + break; + } } @@ -945,7 +1002,10 @@ class plugin return(TRUE); } - + // Create statistic table entry + stats::log('plugin', $class = get_class($this), $category = array($this->acl_category), $action = 'move', + $amount = 1, $duration = (microtime(TRUE) - $this->initTime)); + /* Try to move the entry instead of copy & delete */ if(TRUE){