|
|
|
|
#!/usr/bin/php -q
|
|
|
|
|
<?php
|
|
|
|
|
/*
|
|
|
|
|
* Workflow
|
|
|
|
|
* Solicitante: Amarildo Carlos da Silva
|
|
|
|
|
* Autor: Amarildo Pereira
|
|
|
|
|
* Data: 12/02/2013
|
|
|
|
|
* Objetivo: Enviar resumo di<EFBFBD>rio da opera<EFBFBD><EFBFBD>o dos callcenters existentes para uma lista de emails
|
|
|
|
|
* Obs: Para incluir a logo do paraceiro basta substituir o arquivo logoParciro.png por um arquivos
|
|
|
|
|
* do mesmo nome contendo a logo citada. Lembrando que <EFBFBD> necess<EFBFBD>rio ajustar o tamanho, que preferencialmente
|
|
|
|
|
* deve ter as dimen<EFBFBD><EFBFBD>es proporcionais ao da logo da simples que <EFBFBD> 192 x 48 px.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
error_reporting(E_ALL);
|
|
|
|
|
ini_set('display_errors', 0);
|
|
|
|
|
ini_set("memory_limit", "512M");
|
|
|
|
|
/*
|
|
|
|
|
* Constantes
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Indica que o servi<EFBFBD>o de envio est<EFBFBD> temporariamente inativo
|
|
|
|
|
*/
|
|
|
|
|
define('SERVICO_INDISPONIVEL', 99);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Indica que o email esta destivado para receber o workflow
|
|
|
|
|
*/
|
|
|
|
|
define('EMAIL_INATIVO', 98);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Indica que o email n<EFBFBD>o pode ser enviado
|
|
|
|
|
*/
|
|
|
|
|
define('ERRO_ENVIO_EMAIL', 97);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Indica que o envio <EFBFBD> di<EFBFBD>rio
|
|
|
|
|
*/
|
|
|
|
|
define('ENVIO_DIARIO', 1);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Indica que o envio <EFBFBD> mensal
|
|
|
|
|
*/
|
|
|
|
|
define('ENVIO_MENSAl', 2);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inclusao de modulos externos
|
|
|
|
|
*/
|
|
|
|
|
require 'util/util.php';
|
|
|
|
|
require("phpmailer/class.phpmailer.php");
|
|
|
|
|
require("jpgraph/jpgraph.php");
|
|
|
|
|
require("jpgraph/jpgraph_bar.php");
|
|
|
|
|
require("workflow.php");
|
|
|
|
|
require("funcoes/shared.php");
|
|
|
|
|
//require("config.php");
|
|
|
|
|
|
|
|
|
|
$versao = '1.0';
|
|
|
|
|
/*
|
|
|
|
|
* Arquivo de log
|
|
|
|
|
*/
|
|
|
|
|
$pathLog = "/var/log/asterisk/workflow.log";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Imagens anexadas ao html da mensagem
|
|
|
|
|
*/
|
|
|
|
|
$embedImg = array();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Relatorios gravados em disco
|
|
|
|
|
*/
|
|
|
|
|
$relHtml = array();
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Se n<EFBFBD>o for definido uma conex<EFBFBD>o para o banco de dados aqui, o sistema ir<EFBFBD>
|
|
|
|
|
* usar a configura<EFBFBD><EFBFBD>o padr<EFBFBD>o baseada nas informa<EFBFBD><EFBFBD>es contidas no arquivo
|
|
|
|
|
* /var/lib/asterisk/scripts/callcenter/bd e retornadas pela fun<EFBFBD><EFBFBD>o GetDefStrDb()
|
|
|
|
|
* contida no arquivo funcoes/shared.php localizado no diretorio include.
|
|
|
|
|
*/
|
|
|
|
|
$conStr = false;
|
|
|
|
|
//$conStr = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", '10.254.254.208', '5432', 'pbx', 'contacte', 'ctepgSQL');
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Se a configura<EFBFBD><EFBFBD>o n<EFBFBD>o foi definida manualmente retorna a configura<EFBFBD><EFBFBD>o padr<EFBFBD>o.
|
|
|
|
|
*/
|
|
|
|
|
if ($conStr === false) {
|
|
|
|
|
$conStr = GetDefStrDb();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inicia a conex<EFBFBD>o com banco de dados.
|
|
|
|
|
*/
|
|
|
|
|
$conn = pg_connect($conStr);
|
|
|
|
|
|
|
|
|
|
if (!$conn) {
|
|
|
|
|
$msg = "N<EFBFBD>o foi possivel conectar ao banco de dados!\n$conStr";
|
|
|
|
|
PreparaLog("ConexaoBancoDados", $msg, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Inicializa<EFBFBD><EFBFBD>o de vari<EFBFBD>veis globais.
|
|
|
|
|
*/
|
|
|
|
|
$dataAtual = substr(FormataDBDataHora(GetData($conn)), 0, 10);
|
|
|
|
|
$debug = 0;
|
|
|
|
|
/*
|
|
|
|
|
* Data para envio, sempre o dia anterior
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
$dataEnvio = GetData($conn, -1);
|
|
|
|
|
$mesEnvio = GetMesEnvio($conn);
|
|
|
|
|
//if($debug)$dataEnvio = '2014-01-25';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Carrega parametros para o array:
|
|
|
|
|
* $wkfParam[ wkf_status_servico, wkf_hora_envio, wkf_minuto_envio, wkf_smtp,
|
|
|
|
|
* wkf_smtp_user, wkf_smtp_senha, wkf_smtp_port, wkf_smtp_requer_aut]
|
|
|
|
|
*/
|
|
|
|
|
$wkfParam = GetParamWkf($conn);
|
|
|
|
|
$statusServico = $wkfParam['wkf_status_servico'];
|
|
|
|
|
$horaEnvio = sprintf('%s:%s', (int) $wkfParam['wkf_hora_envio'], (int) $wkfParam['wkf_minuto_envio']);
|
|
|
|
|
|
|
|
|
|
if ($statusServico) {
|
|
|
|
|
$tpEnvio = 0;
|
|
|
|
|
/*
|
|
|
|
|
* Esta fun<EFBFBD><EFBFBD>o retorna 1 para envio di<EFBFBD>rio e 2 para envio mensal. A verifica<EFBFBD><EFBFBD>o <EFBFBD> feita com base
|
|
|
|
|
* na tabela pbx_workflow_reg_envio_mensal ex.: O campo wkf_data_envio = '112013' significa que
|
|
|
|
|
* o envio referente ao mes 11/2013 j<EFBFBD> foi efetuado ent<EFBFBD>o retorna 1. O Sistema se baseia na data
|
|
|
|
|
* corrente e sempre envia informa<EFBFBD><EFBFBD>es do dia anterior assim com envia um resumo da opera<EFBFBD><EFBFBD>o do
|
|
|
|
|
* mes anterior sempre que ha uma mudan<EFBFBD>a de m<EFBFBD>s, ou seja se o script rodar no dia 01/12/2013 ir<EFBFBD>
|
|
|
|
|
* verificar que o registro referente a '122013' ainda n<EFBFBD>o esta presente em wkf_data_envio e a fun-
|
|
|
|
|
* <EFBFBD><EFBFBD>o retornara 2 indicando que devemos enviar o resumo mensal, entretando o sistema n<EFBFBD>o esta pre-
|
|
|
|
|
* so a fazer esta verifica<EFBFBD><EFBFBD>o no dia 01 sendo que se o script por algum motivo n<EFBFBD>o rodar neste dia
|
|
|
|
|
* o envio seguira normalmente no dia subsequente.
|
|
|
|
|
*/
|
|
|
|
|
$tipoEnvio = GetTipoEnvio($conn, $mesEnvio);
|
|
|
|
|
|
|
|
|
|
while (++$tpEnvio <= $tipoEnvio) {
|
|
|
|
|
/*
|
|
|
|
|
* Configura a data de envio baseada no seu tipo
|
|
|
|
|
* ex.:
|
|
|
|
|
* ENVIO_DIARIO = '2013-01-16';
|
|
|
|
|
* ENVIO_MENSAl = '"112013
|
|
|
|
|
*/
|
|
|
|
|
$_dataEnvio_ = $tpEnvio == ENVIO_DIARIO ? $dataEnvio : $mesEnvio;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Verifica se esta na hora de enviar conforme definido na parametriza<EFBFBD><EFBFBD>o
|
|
|
|
|
*/
|
|
|
|
|
$horaAtual = sprintf('%s:%s', (int) date('H'), (int) date('i'));
|
|
|
|
|
if ($debug == 9)
|
|
|
|
|
$horaEnvio = $horaAtual;
|
|
|
|
|
/*
|
|
|
|
|
* O sistema tenta enviar apenas na hora cadastrada, se houver falha esta ser<EFBFBD> registrada no log
|
|
|
|
|
* mas as informa<EFBFBD><EFBFBD>es n<EFBFBD>o ser<EFBFBD>o enviadas
|
|
|
|
|
*/
|
|
|
|
|
//$_envia = (($tpEnvio == ENVIO_DIARIO) && ($horaEnvio == $horaAtual) && !VerificaEnvio($conn, $dataEnvio)) || (($tpEnvio == ENVIO_MENSAl) && ($horaEnvio == $horaAtual));
|
|
|
|
|
$_envia = ($horaEnvio == $horaAtual);
|
|
|
|
|
|
|
|
|
|
if ($_envia && !VerificaEnvio($conn, $dataEnvio, $tpEnvio)) {
|
|
|
|
|
/*
|
|
|
|
|
* Carrega lista de email com base no tipo de envio, pois alguns clientes est<EFBFBD>o configurados para
|
|
|
|
|
* receber apenas um tipo de informa<EFBFBD><EFBFBD>o enquanto outros recebem ambas (di<EFBFBD>ria e mensal).
|
|
|
|
|
*/
|
|
|
|
|
$listaEmails = CarregaEmails($conn, $tpEnvio);
|
|
|
|
|
foreach ($listaEmails as $email) {
|
|
|
|
|
/*
|
|
|
|
|
* Indica que o email esta habilitado para receber informa<EFBFBD><EFBFBD>es.
|
|
|
|
|
*/
|
|
|
|
|
if ($email['wkf_status']) {
|
|
|
|
|
if (!VerificaEnvioEmail($conn, $email['wkf_email'], $_dataEnvio_, $tpEnvio)) {
|
|
|
|
|
EnviaEmail($conn, $email, $wkfParam, $dataAtual, $_dataEnvio_, $tpEnvio);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$msg = sprintf("Email: %s Esta Desativado! Data Envio: %s", $email['wkf_email'], $_dataEnvio_);
|
|
|
|
|
PreparaLog("PreparaEnvio", $msg, true);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RegistraEnvio($conn, $_dataEnvio_, $tpEnvio);
|
|
|
|
|
ApagaArquivosWkf($relHtml, $embedImg);
|
|
|
|
|
} else if ($debug) {
|
|
|
|
|
PreparaLog("VerificaEnvio", "Verifica<EFBFBD><EFBFBD>o de Envio " . (($tpEnvio == ENVIO_DIARIO) ? "Di<EFBFBD>rio" : "Mensal"), false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
$msg = "O servi<EFBFBD>o de envio esta desativado! Data Envio: $dataEnvio";
|
|
|
|
|
PreparaLog("PreparaEnvio", $msg, true);
|
|
|
|
|
;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ApagaArquivosWkf(&$relHtml, &$embedImg) {
|
|
|
|
|
if (count($relHtml))
|
|
|
|
|
foreach ($relHtml as $arq)
|
|
|
|
|
@unlink($arq);
|
|
|
|
|
if (count($embedImg))
|
|
|
|
|
foreach ($embedImg as $arq)
|
|
|
|
|
@unlink($arq);
|
|
|
|
|
|
|
|
|
|
$embedImg = array();
|
|
|
|
|
$relHtml = array();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetDebug() {
|
|
|
|
|
return $GLOBALS["debug"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetData($db, $soma = 0) {
|
|
|
|
|
/*
|
|
|
|
|
* Fun<EFBFBD><EFBFBD>o utiliza os recursos do banco de dados para fazer
|
|
|
|
|
* adi<EFBFBD><EFBFBD>o de datas, ex.: $soma = 1 a data atual ser<EFBFBD> acrescida
|
|
|
|
|
* em 1 dia, $soma = -1 a data atual ser<EFBFBD> decrescida em 1 dia.
|
|
|
|
|
*/
|
|
|
|
|
$query = "select now()::date + ($soma)";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
$dados = @pg_fetch_row($result);
|
|
|
|
|
return $dados[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetMesEnvio($db) {
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD>ndice para envio de email mensal <EFBFBD> m<EFBFBD>s+ano -> 052013
|
|
|
|
|
*/
|
|
|
|
|
$data = explode("-", GetData($db));
|
|
|
|
|
$mes = $data[1] == 1 ? 12 : $data[1] - 1;
|
|
|
|
|
$ano = $data[1] == 1 ? ($data[0] - 1) : $data[0];
|
|
|
|
|
return sprintf("%s%s", str_pad($mes, 2, '0', STR_PAD_LEFT), $ano);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function PreparaLog($metodo, $msg, $er) {
|
|
|
|
|
global $pathLog, $versao;
|
|
|
|
|
$data = date('d/m/Y H:i:s');
|
|
|
|
|
$type = !$er ? "OK" : "ER";
|
|
|
|
|
$str = "";
|
|
|
|
|
|
|
|
|
|
$str = sprintf("Funcao: [%s] Data: [%s] Versao: %s Status: [%s]\n", $metodo, $data, $versao, $type);
|
|
|
|
|
$str .= sprintf("Msg: %s\n", $msg);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Captura informacoes sobre erros no sistema
|
|
|
|
|
*/
|
|
|
|
|
@$erro = (GetPhpVerision() >= 530) ? error_get_last() : array();
|
|
|
|
|
if (count($erro)) {
|
|
|
|
|
$typeE = $erro["type"];
|
|
|
|
|
$desprezaErros = array(8192, 16384, 8, 2048, 1024);
|
|
|
|
|
|
|
|
|
|
if (array_search($typeE, $desprezaErros) === false) {
|
|
|
|
|
$str .= "[ERRO_SYS]\n";
|
|
|
|
|
$str .= sprintf("File: [%s] Line: [%s] Type: [%s] \nMsg: [%s]\n", $erro["file"], $erro["line"], $erro["type"], $erro["message"]);
|
|
|
|
|
$str .= "[/ERRO_SYS]\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$str .= "Fim[$metodo]\n\n";
|
|
|
|
|
GravaLog($str, $pathLog);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetParamWkf($db) {
|
|
|
|
|
$query = "select wkf_status_servico, wkf_hora_envio, wkf_minuto_envio, wkf_smtp,
|
|
|
|
|
wkf_smtp_user, wkf_smtp_senha, wkf_smtp_port, wkf_smtp_requer_aut, wkf_logo_parceiro
|
|
|
|
|
from pbx_workflow_parametros
|
|
|
|
|
where wkf_id = 1";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
PreparaLog("GetParamWkf", $query, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
$dados = @pg_fetch_array($result);
|
|
|
|
|
return $dados;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaEnvio($conn, $dataEnvio, $tpEnvio) {
|
|
|
|
|
global $debug;
|
|
|
|
|
//if($debug == 9) return 0;
|
|
|
|
|
|
|
|
|
|
if ($tpEnvio == ENVIO_DIARIO) {
|
|
|
|
|
$query = "select count(*) from pbx_workflow_reg_envio where wkf_data_envio = '$dataEnvio'";
|
|
|
|
|
} else {
|
|
|
|
|
$query = "select count(*) from pbx_workflow_reg_envio_mensal where wkf_data_envio = '$dataEnvio'";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
if (!$result) {
|
|
|
|
|
PreparaLog("VerificaEnvio", $query, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function VerificaEnvioEmail($conn, $email, $dataEnvio, $tpEnvio) {
|
|
|
|
|
|
|
|
|
|
$query = "select count(*)
|
|
|
|
|
from %s
|
|
|
|
|
where wkf_data_envio = '$dataEnvio'
|
|
|
|
|
and wkf_email = '$email'
|
|
|
|
|
and wkf_status = '1'";
|
|
|
|
|
|
|
|
|
|
$query = sprintf($query, $tpEnvio == ENVIO_DIARIO ? "pbx_workflow_reg_envio_email" : "pbx_workflow_reg_envio_email_mensal");
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
PreparaLog("VerificaEnvioEmail", $query, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
return $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function CarregaEmails($conn, $tpEnvio) {
|
|
|
|
|
/*
|
|
|
|
|
* wkf_tipo_envio = 0 -> recebe workflow di<EFBFBD>rio e mensal
|
|
|
|
|
* wkf_tipo_envio = 1 -> recebe workflow di<EFBFBD>rio
|
|
|
|
|
* wkf_tipo_envio = 2 -> recebe workflow mensal
|
|
|
|
|
*/
|
|
|
|
|
global $debug;
|
|
|
|
|
$emails = array();
|
|
|
|
|
$tipo = $tpEnvio == ENVIO_DIARIO ? "0,1" : "0,2";
|
|
|
|
|
|
|
|
|
|
if ($debug == 9) {
|
|
|
|
|
$emails[] = array('wkf_email_id' => '15', 'wkf_email' => 'amarildo.pereira@simplesip.com.br', 'wkf_nome' => 'Amarildo Pereira', 'wkf_status' => '1', 'rest_dac' => '0');
|
|
|
|
|
return $emails;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$query = "select wkf_email_id, wkf_email, wkf_nome, wkf_status, (select count(*) from pbx_workflow_emails_dacs where wkf_email_id = a.wkf_email_id) as rest_dac
|
|
|
|
|
from pbx_workflow_emails a
|
|
|
|
|
where wkf_tipo_envio in($tipo)
|
|
|
|
|
order by wkf_email";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
PreparaLog("CarregaEmails", $query, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while ($dados = @pg_fetch_array($result)) {
|
|
|
|
|
$emails[] = $dados;
|
|
|
|
|
}
|
|
|
|
|
return $emails;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function dropTemporaryTable($db, $nomeTable) {
|
|
|
|
|
$query = "select isTmpTable('$nomeTable');";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if ($result)
|
|
|
|
|
$row = @pg_fetch_row($result);
|
|
|
|
|
|
|
|
|
|
if ($result && $row[0]) {
|
|
|
|
|
$query = "drop table $nomeTable;";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
}
|
|
|
|
|
if (!$result) {
|
|
|
|
|
PreparaLog("dropTemporaryTable", $query, true);
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function EnviaEmail($conn, $emailParam, $wkfParam, $dataAtual, $dataEnvio, $tpEnvio) {
|
|
|
|
|
global $debug;
|
|
|
|
|
$emailId = $emailParam['wkf_email_id'];
|
|
|
|
|
$email = $emailParam['wkf_email'];
|
|
|
|
|
$emailNome = $emailParam['wkf_nome'];
|
|
|
|
|
$restDac = $emailParam['rest_dac'];
|
|
|
|
|
$Img = &$GLOBALS["embedImg"];
|
|
|
|
|
|
|
|
|
|
$body = GetMsg($conn, $dataEnvio, $dataAtual, $restDac, $emailId, $tpEnvio);
|
|
|
|
|
$msg = "Data Envio: $dataEnvio, DdataAtual: $dataAtual, RestDac: $restDac, EmailId: $emailId, TpEnvio: $tpEnvio";
|
|
|
|
|
if ($debug == 9)
|
|
|
|
|
PreparaLog("EnviaEmail", $msg, false);
|
|
|
|
|
/*
|
|
|
|
|
* Carrega parametros para o array:
|
|
|
|
|
* $wkfParam[ wkf_smtp,
|
|
|
|
|
* wkf_smtp_user, wkf_smtp_senha, wkf_smtp_port, wkf_smtp_requer_aut]
|
|
|
|
|
*/
|
|
|
|
|
$mail = new PHPMailer();
|
|
|
|
|
$mail->IsSMTP();
|
|
|
|
|
$mail->Host = $wkfParam["wkf_smtp"];
|
|
|
|
|
$mail->Port = $wkfParam["wkf_smtp_port"];
|
|
|
|
|
$mail->SMTPAuth = $wkfParam["wkf_smtp_user"] != "";
|
|
|
|
|
|
|
|
|
|
if ($mail->SMTPAuth) {
|
|
|
|
|
/*
|
|
|
|
|
* Autentica<EFBFBD><EFBFBD>o smtp
|
|
|
|
|
*/
|
|
|
|
|
$mail->Username = $wkfParam["wkf_smtp_user"];
|
|
|
|
|
$mail->Password = $wkfParam["wkf_smtp_senha"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$mail->From = $wkfParam["wkf_smtp_user"];
|
|
|
|
|
$mail->FromName = $tpEnvio == ENVIO_DIARIO ? "Workflow Di<EFBFBD>rio" : "Workflow Mensal";
|
|
|
|
|
|
|
|
|
|
if (!empty($emailNome)) {
|
|
|
|
|
$mail->AddAddress($email, $emailNome);
|
|
|
|
|
} else {
|
|
|
|
|
$mail->AddAddress($email);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$mail->AddCC($wkfParam["wkf_smtp_user"], 'WorkFlow');
|
|
|
|
|
$mail->IsHTML(true);
|
|
|
|
|
$mail->CharSet = 'iso-8859-1';
|
|
|
|
|
$mail->Subject = $tpEnvio == ENVIO_DIARIO ? "Resumo da Opera<EFBFBD><EFBFBD>o(Di<EFBFBD>rio)" : "Resumo da Opera<EFBFBD><EFBFBD>o(M<EFBFBD>dia Mensal)";
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Adciona imagens do html
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
$dirApl = "/var/www/html/aplicativo/";
|
|
|
|
|
$imgLogo = $dirApl. "imgSite/" . $wkfParam["wkf_logo_parceiro"];
|
|
|
|
|
$logoParceiro = file_exists($imgLogo) ? $imgLogo : "/var/lib/asterisk/scripts/workflow/logoParceiro.png";
|
|
|
|
|
$logoPrincipal = $dirApl.LOGO_PRINCIPAL_WORKFLOW;
|
|
|
|
|
|
|
|
|
|
$mail->AddEmbeddedImage($logoPrincipal, CONF_PRINCIPAL_WORKFLOW);
|
|
|
|
|
$mail->AddEmbeddedImage($logoParceiro, CONF_PARCEIRO_WORKFLOW);
|
|
|
|
|
$resp = GetEnvioDac($email);
|
|
|
|
|
foreach ($Img as $key => $value) {
|
|
|
|
|
foreach ($resp as $val) {
|
|
|
|
|
if ($val['fila'] . '_' . date('Ymd', strtotime('-1days')) . '.jpg' == $value) {
|
|
|
|
|
$mail->AddEmbeddedImage($value, $key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$resp) {
|
|
|
|
|
$mail->AddEmbeddedImage($value, $key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$mail->Body = $body;
|
|
|
|
|
$mail->AltBody = $body;
|
|
|
|
|
$enviado = $mail->Send();
|
|
|
|
|
$mail->ClearAllRecipients();
|
|
|
|
|
$erro = $mail->ErrorInfo;
|
|
|
|
|
RegistraEnvioEmail($conn, $dataEnvio, $email, $emailId, $enviado, $erro, $tpEnvio);
|
|
|
|
|
|
|
|
|
|
if ($debug == 9)
|
|
|
|
|
PreparaLog("EnviaEmail", "$dataEnvio - $email - $erro", false);
|
|
|
|
|
if (!$enviado) {
|
|
|
|
|
$msg = "Email: $email n<EFBFBD>o pode ser enviado Data Envio: $dataEnvio! Erro: $erro";
|
|
|
|
|
PreparaLog("EnviaEmail", $msg, !$enviado);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $enviado;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetEnvioDac($email) {
|
|
|
|
|
global $conn;
|
|
|
|
|
$query = "select nome_dac as fila from pbx_workflow_emails a
|
|
|
|
|
inner join pbx_workflow_emails_dacs b on a.wkf_email_id = b.wkf_email_id
|
|
|
|
|
where wkf_email = '$email'";
|
|
|
|
|
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
|
|
|
|
|
return pg_fetch_all($result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraEnvioEmail($conn, $dataEnvio, $email, $emailId, $enviado, $erro, $tpEnvio) {
|
|
|
|
|
global $debug;
|
|
|
|
|
$erro = trim($erro);
|
|
|
|
|
if ($erro == '')
|
|
|
|
|
$erro = "null";
|
|
|
|
|
else
|
|
|
|
|
$erro = "'$erro'";
|
|
|
|
|
if (!$enviado)
|
|
|
|
|
$enviado = 0;
|
|
|
|
|
else
|
|
|
|
|
$enviado = 1;
|
|
|
|
|
$table = $tpEnvio == ENVIO_DIARIO ? "pbx_workflow_reg_envio_email" : "pbx_workflow_reg_envio_email_mensal";
|
|
|
|
|
//create table pbx_workflow_reg_envio_email(wkf_data_envio date not null, wkf_email varchar(80) not null, wkf_status int, wkf_msg varchar(1024), wkf_data_reg timestamp not null default now(), CONSTRAINT "pkRegEnvioEmail" PRIMARY KEY (wkf_data_envio, wkf_email));
|
|
|
|
|
$query = "insert into $table(wkf_data_envio, wkf_email, wkf_status, wkf_msg)values('$dataEnvio', '$email', '$enviado', $erro)";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$ret = $result ? true : false;
|
|
|
|
|
|
|
|
|
|
if ($debug == 9) {
|
|
|
|
|
PreparaLog("RegistraEnvioEmail", $query, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$ret) {
|
|
|
|
|
$msg = sprintf('Registro de envio n<EFBFBD>o pode ser realizado! Email: %s Data Envio: %s Erro: %s', $email, $dataEnvio, pg_last_error($conn));
|
|
|
|
|
PreparaLog("RegistraEnvioEmail", $msg, !$ret);
|
|
|
|
|
}
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function RegistraEnvio($conn, $dataEnvio, $tpEnvio) {
|
|
|
|
|
$table = $tpEnvio == ENVIO_DIARIO ? "pbx_workflow_reg_envio" : "pbx_workflow_reg_envio_mensal";
|
|
|
|
|
$query = "insert into $table(wkf_data_envio)values('$dataEnvio')";
|
|
|
|
|
$result = pg_query($conn, $query);
|
|
|
|
|
$ret = $result ? true : false;
|
|
|
|
|
if (!$ret) {
|
|
|
|
|
$msg = 'Registro de envio n<EFBFBD>o pode ser realizado!';
|
|
|
|
|
PreparaLog("RegistraEnvio", $msg, !$ret);
|
|
|
|
|
}
|
|
|
|
|
return $ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function GetTipoEnvio($db, $mesEnvio) {
|
|
|
|
|
$envio = 1;
|
|
|
|
|
$query = "select count(*) from pbx_workflow_reg_envio_mensal where wkf_data_envio = '$mesEnvio'";
|
|
|
|
|
$result = pg_query($db, $query);
|
|
|
|
|
|
|
|
|
|
if (!$result) {
|
|
|
|
|
PreparaLog("GetTipoEnvio", $query, true);
|
|
|
|
|
exit;
|
|
|
|
|
}
|
|
|
|
|
$dados = @pg_fetch_row($result);
|
|
|
|
|
/*
|
|
|
|
|
* Se n<EFBFBD>o houver um registro indicando o envio, incrementa a variavel
|
|
|
|
|
* indicando que <EFBFBD> necessario enviar o mensal
|
|
|
|
|
* $envio = 1 -> Indica que o envio devera ser do dia
|
|
|
|
|
* $envio = 2 -> Indica que o envio dever<EFBFBD> ser do dia e m<EFBFBD>s.
|
|
|
|
|
*/
|
|
|
|
|
if (!$dados[0]) {
|
|
|
|
|
$envio++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $envio;
|
|
|
|
|
}
|
|
|
|
|
?>
|