<?php
date_default_timezone_set('America/Sao_Paulo');

ini_set('display_errors', 0);
error_reporting(0);

//globais
$data = date("Y-m-d");
$dataBra = date('d/m/Y');
$hora = date('H:i:s');
$ip = $_SERVER['REMOTE_ADDR'];
$portaLogica = $_SERVER['REMOTE_PORT'];
$ipPorta = $ip . ":" . $portaLogica;
$dataHoraMista = date("YmdHis");
$dataHora = date('Y-m-d H:i:s');
$diaAtual = date("d");
$mesAtual = date("m");
$anoAtual = date("Y");

$rand = rand(1, 999999);


//detecta ie8 ou inferior
if (preg_match('/(?i)msie [7-8]/', $_SERVER['HTTP_USER_AGENT'])) {
  $ie8 = 'S';
}
/////

// Formatar cpf
function formatarCPF($cpf)
{
  return preg_replace("/(\d{3})(\d{3})(\d{3})(\d{2})/", "$1.$2.$3-$4", $cpf);
}

// formatar cnpj
function formatarCNPJ($cnpj)
{
  return preg_replace("/(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})/", "$1.$2.$3/$4-$5", $cnpj);
}

function formatarTelefone($telefone)
{
  // Verifica se é um telefone com DDD
  if (strlen($telefone) == 10) {
    return preg_replace("/(\d{2})(\d{4})(\d{4})/", "($1) $2-$3", $telefone);
  } elseif (strlen($telefone) == 11) {
    // Verifica se é um telefone celular com DDD
    return preg_replace("/(\d{2})(\d{5})(\d{4})/", "($1) $2-$3", $telefone);
  } else {
    // Telefone não reconhecido
    return "Formato de telefone não reconhecido";
  }
}

// Cria uma mascara para os números de telefone
function mascaraTelefone($numero)
{
  // Remover caracteres não numéricos
  $numero = preg_replace('/\D/', '', $numero);
  $telefoneFormatado = sprintf(
    '(%s) %s***-%s',
    substr($numero, 0, 2),
    substr($numero, 2, 1),
    substr($numero, -4)
  );

  return $telefoneFormatado;
}

//necessário para integração RD Station
/**
 * RD Station - Integrações
 * addLeadConversionToRdstationCrm()
 * Envio de dados para a API de leads do RD Station
 *
 * Parâmetros:
 *     ($rdstation_token) - token da sua conta RD Station ( encontrado em https://www.rdstation.com.br/docs/api )
 *     ($identifier) - identificador da página ou evento ( por exemplo, 'pagina-contato' )
 *     ($data_array) - um Array com campos do formulário ( por exemplo, array('email' => 'teste@rdstation.com.br', 'nome' =>'Fulano') )
 */
function addLeadConversionToRdstationCrm($rdstation_token, $identifier, $data_array)
{
  $api_url = "https://www.rdstation.com.br/api/1.2/conversions";

  try {
    if (empty($data_array["token_rdstation"]) && !empty($rdstation_token)) {
      $data_array["token_rdstation"] = $rdstation_token;
    }
    if (empty($data_array["identificador"]) && !empty($identifier)) {
      $data_array["identificador"] = $identifier;
    }
    if (empty($data_array["c_utmz"])) {
      $data_array["c_utmz"] = $_COOKIE["__utmz"];
    }
    unset(
      $data_array["password"],
      $data_array["password_confirmation"],
      $data_array["senha"],
      $data_array["confirme_senha"],
      $data_array["captcha"],
      $data_array["_wpcf7"],
      $data_array["_wpcf7_version"],
      $data_array["_wpcf7_unit_tag"],
      $data_array["_wpnonce"],
      $data_array["_wpcf7_is_ajax_call"]
    );

    if (!empty($data_array["token_rdstation"]) && !(empty($data_array["email"]) && empty($data_array["email_lead"]))) {
      $data_query = http_build_query($data_array);
      if (in_array('curl', get_loaded_extensions())) {
        $ch = curl_init($api_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_query);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_exec($ch);
        curl_close($ch);
      } else {
        $params = array('http' => array('method' => 'POST', 'content' => $data_query, 'ignore_errors' => true));
        $ctx = stream_context_create($params);
        $fp = @fopen($api_url, 'rb', false, $ctx);
      }
    }
  } catch (Exception $e) {
  }
}
//FIM //necessário para integração RD Station

//nova api para o RD Station
function leadRD($dados)
{

  $curl = curl_init();

  curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://www.rdstation.com.br/api/1.2/conversions',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => $dados,
    CURLOPT_HTTPHEADER => array(
      "Content-Type: multipart/form-data;"
    )
  ));

  $response = curl_exec($curl);

  curl_close($curl);

  return $response;
}
//FIM //nova api para o RD Station

//api webhooks piperun
function webhooks($dados)
{
  $data_string = json_encode($dados);

  $ch = curl_init("https://api.pipe.run/v1/webhooks/webphones/c7384d74-800e-4b29-b1c4-46acff044194");
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  // usar para não deixar a api ficar fazendo loop se o servidor estiver lento
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
  curl_setopt($ch, CURLOPT_TIMEOUT, 400);
  // FIM // usar para não deixar a api ficar fazendo loop se o servidor estiver lento
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt(
    $ch,
    CURLOPT_HTTPHEADER,
    array(
      "Content-Type: application/json",
      "Content-Length: " . strlen($data_string)
    )
  );

  $retorno = curl_exec($ch);
  $retorno = json_decode($retorno, true);

  return $retorno;
}

//Cria mascara
function mask($val, $mask)
{
  $maskared = '';
  $k = 0;
  for ($i = 0; $i <= strlen($mask) - 1; $i++) {
    if ($mask[$i] == '#') {
      if (isset($val[$k]))
        $maskared .= $val[$k++];
    } else {
      if (isset($mask[$i]))
        $maskared .= $mask[$i];
    }
  }
  return $maskared;
}



//curl abrir url
function get_data($url)
{
  $ch = curl_init();
  $timeout = 15;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

//calcula frete
function calculaFrete($cod_servico, $cep_origem, $cep_destino, $peso, $altura, $largura, $comprimento, $valor_declarado = '17')
{
  #OFICINADANET###############################
  # C�digo dos Servi�os dos Correios
  # 41106 PAC sem contrato
  # 40010 SEDEX sem contrato
  # 40045 SEDEX a Cobrar, sem contrato
  # 40215 SEDEX 10, sem contrato
  ############################################

  //"http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=16300-000&sCepDestino=16300-000&nVlPeso=0.5&nCdFormato=1&nVlComprimento=3&nVlAltura=2&nVlLargura=1&sCdMaoPropria=n&nVlValorDeclarado=0.5&sCdAvisoRecebimento=n&nCdServico=40010&nVlDiametro=0&StrRetorno=xml";


  $correios = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?nCdEmpresa=&sDsSenha=&sCepOrigem=" . $cep_origem . "&sCepDestino=" . $cep_destino . "&nVlPeso=" . $peso . "&nCdFormato=1&nVlComprimento=" . $comprimento . "&nVlAltura=" . $altura . "&nVlLargura=" . $largura . "&sCdMaoPropria=n&nVlValorDeclarado=0&sCdAvisoRecebimento=n&nCdServico=" . $cod_servico . "&nVlDiametro=0&StrRetorno=xml";
  $resultado = get_data($correios);
  $xml = simplexml_load_string($resultado);
  if ($xml->cServico->Erro == '0')
    return $xml->cServico->Valor;
  else
    //return false;
    return $xml->cServico->Erro;
}


//data formato americano
function sqldata($string)
{
  $string = explode('/', $string);
  return $string[2] . "-" . $string[1] . "-" . $string[0];
}

function ultimoDiaMes($mes)
{
  $mes = $mes;
  $ano = date("Y");
  return $ultimo_dia = date("t", mktime(0, 0, 0, $mes, '01', $ano));
}

//verifica se uma data � maior que a outra
function data1_maior($data1, $data2)
{
  // se data no formato DD/MM/AAAA ent�o converte para AAAA-MM-DD
  if (strstr($data1, "/")) {
    $aux = explode("/", $data1);
    $data1 = $aux[2] . "-" . $aux[1] . "-" . $aux[0];
  }
  // se data no formato DD/MM/AAAA ent�o converte para AAAA-MM-DD
  if (strstr($data2, "/")) {
    $aux = explode("/", $data2);
    $data2 = $aux[2] . "-" . $aux[1] . "-" . $aux[0];
  }
  // verifica se data1 � maior que data2
  if ($data1 > $data2) return true;
  else return false;
}


//float
function tofloat($valor)
{
  $valor = str_replace('.', '', $valor);
  return str_replace(',', '.', $valor);
}

function decimal($valor)
{
  $valor = number_format(($valor), 2, chr(44), ".");
  return $valor;
}

//pegar extensao do arquivo
function extensao($arquivo)
{
  $parts = explode('.', $arquivo);
  $ext = $parts[count($parts) - 1];
  return $ext;
}

//tratar dados
function secure($string)
{
  $string = trim($string);
  $string = strip_tags($string);
  $string = (get_magic_quotes_gpc()) ? $string : addslashes($string);

  $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");

  return $string;
}

function secure_numeric($string)
{

  $string = strip_tags($string);
  $string = htmlspecialchars($string);
  $string = trim($string);
  $string = stripslashes($string);
  $string = mysql_real_escape_string($string);
  $palavra = "(ftp|.dat|.txt|.gif|wget|.php)";
  if (preg_match($palavra, $string)) {
    die('erro fatal');
  }
  if (!is_numeric($string)) {
    die("Input invalido.");
  }

  return $string;
}


//trata entradas
$acao = trim(secure($_GET['acao']));
$op = trim(secure($_GET['op']));
$msg = trim(secure($_GET['msg']));
$acesso = trim(secure($_GET['acesso']));
//$busca = trim(secure($_REQUEST['busca']));
$busca = trim($_REQUEST['busca']);

$maxresults = secure($_GET['maxresults']);
$pagina = secure($_GET['pagina']);

if ($_GET['pagina']) {
  $pagina_url =  "&pagina=" . secure($_GET['pagina']);
}
if ($_GET['maxresults']) {
  $maxresults_url =  "&maxresults=" . secure($_GET['maxresults']);
}
if ($_GET['filtro']) {
  $filtro_url =  "&filtro=" . secure($_GET['filtro']);
}
if ($_GET['filtro2']) {
  $filtro2_url =  "&filtro2=" . secure($_GET['filtro2']);
}
if ($_GET['filtro3']) {
  $filtro3_url =  "&filtro3=" . secure($_GET['filtro3']);
}
if ($_GET['cliente']) {
  $filtro_urlCliente =  "&cliente=" . secure($_GET['cliente']);
}
if ($_GET['representante']) {
  $filtro_urlRepresentante =  "&representante=" . secure($_GET['representante']);
}
if ($_REQUEST['busca']) {
  $busca_url =  "&busca=" . secure($_REQUEST['busca']);
}


/**
 * Fun��o para gerar senhas aleat�rias
 *
 * @author    Thiago Belem <contato@thiagobelem.net>
 *
 * @param integer $tamanho Tamanho da senha a ser gerada
 * @param boolean $maiusculas Se ter� letras mai�sculas
 * @param boolean $numeros Se ter� n�meros
 * @param boolean $simbolos Se ter� s�mbolos
 *
 * @return string A senha gerada
 */
function geraSenha($tamanho = 8, $maiusculas = true, $numeros = true, $simbolos = false)
{
  $lmin = 'abcdefghijklmnopqrstuvwxyz';
  $lmai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $num = '1234567890';
  $simb = '!@%&%*#_';
  $retorno = '';
  $caracteres = '';

  $caracteres .= $lmin;
  if ($maiusculas) $caracteres .= $lmai;
  if ($numeros) $caracteres .= $num;
  if ($simbolos) $caracteres .= $simb;

  $len = strlen($caracteres);
  for ($n = 1; $n <= $tamanho; $n++) {
    $rand = mt_rand(1, $len);
    $retorno .= $caracteres[$rand - 1];
  }
  return $retorno;
}
//FIM //Fun��o para gerar senhas aleat�rias

//criar senha randomica
function createRandomPassword()
{

  $chars = "abcdefghijkmnopqrstuvwxyz023456789";
  srand((float)microtime() * 1000000);
  $i = 0;
  $pass = '';

  while ($i <= 7) {

    $num = rand() % 33;

    $tmp = substr($chars, $num, 1);

    $pass = $pass . $tmp;

    $i++;
  }


  return $pass;
}

function converte_alias($string)
{

  $string = strtolower(trim($string));

  // matriz de entrada
  $what = array('�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', '�', ' ', '-', '(', ')', ',', ';', ':', '|', '!', '"', '#', '$', '%', '&', '/', '=', '?', '~', '^', '>', '<', '�', '�');

  // matriz de sa�da
  $by   = array('a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'A', 'A', 'E', 'I', 'O', 'U', 'n', 'n', 'c', 'C', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_');

  // devolver a string
  return str_replace($what, $by, $string);
}

//remove acentua��o
function retirar_acentos_caracteres_especiais($string)
{
  $palavra = strtr(utf8_decode($string), "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy");
  //$palavranova = str_replace(" ","_", $palavra);
  //$palavranova = str_replace("-","_", $palavranova);
  $palavranova = str_replace(" ", "-", $palavra);
  $palavranova = str_replace("�", "a", $palavranova);
  $palavranova = str_replace("�", "o", $palavranova);
  $palavranova = str_replace("?", "", $palavranova);
  $palavranova = str_replace("!", "", $palavranova);
  $palavranova = str_replace("/", "", $palavranova);
  $palavranova = str_replace("|", "", $palavranova);
  $palavranova = str_replace(";", "", $palavranova);
  $palavranova = str_replace(",", "", $palavranova);
  $palavranova = str_replace(".", "", $palavranova);
  $palavranova = str_replace(":", "", $palavranova);
  $palavranova = str_replace("@", "", $palavranova);
  $palavranova = str_replace("%", "", $palavranova);
  $palavranova = str_replace("&", "", $palavranova);
  $palavranova = str_replace("+", "", $palavranova);
  $palavranova = str_replace("=", "", $palavranova);
  $palavranova = str_replace("#", "", $palavranova);
  $palavranova = str_replace("*", "", $palavranova);
  $palavranova = str_replace("(", "", $palavranova);
  $palavranova = str_replace(")", "", $palavranova);
  $palavranova = str_replace("[", "", $palavranova);
  $palavranova = str_replace("]", "", $palavranova);
  $palavranova = str_replace("{", "", $palavranova);
  $palavranova = str_replace("}", "", $palavranova);
  $palavranova = str_replace("<", "", $palavranova);
  $palavranova = str_replace(">", "", $palavranova);
  $palavranova = str_replace("$", "", $palavranova);
  $palavranova = str_replace('"', '', $palavranova);
  $palavranova = str_replace('�', '', $palavranova);
  $palavranova = str_replace("__", "_", $palavranova);
  $palavranova = str_replace("___", "_", $palavranova);
  $palavranova = str_replace("�", "", $palavranova);
  $palavranova = strtolower($palavranova);
  return $palavranova;
}

//limpa telefone
function limpatelefone($string)
{
  $string = str_replace("(", "", $string);
  $string = str_replace(")", "", $string);
  $string = str_replace("-", "", $string);
  $string = str_replace(" ", "", $string);
  $string = strtolower($string);
  return $string;
}

//remove caracteres especiais
function removerCaracter($string)
{
  $newstring = preg_replace("/[^a-zA-Z0-9_.]/", " ", strtr(utf8_encode($string), "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ", "aaaaeeiooouucAAAAEEIOOOUUC-"));
  $newstring = trim(strtolower($newstring));
  return $newstring;
}

//remove caracteres especiais #ESSA AQUI FUNCIONA DE VERDADE
function sanitizeString($string)
{

  // matriz de entrada
  $what = array('ä', 'ã', 'à', 'á', 'â', 'ê', 'ë', 'è', 'é', 'ï', 'ì', 'í', 'ö', 'õ', 'ò', 'ó', 'ô', 'ü', 'ù', 'ú', 'û', 'À', 'Á', 'É', 'Í', 'Ó', 'Ú', 'ñ', 'Ñ', 'ç', 'Ç', ' ', '_', '(', ')', ',', ';', ':', '|', '!', '"', '#', '$', '%', '&', '/', '=', '?', '~', '^', '>', '<', 'ª', 'º');

  // matriz de saída
  $by   = array('a', 'a', 'a', 'a', 'a', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'o', 'o', 'o', 'o', 'o', 'u', 'u', 'u', 'u', 'A', 'A', 'E', 'I', 'O', 'U', 'n', 'n', 'c', 'C', '-', '-', '', '', '-', '-', '-', '-', '', '-', '-', '-', '', '-', '-', '-', '', '', '', '', '', '', '');

  $palavra = str_replace($what, $by, $string);
  $palavra = strtolower($palavra);

  // devolver a string
  return $palavra;
}

//remove acentos
function removerAcentos($string)
{
  return preg_replace('/[`^~\'"]/', null, iconv('UTF-8', 'ASCII//TRANSLIT', $string));
}

//escapar strings maliciosas
function escapestrings($b)
{
  //se magic_quotes n�o estiver ativado, escapa a string
  if (!get_magic_quotes_gpc()) {
    return mysql_real_escape_string($b); // fun��o nativa do php para escapar vari�veis.
  } else {
    // caso contrario
    return $b; // retorna a vari�vel sem necessidade de escapar duas vezes
  }
}

//fun��o para checar e-mail
function spamcheck($field)
{
  //filter_var() sanitizes the e-mail
  //address using FILTER_SANITIZE_EMAIL
  $field = filter_var($field, FILTER_SANITIZE_EMAIL);

  //filter_var() validates the e-mail
  //address using FILTER_VALIDATE_EMAIL
  if (filter_var($field, FILTER_VALIDATE_EMAIL)) {
    return TRUE;
  } else {
    return FALSE;
  }
}


//
function alfabeto_select($selected)
{
  print "<select name=alfabeto class=formu>";
  for ($i = 97; $i <= 122; $i++) {
    $c = strtoupper(chr($i));
    if ($selected == $c)
      $x = "selected";
    else
      $x = "";
    print "<option value=$c $x>$c</option>";
  }
  print "</select>";
}

function alfabeto($link, $todos)
{
  $alfa = '';
  for ($i = 97; $i <= 122; $i++) {
    $c = strtoupper(chr($i));
    $alfa .= ereg_replace('%%letra%%', $c, $link);
    if ($i < 122) $alfa .= '&nbsp;&nbsp;';
  }
  if ($todos) $alfa .= '&nbsp;&nbsp;' . ereg_replace('%%letra%%', 'todos', $link);
  return $alfa;
}

function hormin($hora)
{
  $hora = explode(':', $hora);
  return $hora[0] . ':' . $hora[1];
}

function date2sql($data)
{
  $d = explode('/', $data);
  return sprintf('%04d-%02d-%02d', $d[2], $d[1], $d[0]);
}

// retorna uma data que est no formato SQL no formato normal
function sql2date($data)
{
  $d = explode('-', substr($data, 0, 10));
  if (!$d[0] && !$d[1] && !$d[2]) return '';
  return sprintf('%02d/%02d/%04d', $d[2], $d[1], $d[0]);
}

// retorna a data e hora no formato padr?o  partir de uma data no formato mysql
function sql2dh($dh)
{
  return sql2date($dh) . " " . substr($dh, 11, 5);
}

//NÃO PERMITE VENCIMENTO EM FINAL DE SEMANA E FERIADOS NACIONAIS COM DATAS FIXAS
function vencimento_dias_uteis($vencimento)
{
  //verifica vencimento
  $ano_v =  substr($vencimento, 0, 4);
  $mes_v =  substr($vencimento, 5, -3);
  $dia_v =  substr($vencimento, 8, 9);

  //verifica se não é um feriado
  $feriados = array(
    '01/01',
    '21/04',
    '01/05',
    '12/10',
    '02/11',
    '15/11',
    '25/12'
  );

  $dia_mes = $dia_v . '/' . $mes_v;

  $feriado = false;
  foreach ($feriados as $value) {
    if ($value == $dia_mes) $feriado = true;
  }
  //FIM //verifica se não é um feriado

  $diasemana = date("w", mktime(0, 0, 0, $mes_v, $dia_v, $ano_v));

  if ($diasemana == '5' && $feriado == '1') { //se dia cair na sexta e for feriado
    $vencimento = strtotime('' . $vencimento . ' +3 days'); //acrescenta 3 dias no vencimento
    $vencimento = date('Y-m-d', $vencimento);
  } else if ($diasemana == '6') { //se dia cair no sabado
    $vencimento = strtotime('' . $vencimento . ' +2 days'); //acrescenta 2 dias no vencimento
    $vencimento = date('Y-m-d', $vencimento);
  } else if ($diasemana == '0' || $feriado == '1') { //se dia cair no domingo ou se for feriado
    $vencimento = strtotime('' . $vencimento . ' +1 day'); //acrescenta 1 dia no vencimento
    $vencimento = date('Y-m-d', $vencimento);
  }

  return $vencimento;
}

// retorna a abrevia��o do mes
function abreviames($mes)
{
  switch ($mes) {
    case '01':
      $mes = 'JAN';
      break;
    case '02':
      $mes = 'FEV';
      break;
    case '03':
      $mes = 'MAR';
      break;
    case '04':
      $mes = 'ABR';
      break;
    case '05':
      $mes = 'MAI';
      break;
    case '06':
      $mes = 'JUN';
      break;
    case '07':
      $mes = 'JUL';
      break;
    case '08':
      $mes = 'AGO';
      break;
    case '09':
      $mes = 'SET';
      break;
    case '10':
      $mes = 'OUT';
      break;
    case '11':
      $mes = 'NOV';
      break;
    case '12':
      $mes = 'DEZ';
      break;
  }
  return ($mes);
}

// retorna o nome do mes
function exibemes($mes)
{
  switch ($mes) {
    case '01':
      $mes = 'Janeiro';
      break;
    case '02':
      $mes = 'Fevereiro';
      break;
    case '03':
      $mes = 'Março';
      break;
    case '04':
      $mes = 'Abril';
      break;
    case '05':
      $mes = 'Maio';
      break;
    case '06':
      $mes = 'Junho';
      break;
    case '07':
      $mes = 'Julho';
      break;
    case '08':
      $mes = 'Agosto';
      break;
    case '09':
      $mes = 'Setembro';
      break;
    case '10':
      $mes = 'Outubro';
      break;
    case '11':
      $mes = 'Novembro';
      break;
    case '12':
      $mes = 'Dezembro';
      break;
  }
  return ($mes);
}

// retorna o nome do mes
function exibemes2($mes)
{
  switch ($mes) {
    case '01':
      $mes = 'Janeiro';
      break;
    case '02':
      $mes = 'Fevereiro';
      break;
    case '03':
      $mes = 'Marco';
      break;
    case '04':
      $mes = 'Abril';
      break;
    case '05':
      $mes = 'Maio';
      break;
    case '06':
      $mes = 'Junho';
      break;
    case '07':
      $mes = 'Julho';
      break;
    case '08':
      $mes = 'Agosto';
      break;
    case '09':
      $mes = 'Setembro';
      break;
    case '10':
      $mes = 'Outubro';
      break;
    case '11':
      $mes = 'Novembro';
      break;
    case '12':
      $mes = 'Dezembro';
      break;
  }
  return ($mes);
}

function contarDiasAteHoje($data)
{
  $dataFornecida = new DateTime($data);
  $dataAtual = new DateTime();

  $diferenca = $dataFornecida->diff($dataAtual);
  $dias = $diferenca->days;

  return $dias;
}

// retorna data ex: 20 de Setembro
function data_mes($data)
{
  $d = explode('/', $data);
  $dia = $d[0];
  $mes = $d[1];
  $data_mes = "$dia de " . exibemes($mes);
  return ($data_mes);
}

// retorna data ex: 20/07
function data_dia_mes($data)
{
  $d = explode('/', $data);
  $dia = $d[0];
  $mes = $d[1];
  $data_dia_mes = $dia . "/" . $mes;
  return ($data_dia_mes);
}

// retorna ultimo dia do mes
function ultimo_dia_mes($mes)
{

  //$mes = date("m"); // M�s atual
  $ano = date("Y"); // Ano atual
  $dia = date("t", mktime(0, 0, 0, $mes, '01', $ano)); // M�gica, plim!

  return ($dia);
}
//FIM // retorna ultimo dia do mes

function criar_thumbnail($origem, $destino, $largura, $pre, $formato, $extensao)
{
  $destino = $destino . $pre;

  if ($extensao == 'jpg' or $extensao == 'jpeg') {
    $im = imagecreatefromjpeg($origem);
  }
  if ($extensao == 'gif') {
    $im = imagecreatefromgif($origem);
  }
  if ($extensao == 'png') {
    $im = imagecreatefrompng($origem);
  }

  $w = imagesx($im);
  $h = imagesy($im);
  if ($w > $h) {
    $nw = $largura;
    $nh = ($h * $largura) / $w;
  } else {
    $nh = $largura;
    $nw = ($w * $largura) / $h;
  }
  if (function_exists('imagecopyresampled')) {
    if (function_exists('imageCreateTrueColor')) {
      $ni = imageCreateTrueColor($nw, $nh);
    } else {
      $ni    = imagecreate($nw, $nh);
    }
    if (!@imagecopyresampled($ni, $im, 0, 0, 0, 0, $nw, $nh, $w, $h)) {
      imagecopyresized($ni, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
    }
  } else {
    $ni    = imagecreate($nw, $nh);
    imagecopyresized($ni, $im, 0, 0, 0, 0, $nw, $nh, $w, $h);
  }

  imagejpeg($ni, $destino, 98);
}
//

//FUÇÃO PARA REPELIR INJECTION
function anti_injection($sql)
{
  $sqlWords = "/([Ff][Rr][Oo][Mm]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Cc][Oo][Uu][Nn][Tt]|[Tt][Rr][Uu][Nn][Cc][Aa][Tt][Ee]|[Ee][Xx][Pp][Ll][Aa][Ii][Nn]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Ww][Hh][Ee][Rr][Ee]|[Uu][Pp][Dd][Aa][Tt][Ee]|[Ee][Mm][Pp][Tt][Yy]|[Dd][Rr][Oo][Pp] [Tt][Aa][Bb][Ll][Ee]|[Ll][Ii][Mm][Ii][Tt]|[Ss][Hh][Oo][Ww] [Tt][Aa][Bb][Ll][Ee][Ss]|[Oo][Rr]|[Oo][Rr][Dd][Ee][Rr] [Bb][Yy]|#|\*|--|\\\)/";
  $sql = preg_replace($sqlWords, "", $sql);
  $sql = trim($sql);
  $sql = strip_tags($sql);
  $sql = (get_magic_quotes_gpc()) ? $sql : addslashes($sql);
  return $sql;
}
//fim //FUÇÃO PARA REPELIR INJECTION

function valida_email($email)
{
  return preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/', $email);
}


//Verificação de emails validos
function verificaemail2($email)
{

  $apiKey = "5a167bf2c6aef640d837f827d91db3f0f26da5f9";
  $tkSite = "109c0c8143a43627d3431f125153a4d88339ec50";
  $emailEncoded = base64_encode($email);
  $return = file_get_contents("https://optin.safetymails.com/main/safetyRT/{$apiKey}/{$tkSite}/{$emailEncoded}");
  $obj = json_decode($return);
  $retorno = json_decode(json_encode($obj), true);
  //print_r($obj);
  // return $retorno['StatusCall'];

  if ($retorno['StatusCall'] == 'Failed') {
    //echo "<p>API falhou! ".$retorno['MsgErro']."</p>";
    $retorno == true;
    return $retorno;
  } else if ($retorno['StatusCall'] == 'OK') {
    if ($retorno['StatusEmail'] == 'INVALIDO') $erro = 1;
    else if ($retorno['StatusEmail'] == 'ERRO_SINTAXE') $erro = 1;
    else if ($retorno['StatusEmail'] == 'DOMINIO INVALIDO') $erro = 1;
    else if ($retorno['StatusEmail'] == 'DESCARTAVEL') $erro = 1;
    else if ($retorno['StatusEmail'] == 'JUNK') $erro = 1;
    else $erro = 0;
  }

  return $erro;
} //FIM //Verificação de emails validos



//Verificação de emails validos
function verificaemail($email)
{

  // $apiKey = "5a167bf2c6aef640d837f827d91db3f0f26da5f9";
  // $tkSite = "109c0c8143a43627d3431f125153a4d88339ec50";
  // $emailEncoded = base64_encode($email);
  // $return = file_get_contents("https://optin.safetymails.com/main/safetyRT/{$apiKey}/{$tkSite}/{$emailEncoded}");
  // $obj = json_decode($return);
  // $retorno = json_decode(json_encode($obj), true);
  // //print_r($obj);

  // if ($retorno['StatusCall'] == 'Failed') {
  // 	//echo "<p>API falhou! ".$retorno['MsgErro']."</p>";
  // 	$retorno == true;
  // 	return $retorno;
  // } else if ($retorno['StatusCall'] == 'OK') {
  // 	switch ($retorno['StatusEmail']) {
  // 		case 'VALIDO':
  // 			$erro = false;
  // 			break;
  // 		case 'LIMITADO':
  // 			$erro = false;
  // 			break;
  // 		case 'INVALIDO':
  // 			$erro = true;
  // 			break;
  // 		case 'ERRO DE SINTAXE':
  // 			$erro = true;
  // 			break;
  // 		case 'DOMINIO INVALIDO':
  // 			$erro = true;
  // 			break;
  // 		case 'DESCARTAVEL':
  // 			$erro = true;
  // 			break;
  // 		case 'JUNK':
  // 			$erro = true;
  // 			break;
  // 		case 'SPAMTRAP':
  // 			$erro = false;
  // 			break;
  // 		case 'PENDENTE':
  // 			$erro = false;
  // 			break;
  // 		case 'DESCONHECIDO':
  // 			$erro = false;
  // 			break;
  // 		case 'SCRAPED':
  // 			$erro = false;
  // 			break;
  // 		case 'INCERTO':
  // 			$erro = false;
  // 			break;
  // 	}

  // 	if ($erro == false) {
  // 		//echo "<p>E-mail Válido! ".$retorno['StatusEmail']."</p>";
  // 		return true;
  // 	} else {
  // 		//echo "<p>E-mail Inválido! ".$retorno['StatusEmail']."</p>";
  // 		return false;
  // 	}

  //}
  return true;
} //FIM //Verificação de emails validos

function validatxt($txt)
{
  $inject = 0;

  $badword = array(" select", "select ", " insert", " update", "update ", " delete", "delete ", " drop", "drop ", " destroy", "destroy ");
  for ($i = 0; $i < sizeof($badword); $i++) {
    if (substr_count($txt, $badword[$i]) != 0) {
      $inject = 1;
    }
  }

  $charvalidos = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789������������������������������������!?@#$%&(){}[]:;,.-_ ";

  for ($i = 0; $i < strlen($txt); $i++) {
    $char = substr($txt, $i, 1);
    if (substr_count($charvalidos, $char) == 0) {
      $inject = 1;
    }
  }

  return ($inject);
} //end function


//tamanho em kb
function tamanhokb($tamanho_arquivo)
{

  $size = $tamanho_arquivo / 1024;
  if ($size < 1024) {
    $size = number_format($size, 2);
    $size .= ' KB';
  } else {
    if ($size / 1024 < 1024) {
      $size = number_format($size / 1024, 2);
      $size .= ' MB';
    } else if ($size / 1024 / 1024 < 1024) {
      $size = number_format($size / 1024 / 1024, 2);
      $size .= ' GB';
    }
  }

  return ($size);
}

//envia smtp
function enviarcomsmtp($smtp, $porta, $senha, $usuario, $remetente, $bouncemail, $remetentenome, $destinatario, $destinatarionome, $assunto, $mensagem)
{

  //fun��o smtp
  require_once("PHPMailerAutoload.php");

  //Create a new PHPMailer instance
  $mail = new PHPMailer;
  //Tell PHPMailer to use SMTP
  $mail->isSMTP();
  //Enable SMTP debugging
  // 0 = off (for production use)
  // 1 = client messages
  // 2 = client and server messages
  $mail->SMTPDebug = 0;
  //Ask for HTML-friendly debug output
  $mail->Debugoutput = 'html';
  //Set the hostname of the mail server
  $mail->Host = trim($smtp);
  //Set the SMTP port number - likely to be 25, 465 or 587
  $mail->Port = trim($porta);
  //Whether to use SMTP authentication
  $mail->SMTPAuth = true;
  //Username to use for SMTP authentication
  $mail->Username = trim($usuario);
  //Password to use for SMTP authentication
  $mail->Password = trim($senha);
  //Definir quem a mensagem est� a ser enviada a partir de
  $mail->setFrom(trim($remetente), trim($remetentenome));
  //Definir uma alternativa endere�o de resposta
  $mail->addReplyTo(trim($remetente), trim($remetentenome));
  //Set who the message is to be sent to
  $mail->addAddress(trim($destinatario), trim($destinatarionome));
  $mail->IsHTML(true); // Define que o e-mail ser� enviado como HTML
  $mail->CharSet = 'utf-8'; // Charset da mensagem (opcional)
  //Set the subject line
  $mail->Subject = trim($assunto);
  //Leia um corpo da mensagem HTML de um arquivo externo, converter imagens referenciadas para incorporado, converter HTML em um corpo alternativa plan�cie-texto b�sico
  //$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
  //Substitua o corpo de texto sem formata��o com um criado manualmente
  $mail->AltBody = '';
  $mail->Body    = trim($mensagem);
  //Anexar um arquivo de imagem
  //$mail->addAttachment('contents.html');

  if ($mail->send()) {

    return true;
  } else {

    return false;
    //$mail->ErrorInfo;
  }
}

//envia smtp
function enviarcomsmtpanexo($smtp, $porta, $senha, $usuario, $remetente, $bouncemail, $remetentenome, $destinatario, $destinatarionome, $assunto, $mensagem, $caminho, $anexo)
{

  //fun��o smtp
  require_once("PHPMailerAutoload.php");

  //Create a new PHPMailer instance
  $mail = new PHPMailer;
  //Tell PHPMailer to use SMTP
  $mail->isSMTP();
  //Enable SMTP debugging
  // 0 = off (for production use)
  // 1 = client messages
  // 2 = client and server messages
  $mail->SMTPDebug = 0;
  //Ask for HTML-friendly debug output
  $mail->Debugoutput = 'html';
  //Set the hostname of the mail server
  $mail->Host = trim($smtp);
  //Set the SMTP port number - likely to be 25, 465 or 587
  $mail->Port = trim($porta);
  //Whether to use SMTP authentication
  $mail->SMTPAuth = true;
  //Username to use for SMTP authentication
  $mail->Username = trim($usuario);
  //Password to use for SMTP authentication
  $mail->Password = trim($senha);
  //Definir quem a mensagem est� a ser enviada a partir de
  $mail->setFrom(trim($remetente), trim($remetentenome));
  //Definir uma alternativa endere�o de resposta
  $mail->addReplyTo(trim($remetente), trim($remetentenome));
  //Set who the message is to be sent to
  $mail->addAddress(trim($destinatario), trim($destinatarionome));
  $mail->IsHTML(true); // Define que o e-mail ser� enviado como HTML
  $mail->CharSet = 'utf-8'; // Charset da mensagem (opcional)
  //Set the subject line
  $mail->Subject = trim($assunto);
  //Substitua o corpo de texto sem formata��o com um criado manualmente
  $mail->AltBody = '';
  $mail->Body    = trim($mensagem);
  //Anexar um arquivo
  $mail->AddAttachment($caminho, $anexo);

  if ($mail->send()) {

    return true;
  } else {

    return false;
    //$mail->ErrorInfo;
  }
}


//envia smtp
function enviarcomsmtpanexomultiplos($smtp, $porta, $senha, $usuario, $remetente, $bouncemail, $remetentenome, $destinatario, $destinatarionome, $assunto, $mensagem, $anexos, $replyto, $replytonome)
{

  //fun��o smtp
  require_once __DIR__ . "/PHPMailerAutoload.php";

  //Create a new PHPMailer instance
  $mail = new PHPMailer;
  //Tell PHPMailer to use SMTP
  $mail->isSMTP();
  //Enable SMTP debugging
  // 0 = off (for production use)
  // 1 = client messages
  // 2 = client and server messages
  $mail->SMTPDebug = 0;
  //Ask for HTML-friendly debug output
  $mail->Debugoutput = 'html';
  //Set the hostname of the mail server
  $mail->Host = trim($smtp);
  //Set the SMTP port number - likely to be 25, 465 or 587
  $mail->Port = trim($porta);
  //Whether to use SMTP authentication
  $mail->SMTPAuth = true;
  //Username to use for SMTP authentication
  $mail->Username = trim($usuario);
  //Password to use for SMTP authentication
  $mail->Password = trim($senha);
  //Definir quem a mensagem est� a ser enviada a partir de
  $mail->setFrom(trim($remetente), trim($remetentenome));
  //Definir uma alternativa endere�o de resposta
  $mail->addReplyTo(trim($replyto), trim($replytonome));
  //Set who the message is to be sent to
  $mail->addAddress(trim($destinatario), trim($destinatarionome));
  $mail->IsHTML(true); // Define que o e-mail ser� enviado como HTML
  $mail->CharSet = 'utf-8'; // Charset da mensagem (opcional)
  //Set the subject line
  $mail->Subject = trim($assunto);
  //Substitua o corpo de texto sem formata��o com um criado manualmente
  $mail->AltBody = '';
  $mail->Body    = trim($mensagem);

  $linhas = explode(";", $anexos);
  foreach ($linhas as $key => $linha) {

    list($caminho, $anexo) = explode("|", $linha);

    //Anexar um arquivo
    $mail->AddAttachment($caminho, $anexo);
  }

  if ($mail->send()) {

    return true;
  } else {

    return false;
    //$mail->ErrorInfo;
  }
}



function arredonda($numero, $casas, $separador)
{

  list($numero_inteiro, $decimal) = explode($separador, strval($numero));
  $decimal_str = substr($decimal, 0, $casas);
  $determina = substr($decimal, $casas, 1);
  if (substr($decimal, 0, 1) == "9") {
    $len = strlen($decimal_str);
    for ($i = 0; $i < $len; $i++) {
      if (substr($decimal_str, $i, 1) == "9") {
        $true++;
      }
    }
    if ($true == $len) {
      $numero_inteiro++;
      return $numero_inteiro;
    }
  }
  if ($determina >= 5) {
    $decimal_str++;
  }
  $denom = pow(10, strlen($decimal_str));
  $decimal_ajustado = $decimal_str / $denom;
  return ($numero_inteiro + $decimal_ajustado);
}

//fun��o para acessar plataforma
function saldo($numero, $senha, $sip)
{

  if ($var = '' . $sip . '/painel/api/getBalance.php?login=' . $numero . '&senha=' . $senha . '') {
    $resultado = get_data($var);
    $resultado = arredonda(($resultado), 2, ".");
    return $resultado = decimal($resultado);
  } else {
    return 'Atualize a p�gina';
  }
}

//fun��o para acessar liga��es
function ligacoes($numero, $senha, $sip, $dataInicio, $dataFim)
{

  if ($var = '' . $sip . '/painel/api/getCDR.php?login=' . $numero . '&senha=' . $senha . '&data_inicial=' . $dataInicio . '&data_final=' . $dataFim . '&busy=OK') {
    return $resultado = get_data($var);
  } else {
    return 'Erro ao acessar hist�rico. Tente novamente';
  }
}

//fun��o para acessar hist�rico financeiro
function lancamentos($numero, $senha, $sip, $dataInicio, $dataFim)
{

  if ($var = '' . $sip . '/painel/api/getPayments.php?login=' . $numero . '&senha=' . $senha . '&data_inicial=' . $dataInicio . '&data_final=' . $dataFim . '') {
    return $resultado = get_data($var);
  } else {
    return 'Erro ao acessar hist�rico. Tente novamente';
  }
}

//remove acentua��o da mensagem do sms
function mensagem_sms($string)
{
  // matriz de entrada 36
  $what = array(
    'ä', 'ã', 'à', 'á', 'â',
    'ê', 'ë', 'è', 'é',
    'ï', 'ì', 'í',
    'ö', 'õ', 'ò', 'ó', 'ô',
    'ü', 'ù', 'ú', 'û',
    'À', 'Á', 'É', 'Í', 'Ó', 'Ú',
    'ñ', 'Ñ', 'ç', 'Ç',
    '"', '~', '^', 'ª', 'º'
  );

  // matriz de saída 36
  $by   = array(
    'a', 'a', 'a', 'a', 'a',
    'e', 'e', 'e', 'e',
    'i', 'i', 'i',
    'o', 'o', 'o', 'o', 'o',
    'u', 'u', 'u', 'u',
    'A', 'A', 'E', 'I', 'O', 'U',
    'n', 'n', 'c', 'C',
    '`', '', '', '', ''
  );

  $sms = str_replace($what, $by, $string);

  return $sms;
}

// Função para remover quebras de linha
function removerQuebrasDeLinha($texto)
{
  // Remove quebras de linha dos sistemas Windows (\r\n)
  $texto = preg_replace("/\r\n/", "", $texto);

  // Remove quebras de linha do sistema Unix/Linux (\n)
  $texto = preg_replace("/\n/", "", $texto);

  // Remove quebras de linha do sistema antigo Macintosh (\r)
  $texto = preg_replace("/\r/", "", $texto);

  // Remove quebras de linha Unicode (U+2028, U+2029)
  $texto = preg_replace("/\x{2028}|\x{2029}/u", "", $texto);

  return $texto;
}



//valida CPF
function validaCPF($cpf = null)
{

  // Verifica se um n�mero foi informado
  if (empty($cpf)) {
    return false;
  }

  // Elimina possivel mascara
  $cpf = preg_replace("/[^0-9]/", "", $cpf);
  $cpf = str_pad($cpf, 11, '0', STR_PAD_LEFT);

  // Verifica se o numero de digitos informados � igual a 11
  if (strlen($cpf) != 11) {
    return false;
  }
  // Verifica se nenhuma das sequ�ncias invalidas abaixo
  // foi digitada. Caso afirmativo, retorna falso
  else if (
    $cpf == '00000000000' ||
    $cpf == '11111111111' ||
    $cpf == '22222222222' ||
    $cpf == '33333333333' ||
    $cpf == '44444444444' ||
    $cpf == '55555555555' ||
    $cpf == '66666666666' ||
    $cpf == '77777777777' ||
    $cpf == '88888888888' ||
    $cpf == '99999999999'
  ) {
    return false;
    // Calcula os digitos verificadores para verificar se o
    // CPF � v�lido
  } else {

    for ($t = 9; $t < 11; $t++) {

      for ($d = 0, $c = 0; $c < $t; $c++) {
        $d += $cpf{
          $c} * (($t + 1) - $c);
      }
      $d = ((10 * $d) % 11) % 10;
      if ($cpf{
        $c} != $d) {
        return false;
      }
    }

    return true;
  }
}
//FIM //valida CPF

// VALIDAR CNPJ 
function validarCNPJ($cnpj)
{
  // Remove caracteres não numéricos
  $cnpj = preg_replace('/[^0-9]/', '', $cnpj);

  // Verifica se o CNPJ possui 14 dígitos
  if (strlen($cnpj) !== 14) {
    return false;
  }

  // Verifica se todos os dígitos são iguais, o que é inválido
  if (preg_match('/(\d)\1{13}/', $cnpj)) {
    return false;
  }

  // Calcula o primeiro dígito verificador
  $soma = 0;
  for ($i = 0; $i < 12; $i++) {
    $soma += $cnpj[$i] * (($i < 4) ? (5 - $i) : (13 - $i));
  }
  $resto = $soma % 11;
  $digito1 = ($resto < 2) ? 0 : 11 - $resto;

  // Calcula o segundo dígito verificador
  $soma = 0;
  for ($i = 0; $i < 13; $i++) {
    $soma += $cnpj[$i] * (($i < 5) ? (6 - $i) : (14 - $i));
  }
  $resto = $soma % 11;
  $digito2 = ($resto < 2) ? 0 : 11 - $resto;

  // Verifica se os dígitos verificadores calculados são iguais aos do CNPJ
  if ($digito1 == $cnpj[12] && $digito2 == $cnpj[13]) {
    return true;
  }

  return false;
}
// VALIDAR CNPJ FIM X


//VALIDAR CNPJ E CPF

class validar
{
  function replace($string)
  {
    return $string = str_replace("/", "", str_replace("-", "", str_replace(".", "", $string)));
  }

  function check_fake($string, $length)
  {
    for ($i = 0; $i <= 9; $i++) {
      $fake = str_pad("", $length, $i);
      if ($string === $fake)
        return (1);
    }
  }


  function cpf($cpf)
  {
    $cpf = $this->replace($cpf);
    $cpf = trim($cpf);

    if (empty($cpf) || strlen($cpf) != 11)
      return FALSE;
    else {
      if ($this->check_fake($cpf, 11))
        return FALSE;
      else {
        $sub_cpf = substr($cpf, 0, 9);
        for ($i = 0; $i <= 9; $i++) {
          $dv += ($sub_cpf[$i] * (10 - $i));
        }

        if ($dv == 0)
          return FALSE;
        $dv = 11 - ($dv % 11);
        if ($dv > 9)
          $dv = 0;
        if ($cpf[9] != $dv)
          return FALSE;

        $dv *= 2;
        for ($i = 0; $i <= 9; $i++) {
          $dv += ($sub_cpf[$i] * (11 - $i));
        }

        $dv = 11 - ($dv % 11);
        if ($dv > 9)
          $dv = 0;

        if ($cpf[10] != $dv)
          return FALSE;
        return TRUE;
      }
    }
  }



  function cnpj($cnpj)
  {
    $cnpj = $this->replace($cnpj);
    $cnpj = trim($cnpj);
    if (empty($cnpj) || strlen($cnpj) != 14)
      return FALSE;
    else {
      if ($this->check_fake($cnpj, 14))
        return FALSE;
      else {
        $rev_cnpj = strrev(substr($cnpj, 0, 12));
        for ($i = 0; $i <= 11; $i++) {
          $i == 0 ? $multiplier = 2 : $multiplier;
          $i == 8 ? $multiplier = 2 : $multiplier;
          $multiply = ($rev_cnpj[$i] * $multiplier);
          $sum = $sum + $multiply;
          $multiplier++;
        }
        $rest = $sum % 11;
        if ($rest == 0 || $rest == 1)
          $dv1 = 0;
        else
          $dv1 = 11 - $rest;

        $sub_cnpj = substr($cnpj, 0, 12);
        $rev_cnpj = strrev($sub_cnpj . $dv1);
        unset($sum);
        for ($i = 0; $i <= 12; $i++) {

          $i == 0 ? $multiplier = 2 : $multiplier;
          $i == 8 ? $multiplier = 2 : $multiplier;
          $multiply = ($rev_cnpj[$i] * $multiplier);
          $sum = $sum + $multiply;
          $multiplier++;
        }
        $rest = $sum % 11;
        if ($rest == 0 || $rest == 1)
          $dv2 = 0;
        else
          $dv2 = 11 - $rest;

        if ($dv1 == $cnpj[12] && $dv2 == $cnpj[13])
          return TRUE;
        else
          return FALSE;
      }
    }
  }
}

//limpa cpf/cnpj
function limpadoc($doc)
{
  $doc = $doc;
  $doc = str_replace('-', '', $doc);
  $doc = str_replace('/', '', $doc);
  $doc = str_replace('.', '', $doc);

  return $doc;
} //FIM //limpa cpf/cnpj

//fun��o para enviar email para o cliente
function envia_email_cliente($remetente_nome, $email, $nome, $assunto, $mensagem, $headers)
{

  //conecta ao banco de dados
  $conecta = @mysql_connect("localhost", "voipdobr_producao", "h2m,hcGu-s}_");
  $seleciona_db = @mysql_select_db("voipdobr_site", $conecta) or die("n�o foi possivel conectar ao banco de dados");
  //consulta config
  $sqlConf = mysql_query("SELECT * FROM config");
  $rowMeta = mysql_fetch_array($sqlConf);
  //

  if (!empty($email)) { //se destinatario diferente de vazio
    //verifica se o smtp esta ativo
    if ($rowMeta['ativar_smtp'] == 1) {

      //dispara email para o cliente
      if (enviarcomsmtp($rowMeta['servidor_smtp'], $rowMeta['porta_smtp'], $rowMeta['senha_smtp'], $rowMeta['usuario_smtp'], EMAILFINANCEIRO, $rowMeta['origem_smtp'], $remetente_nome, $email, $nome, $assunto, $mensagem)) {
        $enviado = "sim";
      } else {

        //dispara email para o cliente
        if (mail($email, $assunto, $mensagem, $headers, "-r" . EMAILFINANCEIRO))
          $enviado = "sim";
      }

      //se n�o estiver ativo envia por mail
    } else {

      if (mail($email, $assunto, $mensagem, $headers, "-r" . EMAILFINANCEIRO))
        $enviado = "sim";
    } // FIM //verifica se o smtp esta ativo
  } //FIM //se destinatario diferente de vazio

  if ($enviado)
    return true;
  else
    return false;
}
//FIM //fun��o para enviar email para o cliente

//fun��o para enviar varios emails
function envia_emails_adicionais($remetente_nome, $emails, $nome, $assunto, $mensagem, $headers)
{

  $enviado = '0';
  //conecta ao banco de dados
  $conecta = @mysql_connect("localhost", "voipdobr_producao", "h2m,hcGu-s}_");
  $seleciona_db = @mysql_select_db("voipdobr_site", $conecta) or die("n�o foi possivel conectar ao banco de dados");
  //consulta config
  $sqlConf = mysql_query("SELECT * FROM config");
  $rowMeta = mysql_fetch_array($sqlConf);
  //

  //dispara alerta para o cliente #emails adicionais
  $destinatarios = explode(',', $emails);
  foreach ($destinatarios as $to) { //foreach emails alerta
    $to = trim($to);

    if (!empty($to)) { //se destinatario diferente de vazio
      //se stmp estiver ativado
      if ($rowMeta['ativar_smtp'] == 1) {

        //dispara email para admin
        if (enviarcomsmtp($rowMeta['servidor_smtp'], $rowMeta['porta_smtp'], $rowMeta['senha_smtp'], $rowMeta['usuario_smtp'], EMAILFINANCEIRO, $rowMeta['origem_smtp'], $remetente_nome, $to, $nome, $assunto, $mensagem)) {
          $enviado = "sim";
        } else {

          //dispara alerta para o cliente #emails adicionais
          if (mail($to, $assunto, $mensagem, $headers, "-r" . EMAILFINANCEIRO))
            $enviado = "sim";
        }
      } //FIM //se stmp estiver ativado

      else { //envio normal

        //dispara email para admin
        if (mail($to, $assunto, $mensagem, $headers, "-r" . EMAILFINANCEIRO))
          $enviado = "sim";
      } //FIM //envio normal
    } //FIM //se destinatario diferente de vazio

  } //FIM //foreach emails alerta
  //FIM //dispara alerta para o cliente #emails adicionais


  if ($enviado)
    return true;
  else
    return false;
}
//FIM //fun��o para enviar varios emails

//funcao para enviar varios emails do crm
function envia_emails_crm($remetente_nome, $remetente_email, $emails, $nome, $assunto, $mensagem, $headers)
{

  $enviado = '0';
  //conecta ao banco de dados
  $conecta = @mysql_connect("localhost", "voipdobr_producao", "h2m,hcGu-s}_");
  @mysql_select_db("voipdobr_site", $conecta) or die("nao foi possivel conectar ao banco de dados");
  //consulta config
  $sqlConf = mysql_query("SELECT * FROM config");
  $rowMeta = mysql_fetch_array($sqlConf);
  //

  //dispara alerta para o cliente #emails adicionais
  $destinatarios = explode(',', $emails);
  foreach ($destinatarios as $to) { //foreach emails alerta
    $to = trim($to);

    if (!empty($to)) { //se destinatario diferente de vazio
      //se stmp estiver ativado
      if ($rowMeta['ativar_smtp'] == 1) {

        //dispara email para admin
        if (enviarcomsmtp($rowMeta['servidor_smtp'], $rowMeta['porta_smtp'], $rowMeta['senha_smtp'], $rowMeta['usuario_smtp'], $remetente_email, $rowMeta['origem_smtp'], $remetente_nome, $to, $nome, $assunto, $mensagem)) {
          $enviado = "sim";
        } else {

          //dispara alerta para o cliente #emails adicionais
          if (mail($to, $assunto, $mensagem, $headers, "-r" . $remetente_email))
            $enviado = "sim";
        }
      } //FIM //se stmp estiver ativado

      else { //envio normal

        //dispara email para admin
        if (mail($to, $assunto, $mensagem, $headers, "-r" . $remetente_email))
          $enviado = "sim";
      } //FIM //envio normal
    } //FIM //se destinatario diferente de vazio

  } //FIM //foreach emails alerta
  //FIM //dispara alerta para o cliente #emails adicionais


  if ($enviado)
    return true;
  else
    return false;
}
//FIM //funcao para enviar varios emails do crm


// Grava log dentro do crm
function log_crm($pagina, $cod_usuario, $nome_usuario, $cod_cli, $nome_cli, $acao, $ipPorta, $data, $hora, $antes, $depois)
{
  $relatorio = mysql_query("INSERT INTO log_crm SET cod_usuario='$cod_usuario', nome_usuario='$nome_usuario', cod_cli='$cod_cli', nome_cliente='$nome_cli', acao='$acao', ip='$ipPorta', data='$data', hora='$hora', antes='$antes', depois='$depois', pagina='$pagina'");

  if ($relatorio) {
    return true;
  } else {
    return false;
  }
}

function log_negocios($cod_negocio, $cod_cliente, $cod_cli, $cod_usuario, $nome_usuario, $nome_cliente, $acao, $nota, $atividade, $tipo, $status, $alerta_sistema, $alerta_sms, $alerta_email, $ipPorta, $data, $hora, $excluido, $dat_cad, $dat_update)
{
  $relatorio = mysql_query("INSERT INTO log_negocios_crm SET cod_negocio = '$cod_negocio', cod_cliente = '$cod_cliente', cod_cli = '$cod_cli', cod_usuario = '$cod_usuario', nome_usuario='$nome_usuario', nome_cliente='$nome_cliente', acao='$acao', nota ='$nota', atividade='$atividade', tipo='$tipo', status='$status', alerta_sistema='$alerta_sistema', alerta_sms='$alerta_sms', alerta_email = '$alerta_email', ip='$ipPorta', data='$data', hora='$hora', excluido='$excluido', dat_cad = '$dat_cad', dat_update='$dat_update'");

  if ($relatorio) {
    return true;
  } else {
    return false;
  }
}

function log_clientes_crm($cod_cliente, $cod_cli, $cod_usuario, $nome_usuario, $nome_cliente, $acao, $nota, $atividade, $tipo, $status, $alerta_sistema, $alerta_sms, $alerta_email, $ipPorta, $data, $hora, $excluido, $dat_cad, $dat_update)
{
  $relatorio = mysql_query("INSERT INTO log_clientes_crm SET cod_cliente = '$cod_cliente', cod_cli = '$cod_cli', cod_usuario = '$cod_usuario', nome_usuario='$nome_usuario', nome_cliente='$nome_cliente', acao='$acao', nota ='$nota', atividade='$atividade', tipo='$tipo', status='$status', alerta_sistema='$alerta_sistema', alerta_sms='$alerta_sms', alerta_email = '$alerta_email', ip='$ipPorta', data='$data', hora='$hora', excluido='$excluido', dat_cad = '$dat_cad', dat_update='$dat_update'");

  if ($relatorio) {
    return true;
  } else {
    return false;
  }
}
//FIM //

//grava relatorio de cliente next
function log_cliente($cod_usuario, $nome_usuario, $cod_cli, $nome_cli, $acao, $ip, $data, $hora, $retorno_api, $antes = '', $depois = '')
{
  $relatorio = mysql_query("INSERT INTO log_clientes SET cod_usuario='$cod_usuario', nome_usuario='$nome_usuario', cod_cli='$cod_cli', nome_cliente='$nome_cli', acao='$acao', ip='$ip', data='$data', hora='$hora', retorno_api='$retorno_api', antes='$antes', depois='$depois' ");

  if ($relatorio) {
    return true;
  } else {
    return false;
  }
}
//FIM //grava relatorio de cliente next

//grava log sistema financeiro
function log_acoes($cod_usuario, $nome_usuario, $acao, $ipPorta, $data, $hora, $conecta_finan)
{
  $relatorio = mysql_query("INSERT INTO log_acoes SET cod_usuario='$cod_usuario', nome_usuario='$nome_usuario', acao='$acao', ip='$ipPorta', data='$data', hora='$hora' ", $conecta_finan);

  if ($relatorio) {
    return true;
  } else {
    return 'nao gravou';
  }
}
//FIM //grava log sistema financeiro

//api via sms
function enviasms($usuario, $senha, $dados)
{
  $token = base64_encode($usuario . ":" . $senha);
  $data_string = json_encode($dados);

  $ch = curl_init("https://6drne.api.infobip.com/sms/1/text/single/");
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt(
    $ch,
    CURLOPT_HTTPHEADER,
    array(
      "Content-Type: application/json",
      "Authorization: Basic $token",
      "Content-Length: " . strlen($data_string)
    )
  );

  $result = curl_exec($ch); // requested response will be get from here
  $retorno = json_decode($result, true);

  return $retorno;
}
//FIM //api via sms

/////////////////////////////////////////////////// USANDO API DE ENVIO ///////////////////////////////////////////////

function enviaTokenAutenticacao($para, $sms)
{

  $para = str_replace("(", "", $para);
  $para = str_replace(")", "", $para);
  $para = str_replace("-", "", $para);
  $para = str_replace(".", "", $para);
  $para = str_replace(" ", "", $para);

  $cel = trim($para);
  $msg_sms = trim(utf8_decode($sms));
  $msg_sms = mensagem_sms($msg_sms);

  $curl = curl_init();
  curl_setopt_array($curl, [
    CURLOPT_PORT => "8433",
    CURLOPT_URL => "https://apihttp.disparopro.com.br:8433/mt?=",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "{\n\t\"numero\": \"$cel\",\n  \"servico\": \"otp\",\n  \"mensagem\": \"$msg_sms\",\n  \"parceiro_id\": \"5034e65a0c\",\n  \"codificacao\": \"0\"\n}",
    CURLOPT_HTTPHEADER => [
      "Authorization: Bearer 248b2fd4351302c774155546fc88dfc6fced8934",
      "Content-Type: application/json"
    ],
  ]);
  $response = curl_exec($curl);
  $err = curl_error($curl);
  curl_close($curl);
  if ($err) {
    return "cURL Error #:" . $err;
  } else {
    return $response;
  }
}

function envia_sms($para, $sms)
{

  $para = str_replace("(", "", $para);
  $para = str_replace(")", "", $para);
  $para = str_replace("-", "", $para);
  $para = str_replace(".", "", $para);
  $para = str_replace(" ", "", $para);

  $to = trim($para);
  $text_sms = trim(utf8_decode($sms));
  $text_sms = mensagem_sms($text_sms);

  $curl = curl_init();

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://apihttp.brasilfone.com.br:8434/mt",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => "[
		{
		  \"numero\": \"$to\",
		  \"servico\": \"short\",
		  \"mensagem\": \"$text_sms\",
		  \"codificacao\": \"0\"
		}
	  ]",
    CURLOPT_HTTPHEADER => [
      "authorization: Bearer 6eab03df703db90f6fae4849ef74990b59edc6ab",
      "content-type: application/json"
    ],
  ]);

  $response = curl_exec($curl);
  $retorno = json_decode($response, true);
  $err = curl_error($curl);
  curl_close($curl);

  /*if ($err) {
		echo "cURL Error #:" . $err;
	} else {
		print_r($retorno);
		echo "<br>";
		echo $retorno['detail'][0]['status'];
	}*/

  //if($retorno['detail'][0]['status']=="ACCEPTED") return true;
  //else return false;

  return $retorno;
}
///////////////////////////////////////// FIM API DE ENVIO //////////////////////////////////////////////////////////////

//api envia sms operadora supernova
function enviasms_supernova($dados)
{
  $data_string = json_encode($dados);

  $curl = curl_init();
  curl_setopt_array($curl, array(
    CURLOPT_URL => "http://apisms.supernovatelecom.com.br/bot/single-sms.php",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $data_string,
    CURLOPT_HTTPHEADER => array(
      "usuario: voipdobrasil",
      "chave: 513120",
      "content-type: application/json"
    ),
  ));

  $response = curl_exec($curl);
  $retorno = json_decode($response, true);
  $err = curl_error($curl);

  curl_close($curl);

  return $retorno;
}
//FIM //api envia sms operadora supernova

//destaque duas primeiras palavras da frase
function destacaPPfrase($string)
{
  $array = explode(" ", $string);
  $n_palavras = count($array);

  $frase .= "<b><u>" . $array[0] . " " . $array[1] . "</u></b> ";
  for ($i = 2; $i < $n_palavras; $i++) {
    $frase .= "$array[$i] ";
  }

  return $frase;
}
//FIM //destaque duas primeiras palavras da frase

// Fun��o para procura v�rias palavras em uma string
function procpalavras($frase, $palavras, $resultado = 0)
{
  foreach ($palavras as $key => $value) {
    $pos = strpos($frase, $value);
    if ($pos !== false) {
      $resultado = 1;
      break;
    }
  }
  return $resultado;
}
//fim // Fun��o para procura v�rias palavras em uma string

### apis para notas fiscais
//#abrir #pdf #xml
function abrirNota($api, $idNota)
{
  $curl = curl_init();
  curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.plugnotas.com.br/nfse/$api/$idNota",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
      "Content-Type: application/json",
      "x-api-key: 12436831-08ff-49bf-9790-af65e408fdcb"
    ),
  ));
  $response = curl_exec($curl);
  curl_close($curl);

  return $response;
}

//consultar dados da nota
function consultarNota($idNota)
{
  $curl = curl_init();
  curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.plugnotas.com.br/nfse/consultar/$idNota",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array(
      "Content-Type: application/json",
      "x-api-key: 12436831-08ff-49bf-9790-af65e408fdcb"
    ),
  ));
  $response = curl_exec($curl);
  $response = json_decode($response, true);
  curl_close($curl);

  return $response;
}

//emissao de notas
function emitirNota($dados)
{
  $curl = curl_init();
  $data_string = json_encode($dados);
  curl_setopt_array($curl, array(
    CURLOPT_URL => "https://api.plugnotas.com.br/nfse",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $data_string,
    CURLOPT_HTTPHEADER => array(
      "Content-Type: application/json",
      "x-api-key: 12436831-08ff-49bf-9790-af65e408fdcb"
    ),
  ));
  $response = curl_exec($curl);
  $response = json_decode($response, true);
  curl_close($curl);

  return $response;
}
### FIM //apis para notas fiscais

//soma datas com resultado em dias
function soma_data_dias($data_inicial, $data_final)
{
  // Usa a função strtotime() e pega o timestamp das duas datas:
  $time_inicial = strtotime($data_inicial);
  $time_final = strtotime($data_final);
  // Calcula a diferença de segundos entre as duas datas:
  $diferenca = $time_final - $time_inicial; // 19522800 segundos
  // Calcula a diferença de dias
  $dias = (int)floor($diferenca / (60 * 60 * 24)); // 225 dias

  return $dias;
} //FIM //soma datas com resultado em dias

//intervalo de datas
function separa_datas_consulta($quantidade, $data_inicial, $data_final)
{

  $data_dias = soma_data_dias($data_inicial, $data_final);

  $intervalo = $data_dias / $quantidade;
  $dia_final = date("d");
  $x = 0;

  if ($dia_final <= 6) { //data fixa
    $data_busca_array[] = $data_inicial;
    $data_busca_array[] = $data_final;

    foreach ($data_busca_array as $data_busca) { //foreach datas
      $array[$x] = $data_busca;
      $x++;
    } //FIM //foreach datas

  } else { //data programada

    for ($i = $intervalo; $i <= $data_dias; $i += $intervalo) { //for datas
      $numero_arredondado = round($i);
      $data_busca = date("Y-m-d", mktime(0, 0, 0, date("m"), $numero_arredondado, date("Y")));
      $array[$x] = $data_busca;
      $x++;
    } //FIM //for datas

  } //FIM //data programada

  return $array;
} //FIM //intervalo de datas

//consulta geolocalização pelo ip
function geolocalizacao($ip)
{
  $campos = "status,message,regionName,city,zip,lat,lon,asname,reverse,query";
  $url = "http://ip-api.com/json/$ip?fields=$campos";
  $ch = curl_init("$url");
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));

  $retorno = curl_exec($ch);
  curl_close($ch);
  $retorno = json_decode($retorno, true);

  return $retorno;
}
//FIM //consulta geolocalização pelo ip

//pega numeros aleatorios para a bina
function randbina($sip)
{
  if ($sip == 'voipdobrasil4.net.br' || $sip == 'voipdobrasil2.net.br') {
    $input = array("3330382147", "3330382148", "3330382156", "3330382157", "3330382158");
  } else if ($sip == 'voipdobrasil3.net.br') {
    $input = array("9921994455");
  } else {
    $input = array("");
  }

  $rand_keys = array_rand($input);
  $numero_bina = $input[$rand_keys];
  return $numero_bina;
}
//FIM //pega numeros aleatorios para a bina

//api de envio simplechat para whatsapp
function enviarWPP($dados)
{
  $token = "5504ed2168e14722bead5974ec3d4961";
  $curl = curl_init();
  curl_setopt_array($curl, array(
    CURLOPT_URL => "https://simplechat.com.br/api/send/$token",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $dados,
    CURLOPT_HTTPHEADER => array(
      "cache-control: no-cache",
      "content-type: multipart/form-data"
    ),
  ));
  $response = curl_exec($curl);
  curl_close($curl);

  return $response;
}
//FIM //api de envio simplechat para whatsapp

//para detectar se é injection
function detecta_injection($sql)
{
  $inject = 0;
  $txt = strtolower($sql);

  $badword = array("select ", "insert ", "update ", "delete ", "drop ", "destroy ", "create ", "show ", "truncate ", "union ", "' or 'a'='a", "1=1", "1 = 1", "1=2", "1 = 2", ";--", "; --", "b' or ' 1='", "' or '1", "' or '|", "' or ''='", "105 or 1=1");
  for ($i = 0; $i < sizeof($badword); $i++) {
    if (substr_count($txt, $badword[$i]) != 0) {
      $inject = 1;
    }
  }

  return ($inject);
}
//FIM //para detectar se é injection

//para impedir um injection
function remove_injection($sql)
{
  $sql = str_replace(" ", "-", $sql);
  $sql = trim($sql);
  $sql = strip_tags($sql);
  $sql = (get_magic_quotes_gpc()) ? $sql : addslashes($sql);
  $sql = htmlspecialchars($sql, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");

  return $sql;
}
//FIM //para impedir um injection

function escapar($html)
{
  return htmlspecialchars($html, ENT_QUOTES | ENT_SUBSTITUTE, "UTF-8");
}

function csrf()
{
  if (empty($_SESSION['csrf'])) {
    if (function_exists('random_bytes')) {
      $_SESSION['csrf'] = bin2hex(random_bytes(32));
    } else if (function_exists('mcrypt_create_iv')) {
      $_SESSION['csrf'] = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
    } else {
      $_SESSION['csrf'] = bin2hex(openssl_random_pseudo_bytes(32));
    }
  }
}

//verifica ip e bloqueia
function verificaIP($ip)
{
  $curl = curl_init();
  curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.iplocation.net/?ip=' . $ip,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => array(
      'Content-Type: application/json'
    ),
  ));
  $response = curl_exec($curl);
  curl_close($curl);
  $retorno = json_decode($response, true);

  //BR = Brasil | US = Estados Unidos | AR = Argentina | PE = Peru | CL = Chile | CO = Colombia | UY = Uruguai | PY = Paraguai | BO = Bolivia | CA = Canada | GB = Reino Unido da Grã-Bretanha e Irlanda do Norte = Inglaterra | PT = Portgual | IT = Italia
  $paises_liberados = array(
    "BR", "US", "AR", "PE", "CL", "CO", "UY", "PY", "BO", "CA", "GB", "PT", "IT"
  );

  // Lista de ips liberados
  $ipsLiberados = array(
    "103.140.18.42", "206.81.15.39", "34.197.173.153", "147.75.40.150", "89.166.248.104", "79.144.191.154", "179.156.121.253", "81.247.189.212", "37.120.236.196"
  );

  if (in_array($retorno['country_code2'], $paises_liberados) || in_array($ip, $ipsLiberados)) {
    return true; //se pais estiver no array é liberado
  } else {
    $portaLogica = $_SERVER['REMOTE_PORT'];
    //registra o log dos ips bloqueados
    mysql_query("INSERT INTO log_ips SET ip='" . $retorno['ip'] . "', porta_logica='$portaLogica', ip_number='" . $retorno['ip_number'] . "', ip_version='" . $retorno['ip_version'] . "', country_name='" . $retorno['country_name'] . "', country_code2='" . $retorno['country_code2'] . "', isp='" . $retorno['isp'] . "', response_code='" . $retorno['response_code'] . "', response_message='" . $retorno['response_message'] . "' ");
    return "bloquear_ip"; //qualquer outro pais é bloqueado
  }
}
//FIM //verifica ip e bloqueia