Ejemplo n.º 1
0
 /**
  * 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");
     }
 }
Ejemplo n.º 2
0
 /**
  * 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");
     }
 }