#!/usr/bin/php -q 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ário e mensal * wkf_tipo_envio = 1 -> recebe workflow diá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çã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á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ção(Diário)" : "Resumo da Operação(Mé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ã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ã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ã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ão houver um registro indicando o envio, incrementa a variavel * indicando que é necessario enviar o mensal * $envio = 1 -> Indica que o envio devera ser do dia * $envio = 2 -> Indica que o envio deverá ser do dia e mês. */ if (!$dados[0]) { $envio++; } return $envio; } ?>