Ejemplo n.º 1
0
 /**
  * Cadastra uma regra de negócio no banco de dados do Snep.
  * 
  * @param PBX_Rule $rule
  */
 public static function register($rule)
 {
     $srcs = "";
     foreach ($rule->getSrcList() as $src) {
         $srcs .= "," . trim($src['type'] . ":" . $src['value'], ':');
     }
     $srcs = trim($srcs, ',');
     $dsts = "";
     foreach ($rule->getDstList() as $dst) {
         $dsts .= "," . trim($dst['type'] . ":" . $dst['value'], ':');
     }
     $dsts = trim($dsts, ',');
     $validade = implode(",", $rule->getValidTimeList());
     $diasDaSemana = implode(",", $rule->getValidWeekDays());
     $insert_data = array("prio" => $rule->getPriority(), "desc" => $rule->getDesc(), "origem" => $srcs, "destino" => $dsts, "validade" => $validade, "diasDaSemana" => $diasDaSemana, "record" => $rule->isRecording());
     $db = Snep_Db::getInstance();
     $db->beginTransaction();
     try {
         $db->insert("regras_negocio", $insert_data);
         $rule->setId((int) $db->lastInsertId('regras_negocio_id'));
         $action_prio = 0;
         foreach ($rule->getAcoes() as $acao) {
             $action_insert_data = array("regra_id" => $rule->getId(), "prio" => $action_prio, "action" => get_class($acao));
             $db->insert("regras_negocio_actions", $action_insert_data);
             foreach ($acao->getConfigArray() as $chave => $valor) {
                 $action_config_data = array("regra_id" => $rule->getId(), "prio" => $action_prio, "key" => $chave, "value" => $valor);
                 $db->insert("regras_negocio_actions_config", $action_config_data);
             }
             $action_prio++;
         }
         $db->commit();
     } catch (Exception $ex) {
         $db->rollBack();
         throw $ex;
     }
 }