<?php
function GetDac($dbcon, $codDac, $disableb = "", $incTodos = 0, $soAtivo = 1, $incCampanha = 0, $matricula = 0, $useNull = 0, $valueUseNull = '', $useSelect = 1, $permTodos = 0) {
/*
* Carrega lista de dacs disponivel
* para ser inserdo entre as tags < select > < / select >
*/
global $sZlistaDacs;
$isAdm = (IsAdmin() & & !$matricula);
if ($isAdm) {
$status = $soAtivo ? " and status = 'A' " : "";
} else {
$status = $soAtivo ? " and d.status = 'A' " : "";
}
$idUser = !$matricula ? GetIdUser() : GetIdUserFromMatricula($dbcon, $matricula);
$matricula = !$matricula ? GetMatricula() : $matricula;
if (!$codDac & & !IsPostBack())
$codDac = GetDacPadraoAgente($dbcon);
if ($isAdm) {
$query = "select distinct id, nome as nome, 'Receptivo' as tipo from pbx_dacs d where 1=1 " . ($soAtivo ? " and status = 'A' " : "") . " order by 2";
} else {
$query = "select distinct d.id, d.nome, 'Receptivo' as tipo, 'false' as padrao
from pbx_usuarios a, pbx_grupo_usuario b, pbx_fila_grupos c, pbx_dacs d
where b.user_id = a.id
and c.gp_id = b.gp_id
and d.id = c.id
and lower(a.matricula) = lower('$matricula') " . ($soAtivo ? " and d.status = 'A' " : "") . " order by 1, 2 ";
// $query = " select id, nome, 'Receptivo' as tipo from pbx_dacs d, pbx_dac_usuario du where du.id_dac = d.id and id_usuario = $idUser " . ($soAtivo ? " and status = 'A' " : "");
}
$sZ = isset($sZlistaDacs) ? "style=\"$sZlistaDacs\"" : '';
$result = pg_query($dbcon, $query);
$prmTodos = '';
$x = 0;
if ($permTodos) {
$todos = pg_fetch_all($result);
foreach ($todos as $dacs) {
if ($x != 0) {
$prmTodos .= "|";
}
$prmTodos .= "{$dacs['id']}";
$x = 1;
}
}
$codSel = $codDac;
$dacs = $useSelect ? "< select name = \"listaDacs\" id = \"listaDacs\" size = \"1\" $ sZ $ disableb > " : '';
if ($incTodos & & !$useNull) {
$sel = $codSel == '0' ? "selected" : "";
$value = $prmTodos ? $prmTodos : '0';
$dacs .= "< option value = \"$value\" $ sel > Todos< / option > ";
}
if ($useNull) {
$dacs .= "< option value = \"$valueUseNull\" selected > -------------------< / option > ";
}
$cont = 0;
$i = 0;
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$dacs .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
$cont++;
}
if ((!$cont || !$i) & & ($codSel != '0') & & (!$useNull) & & (!$incTodos))
$dacs .= "< option value = \"\" selected > -------------------< / option > ";
$dacs .= $useSelect ? "< / select > " : '';
return $dacs;
}
function GetDacs($dbcon, $codDac, $disableb = "", $incTodos = 1, $soAtivo = 1) {
$query = "select distinct id, nome as nome from pbx_dacs d where 1=1 " . ($soAtivo ? " and status = 'A' " : "") . " order by 2";
$result = pg_query($dbcon, $query);
$codSel = $codDac;
$dacs = "< select name = \"listaDacs\" id = \"listaDacs\" size = \"1\" $ disableb > ";
$sel = $codSel == '0' ? "selected" : "";
$dacs .= "< option value = \"0\" $ sel > " . ($incTodos ? "TODOS" : '------------') . "< / option > ";
while ($dados = pg_fetch_row($result)) {
$sel = "";
if ($codSel == $dados[0]) {
$sel = "selected";
}
$dacs .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$dacs .= "< / select > ";
return $dacs;
}
function GetEstrategiaDistribuicao($dbCon, $codEst) {
$query = 'select est_id, est_descricao from pbx_estrategia_distribuicao';
$result = pg_query($dbCon, $query);
$codSel = $codEst;
$reg = "< select name = \"cmp_estrategia_distribuicao\" id = \"cmp_estrategia_distribuicao\" size = \"1\" style = \"width:500px;\" > ";
$reg .= "< option value = \"0\" > --------------< / option > ";
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$reg .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$reg .= "< / select > ";
return $reg;
}
function GetCombo($dbCon, $query, $codSel, $incTodos = true) {
$result = pg_query($dbCon, $query);
$reg = "< select name = \"listaEstrategia\" id = \"listaEstrategia\" size = \"1\" > ";
if ($incTodos)
$reg .= "< option value = \"0\" > --------------< / option > ";
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$reg .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$reg .= "< / select > ";
return $reg;
}
function GetDacAgente($dbcon, $idUser, $codDac, $disableb = "", $getDac = 0) {
/*
* Carrega lista de dacs por usuarios
*
*/
$query = "select d.id, d.nome
from pbx_usuarios a, pbx_grupo_usuario b, pbx_fila_grupos c, pbx_dacs d
where b.user_id = a.id
and c.gp_id = b.gp_id
and d.id = c.id
and a.id = '$idUser' ";
/* $query = "select d.id, d.nome
from pbx_dac_usuario u, pbx_dacs d
where d.id = u.id_dac
and u.id_usuario = $idUser";
*
*/
$result = pg_query($dbcon, $query);
$codSel = $codDac;
$dacs = "< select name = \"listaDacAgente\" style = \"width:200px;\" id = \"listaDacAgente\" size = \"6\" $ disableb > ";
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$dacs .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
if ($getDac)
$_SESSION["SSdacTemp"][] = $dados[0];
}
$dacs .= "< / select > ";
return $dacs;
}
function GetIdDacPadrao($dbcon, $idUser) {
$isAdm = (strtolower(GetLoginFromId($dbcon, $idUser)) == 'admin') & & IsAdmin();
if ($isAdm) {
$query = "select d.id, d.nome
from pbx_dacs d
where d.status = 'A' limit 1";
} else {
$query = "select dac_padrao from pbx_usuarios where id = $idUser";
}
$result = pg_query($dbcon, $query);
$ret = 0;
if (pg_num_rows($result) > 0) {
$row = pg_fetch_row($result);
$ret = $row[0];
}
return $ret;
}
function SetIdDacPadrao($dbcon, $idUser) {
$query = "SELECT DISTINCT id_dac,nome_dac
FROM pbx_usuarios a
INNER JOIN pbx_usuarios_dacs b ON a.id = b.id_usuario
INNER JOIN pbx_dacs c ON id_dac = c.id
WHERE a.id = $idUser
AND c.status = 'A'
ORDER BY 1
LIMIT 1";
$result = pg_query($dbcon, $query);
$row = pg_fetch_assoc($result);
return $row['id_dac'] ? $row['id_dac'] : 0;
}
function GetLoginFromId($dbcon, $idUser) {
$query = "select apelido from pbx_usuarios where id = $idUser";
$result = pg_query($dbcon, $query);
$ret = 0;
if ($result & & pg_num_rows($result)) {
$row = pg_fetch_row($result);
$ret = $row[0];
}
return $ret;
}
function GetNomeDacPadrao($dbcon, $idUser) {
$isAdm = !$idUser & & IsAdmin();
if ($isAdm) {
$query = "select d.id, d.nome
from pbx_dacs d
where d.status = 'A' limit 1";
} else {
$query = "select b.id, b.nome from pbx_usuarios a, pbx_dacs b where b.id = a.dac_padrao and a.id = '$idUser'
union
select b.cmp_id as id, b.cmp_descricao as nome from pbx_usuarios a, pbx_campanha b where b.cmp_id = a.dac_padrao and a.id = '$idUser' ";
}
$result = pg_query($dbcon, $query);
$ret = "";
if (pg_num_rows($result) > 0) {
$row = pg_fetch_row($result);
$ret = $row[1];
}
return $ret;
}
function GetDacDesc($dbcon, $id) {
$idDac = (!isset($id) || empty(trim($id))) ? '0' : $id;
$query = "select d.nome from pbx_dacs d where id = $idDac";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$ret = $row[0];
return $ret;
}
function GetPausa($dbcon, $mat, $verPausa = false) {
/*
* Quando $verPausa <EFBFBD> definido como true indica que apenas queremos
* nos certificar se o agente entrou em pausa. Quando a pausa <EFBFBD> ativa-
* da pelo supervisor precisamos alimentar os parametro da sessao cor-
* rente entao $verPausa <EFBFBD> definido como false.
*/
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$mat' and upper(status) = 'PAUSA'";
$result = pg_query($dbcon, $query);
$row = @pg_fetch_row($result);
$ret = $row[0];
if ($verPausa & & ($ret == 0))
return false;
else if ($verPausa)
return true;
if ($ret > 0) {
$query = "select id, id_motivo_pausa from pbx_eventos_agentes a
where matricula = '$mat'
and entrada_pausa is not null
and id = (select max(id) from pbx_eventos_agentes where matricula = a.matricula)";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$_SESSION[AGT_ID_PAUSA] = $row[0];
$_SESSION[AGT_EM_PAUSA] = 1;
$_SESSION[AGT_PAUSA_MOTIVO] = $row[1];
return true;
}
return false;
}
function GetPausaDescricao($dbcon, $codigo) {
$query = "select motivo from pbx_motivos_pausas where id = '$codigo'";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
return $row[0];
}
function GetDacCod($dbcon, $dac) {
$query = "select d.id from pbx_dacs d where upper(d.nome) = upper('$dac')";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$ret = $row[0];
return $ret;
}
function GetDacPadraoAgente($dbcon, $getId = true) {
$idUser = GetIdUser();
if (IsAdmin())
$query = "select * from pbx_dacs a where a.status = 'A' and exists(select '' from pbx_fila_grupos where id = a.id) order by 1 limit 1";
else
$query = "select dac_padrao as id_dac, b.nome from pbx_usuarios a, pbx_dacs b where b.id = a.dac_padrao and a.id = $idUser ";
//echo $query;
$result = pg_query($dbcon, $query);
$row = @pg_fetch_row($result);
$ret = $getId ? $row[0] : $row[1];
return $ret;
}
function GetSiteDesc($dbcon, $id) {
$query = "select d.descricao from pbx_sites d where id = $id";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$ret = $row[0];
return $ret;
}
function GetMotivo($dbcon, $codMotivo, $disableb = "", $incTodos = 0, $incTpPausa = 0) {
global $sZlistaMotivo;
/*
* Carrega lista de pausas disponiveis por dac.
*/
//$idMotivoLogin = isset($_SESSION["motivoLogin"]) ? $_SESSION["motivoLogin"] : GetMotivoLogin($dbcon);
$idMotivoLogin = GetMotivoLogin($dbcon);
/*
* A pausa ausente <EFBFBD> colocada automaticamente pelo sistema, e nunca devera ser selecionada pelo usuario.
*/
$motAusente = $disableb ? '' : " and upper(a.motivo) not in('AUSENTE', 'RECUSADA') ";
/*
* Se o usuario for admin libera todos os motivos.
*/
$idUsuario = IsAdmin() ? ' b.user_id ' : GetIdUser();
/*
* Se o agente estiver logado a variavel $_SESSION[AGT_PAUSA_MOTIVO] configurada.indica que esta em pausa.
* so mostara a pausa login se o agente j<EFBFBD> estiver em pausa, pois esta pausa nunca deve ser setada manualmente.
*/
$mot = isset($_SESSION[AGT_PAUSA_MOTIVO]) & & ($_SESSION[AGT_PAUSA_MOTIVO] != $idMotivoLogin) ? " where id < > $idMotivoLogin" : "where 1=1 ";
/*
* a pausa de login <EFBFBD> adicionada na verifica<EFBFBD> <EFBFBD> o pois n<EFBFBD> o pode ser atribuida manualmente para um grupo.
*/
$query = "select a.id, upper(a.motivo) as motivo, a.produtiva from pbx_motivos_pausas a $mot $motAusente and a.flag = 1 " .
(UsePausaGrupo() ? "and id in(
select $idMotivoLogin union
select c.id from pbx_grupo a, pbx_grupo_usuario b, pbx_pausa_grupo_usuario c
where b.gp_id = a.gp_id
and c.gp_id = b.gp_id
and b.user_id = $idUsuario
)" : "") . " order by a.motivo";
$result = pg_query($dbcon, $query);
$sel = "";
$codSel = $codMotivo;
$sZ = isset($sZlistaMotivo) ? $sZlistaMotivo : "width:220px; height:26px";
$motivo = "< select name = \"listaMotivo\" id = \"listaMotivo\" style = \"$sZ\" size = \"1\" $ disableb > ";
if ($incTodos) {
$sel = $codSel ? "" : "selected";
$motivo .= "< option value = \"0\" $ sel > ------------< / option > ";
}
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$codPausa = $dados[0];
$tpPausa = $dados[2];
$motivo .= sprintf("< option value = \"%s\" $ sel > $dados[1]< / option > ", ($incTpPausa ? ("$codPausa|$tpPausa") : $codPausa));
}
$motivo .= "< / select > ";
return $motivo;
}
function SetPbx($db, $idUser) {
//
// Esta funcao retorna true se o usuario tiver algum menu ativado
// para pbx
$query = "select count(*)
from pbx_grupo_usuario a, pbx_grupo_funcoes b, pbx_funcoes_menu_pbx c
where b.gp_id = a.gp_id
and c.fun_id = b.fun_id
and a.user_id = $idUser";
$result = pg_query($db, $query);
if (!$result)
$_SESSION["SSacessoPbx"] = 0;
$row = pg_fetch_row($result);
$_SESSION["SSacessoPbx"] = $row[0];
}
function SetCmdAmi($cmd) {
$_SESSION[SS_EXECUTA_AMI] = $cmd;
}
function AgenteAtendeManual() {
return $_SESSION[AGT_TP_ATEND] == AGT_MODU_MANUAL;
}
function GetChannel() {
return GetRamalMonitorar(CANAL_MONITOR_AGENTE);
}
function GetChannelTransf() {
return $_SESSION[AGT_CHANNEL_TRANSF];
}
function GetModoAtende() {
return $_SESSION[SS_MODO_ATENDIMENTO_COD];
}
function GetDestinoIntercalar() {
return $_SESSION[SS_DESTINO_INTERCALAR];
}
function GetMatricula() {
return $_SESSION["SSmatriculaUser"];
}
function GetDacAtende() {
return $_SESSION[AGT_DAC_CONECT_DESC];
}
function GetNumDiscTransf() {
return $_SESSION[AGT_NUM_DISC];
}
function IsAgente() {
return $_SESSION["SSagente"];
}
function GetChannelTrConsulta() {
return $_SESSION[AGT_CHANNEL_TRCONSULTA];
}
function GetChannelAgente() {
return $_SESSION[SS_AGT_CHANNEL_AGENTE];
}
function __GetContextoRamal() {
return !$_SESSION[SS_AGT_CONTEXTO_RAMAL] ? 'padrao' : $_SESSION[SS_AGT_CONTEXTO_RAMAL];
}
function GetCmdAmi() {
return !$_SESSION[SS_EXECUTA_AMI] ? array() : $_SESSION[SS_EXECUTA_AMI];
}
function GetCodigoParam($param = null) {
if ($param) {
$_SESSION['SSCodigoParam'] = $param;
}
return $_SESSION['SSCodigoParam'] ? $_SESSION['SSCodigoParam'] : null;
}
function GetUrlAterisk($acao, $dacLogoff = '', $matLogoff = '', $urlInfo = '', $socket = null, $socketSuporte = 0) {
//$url = "http://192.168.80.13:9876/";
//$url = "http://172.16.51.14:9876/";
/*
* Quando $dacLogoff <EFBFBD> passado como array o mesmo contem todos os parametros.
*
*/
if (is_array($dacLogoff)) {
$params = $dacLogoff;
} else {
$dac = !empty($dacLogoff) ? $dacLogoff : GetDacAtende();
}
$url = !empty($urlInfo) ? VerificaCharFinal($urlInfo) : VerificaCharFinal($_SESSION[SS_PRM_URL_ASTERISK]);
$result = "";
$channel = GetChannel();
$channelTransf = GetChannelTransf();
$modoAtende = GetModoAtende();
$ramal = isset($GLOBALS["ramalOperacao"]) ? $GLOBALS["ramalOperacao"] : GetRamalMonitorar(RAMAL_MONITOR_AGENTE);
$matricula = !empty($matLogoff) ? $matLogoff : GetMatricula();
$numDisc = GetNumDiscTransf();
$dac = !empty($dacLogoff) ? $dacLogoff : GetDacAtende();
$rand = rand(0, 99999999999); //.rand(0, 99999999999);
$penalidade = $_SESSION["SSagentePenalidade"];
$ramalIntercalar = GetRamalMonitorar(RAMAL_MONITOR_SUPERVISOR);
$canalIntercalar = GetRamalMonitorar(CANAL_MONITOR_SUPERVISOR);
$rmalDestinoIntercalar = GetDestinoIntercalar();
$channelAgente = ($_SESSION[SS_MODO_ATENDIMENTO_COD] == ATENDIMENTO_MANUAL) ? GetRamalMonitorar(CANAL_MONITOR_AGENTE) : ("Local/$ramal@app-callcenter/n");
$channelTransfConsulta = GetChannelTrConsulta();
$contextoRamal = __GetContextoRamal();
$channelAgenteAborta = GetChannelAgente();
$codigoparam = GetCodigoParam();
$cmdAmi = GetCmdAmi();
switch ($acao) {
case AST_LOGIN_AGENTE: $result = LoginAgenteAmi($socket, $channel, $modoAtende, $ramal, $dac, $matricula, $penalidade);
break;
case AST_LOGOFF_AGENTE: $result = LogoffAgenteAmi($socket, $matricula, $ramal, $dac);
break;
case AST_ADD_FILA: $result = AddFilaAmi($socket, $dac, $matricula);
break;
case AST_REM_FILA: $result = RemFilaAmi($socket, $dac, $matricula, $ramal);
break;
case AST_ADD_PAUSA: $result = AddPausaAmi($socket, $matricula, $ramal);
break;
case AST_REM_PAUSA: $result = RemPausaAmi($socket, $matricula, $ramal);
break;
case AST_DISCAR: $result = DiscarCallAmi($socket, $channelAgente, $matricula, $numDisc, $ramal, $contextoRamal, $codigoparam);
break;
case AST_TRANSFERIR: $result = TransferirAmi($socket, $channelTransf, $numDisc);
break;
case AST_TRANSF_PESQUISA: $result = TransferirPesquisaAmi($socket, $channelTransf, $numDisc, $GLOBALS["PESQUISA_MATRICULA"]);
break;
case AST_INCLUI_AGENTE: $result = IncluiAgenteAmi($socket);
break;
case AST_TESTE_URL: $result = TesteUrlAmi($socket);
break;
case MONITOR_AGENTS: $result = MonitorAgentsAmi($socket);
break;
case AST_INTERCALAR: $result = IntercalarAmi($socket, $canalIntercalar, $ramalIntercalar, $rmalDestinoIntercalar);
break;
case AST_MONITORAR: $result = MonitorarAmi($socket, $params);
break;
case AST_RELOAD_URA: $result = ReloadUraAmi($socket);
break;
case AST_RELOAD_FILA: $result = ReloadFilaAmi($socket);
break;
case AST_DESLIGAR_LIGACAO: $result = DesligarAmi($socket, $channelAgenteAborta);
break;
case AST_DESLIGAR_TODOS: $result = DesligaTodasAmi($socket, $ramalIntercalar);
break;
case AST_PENDULO_ADD_CANAIS: $result = PenduloAddCanaisAmi($socket, $ramal, $matricula, $channelTransf, $numDisc, $channelAgenteAborta, ($modoAtende != ATENDIMENTO_MANUAL));
break;
//Remove musica em espera
case AST_PENDULO_REM_CANAIS: $result = PenduloRemCanaisAmi($socket, $ramal, $matricula, $channelTransf);
break;
case AST_TRCONSULTA_ESPERA: $result = TrConsultaEsperaAmi($socket, $ramal, $matricula, $numDisc, $contextoRamal);
break;
//Transferie a liga<EFBFBD> <EFBFBD> o
case AST_TRCONSULTA_TRANSFERE: $result = TrConsultaTransfereAmi($socket, $channelTransfConsulta, $matricula, $channelAgenteAborta);
break;
//Retorna da consulta sem transferir
case AST_TRCONSULTA_TRANSFERE_ABORTA: $result = TrConsultaTransfereAbortaAmi($socket, $channelAgenteAborta, $matricula);
break;
//case AST_TRCONSULTA_LIBERA_AGENTE: $result = TrConsultaLiberaAgenteAmi($socket, $channelTransf);
// break;
//Inicia uma conferencia
case AST_TRCONSULTA_CONFERENCIA: $result = TrConsultaConferenciaAmi($socket, $channelTransfConsulta, $matricula);
break;
//Inicia o MUTE na parte cliente
case AST_MUTE_CLIENTE: $result = TrMuteClienteAmi($socket, $channelTransf, $matricula);
break;
//Inicia o MUTE na parte atendente
case AST_MUTE_ATENDENTE: $result = TrMuteAtendenteAmi($socket, $ramal, $matricula);
break;
//Remove o Mute
case AST_REM_MUTE: $result = TrRemMuteAmi($socket, $channelTransf, $matricula);
break;
//Seta variavel no canal
case AST_SET_VAR: $result = SetVarAmi($socket, $channelTransf, $ramal, $channelAgenteAborta, $matricula);
break;
case AST_EXEC_AMI: $result = ExecutaAgtAmi($socket, $cmdAmi);
break;
case AST_ALERTA_AGENTE: $result = AlertaAgtAmi($socket, (($modoAtende == ATENDIMENTO_MANUAL) ? $channel : $channelAgente), $ramal);
break;
}
return $url . $result;
}
function GetUrl($acao, $dacLogoff = '', $matLogoff = '', $url = "") {
/*
* Abre o socket
*/
list($sckHost, $sckPort, $sckUser, $sckPass) = GetSckConnect();
$socket = ConectaAmi($sckHost, $sckPort, $sckUser, $sckPass);
/*
* Chama funcoes de socket de acordo com a acao
*/
$get = @GetUrlAterisk($acao, $dacLogoff, $matLogoff, $url, $socket, 1);
$_SESSION['SSanalisaGetUrl'] = $get;
/*
* fechar o socket
*/
DesconectaAmi($socket);
/*
* Retorna true se nao houver a palavra erro no retorno da execu<EFBFBD> <EFBFBD> o
*/
return !stripos($get, "Error");
}
function GetInfoUrl($acao) {
$get = GetUrlAterisk($acao);
$get = file_get_contents($get);
return nl2br($get);
}
function GetMenuAgente($idSub) {
$block = "< img src = \"imgSite/lock12.png\" align = \"absmiddle\" border = 0 > ";
$menuSel = "< img src = \"imgSite/stAprovado.png\" align = \"absmiddle\" border = 0 > ";
//$menuDeSel = "< img src = \"imgSite/desel12.gif\" width = \"12\" height = \"12\" align = \"absmiddle\" border = 0 > ";
$menuDeSel = $_SESSION[AGT_EM_PAUSA] || !$_SESSION[AGT_CONECT] ? "< img src = \"imgSite/lock12.png\" align = \"absmiddle\" border = 0 > " : "";
$menuAgente = "< table width = \"100%\" border = \"0\" cellspacing = \"0\" cellpadding = \"3\" > ";
$menuAgente .= "< tr > ";
$menuAgente .= "< th width = 70 class = \"headColun\" > < a href = \"index.php?idProg=14&idSubProg=" . AGT_PRINCIPAL . " \ " > Principal " . ($idSub == AGT_PRINCIPAL ? $menuSel : $menuDeSel) . "< / a > < / th > ";
$menuAgente .= "< th width = 70 class = \"headColun\" > < a href = \"index.php?idProg=14&idSubProg=" . AGT_SEL_DAC . " \ " > DAC " . ($idSub == AGT_SEL_DAC ? $menuSel : $menuDeSel) . "< / a > < / th > ";
$menuAgente .= "< th width = 70 class = \"headColun\" > < a href = \"index.php?idProg=14&idSubProg=" . AGT_PAUSA . " \ " onClick = \"return SaidaPausaLogoff ( ) \ " > Pausa " . ($idSub == AGT_PAUSA ? $menuSel : $menuDeSel) . "< / a > < / th > ";
// $menuAgente .= "< th width = 70 class = \"headColun\" > < a href = \"index.php?idProg=14&idSubProg=".AGT_CALL."\" > Call ".($idSub == AGT_CALL ? $menuSel : $menuDeSel)."< / a > < / th > ";
$menuAgente .= "< th style = \"background-color:#DDDDDD; color: # FF0000 \ " align = center class = \"headColun\" > " . GetLogin() . "-" . GetMatricula() . "< / th > ";
//$menuAgente .= "< th width = 70 class = \"headColun\" > < a href = \"index.php?idProg=14&idSubProg=".AGT_CALL."\" > Call ".($idSub == AGT_CALL ? $menuSel : $menuDeSel)."< / a > < / th > ";
$menuAgente .= "< / tr > ";
$menuAgente .= "< / table > ";
return $menuAgente;
}
function GetRamalSip($dbcon, $ramalAgente) {
//$query = "select dispositivo from pbx_ramais where nome = '$ramalAgente'";
$query = "select case when( upper(tipo_ramal) = 'KHOMP')then upper(tipo_ramal) || '/r' || nome else dispositivo end as dispositivo from pbx_ramais where nome = '$ramalAgente'";
$result = pg_query($dbcon, $query);
$row = pg_fetch_row($result);
$ret = $row[0];
return $ret;
}
function GetIdUserFromMatricula($dbcon, $matricula) {
$query = "select id from pbx_usuarios where matricula = '$matricula'";
$result = pg_query($dbcon, $query);
$row = @pg_fetch_row($result);
$ret = $row[0];
return $ret;
}
function GetAgenteRamais($dbcon, $ramalAgente) {
$query = "select nome, nome from pbx_ramais";
$result = pg_query($dbcon, $query);
$codSel = $ramalAgente;
$ramais = "< select name = \"agtRamal\" id = \"agtRamal\" size = \"1\" $ disableb > ";
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$ramais .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$ramais .= "< / select > ";
return $ramais;
}
function VerificaRamalLogado($db, & $dac, & $agente) {
$ramal = GetRamalMonitorar(RAMAL_MONITOR_AGENTE);
$query = "select dac, nome, count(*) from pbx_supervisor_agentes where ramal = '$ramal' group by dac, nome";
$result = pg_query($db, $query);
$row = pg_fetch_array($result);
if (pg_num_rows($result)) {
$dac = $row["dac"];
$agente = $row["nome"];
return true;
}
return false;
}
function VerificaModoAtendimento($db, $dac) {
$query = "SELECT modo_atendimento FROM pbx_queues_grupos WHERE id = $dac";
$result = pg_query($db, $query);
$modo = pg_fetch_assoc($result);
return $modo['modo_atendimento'];
}
function VerficaAgenteLogado($db) {
/*
* Funcao modificada para derrubar o agente se j<EFBFBD> logado.
$matricula = GetMatricula();
$query = "delete from pbx_supervisor_agentes where matricula = '$matricula'";
pg_query($db, $query);
return false;
*/
$matricula = GetMatricula();
$query = "select count(*) from pbx_supervisor_agentes where matricula = '$matricula' ";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
$ret = $row[0];
/*
if ($ret) {
$query = "select extract(epoch from (now() - logado))::int , trim(ramal) from pbx_supervisor_agentes where matricula = '$matricula'";
$result = pg_query($db, $query);
$dados = pg_fetch_row($result);
if (empty($dados[1]) || ($dados[0] >= 60)) {
$query = "delete from pbx_supervisor_agentes where matricula = '$matricula'";
$result = pg_query($db, $query);
$ret = false;
}
}
* *
*/
return $ret;
}
function GetRamalAgenteLogado($db) {
$matricula = GetMatricula();
$query = "select ramal from pbx_supervisor_agentes where matricula = '$matricula' ";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
return $row[0];
}
function VerificaRamalSigame($db, $ramal) {
$matricula = GetMatricula();
$query = "select trim(coalesce(sigame_interno, '')) as sigame_interno, trim(coalesce(sigame_externo, '')) as sigame_externo, trim(coalesce(sigame_naoatende, '')) as sigame_naoatende, trim(coalesce(sigame_ocupado, '')) as sigame_ocupado from pbx_ramais where nome = '$ramal'";
$result = pg_query($db, $query);
$row = pg_fetch_array($result);
//return ($row['sigame_interno'] || $row['sigame_externo'] || $row['sigame_naoatende'] || $row['sigame_ocupado']);
return ($row['sigame_interno'] || $row['sigame_externo']);
}
function VerificaClassObrigatoria($db, $dac) {
if (!GetExigeClas($db, $dac))
return false;
$query = "select count(*) as num_dac from pbx_classifica_dacs where id_dac = '$dac'";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
return $row[0] ? false : true;
}
function VerificaAgenteFixo($db) {
$idAgt = GetUsuario($db, GetMatricula());
$result = pg_query($db, "SELECT pa_fixo FROM pbx_usuarios WHERE id = {$idAgt['id']}");
$isAgtFixo = (int) pg_fetch_assoc($result);
/*
* Numero de PAs setado como zero permite ilimitada conex<EFBFBD> es.
*/
if ($isAgtFixo === 0) {
return false;
}
return true;
}
function VerificaMaxAgenteLogado($db) {
//$numAgt = GetModeloPa();
$result = pg_query($db, "select coalesce(prm_max_licenca,0) as prm_max_licenca, coalesce(prm_max_licenca_fixo,0) as prm_max_licenca_fixo FROM pbx_parametros");
$dadosLicenca = pg_fetch_assoc($result);
$numLicencaDinanmica = $dadosLicenca['prm_max_licenca'];
$numLicencaFixa = $dadosLicenca['prm_max_licenca_fixo'];
$matriculaAgente = GetMatricula();
$result = pg_query($db, "SELECT coalesce(pa_fixo,0) as pa_fixo FROM pbx_usuarios WHERE matricula = '$matriculaAgente'");
$dadosAgente = pg_fetch_assoc($result);
$licencaFixa = $dadosAgente['pa_fixo'] > 0;
/*
* Numero de PAs setado como zero permite ilimitada conex<EFBFBD> es.
*/
if (($numLicencaFixa + $numLicencaDinanmica) === 0) {
return false;
}
/*
* Verifico a quantidade de PAs logado.
*/
$query = "select
count(*) as num_total_pa,
coalesce(sum((select 1 from pbx_usuarios where matricula = a.matricula and pa_fixo = 0)),0) + 1 as num_pa_dinamico,
coalesce(sum((select 1 from pbx_usuarios where matricula = a.matricula and pa_fixo = 1)),0) + 1 as num_pa_fixo
from pbx_supervisor_agentes a";
$result = pg_query($db, $query);
$dadosConexao = pg_fetch_assoc($result);
$numPaFixoLogado = $dadosConexao['num_pa_fixo'];
$numPaDinamicoLogado = $dadosConexao['num_pa_dinamico'];
return $licencaFixa ? ($numPaFixoLogado > $numLicencaFixa) : ($numPaDinamicoLogado > $numLicencaDinanmica);
}
function VerificaAgenteLogadoAstrisk($login) {
$get = GetUrlAterisk(MONITOR_AGENTS, '', '', 'http://172.16.51.78:9876');
$get = @file_get_contents($get);
$pos = stripos($get, $login);
if ($pos) {
$len = stripos($get, 'LoggedInChan', $pos);
$get = substr($get, $pos, $len - $pos);
echo "< br > " . $get . "< br > ";
$pos = stripos($get, 'AGENT_LOGGEDOFF');
}
return $pos;
}
function IsSupervisor($db) {
$matricula = GetMatricula();
$query = "SELECT user_id, gp_id
FROM pbx_usuarios a
INNER JOIN pbx_grupo_usuario b ON a.id = b.user_id
WHERE matricula = '$matricula'
AND gp_id = 30";
if (IsAdmin()) {
return true;
}
$result = pg_query($db, $query);
$row = pg_fetch_assoc($result);
if ($row) {
return true;
}
return false;
}
function GetClassificacao($db, $idClas, $dac, $useSelect = 1) {
$query = " SELECT clas_id, clas_descricao FROM pbx_classifica_atendimento where clas_status = 1 and clas_id in(select clas_id from pbx_classifica_dacs where id_dac = '$dac' ) order by 2";
$result = pg_query($db, $query);
if(!$result){
$clas="< select name = \"listaClas\" style = \"width:210px;\" onChange = \"CarregaItem(this.form)\" > "
. "< option value = \"0\" selected > Selecione uma Classifica<EFBFBD> <EFBFBD> o< / option > "
. "< / select > ";
return $clas;
}
$clas = $useSelect ? "< select name = \"listaClas\" style = \"width:210px;\" onChange = \"CarregaItem(this.form)\" > " : "";
$def = $idClas;
$sel = !$idClas || !pg_num_rows($result) ? 'selected' : '';
$clas .= "< option value = \"0\" $ sel > Selecione uma Classifica<EFBFBD> <EFBFBD> o< / option > ";
while ($dados = @pg_fetch_row($result)) {
$sel = ($idClas == $dados[0]) ? "selected" : "";
$id = $dados[0];
$desc = $dados[1];
$clas .= "< option value = \"$id\" $ sel > $desc< / option > ";
}
$clas .= $useSelect ? "< / select > " : "";
return $clas;
}
function GetItem($db, $idClas, $idItem, $useSelect = 1) {
$query = " SELECT clit_id, clit_descricao FROM pbx_classifica_item where clas_id = $idClas and clit_status = 1 order by 2";
$result = pg_query($db, $query);
$clas = $useSelect ? "< select name = \"listaItem\" style = \"width:169px;\" > " : "";
if (!$idClas)
$clas .= "< option value = \"0\" selected > Selecione o Item de Classifica<EFBFBD> <EFBFBD> o< / option > ";
else {
$sel = !$idItem ? "selected" : '';
$clas .= "< option value = \"0\" $ sel > Selecione o Item de Classifica<EFBFBD> <EFBFBD> o< / option > ";
$sel = '';
while ($dados = @pg_fetch_row($result)) {
$sel = ($idItem == $dados[0]) ? "selected" : "";
$id = $dados[0];
$desc = $dados[1];
$clas .= "< option value = \"$id\" $ sel > $desc< / option > ";
}
}
$clas .= $useSelect ? "< / select > " : "";
return $clas;
}
function ArrayOut($ar, $vl) {
$arAux = array();
foreach ($ar as $value) {
if ($vl != $value)
$arAux[] = $value;
}
return $arAux;
}
//parametros
function GetHeadRel($nivel = 0) {
return $_SESSION[SS_PRM_RELATORIO_HEAD];
}
function GetFootRel() {
return $_SESSION[SS_PRM_RELATORIO_LINHA1];
}
function GetLogoRel() {
return "imgSite/" . $_SESSION[SS_PRM_LOGO_RELATORIO];
}
function GetEmpresa() {
return GetSlogan();
}
function GetAgentes($dbcon, $codSel, $idDac, $query = "") {
//carrega Atendente
$codSel = ((!$_SESSION["listaAgente"]) || ($trocaDac)) ? 0 : $_SESSION["listaAgente"];
$sel = !$codSel ? "selected" : "";
$agentes = "< select name = \"listaAgente\" id = \"listaAgente\" size = \"1\" > ";
$agentes .= "< option value = \"0\" $ sel > Todos< / option > ";
$dac = $idDac ? " and fila = (select nome from pbx_dacs where id = $idDac )" : "";
if (empty($query)) {
$query = "select matricula, nome
from pbx_usuarios u
where exists(select '' from pbx_eventos_dacs
where substring(agente, 7, 4) = u.matricula
$dac )
order by 2";
}
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$agentes .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$agentes .= "< / select > ";
return $agentes;
}
function GetTodosAgentes($dbcon, $codSel, $incTodos = 1, $sql = '') {
$sel = !$codSel ? "selected" : "";
$agentes = "< select name = \"listaAgente\" id = \"listaAgente\" size = \"1\" > ";
if ($incTodos)
$agentes .= "< option value = \"0\" $ sel > Todos< / option > \n";
$sql = trim($sql) ? $sql : "select matricula, apelido as nome from pbx_usuarios u where status = true and apelido < > 'sinccontasenha' order by 2";
$result = pg_query($dbcon, $sql);
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
} else {
$sel = "";
}
$agentes .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$agentes .= "< / select > ";
return $agentes;
}
function GetTodasContas($dbcon, $codSel) {
$sel = !$codSel ? "selected" : "";
$agentes = "< select name = \"listaAgente\" id = \"listaAgente\" size = \"1\" > ";
//$agentes .= "< option value = \"0\" $ sel > Todos< / option > ";
$result = pg_query($dbcon, "select matricula, apelido as nome from pbx_usuarios_cs u order by 2");
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$agentes .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$agentes .= "< / select > ";
return $agentes;
}
function GetTempoAgente() {
return ($_SESSION[SS_PRM_AGENTE_ATUALIZA] ? $_SESSION[SS_PRM_AGENTE_ATUALIZA] : AGT_TEMPO_ATUALIZA) * 1000;
}
function GetTempoSupervisor() {
return ($_SESSION[SS_PRM_SUPER_ATUALIZA] ? $_SESSION[SS_PRM_SUPER_ATUALIZA] : AGT_SUPERVISOR_ATUALIZA) * 1000;
}
function GetFileAgente() {
return $_SESSION[SS_PRM_PATH_ARQ_AGENTE] ? $_SESSION[SS_PRM_PATH_ARQ_AGENTE] : DB_CONFIG_AGENTE;
}
function GetUsuario($dbcon, $matricula) {
$query = "SELECT id, nome, apelido, matricula, email FROM pbx_usuarios WHERE matricula = '{$matricula}'";
$result = pg_query($dbcon, $query);
$data = pg_fetch_assoc($result);
return $data;
}
function GetMsgSenha() {
return $_SESSION[SS_SENHA_DEF] ? ($_SESSION[SS_PRM_MSG_SENHA_DEF] ? $_SESSION[SS_PRM_MSG_SENHA_DEF] : "Altera<EFBFBD> <EFBFBD> o de Senha") : ($_SESSION[SS_PRM_SENHA_EXPIRADA] ? $_SESSION[SS_PRM_MSG_SENHA_EXP] : "Altera<EFBFBD> <EFBFBD> o de Senha");
}
function VerificaCharFinal($str, $ch = "/") {
return substr($str, -1) == $ch ? $str : $str . $ch;
}
function GetHeadMenu($db) {
$query = "select fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, fun_id_pai
from pbx_funcoes
where fun_id_pai is null
order by 4";
$head = array();
$result = pg_query($db, $query);
while ($row = pg_fetch_array($result))
$head[] = $row;
$_SESSION[PRF_MENU_HEAD] = $head;
}
function GetSites($dbcon, $codSite, $disableb = "") {
/*
* Carrega lista de dacs disponivel
* para ser inserdo entre as tags < select > < / select >
*/
$query = "select id, descricao from pbx_sites where status = 1 order by upper(descricao)";
$result = pg_query($dbcon, $query);
$codSel = $codSite;
$site = "< select name = \"listaSites\" id = \"listaSites\" size = \"1\" $ disableb onchange = \"submit()\" > ";
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$site .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$site .= "< / select > ";
return $site;
}
function GetEmpresas($dbcon, $empresa, $disableb = "", $incTodos = 0, $useSelect = 1, $dispTodos = '--------') {
/*
* Carrega lista de dacs disponivel
* para ser inserdo entre as tags < select > < / select >
*/
$query = "select id, nome from pbx_empresa order by 2";
$result = pg_query($dbcon, $query);
$codSel = $empresa;
$sel = '';
if ($useSelect)
$site = "< select name = \"listaEmpresas\" id = \"listaEmpresas\" size = \"1\" $ disableb > ";
$sel = $empresa ? "" : "selected";
if ($incTodos)
$site .= "< option value = \"0\" $ sel > $dispTodos< / option > ";
$sel = "";
while ($dados = @pg_fetch_row($result)) {
if ((!$codSel & & !$incTodos) || ($codSel == $dados[0])) {
$sel = "selected";
$codSel = $dados[0];
} else {
$sel = "";
}
$site .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
if ($useSelect)
$site .= "< / select > ";
return $site;
}
function GetDeptos($dbcon, $empresa, $depto, $disableb = "", $incTodos = 0, $useSelect = 1, $todos = "--------") {
/*
* Carrega lista de dacs disponivel
* para ser inserdo entre as tags < select > < / select >
*/
$query = "select id, nome_depto from pbx_departamentos where empresa = $empresa";
$result = !$dbcon ? pg_query($query) : pg_query($dbcon, $query);
if(!$result){
$site = "< select name = \"listaDeptos\" id = \"listaDeptos\" style = \"width: 180px ; \ " size = \"1\" $ disableb > "
. "< option value = \"0\" selected > $todos< / option > "
. "< / select > ";
return $site;
}
$codSel = $depto;
if ($useSelect)
$site = "< select name = \"listaDeptos\" id = \"listaDeptos\" style = \"width: 180px ; \ " size = \"1\" $ disableb > ";
if ($incTodos) {
$sel = $codSel ? "" : "selected";
$site .= "< option value = \"0\" $ sel > $todos< / option > ";
}
$sel = '';
while ($dados = @pg_fetch_row($result)) {
if ((!$codSel & & !$incTodos) || ($codSel == $dados[0])) {
$sel = "selected";
$codSel = $dados[0];
} else {
$sel = "";
}
$site .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
if ($useSelect)
$site .= "< / select > ";
return $site;
}
function GetDefCodEmpresa($dbcon) {
$query = "select min(id) from pbx_empresa";
$result = pg_query($dbcon, $query);
$dados = @pg_fetch_row($result);
return $dados[0];
}
function __GetProto__($db) {
//registra o protocolo para o id corrente
$mat = GetMatricula();
$query = "select uniqueid from pbx_supervisor_agentes where matricula = '$mat'";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
$uniqueId = $row[0];
//Geraprotocolo
$anoAtu = date('Y');
$query = "select max(numProto) from pbx_protocolo_reg where ano = '$anoAtu'";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
$numProto = $row[0] ? $row[0] + 1 : 1;
$proto = $anoAtu . str_pad($numProto, 6, '0', STR_PAD_LEFT);
$query = "insert into pbx_protocolo_reg(uniqueid, ano, numProto, protocolo)
select '$uniqueId', $anoAtu, $numProto, $proto where not exists(select '' from pbx_protocolo_reg where uniqueid = '$uniqueId')";
$result = pg_query($db, $query);
if (pg_affected_rows($result) == 0) {
$query = "select ano, numProto from pbx_protocolo_reg where uniqueid = '$uniqueId'";
$result = pg_query($db, $query);
$row = pg_fetch_row($result);
$proto = trim($row[0]) . "-" . trim(str_pad($row[1], 6, '0', STR_PAD_LEFT));
} else {
$proto = trim($anoAtu) . "-" . trim(str_pad($numProto, 6, '0', STR_PAD_LEFT));
}
return $proto;
}
function GetTemplate($smarty, $nomeTpl) {
$smarty->display($nomeTpl);
}
function GetFormAcao() {
/*
* Retorna o dipo de acao que o usuario esta realizando
* com base no parametro formAction
*/
if ((!isset($_GET["formAction"]) & & !isset($_POST["formAction"])) || (isset($_POST["formAction"]) & & ($_POST["formAction"] == FORM_SELECT) ))
return FORM_SELECT;
if (isset($_GET["formAction"]) & & ($_GET["formAction"] == FORM_NEW))
return FORM_NEW;
else if (isset($_POST["formAction"]) & & ($_POST["formAction"] == FORM_INSERT))
return FORM_INSERT;
else if (isset($_GET["formAction"]) & & ($_GET["formAction"] == FORM_UPDATE))
return FORM_UPDATE;
else if (isset($_POST["formAction"]) & & ($_POST["formAction"] == FORM_SAVE))
return FORM_SAVE;
else if (isset($_GET["formAction"]) & & ($_GET["formAction"] == FORM_DELETE))
return FORM_DELETE;
else if (isset($_REQUEST["formAction"]))
return $_REQUEST["formAction"];
else
return -1;
/*
if(!isset($_REQUEST["formAction"]))
{
RETURN FORM_UNDEF;
}
return $_REQUEST["formAction"];
*/
}
function GetFormAcaoDesc($acao) {
switch ($acao) {
case FORM_NEW:
case FORM_INSERT: return "Inserir";
case FORM_UPDATE:
case FORM_SAVE: return "Alterar";
case FORM_DELETE: return "Apagar";
case FORM_DOWNLOAD: return "Download";
case FORM_UPLOAD: return "Upload";
Default: return "Indefinido";
}
}
function GetTotalRegistro($db, $query) {
$result = pg_query($db, PaginacaoSql($query));
$row = pg_fetch_row($result);
return $row[0];
}
function GetLinkFormAction($nomeJanela, $action, $idProg = null, $imagem = "", $addParam = "", $txt = "") {
$link = "";
$img = "";
if (!$idProg) {
$idProg = isset($_GET["idProg"]) ? $_GET["idProg"] : $_POST["idProg"];
}
$imgDef = empty($imagem) ? "imgSite/novoUser.png" : $imagem;
$atributos = "resizable=NO,scrollbars=0";
$janW = $GLOBALS["janW"] ? $GLOBALS["janW"] : 500;
$janH = $GLOBALS["janH"] ? $GLOBALS["janH"] : 300;
$endeLink = "index.php?idProg=$idProg&formAction=$action&janW=$janW&janH=$janH";
if (!empty($addParam))
$endeLink .= '& ' . $addParam;
$img = "< img src = \"$imgDef\" width = \"16\" height = \"16\" border = \"0\" align = \"absmiddle\" title = \"Inclui novo registro \ " > ";
$link = "< a href = \"javaScript:NovaJanela('$endeLink', ' $ nomeJanela ' , ' $ janW ' , ' $ janH ' , ' $ atributos ' ) ; \ " > {$img}{$txt}< / a > ";
return $link;
}
function GetLinkFormInsert($nomeJanela, $imagem = "", $addParam = "", $txt = "") {
$link = "";
$img = "";
$idProg = isset($_GET["idProg"]) ? $_GET["idProg"] : $_POST["idProg"];
$imgDef = empty($imagem) ? "imgSite/novoUser.png" : $imagem;
$atributos = "resizable=NO,scrollbars=0";
$janW = $GLOBALS["janW"] ? $GLOBALS["janW"] : 500;
$janH = $GLOBALS["janH"] ? $GLOBALS["janH"] : 300;
$action = FORM_NEW;
$endeLink = "index.php?idProg=$idProg&formAction=$action";
if (!empty($addParam))
$endeLink .= '& ' . $addParam;
$img = "< img src = \"$imgDef\" width = \"16\" height = \"16\" border = \"0\" align = \"absmiddle\" title = \"Inclui novo registro \ " > ";
$link = "< a href = \"javaScript:NovaJanela('$endeLink', ' $ nomeJanela ' , ' $ janW ' , ' $ janH ' , ' $ atributos ' ) ; \ " > $img$txt< / a > ";
return $link;
}
function GetLinkFormUpdate($varUrl, $nomeJanela, $imagem = "", $disabLink = 0, $useText = 0, $text = '', $progId = 0) {
$link = "";
$img = "";
$idProg = $progId ? $progId : $_REQUEST["idProg"];
$imgDef = empty($imagem) ? "imgSite/editaUser.png" : $imagem;
$atributos = "resizable=NO,scrollbars=NO";
$janW = $GLOBALS["janW"] ? $GLOBALS["janW"] : 500;
$janH = $GLOBALS["janH"] ? $GLOBALS["janH"] : 300;
$action = FORM_UPDATE;
$img = $useText ? $text : "< img src = \"$imgDef\" width = \"16\" height = \"16\" border = \"0\" title = \"Edita este registro \ " > ";
if ($disabLink)
$link = $img;
else
$link = "< a style = \"color: # 000 ; \ " href = \"javaScript:NovaJanela('index.php?idProg=$idProg&formAction=$action$varUrl', ' $ nomeJanela ' , ' $ janW ' , ' $ janH ' , ' $ atributos ' ) ; \ " > $img< / a > ";
return $link;
}
function GetLinkFormDelete($param, $nomeFuncao, $imagem = "") {
$link = "";
$img = "";
$imgDef = empty($imagem) ? "imgSite/deletaUser.png" : $imagem;
$atributos = "resizable=NO,scrollbars=NO";
$janW = isset($GLOBALS["janW"]) ? $GLOBALS["janW"] : 500;
$janH = isset($GLOBALS["janH"]) ? $GLOBALS["janH"] : 300;
$action = FORM_DELETE;
if (strpos($param, "|") !== false) {
$params = explode("|", $param);
$p = "";
foreach ($params as $value) {
$p .= !$p ? QuotedStr($value) : ", " . QuotedStr($value);
}
$param = $p;
} else {
$param = QuotedStr($param);
}
$img = "< img src = \"$imgDef\" width = \"16\" height = \"16\" border = \"0\" title = \"Apaga este registro ! \ " > ";
$link = sprintf("< a href = \"javaScript:$nomeFuncao(%s);\" > $img< / a > ", $param);
return $link;
}
function validaForm($fields, $fieldsObrig, $fieldsType, $fieldsDiplay, & $msg) {
$ret = true;
foreach ($fields as $value) {
$nomeCampo = isset($fieldsDiplay[$value]) ? $fieldsDiplay[$value] : $value;
if ((isset($fieldsObrig[$value]) & & ($fieldsObrig[$value])) & & (!isset($_POST[$value]) || empty($_POST[$value]))) {
$msg[] = $nomeCampo . " <EFBFBD> campo obrigat<EFBFBD> rio" . ".";
$ret = false;
} else {
if (array_search($value, $_POST) !== false) {
if (!empty($_POST[$value]) & & ($fieldsType[$value] == TYPE_INTEGER) & & (!is_numeric($_POST[$value]))) {
$msg[] = "Valor inv<EFBFBD> lido:" . $nomeCampo . ".";
$ret = false;
}
if (!empty($_POST[$value]) & & ($fieldsType[$value] == TYPE_DATE) & & (!is_date($_POST[$value]))) {
$msg[] = "Data inv<EFBFBD> lida:" . $_POST[$value] . ".";
$ret = false;
}
//if(($fieldsType[$value] == TYPE_DETETIME) & & (!is_($_POST[$value])))
if (!empty($_POST[$value]) & & ($fieldsType[$value] == TYPE_FLOAT) & & (!is_numeric($_POST[$value]))) {
$msg[] = "Valor inv<EFBFBD> lido:" . $_POST[$value] . ".";
$ret = false;
}
if (!empty($_POST[$value]) & & ($fieldsType[$value] == TYPE_EMAIL) & & (!is_email($_POST[$value]))) {
$msg[] = "Email inv<EFBFBD> lido: " . $_POST[$value] . ".";
;
$ret = false;
}
if (!empty($_POST[$value]) & & ($fieldsType[$value] == TYPE_TIME) & & (!is_time($_POST[$value]))) {
$msg[] = "Hora inv<EFBFBD> lido: " . $_POST[$value] . ".";
;
$ret = false;
}
}
//if(($fieldsType[$value] == TYPE_CPFCGC) & & ())
//if($fieldsType[$value] == TYPE_IE & & ())
//if($fieldsType[$value] == TYPE_FONE & & ())
//if($fieldsType[$value] == TYPE_IDENTIFICA & & ())
}
}
return $ret;
}
function GetTipoIdentificaDesc($tpIdent) {
switch ($tpIdent) {
case TIPO_IDENTIFICA_CPF: return "CPF";
case TIPO_IDENTIFICA_CRC: return "CRC";
case TIPO_IDENTIFICA_CNPJ: return "CNPJ";
case TIPO_IDENTIFICA_IE: return "IE";
case TIPO_IDENTIFICA_OUTRO: return "OUTRO";
default: return "CNPJ";
}
}
function GetRelacionaEventos($db, $matricula) {
//and cast(login as date) = cast(now as date)
$query = "select relaciona_eventos from pbx_eventos_agentes a
where matricula = '$matricula'
and login is not null
and login = (select max(login) from pbx_eventos_agentes where matricula = a.matricula)";
$result = pg_query($db, $query);
if ($result) {
$row = @pg_fetch_row($result);
return $row[0];
}
return 0;
}
function SetHosts($dbcon) {
$query = "select id, descricao, host, usuario, senha, basedados, porta from pbx_sites ";
$result = pg_query($dbcon, $query);
$hosts = array();
while ($row = pg_fetch_array($result)) {
$hosts[] = $row;
}
$_SESSION[HOSTS_INFO] = $hosts;
}
function GetHost($id) {
$hosts = array();
$host = array();
$hosts = $_SESSION[HOSTS_INFO];
for ($i = 0; $i < count ( $ hosts ) ; $ i + + ) {
$host = $hosts[$i];
if ($host[0] == $id) {
return $host;
}
}
return "";
}
function GetDbFromHost($id) {
$host = GetHost($id);
//select id, empresa, descricao, host, usuario, senha, basedados, porta, tag
$dbPort = $host["porta"];
$dbHost = $host["host"];
$dbName = $host["basedados"];
$dbUser = $host["usuario"];
$dbPassword = $host["senha"];
$connectionString = "host='$dbHost' port='$dbPort' dbname='$dbName' user='$dbUser' password='$dbPassword'";
return pg_connect($connectionString);
}
function GetDefaultSite() {
return $_SESSION["SSDefaultSite"];
}
function GetContas($dbcon, $codSel) {
$sel = !$codSel ? "selected" : "";
$linhas = "< select name = \"conta\" id = \"conta\" size = \"1\" > ";
$query = "select 1 as cod_conta, 'Conta Um' as nome_conta union
select 2 as cod_conta, 'Conta Dois' as nome_conta union
select 3 as cod_conta, 'Conta Treis' as nome_conta union
select 4 as cod_conta, 'Conta Quatro' as nome_conta ";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$linhas .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$linhas .= "< / select > ";
return $linhas;
}
function GetGrupoRamais($dbcon, $codSel) {
$sel = !$codSel ? "selected" : "";
$linhas = "< select name = \"gpRamal\" id = \"gpRamal\" size = \"1\" > ";
$query = "select 1 as cod_conta, 'Grupo Um' as nome_conta union
select 2 as cod_conta, 'Grupo Dois' as nome_conta union
select 3 as cod_conta, 'Grupo Treis' as nome_conta union
select 4 as cod_conta, 'Grupo Quatro' as nome_conta ";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$linhas .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$linhas .= "< / select > ";
return $linhas;
}
function GetGrupoId($dbcon) {
$id = array();
$query = "SELECT DISTINCT gp_id FROM pbx_grupo_usuario ";
$query .= GetIdUser() ? " WHERE user_id = " . GetIdUser() : '';
$query .= ' ORDER BY gp_id';
$result = pg_query($dbcon, $query);
$data = pg_fetch_all($result);
foreach ($data as $value) {
array_push($id, $value['gp_id']);
}
return $id;
}
function GetGrupoContas($dbcon, $codSel) {
$sel = !$codSel ? "selected" : "";
$linhas = "< select name = \"gpConta\" id = \"gpConta\" size = \"1\" > ";
$query = "select 1 as cod_conta, 'Grupo Um' as nome_conta union
select 2 as cod_conta, 'Grupo Dois' as nome_conta union
select 3 as cod_conta, 'Grupo Treis' as nome_conta union
select 4 as cod_conta, 'Grupo Quatro' as nome_conta ";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$linhas .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$linhas .= "< / select > ";
return $linhas;
}
function GetCentroCusto($dbcon, $codSel) {
$sel = !$codSel ? "selected" : "";
$linhas = "< select name = \"gpCentroCusto\" id = \"gpCentroCusto\" size = \"1\" > ";
$query = "select 1 as cod_conta, 'Centro Custo Um' as nome_conta union
select 2 as cod_conta, 'Centro Custo Dois' as nome_conta union
select 3 as cod_conta, 'Centro Custo Treis' as nome_conta union
select 4 as cod_conta, 'Centro Custo Quatro' as nome_conta ";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$linhas .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$linhas .= "< / select > ";
return $linhas;
}
function GetUserFromConta($dbcon, $matricula, $incMatricula = 0) {
$query = "select matricula, apelido from pbx_cs_usuarios where matricula = '$matricula' ";
$result = pg_query($dbcon, $query);
if (!$result) {
$nome = 'N<EFBFBD> o foi poss<EFBFBD> vel realizar a opera<EFBFBD> <EFBFBD> o!';
} else {
$row = @pg_fetch_row($result);
if ($incMatricula)
$nome = $row[0] . "-" . $row[1];
else
$nome = $row[1];
}
return $nome;
}
function GetHostAsterisk() {
$url = explode(":", $_SESSION[SS_PRM_URL_ASTERISK]);
return str_replace("//", "", $url[1]);
}
function GetMunicipioPadrao() {
return $_SESSION["prm_mun_padrao"];
}
function GetUfPadrao() {
return $_SESSION["prm_uf_padrao"];
}
function GetTipoLigacao($tipo) {
$ligacoes = array("0", "saida-pstn", "entrada-pstn", "interna");
$display = array("Todas", "Saintes", "Entrantes", "Internas");
$select = "";
$tp = " < select name = \"tipoLigacao\" id = \"tipoLigacao\" > ";
for ($i = 0; $i < count ( $ ligacoes ) ; $ i + + ) {
$value = $ligacoes[$i];
$text = $display[$i];
$select = ($tipo == $value) ? "selected" : "";
$tp .= "< option value = \"$value\" $ select > $text< / option > ";
$sel = "";
}
$tp .= "< / select > ";
return $tp;
}
function GetMotivoLogin($db) {
$query = "select id from pbx_motivos_pausas where upper(motivo) = 'LOGIN'";
$result = pg_query($db, $query);
$row = @pg_fetch_array($result);
$_SESSION["motivoLogin"] = $row[0];
return $row[0];
}
function GetMotivoDef($db) {
$query = "select min(id) from pbx_motivos_pausas where upper(motivo) not in('LOGIN','AUSENTE', 'RECUSADA')";
$result = pg_query($db, $query);
$row = @pg_fetch_array($result);
return $row[0];
}
function GetTempo($dbcon, $nameCombo, $tipotempo, $codSel) {
$option = "< select name = \"$nameCombo\" id = \"$nameCombo\" size = \"1\" > ";
//$agentes .= "< option value = \"0\" $ sel > Todos< / option > ";
$result = pg_query($dbcon, "select tempo from pbx_tempo_meta order by tempo");
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$option .= "< option value = \"$dados[0]\" $ sel > $dados[0] $tipotempo< / option > ";
}
$option .= "< / select > ";
return $option;
}
function GetAbsPath() {
return $_SESSION[PATH_ABSOLUTO];
}
function GetBarPath() {
return $_SESSION[PATH_BAR];
}
function ExecutaComando($comando, $conexao) {
/*
$query = "SELECT usuario_servidor, senha_servidor, porta_servidor FROM pbx_conf_padrao";
$result = pg_query($conexao, $query);
$dados = pg_fetch_array($result);
$usuario_servidor = $dados['usuario_servidor'];
$senha_servidor = $dados['senha_servidor'];
$porta_servidor = $dados['porta_servidor'];
//endereco do servidor onde ser<EFBFBD> executado o comando
$ssh = new Net_SSH2('127.0.0.1', $porta_servidor);
if (!$ssh->login($usuario_servidor, $senha_servidor)) {
return false;
}
// return $ssh->exec($comando);
return $ssh->exec(sprintf("%s", $comando));
*/
return CnvrtFileExec($comando);
}
function MascaraDisp() {
$mascara = array();
$mascara[] = array('MODELOS DISPONIVEIS' => '');
$mascara[] = array('FIXO LOCAL' => '[2-5]XXXXXXX');
$mascara[] = array('MOVEL LOCAL' => '[6-9]XXXXXXX');
$mascara[] = array('UTILIDADE PUBLICA' => '1XX');
$mascara[] = array('0300' => '0300XXXXXXX');
$mascara[] = array('0303' => '0303XXXXXXX');
$mascara[] = array('0500' => '0500XXXXXXX');
$mascara[] = array('0800' => '0800XXXXXXX');
$mascara[] = array('0900' => '0900XXXXXXX');
$mascara[] = array('400X' => '400NXXXX');
$mascara[] = array('LONGA DISTANCIA FIXO' => '0ZZZZ[2-5]XXXXXXX');
$mascara[] = array('LONGA DISTANCIA FIXO 2' => '0ZZ[2-5]XXXXXXX');
$mascara[] = array('LONGA DISTANCIA FIXO 3' => 'ZZ[2-5]XXXXXXX');
$mascara[] = array('LONGA DISTANCIA MOVEL' => '0ZZZZ[6-9]XXXXXXX');
$mascara[] = array('LONGA DISTANCIA MOVEL 2' => '0ZZ[6-9]XXXXXXX');
$mascara[] = array('LONGA DISTANCIA MOVEL 3' => 'ZZ[6-9]XXXXXXX');
return $mascara;
}
function GetTroncosDisponiveis($dbcon) {
$arBuff = array();
$query = "select id, nome, tipo from pbx_troncos ";
$result = pg_query($dbcon, $query);
while ($dados = pg_fetch_array($result)) {
$arBuff[] = $dados;
}
return $arBuff;
}
function GetIdResult($result) {
$row = pg_fetch_row($result);
return $row[0];
}
function GetAudio($dbcon, $codSel) {
$query = "select nome from pbx_musichold_grupos";
$result = pg_query($dbcon, $query);
$ret = '< select name = "cmp_audio" style = "width:500px" > ';
$ret .= "< option value = \"0\" > --------------< / option > ";
while ($row = pg_fetch_array($result)) {
$value = $row['nome'];
if ($codSel == $value) {
$sel = "selected";
} else {
$sel = "";
}
if (!empty($value))
$ret .= "< option value = \"$value\" $ sel > $value< / option > ";
}
$ret .= '< / select > ';
return $ret;
}
/*
Alan Pablo - 11/01/2011
fun<EFBFBD> <EFBFBD> o GetFormatoAudio
Itens alterados:
- WAV = wav49
- wav = Wav
*/
function GetFormatoAudio($codSel, $nomeCampo = 'cmp_formato_gravacao') {
$linhas[] = array('id' => 'WAV', 'nome' => 'wav49');
$linhas[] = array('id' => 'gsm', 'nome' => 'Gsm');
$linhas[] = array('id' => 'wav', 'nome' => 'Wav');
$ret = "< select name = \"$nomeCampo\" > ";
$ret .= "< option value = \"0\" > --------------< / option > ";
foreach ($linhas as $row) {
$value = $row['id'];
$desc = $row['nome'];
if ($codSel == $value) {
$sel = "selected";
} else {
$sel = "";
}
if (!empty($value))
$ret .= "< option value = \"$value\" $ sel > $desc< / option > ";
}
$ret .= '< / select > ';
return $ret;
}
function GetStatusCampanha($dbcon, $codSel, $desabStatus, $filtro = "") {
$desab = $desabStatus ? "disabled" : "";
$filtro = $filtro ? " and cpst_id not in($filtro) " : "";
$query = "select cpst_id as id, cpst_nome as nome from pbx_campanha_status where cpst_status = 1 $filtro order by 2";
//if(IsAdmin()) echo $query;
$result = pg_query($dbcon, $query);
$ret = "< select name = \"cmp_status\" id = \"cmp_status\" style = \"width:200px\" $ desab > ";
$ret .= "< option value = \"-1\" > --------------< / option > ";
while ($row = pg_fetch_array($result)) {
$value = $row['id'];
$nome = $row['nome'];
if ($codSel == $value) {
$sel = "selected";
} else {
$sel = "";
}
//if(!empty($value))
$ret .= "< option value = \"$value\" $ sel > $nome< / option > ";
}
$ret .= '< / select > ';
return $ret;
}
function GetCofigPadrao($dbcon) {
$query = "SELECT * FROM pbx_conf_padrao";
$result = pg_query($dbcon, $query);
$dados = pg_fetch_array($result);
$_SESSION[CONF_PADRAO_CAMINHO_BACK] = $dados['caminho_backup'];
$_SESSION[CONF_PADRAO_CAMINHO_PRODUCAO] = $dados['caminho_producao'];
$_SESSION[CONF_PADRAO_CAMINHO_MUSICAS] = $dados['caminho_musicas'];
$_SESSION[CONF_PADRAO_URL_MUSICAS] = $dados['url_musicas'];
$_SESSION[CONF_PADRAO_URL_ASTERISK] = $dados['url_asterisk'];
}
function GravaCampanha($dbcon) {
$caminho_producao = $_SESSION[CONF_PADRAO_CAMINHO_PRODUCAO];
$arq = $caminho_producao . "extensions_campanha.conf";
$escreve = fopen($arq, 'w+');
if (!$escreve)
throw new Exception("N<EFBFBD> o foi poss<EFBFBD> vel abrir o arquivo $caminho_producao\"extensions_campanha.conf\"");
$query = "select cmp_id, cmp_numero,cmp_descricao, cmp_formato_gravacao, cmp_habilitar_gravacao, cmp_status, cmp_qt_tronco_pa from pbx_campanha where cmp_status not in(0)";
$result = pg_query($dbcon, $query);
if (!$result)
throw new Exception("N<EFBFBD> o foi consultar o banco de dados!");
$str = sprintf('[ext-campanha]%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,1,Noop(MATRICULA = ${MATRICULA} e IDORIGEM = ${IDORIGEM} e MUTE = ${MUTE})%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,GotoIf($["${MUTE}" = "V"]?mute)%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,GotoIf($["${ESPERA}" = "V"]?espera)%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,GotoIf($["${TRANSFER}" = "V"]?transfer)%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,GotoIf($["X${MATRICULA}" = "X"]?desliga)%s', "\n");
fwrite($escreve, $str);
//Alan Pablo - 10/01/2011 => Remover parametros
// $str = sprintf('exten => h,n,GotoIf($["${DB(CANAL/${MATRICULA}/${IDORIGEM})}" = "DESLIGADO"]?desliga)%s', "\n");
// fwrite($escreve,$str);
// $str = sprintf('exten => h,n,Set(DB(CANAL/${MATRICULA}/${IDORIGEM})=DESLIGADO)%s', "\n");
// fwrite($escreve,$str);
$str = sprintf('exten => h,n,System(${ATUALIZAR} CAMPANHA ${MATRICULA})%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n(desliga),Hangup()%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n(mute),Goto(ext-app-mute|${MATRICULA}|cliente-fila)%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,Hangup()%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n(espera),Goto(ext-app-espera|${MATRICULA}|cliente-fila)%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,Hangup()%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n(transfer),Goto(ext-app-transfer|${MATRICULA}|cliente-fila)%s', "\n");
fwrite($escreve, $str);
$str = sprintf('exten => h,n,Hangup()%s', "\n");
fwrite($escreve, $str);
/*
$str = sprintf('exten => h,1,Noop(MATRICULA = ${MATRICULA} e IDORIGEM = ${IDORIGEM})%s', "\n");
fwrite($escreve,$str);
$str = sprintf('exten => h,n,GotoIf($["X${MATRICULA}" = "X"]?desliga)%s', "\n");
fwrite($escreve,$str);
$str = sprintf('exten => h,n,GotoIf($["${DB(CANAL/${MATRICULA}/${IDORIGEM})}" = "DESLIGADO"]?desliga)%s', "\n");
fwrite($escreve,$str);
$str = sprintf('exten => h,n,Set(DB(CANAL/${MATRICULA}/${IDORIGEM})=DESLIGADO)%s', "\n");
fwrite($escreve,$str);
$str = sprintf('exten => h,n,System(${ATUALIZAR} LIVRE ${MATRICULA})%s', "\n");
fwrite($escreve,$str);
$str = sprintf('exten => h,n(desliga),Hangup()%s', "\n");
fwrite($escreve,$str);
*/
while ($dados = pg_fetch_array($result)) {
$arCampanha[] = $dados;
/*
Alan Pablo - 10/01/2011
Arquivo extensions_campanha
- Remover parametros comentados
- Adicionado tratamento para desabilitar grava<EFBFBD> <EFBFBD> o
*/
// $str = sprintf('exten => %s,1,ResetCDR(w)%s', $dados["cmp_id"], "\n");
// fwrite($escreve,$str);
$str = sprintf('exten => %s,1,Answer()%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
// $str = sprintf('exten => %s,n,AGI(pbx_complemento.php|ext-campanha)%s', $dados["cmp_id"], "\n");
// fwrite($escreve,$str);
if ($dados["cmp_habilitar_gravacao"]) {
$str = sprintf('exten => %s,n,Set(CDR(accountcode)=${UNIQUEID})%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(UNICO=${RAND(0000000000|9999999999)})%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(AUDIOHOOK_INHERIT(MixMonitor)=yes)%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(MONITOR_FILENAME=${EXTEN}-${UNICO}-${UNIQUEID})%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(_AUDIO=${EXTEN}-${UNICO}-${UNIQUEID}.%s)%s', $dados["cmp_id"], $dados["cmp_formato_gravacao"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(__DISCAGEM=AUTO)%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(__TIPOLIGACAO=${TIPOLIGACAO})%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(__IDENTIFICADOR_CLI=${IDENTIFICADOR})%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
}
$str = sprintf('exten => %s,n,Queue(%s|Ttr|||5|agente_campanha.php|%s|%s)%s', $dados["cmp_id"], $dados["cmp_descricao"], $dados["cmp_descricao"], $dados["cmp_qt_tronco_pa"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,AGI(retorna_campanha.php|${ID_CLI})%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Hangup()%s', $dados["cmp_id"], "\n");
fwrite($escreve, $str);
}
fclose($escreve);
/*
* Arquivo para transferir chamadas para a campanha
*/
$arq = $caminho_producao . "extensions_transfere_campanha.conf";
$escreve = fopen($arq, 'w+');
if (!$escreve)
throw new Exception("N<EFBFBD> o foi poss<EFBFBD> vel acessar o arquivo \"extensions_transfere_campanha.conf\"!");
$query = "select cmp_id, cmp_numero from pbx_campanha where cmp_status not in(0)";
$result = pg_query($dbcon, $query);
if (!$result)
throw new Exception("N<EFBFBD> o foi consultar o banco de dados!");
$str = sprintf('[transf-campanha]%s', "\n");
fwrite($escreve, $str);
while ($dados = pg_fetch_array($result)) {
if ($dados['cmp_numero']) {
$str = sprintf('exten => %s,1,Set(__TIPO=EXTERNA)%s', $dados["cmp_numero"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Set(__TIPOLIGACAO=RECEPTIVA)%s', $dados["cmp_numero"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Goto(ext-campanha|%s|1)%s', $dados["cmp_numero"], $dados["cmp_id"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => %s,n,Hangup()%s', $dados["cmp_numero"], "\n");
fwrite($escreve, $str);
}
}
fclose($escreve);
/*
* Inicio Queues campanha
*/
$arq = $caminho_producao . "queues_campanha.conf";
$escreve = fopen($arq, 'w+');
if (!$escreve)
throw new Exception("N<EFBFBD> o foi poss<EFBFBD> vel acessar o arquivo \"queues_campanha.conf\"!");
$query = "select cmp_id, cmp_descricao, cmp_estrategia_distribuicao, cmp_formato_gravacao, cmp_habilitar_gravacao from pbx_campanha where cmp_status not in(0)";
$result = pg_query($dbcon, $query);
if (!$result)
throw new Exception("N<EFBFBD> o foi consultar o banco de dados!");
while ($dados = pg_fetch_array($result)) {
$str = sprintf('[%s]%s', $dados["cmp_descricao"], "\n");
fwrite($escreve, $str);
$str = sprintf('strategy=%s%s', $dados["cmp_estrategia_distribuicao"], "\n");
fwrite($escreve, $str);
$str = sprintf('servicelevel=60%s', "\n");
fwrite($escreve, $str);
$str = sprintf('retry=1%s', "\n");
fwrite($escreve, $str);
$str = sprintf('timeout=30%s', "\n");
fwrite($escreve, $str);
$str = sprintf('maxlen=0%s', "\n");
fwrite($escreve, $str);
$str = sprintf('announce=beep%s', "\n");
fwrite($escreve, $str);
$str = sprintf('joinempty=yes%s', "\n");
fwrite($escreve, $str);
$str = sprintf('wrapuptime=0%s', "\n");
fwrite($escreve, $str);
$str = sprintf('autofill=yes%s', "\n");
fwrite($escreve, $str);
if ($dados["cmp_habilitar_gravacao"]) {
if ($dados["cmp_formato_gravacao"] == 'WAV') {
$dados["cmp_formato_gravacao"] = 'wav49';
}
$str = sprintf('monitor-format=%s%s', $dados["cmp_formato_gravacao"], "\n");
fwrite($escreve, $str);
$str = sprintf('monitor-type=mixmonitor%s', "\n");
fwrite($escreve, $str);
}
$str = sprintf('setinterfacevar=yes%s', "\n");
fwrite($escreve, $str);
$str = sprintf('%s', "\n");
fwrite($escreve, $str);
}
fclose($escreve);
/*
* Grava rotas de saida da campanha
*/
$arq = $caminho_producao . "extensions_rotas_saida_campanha.conf";
$escreve = fopen($arq, 'w+');
if (!$escreve)
throw new Exception("N<EFBFBD> o foi poss<EFBFBD> vel acessar o arquivo \"extensions_rotas_saida_campanha.conf\"!");
$query = "select cmp_id, cmp_descricao, cmp_estrategia_distribuicao, cmp_formato_gravacao, cmp_habilitar_gravacao from pbx_campanha where cmp_status not in(0)";
$queryModelo = "select cpmd_id, cmp_id, cpmd_modelo, cpmd_recorte, cpmd_acrescenta from pbx_campanha_modelos where cmp_id = '%s' ";
$queryTronco = "select a.cptr_id, a.cmp_id, a.cpmd_id, a.cptr_tronco, a.cptr_nome_tronco,
b.tipo, b.username
from pbx_campanha_troncos a, pbx_troncos b
where b.id = a.cptr_tronco
and a.cpmd_id = '%s' order by a.cptr_tronco";
$result = pg_query($dbcon, $query);
if (!$result)
throw new Exception("N<EFBFBD> o foi consultar o banco de dados!");
while ($dados = pg_fetch_array($result)) {
/*
* Dados referentes a campanha
*/
$str = sprintf('[saida-campanha-%s]%s', $dados["cmp_descricao"], "\n");
fwrite($escreve, $str);
$str = sprintf('include => saida-campanha-%s%s', $dados["cmp_descricao"] . "_custom", "\n");
fwrite($escreve, $str);
// $str = sprintf("include => saida-zenite"."\n");
// fwrite($escreve,$str);
$str = sprintf("include => padrao" . "\n");
fwrite($escreve, $str);
/*
* Seleciona os modelos por tronco
*/
$query = sprintf($queryModelo, $dados["cmp_id"]);
$resultModelo = pg_query($dbcon, $query);
if (!$resultModelo)
throw new Exception("N<EFBFBD> o foi consultar o banco de dados!");
while ($dadosModelo = pg_fetch_array($resultModelo)) {
/*
* Grava os dados referentes ao modelo
*/
$str = sprintf('exten => _%s,1,Noop(TIPO-DISCAGEM == ${TIPO-DISCAGEM})%s', $dadosModelo["cpmd_modelo"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => _%s,n,AGI(canal_discagem_automatica.php|${ID_CLI})%s', $dadosModelo["cpmd_modelo"], "\n");
fwrite($escreve, $str);
$str = sprintf('exten => _%s,n,AGI(pbx_complemento.php|${CONTEXT})%s', $dadosModelo["cpmd_modelo"], "\n");
fwrite($escreve, $str);
/*
* Seleciona os troncos por modelo
*/
$query = sprintf($queryTronco, $dadosModelo["cpmd_id"]);
$resultTronco = pg_query($dbcon, $query);
if (!$resultTronco)
throw new Exception("N<EFBFBD> o foi consultar o banco de dados!");
while ($dadosTronco = pg_fetch_array($resultTronco)) {
// $str = sprintf('exten => _%s,n,Set(GROUP()=%s)%s', $dadosModelo["cpmd_modelo"], $dadosTronco["cptr_tronco"], "\n" );
// fwrite($escreve,$str);
// $str = sprintf('exten => _%s,n,GotoIf($[${GROUP_COUNT(%s)} > 30]?limite)%s', $dadosModelo["cpmd_modelo"], $dadosTronco["cptr_tronco"], "\n" );
// fwrite($escreve,$str);
/*
Alan Pablo - 10/01/2011
Remover parametros
*/
// $str = sprintf('exten => _%s,n,Set(_TIPO=EXTERNO)%s', $dadosModelo["cpmd_modelo"], "\n" );
// fwrite($escreve,$str);
// $str = sprintf('exten => _%s,n,Macro(gravacao|OUT|${CALLERID(NUM)})%s', $dadosModelo["cpmd_modelo"], "\n" );
// fwrite($escreve,$str);
$recortar = $dadosModelo["cpmd_recorte"] ? sprintf(':%s', $dadosModelo["cpmd_recorte"]) : '';
$acrescentar = $dadosModelo["cpmd_acrescenta"] ? $dadosModelo["cpmd_acrescenta"] : '';
$str = sprintf('exten => _%s,n,Macro(dial-campanha|%s/%s/%s${EXTEN%s}|r|${ID_CLI}|${IDENTIFICADOR}|${EXTEN:-10})%s', $dadosModelo["cpmd_modelo"], $dadosTronco["tipo"], $dadosTronco["username"], $acrescentar, $recortar, "\n");
fwrite($escreve, $str);
}
$str = sprintf('exten => _%s,n,Hangup()%s', $dadosModelo["cpmd_modelo"], "\n");
fwrite($escreve, $str);
// $str = sprintf('exten => _%s,n(limite),Playback(appsounds/linhas_ocupadas)%s', $dadosModelo["cpmd_modelo"], "\n" );
// fwrite($escreve,$str);
// $str = sprintf('exten => _%s,n,Hangup()%s', $dadosModelo["cpmd_modelo"], "\n" );
// fwrite($escreve,$str);
// $str = sprintf('exten => _%s,n(senha),Playback(appsounds/utilize_senha)%s', $dadosModelo["cpmd_modelo"], "\n" );
// fwrite($escreve,$str);
// $str = sprintf('exten => _%s,n,Hangup()%s', $dadosModelo["cpmd_modelo"], "\n" );
// fwrite($escreve,$str);
}
}
fclose($escreve);
if (!GetUrl(AST_RELOAD_URA))
throw new Exception("N<EFBFBD> o foi poss<EFBFBD> vel recarregar a \"Ura\"!");
if (!GetUrl(AST_RELOAD_FILA))
throw new Exception("N<EFBFBD> o foi poss<EFBFBD> vel recarregar a \"Fila\"!");
}
function SetAgente($db) {
$idUser = GetIdUser();
$query = "select
case when(
(
select count(*)
from pbx_grupo_usuario a, pbx_usuarios b, pbx_campanha_usuarios c, pbx_campanha d
where b.id = a.user_id
and c.matricula = b.matricula
and d.cmp_id = c.cmp_id
and a.user_id = u.id
) > 0
)then 1 else 0 end as campanha,
case when(
(
select count(*)
from pbx_grupo_usuario a, pbx_fila_grupos b, pbx_queues_grupos c
where b.gp_id = a.gp_id
and c.id = b.id
and a.user_id = u.id
) > 0
)then 1 else 0 end as fila
from pbx_usuarios u
where u.id = '$idUser' ";
$result = pg_query($db, $query);
$row = @pg_fetch_row($result);
$_SESSION["SSagente"] = ($row[0] + $row[1]) > 0;
}
function IncluiAgenteFile($dbcon) {
$query = "select matricula, apelido from pbx_usuarios where delete_ = 0";
$result = pg_query($dbcon, $query);
if (!$result) {
return "N<EFBFBD> o foi poss<EFBFBD> vel acessar o banco de dados!";
} else {
$file = fopen(GetFileAgente(), 'w');
if (!$file) {
return "N<EFBFBD> o foi poss<EFBFBD> vel acessar o arquivo de dados!";
} else {
while ($row = pg_fetch_array($result)) {
$userMatricula = $row["matricula"];
$userLogin = $row["apelido"];
$conteudo = "[$userMatricula](agents)\n";
$conteudo .= "fullname = $userLogin\n";
if (fwrite($file, $conteudo) === false) {
return "N<EFBFBD> o foi poss<EFBFBD> vel gravar o arquivo de dados!";
}
}
fclose($file);
GetUrl(AST_INCLUI_AGENTE); // return "N<EFBFBD> o foi poss<EFBFBD> vel atualizar o asterisk!";
}
}
return "OK";
}
function GetListaCampanha($dbcon, $idCamp, $listId, $dtIni = '', $dtFim = '') {
$query = "select distinct a.list_id, a.list_nome || ' [' || a.list_id::text || ']' as list_nome
from pbx_campanha_lista a, pbx_campanha_contato_fone b where b.cmp_id = a.cmp_id
and b.list_id = a.list_id
and b.cmp_id = $idCamp\n";
if ($dtIni)
$query .= "and b.conf_data::date >= '$dtIni'\n";
if ($dtIni)
$query .= "and b.conf_data::date < = '$dtFim'\n";
$query .= "order by 1";
$result = pg_query($dbcon, $query);
$codSel = $listId;
$dacs = "< select name = \"listId\" id = \"listId\" size = \"1\" style = \"width:340px;\" > ";
$sel = pg_num_rows($result) ? " selected" : "";
$dacs .= "< option value = \"0\"$sel > --------------------< / option > ";
while ($dados = @pg_fetch_array($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
} else {
$sel = "";
}
$dacs .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
}
$dacs .= "< / select > ";
return $dacs;
}
function GetCampanhaRetorno($dbcon, $codDac = -1, $matricula = 0, $size = 12, $mult = 1, $disableb = "") {
$query = " select distinct cmp_id as id, cmp_descricao as nome from pbx_campanha where 1=1 order by 2 ";
$result = pg_query($dbcon, $query);
$codSel = $codDac;
$sel = $codDac ? "selected" : "";
$dacs = "< select name = \"listaDacs\" id = \"listaDacs\" $ mult size = \"$size\" $ disableb style = \"width:340px;\" onchange = \"GetCampanhaLista()\" > ";
$dacs .= "< option value = \"0\" $ sel > --------------------< / option > ";
$cont = 0;
$i = 0;
while ($dados = pg_fetch_row($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$dacs .= "< option value = \"$dados[0]\" $ sel > $dados[1]< / option > ";
$cont++;
}
$dacs .= "< / select > ";
return $dacs;
}
function GetCampanhas($dbcon, $codDac = -1, $matricula = 0, $dataIni = '', $dataFim = '') {
/*
* Carrega lista de dacs disponivel
* para ser inserdo entre as tags < select > < / select >
*/
$size = 1;
$mult = 0;
$disableb = "";
$soAtivo = 0;
$dtIni = empty($dataIni) || !is_date($dataIni) ? date('Y-m-d') : FormatDtMssql($dataIni);
$dtFim = empty($dataFim) || !is_date($dataFim) ? date('Y-m-d') : FormatDtMssql($dataFim);
$mult = $mult ? "multiple" : "";
$isAdm = IsAdmin() & & !$matricula;
if ($isAdm)
$status = $soAtivo ? " and status = 'A' " : "";
else
$status = $soAtivo ? " and d.status = 'A' " : "";
$idUser = !$matricula ? GetIdUser() : GetIdUserFromMatricula($dbcon, $matricula);
$matricula = !$matricula ? GetMatricula() : $matricula;
if (!$codDac & & !IsPostBack())
$codDac = GetDacPadraoAgente($dbcon);
if ($isAdm) {
$query = " select distinct cmp_id as id, cmp_descricao as nome, 'A' as tipo, false as padrao from pbx_campanha a where 1=1 " . ( $soAtivo ? " and cmp_status < > '0' " : "" ) .
" and cmp_id in(select cmp_id from pbx_campanha_contato_fone where conf_data::date >= '$dtIni' and conf_data::date < = '$dtFim' and cmp_id = a.cmp_id) order by 3 desc, 4 desc, 2 asc ";
// echo $query;
} else {
$query = "select distinct cmp_id as id, cmp_descricao as nome, 'A' as tipo, 'false' as padrao from pbx_campanha a where 1=1 and cmp_status < > '0'
and exists(
select ''
from pbx_campanha_usuarios b
where matricula = '$matricula'
)
and exists(select '' from pbx_campanha_contato_fone where conf_data::date >= '$dtIni' and conf_data::date < = '$dtFim' and cmp_id = a.cmp_id)
order by 1, 2 ";
}
$result = pg_query($dbcon, $query);
$codSel = $codDac;
$sel = $codDac ? "selected" : "";
$dacs = "< select name = \"listaDacs\" id = \"listaDacs\" $ mult size = \"$size\" $ disableb style = \"width:300px;\" > "; //onchange=\"GetCampanhaLista();\"
$dacs .= "< option value = \"0\" $ sel > --------------------< / option > ";
$cont = 0;
$i = 0;
while ($dados = pg_fetch_array($result)) {
if ($codSel == $dados[0]) {
$sel = "selected";
$i = 1;
} else {
$sel = "";
}
$dacs .= "< option value = \"$dados[0]-$dados[2]\" $ sel > $dados[1]< / option > ";
$cont++;
}
// if((!$cont || !$i))$dacs .= "< option value = \"\" selected > -------------------< / option > ";
$dacs .= "< / select > ";
return $dacs;
}
function _VerificaNomeTronco($db, $nome) {
$sql = "select '' from pbx_troncos where upper(nome) = upper('$nome')";
$result = pg_query($db, $sql);
if (pg_num_rows($result)) {
return "Este \"Nome\" j<EFBFBD> esta associado a outro \"Tronco\"!";
}
$sql = "select '' from pbx_ramais where nome = '$nome'";
$result = pg_query($db, $sql);
if (pg_num_rows($result)) {
return "Este \"Nome\" j<EFBFBD> esta associado a um \"Ramal\"!";
}
return false;
}
function base64ToFile($base64) {
$file = tempnam(sys_get_temp_dir(), time());
// open the output file for writing
$ifp = fopen($file, 'wb');
// we could add validation here with ensuring count( $data ) > 1
fwrite($ifp, base64_decode($base64));
// clean up the file resource
fclose($ifp);
return $file;
}
/*
* Esta funcao verifica se o dacpadrao ja foi atribuido ao usuario.
*/
function GetNotExistsDacUser($dacPadraoSel, $idUser) {
$query = sprintf("select '' from pbx_fila_grupos where id = %s and gp_id in(select gp_id from pbx_grupo_usuario where user_id = %s);", QuotedStr($dacPadraoSel), QuotedStr($idUser));
$result = pg_query($query);
return pg_num_rows($result) ? true : false;
}
?>