currentDirLength) === $this->currentDir)) return true; else return false; } /** * Aplica as diretivas de segurança do módulo * @return void * @access public */ public final function WorkflowWatcher($object) { $this->protectedObject = $object; $this->currentDir = dirname(__FILE__); $this->currentDir = substr($this->currentDir, 0, -13); $this->currentDirLength = strlen($this->currentDir); } /** * Ativa a verificação de acesso ao objeto protegido. Por padrão a segurança fica desabilitada pois ela só é interessante antes da execução do código dos processos e, sendo assim, só é habilitada nestes casos. * @return void * @access public */ public final static function workflowWatcherEnableSecurity() { self::$enabledSecurity = true; } /** * Implementação do método mágico "__call" que intercepta as chamadas ao objeto protegido * @param string $methodName O nome do método que está sendo requisitado * @param array $arguments Os parâmetros passados para o método * @return mixed O resultado da chamada do método ou false se o código que o método não tiver permissão para tal * @access public */ public final function __call($methodName, $arguments) { if (!$this->workflowWatcherCheckSecurity()) return false; $method = new ReflectionMethod($this->protectedObject, $methodName); return $method->invokeArgs($this->protectedObject, $arguments); } /** * Implementação do método mágico "__set" que intercepta definições de atributos do objeto protegido * @param string $name O nome do atributo ao qual está sendo atribuído um valor * @param mixed $value O valor que será atribuído ao atributo do objeto * @return void * @access public */ public final function __set($name, $value) { if (!$this->workflowWatcherCheckSecurity(1)) return false; $this->protectedObject->{$name} = $value; } /** * Implementação do método mágico "__get" que intercepta leitura de atributos do objeto potegido * @param string $name O nome do atributo que se está tentando acessar * @return mixed O valor do atributo que se está acessando. Ou false, caso o acesso ao atributo seja negado * @access public */ public final function __get($name) { if (!$this->workflowWatcherCheckSecurity(1)) return false; return $this->protectedObject->{$name}; } } ?>