|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
function VerificaPerfilAcesso($db, $idProg, &$info = null) {
|
|
|
|
|
$acesso = "SSAcesso_$idProg";
|
|
|
|
|
$acessoInfo = "SSAcessoInfo_$idProg";
|
|
|
|
|
if (isset($_SESSION[$acesso]) && $_SESSION[$acesso]) {
|
|
|
|
|
if (isset($info))
|
|
|
|
|
$info = $_SESSION[$acessoInfo];
|
|
|
|
|
return true;
|
|
|
|
|
/*
|
|
|
|
|
* Usado para nao autenticar o acesso no banco a todo instante
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$idUser = GetIdUser();
|
|
|
|
|
|
|
|
|
|
if (IsAdmin()) {
|
|
|
|
|
$query = "select e.arquivo, e.exit from pbx_funcoes d, pbx_funcoes_internas e where e.id_prog_pai = d.id_prog and e.id_prog = %s
|
|
|
|
|
union all
|
|
|
|
|
select b.arquivo, b.exit from pbx_funcoes a, pbx_funcoes_internas b where b.id_prog_pai = a.id_prog and fun_public = 1 and b.id_prog = %s and b.status = 9";
|
|
|
|
|
$query = sprintf($query, QuotedStr($idProg), QuotedStr($idProg));
|
|
|
|
|
} else {
|
|
|
|
|
$query = "select e.arquivo, e.exit from pbx_usuarios a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_funcoes d, pbx_funcoes_internas e
|
|
|
|
|
where b.user_id = a.id and c.gp_id = b.gp_id and d.fun_id = c.fun_id and e.id_prog_pai = d.id_prog and a.id = %s
|
|
|
|
|
and e.id_prog = %s
|
|
|
|
|
union all
|
|
|
|
|
select b.arquivo, b.exit from pbx_funcoes a, pbx_funcoes_internas b
|
|
|
|
|
where b.id_prog_pai = a.id_prog and fun_public = 1 and b.id_prog = %s"; // and b.status = 9
|
|
|
|
|
$query = sprintf($query, QuotedStr($idUser), QuotedStr($idProg), QuotedStr($idProg));
|
|
|
|
|
}
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if ($result && isset($info)) {
|
|
|
|
|
$info = pg_fetch_array($result);
|
|
|
|
|
$_SESSION[$acesso] = 1;
|
|
|
|
|
$_SESSION[$acessoInfo] = $info;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return IsAdmin() | (($result) && (pg_numrows($result) > 0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdUser() {
|
|
|
|
|
if (IsAdmin()) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
return isset($_SESSION["SSidUser"]) ? $_SESSION["SSidUser"] : 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaCadastroMenu($conn) {
|
|
|
|
|
global $alturaTabelaAgente;
|
|
|
|
|
/*
|
|
|
|
|
* Esta funcao verifica se o menus estao cadastrdos corretamente
|
|
|
|
|
* e recria se for necessario
|
|
|
|
|
TABLE pbx_funcoes( fun_id serial NOT NULL,
|
|
|
|
|
fun_nome character varying(50) NOT NULL,
|
|
|
|
|
fun_menu integer NOT NULL DEFAULT 0,
|
|
|
|
|
fun_menu_text character varying(50),
|
|
|
|
|
fun_menu_url character varying(1024),
|
|
|
|
|
fun_menu_img character varying(1024),
|
|
|
|
|
fun_id_pai integer,
|
|
|
|
|
fun_status integer NOT NULL DEFAULT 1,
|
|
|
|
|
fun_public integer NOT NULL DEFAULT 0,
|
|
|
|
|
CONSTRAINT "pkFuncId" PRIMARY KEY (fun_id),
|
|
|
|
|
CONSTRAINT "idxFunNome" UNIQUE (fun_nome)
|
|
|
|
|
)
|
|
|
|
|
*/
|
|
|
|
|
$nomeModCli = GetNomeCadCli();
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('1', 'mnSistema', '1', 'Sistema', 'index.php?idProg=58&idMenu=1&menuNome=Sistema', '', '', '1', '0', 1, '58');
|
|
|
|
|
$link = GetLinkNovaJanela(840, $alturaTabelaAgente, 'index.php?idProg=14', 'AgenteCallcenter');
|
|
|
|
|
$menuUsuario[] = array('2', 'mnAgente', '1', 'Agente', $link, '', '1', '1', '0', '', '14');
|
|
|
|
|
|
|
|
|
|
//$menuUsuario[] = array('2','mnAgente' ,'1','Agente', 'index.php?idProg=14','','1','1','0','','14');
|
|
|
|
|
$menuUsuario[] = array('3', 'mnAudio', '1', '<EFBFBD>udio', 'index.php?idProg=23', '', '1', '1', '0', '', '23');
|
|
|
|
|
$menuUsuario[] = array('4', 'mnConfiguracao', '1', 'Configura<EFBFBD><EFBFBD>es', 'index.php?idProg=20', '', '1', '1', '0', '', '20');
|
|
|
|
|
$menuUsuario[] = array('5', 'mnGrupoUsuario', '1', 'Grupo/Usu<EFBFBD>rios', 'index.php?idProg=36', '', '1', '1', '0', '', '36');
|
|
|
|
|
//$menuUsuario[] = array('6','mnMonitor','1','Monitor do Sistema','index.php?idProg=82','','1','1','0');
|
|
|
|
|
$menuUsuario[] = array('7', 'mnSites', '1', 'Sites', 'index.php?idProg=105', '', '1', '1', '0', '', '105');
|
|
|
|
|
$menuUsuario[] = array('8', 'mnSupervisor', '1', 'Supervisor', 'index.php?idProg=6', '', '1', '1', '0', '', '6');
|
|
|
|
|
|
|
|
|
|
$link = GetLinkNovaJanela(550, 200, 'index.php?idProg=16', 'trocaSenha');
|
|
|
|
|
$menuUsuario[] = array('9', 'mnTrocaSenha', '1', 'Trocar Senha', $link, '', '1', '1', '1', '', '16');
|
|
|
|
|
|
|
|
|
|
//grupo de cadastro
|
|
|
|
|
$menuUsuario[] = array('10', 'mnCadastro', '1', 'Cadastro', 'index.php?idProg=58&idMenu=10&menuNome=Cadastro', '', '', '1', '0', 2, '58');
|
|
|
|
|
$menuUsuario[] = array('11', 'mnClassificacao', '1', 'Classifica<EFBFBD><EFBFBD>o', 'index.php?idProg=27', '', '10', '1', '0', '', '27');
|
|
|
|
|
$menuUsuario[] = array('12', 'mnContribuinte', '1', $nomeModCli, 'index.php?idProg=45', '', '209', '1', '0', '', '45');
|
|
|
|
|
$menuUsuario[] = array('13', 'mnGrupos', '1', 'Grupos de Usu<EFBFBD>rios', 'index.php?idProg=84', '', '10', '1', '0', '', '84');
|
|
|
|
|
// $menuUsuario[] = array('14', 'mnIndisponibilidade', '1', 'Indisponibilidade', 'index.php?idProg=46', '', '10', '1', '0', '', '46');
|
|
|
|
|
$menuUsuario[] = array('15', 'mnMotivosPausa', '1', 'Motivos de Pausas', 'index.php?idProg=86', '', '10', '1', '0', '', '86');
|
|
|
|
|
$menuUsuario[] = array('16', 'mnUsuario', '1', 'Usu<EFBFBD>rios', 'index.php?idProg=21', '', '10', '1', '0', '', '21');
|
|
|
|
|
|
|
|
|
|
//relatorios
|
|
|
|
|
$menuUsuario[] = array('17', 'mnRelatorio', '1', 'Relat<EFBFBD>rio', 'index.php?idProg=58&idMenu=17&menuNome=Relat<EFBFBD>rio', '', '', '1', '0', '4', '58');
|
|
|
|
|
$menuUsuario[] = array('18', 'mnCallCenter', '1', 'Call Center', 'index.php?idProg=58&idMenu=18&menuNome=Call Center', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('19', 'mnRelAbandonadaFila', '1', 'Abandonada na Fila', 'index.php?idProg=91', '', '18', '1', '0', '', '91');
|
|
|
|
|
//$menuUsuario[] = array('20','mnRelAbandonadaUra','1','Abandonadas na Ura','index.php?idProg=93','','18','1','0');
|
|
|
|
|
$menuUsuario[] = array('21', 'mnChamForaHorario', '1', 'Chamadas Fora do Hor<EFBFBD>rio', 'index.php?idProg=49', '', '55', '1', '0', '', '49');
|
|
|
|
|
$menuUsuario[] = array('22', 'mnRelDesligamento', '1', 'Chamadas Desligadas A/B', 'index.php?idProg=108', '', '18', '1', '0', '', '108');
|
|
|
|
|
$menuUsuario[] = array('23', 'mnRelRecebidasDDD', '1', 'Chamadas Totalizadas por DDD', 'index.php?idProg=95', '', '18', '1', '0', '', '95');
|
|
|
|
|
$menuUsuario[] = array('24', 'mnRelClassifica', '1', 'Classifica<EFBFBD><EFBFBD>o de Atendimento', 'index.php?idProg=51', '', '18', '1', '0', '', '51');
|
|
|
|
|
$menuUsuario[] = array('25', 'mnRelContribuinte', '1', 'Relat<EFBFBD>rio de ' . $nomeModCli, 'index.php?idProg=52', '', '18', '1', '0', '', '52');
|
|
|
|
|
$menuUsuario[] = array('27', 'mnRelDesempenhoOperacao', '1', 'Desempenho/Opera<EFBFBD><EFBFBD>o', 'index.php?idProg=97', '', '18', '1', '0', '', '97');
|
|
|
|
|
$menuUsuario[] = array('28', 'mnRelMetas', '1', 'Metas', 'index.php?idProg=58&idMenu=28&menuNome=Metas', '', '18', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('29', 'mnMetaMensal', '1', 'Meta Mensal', 'index.php?idProg=32', '', '28', '1', '0', '', '32');
|
|
|
|
|
//$menuUsuario[] = array('30','mnMetaMensaAneel','1','Meta Mensal Anal<EFBFBD>tico','index.php?idProg=1','','28','1','0','','1');
|
|
|
|
|
$menuUsuario[] = array('31', 'mnMetaDiaria', '1', 'Meta Di<EFBFBD>ria', 'index.php?idProg=33', '', '28', '1', '0', '', '33');
|
|
|
|
|
$menuUsuario[] = array('32', 'mnMetaDiariaAneel', '1', 'Meta Di<EFBFBD>ria Aneel', 'index.php?idProg=2', '', '28', '1', '0', '', '2');
|
|
|
|
|
$menuUsuario[] = array('33', 'mnRelOriginadasAgente', '1', 'Originadas/Agente', 'index.php?idProg=89', '', '18', '1', '0', '', '89');
|
|
|
|
|
$menuUsuario[] = array('34', 'mnRelProdAgente', '1', 'Produ<EFBFBD><EFBFBD>o/Agente', 'index.php?idProg=0', '', '18', '1', '0', '', '0');
|
|
|
|
|
// $menuUsuario[] = array('35','mnRamlRamal','1','Ramal/Ramal','index.php?idProg=47','','18','0','0');
|
|
|
|
|
$menuUsuario[] = array('36', 'mnRechamadas', '1', 'Rechamadas', 'index.php?idProg=110', '', '18', '1', '0', '', '110');
|
|
|
|
|
//$menuUsuario[] = array('37','mnResumoFone','1','Resumo/Fone','index.php?idProg=8','','18','1','0','','8');
|
|
|
|
|
//$menuUsuario[] = array('38','mnRelTotalTipoLigacaoUsuario','1','Totalizador Tipo de Liga<EFBFBD><EFBFBD>o/Usu<EFBFBD>rio','index.php?idProg=87','','18','1','0');
|
|
|
|
|
$menuUsuario[] = array('39', 'mnRelTransAgente', '1', 'Transf<EFBFBD>rencia/Agente', 'index.php?idProg=12', '', '18', '1', '0', '', '12');
|
|
|
|
|
$menuUsuario[] = array('40', 'mnTransferencia', '1', 'Transfer<EFBFBD>ncia', 'index.php?idProg=7', '', '18', '1', '0', '', '7');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('41', 'mnPbx', '1', 'PBX', 'index.php?idProg=58&idMenu=41&menuNome=PBX', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('42', 'mnChamadasSaintes', '1', 'Chamadas Saintes', 'index.php?idProg=58&idMenu=42&menuNome=Chamadas Saintes', '', '41', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('43', 'mnRelChamSaintesRamal', '1', 'Chamadas Saintes/Ramal', 'index.php?idProg=37', '', '42', '1', '0', '', '37');
|
|
|
|
|
$menuUsuario[] = array('44', 'mnRelChamSaintesConta', '1', 'Chamadas Saintes/Conta', 'index.php?idProg=39', '', '42', '1', '0', '', '39');
|
|
|
|
|
$menuUsuario[] = array('45', 'mnRelTotalSaintesRamal', '1', 'Totalizador Chamadas Saintes/Ramal', 'index.php?idProg=41', '', '42', '1', '0', '', '41');
|
|
|
|
|
$menuUsuario[] = array('46', 'mnRelChamSaintesCentroCusto', '1', 'Chamadas Saintes/Centro Custo', 'index.php?idProg=67', '', '42', '1', '0', '', '67');
|
|
|
|
|
$menuUsuario[] = array('47', 'mnRelSaintesTipoLigacao', '1', 'Chamadas Saintes/Tipo de Liga<EFBFBD><EFBFBD>o', 'index.php?idProg=70', '', '42', '1', '0', '', '70');
|
|
|
|
|
$menuUsuario[] = array('48', 'mnRelSaintesMaisDiscados', '1', 'Chamadas Saintes/Mais Discados', 'index.php?idProg=74', '', '42', '1', '0', '', '74');
|
|
|
|
|
$menuUsuario[] = array('108', 'mnRelTotalTipoLigacaoUsuario', '1', 'Totalizador Tipo de Liga<EFBFBD><EFBFBD>o/Usu<EFBFBD>rio', 'index.php?idProg=87', '', '42', '1', '0', '', '87');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('49', 'mnChamadasEntrantes', '1', 'Chamadas Entrantes', 'index.php?idProg=58&idMenu=49&menuNome=Chamadas Entrantes', '', '41', '1', '0', '', '58');
|
|
|
|
|
// $menuUsuario[] = array('50', 'mnRelEntrantesCaixaPostal', '1', 'Encaminhadas/Caixa Postal', 'index.php?idProg=76', '', '49', '1', '0', '', '76');
|
|
|
|
|
// $menuUsuario[] = array('51', 'mnRelEntrantesNaoAtendida', '1', 'N<EFBFBD>o Atendidas', 'index.php?idProg=78', '', '49', '1', '0', '', '78');
|
|
|
|
|
$menuUsuario[] = array('52', 'mnRelChamEntrantesGeral', '1', 'Chamadas Entrantes Geral', 'index.php?idProg=59', '', '49', '1', '0', '', '59');
|
|
|
|
|
$menuUsuario[] = array('53', 'mnRelEntrantesTipoLigacao', '1', 'Tipo de Liga<EFBFBD><EFBFBD>o', 'index.php?idProg=72', '', '49', '1', '0', '', '72');
|
|
|
|
|
$menuUsuario[] = array('54', 'mnRelTotalEntrantesRamal', '1', 'Totalizador', 'index.php?idProg=63', '', '49', '1', '0', '', '63');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('55', 'mnRelPbxGeral', '1', 'Geral', 'index.php?idProg=58&idMenu=55&menuNome=Geral', '', '41', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('56', 'mnRelRmalRamal', '1', 'Chamadas Ramal/Ramal', 'index.php?idProg=43', '', '55', '1', '0', '', '43');
|
|
|
|
|
//$menuUsuario[] = array('57', 'mnRelListaSigameExterna', '1', 'Lista Sigame Externa', 'index.php?idProg=80', '', '55', '1', '0', '', '80');
|
|
|
|
|
$menuUsuario[] = array('58', 'mnRelListaUsuarios', '1', 'Listagem de Usuarios', 'index.php?idProg=65', '', '55', '1', '0', '', '65');
|
|
|
|
|
|
|
|
|
|
// $menuUsuario[] = array('59','mnDiscador','1','Discador','','','','1','0', 3);
|
|
|
|
|
// $menuUsuario[] = array('60','mnCampanha','1','Campanha','index.php?idProg=112','','59','1','0');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('61', 'mnPbxPbx', '1', 'Pbx', 'index.php?idProg=58&idMenu=61&menuNome=PBX', '', '', '1', '0', '5', '58');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('62', 'mnPbxChamadas', '1', 'Chamadas', 'index.php?idProg=58&idMenu=62&menuNome=Chamadas', '', '61', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('63', 'mnPbxChamadasPrioridadeAtendimento', '1', 'Prioridade de Atendimento', 'index.php?idProg=10035&pbxRequest=1', '', '62', '1', '0', '', '10035');
|
|
|
|
|
$menuUsuario[] = array('64', 'mnPbxChamadasConferencias', '1', 'Confer<EFBFBD>ncias', 'index.php?idProg=10036&pbxRequest=1', '', '62', '1', '0', '', '10036');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$link = GetLinkNovaJanela(600, 280, 'index.php?idProg=10037&pbxRequest=1&acao=inseri', 'estacionamentoTransf');
|
|
|
|
|
$menuUsuario[] = array('65', 'mnPbxChamadasEstacionamentoTransferencia', '1', 'Estacionamento e Transfer<EFBFBD>ncia', $link, '', '62', '1', '0', '', '10037');
|
|
|
|
|
|
|
|
|
|
//Menu Cadastros
|
|
|
|
|
$menuUsuario[] = array('66', 'mnPbxCadastro', '1', 'Cadastro', 'index.php?idProg=58&idMenu=66&menuNome=Cadastro', '', '61', '1', '0', '', '58');
|
|
|
|
|
//$menuUsuario[] = array('67','mnPbxAgenda','1','Agenda','index.php?idProg=10004&pbxRequest=1','','66','1','0','','10004');
|
|
|
|
|
//$menuUsuario[] = array('68','mnPbxAgente','1','Agente','index.php?idProg=10001&pbxRequest=1','','66','1','0','','10001');
|
|
|
|
|
$menuUsuario[] = array('69', 'mnPbxAnuncio', '1', 'An<EFBFBD>ncio', 'index.php?idProg=10007&pbxRequest=1', '', '66', '1', '0', '', '10007');
|
|
|
|
|
$menuUsuario[] = array('70', 'mnPbxCallback', '1', 'Callback', 'index.php?idProg=10020&pbxRequest=1', '', '66', '1', '0', '', '10020');
|
|
|
|
|
$menuUsuario[] = array('71', 'mnPbxDisa', '1', 'Disa', 'index.php?idProg=10019&pbxRequest=1', '', '66', '1', '0', '', '10019');
|
|
|
|
|
$menuUsuario[] = array('72', 'mnPbxFacilidade', '1', 'Facilidades', 'index.php?idProg=10008&pbxRequest=1', '', '66', '1', '0', '', '10008');
|
|
|
|
|
$menuUsuario[] = array('73', 'mnPbxFila', '1', 'Fila', 'index.php?idProg=10002&pbxRequest=1', '', '66', '1', '0', '', '10002');
|
|
|
|
|
// $menuUsuario[] = array('74','mnPbxGrupos','1','Grupos','index.php?idProg=10023&pbxRequest=1','','66','1','0','','10023');
|
|
|
|
|
$menuUsuario[] = array('75', 'mnPbxMusicaEspera', '1', 'M<EFBFBD>sica em Espera', 'index.php?idProg=10022&pbxRequest=1', '', '66', '1', '0', '', '10022');
|
|
|
|
|
$menuUsuario[] = array('76', 'mnPbxOutros', '1', 'Outros', 'index.php?idProg=58&idMenu=76&menuNome=Outros', '', '66', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('77', 'mnPbxOutrosEmpresas', '1', 'Empresas', 'index.php?idProg=10024&pbxRequest=1', '', '76', '1', '0', '', '10024');
|
|
|
|
|
$menuUsuario[] = array('78', 'mnPbxOutrosDepartamentos', '1', 'Departamentos', 'index.php?idProg=10025&pbxRequest=1', '', '76', '1', '0', '', '10025');
|
|
|
|
|
//$menuUsuario[] = array('79','mnPbxOutrosHosts','1','Hosts','index.php?idProg=10026&pbxRequest=1','','76','1','0','','10026');
|
|
|
|
|
$menuUsuario[] = array('80', 'mnPbxOutrosContextos', '1', 'Contextos', 'index.php?idProg=10027&pbxRequest=1', '', '76', '1', '0', '', '10027');
|
|
|
|
|
$menuUsuario[] = array('81', 'mnPbxOutrosContaSenha', '1', 'Conta e Senha', 'index.php?idProg=10028&pbxRequest=1', '', '76', '1', '0', '', '10028');
|
|
|
|
|
$menuUsuario[] = array('82', 'mnPbxOutrosListaNegra', '1', 'Lista Negra', 'index.php?idProg=10029&pbxRequest=1', '', '76', '1', '0', '', '10029');
|
|
|
|
|
$menuUsuario[] = array('83', 'mnPbxOutrosGruposCaptura', '1', 'Grupos de Captura', 'index.php?idProg=10030&pbxRequest=1', '', '76', '1', '0', '', '10030');
|
|
|
|
|
|
|
|
|
|
//$menuUsuario[] = array('84', 'mnPbxRamais', '1', 'Ramais', 'index.php?idProg=58&idMenu=84&menuNome=Ramais', '', '66', '1', '0', '', '58');
|
|
|
|
|
//$menuUsuario[] = array('85', 'mnPbxRamaisSip', '1', 'SIP', 'index.php?idProg=10009&pbxRequest=1', '', '84', '1', '0', '', '10009');
|
|
|
|
|
$menuUsuario[] = array('84', 'mnPbxRamais', '1', 'Ramais Sip', 'index.php?idProg=10009&pbxRequest=1', '', '66', '1', '0', '', '10009');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('86', 'mnPbxRamaisIax', '1', 'Ramais Iax', 'index.php?idProg=10010&pbxRequest=1', '', '66', '1', '0', '', '10010');
|
|
|
|
|
//$menuUsuario[] = array('87', 'mnPbxRamaisDgv', '1', 'DGV', 'index.php?idProg=10011&pbxRequest=1', '', '84', '1', '0', '', '10011');
|
|
|
|
|
//$menuUsuario[] = array('88', 'mnPbxRamaisPbX', '1', 'PBX', 'index.php?idProg=10012&pbxRequest=1', '', '84', '1', '0', '', '10012');
|
|
|
|
|
$menuUsuario[] = array('89', 'mnPbxRotas', '1', 'Rotas', 'index.php?idProg=58&idMenu=89&menuNome=Rotas', '', '66', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('90', 'mnPbxRotasEntrada', '1', 'Entrada', 'index.php?idProg=10017&pbxRequest=1', '', '89', '1', '0', '', '10017');
|
|
|
|
|
$menuUsuario[] = array('91', 'mnPbxRotasSaida', '1', 'Sa<EFBFBD>da', 'index.php?idProg=10018&pbxRequest=1', '', '89', '1', '0', '', '10018');
|
|
|
|
|
$menuUsuario[] = array('92', 'mnPbxTroncos', '1', 'Troncos', 'index.php?idProg=58&idMenu=92&menuNome=Troncos', '', '66', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('93', 'mnPbxTroncosSIP', '1', 'SIP', 'index.php?idProg=10014&pbxRequest=1', '', '92', '1', '0', '', '10014');
|
|
|
|
|
$menuUsuario[] = array('94', 'mnPbxTroncosIAX', '1', 'IAX', 'index.php?idProg=10015&pbxRequest=1', '', '92', '1', '0', '', '10015');
|
|
|
|
|
//$menuUsuario[] = array('95', 'mnPbxTroncosDGV', '1', 'DGV', 'index.php?idProg=10016&pbxRequest=1', '', '92', '1', '0', '', '10016');
|
|
|
|
|
$menuUsuario[] = array('96', 'mnPbxUra', '1', 'Ura', 'index.php?idProg=10031&pbxRequest=1', '', '66', '1', '0', '', '10031');
|
|
|
|
|
$menuUsuario[] = array('97', 'mnPbxVoiceMail', '1', 'Voicemail', 'index.php?idProg=10032&pbxRequest=1', '', '66', '1', '0', '', '10032');
|
|
|
|
|
$menuUsuario[] = array('98', 'mnPbxHorarios', '1', 'Hor<EFBFBD>rios', 'index.php?idProg=10033&pbxRequest=1', '', '66', '1', '0', '', '10033');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('99', 'mnPbxConfiguracoes', '1', 'Configuracoes', 'index.php?idProg=58&idMenu=99&menuNome=Configura<EFBFBD><EFBFBD>es', '', '61', '1', '0', '', '58');
|
|
|
|
|
|
|
|
|
|
$link = GetLinkNovaJanela(500, 250, 'index.php?idProg=10038&pbxRequest=1&acao=inseri', 'bilhetes');
|
|
|
|
|
$menuUsuario[] = array('100', 'mnPbxConfiguracoesBilhetes', '1', 'Bilhetes', $link, '', '99', '1', '0', '', '10038');
|
|
|
|
|
|
|
|
|
|
$link = GetLinkNovaJanela(600, 280, 'index.php?idProg=10039&pbxRequest=1&acao=inseri', 'CadConfPadrao');
|
|
|
|
|
$menuUsuario[] = array('101', 'mnPbxConfiguracoesConfiguracoesPadrao', '1', 'Configura<EFBFBD><EFBFBD>es Padr<EFBFBD>o', $link, '', '99', '1', '0', '', '10039');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('102', 'mnPbxConfiguracoesConfiguracaoEmail', '1', 'Configura<EFBFBD><EFBFBD>es de Email', 'index.php?idProg=10040&pbxRequest=1', '', '99', '1', '0', '', '10040');
|
|
|
|
|
$menuUsuario[] = array('103', 'mnPbxConfiguracoesDigivoice', '1', 'Digivoice', 'index.php?idProg=10041&pbxRequest=1', '', '99', '1', '0', '', '10041');
|
|
|
|
|
// $menuUsuario[] = array('104','mnPbxConfiguracoesServicos','1','Servi<EFBFBD>os','index.php?idProg=10042&pbxRequest=1','','99','1','0','','10042');
|
|
|
|
|
$menuUsuario[] = array('105', 'mnPbxConfiguracoesArquivosSom', '1', 'Arquivos de Som', 'index.php?idProg=10043&pbxRequest=1', '', '99', '1', '0', '', '10043');
|
|
|
|
|
|
|
|
|
|
$link = GetLinkNovaJanela(700, 550, 'index.php?idProg=10034&pbxRequest=1', 'MonitorSistma');
|
|
|
|
|
$menuUsuario[] = array('106', 'mnPbxMonitor', '1', 'Monitor', 'index.php?idProg=10034&pbxRequest=1', '', '127', '1', '0', '', '10034');
|
|
|
|
|
|
|
|
|
|
//$menuUsuario[] = array('106', 'mnPbxMonitor', '1', 'Monitor', $link, '', '127', '1', '0', '', '10034');
|
|
|
|
|
$menuUsuario[] = array('107', 'mnPbxTroncosKHOMP', '1', 'KHOMP', 'index.php?idProg=10048&pbxRequest=1', '', '92', '1', '0', '', '10048');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('109', 'mnDiscador', '1', 'Discador', 'index.php?idProg=58&idMenu=109&menuNome=Discador', '', '', '1', '0', '6', '58');
|
|
|
|
|
$menuUsuario[] = array('110', 'mnCampanha', '1', 'Campanha', 'index.php?idProg=112', '', '109', '1', '0', '', '112');
|
|
|
|
|
$menuUsuario[] = array('111', 'mnRetornoCampanha', '1', 'Arquivo de Retorno', 'index.php?idProg=125', '', '109', '1', '0', '', '125');
|
|
|
|
|
$menuUsuario[] = array('113', 'mnProcessaListaCampanha', '1', 'Processar Lista de Campanha', 'index.php?idProg=132', '', '109', '1', '0', '', '132');
|
|
|
|
|
//$menuUsuario[] = array('113','mnDesempenhoCampanha','1','Relat<EFBFBD>rio de Desempenho','index.php?idProg=132','','109','1','0','','132');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('114', 'mnRamaisAgenda', '1', 'Agenda', 'index.php?idProg=58&idMenu=114&menuNome=Agenda', '', '', '1', '0', '7', '58');
|
|
|
|
|
$menuUsuario[] = array('115', 'mnDeptoRamal', '1', 'Departamentos', 'index.php?idProg=139', '', '114', '1', '0', '', '139');
|
|
|
|
|
$menuUsuario[] = array('116', 'mnRamal', '1', 'Ramais', 'index.php?idProg=140', '', '114', '1', '0', '', '140');
|
|
|
|
|
$menuUsuario[] = array('117', 'mnRelClassificaDetalhes', '1', 'Classifica<EFBFBD><EFBFBD>o Por Agente', 'index.php?idProg=150', '', '18', '1', '0', '', '150');
|
|
|
|
|
$menuUsuario[] = array('118', 'mmMetricasAnual', '1', 'Meta Anual Anal<EFBFBD>tico', 'index.php?idProg=152', '', '28', '1', '0', '', '152');
|
|
|
|
|
$menuUsuario[] = array('119', 'mnRelClassificaMensal', '1', 'Classifica<EFBFBD><EFBFBD>o Mensal', 'index.php?idProg=154', '', '18', '1', '0', '', '154');
|
|
|
|
|
|
|
|
|
|
$link = GetLinkNovaJanela(630, 460, 'index.php?idProg=156', 'AgenteCallcenterRT');
|
|
|
|
|
$menuUsuario[] = array('120', 'mnAgenteRt', '1', 'Agente Desenv ', $link, '', '1', '1', '0', '', '156');
|
|
|
|
|
|
|
|
|
|
// $menuUsuario[] = array('121', 'mnPbxRamaisDahdi', '1', 'DAHDI', 'index.php?idProg=10044&pbxRequest=1', '', '84', '1', '0', '', '10044');
|
|
|
|
|
$menuUsuario[] = array('122', 'mnReltotalizadorSaintesCentroCusto', '1', 'Totalizador/Centro Custo', 'index.php?idProg=159', '', '42', '1', '0', '', '159');
|
|
|
|
|
// $menuUsuario[] = array('123','mnCadastroMunicipio','1','Munic<EFBFBD>pios','index.php?idProg=163','','10','1','0','','163');
|
|
|
|
|
// $menuUsuario[] = array('124','mnRelClassificaMensalMunicipio','1','Classifica<EFBFBD><EFBFBD>o Mensal/Munic<EFBFBD>pio','index.php?idProg=166','','18','1','0','','166');
|
|
|
|
|
$menuUsuario[] = array('125', 'mnPbxResumoFone', '1', 'Detalhamento de Chamadas', 'index.php?idProg=172', '', '55', '1', '0', '', '172');
|
|
|
|
|
$menuUsuario[] = array('126', 'mnPausasDetalhado', '1', 'Detalhamento de Pausas', 'index.php?idProg=175', '', '18', '1', '0', '', '175');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Ferramentas do sistema
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
// $menuUsuario[] = array('61','mnPbxPbx', '1', 'Pbx', '','','','1','0', 5);
|
|
|
|
|
//Menu Cadastros
|
|
|
|
|
// $menuUsuario[] = array('66','mnPbxCadastro', '1', 'Cadastro','','','61','1','0');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('127', 'mnFerramentas', '1', 'Ferramentas', 'index.php?idProg=58&idMenu=127&menuNome=Ferramentas', '', '', '1', '0', '8', '58');
|
|
|
|
|
$link = GetLinkNovaJanela(700, 680, 'index.php?idProg=10045&pbxRequest=1', 'MonitorE1');
|
|
|
|
|
$menuUsuario[] = array('128', 'mnPbxMonitorE1', '1', 'Monitor E1', 'index.php?idProg=10045&pbxRequest=1', '', '127', '1', '0', '', '10045');
|
|
|
|
|
//$menuUsuario[] = array('128', 'mnPbxMonitorE1', '1', 'Monitor E1', $link, '', '127', '1', '0', '', '10045');
|
|
|
|
|
$menuUsuario[] = array('129', 'mnWorkflow', '1', 'Workflow', 'index.php?idProg=178', '', '127', '1', '0', '', '178');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('130', 'mnPesquisaMenu', '1', 'Pesquisa', 'index.php?idProg=58&idMenu=130&menuNome=Pesquisa', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('131', 'mnPesquisa', '1', 'Cadastro Pesquisa', 'index.php?idProg=181', '', '130', '1', '0', '', '181');
|
|
|
|
|
$menuUsuario[] = array('132', 'mnpesquisaLibera', '1', 'Pesquisa/Libera<EFBFBD><EFBFBD>o', 'index.php?idProg=185', '', '130', '1', '0', '', '185');
|
|
|
|
|
$menuUsuario[] = array('135', 'mnIntegAtiva', '1', 'Integra<EFBFBD><EFBFBD>o Ativa', 'index.php?idProg=190', '', '127', '1', '0', '', '190');
|
|
|
|
|
// $menuUsuario[] = array('136','mnRelatorioCobranca','1','Relat<EFBFBD>rio de Cobranca','index.php?idProg=193','','109','1','0','','193');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('137', 'mnTarifacao', '1', 'Tarifa<EFBFBD><EFBFBD>o', 'index.php?idProg=58&idMenu=137&menuNome=Tarifa<EFBFBD><EFBFBD>o', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('138', 'mnTarifacaoContrado', '1', 'Contratro/Operadora', 'index.php?idProg=197', '', '137', '1', '0', '', '197');
|
|
|
|
|
//$menuUsuario[] = array('139','mnTarifacaoParametros','1','Parametros','index.php?idProg=198','','137','1','0','','198');
|
|
|
|
|
$menuUsuario[] = array('140', 'mnTarifacaoOperadoras', '1', 'Operadoras', 'index.php?idProg=199', '', '137', '1', '0', '', '199');
|
|
|
|
|
$menuUsuario[] = array('141', 'mnPbxOutrosCcRamais', '1', 'Centro Custo/Ramais', 'index.php?idProg=10046&pbxRequest=0', '', '76', '1', '0', '', '10046');
|
|
|
|
|
|
|
|
|
|
//Menu tarifa<EFBFBD><EFBFBD>o abaixo de relatorios
|
|
|
|
|
$menuUsuario[] = array('142', 'mnRelTarifacao', '1', 'Tarifa<EFBFBD><EFBFBD>o', 'index.php?idProg=58&idMenu=142&menuNome=Relat<EFBFBD>rios/Tarifa<EFBFBD><EFBFBD>o', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('143', 'mnTarifaRamal', '1', 'Tarifa<EFBFBD><EFBFBD>o/Ramal', 'index.php?idProg=205', '', '142', '1', '0', '', '205');
|
|
|
|
|
$menuUsuario[] = array('144', 'mnTarifaConta', '1', 'Tarifa<EFBFBD><EFBFBD>o/Conta', 'index.php?idProg=206', '', '142', '1', '0', '', '206');
|
|
|
|
|
$menuUsuario[] = array('145', 'mnTarifaFatura', '1', 'Tarifa<EFBFBD><EFBFBD>o/Fatura', 'index.php?idProg=207', '', '142', '1', '0', '', '207');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('146', 'mnRelPesquisa', '1', 'Pesquisa', 'index.php?idProg=58&idMenu=146&menuNome=Pesquisa', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('147', 'mnpesquisaRel', '1', 'Relat<EFBFBD>rio Pesquisa', 'index.php?idProg=187', '', '146', '1', '0', '', '187');
|
|
|
|
|
$menuUsuario[] = array('148', 'mnpesquisaRelAgente', '1', 'Relat<EFBFBD>rio Pesquisa/Agente', 'index.php?idProg=188', '', '146', '1', '0', '', '188');
|
|
|
|
|
$menuUsuario[] = array('149', 'mnpesquisaAudio', '1', 'Relat<EFBFBD>rio Pesquisa/<EFBFBD>udio', 'index.php?idProg=208', '', '146', '1', '0', '', '208');
|
|
|
|
|
// (fun_id,fun_nome,fun_menu,fun_menu_text,fun_menu_url, fun_menu_img, fun_id_pai, fun_status, fun_public,ord, id_prog)
|
|
|
|
|
$menuUsuario[] = array('150', 'mnPrePago', '1', 'Pr<EFBFBD>-pago', 'index.php?idProg=58&idMenu=150&menuNome=Pr<EFBFBD>-Pago', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('151', 'mnPrePagoRamal', '1', 'Lan<EFBFBD>amentos/Ramal', 'index.php?idProg=212', '', '150', '1', '0', '', '212');
|
|
|
|
|
$menuUsuario[] = array('152', 'mnPrePagoConta', '1', 'Lan<EFBFBD>amentos/Conta', 'index.php?idProg=213', '', '150', '1', '0', '', '213');
|
|
|
|
|
//$menuUsuario[] = array('153', 'mnPbxRamaisKhomp', '1', 'KHOMP', 'index.php?idProg=10047&pbxRequest=1', '', '84', '1', '0', '', '10047');
|
|
|
|
|
// id, nome menu, menu display menu url->idprog img, pai, st, public, ord, idprog
|
|
|
|
|
$menuUsuario[] = array('154', 'mnPortabilidade', '1', 'Portabilidade', 'index.php?idProg=58&idMenu=154&menuNome=Portabilidade', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('155', 'mnMonitorPortabilidade', '1', 'Monitor da Portabilidade', 'index.php?idProg=217', '', '154', '1', '0', '', '217');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('156', 'mnBackup', '1', 'Backup', 'index.php?idProg=58&idMenu=156&menuNome=Backup', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('157', 'mnBkpDestino', '1', 'Destino do Backup', 'index.php?idProg=219', '', '156', '1', '0', '', '219');
|
|
|
|
|
$menuUsuario[] = array('158', 'mnBkpConfig', '1', 'Configura<EFBFBD><EFBFBD>es do Backup', 'index.php?idProg=221', '', '156', '1', '0', '', '221');
|
|
|
|
|
$menuUsuario[] = array('159', 'mnBkpMonitor', '1', 'Monitor do Backup', 'index.php?idProg=223', '', '156', '1', '0', '', '223');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('160', 'mnDac', '1', 'DAC', 'index.php?idProg=58&idMenu=160&menuNome=DAC', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('161', 'mnChamadasRamal', '1', 'Chamadas Ramal', 'index.php?idProg=225', '', '160', '1', '0', '', '225');
|
|
|
|
|
$menuUsuario[] = array('162', 'mnRecebidasAgente', '1', 'Recebidas por Agente', 'index.php?idProg=227', '', '18', '1', '0', '', '227');
|
|
|
|
|
$menuUsuario[] = array('163', 'mnSaintesGeral', '1', 'Chamadas Saintes Geral', 'index.php?idProg=163', '', '42', '1', '0', '', '163');
|
|
|
|
|
//$menuUsuario[] = array('164', 'mnPbxTroncosDahdi', '1', 'DAHDI', 'index.php?idProg=10049&pbxRequest=1', '', '92', '1', '0', '', '10049');
|
|
|
|
|
//$menuUsuario[] = array('165', 'mnDispoDahdi', '1', 'Dispositivo DAHDI', 'index.php?idProg=10050&pbxRequest=1', '', '66', '1', '0', '', '10050');
|
|
|
|
|
$menuUsuario[] = array('166', 'mnRelMetasdiaSemana', '1', 'Metas Dia da Semana', 'index.php?idProg=266', '', '28', '1', '0', '', '266');
|
|
|
|
|
//$menuUsuario[] = array('186','mnIndicadoresMP','1','Indicadores MP','index.php?idProg=262','','28','1','0','','262');
|
|
|
|
|
$menuUsuario[] = array('167', 'mnTarifaRefatura', '1', 'Retarifa<EFBFBD><EFBFBD>o de Chamadas', 'index.php?idProg=270', '', '137', '1', '0', '', '270');
|
|
|
|
|
|
|
|
|
|
//$menuUsuario[] = array('3','mnAudio','1','<EFBFBD>udio','index.php?idProg=23','','1','1','0','','23');
|
|
|
|
|
$menuUsuario[] = array('168', 'mnAudioDownload', '0', 'Download de <EFBFBD>udio', 'index.php?idProg=271', '', '1', '1', '0', '', '271');
|
|
|
|
|
$menuUsuario[] = array('169', 'mnRelAgenteHoras', '1', 'Agente/Horas Trabalhadas', 'index.php?idProg=273', '', '18', '1', '0', '', '273');
|
|
|
|
|
$menuUsuario[] = array('170', 'mnCampanhaContatoStatus', '1', 'Status dos Contatos', 'index.php?idProg=274', '', '109', '1', '0', '', '274');
|
|
|
|
|
//$menuUsuario[] = array('171', 'mnTeste', '1', 'Paginacao', 'index.php?idProg=277', '', '109', '1', '0', '', '277');
|
|
|
|
|
$menuUsuario[] = array('172', 'mnServicosChamadas', '1', 'Servi<EFBFBD>os de Chamadas', 'index.php?idProg=278', '', '10', '1', '0', '', '278');
|
|
|
|
|
|
|
|
|
|
//Modulo de consolida<EFBFBD><EFBFBD>o de vendas.
|
|
|
|
|
if (UseModVendas()) {
|
|
|
|
|
$nomeMenuVendas = MenuVendas();
|
|
|
|
|
$menuUsuario[] = array('173', 'mnConsolidaVendas', '1', $nomeMenuVendas, 'index.php?idProg=58&idMenu=173&menuNome=' . $nomeMenuVendas, '', '', '1', '0', '6', '58');
|
|
|
|
|
$menuUsuario[] = array('174', 'mnConsolidaVendasFunil', '1', 'Funil de Vendas', 'index.php?idProg=280', '', '173', '1', '0', '', '280');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Mesa operadora web.
|
|
|
|
|
*/
|
|
|
|
|
$menuUsuario[] = array('175', 'mnAgenteMesa', '1', 'Mesa Operadora', 'index.php?idProg=284', '', '1', '1', '0', '', '284');
|
|
|
|
|
|
|
|
|
|
if (UseModVendas()) {
|
|
|
|
|
$menuUsuario[] = array('176', 'mnGrupoVendas', '1', 'Regionais', 'index.php?idProg=285', '', '173', '1', '0', '', '285');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('177', 'mnAnalysis', '1', 'Gr<EFBFBD>ficos', 'index.php?idProg=58&idMenu=177&menuNome=Analysis', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('178', 'mnResumoOperacao', '1', 'Resumo Chamadas/DAC', 'index.php?idProg=289', '', '177', '1', '0', '', '289');
|
|
|
|
|
$menuUsuario[] = array('179', 'mnResumoOperacaoServico', '1', 'Resumo Chamadas/Servi<EFBFBD>os', 'index.php?idProg=290', '', '177', '1', '0', '', '290');
|
|
|
|
|
$menuUsuario[] = array('180', 'mnIndicesDac', '1', '<EFBFBD>ndices/DAC', 'index.php?idProg=291', '', '177', '1', '0', '', '291');
|
|
|
|
|
$menuUsuario[] = array('181', 'mnIndicesServ', '1', '<EFBFBD>ndices/Servi<EFBFBD>os', 'index.php?idProg=292', '', '177', '1', '0', '', '292');
|
|
|
|
|
$menuUsuario[] = array('182', 'mnMetaMensalServ', '1', 'Meta Mensal/Servi<EFBFBD>o', 'index.php?idProg=293', '', '28', '1', '0', '', '293');
|
|
|
|
|
$menuUsuario[] = array('183', 'mnMetaDiariaServ', '1', 'Meta Di<EFBFBD>ria/Servi<EFBFBD>o', 'index.php?idProg=294', '', '28', '1', '0', '', '294');
|
|
|
|
|
$menuUsuario[] = array('184', 'mnDesempenhoDac', '1', 'Desempenho por DAC', 'index.php?idProg=300', '', '177', '1', '0', '', '300');
|
|
|
|
|
$menuUsuario[] = array('185', 'mnDesempenhoServ', '1', 'Desempenho por Servi<EFBFBD>o', 'index.php?idProg=301', '', '177', '1', '0', '', '301');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('186', 'mnUra', '1', 'URA', 'index.php?idProg=58&idMenu=186&menuNome=URA', '', '17', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('187', 'mnUraGeral', '1', 'URA Geral', 'index.php?idProg=302', '', '186', '1', '0', '', '302');
|
|
|
|
|
$menuUsuario[] = array('188', 'mnFilaContexto', '1', 'Entradas Fila/Contexto', 'index.php?idProg=303', '', '18', '1', '0', '', '303');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Adiciona ao modulo de Auditoria ao de ferramentas.
|
|
|
|
|
*/
|
|
|
|
|
$menuUsuario[] = array('189', 'mnAuditoria', '1', 'Auditoria', 'index.php?idProg=58&idMenu=189&menuNome=Auditoria', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('190', 'mnLogFull', '1', 'Consulta Atividades', 'index.php?idProg=304', '', '189', '1', '0', '', '304');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('191', 'mnMonitorChamadas', '1', 'Monitor Chamadas', 'index.php?idProg=307&pbxRequest=1', '', '127', '1', '0', '', '307');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('192', 'mnResumoDAC', '1', 'Resumo Geral/DAC', 'index.php?idProg=308', '', '177', '1', '0', '', '308');
|
|
|
|
|
$menuUsuario[] = array('193', 'mnEntrantesDDD', '1', 'Entrantes por DDD', 'index.php?idProg=309', '', '49', '1', '0', '', '309');
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Manuais do sistema
|
|
|
|
|
*/
|
|
|
|
|
$menuUsuario[] = array('194', 'mnManUsuario', '1', 'Ajuda', 'index.php?idProg=314&idMenu=314&menuNome=Ajuda', '', '', '1', '0', '9', '314');
|
|
|
|
|
// $menuUsuario[] = array('195','mnManAgente','1','Agente','index.php?idProg=315','','194','1','0','','315');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Menu ferramentas de Atualiza<EFBFBD><EFBFBD>o das centrais
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('196', 'mnCentralAtualizacao', '1', 'Controle de Atualiza<EFBFBD><EFBFBD>o', 'index.php?idProg=58&idMenu=196&menuNome=CentralAtualizacao', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('197', 'mnCentrais', '1', 'Centrais', 'index.php?idProg=316', '', '196', '1', '0', '', '316');
|
|
|
|
|
$menuUsuario[] = array('198', 'mnHomologacoes', '1', 'Homologa<EFBFBD><EFBFBD>es', 'index.php?idProg=317', '', '196', '1', '0', '', '317');
|
|
|
|
|
/*
|
|
|
|
|
* Adciona o modulo de Administra<EFBFBD><EFBFBD>o ao de Ferramentas.
|
|
|
|
|
*
|
|
|
|
|
$menuUsuario[] = array('195', 'mnAdministrativo', '1', 'Asministra<EFBFBD><EFBFBD>o', 'index.php?idProg=58&idMenu=195&menuNome=Administra<EFBFBD><EFBFBD>o', '', '127', '1', '0', '', '58');
|
|
|
|
|
$menuUsuario[] = array('196', 'mnAcompanhaContrado', '1', 'Acompanhamento de Contratos', 'index.php?idProg=317', '', '195', '1', '0', '', '317');
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RELATORIO PBX SEM RETORNO
|
|
|
|
|
*/
|
|
|
|
|
$menuUsuario[] = array('199', 'mnRelSemRetorno', '1', 'Chamadas sem retorno', 'index.php?idProg=320', '', '55', '1', '0', '', '320');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* RELATORIO URA
|
|
|
|
|
*/
|
|
|
|
|
$menuUsuario[] = array('200', 'mnRelUraDesempenho', '1', 'URA Desempenho', 'index.php?idProg=321', '', '186', '1', '0', '', '321');
|
|
|
|
|
|
|
|
|
|
//Modulo de consolida<EFBFBD><EFBFBD>o de vendas.
|
|
|
|
|
if (UseModVendas()) {
|
|
|
|
|
$menuUsuario[] = array('201', 'mnAudiosVendas', '1', '<EFBFBD>udios ' . MenuVendas(), 'index.php?idProg=327', '', '173', '1', '0', '', '327');
|
|
|
|
|
$menuUsuario[] = array('206', 'mnRelChamadas', '1', 'Relat<EFBFBD>rio Chamadas', 'index.php?idProg=336', '', '173', '1', '0', '', '336');
|
|
|
|
|
$menuUsuario[] = array('207', 'mnRelChamadasVenda', '1', 'Relat<EFBFBD>rio Chamadas Venda', 'index.php?idProg=337', '', '173', '1', '0', '', '337');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//RELATORIO TRANSBORDO
|
|
|
|
|
$menuUsuario[] = array('202', 'mnRelTransbordo', '1', 'Transbordo', 'index.php?idProg=324', '', '18', '1', '0', '', '324');
|
|
|
|
|
$menuUsuario[] = array('203', 'mnCorrecoes', '1', 'Corre<EFBFBD><EFBFBD>es', 'index.php?idProg=325', '', '196', '1', '0', '', '325');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('204', 'mnNaoPerturbe', '1', 'N<EFBFBD>o Perturbe', 'index.php?idProg=328', '', '109', '1', '0', '', '328');
|
|
|
|
|
$menuUsuario[] = array('205', 'mnListaDiscador', '1', 'Lista Discador', 'index.php?idProg=331', '', '109', '1', '0', '', '331');
|
|
|
|
|
// ------------------- '206' -- ESTA EM USO ALGAR
|
|
|
|
|
// ------------------- '207' -- ESTA EM USO ALGAR
|
|
|
|
|
$menuUsuario[] = array('208', 'mnPrevendaLista', '1', 'Lista Pr<EFBFBD>-venda', 'index.php?idProg=338', 'Lista Pr<EFBFBD>-Venda', '209', '1', '0', '', '338');
|
|
|
|
|
$menuUsuario[] = array('209', 'mnPreVenda', '1', 'Pr<EFBFBD>-Venda', 'index.php?idProg=58&idMenu=209&menuNome=' . 'Pr<EFBFBD>-Venda', '', '', '1', '0', '6', '58');
|
|
|
|
|
$menuUsuario[] = array('210', 'mnPreVendaPermissao', '1', 'Pr<EFBFBD>-Venda Permiss<EFBFBD>o', 'index.php?idProg=338&prmPopup=1', '', '209', '1', '0', '6', '340');
|
|
|
|
|
$menuUsuario[] = array('211', 'mnRelPreVenda', '1', 'Relat<EFBFBD>rios Pr<EFBFBD>-Venda', 'index.php?idProg=351', 'Relat<EFBFBD>rio Pr<EFBFBD>-Venda', '209', '1', '0', '6', '340');
|
|
|
|
|
$menuUsuario[] = array('212', 'mnRelComissao', '1', 'Relat<EFBFBD>rios Comiss<EFBFBD>o', 'index.php?idProg=352', 'Relat<EFBFBD>rios Comiss<EFBFBD>o', '209', '1', '0', '6', '340');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('213', 'mnRelWhatsApp', '1', 'Atendimento WhatsApp', 'index.php?idProg=353', '', '18', '1', '0', '', '353');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('214', 'mnSimplesChat', '1', 'ChannelChat', 'index.php?idProg=355', '', '1', '1', '0', '', '355');
|
|
|
|
|
|
|
|
|
|
if (UseModVendas()) {
|
|
|
|
|
$menuUsuario[] = array('215', 'mnDashboard', '1', 'Dashboard ' . MenuVendas(), 'index.php?idProg=358', '', '173', '1', '0', '', '358');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('217', 'mnSimplesChatAdm', '0', 'Administrador SimplesChat', 'index.php?idProg=359', '', '1', '1', '0', '', '359');
|
|
|
|
|
$menuUsuario[] = array('218', 'mnSimplesChatSup', '0', 'Supervisor SimplesChat', 'index.php?idProg=360', '', '1', '1', '0', '', '360');
|
|
|
|
|
$menuUsuario[] = array('219', 'mnSimplesChatAgt', '0', 'Agente SimplesChat', 'index.php?idProg=361', '', '1', '1', '0', '', '361');
|
|
|
|
|
$menuUsuario[] = array('220', 'mnLgpdAdm', '0', 'Administra LGPD', 'index.php?idProg=364', '', '1', '1', '0', '', '364');
|
|
|
|
|
|
|
|
|
|
$menuUsuario[] = array('112', 'mnSair', '1', 'Sair', 'index.php?idProg=-1&DEBUG=0', '', '', '1', '1', '10', '-1');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$query = "select count(*) from pbx_funcoes";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
if ($row[0] != count($menuUsuario)) {
|
|
|
|
|
$result = pg_query($conn, 'begin');
|
|
|
|
|
//transacao iniciada com sucesso
|
|
|
|
|
if ($result) {
|
|
|
|
|
$query = "truncate table pbx_funcoes_internas";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = "truncate table pbx_funcoes";
|
|
|
|
|
if ($result) {
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
}
|
|
|
|
|
//registro apgados com sucesso
|
|
|
|
|
if ($result) {
|
|
|
|
|
//recria o menu no banco de dados
|
|
|
|
|
for ($i = 0; $i < count($menuUsuario); $i++) {
|
|
|
|
|
$query = "insert into pbx_funcoes(fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, fun_id_pai, fun_status, fun_public, ord, id_prog)
|
|
|
|
|
values( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//pega valores do menu
|
|
|
|
|
$vMenu = $menuUsuario[$i];
|
|
|
|
|
//Verifica se <EFBFBD> um link para nova janela
|
|
|
|
|
//$novaJan = (stripos($vMenu[4], 'NovaJanela') !== false);
|
|
|
|
|
$query = sprintf($query, QuotedStr($vMenu[0]), empty($vMenu[1]) ? 'null' : QuotedStr($vMenu[1]), empty($vMenu[2]) ? '0' : QuotedStr($vMenu[2]), empty($vMenu[3]) ? 'null' : QuotedStr(($vMenu[3])), //utf8_encode
|
|
|
|
|
empty($vMenu[4]) ? 'null' : QuotedStr($vMenu[4]), empty($vMenu[5]) ? 'null' : QuotedStr($vMenu[5]), empty($vMenu[6]) ? 'null' : QuotedStr($vMenu[6]), empty($vMenu[7]) ? '0' : QuotedStr($vMenu[7]), empty($vMenu[8]) ? '0' : QuotedStr($vMenu[8]), empty($vMenu[9]) ? 'null' : QuotedStr($vMenu[9]), QuotedStr($vMenu[10]));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Relaciona as funcoes internas
|
|
|
|
|
*/
|
|
|
|
|
include("util/funcoesInternas.php");
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Cria m<EFBFBD>dulo de sincroniza<EFBFBD><EFBFBD>o
|
|
|
|
|
*/
|
|
|
|
|
if (IsServerMaster()) {
|
|
|
|
|
CriaPerfilSincronizacao($conn);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Cria perfil default
|
|
|
|
|
*/
|
|
|
|
|
//$result = $result && CriaPerfil($conn, 'administrador', 'pbx_administrador_funcoes');
|
|
|
|
|
//$result = $result && CriaPerfil($conn, 'supervisor', 'pbx_supervisor_funcoes');
|
|
|
|
|
//$result = $result && CriaPerfil($conn, 'agente', 'pbx_agente_funcoes');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
pg_query($conn, 'commit');
|
|
|
|
|
} else {
|
|
|
|
|
//echo sprintf("Cmd: %s\nMetodo: %s\n", $query, GetErrorLast('Funcoes') ); exit;
|
|
|
|
|
pg_query($conn, 'rollback');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (IsAdmin()) {
|
|
|
|
|
CriaUserApi($conn);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CriaPerfilSincronizacao($conn) {
|
|
|
|
|
$result = true;
|
|
|
|
|
$query = "delete from pbx_grupo_funcoes where gp_id = (select gp_id from pbx_grupo where gp_nome = 'SincContaSenha' )";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = "delete from pbx_grupo_usuario where gp_id = (select gp_id from pbx_grupo where gp_nome = 'SincContaSenha')";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = "delete from pbx_grupo where gp_nome = 'SincContaSenha'";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = "delete from pbx_usuarios where apelido = 'sinccontasenha'";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$senhaSinc = md5("s3ncC0nt@S2nh@");
|
|
|
|
|
$checkVl = md5("sinccontasenha");
|
|
|
|
|
$query = "INSERT INTO pbx_usuarios (nome, apelido, matricula, flag, admin, senha, supervisor, agente, email, status, delete_, def_senha, senha_expira, senha_dias_expira, check_vl)
|
|
|
|
|
VALUES ('sincContaSenha', 'sinccontasenha', '0000', 1, false, '$senhaSinc', false, false, '', true, 0, 0, 0, 0, '$checkVl' )";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = "INSERT INTO pbx_grupo (gp_nome, gp_status, gp_user) VALUES ('SincContaSenha', 1, 0)";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = "INSERT INTO pbx_grupo_usuario (user_id, gp_id)
|
|
|
|
|
values (
|
|
|
|
|
(select id from pbx_usuarios where apelido = 'sinccontasenha'),
|
|
|
|
|
(select gp_id from pbx_grupo where gp_nome = 'SincContaSenha')
|
|
|
|
|
)";
|
|
|
|
|
$result = $result && pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
$query = " insert into pbx_grupo_funcoes(gp_id, fun_id)
|
|
|
|
|
select (select gp_id from pbx_grupo where gp_nome = 'SincContaSenha' ) as gp_id, fun_id
|
|
|
|
|
from pbx_funcoes
|
|
|
|
|
where fun_nome in('mnPbxPbx','mnPbxCadastro','mnPbxOutros','mnPbxOutrosEmpresas','mnPbxOutrosDepartamentos','mnPbxOutrosContaSenha')";
|
|
|
|
|
|
|
|
|
|
return ($result && pg_query($conn, $query));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//function CriaPerfil($conn, $grupo, $tableFuncoes) {
|
|
|
|
|
// /*
|
|
|
|
|
// * Apaga perfil existente
|
|
|
|
|
// */
|
|
|
|
|
// $query = "delete from pbx_grupo_funcoes where gp_id = (select gp_id from pbx_grupo where upper(gp_nome) = upper('$grupo'))";
|
|
|
|
|
// $result = @pg_query($conn, $query);
|
|
|
|
|
// if (!$result)
|
|
|
|
|
// return false;
|
|
|
|
|
//
|
|
|
|
|
// /*
|
|
|
|
|
// * Insere novo perfil com base a funcoes pre-cadastradas nas tableas pbx_administrador_funcoes, pbx_supervisor_funcoes, pbx_agente_funcoes
|
|
|
|
|
// */
|
|
|
|
|
// $query = "insert into pbx_grupo_funcoes(gp_id, fun_id)
|
|
|
|
|
// select (select gp_id from pbx_grupo where upper(gp_nome) = upper('$grupo') ) as gp_id,
|
|
|
|
|
// fun_id
|
|
|
|
|
// from pbx_funcoes
|
|
|
|
|
// where fun_nome in(select fun_nome from $tableFuncoes)";
|
|
|
|
|
// $result = @pg_query($conn, $query);
|
|
|
|
|
// if (!$result)
|
|
|
|
|
// return false;
|
|
|
|
|
//
|
|
|
|
|
// return true;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
function GetLinkNovaJanela($width, $height, $link, $nomeJan, $atrib = '') {
|
|
|
|
|
SetDimensoes($width, $height);
|
|
|
|
|
$janW = round($GLOBALS["janW"]);
|
|
|
|
|
$janH = round($GLOBALS["janH"]);
|
|
|
|
|
$atrib = trim($atrib);
|
|
|
|
|
if (empty($atrib))
|
|
|
|
|
$atrib = 'resizable=YES,scrollbars=YES';
|
|
|
|
|
$link = sprintf("javaScript:NovaJanela(\\'%s&janH=%s\\', \\'%s\\',\\'%s\\',\\'%s\\', \\'%s\\')", $link, $janH, $nomeJan, $janW, $janH, $atrib);
|
|
|
|
|
return $link;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsSuper() {
|
|
|
|
|
return ($_SESSION["SSsuper"] == 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsUserAdmin() {
|
|
|
|
|
return IsAdmin();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsAdmin() {
|
|
|
|
|
return strtoupper(GetLogin()) == 'ADMIN';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AgenteON() {
|
|
|
|
|
$query = sprintf("select '' from pbx_supervisor_agentes where matricula = '%s' and ramal = '%s' ", GetMatricula(), GetRamalMonitorar(RAMAL_MONITOR_AGENTE));
|
|
|
|
|
return pg_num_rows(pg_query($query));
|
|
|
|
|
//return GetStatusAgente() && pg_num_rows(pg_query($query));
|
|
|
|
|
//return isset($_SESSION[SS_AGENTE_CONECTADO]) && $_SESSION[SS_AGENTE_CONECTADO];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMaxAgentePausa($dac = 0) {
|
|
|
|
|
if ($dac) {
|
|
|
|
|
$query = "select max_agente_pausa from pbx_queues_grupos where id = '$dac'";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
return isset($_SESSION['prm_max_agente_pausa']) ? $_SESSION['prm_max_agente_pausa'] : 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaRamalConectado($nome) {
|
|
|
|
|
$query = "select count(*) from pbx_supervisor_agentes where ramal = '$nome' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaMaxAgentePausa($dac) {
|
|
|
|
|
/*
|
|
|
|
|
* Busca a configura<EFBFBD><EFBFBD>o da fila
|
|
|
|
|
*/
|
|
|
|
|
$percPausa = GetMaxAgentePausa($dac);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Se n<EFBFBD>o tiver configura<EFBFBD><EFBFBD>o na fila pega config
|
|
|
|
|
*/
|
|
|
|
|
//if(!$percPausa){ $percPausa = GetMaxAgentePausa(0); }
|
|
|
|
|
/*
|
|
|
|
|
* Se n<EFBFBD>o houver configura<EFBFBD><EFBFBD>o padr<EFBFBD>o retorna false. N<EFBFBD>o vai calcular o bloqueio!
|
|
|
|
|
*/
|
|
|
|
|
if (!$percPausa)
|
|
|
|
|
return false;
|
|
|
|
|
//if(IsAdmin()) echo "calc max pausa " . GetPercAgentePausa() . "<br>";
|
|
|
|
|
return GetPercAgentePausa($dac) >= $percPausa;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPercAgentePausa($dac) {
|
|
|
|
|
$query = "select count(*) as total, coalesce(sum(case when(status = 'PAUSA')then 1 else 0 end), 0) as pausa from pbx_supervisor_agentes where dac = (select nome from pbx_dacs where id = '$dac')";
|
|
|
|
|
//if(IsAdmin()) echo $query;
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_array($result);
|
|
|
|
|
$total = $row['total'];
|
|
|
|
|
$pausa = $row['pausa'];
|
|
|
|
|
//if(IsAdmin()) echo "toal = " . $total . " pausa = " . $pausa . "calc = " . ($pausa * 100.0) / $total ."roud = " . round(($pausa * 100.0) / $total);
|
|
|
|
|
return !$total ? 0 : round(($pausa * 100.0) / $total);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsSysAdmin($user = '') {
|
|
|
|
|
if (!empty($user))
|
|
|
|
|
return strtoupper($user) == 'ADMINISTRADOR';
|
|
|
|
|
else
|
|
|
|
|
return strtoupper(GetLogin()) == 'ADMINISTRADOR';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdSysAdmin($dbcon) {
|
|
|
|
|
$query = "select id from pbx_usuarios where upper(apelido) = 'ADMINISTRADOR'";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __GetLoginFromId($id) {
|
|
|
|
|
if ($id < 0) {
|
|
|
|
|
$gpId = abs($id);
|
|
|
|
|
$query = "select gp_nome from pbx_grupo where gp_id = '$gpId'";
|
|
|
|
|
} else {
|
|
|
|
|
$query = "select apelido from pbx_usuarios where id = '$id'";
|
|
|
|
|
}
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdFromLogin($dbcon, $login) {
|
|
|
|
|
$query = "select id from pbx_usuarios where upper(apelido) = upper('$login') and delete_ = 0";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CriaUserApi($dbcon) {
|
|
|
|
|
$query = "select id from pbx_usuarios where upper(apelido) = upper('user.api')";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
|
|
|
|
|
if ($result && !pg_num_rows($result)) {
|
|
|
|
|
$query = "insert into pbx_usuarios(nome,apelido,matricula, check_vl)
|
|
|
|
|
values ('USERAPI', 'user.api', (select (max(matricula::int) + 1)::text from pbx_usuarios), md5(lower('user.api')))";
|
|
|
|
|
@pg_query($dbcon, $query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function _Menu($dbcon) {
|
|
|
|
|
// fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, fun_id_pai, fun_status, fun_public
|
|
|
|
|
// 2;"mnAgente";1;"Agente";"index.php?idProg=14";"";1;1;0
|
|
|
|
|
|
|
|
|
|
$idUsuario = GetIdUser();
|
|
|
|
|
if (!$idUsuario)
|
|
|
|
|
return;
|
|
|
|
|
$startMenu = 0;
|
|
|
|
|
$makeMenu = " var MENU_ITEMS = [\n";
|
|
|
|
|
$queryNivel1 = GetQueryMenu($idUsuario, 0, 1);
|
|
|
|
|
$result = pg_query($dbcon, $queryNivel1);
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
/*
|
|
|
|
|
* Nivel 1
|
|
|
|
|
*/
|
|
|
|
|
$makeMenu .= (!$startMenu ? "" : ", " ) . sprintf("[%s, %s, %s,", IsNull($row["fun_menu_text"], 'null', 1), IsNull($row["fun_menu_url"], 'null', 1), 'null', 'null');
|
|
|
|
|
$startMenu++;
|
|
|
|
|
/*
|
|
|
|
|
* Nivel 2
|
|
|
|
|
*/
|
|
|
|
|
$idPai = $row["fun_id"];
|
|
|
|
|
$queryNivel2 = GetQueryMenu($idUsuario, $idPai);
|
|
|
|
|
$resultNivel2 = pg_query($dbcon, $queryNivel2);
|
|
|
|
|
$existeNivel2 = pg_num_rows($resultNivel2) > 0;
|
|
|
|
|
if ($existeNivel2) {
|
|
|
|
|
$makeMenu .= "\n";
|
|
|
|
|
$startMenu2 = 0;
|
|
|
|
|
while ($rowNivel2 = pg_fetch_array($resultNivel2)) {
|
|
|
|
|
$makeMenu .= (!$startMenu2 ? "" : ", " );
|
|
|
|
|
$startMenu2++;
|
|
|
|
|
$makeMenu .= sprintf(" [%s, %s, %s,", IsNull($rowNivel2["fun_menu_text"], 'null', 1), IsNull($rowNivel2["fun_menu_url"], 'null', 1), 'null'); //print nivel 2
|
|
|
|
|
$idPai = $rowNivel2["fun_id"];
|
|
|
|
|
$queryNivel3 = GetQueryMenu($idUsuario, $idPai);
|
|
|
|
|
$resultNivel3 = pg_query($dbcon, $queryNivel3);
|
|
|
|
|
$existeNivel3 = pg_num_rows($resultNivel3) > 0;
|
|
|
|
|
if ($existeNivel3) {
|
|
|
|
|
$makeMenu .= "\n";
|
|
|
|
|
$startMenu3 = 0;
|
|
|
|
|
while ($rowNivel3 = pg_fetch_array($resultNivel3)) {
|
|
|
|
|
$makeMenu .= (!$startMenu3 ? "" : ", " );
|
|
|
|
|
$startMenu3++;
|
|
|
|
|
$makeMenu .= sprintf(" [%s, %s, %s, ", IsNull($rowNivel3["fun_menu_text"], 'null', 1), IsNull($rowNivel3["fun_menu_url"], 'null', 1), 'null');
|
|
|
|
|
$idPai = $rowNivel3["fun_id"];
|
|
|
|
|
$queryNivel4 = GetQueryMenu($idUsuario, $idPai);
|
|
|
|
|
$resultNivel4 = pg_query($dbcon, $queryNivel4);
|
|
|
|
|
$existeNivel4 = pg_num_rows($resultNivel4) > 0;
|
|
|
|
|
if ($existeNivel4) {
|
|
|
|
|
$makeMenu .= "\n";
|
|
|
|
|
$startMenu4 = 0;
|
|
|
|
|
while ($rowNivel4 = pg_fetch_array($resultNivel4)) {
|
|
|
|
|
$makeMenu .= (!$startMenu4 ? "" : ", " );
|
|
|
|
|
$startMenu4++;
|
|
|
|
|
$makeMenu .= sprintf(" [%s, %s, %s,", IsNull($rowNivel4["fun_menu_text"], 'null', 1), IsNull($rowNivel4["fun_menu_url"], 'null', 1), 'null');
|
|
|
|
|
$idPai = $rowNivel4["fun_id"];
|
|
|
|
|
$queryNivel5 = GetQueryMenu($idUsuario, $idPai);
|
|
|
|
|
$resultNivel5 = pg_query($dbcon, $queryNivel5);
|
|
|
|
|
$existeNivel5 = pg_num_rows($resultNivel5) > 0;
|
|
|
|
|
if ($existeNivel5) {
|
|
|
|
|
$makeMenu .= "\n";
|
|
|
|
|
$startMenu5 = 0;
|
|
|
|
|
while ($rowNivel5 = pg_fetch_array($resultNivel4)) {
|
|
|
|
|
$makeMenu .= (!$startMenu5 ? "" : ", " );
|
|
|
|
|
$startMenu5++;
|
|
|
|
|
$makeMenu .= sprintf(" [%s, %s, %s, null]\n", IsNull($rowNivel5["fun_menu_text"], 'null', 1), IsNull($rowNivel5["fun_menu_url"], 'null', 1), 'null');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= ($existeNivel5 ? " ]\n" : "null]\n"); //fim topo
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= ($existeNivel4 ? " ]\n" : "null]\n"); //fim topo
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= ($existeNivel3 ? " ]\n" : "null]\n"); //nivel 2
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= ($existeNivel2 ? "]\n" : "null]\n"); //fim topo
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= "];";
|
|
|
|
|
return $makeMenu;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQueryMenu($idUsuario, $idPai, $menuBase = 0) {
|
|
|
|
|
$query = IsAdmin() ? " select * from pbx_funcoes where coalesce(fun_id_pai, 0) = $idPai and fun_staus = 1 order by ord" :
|
|
|
|
|
" select distinct a.fun_id, a.fun_nome, a.fun_menu, a.fun_menu_text, a.fun_menu_url, a.fun_menu_img, a.fun_id_pai, a.fun_status, a.fun_public, a.ord
|
|
|
|
|
from(
|
|
|
|
|
select a.fun_id, a.fun_nome, a.fun_menu, a.fun_menu_text, a.fun_menu_url, a.fun_menu_img, a.fun_id_pai, a.fun_status, a.fun_public, a.ord
|
|
|
|
|
from pbx_funcoes a
|
|
|
|
|
union all
|
|
|
|
|
select c.fun_id, c.fun_nome, c.fun_menu, c.fun_menu_text, c.fun_menu_url, c.fun_menu_img, c.fun_id_pai, c.fun_status, c.fun_public, c.ord
|
|
|
|
|
from pbx_funcoes b, pbx_funcoes c
|
|
|
|
|
where c.fun_id_pai = b.fun_id
|
|
|
|
|
) a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_usuarios d
|
|
|
|
|
where b.user_id = d.id
|
|
|
|
|
and c.gp_id = b.gp_id
|
|
|
|
|
and a.fun_id = c.fun_id
|
|
|
|
|
and d.id = '$idUsuario'
|
|
|
|
|
and a.fun_id_pai = '$idPai' and b.fun_status = 1 and c.fun_stasus = 1 " .
|
|
|
|
|
(
|
|
|
|
|
!$menuBase ? "" :
|
|
|
|
|
" union all
|
|
|
|
|
select a.fun_id, a.fun_nome, a.fun_menu, a.fun_menu_text, a.fun_menu_url, a.fun_menu_img, a.fun_id_pai, a.fun_status, a.fun_public, a.ord
|
|
|
|
|
from pbx_funcoes a
|
|
|
|
|
where fun_public = 1
|
|
|
|
|
and (coalesce(fun_id_pai, 0) = 0)
|
|
|
|
|
and fun_status = 1
|
|
|
|
|
order by ord
|
|
|
|
|
");
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetItensMenu($tpLayout = 0) {
|
|
|
|
|
/*
|
|
|
|
|
"mnAudio" ;"mnSupervisor" ;"mnConfiguracao" ;"mnCadastro" ;"mnSistema" ;"mnAgente" ;"mnUsuario" ;
|
|
|
|
|
"mnClassificacao" ;"mnRelatorio" ;"mnRelProdAgente" ;"mnRelTransAgente" ;"mnMetaMensal" ;"mnMetaMensaAneel" ;
|
|
|
|
|
"mnMetaDiaria" ;"mnMetaDiariaAneel" ;"mnTransferencia" ;"mnResumoFone" ;"mnTrocaSenha" ; "mnGrupoUsuario" ;
|
|
|
|
|
*/
|
|
|
|
|
if ($tpLayout == 1) {
|
|
|
|
|
return "";
|
|
|
|
|
} else {
|
|
|
|
|
$_SESSION["SStreView"] = 0;
|
|
|
|
|
//return Menu($GLOBALS["dbcon"]);
|
|
|
|
|
return MontaMenu(0, GetIdUser(), 1, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJqToolTip($obj, $text) {
|
|
|
|
|
return "\$('#$obj')
|
|
|
|
|
.hover(
|
|
|
|
|
function(){
|
|
|
|
|
\$('<div class=\"tooltip\"><b>$text</b></div>').prependTo(this);
|
|
|
|
|
},
|
|
|
|
|
function(){\$('.tooltip')._remove();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
);";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJqTips($obj) {
|
|
|
|
|
//return "$('$obj').tooltip();";
|
|
|
|
|
return "$('$obj').easyTooltip();";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJQuery($j) {
|
|
|
|
|
$result = "<script type=\"text/javascript\">\n
|
|
|
|
|
//<![CDATA[ \n";
|
|
|
|
|
$result .= "$(document).ready(function() { \n";
|
|
|
|
|
foreach ($j as $value)
|
|
|
|
|
$result .= $value . " \n";
|
|
|
|
|
|
|
|
|
|
$result .= "}); \n";
|
|
|
|
|
|
|
|
|
|
$result .= "// ]]> \n
|
|
|
|
|
</script> \n";
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJqCalendario($obj, $tgt) {
|
|
|
|
|
//return "\$('#$obj').click(function(){\$(this).calendario({target:'#$tgt'});})";
|
|
|
|
|
return sprintf('$(function() { $( "#%s" ).datepicker({ '
|
|
|
|
|
. 'autoSize: true,'
|
|
|
|
|
. 'showOn: "button", '
|
|
|
|
|
. 'buttonImage: "%s", '
|
|
|
|
|
. 'buttonImageOnly: true, '
|
|
|
|
|
. 'dateFormat: "dd/mm/yy", '
|
|
|
|
|
. 'buttonText: "Select date",'
|
|
|
|
|
. 'monthNames: [ "Janeiro", "Fevereiro", "Mar<EFBFBD>o", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" ],'
|
|
|
|
|
. 'dayNames: [ "Domingo", "Segunda", "Ter<EFBFBD>a", "Quarta", "Quita", "Sexta", "Sabado" ], '
|
|
|
|
|
. 'dayNamesMin: [ "D", "S", "T", "Q", "Q", "S", "S" ]'
|
|
|
|
|
. '}); });', ($tgt ? $tgt : 'datepicker'), ($obj ? $obj : 'images/calendar.gif'));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SubsPVirgula($str) {
|
|
|
|
|
return str_replace(";", "{#}", $str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLogoPrinc($tpLayout = 0) {
|
|
|
|
|
$path = "/";
|
|
|
|
|
return ($tpLayout == 1) || IsUserConnect() ? "" : "<div id=\"title\">
|
|
|
|
|
<table width=\"100%\" border=\"0\" cellspacing=\"10\" cellpadding=\"2\">
|
|
|
|
|
<tr>
|
|
|
|
|
<td align=\"center\"><img src=\"" . LOGO_HEADER_SITE . "\"></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</div> ";
|
|
|
|
|
//<a href=\"$path\"><img src=\"imgSite/help48.png\" alt=\"Manual do Sistema\" title=\"Manual do Sistema\" border=\"0\"></a>
|
|
|
|
|
//<a href=\"$path\" ><img src=\"imgSite/connection48.png\" alt=\"Quem Somos\" title=\"Quem Somos\" border=\"0\"></a>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetNavHeader($tpLayout = 0) {
|
|
|
|
|
return $tpLayout == 1 ? "" : "<div id=\"nav_header\"></div>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetNavLogin($tpLayout = 0, $dispProgSel = "Simples IP") {
|
|
|
|
|
$ver = GetVersao();
|
|
|
|
|
$saudaUser = "Vers<EFBFBD>o: " . $ver;
|
|
|
|
|
$data = date("d/m/Y");
|
|
|
|
|
$login = GetLogin();
|
|
|
|
|
|
|
|
|
|
$matricula = GetMatricula() ? " - " . GetMatricula() : '';
|
|
|
|
|
$imgUser = IsUserConnect() ? "userOn16.png" : "userOff16.png";
|
|
|
|
|
$style = IsUserConnect() ? "height: 50px;" : "";
|
|
|
|
|
$imgAlt = IsUserConnect() ? "alt=\"Usu<EFBFBD>rio Conectado\" title=\"Usu<EFBFBD>rio Conectado\"" : "alt=\"Usu<EFBFBD>rio Desconectado\" title=\"Usu<EFBFBD>rio Desconectado\"";
|
|
|
|
|
return $tpLayout == 1 ? "" : "<div id=\"color_bar\" style=\"width: 100%;border-radius: 5px;height: 50px;background: linear-gradient(45deg, #266cfa, #FF1472);\" >
|
|
|
|
|
<table width=\"100%\" style=\"width: 100%;\" border=\"0\" cellspacing=\"11\" cellpadding=\"3\">
|
|
|
|
|
<tr>
|
|
|
|
|
<td valign=\"middle\" align=\"left\" id=\"nav_login\"> Usuário: <img src=\"imgSite/$imgUser\" $imgAlt align=\"absmiddle\"> $login $matricula | Data: $data | $saudaUser</td>
|
|
|
|
|
<td valign=\"middle\" align=\"right\" id=\"dispProg\">Home / $dispProgSel</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</div>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDispProgSel($idProg) {
|
|
|
|
|
/*
|
|
|
|
|
* Display do programa corrente
|
|
|
|
|
*/
|
|
|
|
|
$idMenu = isset($_REQUEST['idMenu']) ? $_REQUEST['idMenu'] : 0;
|
|
|
|
|
$isMenu = 0;
|
|
|
|
|
if (($idProg == 58) && ($idMenu)) {
|
|
|
|
|
$idProg = $idMenu;
|
|
|
|
|
$isMenu = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dispProgSel = array();
|
|
|
|
|
$dispProgSel[0] = "Relat<EFBFBD>rio Produ<EFBFBD><EFBFBD>o/Agente";
|
|
|
|
|
$dispProgSel[1] = $isMenu ? "Sistema" : "Relat<EFBFBD>rio de Meta Mensal Anal<EFBFBD>tico";
|
|
|
|
|
$dispProgSel[2] = "Relat<EFBFBD>rio de Meta Di<EFBFBD>ria Aneel";
|
|
|
|
|
$dispProgSel[3] = "Relat<EFBFBD>rio Produ<EFBFBD><EFBFBD>o/Agente";
|
|
|
|
|
$dispProgSel[4] = "Relat<EFBFBD>rio de Meta Mensal";
|
|
|
|
|
$dispProgSel[5] = "Relat<EFBFBD>rio de Meta Di<EFBFBD>ria";
|
|
|
|
|
$dispProgSel[6] = "Supervisor";
|
|
|
|
|
$dispProgSel[7] = "Relat<EFBFBD>rio de Transfer<EFBFBD>ncia";
|
|
|
|
|
$dispProgSel[8] = "Relat<EFBFBD>rio de Resumo/Fone";
|
|
|
|
|
$dispProgSel[9] = "Relat<EFBFBD>rio de Transfer<EFBFBD>ncia"; //ipr
|
|
|
|
|
$dispProgSel[10] = $isMenu ? "Cadastro" : "Relat<EFBFBD>rio de Resumo/Fone"; //ipr
|
|
|
|
|
$dispProgSel[11] = "Resumo Transfer<EFBFBD>ncia/Ramal"; //inativo
|
|
|
|
|
$dispProgSel[12] = "Relat<EFBFBD>rio de Transfer<EFBFBD>ncia por Agente";
|
|
|
|
|
$dispProgSel[13] = "Relat<EFBFBD>rio de Transfer<EFBFBD>ncia por Agente";
|
|
|
|
|
$dispProgSel[14] = "Agente";
|
|
|
|
|
$dispProgSel[15] = "Agente"; //direciona para tela inicial de agente
|
|
|
|
|
$dispProgSel[16] = "Troca de Senha";
|
|
|
|
|
$dispProgSel[17] = $isMenu ? "Relat<EFBFBD>rio" : "Bloco de Notas";
|
|
|
|
|
$dispProgSel[18] = $isMenu ? "Relat<EFBFBD>rio/Call Center" : "Agenda";
|
|
|
|
|
$dispProgSel[19] = "Hist<EFBFBD>rico do Agente";
|
|
|
|
|
$dispProgSel[20] = "Configura<EFBFBD><EFBFBD>es do Sistema";
|
|
|
|
|
$dispProgSel[21] = "Cadastro de Usu<EFBFBD>rio";
|
|
|
|
|
$dispProgSel[22] = "Cadastro de Usu<EFBFBD>rio"; //operacoes de banco
|
|
|
|
|
$dispProgSel[23] = "<EFBFBD>udio";
|
|
|
|
|
$dispProgSel[24] = "Consulta de Dacs"; //inativo
|
|
|
|
|
$dispProgSel[25] = "Tranfer<EFBFBD>ncia/Agente Detalhe";
|
|
|
|
|
$dispProgSel[26] = "Comunica<EFBFBD><EFBFBD>o Asterisk";
|
|
|
|
|
$dispProgSel[27] = "Classifica<EFBFBD><EFBFBD>o de Atendimento";
|
|
|
|
|
$dispProgSel[28] = $isMenu ? "Relat<EFBFBD>rio/Call Center/Metas" : "Classifica<EFBFBD><EFBFBD>o de Atendimento";
|
|
|
|
|
$dispProgSel[29] = "Classifica<EFBFBD><EFBFBD>o de Atendimento ";
|
|
|
|
|
$dispProgSel[30] = "Classifica<EFBFBD><EFBFBD>o de Atendimento ";
|
|
|
|
|
$dispProgSel[31] = "Classifica<EFBFBD><EFBFBD>o de Atendimento ";
|
|
|
|
|
$dispProgSel[32] = "Meta Mensal";
|
|
|
|
|
$dispProgSel[33] = "Meta Di<EFBFBD>ria";
|
|
|
|
|
$dispProgSel[34] = "Meta Mensal";
|
|
|
|
|
$dispProgSel[35] = "Meta Di<EFBFBD>ria";
|
|
|
|
|
$dispProgSel[36] = "Administra<EFBFBD><EFBFBD>o de Permiss<EFBFBD>es";
|
|
|
|
|
$dispProgSel[284] = "Mesa Operadora";
|
|
|
|
|
$dispProgSel[37] = "Chamadas Saintes/Ramal";
|
|
|
|
|
$dispProgSel[38] = "Chamadas Saintes/Ramal";
|
|
|
|
|
$dispProgSel[39] = "Chamadas Saintes/Conta";
|
|
|
|
|
$dispProgSel[40] = "Chamadas Saintes/Conta";
|
|
|
|
|
$dispProgSel[41] = "Totalizador Chamadas Saintes/Ramal";
|
|
|
|
|
$dispProgSel[42] = "Menu Chamadas Saintes";
|
|
|
|
|
$dispProgSel[43] = "Chamadas Ramal a Ramal";
|
|
|
|
|
$dispProgSel[44] = "Chamadas Ramal a Ramal";
|
|
|
|
|
$dispProgSel[45] = GetNomeCadCli();
|
|
|
|
|
$dispProgSel[46] = "Indisponibilidade";
|
|
|
|
|
$dispProgSel[47] = "Ramal a Ramal";
|
|
|
|
|
$dispProgSel[48] = "Ramal a Ramal";
|
|
|
|
|
$dispProgSel[49] = "Chamadas Fora do Hor<EFBFBD>rio";
|
|
|
|
|
$dispProgSel[50] = "Chamadas Fora do Hor<EFBFBD>rio";
|
|
|
|
|
$dispProgSel[51] = "Classifica<EFBFBD><EFBFBD>o de Atendimento";
|
|
|
|
|
$dispProgSel[52] = "Relat<EFBFBD>rio de " . GetNomeCadCli();
|
|
|
|
|
$dispProgSel[53] = "Relat<EFBFBD>rio de " . GetNomeCadCli();
|
|
|
|
|
$dispProgSel[54] = GetNomeCadCli() . " Detalhes";
|
|
|
|
|
$dispProgSel[55] = "Cadastro Geral";
|
|
|
|
|
$dispProgSel[56] = "Verifica<EFBFBD><EFBFBD>o de Acesso";
|
|
|
|
|
$dispProgSel[57] = "Chamadas Saintes";
|
|
|
|
|
$dispProgSel[58] = "Chamadas Entrantes";
|
|
|
|
|
$dispProgSel[59] = "Chamadas Entrantes Geral";
|
|
|
|
|
$dispProgSel[60] = "Chamadas Entrantes/Ramal";
|
|
|
|
|
$dispProgSel[61] = $isMenu ? "PABX" : "Chamadas Entrantes/Conta";
|
|
|
|
|
$dispProgSel[62] = $isMenu ? "PABX/Chamadas" : "Chamadas Entrantes/Conta";
|
|
|
|
|
$dispProgSel[63] = "Totalizador de Chamadas Entrantes";
|
|
|
|
|
$dispProgSel[64] = "Totalizador de Chamadas Entrantes";
|
|
|
|
|
$dispProgSel[65] = "Lista Usu<EFBFBD>rios";
|
|
|
|
|
$dispProgSel[66] = $isMenu ? "PABX/Cadastro" : "Lista Usu<EFBFBD>rios";
|
|
|
|
|
$dispProgSel[67] = "Chamadas Saintes por Centro de Custo";
|
|
|
|
|
$dispProgSel[68] = "Chamadas Saintes por Centro de Custo";
|
|
|
|
|
$dispProgSel[69] = "Chamadas Saintes por Centro de Custo";
|
|
|
|
|
$dispProgSel[70] = "Chamadas Saintes por Tipo de Liga<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[71] = "Chamadas Saintes por Tipo de Liga<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[101] = "Relat<EFBFBD>rio Saintes por Tipo de Liga<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[72] = "Chamadas Entrantes por Tipo de Liga<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[103] = "Chamadas Entrantes por Tipo de Liga<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[73] = "Chamadas Entrantes por Tipo de Liga<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[74] = "Chamadas Saintes Mais Discados";
|
|
|
|
|
$dispProgSel[75] = "Chamadas Entrantes Mais Discados";
|
|
|
|
|
$dispProgSel[76] = $isMenu ? "PABX/Outros" : "Chamadas Encaminhadas p/ Caixa Postal";
|
|
|
|
|
$dispProgSel[77] = "Chamadas Encaminhadas p/ Caixa Postal";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[78] = "Chamadas Entrantes N<EFBFBD>o Atendidas";
|
|
|
|
|
$dispProgSel[79] = "Chamadas Entrantes N<EFBFBD>o Atendidas";
|
|
|
|
|
$dispProgSel[80] = "Lista Chamadas para Siga-me Externo";
|
|
|
|
|
$dispProgSel[81] = "Lista Chamadas para Siga-me Externo";
|
|
|
|
|
$dispProgSel[82] = "Monitor de Opera<EFBFBD><EFBFBD>es";
|
|
|
|
|
$dispProgSel[83] = "...";
|
|
|
|
|
$dispProgSel[84] = $isMenu ? "PABX/Ramais" : "Grupos de Usu<EFBFBD>rios";
|
|
|
|
|
$dispProgSel[85] = "...";
|
|
|
|
|
$dispProgSel[86] = "Motivos de Pausas";
|
|
|
|
|
$dispProgSel[278] = "Servi<EFBFBD>os de Chamadas";
|
|
|
|
|
$dispProgSel[87] = "Totalizador Tipo de Liga<EFBFBD><EFBFBD>o/Usu<EFBFBD>rio";
|
|
|
|
|
$dispProgSel[88] = "Totalizador Tipo de Liga<EFBFBD><EFBFBD>o/Usu<EFBFBD>rio";
|
|
|
|
|
$dispProgSel[89] = $isMenu ? "PABX/Rotas" : "Chamadas Originadas por Agente";
|
|
|
|
|
$dispProgSel[90] = "Chamadas Originadas por Agente";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[91] = "Chamadas Abandonadas na Fila";
|
|
|
|
|
$dispProgSel[92] = $isMenu ? "PABX/Troncos" : "Chamadas Abandonadas na Fila";
|
|
|
|
|
$dispProgSel[93] = "Chamadas Abandonadas na Ura";
|
|
|
|
|
$dispProgSel[94] = "Chamadas Abandonadas na Ura";
|
|
|
|
|
$dispProgSel[95] = "Chamadas Totalizadas por DDD";
|
|
|
|
|
$dispProgSel[96] = "Chamadas Totalizadas por DDD";
|
|
|
|
|
$dispProgSel[97] = "Desempenho de Opera<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[98] = "Desempenho de Opera<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[99] = "PABX/Configura<EFBFBD><EFBFBD>es";
|
|
|
|
|
$dispProgSel[105] = "Manuten<EFBFBD><EFBFBD>o de Sites";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[108] = "Chamadas Desligadas A/B";
|
|
|
|
|
$dispProgSel[109] = $isMenu ? "Discador" : "Chamadas Desligadas A/B";
|
|
|
|
|
$dispProgSel[110] = "Rechamadas";
|
|
|
|
|
$dispProgSel[111] = "Rechamadas";
|
|
|
|
|
$dispProgSel[114] = "Agenda";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[112] = "Cadastro de Campanhas";
|
|
|
|
|
$dispProgSel[121] = "Administra<EFBFBD><EFBFBD>o de Permiss<EFBFBD>es";
|
|
|
|
|
$dispProgSel[125] = "Campanha/Retorno";
|
|
|
|
|
$dispProgSel[127] = "Ferramentas";
|
|
|
|
|
$dispProgSel[130] = "Pesquisa";
|
|
|
|
|
$dispProgSel[132] = "Pr<EFBFBD>-processamento de lista";
|
|
|
|
|
$dispProgSel[137] = "Tarifa<EFBFBD><EFBFBD>o/Portabilidade";
|
|
|
|
|
$dispProgSel[139] = "Agenda/Departamentos";
|
|
|
|
|
$dispProgSel[140] = "Agenda/Ramais";
|
|
|
|
|
$dispProgSel[150] = $isMenu ? "Pr<EFBFBD>-Pago" : "Relat<EFBFBD>rio de Classifica<EFBFBD><EFBFBD>o por Agente";
|
|
|
|
|
$dispProgSel[152] = "Relat<EFBFBD>rio de Meta Anual Anal<EFBFBD>tico";
|
|
|
|
|
$dispProgSel[154] = $isMenu ? "Portabilidade" : "Relat<EFBFBD>rio de Classifica<EFBFBD><EFBFBD>o Mensal";
|
|
|
|
|
$dispProgSel[156] = "Backup";
|
|
|
|
|
$dispProgSel[190] = "Cadastro de Integra<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[159] = "Totalizador por Centro de Custo";
|
|
|
|
|
$dispProgSel[160] = "Totalizador por Centro de Custo";
|
|
|
|
|
$dispProgSel[161] = "Totalizador por Centro de Custo";
|
|
|
|
|
$dispProgSel[169] = "Totalizador por Centro de Custo";
|
|
|
|
|
$dispProgSel[171] = "Totalizador por Centro de Custo";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[163] = "Chamadas Saintes Geral";
|
|
|
|
|
$dispProgSel[165] = "Relat<EFBFBD>rio de Classifica<EFBFBD><EFBFBD>o por Munic<EFBFBD>pio";
|
|
|
|
|
$dispProgSel[166] = "Relat<EFBFBD>rio de Classifica<EFBFBD><EFBFBD>o por Munic<EFBFBD>pio";
|
|
|
|
|
$dispProgSel[172] = "Detalhamento de Chamadas";
|
|
|
|
|
$dispProgSel[175] = "Relat<EFBFBD>rio de Pausas Detalhado";
|
|
|
|
|
$dispProgSel[176] = "Relat<EFBFBD>rio de Pausas Detalhado";
|
|
|
|
|
$dispProgSel[178] = "Parametriza<EFBFBD><EFBFBD>o do Workflow";
|
|
|
|
|
$dispProgSel[193] = "Relat<EFBFBD>rio de Cobran<EFBFBD>a";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$dispProgSel[181] = "Pesquisa ACW";
|
|
|
|
|
$dispProgSel[185] = "Pesquisa/Libera<EFBFBD><EFBFBD>o";
|
|
|
|
|
$dispProgSel[187] = "Relat<EFBFBD>rio Pesquisa";
|
|
|
|
|
$dispProgSel[188] = "Relat<EFBFBD>rio Pesquisa/Agente";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[197] = "Contratos/Operadora";
|
|
|
|
|
$dispProgSel[198] = "Tarifa<EFBFBD><EFBFBD>o/Parametros";
|
|
|
|
|
$dispProgSel[199] = "Operadoras Dispon<EFBFBD>veis";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[205] = "Tarifa<EFBFBD><EFBFBD>o por Ramal";
|
|
|
|
|
$dispProgSel[206] = "Tarifa<EFBFBD><EFBFBD>o por Conta";
|
|
|
|
|
$dispProgSel[207] = "Tarifa<EFBFBD><EFBFBD>o por Fatura";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[208] = "Relat<EFBFBD>rio Pesquisa/<EFBFBD>udio";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[212] = "Pr<EFBFBD>-pago/Ramal";
|
|
|
|
|
$dispProgSel[213] = "Pr<EFBFBD>-pago/Conta";
|
|
|
|
|
$dispProgSel[214] = "Pr<EFBFBD>-pago/Ramal";
|
|
|
|
|
$dispProgSel[215] = "Pr<EFBFBD>-pago/Conta";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[216] = "Portabilidade";
|
|
|
|
|
$dispProgSel[217] = "Monitor da Portabilidade";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[218] = "Backup";
|
|
|
|
|
$dispProgSel[219] = "Backup/Destino";
|
|
|
|
|
$dispProgSel[220] = "Backup/Destino";
|
|
|
|
|
$dispProgSel[221] = "Backup/Configura<EFBFBD><EFBFBD>es";
|
|
|
|
|
$dispProgSel[222] = "Backup/Configura<EFBFBD><EFBFBD>es";
|
|
|
|
|
$dispProgSel[223] = "Backup/Monitor";
|
|
|
|
|
$dispProgSel[224] = "Backup Manual";
|
|
|
|
|
$dispProgSel[225] = "Relat<EFBFBD>rio de Chamadas/Ramal";
|
|
|
|
|
$dispProgSel[226] = "Relat<EFBFBD>rio de Chamadas/Ramal";
|
|
|
|
|
$dispProgSel[229] = "Relat<EFBFBD>rio de Chamadas Abandonadas na Fila";
|
|
|
|
|
$dispProgSel[227] = "Relat<EFBFBD>rio de Recebidas/Agente";
|
|
|
|
|
$dispProgSel[262] = "Relat<EFBFBD>rio de Indicadores/MP";
|
|
|
|
|
$dispProgSel[266] = "Relat<EFBFBD>rio Metas Dia da Semana";
|
|
|
|
|
$dispProgSel[270] = "Retarifa<EFBFBD><EFBFBD>o de Chamadas";
|
|
|
|
|
$dispProgSel[273] = "Agentes/Horas Trabalhadas";
|
|
|
|
|
$dispProgSel[274] = "Status dos Contatos Discados";
|
|
|
|
|
$dispProgSel[280] = "Funil de Vendas";
|
|
|
|
|
$dispProgSel[285] = "Regionais";
|
|
|
|
|
$dispProgSel[289] = "Resumo das Chamadas por Dac";
|
|
|
|
|
$dispProgSel[290] = "Resumo das Chamadas Servi<EFBFBD>o";
|
|
|
|
|
$dispProgSel[291] = "<EFBFBD>ndices de Atendimento por DAC";
|
|
|
|
|
$dispProgSel[292] = "<EFBFBD>ndices de Atendimento por Servi<EFBFBD>os";
|
|
|
|
|
$dispProgSel[293] = "Metas Mensais por Servi<EFBFBD>o";
|
|
|
|
|
$dispProgSel[294] = "Metas Di<EFBFBD>ria por Servi<EFBFBD>o";
|
|
|
|
|
$dispProgSel[300] = "Desempenho por DAC";
|
|
|
|
|
$dispProgSel[301] = "Desempenho por Servi<EFBFBD>o";
|
|
|
|
|
$dispProgSel[302] = "Relat<EFBFBD>rio Geral de URA";
|
|
|
|
|
$dispProgSel[303] = "Entradas Fila/Contextos";
|
|
|
|
|
$dispProgSel[304] = "Consulta Atividades";
|
|
|
|
|
$dispProgSel[306] = "Detalhamento URA";
|
|
|
|
|
$dispProgSel[307] = "Monitor Chamadas";
|
|
|
|
|
$dispProgSel[308] = "Resumo Geral DAC";
|
|
|
|
|
$dispProgSel[309] = "Entrantes por DDD";
|
|
|
|
|
$dispProgSel[314] = "Manuais do Sistema";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[316] = "Centrais";
|
|
|
|
|
$dispProgSel[317] = "Atualiza<EFBFBD><EFBFBD>es Homologadas";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[320] = "Relat<EFBFBD>rio Sem Retorno";
|
|
|
|
|
$dispProgSel[321] = "URA Desempenho";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[323] = "Relat<EFBFBD>rio URA Detalhes";
|
|
|
|
|
$dispProgSel[324] = "Relat<EFBFBD>rio Transbordo";
|
|
|
|
|
$dispProgSel[325] = "Corre<EFBFBD><EFBFBD>es";
|
|
|
|
|
$dispProgSel[327] = "<EFBFBD>udios " . MenuVendas();
|
|
|
|
|
$dispProgSel[328] = "N<EFBFBD>o Perturbe";
|
|
|
|
|
$dispProgSel[329] = "N<EFBFBD>o Perturbe";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[331] = "Lista Discador";
|
|
|
|
|
$dispProgSel[332] = "Lista Discador Arquivo";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[336] = "Relat<EFBFBD>rio de Chamadas";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[338] = "Lista Pr<EFBFBD>-venda";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[351] = "Relat<EFBFBD>rio Pr<EFBFBD>-venda";
|
|
|
|
|
$dispProgSel[352] = 'Relat<EFBFBD>rios Comiss<EFBFBD>o';
|
|
|
|
|
$dispProgSel[353] = 'Atendimento WhatsApp';
|
|
|
|
|
|
|
|
|
|
$dispProgSel[356] = 'SimplesChat';
|
|
|
|
|
$dispProgSel[358] = 'Dashboard';
|
|
|
|
|
|
|
|
|
|
$dispProgSel[10001] = "Cadastro de Agentes PBX";
|
|
|
|
|
$dispProgSel[10002] = "Cadastro de Filas";
|
|
|
|
|
$dispProgSel[10004] = "Cadastro de Agenda";
|
|
|
|
|
$dispProgSel[11004] = "Cadastro de Agenda";
|
|
|
|
|
$dispProgSel[10006] = "Fila/Grupos";
|
|
|
|
|
$dispProgSel[10007] = "Cadastro de An<EFBFBD>ncios";
|
|
|
|
|
$dispProgSel[11007] = "Cadastro de An<EFBFBD>ncios";
|
|
|
|
|
$dispProgSel[10009] = "Cadastro de Ramais Sip";
|
|
|
|
|
$dispProgSel[11009] = "Cadastro de Ramais Sip";
|
|
|
|
|
|
|
|
|
|
//$dispProgSel[10010] = "Cadastro de Ramais Iax";
|
|
|
|
|
//$dispProgSel[11010] = "Cadastro de Ramais Iax";
|
|
|
|
|
//$dispProgSel[10011] = "Cadastro de Ramais Dgv";
|
|
|
|
|
//$dispProgSel[11011] = "Cadastro de Ramais Dgv";
|
|
|
|
|
//$dispProgSel[10012] = "Cadastro de Ramais Pbx";
|
|
|
|
|
//$dispProgSel[11012] = "Cadastro de Ramais Pbx";
|
|
|
|
|
$dispProgSel[10014] = "Cadastro de Troncos Sip";
|
|
|
|
|
$dispProgSel[11014] = "Cadastro de Troncos Sip";
|
|
|
|
|
$dispProgSel[10015] = "Cadastro de Troncos Iax";
|
|
|
|
|
$dispProgSel[11015] = "Cadastro de Troncos Iax";
|
|
|
|
|
//$dispProgSel[10016] = "Cadastro de Troncos Dgv";
|
|
|
|
|
//$dispProgSel[11016] = "Cadastro de Troncos Dgv";
|
|
|
|
|
$dispProgSel[10017] = "Cadastro de Rotas de Entrada";
|
|
|
|
|
$dispProgSel[11017] = "Cadastro de Rotas de Entrada";
|
|
|
|
|
$dispProgSel[10018] = "Cadastro de Rotas de Sa<EFBFBD>da";
|
|
|
|
|
$dispProgSel[11018] = "Cadastro de Rotas de Sa<EFBFBD>da";
|
|
|
|
|
$dispProgSel[10019] = "Cadastro de Disa";
|
|
|
|
|
$dispProgSel[11019] = "Cadastro de Disa";
|
|
|
|
|
$dispProgSel[10020] = "Cadastro de Callback";
|
|
|
|
|
$dispProgSel[11020] = "Cadastro de Callback";
|
|
|
|
|
$dispProgSel[10022] = "Cadastro de M<EFBFBD>sicas em Espera";
|
|
|
|
|
$dispProgSel[11022] = "Cadastro de M<EFBFBD>sicas em Espera";
|
|
|
|
|
$dispProgSel[10023] = "Cadastro de Grupos";
|
|
|
|
|
$dispProgSel[11023] = "Cadastro de Grupos";
|
|
|
|
|
$dispProgSel[10024] = "Cadastro de Empresas";
|
|
|
|
|
$dispProgSel[11024] = "Cadastro de Empresas";
|
|
|
|
|
$dispProgSel[10025] = "Cadastro de Departamentos";
|
|
|
|
|
$dispProgSel[11025] = "Cadastro de Departamentos";
|
|
|
|
|
$dispProgSel[10026] = "Cadastro de Hosts";
|
|
|
|
|
$dispProgSel[11026] = "Cadastro de Hosts";
|
|
|
|
|
$dispProgSel[10027] = "Cadastro de Contextos";
|
|
|
|
|
$dispProgSel[11027] = "Cadastro de Contextos";
|
|
|
|
|
$dispProgSel[10028] = "Cadastro de Conta e Senha";
|
|
|
|
|
$dispProgSel[11028] = "Cadastro de Conta e Senha";
|
|
|
|
|
$dispProgSel[10029] = "Cadastro de Lista Negra";
|
|
|
|
|
$dispProgSel[11029] = "Cadastro de Lista Negra";
|
|
|
|
|
$dispProgSel[10030] = "Cadastro de Grupos de Captura";
|
|
|
|
|
$dispProgSel[11030] = "Cadastro de Grupos de Captura";
|
|
|
|
|
$dispProgSel[10031] = "Cadastro de Ura";
|
|
|
|
|
$dispProgSel[11031] = "Cadastro de Ura";
|
|
|
|
|
$dispProgSel[10032] = "Cadastro de Voicemail";
|
|
|
|
|
$dispProgSel[11032] = "Cadastro de Voicemail";
|
|
|
|
|
$dispProgSel[10033] = "Cadastro de Hor<EFBFBD>rios";
|
|
|
|
|
$dispProgSel[11033] = "Cadastro de Hor<EFBFBD>rios";
|
|
|
|
|
$dispProgSel[10034] = "Monitor de Ramais/Troncos";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[10035] = "Cadastro de Prioridades";
|
|
|
|
|
$dispProgSel[11035] = "Cadastro de Prioridades";
|
|
|
|
|
$dispProgSel[10036] = "Cadastro de Confer<EFBFBD>nias";
|
|
|
|
|
$dispProgSel[11036] = "Cadastro de Confer<EFBFBD>nias";
|
|
|
|
|
$dispProgSel[10040] = "Configura<EFBFBD><EFBFBD>es de Email";
|
|
|
|
|
$dispProgSel[11040] = "Configura<EFBFBD><EFBFBD>es de Email";
|
|
|
|
|
$dispProgSel[10041] = "Configura<EFBFBD><EFBFBD>es de Digivoice";
|
|
|
|
|
$dispProgSel[11041] = "Configura<EFBFBD><EFBFBD>es de Digivoice";
|
|
|
|
|
$dispProgSel[11042] = "Cadastro de Servi<EFBFBD>os";
|
|
|
|
|
$dispProgSel[10043] = "Arquivos de Som";
|
|
|
|
|
//$dispProgSel[10044] = "Cadastro de Ramais Dahdi";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[11043] = "Cadastro de Arquivos de Som";
|
|
|
|
|
$dispProgSel[10045] = "Monitor E1";
|
|
|
|
|
$dispProgSel[10046] = "Centro de Custo/Ramais";
|
|
|
|
|
$dispProgSel[11046] = "Centro de Custo/Ramais";
|
|
|
|
|
//$dispProgSel[10047] = "Ramais Khomp";
|
|
|
|
|
//$dispProgSel[11047] = "Ramais Khomp";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[10048] = "Troncos Khomp";
|
|
|
|
|
//$dispProgSel[10049] = "Troncos Dahdi";
|
|
|
|
|
//$dispProgSel[10050] = "Dispositivos Dahdi";
|
|
|
|
|
$dispProgSel[10052] = "Monitor Chamadas";
|
|
|
|
|
|
|
|
|
|
$dispProgSel[12000] = "Depend<EFBFBD>ncias dos Recursos";
|
|
|
|
|
|
|
|
|
|
$disp = $dispProgSel;
|
|
|
|
|
|
|
|
|
|
return (strtoupper($_SESSION["SSaut"]) == "OK") ? (isset($dispProgSel[$idProg]) ? $dispProgSel[$idProg] : "Simples IP") : GetSlogan();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMenuUser($tpUser) {
|
|
|
|
|
|
|
|
|
|
if (!IsUserConnect()) {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
$menu = " ";
|
|
|
|
|
$menu = "<script language=\"JavaScript\">\n";
|
|
|
|
|
$menu .= "<!--//\n";
|
|
|
|
|
$menu .= " new menu (MENU_ITEMS, MENU_TPL);\n";
|
|
|
|
|
$menu .= "//-->\n";
|
|
|
|
|
$menu .= "</script>\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$menuGeral = "<table class=\"menuGeral\" border=\"0\" cellspacing=\"0\" cellpadding=\"1\">
|
|
|
|
|
<tr>
|
|
|
|
|
<td valign=\"middle\" style=\"height:30px;margin:0;\"><div class=\"menuGeral\" style=\"position:relative;\">$menu</div></td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>";
|
|
|
|
|
//<th width=\"30%\" align=\"center\" nowrap><img src=\"imgSite/setaRreen.png\" align=\"absmiddle\"> $dispProgSel</th>
|
|
|
|
|
/*
|
|
|
|
|
* $tpUser == 1 Indica uma janela popup n<EFBFBD>o ir<EFBFBD> aparecer o menu
|
|
|
|
|
*/
|
|
|
|
|
return $tpUser == 1 ? "" : $menuGeral;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsUserConnect() {
|
|
|
|
|
if (!isset($_SESSION["SSaut"])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return strtoupper($_SESSION["SSaut"]) == "OK";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDisponivelFila() {
|
|
|
|
|
return $_SESSION["prm_disponivel_fila"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLogin() {
|
|
|
|
|
return IsUserConnect() ? $_SESSION["SSlogin"] : "Anônimo ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetExigeClas($db = null, $dac = 0) {
|
|
|
|
|
$dacOn = empty($_SESSION[SS_DAC_CODIGO]) ? false : $_SESSION[SS_DAC_CODIGO];
|
|
|
|
|
$dacAgente = trim($dac ? $dac : $dacOn);
|
|
|
|
|
if (!$dacAgente) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$query = "Select exige_classificacao from pbx_queues_grupos where id = '$dacAgente' ";
|
|
|
|
|
$result = $db ? pg_query($db, $query) : pg_query($query);
|
|
|
|
|
if ($result) {
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SupervisorClass($dac) {
|
|
|
|
|
$exige = array();
|
|
|
|
|
if (isset($_SESSION["SSSuperExigeClass"]) && $_SESSION["SSSuperExigeClass"])
|
|
|
|
|
$exige = $_SESSION["SSSuperExigeClass"];
|
|
|
|
|
|
|
|
|
|
if (!isset($exige[$dac])) {
|
|
|
|
|
$db = $GLOBALS['dbcon'];
|
|
|
|
|
$query = "Select exige_classificacao from pbx_queues_grupos where nome = '$dac' ";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if ($result) {
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
$exige[$dac] = $row[0];
|
|
|
|
|
$_SESSION["SSSuperExigeClass"] = $exige;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $exige[$dac];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExibePesquisa() {
|
|
|
|
|
return $_SESSION["prm_modulo_pesquisa"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function HabilitaPortabilidade() {
|
|
|
|
|
return $_SESSION["prm_portabilidade"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function HabilitaTarifacao() {
|
|
|
|
|
return $_SESSION["prm_tarifacao"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function HabilitaPrepago() {
|
|
|
|
|
return $_SESSION["prm_prepago"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetExigeClassStatusTxt($st) {
|
|
|
|
|
switch ($st) {
|
|
|
|
|
case 0: return "N<EFBFBD>o";
|
|
|
|
|
case 1: return "Sim";
|
|
|
|
|
case 2: return "...";
|
|
|
|
|
default: return "...";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetExigeClassStatus($st, $dac = '', $super = 0) {
|
|
|
|
|
if (!GetExigeClas() && !$super)
|
|
|
|
|
return true;
|
|
|
|
|
if (!SupervisorClass($dac) && $super)
|
|
|
|
|
return true;
|
|
|
|
|
switch ($st) {
|
|
|
|
|
case 0: return false;
|
|
|
|
|
case 1:
|
|
|
|
|
case 2: return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetNomeCadCli() {
|
|
|
|
|
return isset($_SESSION["prm_cadastro_atendidos"]) ? $_SESSION["prm_cadastro_atendidos"] : 'Cliente';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetSlogan() {
|
|
|
|
|
return isset($_SESSION[SS_PRM_SLOGAN]) ? $_SESSION[SS_PRM_SLOGAN] : PRM_DEF_SLOGAN;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LimpaVarRelatorio() {
|
|
|
|
|
$id = (int) isset($_GET["idProg"]) ? $_GET["idProg"] : 0;
|
|
|
|
|
|
|
|
|
|
switch ($id) {
|
|
|
|
|
case 3 :
|
|
|
|
|
case 4 :
|
|
|
|
|
case 5 :
|
|
|
|
|
case 6 :
|
|
|
|
|
case 9 :
|
|
|
|
|
case 10 :
|
|
|
|
|
case 11 :
|
|
|
|
|
case 12 :
|
|
|
|
|
case 13 :
|
|
|
|
|
case 14 :
|
|
|
|
|
case 16 :
|
|
|
|
|
case 17 :
|
|
|
|
|
case 18 :
|
|
|
|
|
case 19 :
|
|
|
|
|
case 20 :
|
|
|
|
|
case 23 :
|
|
|
|
|
case 34 :
|
|
|
|
|
case 35 :
|
|
|
|
|
case 38 :
|
|
|
|
|
case 40 :
|
|
|
|
|
case 42 :
|
|
|
|
|
case 44 :
|
|
|
|
|
case 46 :
|
|
|
|
|
case 48 :
|
|
|
|
|
case 50 :
|
|
|
|
|
case 53 :
|
|
|
|
|
case 60 :
|
|
|
|
|
case 64 :
|
|
|
|
|
case 65 :
|
|
|
|
|
case 66 :
|
|
|
|
|
case 69 :
|
|
|
|
|
case 71 :
|
|
|
|
|
case 73 :
|
|
|
|
|
case 75 :
|
|
|
|
|
case 77 :
|
|
|
|
|
case 79 :
|
|
|
|
|
case 81 :
|
|
|
|
|
case 88 :
|
|
|
|
|
case 90 :
|
|
|
|
|
case 91 :
|
|
|
|
|
case 92 :
|
|
|
|
|
case 94 :
|
|
|
|
|
case 96 :
|
|
|
|
|
case 98 :
|
|
|
|
|
case 101:
|
|
|
|
|
case 102:
|
|
|
|
|
case 103:
|
|
|
|
|
case 104:
|
|
|
|
|
case 106:
|
|
|
|
|
case 109:
|
|
|
|
|
case 110:
|
|
|
|
|
case 111:
|
|
|
|
|
case 118:
|
|
|
|
|
case 119:
|
|
|
|
|
case 159:
|
|
|
|
|
case 160:
|
|
|
|
|
case 163:
|
|
|
|
|
case 166:
|
|
|
|
|
case 171:
|
|
|
|
|
case 226:
|
|
|
|
|
$id = 0;
|
|
|
|
|
break;
|
|
|
|
|
Default: $id = 1;
|
|
|
|
|
}
|
|
|
|
|
//funcao desabilidata para havaliacao
|
|
|
|
|
$id = 0;
|
|
|
|
|
if ($id) {
|
|
|
|
|
$_SESSION["listaDacs"] = null;
|
|
|
|
|
$_SESSION["listaMes"] = null;
|
|
|
|
|
$_SESSION["listaAno"] = null;
|
|
|
|
|
$_SESSION["data"] = null;
|
|
|
|
|
$_SESSION["dataIni"] = null;
|
|
|
|
|
$_SESSION["dataFim"] = null;
|
|
|
|
|
$_SESSION["dadosRamalRamal"] = null;
|
|
|
|
|
$_SESSION["dadosForaHorario"] = null;
|
|
|
|
|
$_SESSION["ramal"] = null;
|
|
|
|
|
$_SESSION["conta"] = null;
|
|
|
|
|
$_SESSION["usuario"] = null;
|
|
|
|
|
$_SESSION["gpConta"] = null;
|
|
|
|
|
$_SESSION["gpRamal"] = null;
|
|
|
|
|
$_SESSION["gpCentroCusto"] = null;
|
|
|
|
|
$_SESSION["SSsiteDesc"] = null;
|
|
|
|
|
$_SESSION["SSLinhas"] = null;
|
|
|
|
|
$_SESSION["ramal"] = null;
|
|
|
|
|
$_SESSION["nomeAgente"] = null;
|
|
|
|
|
$_SESSION["listaAgente"] = null;
|
|
|
|
|
$_SESSION["SSresumo"] = null;
|
|
|
|
|
$_SESSION["SSmediaDia"] = null;
|
|
|
|
|
$_SESSION["SSsomaDia"] = null;
|
|
|
|
|
$_SESSION["tipoLigacao"] = null;
|
|
|
|
|
$_SESSION["setQuery"] = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IndexaMenu($dbcon, $queryHead, $queryItens, $idUser, $hiddeLink, $param = null) {
|
|
|
|
|
// fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, fun_id_pai, fun_status, fun_public
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se <EFBFBD> uma referencia a arvore de permiss<EFBFBD>es ou menu
|
|
|
|
|
*/
|
|
|
|
|
$isTree = $_SESSION["SStreView"];
|
|
|
|
|
$modMenu = 121;
|
|
|
|
|
$dadosMenu = array();
|
|
|
|
|
$menu = array();
|
|
|
|
|
$indexMenu = array(); //Guanda referncia para os menus
|
|
|
|
|
$absId = 0;
|
|
|
|
|
$idPai = 0;
|
|
|
|
|
$absIdFind = 0;
|
|
|
|
|
$idUser = empty($idUser) ? GetIdUser() : $idUser;
|
|
|
|
|
|
|
|
|
|
$query = empty($queryHead) ? QueryMenuHead($idUser) : $queryHead;
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
if ($isTree) {
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$link = $hiddeLink ? "" : sprintf("index.php?idProg=%s&funId=%s&acao=%s", $modMenu, $row["fun_id"], $_SESSION["SSperfilAcao"]);
|
|
|
|
|
$values = array("fun_menu_text" => $row["fun_menu_text"], "fun_menu_url" => $link);
|
|
|
|
|
$menu[$row["fun_id"]] = $values;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
/*
|
|
|
|
|
* Resgata valores referente ao m<EFBFBD>dulo da tabela pb_funcoes
|
|
|
|
|
* para formar os menus de primeiro n<EFBFBD>vel
|
|
|
|
|
*/
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$link = $hiddeLink ? "" : $row["fun_menu_url"];
|
|
|
|
|
$values = array("fun_menu_text" => $row["fun_menu_text"], "fun_menu_url" => $link, "fun_menu_img" => $row["fun_menu_img"]);
|
|
|
|
|
$menu[$row["fun_id"]] = $values;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Carrega valores para os sub-n<EFBFBD>veis de menu a partir
|
|
|
|
|
* da tabela
|
|
|
|
|
*/
|
|
|
|
|
$query = empty($queryItens) ? QueryMenuItens($idUser, 0, 0, $param) : $queryItens;
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$i = 0;
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$dadosMenu[$i] = $row;
|
|
|
|
|
$idxMenu[$row["fun_id"]] = $i;
|
|
|
|
|
$i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dadosMenuFind = $dadosMenu;
|
|
|
|
|
foreach ($dadosMenu as $key => $value) {
|
|
|
|
|
$absId = $value["fun_id"];
|
|
|
|
|
$start = 0;
|
|
|
|
|
$menuRef = array();
|
|
|
|
|
$idPai = $value["fun_id_pai"];
|
|
|
|
|
|
|
|
|
|
while ($idPai) {
|
|
|
|
|
|
|
|
|
|
$arRef = @$dadosMenuFind[$idxMenu[$idPai]];
|
|
|
|
|
$menuRef[] = $arRef["fun_id"];
|
|
|
|
|
$idPai = $arRef["fun_id_pai"];
|
|
|
|
|
$idFind = $arRef["fun_id"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($menuRef) {
|
|
|
|
|
krsort($menuRef);
|
|
|
|
|
$indexMenu[$absId] = $menuRef;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($dadosMenu as $value) {
|
|
|
|
|
$absId = $value["fun_id"];
|
|
|
|
|
$str = '';
|
|
|
|
|
if ($isTree) {
|
|
|
|
|
$link = $hiddeLink ? "" : sprintf("index.php?idProg=%s&funId=%s&acao=%s", $modMenu, $value["fun_id"], $_SESSION["SSperfilAcao"]);
|
|
|
|
|
$values = array("fun_menu_text" => $value["fun_menu_text"], "fun_menu_url" => $link);
|
|
|
|
|
} else {
|
|
|
|
|
$link = $hiddeLink ? "" : $value["fun_menu_url"];
|
|
|
|
|
$values = array("fun_menu_text" => $value["fun_menu_text"], "fun_menu_url" => $link, "fun_menu_img" => $value["fun_menu_img"]);
|
|
|
|
|
}
|
|
|
|
|
$arRef = isset($indexMenu[$absId]) ? $indexMenu[$absId] : array();
|
|
|
|
|
if ($arRef) {
|
|
|
|
|
foreach ($arRef as $valRef) {
|
|
|
|
|
$str .= '[' . $valRef . ']';
|
|
|
|
|
}
|
|
|
|
|
$str = "\$menu$str" . '[' . $absId . ']' . " = \$values;";
|
|
|
|
|
eval($str);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
return $menu;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQtdeDigitoConta() {
|
|
|
|
|
return $_SESSION["prm_digitos_conta"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetQtdeDigitoSenha() {
|
|
|
|
|
return $_SESSION["prm_digitos_senha"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GeraContaAuto() {
|
|
|
|
|
return $_SESSION["prm_gera_conta"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsServerMaster() {
|
|
|
|
|
return isset($_SESSION["SStpServer"]) ? $_SESSION["SStpServer"] : 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetServerName() {
|
|
|
|
|
return $_SESSION["SSserverName"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SincContaSenha() {
|
|
|
|
|
return isset($_SESSION["SSsincContaSenha"]) ? $_SESSION["SSsincContaSenha"] : 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetServerMaster() {
|
|
|
|
|
return isset($_SESSION["SShostMaster"]) ? $_SESSION["SShostMaster"] : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetDefaultSite($dbcon) {
|
|
|
|
|
$query = "select min(id) from pbx_sites ";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
$_SESSION["SSDefaultSite"] = $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetSequenciaLocal($dbcon, $nomeTable) {
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($dbcon, 'begin');
|
|
|
|
|
if (!$result)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
$query = "select id from pbx_sequencia where name_table = '$nomeTable'";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
if (!$result)
|
|
|
|
|
return 0;
|
|
|
|
|
$existeTable = pg_num_rows($result);
|
|
|
|
|
|
|
|
|
|
if ($existeTable) {
|
|
|
|
|
$dados = pg_fetch_array($result);
|
|
|
|
|
$seq = $dados['id'] + 1;
|
|
|
|
|
} else {
|
|
|
|
|
$query = "insert into pbx_sequencia(name_table, id)values('$nomeTable', 0)";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
$seq = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_sequencia set id = $seq where name_table = '$nomeTable'";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
@pg_query($dbcon, 'rollback');
|
|
|
|
|
return 0;
|
|
|
|
|
} else {
|
|
|
|
|
$result = @pg_query($dbcon, 'commit');
|
|
|
|
|
if (!$result)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
return $seq;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetModeloApl() {
|
|
|
|
|
return $_SESSION['Modelo'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetModeloRamais() {
|
|
|
|
|
return $_SESSION['Ramais'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetModeloPa() {
|
|
|
|
|
return $_SESSION['PA'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetParametrosLicensa() {
|
|
|
|
|
/*
|
|
|
|
|
* Carrega informa<EFBFBD><EFBFBD>es sobre a licensa
|
|
|
|
|
* [Product-Name] => SimplesIP
|
|
|
|
|
* [Registered-To] => Simples IP
|
|
|
|
|
* [Expires] => Never
|
|
|
|
|
* [Hardware-Locked] => No
|
|
|
|
|
* [Modelo] => SCE
|
|
|
|
|
* [PA] => 6
|
|
|
|
|
* [Ramais] => 24
|
|
|
|
|
* [Produced-By] => Simples IP
|
|
|
|
|
*/
|
|
|
|
|
//if(strtoupper(substr(PHP_OS, 0, 3)) == "WIN")
|
|
|
|
|
if (true) {
|
|
|
|
|
$lic_info = array('Product-Name' => 'SimplesIP', 'Registered-To' => 'Simples IP', 'Expires' => 'Never', 'Hardware-Locked' => 'No', 'Modelo' => 'SCE', 'PA' => '6', 'Ramais' => '24', 'Produced-By' => 'Simples IP');
|
|
|
|
|
} else {
|
|
|
|
|
$lic_info = zend_loader_file_licensed();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($lic_info as $key => $value) {
|
|
|
|
|
$_SESSION[$key] = $value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetParametros($db) {
|
|
|
|
|
$fields = array('prm_slogan', 'prm_path_audio', 'prm_path_arq_agente', 'prm_logo_relatorio', 'prm_relatorio_head', 'prm_relatorio_linha1', 'prm_relatorio_linha2', 'prm_msg_senha_def',
|
|
|
|
|
'prm_msg_senha_exp', 'prm_url_asterisk', 'prm_agente_classifica', 'prm_agente_proto', 'prm_agente_contribuinte', 'prm_ddd_padrao', 'path_som', 'prm_mun_padrao', 'prm_uf_padrao',
|
|
|
|
|
'prm_cadastro_atendidos', 'prm_super_atualiza', 'prm_agente_atualiza', 'prm_sk_host', 'prm_sk_port', 'prm_sk_login', 'prm_sk_password', 'prm_digitos_conta', 'prm_digitos_senha',
|
|
|
|
|
'prm_gera_conta', 'prm_super_alerta_atende', 'prm_super_alerta_pausa', 'prm_super_alerta_livre', 'prm_pausa_grupo', 'prm_atende_auto', 'prm_atende_manual', 'prm_atende_preferencial',
|
|
|
|
|
'prm_classifica_municipio', 'prm_max_agente_pausa', 'prm_disponivel_fila', 'prm_boloco_notas_key', 'caminho_producao', 'prm_exige_classificacao', 'prm_obs_pausaprod', 'prm_modulo_pesquisa',
|
|
|
|
|
'prm_portabilidade', 'prm_tarifacao', 'prm_prepago', 'prm_use_discador', 'prm_tempo_sessao', 'prm_agente_nova_janela', 'prm_label_protoco_pesquisa', 'prm_label_protoco_texto', 'prm_label_protoco_grid',
|
|
|
|
|
'prm_registro_pagina', 'prm_use_vendas', 'prm_nome_vendas', 'prm_exige_proto_vendas', 'prm_alerta_classificacao', 'prm_ativa_integracao', 'prm_select_integracao', 'prm_aviso_desconnect', 'prm_link_audio',
|
|
|
|
|
'prm_ocultar_telefone', 'prm_ocultar_email', 'prm_ocultar_documento', 'prm_sk_host_chat', 'prm_chat_api', 'prm_chat_url_client', 'prm_sk_api_centrais', 'prm_max_licenca', 'prm_max_ramal', 'prm_max_licenca_fixo', 'prm_media_simultaneo', 'prm_ativa_complemento_campanha');
|
|
|
|
|
|
|
|
|
|
$query = "select prm_slogan, prm_path_audio, prm_path_arq_agente, prm_logo_relatorio, prm_relatorio_head, prm_relatorio_linha1,
|
|
|
|
|
prm_relatorio_linha2,
|
|
|
|
|
case when(coalesce(prm_agente_atualiza, 5) = 0)then 5 else coalesce(prm_agente_atualiza, 5) end as prm_agente_atualiza,
|
|
|
|
|
case when(coalesce(prm_super_atualiza, 10) = 0)then 10 else coalesce(prm_super_atualiza, 10) end as prm_super_atualiza,
|
|
|
|
|
coalesce(prm_agente_classifica, 0) as prm_agente_classifica, prm_msg_senha_def, prm_msg_senha_exp, prm_url_asterisk,
|
|
|
|
|
prm_agente_proto, prm_agente_contribuinte, prm_ddd_padrao, (SELECT min(path_som) FROM pbx_conf_padrao) as path_som,
|
|
|
|
|
prm_mun_padrao, prm_uf_padrao, prm_cadastro_atendidos, prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password,
|
|
|
|
|
prm_digitos_conta, prm_digitos_senha, prm_gera_conta, prm_super_alerta_atende, prm_super_alerta_pausa, prm_super_alerta_livre,
|
|
|
|
|
prm_pausa_grupo, prm_atende_auto, prm_atende_manual, prm_atende_preferencial, prm_classifica_municipio, prm_max_agente_pausa,
|
|
|
|
|
prm_disponivel_fila, prm_boloco_notas_key, (SELECT min(caminho_producao) FROM pbx_conf_padrao) as caminho_producao,
|
|
|
|
|
prm_exige_classificacao, prm_obs_pausaprod, prm_modulo_pesquisa, prm_portabilidade, prm_tarifacao, prm_prepago, prm_use_discador,
|
|
|
|
|
prm_tempo_sessao, prm_agente_nova_janela, prm_label_protoco_pesquisa, prm_label_protoco_texto, prm_label_protoco_grid,
|
|
|
|
|
prm_registro_pagina, prm_use_vendas, prm_nome_vendas, prm_exige_proto_vendas, prm_alerta_classificacao, prm_ativa_integracao, prm_select_integracao, prm_aviso_desconnect,
|
|
|
|
|
prm_link_audio, prm_ocultar_telefone, prm_ocultar_email, prm_ocultar_documento, prm_sk_host_chat, prm_chat_api, prm_chat_url_client, prm_sk_api_centrais, prm_max_licenca, prm_max_ramal, prm_max_licenca_fixo, prm_media_simultaneo, prm_ativa_complemento_campanha
|
|
|
|
|
from pbx_parametros
|
|
|
|
|
where id = 1";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
//if(IsAdmin ()) echo $query;
|
|
|
|
|
$numReg = pg_num_rows($result);
|
|
|
|
|
|
|
|
|
|
if ($numReg) {
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
if (!empty($row["prm_agente_atualiza"])) {
|
|
|
|
|
foreach ($fields as $value) {
|
|
|
|
|
$_SESSION[$value] = $row[$value];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetDimensoes($width, $height) {
|
|
|
|
|
//agente '580','300'
|
|
|
|
|
/*
|
|
|
|
|
* A fun<EFBFBD><EFBFBD>o ajusta as medidas para diferentes Browsers e plataformas
|
|
|
|
|
* tendo com base as medidas criadas para o ie7>
|
|
|
|
|
*/
|
|
|
|
|
$browser = $GLOBALS["infoDispositivo"];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Parametroza<EFBFBD><EFBFBD>o de acordo com plataforma/browser da
|
|
|
|
|
* quantidade em percentual para ajuste.
|
|
|
|
|
*/
|
|
|
|
|
$arParam[Browser::PLATFORM_LINUX][Browser::BROWSER_FIREFOX] = array('width' => '4', 'height' => '2');
|
|
|
|
|
$arParam[Browser::PLATFORM_WINDOWS][Browser::BROWSER_FIREFOX] = array('width' => '4', 'height' => '2');
|
|
|
|
|
|
|
|
|
|
$arParam[Browser::PLATFORM_LINUX][Browser::BROWSER_CHROME] = array('width' => '0', 'height' => '2');
|
|
|
|
|
$arParam[Browser::PLATFORM_WINDOWS][Browser::BROWSER_CHROME] = array('width' => '0', 'height' => '2');
|
|
|
|
|
|
|
|
|
|
$arParam[Browser::PLATFORM_LINUX][Browser::BROWSER_OPERA] = array('width' => '0', 'height' => '2');
|
|
|
|
|
$arParam[Browser::PLATFORM_WINDOWS][Browser::BROWSER_OPERA] = array('width' => '0', 'height' => '2');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Identifica as medidas a serem ajustada de acordo com a plataforma/browser
|
|
|
|
|
|
|
|
|
|
$medidas = $arParam[$browser->getPlatform()][$browser->getBrowser()];
|
|
|
|
|
|
|
|
|
|
if(!empty($medidas))
|
|
|
|
|
{
|
|
|
|
|
// if($medidas['width']) { $width += ($width * ($medidas['width'] / 100.0)); }
|
|
|
|
|
// if($medidas['height']) { $height += ($height * ($medidas['height'] / 100.0)); }
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
//echo sprintf("Width: %s [%s] Height: %s Browser: %s [%s] Plataforma: %s [%s] ", $width, $medidas['width'], $height, $browser->getBrowser(), Browser::BROWSER_FIREFOX, $browser->getPlatform(), Browser::PLATFORM_LINUX );
|
|
|
|
|
|
|
|
|
|
$GLOBALS["janW"] = $width;
|
|
|
|
|
$GLOBALS["janH"] = $height;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function roundUp($value, $precision = 2) {
|
|
|
|
|
// If the precision is 0 then default the factor to 1, otherwise
|
|
|
|
|
// use 10^$precision. This effectively shifts the decimal point to the
|
|
|
|
|
// right.
|
|
|
|
|
if ($precision == 0) {
|
|
|
|
|
$precisionFactor = 1;
|
|
|
|
|
} else {
|
|
|
|
|
$precisionFactor = pow(10, $precision);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ceil doesn't have any notion of precision, so by multiplying by
|
|
|
|
|
// the right factor and then dividing by the same factor we
|
|
|
|
|
// emulate a precision
|
|
|
|
|
return ceil($value * $precisionFactor) / $precisionFactor;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function UsePausaGrupo() {
|
|
|
|
|
return $_SESSION["prm_pausa_grupo"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AgenteOcupado($dbcon, $matricula) {
|
|
|
|
|
$query = "Select count(*) from pbx_supervisor_agentes where matricula = '$matricula' and upper(status) = 'OCUPADO' ";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetErrorLast($message, $display = 0, $html = 0) {
|
|
|
|
|
|
|
|
|
|
$error = error_get_last();
|
|
|
|
|
$erro = $error["message"];
|
|
|
|
|
$line = $error["line"];
|
|
|
|
|
$src = $error["file"];
|
|
|
|
|
|
|
|
|
|
if (stripos($erro, "deprecated") !== false)
|
|
|
|
|
$erro = "";
|
|
|
|
|
|
|
|
|
|
if ($display && $erro) {
|
|
|
|
|
$break = $html ? "<br />\n" : "\n";
|
|
|
|
|
$message = sprintf("%s%sErro: %s%sScript: %s%sLinha: %s", $message, $break, $erro, $break, $src, $break, $line);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $message;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
|
|
|
|
|
function GetLastDayofMonth($year, $month) {
|
|
|
|
|
for ($day=31; $day>=28; $day--) {
|
|
|
|
|
if (checkdate($month, $day, $year)) {
|
|
|
|
|
return $day;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDataIniFatura($ano, $mes, $diaFecha)
|
|
|
|
|
{
|
|
|
|
|
// $ano . "-" . ($mes - 1) . "-" . ($diaFecha + 1);
|
|
|
|
|
$finalMes = GetLastDayofMonth($ano, $mes);
|
|
|
|
|
if($diaFecha >= $finalMes)
|
|
|
|
|
return sprintf("%s-%s-01", $ano, $mes);
|
|
|
|
|
|
|
|
|
|
$mes = mes == 1 ? 12 : ($mes -1);
|
|
|
|
|
if(mes == 1)$ano--;
|
|
|
|
|
|
|
|
|
|
$finalMes = GetLastDayofMonth($ano, $mes);
|
|
|
|
|
if(++$diaFecha > $finalMes)$diaFecha = $finalMes;
|
|
|
|
|
|
|
|
|
|
return sprintf("%s-%s-%s", $ano, $mes, $diaFecha);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDataFimFatura($ano, $mes, $diaFecha)
|
|
|
|
|
{
|
|
|
|
|
//$ano . "-" . ($mes) . "-" . ($diaFecha);
|
|
|
|
|
$finalMes = GetLastDayofMonth($ano, $mes);
|
|
|
|
|
if($diaFecha > $finalMes)$diaFecha = $finalMes;
|
|
|
|
|
return sprintf("%s-%s-%s", $ano, $mes, $diaFecha);
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
function GetContextoRamal($db, $ramal) {
|
|
|
|
|
$query = "select contexto from pbx_ramais where nome = '$ramal'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ChamdaClassificadaAgente($db, $matricula) {
|
|
|
|
|
$query = "select chamada_classificado from pbx_supervisor_agentes where matricula = '$matricula'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRamalLogado($db, $matricula) {
|
|
|
|
|
$query = "select ramal from pbx_supervisor_agentes where matricula = '$matricula'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ClassificacaoExigidaLiberada($db, $uid) {
|
|
|
|
|
/*
|
|
|
|
|
* Se a classifica<EFBFBD><EFBFBD>o n<EFBFBD>o <EFBFBD> obrigat<EFBFBD>ria retorna true do contr<EFBFBD>rio
|
|
|
|
|
* verifica sa a mesa j<EFBFBD> foi realizada.
|
|
|
|
|
*/
|
|
|
|
|
if (!GetExigeClas()) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ChamdaClassificada($db, $uid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsAgenteDisponivel($db, $matricula) {
|
|
|
|
|
$query = "select disponivel_atendimento from pbx_supervisor_agentes where matricula = '$matricula'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return pg_num_rows($result) && $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetOrdenacaoRelatorio($db, $idRel) {
|
|
|
|
|
$colunas = array();
|
|
|
|
|
$ordem = '';
|
|
|
|
|
$query = "select distinct a.ord_nome_coluna, ords_seq, case when(b.ords_ordem = 0)then 'asc' else 'desc' end as ordem, b.ords_ordem as ordem_num
|
|
|
|
|
from pbx_relatorio_ordena a, pbx_relatorio_ordena_set b
|
|
|
|
|
where b.ord_id = a.ord_id
|
|
|
|
|
and a.ord_rel_id = '$idRel'
|
|
|
|
|
order by ords_seq\n\n";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
//echo $query;
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$colunas[$row['ord_nome_coluna']] = $row['ordem_num'];
|
|
|
|
|
$str = sprintf('%s %s', $row['ord_nome_coluna'], $row['ordem']);
|
|
|
|
|
$ordem .= empty($ordem) ? $str : ", $str";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return array($ordem, $colunas);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetOrdenanacaoColunas($smarty, $arOrdem) {
|
|
|
|
|
foreach ($arOrdem as $key => $value) {
|
|
|
|
|
$img = sprintf('<img src="imgSite/%s" align="absmiddle" width="12" height="12" alt="%s" title="%s" />', ($value ? "ordenaDesc12.png" : "ordenaAsc12.png"), ($value ? "Ordena<EFBFBD><EFBFBD>o Descendente" : "Ordena<EFBFBD><EFBFBD>o Ascendente"), ($value ? "Ordena<EFBFBD><EFBFBD>o Descendente" : "Ordena<EFBFBD><EFBFBD>o Ascendente"));
|
|
|
|
|
$smarty->assign($key, $img);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetUfs($db, $uf = '') {
|
|
|
|
|
$sel = '';
|
|
|
|
|
if ($uf == '') {
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
}
|
|
|
|
|
$item = "<option value=\"0\" $sel>------------</option>";
|
|
|
|
|
$query = "select uf from pbx_uf order by 1";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$ufBd = $row["uf"];
|
|
|
|
|
if ($ufBd == $uf)
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
else
|
|
|
|
|
$sel = "";
|
|
|
|
|
$item .= "<option value=\"$ufBd\" $sel>$ufBd</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPermitAtendManual() {
|
|
|
|
|
if ($_SESSION["prm_atende_manual"])
|
|
|
|
|
return true;
|
|
|
|
|
if ($_SESSION["prm_atende_auto"])
|
|
|
|
|
return false;
|
|
|
|
|
return $_SESSION["prm_atende_preferencial"] ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPermitAtendAuto() {
|
|
|
|
|
if ($_SESSION["prm_atende_auto"])
|
|
|
|
|
return true;
|
|
|
|
|
if ($_SESSION["prm_atende_manual"])
|
|
|
|
|
return false;
|
|
|
|
|
return !$_SESSION["prm_atende_preferencial"] ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAnotacoesKey() {
|
|
|
|
|
// 1 - telefone 2 - Protocolo
|
|
|
|
|
return $_SESSION["prm_boloco_notas_key"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetModuAtendimentoDefault() {
|
|
|
|
|
//Modo de atendimento default
|
|
|
|
|
$moduAtd = $_SESSION["prm_atende_preferencial"];
|
|
|
|
|
$_SESSION[SS_MODO_ATENDIMENTO_COD] = $moduAtd && GetPermitAtendManual() ? '**50' : '**60';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetVersao() {
|
|
|
|
|
return "1.7.11.4";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetEncType($upload) {
|
|
|
|
|
if ($upload == 1)
|
|
|
|
|
return "enctype=\"multipart/form-data\"";
|
|
|
|
|
if ($upload == 2)
|
|
|
|
|
return "enctype=\"application/x-www-form-urlencoded\"";
|
|
|
|
|
return "";
|
|
|
|
|
return "enctype=\"text/plain\"";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InsereRotasRamais($dbcon, $rotas, $ramal) {
|
|
|
|
|
foreach ($rotas as $rota) {
|
|
|
|
|
global $idProg;
|
|
|
|
|
$dadosRotas = explode(";", $rota);
|
|
|
|
|
$tipoAcesso = $dadosRotas[0];
|
|
|
|
|
$id = $dadosRotas[1];
|
|
|
|
|
$query = "update pbx_rotas_saida_ramais set tipo_acesso = '$tipoAcesso' where id_rota = '$id' and ramal = '$ramal';
|
|
|
|
|
insert into pbx_rotas_saida_ramais(id_rota, ramal, tipo_acesso)
|
|
|
|
|
select '$id', '$ramal', '$tipoAcesso'
|
|
|
|
|
where not exists(select '' from pbx_rotas_saida_ramais where id_rota = '$id' and ramal = '$ramal');";
|
|
|
|
|
|
|
|
|
|
$novo = array('id_rota' => $id, 'ramal' => $ramal, 'tipo_acesso' => $tipoAcesso);
|
|
|
|
|
GrvAudita($dbcon, $idProg, 'pbx_rotas_saida_ramais', 'INS', array(), $novo, array('id_rota', 'ramal', 'tipo_acesso'), array('id_rota'), true);
|
|
|
|
|
@pg_query($dbcon, $query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InsereRamaisRotas($dbcon, $ramais, $rota) {
|
|
|
|
|
foreach ($ramais as $key => $info) {
|
|
|
|
|
global $idProg;
|
|
|
|
|
$dadosRamais = explode(";", $info);
|
|
|
|
|
$ramal = soNumero($key);
|
|
|
|
|
$tipoAcesso = $dadosRamais[0];
|
|
|
|
|
$query = "update pbx_rotas_saida_ramais set tipo_acesso = '$tipoAcesso' where id_rota = '$rota' and ramal = '$ramal';
|
|
|
|
|
insert into pbx_rotas_saida_ramais(id_rota, ramal, tipo_acesso)
|
|
|
|
|
select '$rota', '$ramal', '$tipoAcesso'
|
|
|
|
|
where not exists(select '' from pbx_rotas_saida_ramais where id_rota = '$rota' and ramal = '$ramal');";
|
|
|
|
|
$novo = array('id_rota' => $rota, 'ramal' => $ramal, 'tipo_acesso' => $tipoAcesso);
|
|
|
|
|
GrvAudita($dbcon, $idProg, 'pbx_rotas_saida_ramais', 'INS', array(), $novo, array('id_rota', 'ramal', 'tipo_acesso'), array('id_rota'), true);
|
|
|
|
|
@pg_query($dbcon, $query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPrefixoSenha($db) {
|
|
|
|
|
$query = "select prm_prefixo_sennha_ramal from pbx_parametros where id = 1";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
return $row['prm_prefixo_sennha_ramal'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetObsProdAgente($db = null, $dac = 0) {
|
|
|
|
|
if ($dac && $db) {
|
|
|
|
|
$query = "Select justificativa_pausa from pbx_queues_grupos where id = '$dac' ";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if ($result) {
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (isset($_SESSION[SS_JUSTIFICATIVA_PAUSA]) && !is_null($_SESSION[SS_JUSTIFICATIVA_PAUSA]))
|
|
|
|
|
return $_SESSION[SS_JUSTIFICATIVA_PAUSA];
|
|
|
|
|
return $_SESSION["prm_obs_pausaprod"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Chefe Secret<EFBFBD>ria
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function InsereRamaisChf($conn, $ramal) {
|
|
|
|
|
$excecoes = $_POST['ramalSecExcecoesInc'];
|
|
|
|
|
|
|
|
|
|
$query = "delete from pbx_chefe_secretaria where numero = '$ramal'";
|
|
|
|
|
@pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach ($excecoes as $exc) {
|
|
|
|
|
global $idProg;
|
|
|
|
|
$query = "insert into pbx_chefe_secretaria(numero, excecao)values('$ramal', '$exc');";
|
|
|
|
|
@pg_query($conn, $query);
|
|
|
|
|
$novo = array('numero' => $ramal, 'excecao' => $exc);
|
|
|
|
|
GrvAudita($conn, $idProg, 'pbx_chefe_secretaria', 'INS', array(), $novo, array('numero', 'excecao'), array('numero'), true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetClienteClassifica($db, $fone) {
|
|
|
|
|
$query = "select distinct a.contrib_id, b.contrib_nome
|
|
|
|
|
from pbx_classifica_reg a, pbx_contribuinte b
|
|
|
|
|
where b.contrib_id = a.contrib_id
|
|
|
|
|
and contrib_fone = '$fone' limit 1";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result | (pg_num_rows($result) == 0))
|
|
|
|
|
return "";
|
|
|
|
|
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
|
|
|
|
|
$contribId = trim($dados["contrib_id"]);
|
|
|
|
|
$contribNome = trim($dados["contrib_nome"]);
|
|
|
|
|
|
|
|
|
|
if (!$contribId | !$contribNome) {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sprintf("%s-%s", $contribId, $contribNome);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetClienteIntegra($db, $uniqueid) {
|
|
|
|
|
$query = "select distinct a.int_dados
|
|
|
|
|
from pbx_integracao_dados a, pbx_integracao_reg b
|
|
|
|
|
where a.int_id = b.reg_retorno
|
|
|
|
|
and b.reg_uniqueid = '$uniqueid' limit 1";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result | (pg_num_rows($result) == 0))
|
|
|
|
|
return "";
|
|
|
|
|
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
$param = explode("|", $dados[0]);
|
|
|
|
|
|
|
|
|
|
return sprintf("%s - %s", $param[0], $param[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function dropTemporaryTable($db, $nomeTable) {
|
|
|
|
|
$query = "select isTmpTable('$nomeTable');";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
if ($row[0]) {
|
|
|
|
|
$query = "drop table $nomeTable;";
|
|
|
|
|
return pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function InsertDb($db, $nomeTable, $content, $getSequencia = false) {
|
|
|
|
|
|
|
|
|
|
$fields = "";
|
|
|
|
|
$values = "";
|
|
|
|
|
foreach ($content as $key => $value) {
|
|
|
|
|
$fields .= !$fields ? $key : ", $key";
|
|
|
|
|
$values .= !$values ? sprintf("%s", NullDb($value)) : sprintf(", %s", NullDb($value));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = sprintf("insert into %s(%s)values(%s)", $nomeTable, $fields, $values);
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
//if(IsAdmin())echo $query;
|
|
|
|
|
if ($result && $getSequencia) {
|
|
|
|
|
return GetSequenciaDb($db, $getSequencia);
|
|
|
|
|
}
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function UpdateDb($db, $nomeTable, $content, $where) {
|
|
|
|
|
|
|
|
|
|
$values = "";
|
|
|
|
|
foreach ($content as $key => $value) {
|
|
|
|
|
$values .= !$values ? sprintf("%s = %s", $key, NullDb($value)) : sprintf(",%s = %s", $key, NullDb($value));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query .= sprintf("update %s set %s where %s", $nomeTable, $values, $where);
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
//echo $query;
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MoveFile($file, $nameOrig, $newName, $ulaw, &$msgErro) {
|
|
|
|
|
$msgErro = '';
|
|
|
|
|
$path_som = $_SESSION["path_som"];
|
|
|
|
|
$db = $GLOBALS["dbcon"];
|
|
|
|
|
|
|
|
|
|
$nameConvert = explode('.', $newName);
|
|
|
|
|
$nameConvert = VerificaCharFinal($path_som) . $nameConvert[0];
|
|
|
|
|
$nameMove = $newName;
|
|
|
|
|
$newName = VerificaCharFinal($path_som) . $newName;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Move o arquivo para o destino
|
|
|
|
|
*/
|
|
|
|
|
$cmd = "TmpFile: $file NewFila: $newName";
|
|
|
|
|
$result = move_uploaded_file($file, $newName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Convert os arquivos mp3 para ulaw
|
|
|
|
|
*/
|
|
|
|
|
$cmd = "ffmpeg -y -i $newName -ar 8000 -ac 1 -ab 64 -f mulaw $nameConvert.ulaw";
|
|
|
|
|
if ($result && $ulaw) {
|
|
|
|
|
$result = (ExecutaComando($cmd, $db) !== false);
|
|
|
|
|
//@system($cmd);
|
|
|
|
|
$result = file_exists("$nameConvert.ulaw");
|
|
|
|
|
if (!$result)
|
|
|
|
|
$msgErro = sprintf("N<EFBFBD>o foi poss<EFBFBD>vel converter o arquivo: %s!", $newName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se existe o diretorio para mp3
|
|
|
|
|
*/
|
|
|
|
|
$dirMp3 = VerificaCharFinal($path_som) . "mp3/";
|
|
|
|
|
if ($result && !file_exists($dirMp3)) {
|
|
|
|
|
$cmd = "mkdir $dirMp3";
|
|
|
|
|
$result = (ExecutaComando($cmd, $db) !== false);
|
|
|
|
|
if (!$result)
|
|
|
|
|
$msgErro = sprintf("N<EFBFBD>o foi poss<EFBFBD>vel criar o diret<EFBFBD>rios: %s!", $dirMp3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Move os arquivos mp3 para o didretorio mp3
|
|
|
|
|
*/
|
|
|
|
|
$cmd = "mv -f $newName $dirMp3/$nameMove";
|
|
|
|
|
if ($result && $ulaw) {
|
|
|
|
|
$result = (ExecutaComando($cmd, $db) !== false);
|
|
|
|
|
if (!$result)
|
|
|
|
|
$msgErro = sprintf("N<EFBFBD>o foi poss<EFBFBD>vel mover o arquivo: %s o diret<EFBFBD>rios: %s!", $newName, $dirMp3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!$result && ($msgErro == ''))
|
|
|
|
|
$msgErro = sprintf("N<EFBFBD>o foi poss<EFBFBD>vel gravar o arquivo: %s!", $nameOrig);
|
|
|
|
|
|
|
|
|
|
return $result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetCaminhoProducao() {
|
|
|
|
|
return $_SESSION['caminho_producao'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPesquisaDisponivel($db, $dac) {
|
|
|
|
|
$sel = '';
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
$item = "<option value=\"0\" $sel>------------</option>";
|
|
|
|
|
$query = "select distinct b.pl_id, b.pl_descricao
|
|
|
|
|
from pbx_pesquisa_liberacao_dacs a, pbx_pesquisa_liberacao b
|
|
|
|
|
where b.pl_id = a.pl_id
|
|
|
|
|
and a.id_dac = '$dac'
|
|
|
|
|
and ( (now()::date >= b.pl_data_inicio) or (b.pl_data_inicio is null))
|
|
|
|
|
and ( (now()::date <= b.pl_data_fim) or (b.pl_data_fim is null))
|
|
|
|
|
and b.pl_ativa = 1 order by 2";
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$pl_id = $row["pl_id"];
|
|
|
|
|
$pl_desc = $row["pl_descricao"];
|
|
|
|
|
$item .= "<option value=\"$pl_id\">$pl_desc</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLinksFromLink($db, $link) {
|
|
|
|
|
$idUser = GetIdUser();
|
|
|
|
|
if (!$link)
|
|
|
|
|
$link = 0;
|
|
|
|
|
$query = IsAdmin() ? " select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai, (select count(*) from pbx_funcoes where fun_id_pai = d.fun_id) as filhos
|
|
|
|
|
from pbx_funcoes d
|
|
|
|
|
where fun_id_pai = $link order by 4" : "select *
|
|
|
|
|
from (
|
|
|
|
|
select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai, (select count(*) from pbx_funcoes where fun_id_pai = d.fun_id) as filhos
|
|
|
|
|
from pbx_usuarios a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_funcoes d
|
|
|
|
|
where b.user_id = a.id
|
|
|
|
|
and c.gp_id = b.gp_id
|
|
|
|
|
and d.fun_id = c.fun_id
|
|
|
|
|
and a.id = coalesce($idUser, a.id) order by d.fun_id
|
|
|
|
|
) a where fun_id_pai = $link order by 4";
|
|
|
|
|
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$ret = "<ul class=\"menuComp\">\n";
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$url = $row["fun_menu_url"];
|
|
|
|
|
$url = (strpos($url, "\\'") !== false) ? str_replace("\\'", "'", $url) : $url;
|
|
|
|
|
$link = ($row["filhos"] > 0) ? $row["fun_menu_text"] : sprintf('<a href="%s" target="_top">%s</a>', $url, $row["fun_menu_text"]);
|
|
|
|
|
$ret .= "<li>$link</li>\n";
|
|
|
|
|
if ($row["filhos"] > 0)
|
|
|
|
|
$ret .= GetLinksFromLink($db, $row["fun_id"]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$ret .= "</ul>\n";
|
|
|
|
|
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function FiltraString() {
|
|
|
|
|
if (isset($_POST)) {
|
|
|
|
|
foreach ($_POST as $key => $value) {
|
|
|
|
|
if (!is_array($_POST[$key])) {
|
|
|
|
|
$_POST[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'ISO8859-1');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_GET)) {
|
|
|
|
|
foreach ($_GET as $key => $value) {
|
|
|
|
|
if (!is_array($_GET[$key])) {
|
|
|
|
|
$_GET[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'ISO8859-1');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (isset($_REQUEST)) {
|
|
|
|
|
foreach ($_REQUEST as $key => $value) {
|
|
|
|
|
if (!is_array($_REQUEST[$key])) {
|
|
|
|
|
$_REQUEST[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'ISO8859-1');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDadosPost(&$fields, $arSource) {
|
|
|
|
|
foreach ($arSource as $key => $value) {
|
|
|
|
|
if (array_key_exists($key, $fields)) {
|
|
|
|
|
$fields[$key] = $value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetOpcaoAlt($db, $opcao) {
|
|
|
|
|
include_once('admin/opcoes.php');
|
|
|
|
|
return _GetOpcoes($db, $opcao, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAcaoAlt($db, $opcao, $acao) {
|
|
|
|
|
$_getAcoes_ = 1;
|
|
|
|
|
include_once('admin/popula.php');
|
|
|
|
|
return _GetAcoes($db, 0, $acao, $opcao, 0, 0, PROTO_TXT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetItegEvento($codEvt = 0) {
|
|
|
|
|
$eventos[] = array('-----------------------------', '0');
|
|
|
|
|
// $eventos[] = array('Fila', '1');
|
|
|
|
|
$eventos[] = array('Encerramento', '2');
|
|
|
|
|
$eventos[] = array('Atendimento', '3');
|
|
|
|
|
|
|
|
|
|
foreach ($eventos as $evento) {
|
|
|
|
|
$cod = $evento[1];
|
|
|
|
|
$desc = $evento[0];
|
|
|
|
|
|
|
|
|
|
$sel = $codEvt == $cod ? 'selected=selected' : '';
|
|
|
|
|
$ret .= "<option value=\"$cod\" $sel>$desc</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsNullQuoted($value, $def = 'null') {
|
|
|
|
|
$value = trim($value);
|
|
|
|
|
return empty($value) ? (($def == 'null') ? $def : QuotedStr($def) ) : QuotedStr($value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DownloadAudio($file, $filepath, $tipo = 'wav', $protocolo = '', $dataAudio = '') {
|
|
|
|
|
ob_clean();
|
|
|
|
|
$isMp3 = (strtolower($tipo) == 'mp3');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Renomeia com o protocolo da chamada.
|
|
|
|
|
*/
|
|
|
|
|
$file = $protocolo ? $protocolo . '_' . $dataAudio . "." . strtoupper($tipo) : $file;
|
|
|
|
|
|
|
|
|
|
if ($isMp3) {
|
|
|
|
|
$dirMp3 = '/var/www/html/aplicativo/audio/';
|
|
|
|
|
$pathFileWav = sprintf("%s%s", $dirMp3, $file);
|
|
|
|
|
$patFileMp3 = str_ireplace('.WAV', '.MP3', $pathFileWav);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Renomeia o file para mostrar corretamente.
|
|
|
|
|
*/
|
|
|
|
|
$file = str_ireplace('.WAV', '.MP3', $file);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Cria o arquivo wav localmente.
|
|
|
|
|
*/
|
|
|
|
|
@file_put_contents($pathFileWav, @file_get_contents($filepath));
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Convert para mp3.
|
|
|
|
|
*/
|
|
|
|
|
ConvertWavToMp3($pathFileWav, $patFileMp3);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Pega o tamanho do arquivo mp3 criado.
|
|
|
|
|
*/
|
|
|
|
|
$fsize = filesize($patFileMp3);
|
|
|
|
|
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($file));
|
|
|
|
|
if ($fsize)
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $file . '"');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($patFileMp3);
|
|
|
|
|
unlink($pathFileWav);
|
|
|
|
|
unlink($patFileMp3);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
$ftemp = "/tmp/$file";
|
|
|
|
|
@file_put_contents($ftemp, @file_get_contents($filepath));
|
|
|
|
|
$fsize = filesize($ftemp);
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($file));
|
|
|
|
|
if ($fsize)
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $file . '"');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($filepath);
|
|
|
|
|
unlink($ftemp);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CreateDownloadStream($nome) {
|
|
|
|
|
$diretorio = "/var/www/html/aplicativo/audio/";
|
|
|
|
|
|
|
|
|
|
$arquivoWav = $diretorio . $nome . ".WAV";
|
|
|
|
|
$arquivoMp3 = $diretorio . $nome . ".MP3";
|
|
|
|
|
|
|
|
|
|
CnvrtWavToMp3($arquivoWav, $arquivoMp3);
|
|
|
|
|
$fsize = filesize($arquivoMp3);
|
|
|
|
|
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($nome . ".MP3"));
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $nome . ".MP3" . '"');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($arquivoMp3);
|
|
|
|
|
unlink($arquivoWav);
|
|
|
|
|
unlink($arquivoMp3);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DownloadAudioAlgar($files) {
|
|
|
|
|
try {
|
|
|
|
|
$baseAudio = '/var/www/html/aplicativo/audio/';
|
|
|
|
|
$numFiles = count($files);
|
|
|
|
|
|
|
|
|
|
foreach ($files as $key => $value) {
|
|
|
|
|
$nomeZip = sprintf("%s.zip", strstr($key, "_", true));
|
|
|
|
|
$pathWav = $value;
|
|
|
|
|
$nomeMp3 = str_ireplace('.WAV', '.MP3', $key);
|
|
|
|
|
$pathMp3 = $baseAudio . $nomeMp3;
|
|
|
|
|
$pathZip = $baseAudio . $nomeZip;
|
|
|
|
|
|
|
|
|
|
if (!CnvrtWavToMp3($pathWav, $pathMp3)) {
|
|
|
|
|
GeraExcept(GetLasterror());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$filesEncode[] = $nomeMp3;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($numFiles > 1) {
|
|
|
|
|
$cmd = sprintf("cd %s && zip %s %s", $baseAudio, $nomeZip, implode(' ', $filesEncode));
|
|
|
|
|
exec($cmd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$downloadFile = ($numFiles > 1) ? $pathZip : $pathMp3;
|
|
|
|
|
$nomeDownloadFile = ($numFiles > 1) ? $nomeZip : $nomeMp3;
|
|
|
|
|
|
|
|
|
|
$fsize = filesize($downloadFile);
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($nomeDownloadFile));
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $nomeDownloadFile . '"');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($downloadFile);
|
|
|
|
|
unlink($downloadFile);
|
|
|
|
|
exit;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GeraExcept($ex->getMessage());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DownloadNaoPerturbe($npId) {
|
|
|
|
|
|
|
|
|
|
$query = "select np_nome, np_path from pbx_nao_perturbe_controle where np_id = '{$npId}'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$dadosFile = pg_fetch_array($result);
|
|
|
|
|
$nome = basename($dadosFile["np_path"]);
|
|
|
|
|
$file = $dadosFile["np_path"];
|
|
|
|
|
|
|
|
|
|
$fsize = filesize($file);
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($nome));
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $nome . '"');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($file);
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DownloadListaDiscador($ldId) {
|
|
|
|
|
|
|
|
|
|
$query = "select ld_nome, ld_path from pbx_lista_discador where ld_id = '{$ldId}'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$dadosFile = pg_fetch_array($result);
|
|
|
|
|
$nome = basename($dadosFile["ld_path"]);
|
|
|
|
|
$file = $dadosFile["ld_path"];
|
|
|
|
|
|
|
|
|
|
$fsize = filesize($file);
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($nome));
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $nome . '"');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($file);
|
|
|
|
|
exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConvertWavToMp3($fileOrig, $fileDest) {
|
|
|
|
|
$cmd = sprintf("ffmpeg -y -i %s -acodec libmp3lame %s", $fileOrig, $fileDest);
|
|
|
|
|
//ExecutaComando($comando);
|
|
|
|
|
exec($cmd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraLog($log, $file = "aplSimples.log") {
|
|
|
|
|
|
|
|
|
|
$mensagem = $log;
|
|
|
|
|
$gravaLog = true;
|
|
|
|
|
if ($gravaLog && count($mensagem)) {
|
|
|
|
|
$pathFull = "/var/log/asterisk/";
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se o diretorio existe
|
|
|
|
|
* se nao existir tenta crialo
|
|
|
|
|
*/
|
|
|
|
|
if (!file_exists($pathFull)) {
|
|
|
|
|
mkdir($pathFull);
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo para gravar o log
|
|
|
|
|
*/
|
|
|
|
|
//$file = sprintf('%s%s_%s_%s.log', $pathFull, $bar, $login, $data);
|
|
|
|
|
$file = sprintf('%s%s', $pathFull, $file);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// $file = sprintf('log/_%s_%s.log', $login, $data);
|
|
|
|
|
|
|
|
|
|
$arq = fopen($file, 'a');
|
|
|
|
|
if ($arq) {
|
|
|
|
|
foreach ($mensagem as $linha) {
|
|
|
|
|
fwrite($arq, "$linha\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fclose($arq);
|
|
|
|
|
$log = array();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MaxRamaisPermite($db, $qtde) {
|
|
|
|
|
//GetModeloRamais();
|
|
|
|
|
$result = pg_query($db, "SELECT prm_max_ramal FROM pbx_parametros");
|
|
|
|
|
$numRamais = pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
if ((int) $numRamais[0] === 0) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "select count(*) as num_total_ramais from pbx_ramais";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if ($result) {
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
$numTotalRamais = $qtde + $row[0];
|
|
|
|
|
return ($numTotalRamais > $numRamais[0]);
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetNumeroRamalFromId($id) {
|
|
|
|
|
$db = $GLOBALS['dbcon'];
|
|
|
|
|
$query = "select nome from pbx_ramais where id = '$id'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if ($result && (pg_num_rows($result) > 0)) {
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
return '0';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetCrc32Code($tableName, $params) {
|
|
|
|
|
$strCode = $tableName . implode($params);
|
|
|
|
|
return abs(crc32($strCode));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetCrc32CodeExiste($tableName, $code) {
|
|
|
|
|
$db = $GLOBALS['dbcon'];
|
|
|
|
|
$query = "select case when(
|
|
|
|
|
exists(select '' from $tableName where id_rel = '$code')
|
|
|
|
|
)then 1 else 0 end as existe ";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIpServer() {
|
|
|
|
|
return $_SERVER['SERVER_ADDR'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ValidaAutenticaHost() {
|
|
|
|
|
$_GET['autenticaHost'];
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function EncodeParam($param) {
|
|
|
|
|
$ret = serialize($param);
|
|
|
|
|
$ret = base64_encode($ret);
|
|
|
|
|
$ret = urlencode($ret);
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GerOperSpid() {
|
|
|
|
|
/*
|
|
|
|
|
* N<EFBFBD>mero de operadoras locais devem come<EFBFBD>ar em 900 para n<EFBFBD>o conflitarem com o cadastro da operadoras oficiais
|
|
|
|
|
* feitos no servidor.
|
|
|
|
|
*/
|
|
|
|
|
$operSpid = 900;
|
|
|
|
|
$query .= "select coalesce(max(oper_spid), 0) as max_spid from pbx_operadoras where oper_spid >= '$operSpid'";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
$operSpidBd = $row[0];
|
|
|
|
|
|
|
|
|
|
return !$operSpidBd ? $operSpid : ++$operSpidBd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PbxOperadoras($id, $eliminaHabilita = 0, $fildId = 'oper_spid') {
|
|
|
|
|
$db = $GLOBALS["dbcon"];
|
|
|
|
|
$habilita = $eliminaHabilita ? $eliminaHabilita : HabilitaPortabilidade();
|
|
|
|
|
$sel = '';
|
|
|
|
|
$query = "select 0 as ord, 0 as $fildId, 'Sem Portabilidade' as oper_nome union all ";
|
|
|
|
|
$query .= "select 1 as ord, $fildId, oper_nome || '(' || oper_numero || ')' from pbx_operadoras where 1=$habilita and oper_numero <> '0' order by 1,3";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$spid = $row[$fildId];
|
|
|
|
|
$oper = $row["oper_nome"];
|
|
|
|
|
if ($spid == $id)
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
else
|
|
|
|
|
$sel = "";
|
|
|
|
|
$item .= "<option value=\"$spid\" $sel>$oper</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PbxContratos($id) {
|
|
|
|
|
$db = $GLOBALS["dbcon"];
|
|
|
|
|
$sel = '';
|
|
|
|
|
if (!$id) {
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
}
|
|
|
|
|
$item = "<option value=\"0\" $sel>------------</option>";
|
|
|
|
|
$query = "select contr_id, contr_descricao from pbx_tarif_contrato where contr_id <> 0 order by 2";
|
|
|
|
|
$result = @pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
while ($row = pg_fetch_array($result)) {
|
|
|
|
|
$spid = $row["contr_id"];
|
|
|
|
|
$oper = $row["contr_descricao"];
|
|
|
|
|
if ($spid == $id)
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
else
|
|
|
|
|
$sel = "";
|
|
|
|
|
$item .= "<option value=\"$spid\" $sel>$oper</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetTipoCobranca($idTipo = 1) {
|
|
|
|
|
$tipoCobranca = array("Minuto" => 1, "Chamada" => "2");
|
|
|
|
|
$item = '';
|
|
|
|
|
foreach ($tipoCobranca as $key => $value) {
|
|
|
|
|
$sel = $idTipo == $value ? "selected=\"selected\"" : "";
|
|
|
|
|
$item .= "<option value=\"$value\" $sel>$key</option>";
|
|
|
|
|
}
|
|
|
|
|
return $item;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaConfigDb($config) {
|
|
|
|
|
$template = '<?php
|
|
|
|
|
/*
|
|
|
|
|
* Configura<EFBFBD><EFBFBD>o para acesso ao banco de dados principal da aplica<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$dbPort = getenv(\'DB_PORT\') ? getenv(\'DB_PORT\') : \'%s\';
|
|
|
|
|
$dbHost = getenv(\'DB_HOST\') ? getenv(\'DB_HOST\') : \'%s\';
|
|
|
|
|
$dbName = getenv(\'DB_BASE\') ? getenv(\'DB_BASE\') : \'%s\';
|
|
|
|
|
$dbUser = getenv(\'DB_USER\') ? getenv(\'DB_USER\') : \'%s\';
|
|
|
|
|
$dbPassword = getenv(\'DB_PASSWD\') ? getenv(\'DB_PASSWD\') : \'%s\';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Esta configura<EFBFBD><EFBFBD>o define se o servidor ser<EFBFBD> Master
|
|
|
|
|
* e se havera sincroniza<EFBFBD><EFBFBD>o da conta/senha entre os multiplos sites.
|
|
|
|
|
* Obs.: Quando n<EFBFBD>o utilizar sincroniza<EFBFBD><EFBFBD>o de conta/senha o valor de
|
|
|
|
|
* master deve ser 1.
|
|
|
|
|
*/
|
|
|
|
|
$master = %s;
|
|
|
|
|
$sincContaSenha = %s;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Quando o arquivo for configurado para slave(master=0) no parametro hostMaster deve ser
|
|
|
|
|
* informado o Ip do servidor master.
|
|
|
|
|
*/
|
|
|
|
|
$hostMaster = \'%s\';
|
|
|
|
|
/*
|
|
|
|
|
*Informe uma identifica<EFBFBD><EFBFBD>o para o servidor
|
|
|
|
|
*/
|
|
|
|
|
$serverName = \'%s\';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Configura<EFBFBD><EFBFBD>es para acesso a api.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
$hostApi = \'%s\';
|
|
|
|
|
$portaApi = \'%s\';
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Acesso ao mysql para real-time.
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
$myParams = array(\'myPort\' => \'%s\',
|
|
|
|
|
\'myHost\' => \'%s\',
|
|
|
|
|
\'myDatabase\' => \'%s\',
|
|
|
|
|
\'myUser\' => \'%s\',
|
|
|
|
|
\'myPassword\' => \'%s\'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
?>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
include DB_CONFIG_FILE;
|
|
|
|
|
|
|
|
|
|
$_SESSION["SStpServer"] = (!isset($master) | !$master) ? 0 : $master;
|
|
|
|
|
$_SESSION["SSsincContaSenha"] = (!isset($sincContaSenha) | !$sincContaSenha) ? 0 : $sincContaSenha;
|
|
|
|
|
$_SESSION["SShostMaster"] = (!isset($hostMaster) | !$hostMaster) ? '127.0.0.1' : $hostMaster;
|
|
|
|
|
$_SESSION["SSserverName"] = (!isset($serverName) | !$serverName) ? 'MASTER_SERVER' : $serverName;
|
|
|
|
|
|
|
|
|
|
$config["master"] = $master;
|
|
|
|
|
$config["sincContaSenha"] = $sincContaSenha;
|
|
|
|
|
$config["hostMaster"] = $hostMaster;
|
|
|
|
|
$config["serverName"] = $serverName;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Incluido manualmente.
|
|
|
|
|
*/
|
|
|
|
|
$confManual['hostApi'] = $hostApi ? $hostApi : '127.0.0.1';
|
|
|
|
|
$confManual['portaApi'] = $portaApi ? $portaApi : '';
|
|
|
|
|
$confManual['myPort'] = $myParams['myPort'] ? $myParams['myPort'] : '3306';
|
|
|
|
|
$confManual['myHost'] = $myParams['myHost'] ? $myParams['myHost'] : '127.0.0.1';
|
|
|
|
|
$confManual['myDatabase'] = $myParams['myDatabase'] ? $myParams['myDatabase'] : 'pabx';
|
|
|
|
|
$confManual['myUser'] = $myParams['myUser'] ? $myParams['myUser'] : 'root';
|
|
|
|
|
$confManual['myPassword'] = $myParams['myPassword'] ? $myParams['myPassword'] : 'SimpleS_root';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$conteudo = sprintf($template, $config["dbPort"], $config["dbHost"], $config["dbName"], $config["dbUser"], $config["dbPassword"], $config["master"], $config["sincContaSenha"], $config["hostMaster"], $config["serverName"], $confManual['hostApi'], $confManual['portaApi'], $confManual['myPort'], $confManual['myHost'], $confManual['myDatabase'], $confManual['myUser'], $confManual['myPassword']
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$file = fopen(DB_CONFIG_FILE, 'w', 1);
|
|
|
|
|
fwrite($file, $conteudo);
|
|
|
|
|
fclose($file);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaLogAgente($mensagem) {
|
|
|
|
|
$data = date('dmY');
|
|
|
|
|
$file = "/var/log/asterisk/agente_analisa_$data.log";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$arq = fopen($file, 'a');
|
|
|
|
|
if ($arq) {
|
|
|
|
|
$start = '';
|
|
|
|
|
foreach ($mensagem as $linha) {
|
|
|
|
|
$linha = trim($linha);
|
|
|
|
|
|
|
|
|
|
if (!$start) {
|
|
|
|
|
$start = $linha;
|
|
|
|
|
$linha = "Inicio: " . $linha;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fwrite($arq, $linha . "\n");
|
|
|
|
|
}
|
|
|
|
|
fwrite($arq, "Final: $start\n\n");
|
|
|
|
|
fclose($arq);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaContrato($dbcon, $contrato, $id) {
|
|
|
|
|
/*
|
|
|
|
|
* Foi desabilitado esta verifica<EFBFBD><EFBFBD>o, pois o contrato pode estar ligado a mais de um tronco.
|
|
|
|
|
*/
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
if (!$contrato)
|
|
|
|
|
return false;
|
|
|
|
|
if ($id)
|
|
|
|
|
$query = "select count(*) from pbx_troncos where contrato = '$contrato' and id <> '$id'";
|
|
|
|
|
else
|
|
|
|
|
$query = "select count(*) from pbx_troncos where contrato = '$contrato'";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
|
|
|
|
|
// echo $query;
|
|
|
|
|
|
|
|
|
|
if (!$result)
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0] ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaDefaults($db) {
|
|
|
|
|
/*
|
|
|
|
|
* Insere contrato padrao
|
|
|
|
|
*/
|
|
|
|
|
$query = "select count(*) from pbx_tarif_contrato where contr_id = 0";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
if ($result && !$row[0]) {
|
|
|
|
|
$query = "insert into pbx_operadoras values(0, 'Simples IP', 0, '-', 0)";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$query = "insert into pbx_tarif_contrato(contr_id, oper_id, empresa, contr_numero, contr_descricao, contr_dia_fechamento, contr_tipo, contr_tipo_franquia) values( 0, '0', '1', '0', 'sem trarifa', '1', 'fixo', '0')";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
$query = "insert into pbx_tarif_contrato_preco (prc_id,contr_id, prc_vigencia, prc_tipo_opera, prc_tipo, prc_franquia, prc_franquia_movel, prc_franquia_preco, prc_preco_vc1, prc_preco_vc2, prc_preco_vc3, prc_preco_vc4, prc_preco_vc1_cad, prc_preco_vc2_cad, prc_preco_vc3_cad, prc_preco_vc4_cad, prc_preco_vc1_ext, prc_preco_vc2_ext, prc_preco_vc3_ext, prc_preco_vc4_ext)
|
|
|
|
|
values('0','0','2013-10-17','0','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0')";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Insere municipio 0, referencia chamadas internas, emergencia e internacional
|
|
|
|
|
*/
|
|
|
|
|
$query = "select count(*) from pbx_municipios where id = 0";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
if ($result && !$row[0]) {
|
|
|
|
|
$query = "insert into pbx_municipios(id, uf, nome_localidade, nome_municipio, prefixo, faixa_inicial, faixa_final, codigo_ddd)
|
|
|
|
|
values(0, 'LC', 'CHAMADAS INTERNAS/EMERGENCIA/INTERNACIONAL', 'CHAMADAS INTERNAS/EMERGENCIA/INTERNACIONAL', 0,0,0,0)";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Insere municipio -1, referencia chamadas nao identificadas
|
|
|
|
|
*/
|
|
|
|
|
$query = "select count(*) from pbx_municipios where id = -1";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
if ($result && !$row[0]) {
|
|
|
|
|
$query = "insert into pbx_municipios(id, uf, nome_localidade, nome_municipio, prefixo, faixa_inicial, faixa_final, codigo_ddd)
|
|
|
|
|
values(-1, 'NI', 'CHAMADAS NAO IDENTIFICADAS', 'CHAMADAS NAO IDENTIFICADAS', 0,0,0,0)";
|
|
|
|
|
@pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRelativePathScript($__FILE__) {
|
|
|
|
|
$docRoot = $_SERVER['DOCUMENT_ROOT'];
|
|
|
|
|
|
|
|
|
|
if (IsWin()) {
|
|
|
|
|
$docRoot = (str_replace('/', '\\', $_SERVER['DOCUMENT_ROOT'])) . "simplesip";
|
|
|
|
|
$docRoot = str_replace($docRoot, '', ($__FILE__));
|
|
|
|
|
$docRoot = str_replace('\\', '/', $docRoot);
|
|
|
|
|
return $docRoot;
|
|
|
|
|
}
|
|
|
|
|
return str_replace($docRoot, '', ($__FILE__));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetFechamentoContrato($ano, $mes, $dia) {
|
|
|
|
|
|
|
|
|
|
$finalMes = GetLastDayofMonth($ano, $mes);
|
|
|
|
|
if ($dia > $finalMes)
|
|
|
|
|
return $finalMes;
|
|
|
|
|
|
|
|
|
|
return $dia;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PosAguarde() {
|
|
|
|
|
global $cssBlock, $janH, $tpLayout;
|
|
|
|
|
|
|
|
|
|
$def = (($janH - 50) <= 0) | !$tpLayout;
|
|
|
|
|
$height = $def ? '300' : ($janH - 50);
|
|
|
|
|
if (!$def)
|
|
|
|
|
$height = (int) ($height / 2);
|
|
|
|
|
|
|
|
|
|
$cssBlock .= sprintf("\n<style type=\"text/css\">
|
|
|
|
|
#aguarde
|
|
|
|
|
{
|
|
|
|
|
position:absolute;
|
|
|
|
|
background-color:#FFFFFF;
|
|
|
|
|
width: 150px;
|
|
|
|
|
height: 50px;
|
|
|
|
|
left: %s;
|
|
|
|
|
top: %spx;
|
|
|
|
|
margin-left: -75px;
|
|
|
|
|
margin-top:-25px;
|
|
|
|
|
border: 1px solid #CC0000;
|
|
|
|
|
display:none;
|
|
|
|
|
text-align:center;
|
|
|
|
|
font-family:Arial, Helvetica, sans-serif;
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
font-weight:bold;
|
|
|
|
|
color:#CC0000;
|
|
|
|
|
}\n</style>\n
|
|
|
|
|
", '50%', $height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param resource $db
|
|
|
|
|
* @param string $query
|
|
|
|
|
* @return type
|
|
|
|
|
*/
|
|
|
|
|
function RegistroInc($db, $query) {
|
|
|
|
|
$result = $db ? pg_query($db, $query) : pg_query($query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExisteRegistro($db, $table, $where, $id, $queryParam = null) {
|
|
|
|
|
$query = "select count(*) from $table where $where = '$id' ";
|
|
|
|
|
|
|
|
|
|
if ($queryParam) {
|
|
|
|
|
$query .= " and {$queryParam} ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDacFromCampanha($db, $id) {
|
|
|
|
|
$query = "select id_dac from pbx_campanha where cmp_id = '$id'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdCampanhaFromNome($db, $nomeCampanha) {
|
|
|
|
|
$query = "select cmp_id from pbx_campanha where cmp_descricao = '$nomeCampanha'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDataRelatorio() {
|
|
|
|
|
if (!IsUserConnect()) {
|
|
|
|
|
$ini['DATA_CORTE']["dataCorteRelatorio"] = 0;
|
|
|
|
|
} else if (isset($_SESSION['SSRelDataCorte'])) {
|
|
|
|
|
$ini = $_SESSION['SSRelDataCorte'];
|
|
|
|
|
} else {
|
|
|
|
|
$ini = parse_ini_file("configs/config.ini", true);
|
|
|
|
|
$_SESSION['SSRelDataCorte'] = $ini;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $ini['DATA_CORTE']["dataCorteRelatorio"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function LimpaToExcel($str) {
|
|
|
|
|
return $str;
|
|
|
|
|
return preg_replace("/<([a-z][a-z0-9]*)[^>]*?(\/?)>/i", '<$1$2>', $str);
|
|
|
|
|
/*
|
|
|
|
|
/ # Start Pattern
|
|
|
|
|
< # Match '<' at beginning of tags
|
|
|
|
|
( # Start Capture Group $1 - Tag Name
|
|
|
|
|
[a-z] # Match 'a' through 'z'
|
|
|
|
|
[a-z0-9]* # Match 'a' through 'z' or '0' through '9' zero or more times
|
|
|
|
|
) # End Capture Group
|
|
|
|
|
[^>]*? # Match anything other than '>', Zero or More times, not-greedy (wont eat the /)
|
|
|
|
|
(\/?) # Capture Group $2 - '/' if it is there
|
|
|
|
|
> # Match '>'
|
|
|
|
|
/i # End Pattern - Case Insensitive
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function EnviaExcel($nomeFile, $str) {
|
|
|
|
|
ob_end_clean();
|
|
|
|
|
ob_start();
|
|
|
|
|
$file = $nomeFile;
|
|
|
|
|
header("Pragma: public");
|
|
|
|
|
header('Cache-Control: no-cache, must-revalidate');
|
|
|
|
|
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
|
|
|
|
header('Accept-Ranges: bytes');
|
|
|
|
|
header('Content-Type: ' . GetMimeContentType($file));
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . $file . '";');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
print($str);
|
|
|
|
|
ob_flush();
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDirArqSom($conexao) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$dir = function_exists('GetPathSom') ? (GetPathSom() . 'arquivos_mp3/') : ($_SESSION["path_som"] . 'arquivos_mp3/');
|
|
|
|
|
|
|
|
|
|
if (!file_exists($dir)) {
|
|
|
|
|
$comando = "mkdir $dir";
|
|
|
|
|
vai_comando($comando, $conexao);
|
|
|
|
|
|
|
|
|
|
$comando = "chown pbx:pbx $dir";
|
|
|
|
|
vai_comando($comando, $conexao);
|
|
|
|
|
|
|
|
|
|
if (!file_exists($dir))
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return 'arquivos_mp3/';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMimeContentType($file) {
|
|
|
|
|
|
|
|
|
|
$filetype = strtolower(substr(strrchr($file, '.'), 1));
|
|
|
|
|
$mimetypes = array(
|
|
|
|
|
"ez" => "application/andrew-inset",
|
|
|
|
|
"rar" => "application/archive-rar",
|
|
|
|
|
"atom" => "application/atom+xml",
|
|
|
|
|
"ccad" => "application/clariscad",
|
|
|
|
|
"drw" => "application/drafting",
|
|
|
|
|
"tsp" => "application/dsptype",
|
|
|
|
|
"dxf" => "application/dxf",
|
|
|
|
|
"unv" => "application/i-deas",
|
|
|
|
|
"hqx" => "application/mac-binhex40",
|
|
|
|
|
"cpt" => "application/mac-compactpro",
|
|
|
|
|
"pps" => "application/mspowerpoint",
|
|
|
|
|
"doc" => "application/msword",
|
|
|
|
|
"bin" => "application/octet-stream",
|
|
|
|
|
"oda" => "application/oda",
|
|
|
|
|
"pdf" => "application/pdf",
|
|
|
|
|
"ps" => "application/postscript",
|
|
|
|
|
"prt" => "application/pro_eng",
|
|
|
|
|
"set" => "application/set",
|
|
|
|
|
"smil" => "application/smil",
|
|
|
|
|
"sol" => "application/solids",
|
|
|
|
|
"vda" => "application/vda",
|
|
|
|
|
"mif" => "application/vnd.mif",
|
|
|
|
|
"xls" => "application/vnd.ms-excel",
|
|
|
|
|
"xlsx" => "application/vnd.ms-excel",
|
|
|
|
|
"ppt" => "application/vnd.ms-powerpoint",
|
|
|
|
|
"wbxml" => "application/vnd.wap.wbxml",
|
|
|
|
|
"wmlc" => "application/vnd.wap.wmlc",
|
|
|
|
|
"wmlsc" => "application/vnd.wap.wmlscriptc",
|
|
|
|
|
"bcpio" => "application/x-bcpio",
|
|
|
|
|
"vcd" => "application/x-cdlink",
|
|
|
|
|
"pgn" => "application/x-chess-pgn",
|
|
|
|
|
"cpio" => "application/x-cpio",
|
|
|
|
|
"csh" => "application/x-csh",
|
|
|
|
|
"dxr" => "application/x-director",
|
|
|
|
|
"dvi" => "application/x-dvi",
|
|
|
|
|
"pre" => "application/x-freelance",
|
|
|
|
|
"spl" => "application/x-futuresplash",
|
|
|
|
|
"gtar" => "application/x-gtar",
|
|
|
|
|
"gz" => "application/x-gzip",
|
|
|
|
|
"hdf" => "application/x-hdf",
|
|
|
|
|
"php" => "application/x-httpd-php",
|
|
|
|
|
"phps" => "application/x-httpd-php-source",
|
|
|
|
|
"ipx" => "application/x-ipix",
|
|
|
|
|
"ips" => "application/x-ipscript",
|
|
|
|
|
"js" => "application/x-javascript",
|
|
|
|
|
"skp" => "application/x-koan",
|
|
|
|
|
"latex" => "application/x-latex",
|
|
|
|
|
"lsp" => "application/x-lisp",
|
|
|
|
|
"scm" => "application/x-lotusscreencam",
|
|
|
|
|
"cdf" => "application/x-netcdf",
|
|
|
|
|
"sh" => "application/x-sh",
|
|
|
|
|
"shar" => "application/x-shar",
|
|
|
|
|
"flv" => "application/x-shockwave-flash",
|
|
|
|
|
"sit" => "application/x-stuffit",
|
|
|
|
|
"sv4cpio" => "application/x-sv4cpio",
|
|
|
|
|
"sv4crc" => "application/x-sv4crc",
|
|
|
|
|
"tar" => "application/x-tar",
|
|
|
|
|
"tcl" => "application/x-tcl",
|
|
|
|
|
"tex" => "application/x-tex",
|
|
|
|
|
"texinfo" => "application/x-texinfo",
|
|
|
|
|
"t" => "application/x-troff",
|
|
|
|
|
"man" => "application/x-troff-man",
|
|
|
|
|
"me" => "application/x-troff-me",
|
|
|
|
|
"ms" => "application/x-troff-ms",
|
|
|
|
|
"ustar" => "application/x-ustar",
|
|
|
|
|
"src" => "application/x-wais-source",
|
|
|
|
|
"xhtml" => "application/xhtml+xml",
|
|
|
|
|
"zip" => "application/zip",
|
|
|
|
|
"tsi" => "audio/TSP-audio",
|
|
|
|
|
"au" => "audio/basic",
|
|
|
|
|
"mid" => "audio/midi",
|
|
|
|
|
"mpga" => "audio/mpeg",
|
|
|
|
|
"aiff" => "audio/x-aiff",
|
|
|
|
|
"m3u" => "audio/x-mpegurl",
|
|
|
|
|
"ram" => "audio/x-pn-realaudio",
|
|
|
|
|
"rpm" => "application/x-rpm",
|
|
|
|
|
"ra" => "audio/x-realaudio",
|
|
|
|
|
"wav" => "audio/x-wav",
|
|
|
|
|
"wma" => "audio/x-wma",
|
|
|
|
|
"pdb" => "chemical/x-pdb",
|
|
|
|
|
"xyz" => "chemical/x-xyz",
|
|
|
|
|
"bmp" => "image/bmp",
|
|
|
|
|
"gif" => "image/gif",
|
|
|
|
|
"ief" => "image/ief",
|
|
|
|
|
"jpg" => "image/jpeg",
|
|
|
|
|
"png" => "image/png",
|
|
|
|
|
"tiff" => "image/tiff",
|
|
|
|
|
"djv" => "image/vnd.djvu",
|
|
|
|
|
"wbmp" => "image/vnd.wap.wbmp",
|
|
|
|
|
"ras" => "image/x-cmu-raster",
|
|
|
|
|
"pnm" => "image/x-portable-anymap",
|
|
|
|
|
"pbm" => "image/x-portable-bitmap",
|
|
|
|
|
"pgm" => "image/x-portable-graymap",
|
|
|
|
|
"ppm" => "image/x-portable-pixmap",
|
|
|
|
|
"rgb" => "image/x-rgb",
|
|
|
|
|
"xbm" => "image/x-xbitmap",
|
|
|
|
|
"xpm" => "image/x-xpixmap",
|
|
|
|
|
"xwd" => "image/x-xwindowdump",
|
|
|
|
|
"igs" => "model/iges",
|
|
|
|
|
"silo" => "model/mesh",
|
|
|
|
|
"wrl" => "model/vrml",
|
|
|
|
|
"css" => "text/css",
|
|
|
|
|
"htm" => "text/html",
|
|
|
|
|
"c" => "text/plain",
|
|
|
|
|
"rtx" => "text/richtext",
|
|
|
|
|
"rtf" => "text/rtf",
|
|
|
|
|
"sgml" => "text/sgml",
|
|
|
|
|
"tsv" => "text/tab-separated-values",
|
|
|
|
|
"wml" => "text/vnd.wap.wml",
|
|
|
|
|
"wmls" => "text/vnd.wap.wmlscript",
|
|
|
|
|
"etx" => "text/x-setext",
|
|
|
|
|
"xml" => "text/xml",
|
|
|
|
|
"mpg" => "video/mpeg",
|
|
|
|
|
"qt" => "video/quicktime",
|
|
|
|
|
"mxu" => "video/vnd.mpegurl",
|
|
|
|
|
"fli" => "video/x-fli",
|
|
|
|
|
"wmv" => "video/x-msvideo",
|
|
|
|
|
"movie" => "video/x-sgi-movie",
|
|
|
|
|
"ice" => "x-conference/x-cooltalk",
|
|
|
|
|
"exe" => "application/octet-stream",
|
|
|
|
|
"csv" => "application/octet-stream",
|
|
|
|
|
"txt" => "text/plain"
|
|
|
|
|
);
|
|
|
|
|
return $mimetypes[$filetype];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RetornaAbandon($db, $fila, $ramal, $origem = "agente", $lb = "Sem Retorno:", $absr = 0) {
|
|
|
|
|
global $arRetornoAbandonadas, $statusServer;
|
|
|
|
|
$qtd = $statusServer ? $absr : (isset($arRetornoAbandonadas[$fila]) ? $arRetornoAbandonadas[$fila] : 0 );
|
|
|
|
|
|
|
|
|
|
return ($qtd < 1) ? "$lb 0" : sprintf("<a href=\"javaScript:NovaJanela('index.php?idProg=230&dac=%s&ramal=%s&origem=%s&tpLayout=2', 'agtRelSupAbandonada', '900', '500', 'scrollbars=YES');\" title=\"Abandonadas Sem Retorno!\"><span style=\"%scolor:%s\">%s %s</span></a>", $fila, $ramal, $origem, ($origem == 'agente' ? "font-size:10px;" : ""), ($qtd ? 'red' : 'balck'), $lb, $qtd);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetAbandonasFila() {
|
|
|
|
|
global $arRetornoAbandonadas, $statusServer;
|
|
|
|
|
|
|
|
|
|
if ($statusServer)
|
|
|
|
|
return;
|
|
|
|
|
$diasAbandon = GetDiasAbandonada();
|
|
|
|
|
/*
|
|
|
|
|
* Altera<EFBFBD><EFBFBD>o em homologa<EFBFBD><EFBFBD>o em substituicao a query acima.
|
|
|
|
|
|
|
|
|
|
$query = "drop table if exists tmp_bilhetes_dacs;
|
|
|
|
|
create temporary table tmp_bilhetes_dacs(calldate timestamp, data_bilhete date, src varchar(32), uid2 varchar(32), fila varchar(32), evento varchar(32));
|
|
|
|
|
|
|
|
|
|
insert into tmp_bilhetes_dacs
|
|
|
|
|
select a.calldate, a.data_bilhete, a.src, b.uid2, b.fila, b.evento
|
|
|
|
|
from ast_bilhetes a, ast_eventos_dacs b
|
|
|
|
|
where b.uid2 = a.uniqueid
|
|
|
|
|
and a.data_bilhete = now()::date
|
|
|
|
|
and b.evento in('ABANDON')
|
|
|
|
|
and a.lastapp <> 'Transferred Call';
|
|
|
|
|
|
|
|
|
|
select a.fila, count(*) as qtde_fila
|
|
|
|
|
from tmp_bilhetes_dacs a
|
|
|
|
|
where 1 = CASE WHEN(a.evento = 'ABANDON')then (case when(not exists(select '' from ast_eventos_dacs where uid2 = a.uid2 and evento = 'TRANSBORDANDO' and fila = a.fila)) then 1 else 0 end) else 1 end
|
|
|
|
|
and not exists(
|
|
|
|
|
select ''
|
|
|
|
|
from ast_bilhetes d, ast_eventos_dacs e
|
|
|
|
|
where e.uid2 = d.uniqueid
|
|
|
|
|
and d.data_bilhete = a.data_bilhete
|
|
|
|
|
and e.fila = a.fila
|
|
|
|
|
and (d.src = a.src or d.dst = a.src)
|
|
|
|
|
and d.calldate > a.calldate
|
|
|
|
|
and d.lastapp <> 'Transferred Call'
|
|
|
|
|
and e.evento in('COMPLETAAGENT','COMPLETACALLER','COMPLETECALLERRAMAL','COMPLETAAGENTRAMAL', 'COMPLETEAGENT','COMPLETECALLER','COMPLETECALLERRAMAL','COMPLETEAGENTRAMAL')
|
|
|
|
|
)
|
|
|
|
|
group by a.fila;";
|
|
|
|
|
*/
|
|
|
|
|
$query = "select b.fila, count(distinct a.abdsr_uniqueid) as qtde_fila
|
|
|
|
|
from pbx_abandonadas_semretorno a
|
|
|
|
|
inner join ast_eventos_dacs b on b.uid2 = a.abdsr_uniqueid and and b.fila = a.absr_fila and b.evento = 'ABANDON'
|
|
|
|
|
inner join ast_bilhetes c on c.uniqueid = b.uid2
|
|
|
|
|
where a.abdsr_data_hora_retorno is null
|
|
|
|
|
and a.abdsr_data >= (now()::date - $diasAbandon)
|
|
|
|
|
group by b.fila
|
|
|
|
|
order by 1";
|
|
|
|
|
$query = sprintf("SELECT b.fila, count(*) as qtde
|
|
|
|
|
FROM pbx_abandonadas_semretorno a
|
|
|
|
|
INNER JOIN ast_eventos_dacs b ON a.abdsr_uniqueid = b.uid2 and b.fila = a.abdsr_fila
|
|
|
|
|
INNER JOIN ast_bilhetes c ON a.abdsr_uniqueid = c.uniqueid AND c.calldate = (SELECT MAX(calldate) FROM ast_bilhetes WHERE uniqueid = a.abdsr_uniqueid)
|
|
|
|
|
WHERE a.abdsr_data_hora_retorno is null
|
|
|
|
|
AND a.abdsr_data >= (now()::date - %s)
|
|
|
|
|
AND b.evento = 'ABANDON'
|
|
|
|
|
GROUP BY b.fila
|
|
|
|
|
ORDER BY 1", $diasAbandon);
|
|
|
|
|
|
|
|
|
|
// $query = "select b.fila, count(*) as qtde_fila
|
|
|
|
|
// from pbx_abandonadas_semretorno a
|
|
|
|
|
// inner join ast_eventos_dacs b on b.uid2 = a.abdsr_uniqueid and b.evento = 'ABANDON'
|
|
|
|
|
// inner join ast_bilhetes c on c.uniqueid = b.uid2
|
|
|
|
|
// where a.abdsr_data_hora_retorno is null
|
|
|
|
|
// and a.abdsr_data >= (now()::date - $diasAbandon)
|
|
|
|
|
// group by b.fila
|
|
|
|
|
// order by 1";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
while ($dados = pg_fetch_row($result)) {
|
|
|
|
|
$dac = $dados[0];
|
|
|
|
|
$arRetornoAbandonadas[$dac] = $dados[1];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetStyleLink($links) {
|
|
|
|
|
$lkText = "";
|
|
|
|
|
$lkText .= "<link rel=\"stylesheet\" href=\"master.css\" type=\"text/css\" />\n";
|
|
|
|
|
$lkText .= "<link rel=\"stylesheet\" href=\"scriptApl/menu.css\" type=\"text/css\" />\n";
|
|
|
|
|
$lkText .= "<link rel=\"stylesheet\" href=\"agente.css\" type=\"text/css\" />\n";
|
|
|
|
|
$lkText .= "<link href=\"relProdAgenteGrid.css\" type=\"text/css\" rel=\"stylesheet\" /> \n";
|
|
|
|
|
$lkText .= "<link href=\"cadGeral.css\" type=\"text/css\" rel=\"stylesheet\" />\n";
|
|
|
|
|
//$lkText .= "<link href=\"jqueryCalendario.css\" type=\"text/css\" rel=\"stylesheet\" />\n";
|
|
|
|
|
$lkText .= "<link href=\"admin/css/pbx.css\" type=\"text/css\" rel=\"stylesheet\" />\n";
|
|
|
|
|
//$lkText .= "<link href=\"admin/css/print.css\" type=\"text/css\" rel=\"stylesheet\" />\n";
|
|
|
|
|
//$lkText .= "<link href=\"admin/utils/popups.css\" type=\"text/css\" rel=\"stylesheet\" />\n";
|
|
|
|
|
$lkText .= "<link rel=\"stylesheet\" href=\"jquery-ui/jquery-ui.min.css\" type=\"text/css\" />\n";
|
|
|
|
|
$lkText .= "<link rel=\"stylesheet\" href=\"jquery-ui/jquery-ui.theme.min.css\" type=\"text/css\" />\n";
|
|
|
|
|
return $lkText;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJsLink($links) {
|
|
|
|
|
/*
|
|
|
|
|
* retornas links passados no array como string
|
|
|
|
|
* para ser inserida no head da pagina
|
|
|
|
|
*/
|
|
|
|
|
$lkText = "";
|
|
|
|
|
foreach ($links as $value) {
|
|
|
|
|
$idHand = "?idHand=" . time();
|
|
|
|
|
if (!empty($value))
|
|
|
|
|
$lkText .= "<script type=\"text/javascript\" src=\"$value$idHand\"></script>" . "\n";
|
|
|
|
|
}
|
|
|
|
|
return $lkText;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetJsBlok($command, $incTag = true) {
|
|
|
|
|
/*
|
|
|
|
|
* retornas links passados no array como string
|
|
|
|
|
* para ser inserida no head da pagina
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
//if(count($command) == 0) return "";
|
|
|
|
|
$lkText = $incTag ? "<script language=\"JavaScript\" type=\"text/javascript\"> \n <!-- \n" : "";
|
|
|
|
|
foreach ($command as $value) {
|
|
|
|
|
if (!empty($value))
|
|
|
|
|
$lkText .= " $value\n";
|
|
|
|
|
}
|
|
|
|
|
$lkText .= $incTag ? " //-->\n </script>\n" : "";
|
|
|
|
|
|
|
|
|
|
return $lkText;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function __GetApi($url, $params = array(), $type = 'POST') {
|
|
|
|
|
/*
|
|
|
|
|
* Para arquivos passe o parametro no formato indicado:
|
|
|
|
|
* "'file_contents'=>'@'.$file_name_with_full_path";
|
|
|
|
|
* Exemplo array params:
|
|
|
|
|
* array('extra_info' => '123456','file_contents'=>'@'.$file_name_with_full_path);
|
|
|
|
|
*/
|
|
|
|
|
$server_output = '';
|
|
|
|
|
$ch = curl_init();
|
|
|
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
|
|
|
curl_setopt($ch, CURLOPT_POST, 1);
|
|
|
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
|
|
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
|
|
$server_output = curl_exec($ch);
|
|
|
|
|
curl_close($ch);
|
|
|
|
|
|
|
|
|
|
return $server_output;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIpUsuario() {
|
|
|
|
|
return $_SERVER['REMOTE_ADDR'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraAcesso($login, $id) {
|
|
|
|
|
try {
|
|
|
|
|
$infoDispositivo = new Browser();
|
|
|
|
|
$logAcess = "Browser:%s|Platform:%s|Version:%s|Agent:%s|Mobile:%s|Robot:%s";
|
|
|
|
|
$logAcess = sprintf($logAcess, $infoDispositivo->getBrowser(), $infoDispositivo->getPlatform(), $infoDispositivo->getVersion(), $infoDispositivo->getUserAgent(), $infoDispositivo->isMobile() ? '1' : '0', $infoDispositivo->isRobot() ? '1' : '0'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_controle_acesso set acs_data_fim = coalesce(acs_data_ultacess, now()) where acs_login = %s and acs_data_fim is null;";
|
|
|
|
|
$query = sprintf($query, QuotedStr($login));
|
|
|
|
|
@pg_query($query);
|
|
|
|
|
|
|
|
|
|
$query = "insert into pbx_controle_acesso(acs_ip, acs_sessao, acs_login, acs_user_id, acs_log ) values(%s,%s,%s,%s,%s)";
|
|
|
|
|
$query = sprintf($query, QuotedStr(GetIpUsuario()), QuotedStr(session_id()), QuotedStr($login), QuotedStr($id), QuotedStr($logAcess));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
throw new Exception("Erro ao registrar acesso ao sistema!");
|
|
|
|
|
}
|
|
|
|
|
$_SESSION["SSRegAcessoId"] = GetCurrVal("pbx_controle_acesso");
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLogForms($ex->getMessage(), "RegistraAcesso");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraAcessoItem($idProg) {
|
|
|
|
|
try {
|
|
|
|
|
if (IsAjax()) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
$_SESSION['UltimaRequisicao'] = $_SERVER['REQUEST_URI'];
|
|
|
|
|
if (!$_SESSION["SSRegAcessoId"]) {
|
|
|
|
|
throw new Exception("Registro de acesso n<EFBFBD>o iniciado!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "insert into pbx_controle_acesso_item(acs_id, acsi_prog)values(%s,%s)";
|
|
|
|
|
$query = sprintf($query, QuotedStr($_SESSION["SSRegAcessoId"]), QuotedStr($idProg));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
throw new Exception("Erro ao registrar acesso ao sistema!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "update pbx_controle_acesso set acs_data_ultacess = now(), acs_prog_ultacess = %s where acs_id = %s";
|
|
|
|
|
$query = sprintf($query, QuotedStr($idProg), QuotedStr($_SESSION["SSRegAcessoId"]));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
throw new Exception("Erro ao atualizar acesso ao sistema!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLogForms($ex->getMessage(), "RegistraAcessoItem");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraErroAcesso($login, $senha) {
|
|
|
|
|
try {
|
|
|
|
|
$infoDispositivo = new Browser();
|
|
|
|
|
$logAcess = "Login:%s|Senha:%s|Browser:%s|Platform:%s|Version:%s|Agent:%s|Mobile:%s|Robot:%s";
|
|
|
|
|
$logAcess = sprintf($logAcess, $login, $senha, $infoDispositivo->getBrowser(), $infoDispositivo->getPlatform(), $infoDispositivo->getVersion(), $infoDispositivo->getUserAgent(), stripos($infoDispositivo->getUserAgent(), "Mobile") !== false ? 1 : 0, $infoDispositivo->isRobot() ? '1' : '0'
|
|
|
|
|
);
|
|
|
|
|
//$infoDispositivo->isMobile() ? '1' : '0',
|
|
|
|
|
$id = '-1';
|
|
|
|
|
$login = substr($login, 0, 32);
|
|
|
|
|
|
|
|
|
|
$query = "insert into pbx_controle_acesso(acs_ip, acs_sessao, acs_login, acs_user_id, acs_log, acs_erro ) values(%s,%s,%s,%s,%s, '1')";
|
|
|
|
|
$query = sprintf($query, QuotedStr(GetIpUsuario()), QuotedStr(session_id()), QuotedStr($login), QuotedStr($id), QuotedStr($logAcess));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
throw new Exception("Erro ao registrar acesso ao sistema!");
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLogForms($ex->getMessage(), "RegistraErroAcesso");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetTempoSessao() {
|
|
|
|
|
if ($_SESSION["prm_tempo_sessao"]) {
|
|
|
|
|
return $_SESSION["prm_tempo_sessao"];
|
|
|
|
|
}
|
|
|
|
|
$query = "select prm_tempo_sessao from pbx_parametros";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SessionExpire() {
|
|
|
|
|
if (!IsUserConnect()) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$sessionTime = GetTempoSessao() ? GetTempoSessao() : 20;
|
|
|
|
|
$maxSession = $sessionTime * 60;
|
|
|
|
|
$hStart = (int) $_SESSION["SSTimeOut"];
|
|
|
|
|
$hAtu = time();
|
|
|
|
|
$tSessin = $hAtu - $hStart;
|
|
|
|
|
|
|
|
|
|
if ($tSessin > $maxSession) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
$_SESSION["SSTimeOut"] = $hAtu;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetFileFromIdProg($idProg, $coluna = 'arquivo') {
|
|
|
|
|
if (!isset($idProg)) {
|
|
|
|
|
global $idProg;
|
|
|
|
|
}
|
|
|
|
|
$query = " select * from pbx_funcoes_internas where id_prog = '$idProg'";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
if (!$result)
|
|
|
|
|
return "$idProg";
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
|
|
|
|
|
return $row[$coluna];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetFieldFromIdProg($idProg, $field) {
|
|
|
|
|
return GetFileFromIdProg($idProg, $field);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdProgFromNomeArq($nomeArq) {
|
|
|
|
|
$query = "select id_prog from pbx_funcoes_internas where arquivo like '%$nomeArq' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
return $row['id_prog'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdProgFromNomeMenu($nomeMenu) {
|
|
|
|
|
$query = "select id_prog from pbx_funcoes where fun_nome = '{$nomeMenu}';";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$row = pg_fetch_array($result);
|
|
|
|
|
return $row['id_prog'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaLogForms($mensagem, $metodo = "padrao", $erro = 1) {
|
|
|
|
|
global $idProg;
|
|
|
|
|
$connect = pg_connect(GetConectString(), PGSQL_CONNECT_FORCE_NEW);
|
|
|
|
|
$data = date('dmY');
|
|
|
|
|
$login = GetLogin();
|
|
|
|
|
$path = GetFileFromIdProg($idProg);
|
|
|
|
|
$scrp = basename($path);
|
|
|
|
|
$datadb = date('Y-m-d H:i:s');
|
|
|
|
|
|
|
|
|
|
$file = sprintf("/var/log/asterisk/log_forms_%s_%s.log", $erro ? "erro" : "reg", $data);
|
|
|
|
|
|
|
|
|
|
$arq = fopen($file, 'a');
|
|
|
|
|
if ($arq) {
|
|
|
|
|
$linha = sprintf("Data: %s User: %s File: %s Metodo: %s \n", $data, $login, $scrp, $metodo);
|
|
|
|
|
fwrite($arq, $linha);
|
|
|
|
|
|
|
|
|
|
$linha = sprintf("Mensagem: %s\n", $mensagem);
|
|
|
|
|
fwrite($arq, $linha);
|
|
|
|
|
|
|
|
|
|
$erroSys = error_get_last();
|
|
|
|
|
$linha = sprintf("Sistema:\n[type: %s File: %s Line: %s]\nMsg: %s\n\n", $erroSys['type'], $erroSys['file'], $erroSys['line'], $erroSys['message']);
|
|
|
|
|
fwrite($arq, $linha);
|
|
|
|
|
|
|
|
|
|
fclose($arq);
|
|
|
|
|
}
|
|
|
|
|
$filesys = str_replace('\\', '/', $erroSys['file']);
|
|
|
|
|
$mensagem = str_replace('\"', '"', $mensagem);
|
|
|
|
|
|
|
|
|
|
$query = sprintf("insert into pbx_log_forms(log_msg, log_msg_sys, log_type_sys, log_file_sys, log_line_sys, log_file_form, id_prog, log_usuario, log_data)
|
|
|
|
|
values(%s,%s,%s,%s,%s,%s,%s,%s,%s)", QuotedStr($mensagem), QuotedStr($erroSys['message']), QuotedStr($erroSys['type']), QuotedStr($filesys), QuotedStr($erroSys['line']), QuotedStr($scrp), QuotedStr($idProg), QuotedStr($login), QuotedStr($datadb));
|
|
|
|
|
|
|
|
|
|
pg_query($connect, $query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GrvAudita($db, $idProg, $nomeTabela, $tipoOper, $velho, $novo, $campoNome, $keyTable = array('id'), $silent = false) {
|
|
|
|
|
try {
|
|
|
|
|
$aud_uid = time();
|
|
|
|
|
$data = date("Y-m-d H:i:s");
|
|
|
|
|
$login = GetLogin();
|
|
|
|
|
$aud_ip = $_SERVER['REMOTE_ADDR'];
|
|
|
|
|
$reg_id = $_SESSION["SSRegAcessoId"];
|
|
|
|
|
|
|
|
|
|
$sql = "insert into pbx_audita(
|
|
|
|
|
id_prog, aud_ip, aud_tabela, aud_campo, aud_campo_display, aud_operacao, aud_valor_antigo, aud_valor_novo, reg_id, user_reg, aud_uid
|
|
|
|
|
)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s, %s);";
|
|
|
|
|
|
|
|
|
|
$update = $novo;
|
|
|
|
|
//if($tipoOper == 'DEL'){ $update = $velho; }
|
|
|
|
|
if ($tipoOper == 'INS') {
|
|
|
|
|
$velho = array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($update as $key => $value) {
|
|
|
|
|
$campo = $key;
|
|
|
|
|
$valorVelho = isset($velho[$key]) ? $velho[$key] : '';
|
|
|
|
|
$valorNovo = isset($novo[$key]) ? $novo[$key] : '';
|
|
|
|
|
$aud_campo_display = isset($campoNome[$key]) ? $campoNome[$key] : $key;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Grava log apenas para valores alterados.
|
|
|
|
|
*/
|
|
|
|
|
if (($valorVelho != $valorNovo) || (array_search($key, $keyTable) !== false)) {
|
|
|
|
|
$query = sprintf($sql, QuotedStr($idProg), QuotedStr($aud_ip), QuotedStr($nomeTabela), QuotedStr($campo), QuotedStr($aud_campo_display), QuotedStr($tipoOper), IsNullQuoted($valorVelho), IsNullQuoted($valorNovo), QuotedStr($reg_id), QuotedStr($login), QuotedStr($aud_uid)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
throw new Exception("GrvAudita|Login=$login|Data=$data|CMD=[$query]");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if ($silent)
|
|
|
|
|
return true;
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
GravaLogForms($ex->getMessage());
|
|
|
|
|
if ($silent)
|
|
|
|
|
return false;
|
|
|
|
|
GeraExcept("N<EFBFBD>o foi possivel gravar a auditoria!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GrvLog($grvLog) {
|
|
|
|
|
$data = date("Y-m-d");
|
|
|
|
|
$dir = "/var/log/asterisk/pbx_audita/";
|
|
|
|
|
if (!file_exists($dir)) {
|
|
|
|
|
system(sprintf("mkdir -p %s", $dir));
|
|
|
|
|
}
|
|
|
|
|
$file = sprintf("%s/%s.log", $dir, $data);
|
|
|
|
|
|
|
|
|
|
$arq = fopen($file, 'a');
|
|
|
|
|
if ($arq) {
|
|
|
|
|
fwrite($arq, $grvLog);
|
|
|
|
|
fclose($arq);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetDadosOld($arOld = array()) {
|
|
|
|
|
$_SESSION['SSoldDados'] = $arOld;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDadosOld() {
|
|
|
|
|
return isset($_SESSION['SSoldDados']) ? $_SESSION['SSoldDados'] : array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PbxFechaPopup($url = '') {
|
|
|
|
|
echo sprintf("<script type=\"text/javascript\">fecha_popup('0','%s');</script>", $url);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PbxAlert($msg) {
|
|
|
|
|
echo "<script type=\"text/javascript\">alert('" . $msg . "');</script>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GravaFull($__idProg = 0, $uniqueid = '', $msg = '', $param = '') {
|
|
|
|
|
if (IsUserConnect() || $param) {
|
|
|
|
|
global $idProg;
|
|
|
|
|
$dir = '/var/log/asterisk/audita';
|
|
|
|
|
if (!file_exists($dir)) {
|
|
|
|
|
system("mkdir -p $dir");
|
|
|
|
|
system("chmod 777 -R $dir");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($__idProg) {
|
|
|
|
|
$idProg = $__idProg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$path = $dir . sprintf('/simplesFull-%s.log', date('Y-m-d'));
|
|
|
|
|
$uid = $uniqueid ? $uniqueid : time();
|
|
|
|
|
$login = ($param ? $param : GetLogin());
|
|
|
|
|
$ip = GetIpUsuario();
|
|
|
|
|
|
|
|
|
|
if (empty($param)) {
|
|
|
|
|
$programa = explode("/", GetFileFromIdProg($idProg));
|
|
|
|
|
$programa = $programa[(count($programa) - 1)];
|
|
|
|
|
} else {
|
|
|
|
|
$programa = 'login.php';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$data = date('Y-m-d H:i:s');
|
|
|
|
|
$arAudita = array('uid' => $uid, 'ip' => $ip, 'data' => $data, 'login' => $login, "prog" => $programa, 'msg' => $msg, 'request' => $_REQUEST, 'session' => $_SESSION);
|
|
|
|
|
$log = json_encode($arAudita, true);
|
|
|
|
|
if (!file_exists($path)) {
|
|
|
|
|
$file = @fopen($path, 'w+');
|
|
|
|
|
} else {
|
|
|
|
|
$file = @fopen($path, 'a');
|
|
|
|
|
}
|
|
|
|
|
if (is_readable($path) && ($file !== null)) {
|
|
|
|
|
fwrite($file, ($log . "\n"));
|
|
|
|
|
fclose($file);
|
|
|
|
|
}
|
|
|
|
|
$uid = time();
|
|
|
|
|
/*
|
|
|
|
|
* Log no banco de dados.
|
|
|
|
|
*/
|
|
|
|
|
$query = "insert into pbx_audita_full(login,id_prog,full_ip,full_uid,full_prog_nome,full_tipo,full_log)values(%s,%s,%s,%s,%s,%s,%s)";
|
|
|
|
|
$query = sprintf($query, QuotedStr($login), QuotedStr($idProg), QuotedStr($ip), QuotedStr($uid), QuotedStr($programa), QuotedStr(IsPostBack() ? 'POST' : 'GET'), QuotedStr($log));
|
|
|
|
|
@pg_query($query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CommandoAmi($params) {
|
|
|
|
|
$dados = pg_fetch_array($result);
|
|
|
|
|
list($sckHost, $sckPort, $sckUser, $sckPass) = GetSckConnect();
|
|
|
|
|
$socket = ConectaAmi($sckHost, $sckPort, $sckUser, $sckPass);
|
|
|
|
|
|
|
|
|
|
if ($socket) {
|
|
|
|
|
return ExecutaAmi($socket, $params);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetCookieApl($name, $value, $expire = -1) {
|
|
|
|
|
if ($expire === -1) {
|
|
|
|
|
$expire = time() + 60 * 60 * 24 * 300;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return setcookie($name, $value, $expire);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetCookieApl($name) {
|
|
|
|
|
if (!isset($_COOKIE[$name])) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$_SESSION[$name] = $_COOKIE[$name];
|
|
|
|
|
return $_COOKIE[$name];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRamalMonitorar($name) {
|
|
|
|
|
return isset($_SESSION[$name]) ? $_SESSION[$name] : null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ValidaRamalApl($ramal) {
|
|
|
|
|
/*
|
|
|
|
|
* Esta fun<EFBFBD><EFBFBD>o verifica se o ramal existe, e retorna o canal se o ramal <EFBFBD> valido.
|
|
|
|
|
*/
|
|
|
|
|
global $dbcon;
|
|
|
|
|
$query = "select dispositivo from pbx_ramais where nome = '$ramal'";
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetAcessoAudio($dac) {
|
|
|
|
|
/*
|
|
|
|
|
* Desativado o uso de sessoes.
|
|
|
|
|
*/
|
|
|
|
|
$acessAudio = 0;
|
|
|
|
|
$idUser = GetIdUser();
|
|
|
|
|
//$query = "select '' from pbx_fila_audios x, pbx_grupo_usuario y where y.gp_id = x.gp_id and y.user_id = $idUser and x.id = '$dac'";
|
|
|
|
|
$query = "select '' from pbx_fila_audios x, pbx_grupo_usuario y, pbx_dacs z where y.gp_id = x.gp_id and z.id = x.id and y.user_id = '$idUser' and z.nome = '$dac'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if ($result && pg_num_rows($result)) {
|
|
|
|
|
$acessAudio = 1;
|
|
|
|
|
}
|
|
|
|
|
return $acessAudio;
|
|
|
|
|
$_SESSION['SSAcessoAudio'] = $acessAudio;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAcessoAudio($dac) {
|
|
|
|
|
$idUser = GetIdUser();
|
|
|
|
|
//$query = "select '' from pbx_fila_audios x, pbx_grupo_usuario y where y.gp_id = x.gp_id and y.user_id = $idUser and x.id = '$dac'";
|
|
|
|
|
$query = "select '' from pbx_fila_audios x, pbx_grupo_usuario y, pbx_dacs z where y.gp_id = x.gp_id and z.id = x.id and y.user_id = '$idUser' and z.nome = '$dac'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if ($result && pg_num_rows($result)) {
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
/*
|
|
|
|
|
return SetAcessoAudio($dac);
|
|
|
|
|
if(isset($_SESSION['SSAcessoAudio']))
|
|
|
|
|
{
|
|
|
|
|
return $_SESSION['SSAcessoAudio'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SetAcessoAudio($dac);
|
|
|
|
|
return $_SESSION['SSAcessoAudio'];
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ConfigRamalMonitorar() {
|
|
|
|
|
try {
|
|
|
|
|
$nomeRamalMonitorar = ($_REQUEST['nomeRamalMonitorar']);
|
|
|
|
|
$nomecanalMonitorar = ($_REQUEST['nomeCanalMonitorar']);
|
|
|
|
|
$ramalMonitorar = $_REQUEST['ramalMonitorar'];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Fun<EFBFBD><EFBFBD>o verifica se o ramal <EFBFBD> v<EFBFBD>lido, retornando ok caso afirmativo.
|
|
|
|
|
*/
|
|
|
|
|
$canalMonitorar = ValidaRamalApl($ramalMonitorar);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Ramal inv<EFBFBD>lido retorna falso.
|
|
|
|
|
*/
|
|
|
|
|
if ($canalMonitorar === false) {
|
|
|
|
|
GeraExcept("Erro;Ramal inv<EFBFBD>lido!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!SetCookieApl($nomeRamalMonitorar, $ramalMonitorar)) {
|
|
|
|
|
GeraExcept("Erro;N<EFBFBD>o foi poss<EFBFBD>vel registrar o \"Ramal\"!");
|
|
|
|
|
}
|
|
|
|
|
if (!SetCookieApl($nomecanalMonitorar, $canalMonitorar)) {
|
|
|
|
|
GeraExcept("Erro;N<EFBFBD>o foi poss<EFBFBD>vel registrar o \"Canal\"!");
|
|
|
|
|
}
|
|
|
|
|
$_SESSION[$nomeRamalMonitorar] = $ramalMonitorar;
|
|
|
|
|
$_SESSION[$nomecanalMonitorar] = $canalMonitorar;
|
|
|
|
|
|
|
|
|
|
echo "OK;$ramalMonitorar";
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
echo $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetIdentRota($dbcon, $codServ = 0) {
|
|
|
|
|
$codSel = $codServ;
|
|
|
|
|
$serv = "<select name=\"listaServico\" id=\"listaServico\" size=\"1\">";
|
|
|
|
|
$sel = $codSel == '0' ? "selected" : "";
|
|
|
|
|
$serv .= "<option value=\"0\" $sel>Todos</option>";
|
|
|
|
|
$cont = 0;
|
|
|
|
|
$i = 0;
|
|
|
|
|
|
|
|
|
|
$query = "select serv_id as identificador from pbx_servicos where serv_status = 1 order by 1";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
while ($dados = pg_fetch_row($result)) {
|
|
|
|
|
if ($codSel === $dados[0]) {
|
|
|
|
|
$sel = "selected";
|
|
|
|
|
} else {
|
|
|
|
|
$sel = "";
|
|
|
|
|
}
|
|
|
|
|
$serv .= "<option value=\"$dados[0]\" $sel>$dados[0]</option>";
|
|
|
|
|
}
|
|
|
|
|
$serv .= "</select>";
|
|
|
|
|
return $serv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AtualizaLinkAgente() {
|
|
|
|
|
global $alturaTabelaAgente;
|
|
|
|
|
|
|
|
|
|
$query = "select prm_agente_nova_janela, prm_use_discador from pbx_parametros";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$dados = pg_fetch_array($result, null, PGSQL_ASSOC);
|
|
|
|
|
|
|
|
|
|
$novaJanela = $dados['prm_agente_nova_janela'];
|
|
|
|
|
$useDiscador = $dados['prm_use_discador'];
|
|
|
|
|
|
|
|
|
|
$link = 'index.php?idProg=14';
|
|
|
|
|
$alturaJanAgt = 540;
|
|
|
|
|
if ($novaJanela) {
|
|
|
|
|
$link = GetLinkNovaJanela(840, ($useDiscador ? $alturaJanAgt : $alturaTabelaAgente), 'index.php?idProg=14', 'AgenteCallcenter');
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = sprintf("update pbx_funcoes set fun_menu_url = %s where fun_nome = 'mnAgente'", QuotedStr($link));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
return $result ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function AtualizaMenuVendas($status) {
|
|
|
|
|
if (!$status) {
|
|
|
|
|
$_SESSION['prm_use_vendas'] = $status;
|
|
|
|
|
$query = sprintf("delete from pbx_funcoes where fun_nome in(%s, %s)", QuotedStr('mnConsolidaVendas'), QuotedStr('mnConsolidaVendasFunil'));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetInfoCampanha($dac, $retArray = 0) {
|
|
|
|
|
$table = "<table style=\"border:0\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\">";
|
|
|
|
|
|
|
|
|
|
$query = "select count(distinct a.cmp_id) as cmp_ativa, count(*) as numero_contatos, sum(case when(c.cont_discado = 1)then 1 else 0 end) as numero_discado
|
|
|
|
|
from pbx_campanha a
|
|
|
|
|
inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1
|
|
|
|
|
inner join pbx_campanha_contato c on c.list_id = b.list_id
|
|
|
|
|
where a.id_dac = (select id from pbx_dacs where nome = '$dac')
|
|
|
|
|
and a.cmp_status in(1,2)";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
$linha = '';
|
|
|
|
|
if ($dados = pg_fetch_array($result, null, PGSQL_ASSOC)) {
|
|
|
|
|
$cmpAtv = $dados["cmp_ativa"] ? $dados["cmp_ativa"] : 0;
|
|
|
|
|
$conts = $dados["numero_contatos"] ? $dados["numero_contatos"] : 0;
|
|
|
|
|
$disc = $dados["numero_discado"] ? $dados["numero_discado"] : 0;
|
|
|
|
|
$cmp = sprintf('<span title="Campanhas Ativas!">%s</span>', $cmpAtv);
|
|
|
|
|
$contatos = sprintf('<span title="Contatos da Lista!">%s</span>', $conts);
|
|
|
|
|
$discados = sprintf('<span title="Contatos Discados">%s</span>', $disc);
|
|
|
|
|
$lkCamp = ($cmpAtv == 0) ? $cmp : sprintf("<a href=\"javaScript:NovaJanela('index.php?idProg=275&dac=$dac&tpLayout=2', 'jnRelSupRecebidas', '900', '500', 'scrollbars=YES');\" title=\"Campanhas Ativas/Detalhamento!\" style=\"color:black;\" >%s</a>", $cmpAtv);
|
|
|
|
|
|
|
|
|
|
$linha = "$table<tr><td style=\"border:0; width: 20%;\" align=\"right\">$lkCamp</td><td style=\"border:0; width: 40%;\" align=\"right\">$contatos</td><td style=\"border:0; width: 40%;\" align=\"right\">$discados</td></tr></table>";
|
|
|
|
|
|
|
|
|
|
return $retArray ? $dados : $linha;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDiscadorRestantes($dac, $matricula, $idCampanha = null) {
|
|
|
|
|
$lista = '';
|
|
|
|
|
$cmplCamp = '';
|
|
|
|
|
/**
|
|
|
|
|
* Verifica se a campanha <EFBFBD> exclusiv
|
|
|
|
|
*/
|
|
|
|
|
if ($idCampanha) {
|
|
|
|
|
$sql = "SELECT cmp_seletiva FROM pbx_campanha WHERE cmp_id = {$idCampanha}";
|
|
|
|
|
$res = pg_query($sql);
|
|
|
|
|
$cmpExclusiva = pg_fetch_assoc($res);
|
|
|
|
|
if ($cmpExclusiva['cmp_seletiva'] == 1) {
|
|
|
|
|
$cmplCamp .= " AND conf_matricula_exclusiva = '{$matricula}' ";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Pega a lista de status da opera<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select count(*) as quantidade_contatos,
|
|
|
|
|
count(*) - sum(case when(c.cont_discado = 0)then 0 else 1 end) as contatos_restantes
|
|
|
|
|
from pbx_campanha_usuarios u
|
|
|
|
|
inner join pbx_campanha a on a.cmp_id = u.cmp_id and a.cmp_status = 1 and a.id_dac = '$dac'
|
|
|
|
|
inner join pbx_campanha_lista b on b.cmp_id = a.cmp_id and b.list_status = 1
|
|
|
|
|
inner join pbx_campanha_contato c on c.list_id = b.list_id $cmplCamp
|
|
|
|
|
where u.matricula = '$matricula'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return array("quantidade_contatos" => "0", "quantidade_discados" => "0", "contatos_restantes" => "0");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$dados = @pg_fetch_row($result);
|
|
|
|
|
return array("quantidade_contatos" => $dados[0], "quantidade_discados" => ($dados[0] - $dados[1]), "contatos_restantes" => $dados[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PaginacaoRegPagina() {
|
|
|
|
|
return $_SESSION['prm_registro_pagina'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PaginacaoSql($sql) {
|
|
|
|
|
/*
|
|
|
|
|
* Prepara a query para countar a quantidade todal de registros.
|
|
|
|
|
*/
|
|
|
|
|
$inicio = stripos($sql, "from") + 4;
|
|
|
|
|
$fim = stripos($sql, "order by") ? stripos($sql, "order by") - 1 : stripos($sql, "limit") - 1;
|
|
|
|
|
if ($fim <= 0) {
|
|
|
|
|
$fim = strlen($sql);
|
|
|
|
|
}
|
|
|
|
|
$sql = "select count(*) from " . substr($sql, $inicio, $fim - $inicio);
|
|
|
|
|
return $sql;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PaginacaoTotalReg($sql, $idProg, $force) {
|
|
|
|
|
global $recontaPag;
|
|
|
|
|
/*
|
|
|
|
|
* O objetivo da fun<EFBFBD><EFBFBD>o <EFBFBD> retornar o total de registro que a consulta ira
|
|
|
|
|
* conter para calcular a pagina<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$md5Sql = md5($sql);
|
|
|
|
|
$idxPagina = "SSPaginacaoTotalReg_" . $idProg;
|
|
|
|
|
$idxPaginaMD5 = "SSPaginacaoMD5_" . $idProg;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Um hash md5 da consulta <EFBFBD> gravado em uma variavel de sess<EFBFBD>o para
|
|
|
|
|
* verificar se houve altera<EFBFBD><EFBFBD>o na mesma, retorna o valor recuperado
|
|
|
|
|
* na primeira consulta efetuada se n<EFBFBD>o sofreu altera<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
if (!$recontaPag && isset($_SESSION[$idxPaginaMD5]) && ($_SESSION[$idxPaginaMD5] == $md5Sql)) {
|
|
|
|
|
return $_SESSION[$idxPagina];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Esta fun<EFBFBD><EFBFBD>o prepara a consulta original para trazer apenas um count.
|
|
|
|
|
*/
|
|
|
|
|
$query = $force ? $sql : PaginacaoSql($sql);
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$row = $force ? pg_num_rows($result) : pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Grava o md5 da consulta para compara<EFBFBD><EFBFBD>o posterior e tamb<EFBFBD>m a quantidade de
|
|
|
|
|
* registros para retornar a aplica<EFBFBD><EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
$_SESSION[$idxPaginaMD5] = $md5Sql;
|
|
|
|
|
return ($_SESSION[$idxPagina] = $force ? $row : $row[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PaginaDados($idProg, $sql, &$params, &$regPagina, &$offSet, &$pagMostra, $force) {
|
|
|
|
|
global $totalReg;
|
|
|
|
|
/*
|
|
|
|
|
* Quantas paginas s<EFBFBD>o mostrados no rodape.
|
|
|
|
|
*/
|
|
|
|
|
$tamBloco = PAGINACAO_TAMANHO_BLOCO;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Quantas linhas s<EFBFBD>o mostradas por p<EFBFBD>gina.
|
|
|
|
|
*/
|
|
|
|
|
$regPagina = PaginacaoRegPagina();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Calcula o total de registros a serem recuperados.
|
|
|
|
|
* Em alguns casos o total de registros <EFBFBD> passado direto
|
|
|
|
|
* na variavel $sql como um inteiro.
|
|
|
|
|
*/
|
|
|
|
|
$totalReg = is_numeric($sql) ? $sql : PaginacaoTotalReg($sql, $idProg, $force);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Calcula o n<EFBFBD>mero total de paginas tendo com base o n<EFBFBD>mero total
|
|
|
|
|
* de registros a set recuperado pelo numero de linhas por pagina.
|
|
|
|
|
*/
|
|
|
|
|
$addPage = ($totalReg % $regPagina) > 0 ? 1 : 0;
|
|
|
|
|
$paginas = ((int) ($totalReg / $regPagina)) + (($totalReg % $regPagina) > 0 ? 1 : 0);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* O n<EFBFBD>mero total de blocos necess<EFBFBD>rio para exibir todas as paginas.
|
|
|
|
|
*/
|
|
|
|
|
$numBlocos = (((int) ($paginas / $tamBloco)) + (($paginas % $tamBloco) > 0 ? 1 : 0)) - 1;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Indica a navega<EFBFBD><EFBFBD>o pelos blocos.
|
|
|
|
|
*/
|
|
|
|
|
$pgn = (isset($_REQUEST['pgn']) && trim($_REQUEST['pgn'])) ? $_REQUEST['pgn'] : 0;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* O bloco atual.
|
|
|
|
|
*/
|
|
|
|
|
$bloco = (isset($_REQUEST['bloco']) ? $_REQUEST['bloco'] : 0) + $pgn;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* A pagina atual a ser mostrada
|
|
|
|
|
*/
|
|
|
|
|
$pgAtu = $pgn ? ($bloco * $tamBloco) : (isset($_REQUEST['pg']) ? $_REQUEST['pg'] : 0);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Corrige o n<EFBFBD>emro de paginas na dele<EFBFBD><EFBFBD>o
|
|
|
|
|
*/
|
|
|
|
|
if ($pgAtu >= $paginas) {
|
|
|
|
|
$pgAtu = $paginas - 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* A p<EFBFBD>gina atual a ser listada.
|
|
|
|
|
*/
|
|
|
|
|
$offSet = abs($regPagina * $pgAtu);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Variavel usada para mostar o numero de registros em rela<EFBFBD><EFBFBD>o ao total(de at<EFBFBD>)
|
|
|
|
|
*/
|
|
|
|
|
$pagMostra = !$totalReg ? 0 : ( (($pgAtu + 1) == $paginas) ? $totalReg : ($regPagina * ($pgAtu + 1)) );
|
|
|
|
|
|
|
|
|
|
$pgs = '';
|
|
|
|
|
$tamIcone = 8;
|
|
|
|
|
$imgPrior = sprintf("<img src=\"imgSite/%s\" width=\"$tamIcone\" height=\"$tamIcone\" border=\"0\">", !$bloco ? 'priorOff.png' : 'prior.png');
|
|
|
|
|
$imgPrevious = sprintf("<img src=\"imgSite/%s\" width=\"$tamIcone\" height=\"$tamIcone\" border=\"0\">", !$bloco ? 'previousOff.png' : 'previous.png');
|
|
|
|
|
|
|
|
|
|
$linkPrior = !$bloco ? $imgPrior : sprintf('<a class="pagina" href="index.php?idProg=%s%s&pgn=0&pg=0&bloco=0">%s</a> ', $idProg, $params, $imgPrior);
|
|
|
|
|
$linkPrev = !$bloco ? $imgPrevious : sprintf('<a class="pagina" href="index.php?idProg=%s%s&pgn=-1&bloco=%s">%s</a> ', $idProg, $params, $bloco, $imgPrevious);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$link = sprintf("<table class=\"pagina\"><tr style=\"background-color: transparent !important;\"><td style=\"width: 8px\">%s</td><td style=\"width: 8px\">%s</td>", $linkPrior, $linkPrev);
|
|
|
|
|
$i = 0;
|
|
|
|
|
while ($i < $tamBloco) {
|
|
|
|
|
$pg = $i + ($bloco * $tamBloco);
|
|
|
|
|
if (($pg * $regPagina) < $totalReg)
|
|
|
|
|
$pgs .= sprintf("<td>%s</td>", ($pg == $pgAtu) ? ('<span class="pagina" >' . ($pg + 1) . '</span>') : sprintf('<a class="pagina" href="index.php?idProg=%s%s&pgn=0&bloco=%s&pg=%s">%s</a>', $idProg, $params, $bloco, $pg, $pg + 1)
|
|
|
|
|
);
|
|
|
|
|
if ($pg == $pgAtu) {
|
|
|
|
|
$params = sprintf("%s&pgn=0&bloco=%s&pg=%s", $params, $bloco, $pg);
|
|
|
|
|
}
|
|
|
|
|
$i++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$imgNext = sprintf("<img src=\"imgSite/%s\" width=\"$tamIcone\" height=\"$tamIcone\" border=\"0\">", $bloco >= $numBlocos ? 'nextOff.png' : 'pgnext.png');
|
|
|
|
|
$imgLast = sprintf("<img src=\"imgSite/%s\" width=\"$tamIcone\" height=\"$tamIcone\" border=\"0\">", $bloco >= $numBlocos ? 'lastOff.png' : 'pglast.png');
|
|
|
|
|
|
|
|
|
|
$linkNext = sprintf('<a class="pagina" href="index.php?idProg=%s%s&pgn=1&bloco=%s">%s</a>', $idProg, $params, $bloco, $imgNext);
|
|
|
|
|
$linkLast = sprintf('<a class="pagina" href="index.php?idProg=%s%s&pgn=0&pg=%s&bloco=%s">%s</a>', $idProg, $params, $paginas - 1, $numBlocos, $imgLast);
|
|
|
|
|
$linkNext = ($bloco >= $numBlocos) ? $imgNext : $linkNext;
|
|
|
|
|
$linkLast = ($bloco >= $numBlocos) ? $imgLast : $linkLast;
|
|
|
|
|
$link .= $pgs . sprintf("<td style=\"width: 8px\">%s</td><td style=\"width: 8px\">%s</td></tr></table>", $linkNext, $linkLast);
|
|
|
|
|
|
|
|
|
|
return $link;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PreparaLike($valor, $useQuted = false) {
|
|
|
|
|
$val = explode(" ", $valor);
|
|
|
|
|
$str = "%";
|
|
|
|
|
foreach ($val as $value) {
|
|
|
|
|
$str .= $value . "%";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $useQuted ? QuotedStr($str) : $str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Alert($msg, $pbx = 0) {
|
|
|
|
|
global $jsStartup;
|
|
|
|
|
$arReplace = array("^", "~", "`", "'", "'", "\n");
|
|
|
|
|
if ($pbx) {
|
|
|
|
|
echo sprintf("<script>alert('%s');</script>", trim(str_replace($arReplace, "", RemoveAcentos($msg))));
|
|
|
|
|
} else {
|
|
|
|
|
$jsStartup[] = sprintf("alert('%s');", trim(str_replace($arReplace, "", RemoveAcentos($msg))));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRevendasUsuario($db, $grpId, $text = true) {
|
|
|
|
|
$idUser = GetIdUser();
|
|
|
|
|
$query = " select distinct e.emp_id
|
|
|
|
|
from vds_grupos a
|
|
|
|
|
inner join vds_grupos_empresas b on b.grp_id = a.grp_id
|
|
|
|
|
inner join pbx_grupo_revendas c on c.emp_id = b.emp_id
|
|
|
|
|
inner join pbx_grupo_usuario d on d.gp_id = c.gp_id
|
|
|
|
|
inner join vds_empresas e on e.emp_id = c.emp_id\n
|
|
|
|
|
where 1=1\n";
|
|
|
|
|
$query .= IsAdmin() ? '' : " and d.user_id = '$idUser'\n";
|
|
|
|
|
$query .= !$grpId ? '' : " and a.grp_id = '$grpId'\n";
|
|
|
|
|
$query .= " order by e.emp_id\n";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result || !pg_num_rows($result))
|
|
|
|
|
return $text ? '' : array();
|
|
|
|
|
|
|
|
|
|
$retArray = array();
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$retArray[] = $dados['emp_id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $text ? implode(",", $retArray) : $retArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRevendasGrupo($db, $grpId) {
|
|
|
|
|
|
|
|
|
|
$query = "select emp_id from vds_grupos_empresas where grp_id = '$grpId'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$retArray = array();
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$retArray[] = $dados['emp_id'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $retArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function UseModVendas() {
|
|
|
|
|
return $_SESSION['prm_use_vendas'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLinkAudio() {
|
|
|
|
|
$server = array_key_exists('SERVER_ADDR', $_SERVER) ? $_SERVER['SERVER_ADDR'] : $_SERVER['SERVER_NAME'];
|
|
|
|
|
return !$_SESSION['prm_link_audio'] ? $server : $_SESSION['prm_link_audio'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExigeProtoVendas() {
|
|
|
|
|
return $_SESSION['prm_exige_proto_vendas'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MenuVendas() {
|
|
|
|
|
return isset($_SESSION['prm_nome_vendas']) ? $_SESSION['prm_nome_vendas'] : 'Vendas';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAtivaIntegracao() {
|
|
|
|
|
return $_SESSION['prm_ativa_integracao'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMetodoIntegracao() {
|
|
|
|
|
return $_SESSION['prm_select_integracao'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetProtoExternoReg($uniqueid, $clas) {
|
|
|
|
|
$query = sprintf("select '' from pbx_classifica_atendimento where clas_id = %s and clas_descricao = 'VENDA'", QuotedStr(strtoupper($clas)));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = sprintf("select '' from pbx_protocolo_reg where uniqueid = %s and protoparceiro is not null", QuotedStr($uniqueid));
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
return pg_num_rows($result) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRejeitadosVendas($dacAtv) {
|
|
|
|
|
$query = "select count(distinct protocolo) from pbx_protocolo_reg a, ast_eventos_dacs b where b.uid2 = a.uniqueid and b.fila = '$dacAtv' and a.protointegrado = '9' and a.\"dataReg\"::date = now()::date";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetVendasAgente($dac, $matricula) {
|
|
|
|
|
if (!AgenteON() || !UseModVendas()) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
$query = "select count(distinct a.id_bilhetes) from pbx_classifica_reg a, pbx_classifica_atendimento b
|
|
|
|
|
where b.clas_id = a.clas_id
|
|
|
|
|
and upper(b.clas_descricao) = 'VENDA'
|
|
|
|
|
and a.id_dac = '$dac'
|
|
|
|
|
and matricula = '$matricula'
|
|
|
|
|
and data_reg::date = now()::date";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ocultarCampo($campo, $key, &$array) {
|
|
|
|
|
if (strpos($campo, '*') !== false) {
|
|
|
|
|
$pos = explode('*', $campo);
|
|
|
|
|
$array[$key] = $pos[1];
|
|
|
|
|
return $pos[0];
|
|
|
|
|
}
|
|
|
|
|
return $campo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ocultarLGPD($campo, $position) {
|
|
|
|
|
if ($campo && $position) {
|
|
|
|
|
return substr_replace($campo, '****', 0, $position);
|
|
|
|
|
}
|
|
|
|
|
return $campo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ocultarTelefone($tel, $pos = 0) {
|
|
|
|
|
$telefone = filter_var($tel, FILTER_SANITIZE_NUMBER_INT);
|
|
|
|
|
$position = ($pos ? $pos : $_SESSION['prm_ocultar_telefone']);
|
|
|
|
|
if (strlen($telefone) >= 6 && $telefone && $position) {
|
|
|
|
|
return substr_replace($telefone, '*****', 0, $position);
|
|
|
|
|
}
|
|
|
|
|
return $tel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ocultarEmail($mail, $position = 0) {
|
|
|
|
|
$posicao = $position ? $position : $_SESSION['prm_ocultar_telefone'];
|
|
|
|
|
if ($posicao <= 0) {
|
|
|
|
|
return $mail;
|
|
|
|
|
}
|
|
|
|
|
$email = explode('@', $mail);
|
|
|
|
|
return substr_replace($email[0], '*****', 0, $posicao) . '@' . $email[1];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ocultarCpf($doc, $position = 0) {
|
|
|
|
|
$documento = filter_var($doc, FILTER_SANITIZE_NUMBER_INT);
|
|
|
|
|
$posicao = $position ? $position : $_SESSION['prm_ocultar_documento'];
|
|
|
|
|
if ((strlen($documento) == 14 || strlen($documento) == 11) && $documento && $posicao) {
|
|
|
|
|
return substr_replace($documento, '*****', 0, $posicao);
|
|
|
|
|
}
|
|
|
|
|
return $doc;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function cryptOpenSSL($string, $chave = CONF_CRYPT_KEY, $iv = CONF_CRYPT_IV, $alg = "AES-256-CBC") {
|
|
|
|
|
return openssl_encrypt($string, $alg, $chave, OPENSSL_RAW_DATA, $iv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function descryptOpenSSL($string, $chave = CONF_CRYPT_KEY, $iv = CONF_CRYPT_IV, $alg = "AES-256-CBC") {
|
|
|
|
|
return openssl_encrypt($string, $alg, $chave, OPENSSL_RAW_DATA, $iv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetResScreen($w, $h, $tbLayout) {
|
|
|
|
|
$_SESSION['SSScreenW'] = $w;
|
|
|
|
|
$_SESSION['SSScreenH'] = $h;
|
|
|
|
|
$_SESSION['SStbLayout'] = $tbLayout;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetScreenW() {
|
|
|
|
|
return isset($_SESSION['SSScreenW']) ? $_SESSION['SSScreenW'] : (isset($_REQUEST['screenW']) ? $_REQUEST['screenW'] : 800 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetScreenH() {
|
|
|
|
|
return isset($_SESSION['SSScreenH']) ? $_SESSION['SSScreenH'] : (isset($_REQUEST['screenH']) ? $_REQUEST['screenH'] : 600 );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetSizeTbLayout() {
|
|
|
|
|
return (isset($_SESSION['SStbLayout']) ? $_SESSION['SStbLayout'] : null);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetNomeDac($dac) {
|
|
|
|
|
/*
|
|
|
|
|
* O valor zero representa que todos os dacs est<EFBFBD>o selecionados.
|
|
|
|
|
*/
|
|
|
|
|
if (!$dac) {
|
|
|
|
|
return 'Todos';
|
|
|
|
|
}
|
|
|
|
|
$query = "select nome from pbx_dacs where id = '$dac'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Retorna vazio em caso de erro ou o dac n<EFBFBD>o existir.
|
|
|
|
|
*/
|
|
|
|
|
if (!$result || !pg_num_rows($result)) {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Dac encontrado retorna o nome.
|
|
|
|
|
*/
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMes($mes = 0, $incTodos = 0, $head = 0) {
|
|
|
|
|
global $meses;
|
|
|
|
|
$listaMes = '';
|
|
|
|
|
if ($head) {
|
|
|
|
|
$listaMes .= '<select name="listaMes" id="listaMes" size="1">';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for ($i = $incTodos ? 0 : 1; $i <= 12; $i++) {
|
|
|
|
|
$sel = ((int) $i == (int) $mes) ? "selected" : "";
|
|
|
|
|
$listaMes .= "<option value=\"$i\" $sel>$meses[$i]</option>\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($head) {
|
|
|
|
|
$listaMes .= '</select>';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $listaMes;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetAno($ano, $head = 0, $sql = '') {
|
|
|
|
|
$combo = '';
|
|
|
|
|
if ($head) {
|
|
|
|
|
$combo .= '<select name="listaAno" id="listaAno" size="1">';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = $sql ? $sql : "select date_part('year', min(data_bilhete) ), date_part('year', max(data_bilhete) ) from pbx_bilhetes";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
|
|
|
|
|
$dados = @pg_fetch_row($result);
|
|
|
|
|
$min = !$dados[0] ? date("Y") : $dados[0];
|
|
|
|
|
$max = !$dados[1] ? date("Y") : $dados[1];
|
|
|
|
|
|
|
|
|
|
while ($max >= $min) {
|
|
|
|
|
$sel = ($max == $ano) ? "selected" : "";
|
|
|
|
|
$combo .= "<option value=\"$max\" $sel>$max</option>";
|
|
|
|
|
$max--;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($head) {
|
|
|
|
|
$combo .= '</select>';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $combo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetPausaAusente($dbcon, $matricula) {
|
|
|
|
|
$query = "select '' from pbx_supervisor_agentes a where matricula = '$matricula' and status = 'PAUSA' and upper(motivo_pausa) in('AUSENTE','RECUSADA')";
|
|
|
|
|
$result = @pg_query($dbcon, $query);
|
|
|
|
|
return pg_num_rows($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function Menu($dbcon, $queryHead = "", $queryItens = "", $idUser = 0, $hiddeLink = 0, $param = null) {
|
|
|
|
|
//$menu = $_SESSION["SSmenuSistema"];
|
|
|
|
|
//$indexMenu = $_SESSION["SSidxMenuSistema"];
|
|
|
|
|
//$dadosMenu = $_SESSION["SSdadosMenuSistema"];
|
|
|
|
|
$isTree = $_SESSION["SStreView"];
|
|
|
|
|
$nomeRoot = isset($_SESSION["SStreRoot"]) ? $_SESSION["SStreRoot"] : null;
|
|
|
|
|
$menu = IndexaMenu($dbcon, $queryHead, $queryItens, $idUser, $hiddeLink, $param);
|
|
|
|
|
|
|
|
|
|
$i = 0;
|
|
|
|
|
$indexRoot = isset($_SESSION["SSperfilAcao"]) && ($_SESSION["SSperfilAcao"] == "rem") ? "" : "index.php?idProg=121&funId=0&acao=upd";
|
|
|
|
|
$makeMenu = !$isTree ? " var MENU_ITEMS = [\n" : " var MENU_ITEMS = [['$nomeRoot', '$indexRoot',\n";
|
|
|
|
|
foreach ($menu as $itemMenu) {
|
|
|
|
|
$makeMenu .= ExtratItens($itemMenu, $i);
|
|
|
|
|
++$i;
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= !$isTree ? "];\n" : "]];\n";
|
|
|
|
|
return $makeMenu;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ExtratItens($itensMenu, $numMod) {
|
|
|
|
|
$makeMenu = '';
|
|
|
|
|
$makeMenu .= $numMod ? "\n,[" : "\n[";
|
|
|
|
|
$i = 0;
|
|
|
|
|
foreach ($itensMenu as $key => $val) {
|
|
|
|
|
if (is_array($val)) {
|
|
|
|
|
$makeMenu .= ',' . ExtratItens($val, 0);
|
|
|
|
|
} else {
|
|
|
|
|
$novaJan = (stripos($val, 'NovaJanela') !== false);
|
|
|
|
|
$makeMenu .= ($i ? ',' : '') . IsNull($novaJan ? "'" . $val . "'" : $val, 'null', $novaJan ? 0 : 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$i++;
|
|
|
|
|
}
|
|
|
|
|
$makeMenu .= "]";
|
|
|
|
|
return $makeMenu;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function QueryMenuHead($idUser, $public = 0) {
|
|
|
|
|
if ($idUser < 0) {
|
|
|
|
|
$idGrupo = abs($idUser);
|
|
|
|
|
$permUser = GetGrupoUserPermissoes($idGrupo);
|
|
|
|
|
return sprintf("select distinct b.fun_id, b.fun_nome, b.fun_menu, b.fun_menu_text, b.fun_menu_url, b.fun_menu_img, b.fun_id_pai, b.fun_public, b.ord
|
|
|
|
|
from pbx_funcoes b
|
|
|
|
|
where coalesce(b.fun_id_pai, 0) = 0
|
|
|
|
|
and b.fun_id in(select gf.fun_id from pbx_grupo_funcoes gf where gf.gp_id = %s)
|
|
|
|
|
Union
|
|
|
|
|
select b.fun_id, b.fun_nome, b.fun_menu, b.fun_menu_text, b.fun_menu_url, b.fun_menu_img, b.fun_id_pai, b.fun_public, b.ord
|
|
|
|
|
from pbx_funcoes b where coalesce(b.fun_id_pai, 0) = 0 and (b.fun_public = 1 or (exists(select '' from pbx_funcoes where fun_id_pai = b.fun_id and fun_public = 1)) )
|
|
|
|
|
%s
|
|
|
|
|
order by ord ", QuotedStr($idGrupo), $permUser);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (IsAdmin() && !$idUser) {
|
|
|
|
|
return 'select distinct fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, coalesce(fun_id_pai, 0) as fun_id_pai, fun_status, fun_public, ord from pbx_funcoes where coalesce(fun_id_pai, 0) = 0 and fun_status = 1 order by ord';
|
|
|
|
|
}
|
|
|
|
|
return "select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai, d.fun_public, d.ord
|
|
|
|
|
from pbx_usuarios a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_funcoes d
|
|
|
|
|
where b.user_id = a.id
|
|
|
|
|
and c.gp_id = b.gp_id
|
|
|
|
|
and d.fun_id = c.fun_id
|
|
|
|
|
and coalesce(d.fun_id_pai, 0) = 0
|
|
|
|
|
and d.fun_status = 1
|
|
|
|
|
and a.id = coalesce('$idUser', a.id)
|
|
|
|
|
union
|
|
|
|
|
select distinct fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, fun_id_pai, fun_public, ord
|
|
|
|
|
from pbx_funcoes b
|
|
|
|
|
where (b.fun_public = 1 or (exists(select '' from pbx_funcoes where fun_id_pai = b.fun_id and fun_public = 1)) )
|
|
|
|
|
and coalesce(fun_id_pai, 0) = 0
|
|
|
|
|
and b.fun_status = 1
|
|
|
|
|
order by ord ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function QueryMenuItens($idUser, $idMenu = 0, $notMenu = 0, $param = null) {
|
|
|
|
|
if ($idUser < 0) {
|
|
|
|
|
$idGrupo = abs($idUser);
|
|
|
|
|
$permUser = GetGrupoUserPermissoes($idGrupo, $idMenu, 1);
|
|
|
|
|
return sprintf("select b.fun_id, b.fun_nome, b.fun_menu, b.fun_menu_text, b.fun_menu_url, b.fun_menu_img, b.fun_id_pai
|
|
|
|
|
from pbx_funcoes b
|
|
|
|
|
where b.fun_id_pai = %s
|
|
|
|
|
and ( b.fun_public = 1 or b.fun_id in(select g.fun_id from pbx_grupo_funcoes g where g.gp_id = %s))
|
|
|
|
|
%s
|
|
|
|
|
order by fun_menu_text
|
|
|
|
|
", QuotedStr($idMenu), QuotedStr($idGrupo), $permUser);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$ord = ($idMenu ? "fun_menu_text" : "fun_id");
|
|
|
|
|
$ord = "fun_menu_text";
|
|
|
|
|
$notMenu = (!$notMenu ? 'and d.fun_menu <> 0' : '');
|
|
|
|
|
$idMenu = ($idMenu ? "and d.fun_id_pai = '$idMenu' " : "");
|
|
|
|
|
|
|
|
|
|
if (IsAdmin() && !$idUser) {
|
|
|
|
|
return sprintf('select fun_id, fun_nome, fun_menu, fun_menu_text, fun_menu_url, fun_menu_img, coalesce(fun_id_pai, 0) as fun_id_pai, fun_status, fun_public from pbx_funcoes d where fun_status = 1 %s %s order by %s', $idMenu, $notMenu, $ord);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = sprintf("select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai, d.fun_public
|
|
|
|
|
from pbx_usuarios a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_funcoes d
|
|
|
|
|
where b.user_id = a.id
|
|
|
|
|
and c.gp_id = b.gp_id
|
|
|
|
|
and d.fun_id = c.fun_id
|
|
|
|
|
and a.id = coalesce(%s, a.id)
|
|
|
|
|
and d.fun_status = 1
|
|
|
|
|
%s
|
|
|
|
|
%s
|
|
|
|
|
union
|
|
|
|
|
select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai, d.fun_public
|
|
|
|
|
from pbx_funcoes d
|
|
|
|
|
where d.fun_status = 1
|
|
|
|
|
%s
|
|
|
|
|
%s
|
|
|
|
|
and d.fun_public = 1 ", $idUser, $notMenu, $idMenu, $notMenu, $idMenu);
|
|
|
|
|
|
|
|
|
|
if ($param) {
|
|
|
|
|
$query .= "union
|
|
|
|
|
(select ('999' || floor(random() * 10 + 1)::varchar || d.fun_id::varchar)::int as fun_id, d.fun_nome, 0 as fun_menu, 'GRUPO - ' || gp_nome as fun_menu_text, fun_menu_url, fun_menu_img, d.fun_id as fun_id_pai, fun_public
|
|
|
|
|
from pbx_grupo_usuario a
|
|
|
|
|
inner join pbx_grupo_funcoes b on b.gp_id = a.gp_id
|
|
|
|
|
inner join pbx_grupo c on c.gp_id = a.gp_id
|
|
|
|
|
inner join pbx_funcoes d on d.fun_id = b.fun_id
|
|
|
|
|
where a.user_id = $idUser
|
|
|
|
|
and d.fun_status = 1
|
|
|
|
|
and id_prog not in (-1, 58)
|
|
|
|
|
$notMenu
|
|
|
|
|
$idMenu) ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query .= "order by fun_id";
|
|
|
|
|
return $query;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetLinkMenu($linkMenu, $funId = 0, $url = '', $acao = 'upd') {
|
|
|
|
|
switch ($linkMenu) {
|
|
|
|
|
case 0: return "#";
|
|
|
|
|
case 1: return $url;
|
|
|
|
|
default: return sprintf("index.php?idProg=%s&funId=%s&acao=%s", GetGerPerfil(), $funId, $acao);
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MontaMenu($idMenu, $userId, $linkMenu = 1, $notMenu = 0, $acao = "upd") {
|
|
|
|
|
global $dbcon;
|
|
|
|
|
/*
|
|
|
|
|
* Funcao retorna menu para aplicacao.
|
|
|
|
|
* -$idMenu -> Indica que a raiz da arvore de menu, a partir deste "n<EFBFBD>" retorna o restante da arvore.
|
|
|
|
|
* -$userId -> Id do usuario para qual sera retornado o menu.
|
|
|
|
|
* -$linkMenu -> A forma de retornar o link:
|
|
|
|
|
* 0 -> Nao retorna link(usado para mostrar a arvore de permissao do usuario);
|
|
|
|
|
* 1 -> Menu da aplicacao(acesso as funcoes com base nas permissoes do usuario);
|
|
|
|
|
* 2 -> Arvore de permissoes(Monta as arvores Grupo/Usuarios);
|
|
|
|
|
* -$notMenu -> O perfil verifica acesso as funcoes apenas pelo item principal por exemplo se
|
|
|
|
|
* o usuario tem acesso a tela de usuario, este tera todas as permissoes, de maneira que so po-
|
|
|
|
|
* demos restringir um item de menu. Para contornar este problema incluimos usamos o parametro
|
|
|
|
|
* fun_menu da tabela pbx_funcoes com valor 0 que informa que e uma permissao mas que nao deve
|
|
|
|
|
* ser listada com um item de menu, entao, a mesma consta na arvore de permissoes mas nao no
|
|
|
|
|
* menu.
|
|
|
|
|
* -$acao -> Usado como parametro para chamar o script perfilfuncoesGrupo.php que adiciona ou
|
|
|
|
|
* remove funcionalidades para o usuario. upd -> atualiza a tela rem -> remove a funcao passada
|
|
|
|
|
* add -> adiciona a funcao ao usuario.
|
|
|
|
|
*/
|
|
|
|
|
global $dbcon;
|
|
|
|
|
$addNull = ($linkMenu == 1) ? ",'null'" : "";
|
|
|
|
|
if (!$idMenu) {
|
|
|
|
|
$urlPerfil = ($acao == "rem") ? "" : sprintf("index.php?idProg=%s&funId=0&acao=upd", GetGerPerfil());
|
|
|
|
|
$menuHead = ($linkMenu < 2) ? " var MENU_ITEMS = [\n" : sprintf(" var MENU_ITEMS = [['%s', '%s',\n", ($acao == 'add' ? GetLogin() : __GetLoginFromId($userId)), $urlPerfil);
|
|
|
|
|
$menu = '';
|
|
|
|
|
$query = QueryMenuHead($userId);
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$menu .= !$menu ? "[" : ",\n[";
|
|
|
|
|
$menu .= sprintf("'%s','%s'%s", $dados['fun_menu_text'], GetLinkMenu($linkMenu, $dados['fun_id'], $dados['fun_menu_url'], $acao), $addNull);
|
|
|
|
|
$menu .= MontaMenu($dados['fun_id'], $userId, $linkMenu, $notMenu, $acao);
|
|
|
|
|
$menu .= "\n]";
|
|
|
|
|
}
|
|
|
|
|
$menu = $menuHead . $menu . ( ($linkMenu < 2) ? "];\n" : "]];\n");
|
|
|
|
|
return $menu;
|
|
|
|
|
} else {
|
|
|
|
|
$query = QueryMenuItens($userId, $idMenu, $notMenu);
|
|
|
|
|
$result = pg_query($dbcon, $query);
|
|
|
|
|
$menu = '';
|
|
|
|
|
while ($dados = pg_fetch_array($result)) {
|
|
|
|
|
$menu .= ",\n[";
|
|
|
|
|
$menu .= sprintf("'%s','%s'%s", $dados['fun_menu_text'], GetLinkMenu($linkMenu, $dados['fun_id'], $dados['fun_menu_url'], $acao), $addNull);
|
|
|
|
|
$menu .= MontaMenu($dados['fun_id'], $userId, $linkMenu, $notMenu, $acao);
|
|
|
|
|
$menu .= "]";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $menu;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetGerPerfil() {
|
|
|
|
|
/*
|
|
|
|
|
* Esta funcao retorna o id do script perfilfuncoesGrupo.php que eh
|
|
|
|
|
* responsavel por adicionar e remover permissoes aos usuarios.
|
|
|
|
|
*/
|
|
|
|
|
return "121";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetGrupoUserPermissoes($idGrupo, $idMenu = 0, $itens = 0) {
|
|
|
|
|
$query = "select user_id from pbx_grupo a where gp_id = '$idGrupo' ";
|
|
|
|
|
$result = @pg_query($query);
|
|
|
|
|
$row = pg_fetch_row($result);
|
|
|
|
|
$userId = $row[0];
|
|
|
|
|
|
|
|
|
|
if (!$userId) {
|
|
|
|
|
return '';
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$itens) {
|
|
|
|
|
return sprintf(" Union
|
|
|
|
|
select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai, d.fun_public, d.ord
|
|
|
|
|
from pbx_usuarios a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_funcoes d
|
|
|
|
|
where b.user_id = a.id
|
|
|
|
|
and c.gp_id = b.gp_id
|
|
|
|
|
and d.fun_id = c.fun_id
|
|
|
|
|
and coalesce(d.fun_id_pai, 0) = 0
|
|
|
|
|
and d.fun_status = 1
|
|
|
|
|
and a.id = coalesce(%s, a.id) ", QuotedStr($userId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sprintf(" Union
|
|
|
|
|
select distinct d.fun_id, d.fun_nome, d.fun_menu, d.fun_menu_text, d.fun_menu_url, d.fun_menu_img, d.fun_id_pai
|
|
|
|
|
from pbx_usuarios a, pbx_grupo_usuario b, pbx_grupo_funcoes c, pbx_funcoes d
|
|
|
|
|
where b.user_id = a.id
|
|
|
|
|
and c.gp_id = b.gp_id
|
|
|
|
|
and d.fun_id = c.fun_id
|
|
|
|
|
and d.fun_id_pai = %s
|
|
|
|
|
and a.id = coalesce(%s, a.id)
|
|
|
|
|
and d.fun_status = 1 ", QuotedStr($idMenu), QuotedStr($userId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function printPre($data, $exit = false) {
|
|
|
|
|
echo "<pre>" . print_r($data, true) . "</pre>";
|
|
|
|
|
if ($exit) {
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function truncate($string, $length = 80) {
|
|
|
|
|
if (!isset($string) || empty($string)) {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (strlen($string) >= $length) {
|
|
|
|
|
return $string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return substr($string, 0, $length) . "...";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function IsLogado() {
|
|
|
|
|
return (isset($_SESSION['SSidUser']) && !empty($_SESSION['SSidUser']));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ArrayDotNotation($arr) {
|
|
|
|
|
$iterator = new RecursiveIteratorIterator(
|
|
|
|
|
new RecursiveArrayIterator($arr), RecursiveIteratorIterator::SELF_FIRST
|
|
|
|
|
);
|
|
|
|
|
$path = [];
|
|
|
|
|
$flatArray = [];
|
|
|
|
|
|
|
|
|
|
foreach ($iterator as $key => $value) {
|
|
|
|
|
$path[$iterator->getDepth()] = $key;
|
|
|
|
|
|
|
|
|
|
if (!is_array($value)) {
|
|
|
|
|
$flatArray[
|
|
|
|
|
implode('.', array_slice($path, 0, $iterator->getDepth() + 1))
|
|
|
|
|
] = $value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $flatArray;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PodePublicarMural($idProg, $info) {
|
|
|
|
|
global $dbcon;
|
|
|
|
|
$isPopup = (getRequest('window', INPUT_GET));
|
|
|
|
|
$naoPublicarPelasPaginas = [14, 6];
|
|
|
|
|
$podePublicar = (IsLogado() && (IsUserAdmin() || IsSuper()) && VerificaPerfilAcesso($dbcon, 6, $info));
|
|
|
|
|
if (in_array($idProg, $naoPublicarPelasPaginas) || ($isPopup !== null)) {
|
|
|
|
|
$podePublicar = false;
|
|
|
|
|
}
|
|
|
|
|
return $podePublicar;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRetornoAbandonadas($hora, $nro, $dac) {
|
|
|
|
|
$query = "select
|
|
|
|
|
ret_agente,
|
|
|
|
|
ret_calldate as data
|
|
|
|
|
from tmp_retornado
|
|
|
|
|
where upper(ret_fila) = upper('$dac')
|
|
|
|
|
and ret_calldate >= '$hora'
|
|
|
|
|
and (ret_src = '$nro' or ret_dst = '$nro')
|
|
|
|
|
order by 2 limit 1";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
while ($row = @pg_fetch_array($result)) {
|
|
|
|
|
$dados = $row[0] . ";" . $row[1];
|
|
|
|
|
}
|
|
|
|
|
return $dados;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetTotalDependencias($recurso, $key) {
|
|
|
|
|
if ($recurso == 'voice') {
|
|
|
|
|
$key = sprintf("%s/%%", $key);
|
|
|
|
|
}
|
|
|
|
|
$query = "select count(*) from (
|
|
|
|
|
select '' from pbx_anuncios where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_callback where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_callback where opcao1 = '$recurso' and acao1 = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_contextos where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_contextos a, pbx_contextos_opcoes b where b.id_contexto = a.id and b.opcao = '$recurso' and b.acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_disa where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_grupos where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_horarios where opcao_nao = '$recurso' and acao_nao = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_horarios a, pbx_horarios_itens b where b.id_horario = a.id and b.opcao = '$recurso' and b.acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_integracao_configuracao where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_listanegra where id_pai is null and opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_queues_grupos where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_rotas_entrada where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_ura where opcao = '$recurso' and acao like '$key'
|
|
|
|
|
union all
|
|
|
|
|
(select '' from pbx_ura a, pbx_ura_destino b where b.id_ura = a.id and b.tipo = '$recurso' and b.comando like '$key' limit 1)
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_campanha a, pbx_dacs b where a.id_dac = b.id and b.numero = '$key' and cmp_status in (1,2)
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_pesquisa_liberacao a, pbx_pesquisa_liberacao_dacs b, pbx_dacs c, pbx_pesquisa d where a.pl_id = b.pl_id and b.id_dac = c.id and d.pp_id = a.pp_id and c.numero = '$key'";
|
|
|
|
|
|
|
|
|
|
if ($recurso == 'ramal') {
|
|
|
|
|
$query .= " union all
|
|
|
|
|
select '' from pbx_disa where ramal_saida = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_monitoramento_ramais where ramal = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_queues_membros a, pbx_dacs b, pbx_ramais c where a.id_fila = b.id and c.dispositivo = a.dispositivo and c.nome = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_voicemail_usuarios where numero_ramal = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_pbx_centro_custo_ramais a, pbx_centro_custo b where b.cc_id = a.cc_id and a.ramal = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_grupos_atendimento a, pbx_grupos_atendimento_ramais b where id_grupo = a.id and b.ramal = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_digivoice_ramais_fxs a, pbx_digivoice_grupos b where b.group = a.id_grupo and ramal = '$key' ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ($recurso == 'contextos') {
|
|
|
|
|
$query .= " union all
|
|
|
|
|
select '' from pbx_queues_grupos where context = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_ramais where contexto = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_troncos where context = '$key' ";
|
|
|
|
|
}
|
|
|
|
|
if ($recurso == 'troncos') {
|
|
|
|
|
$query .= "union all
|
|
|
|
|
select '' from pbx_rotas_entrada a, pbx_rotas_entrada_troncos b where b.id_rota = a.id and id_tronco = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_rotas_saida a, pbx_rotas_saida_canais b, pbx_troncos c where b.id_rota = a.id and c.nome = b.canal and c.id = '$key'
|
|
|
|
|
union all
|
|
|
|
|
select '' from pbx_contextos_canais a, pbx_troncos b, pbx_contextos c where a.canal = b.nome and a.id_contexto = c.id and b.id = '$key'";
|
|
|
|
|
}
|
|
|
|
|
$query .= " ) as redir; ";
|
|
|
|
|
//echo $query; exit;
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
$dados = pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @param string $opcao Identificador de um recurso, ex: Anuncio = anuncios
|
|
|
|
|
* @param string $acao O valor atribuido referente a "opcao" selecionada ou seja a "acao", por exemplo se um recurso tipo an<EFBFBD>ncio for selecionado a acao ser<EFBFBD> seu id.
|
|
|
|
|
* @param string $recursoTipo Tipo do recurso para o qual vamos pesquisar as depend?ncias, ex.: URA, Anuncio, Ramal
|
|
|
|
|
* @param string $nomeRecurso A descricao ou nome do recurso para o qual vamos pesquisar as depend?ncias, ex.: Boa Noite(Um an<EFBFBD>ncio poderia estar cadastro com esse nome)
|
|
|
|
|
* @param int $totaldep O n<EFBFBD>mero de depend<EFBFBD>ncias identificadas para o recurso corrente.
|
|
|
|
|
* @return String
|
|
|
|
|
*/
|
|
|
|
|
function GetLinkDependenciaRecurso($opcao, $acao, $recursoTipo, $nomeRecurso, $totaldep) {
|
|
|
|
|
return !$totaldep ? "<img src = \"imgSite/troncoOff16.png\" title=\"Este recurso n<EFBFBD>o possui registros dependentes!\">" : sprintf("<a href=\"#\" onclick=\"NovaJanela('index.php?idProg=12000&opcao=%s&acao=%s&recursoTipo=%s&nomeRecurso=%s', 'ListaDependenicas', '500', '400', 'resizable=YES,scrollbars=YES');\"><img src=\"imgSite/troncoOn16.png\" title=\"Este recurso possui %s registros dependentes,Clique para consultar!\"></a>", $opcao, $acao, $recursoTipo, $nomeRecurso, $totaldep);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetManagerParams() {
|
|
|
|
|
|
|
|
|
|
$query = "select prm_sk_host, prm_sk_port, prm_sk_login, prm_sk_password from pbx_parametros";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
if ($result) {
|
|
|
|
|
$dados = pg_fetch_array($result);
|
|
|
|
|
return array("servidor" => $dados['prm_sk_host'], "porta" => $dados['prm_sk_port'], "usuario" => $dados['prm_sk_login'], "senha" => $dados['prm_sk_password']);
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function SetIntegracaoContato($retorno_cliente) {
|
|
|
|
|
$matricula = GetMatricula();
|
|
|
|
|
$ramal = GetRamalMonitorar(RAMAL_MONITOR_AGENTE);
|
|
|
|
|
|
|
|
|
|
$query = sprintf("update pbx_supervisor_agentes set cont_identificador = %s where matricula = %s\n", QuotedStr($retorno_cliente), QuotedStr($matricula));
|
|
|
|
|
pg_query($query);
|
|
|
|
|
|
|
|
|
|
// $query = "INSERT INTO pbx_integracao_saida (matricula,ramal,itgs_dados) VALUES('$matricula','$ramal','$retorno_cliente'); ";
|
|
|
|
|
// pg_query($query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMetodoIntegra($idMetodo) {
|
|
|
|
|
|
|
|
|
|
$query = "select a.itgm_tipo, a.itgm_comando, itgm_retorno, a.opcao as opcao_metodo, a.stored_params,
|
|
|
|
|
c.itgp_prefix, b.itgc_host, b.itgc_port, b.itgc_database, b.itgc_user, b.itgc_password,
|
|
|
|
|
b.itgc_timeout, b.opcao, b.acao, coalesce(a.evento, 0) as evento
|
|
|
|
|
from pbx_integracao_metodo a, pbx_integracao_configuracao b, pbx_integracao_protocolo c
|
|
|
|
|
where b.itgc_id = a.itgc_id
|
|
|
|
|
and c.itgp_id = b.itgp_id
|
|
|
|
|
and a.itgm_id = '$idMetodo'";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
|
|
|
|
|
if ($result) {
|
|
|
|
|
$row = pg_fetch_assoc($result);
|
|
|
|
|
return $row;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetCodecs($useVideo = false) {
|
|
|
|
|
$video = array('h261', 'h263', 'h263p', 'h264', 'vp8', 'vp9');
|
|
|
|
|
$som = array('adpcm', 'alaw', 'ulaw', 'g719', 'g722', 'g723', 'g726', 'g726aal2', 'g729', 'gsm', 'ilbc', 'lpc10', 'silk', 'speex', 'slin');
|
|
|
|
|
|
|
|
|
|
return !$useVideo ? $som : array_merge($som, $video);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetStatusModulo($status, $param = "A") {
|
|
|
|
|
$resp = "";
|
|
|
|
|
if ($status == $param) {
|
|
|
|
|
$resp = "<img src=\"imgSite/ledOn.gif\" width=\"16\" border=\"0\" title=\"Ativo\">";
|
|
|
|
|
} else {
|
|
|
|
|
$resp = "<img src=\"imgSite/ledOff.gif\" width=\"16\" border=\"0\" title=\"Inativo\">";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $resp;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetSelectValProto($param = null) {
|
|
|
|
|
$query = "SELECT prm_validacao_protocolo FROM pbx_parametros";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$validacao = pg_fetch_assoc($result);
|
|
|
|
|
|
|
|
|
|
if ($param == 'result') {
|
|
|
|
|
return $validacao['prm_validacao_protocolo'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach ($_SESSION['SSValidaFuncoesProtocolo'] as $valida) {
|
|
|
|
|
$sel = $valida == $validacao['prm_validacao_protocolo'] ? "selected" : '';
|
|
|
|
|
$opt .= "<option value='$valida' $sel>$valida</option>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $opt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMaxDaysRel() {
|
|
|
|
|
$query = "SELECT prm_max_dias_relatorio FROM pbx_parametros";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$maxdays = pg_fetch_assoc($result);
|
|
|
|
|
|
|
|
|
|
return $maxdays['prm_max_dias_relatorio'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetRestringeAudio() {
|
|
|
|
|
$query = "SELECT prm_restringe_audio FROM pbx_parametros";
|
|
|
|
|
$result = pg_query($query);
|
|
|
|
|
$resp = pg_fetch_assoc($result);
|
|
|
|
|
|
|
|
|
|
return $resp['prm_restringe_audio'];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MaxDaysRel($dataIni, $dataFim) {
|
|
|
|
|
if (GetMaxDaysRel() != 0) {
|
|
|
|
|
if (strtotime(FormatDateHour($dataFim)) > strtotime(FormatDateHour($dataIni) . "+" . GetMaxDaysRel() . "days")) {
|
|
|
|
|
return "O per<EFBFBD>do n<EFBFBD>o pode ultrapassar " . GetMaxDaysRel() . " dias!";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function DownloadImg($file) {
|
|
|
|
|
$fsize = filesize($file);
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: image/jpeg');
|
|
|
|
|
if ($fsize) {
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
}
|
|
|
|
|
header('Content-Disposition: attachment; filename= imagens');
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($file);
|
|
|
|
|
exit;
|
|
|
|
|
|
|
|
|
|
$fsize = filesize($file);
|
|
|
|
|
header('Content-Description: File Transfer');
|
|
|
|
|
header('Content-Transfer-Encoding: binary');
|
|
|
|
|
header('Content-Type: image/jpg');
|
|
|
|
|
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
|
|
|
|
|
header('Expires: 0');
|
|
|
|
|
header('Cache-Control: must-revalidate');
|
|
|
|
|
header('Pragma: public');
|
|
|
|
|
if ($fsize) {
|
|
|
|
|
header('Content-Length: ' . $fsize);
|
|
|
|
|
}
|
|
|
|
|
header('Connection: close');
|
|
|
|
|
readfile($file);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function MostraSenhaRamal($idProg, $ramal) {
|
|
|
|
|
|
|
|
|
|
$query = "select * from (select dispositivo, secret, nome from pbx_sip_ramais
|
|
|
|
|
union all
|
|
|
|
|
select dispositivo, secret, nome from pbx_iax_pbx) a
|
|
|
|
|
where nome = '$ramal'";
|
|
|
|
|
|
|
|
|
|
$log = "insert into pbx_audita_full(login, id_prog, full_ip, full_tipo, full_log, full_prog_nome)
|
|
|
|
|
values(%s, %s, %s, 'GET', %s, (select substring(arquivo, laststr('/',arquivo)+1) from pbx_funcoes_internas where id_prog = '$idProg'));";
|
|
|
|
|
try {
|
|
|
|
|
$ip = GetIpUsuario();
|
|
|
|
|
$login = GetLogin();
|
|
|
|
|
|
|
|
|
|
if (!$result = pg_query($query)) {
|
|
|
|
|
throw new Exception("N<EFBFBD>o foi poss<EFBFBD>vel consultar o ramal informado!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!pg_num_rows($result)) {
|
|
|
|
|
throw new Exception("O ramal informado n<EFBFBD>o foi encontrado!");
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* Pega a senha descriptografada.
|
|
|
|
|
*/
|
|
|
|
|
$data = pg_fetch_array($result);
|
|
|
|
|
$pass = $data['secret'];
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Registra o acesso a senha do ramal.
|
|
|
|
|
*/
|
|
|
|
|
$reg = "A senha do ramal: $ramal foi visualizada pelo usuario: $login Data: " . date("Y-m-d H:i:s");
|
|
|
|
|
$log = sprintf($log, QuotedStr($login), QuotedStr($idProg), QuotedStr($ip), QuotedStr($reg));
|
|
|
|
|
if (!pg_query($log)) {
|
|
|
|
|
throw new Exception("Opera??o cancelada devido a um erro durante o registro!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return sprintf("OK;%s", $pass);
|
|
|
|
|
} catch (Exception $ex) {
|
|
|
|
|
return "ERRO;" . $ex->getMessage();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ComplementoCampanhaAtivo() {
|
|
|
|
|
return $_SESSION['prm_ativa_complemento_campanha'];
|
|
|
|
|
}
|