/** * 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; } }