/** * Executa a análise das regras para encontrar a que melhor se enquadra na * requisição. */ public function parse() { $execution_time = date("H:i"); $this->foundRule = null; $rules = PBX_Rules::getAll(); if (count($rules) > 0) { foreach ($rules as $rule) { $rule->setRequest($this->request); if ($rule->isActive() && $rule->isValidDst($this->request->destino) && $rule->isValidSrc($this->request->origem) && $rule->isValidTime($execution_time)) { $this->foundRule = $rule; break; // paramos na primeira regra totalmente válida } } if (!is_object($this->foundRule)) { // Caso nenhuma regra tenha sido encontrada throw new PBX_Exception_NotFound("No rule found for this request"); } } else { throw new PBX_Exception_NotFound("No rules in database"); } }
/** * Sobreescreve PBX_Dialplan::parse() fazendo uma análise mais detalhada de * cada regra de negócio. */ public function parse() { if (!isset($this->execution_time)) { $this->execution_time = date("H:i"); } $this->foundRule = null; $this->matches = array(); $rules = PBX_Rules::getAll(); if (count($rules) > 0) { foreach ($rules as $rule) { $rule->setRequest($this->request); if ($rule->isValidDst($this->request->destino) && $rule->isValidSrc($this->request->origem) && $rule->isActive()) { // Armazenando a regra válida (parcialmente) $this->matches[] = $rule; // Caso seja a primeira regra válida (e com tempo válido), ela é a que queremos executar if (is_null($this->foundRule) && $rule->isValidTime($this->execution_time)) { $this->foundRule = $rule; } } } if (!is_object($this->foundRule)) { // Caso nenhuma regra tenha sido encontrada throw new PBX_Exception_NotFound("No rule found for this request"); } } else { throw new PBX_Exception_NotFound("No rules in database"); } }