db()->getRegistros(); $retorno_cliente = "{$data['reg_uniqueid']}|{$data['reg_fone']}|{$data['id']}|"; foreach ($retorno as $key => $value) { if (in_array($key, $params)) { $registros++; $retorno_cliente .= sprintf("%s:%s", strtoupper(str_replace("_", " ", $key)), strtoupper(str_replace("|", "", $value))); if (count($params) > $registros) { $retorno_cliente .= "|"; } } } $this->db()->setRegistros(array('retorno_cliente' => $retorno_cliente)); } /** * Converte um CPF ou CNPJ com marcara referente a cada modelo. * * @param string $string * @return boolean|string */ protected function mask_cpf_cnpj($string) { if (!empty($string)) { if (strlen($string) == 11) { $mask = "%s%s%s.%s%s%s.%s%s%s-%s%s"; } elseif (strlen($string) == 14) { $mask = "%s%s.%s%s%s.%s%s%s/%s%s%s%s-%s%s"; } return vsprintf($mask, str_split($string)); } else { return false; } } /** * Retorna telefone com o (DDD)Numero de acordo com o parametro passado caso nao possua DDD sera o padrao da central. * @param string $telefone * @return array */ protected function mask_phone_tel($telefone) { $retorno = array('telefone' => '', 'type' => ''); if (strlen($telefone) == 11) { $numero = substr($telefone, 2, 10); $ddd = $this->db()->getDDD(); $telefone = "({$ddd})" . $numero; $retorno['telefone'] = $telefone; $retorno['type'] = 'celular'; } else if (strlen($telefone) == 12) { $ddd = substr($telefone, 1, 2); $numero = substr($telefone, 3, 10); $telefone = sprintf("(%s)%s", $ddd, $numero); $retorno['telefone'] = $telefone; $retorno['type'] = 'telefone'; } else if (strlen($telefone) == 13) { $ddd = substr($telefone, 2, 2); $numero = substr($telefone, 4, 10); $telefone = "(" . $ddd . ")" . $numero; $retorno['telefone'] = $telefone; $retorno['type'] = 'celular'; } else { return null; } return $retorno; } /** * Verifica se todos os parametros passados foram completados. * * @param array $args * @return true|false */ protected function getArgs($args) { foreach ($args as $value) { if (!$value) { return false; } } return true; } /** * Verifica a diferenca em dias entre a data de entrada e a data atual. * * @param type $dateParam * @return type */ public function dateDiff($dateParam) { $dateIni = strtotime(date('Y-m-d')); if (strstr($dateParam, "/")) { $dateParam = date(strtotime(str_replace('/', '-', $dateParam))); } else { $dateParam = date(strtotime($dateParam)); } $diff = ($dateIni - $dateParam); $days = (int) floor($diff / (60 * 60 * 24)); return $days; } /** * Realiza a conversao de datas no formato brasileiro para a Defualt. * @param string $data * @return string|boolean */ public function convertDateDefault($data) { if ($data) { $data = explode('/', $data); return "{$data[2]}-{$data[1]}-{$data[0]}"; } return false; } /** * Adiciona mascara no telefone para realizar a consulta * * @param type $value * @return boolean */ protected function phoneMask($value) { if (!empty($value)) { if (strlen($value) == 10) { $mask = '(%s%s)%s%s%s%s-%s%s%s%s'; } elseif (strlen($value) == 11) { $mask = '(%s%s)%s%s%s%s%s-%s%s%s%s'; } return vsprintf($mask, str_split($value)); } else { return false; } } ############################################################################ ######## CONFIGURACAO DE EMAIL ######## ############################################################################ /** * Inicia a instanciacao da Classe para envio de Email * @param string $email * @param string $password * @param string $subject */ public function SimpleMail($email, $password, $subject) { $this->mail = new SimpleMail($email, $password, $subject); $this->log->debug("Instanciacao SimpleMail : " . ($this->mail ? "SUCCESS" : "FAIL"), debug_backtrace()); } /** * Configura o servidor de Envio dos Emails. * @param string $host * @param string|int $port * @param string $title * @return boolean */ public function confSMTP($host, $port, $title, $smtpAuth = true, $smtpSecure = 'TLS', $charset = 'UTF8') { $this->log->debug("Configuracao SMTP", debug_backtrace()); if ($this->mail) { $this->mail->config($host, $port, $title, $smtpAuth, $smtpSecure, $charset); } else { return false; } } ######################################################################## ## FUNCOES IMPORTANTES ## ######################################################################## /** * Instancia um objeto de Logger. * * @param Logger $log */ protected function setLog($log = false) { if (!$this->log) { $this->log = new Logger('integracao', $log); } } /** * Retorna o objeto de Log. * @return string */ public function log() { return $this->log; } /** * Instancia um objeto de AGI para se conectar com as informações do Asterisk. * * @return AGI */ public function agi() { if (!$this->agi) { $data = $this->db()->getAuthAgi(); $config = array(); $config['phpagi']['error_handler'] = self::AGI_ERROR_HANDLER; $config['asmanager']['server'] = $data['host_sck']; $config['asmanager']['port'] = $data['porta_sck']; $config['asmanager']['username'] = $data['usuario_sck']; $config['asmanager']['secret'] = $data['senha_sck']; $agi = new AGI('phpagi.conf', $config); $this->agi = $agi; return $agi; } return $this->agi; } private function readAgiVariable() { ob_implicit_flush(true); set_time_limit(6); $in = fopen("php://stdin", "r"); $input = str_replace("\n", "", fgets($in, 4096)); fclose($in); $this->log->debug("Reading: " . $input); return $input; } public function getAgiVariable($variable = null) { $this->log->debug("Executing...", debug_backtrace()); while ($env = $this->readAgiVariable()) { $s = explode(": ", $env); $agi[str_replace("agi_", "", $s[0])] = trim($s[1]); $this->log->debug("Data: " . print_r($agi, true), debug_backtrace()); if (($env == "") || ($env == "\n")) { break; } } $this->log->debug("Reading: " . print_r($agi, true)); if (!$variable || $agi[$variable]) { return !$variable ? $agi : $agi[$variable]; } return false; } /** * Instancia um objeto de IntegracaoDataBase para se conectar com dados do * Banco de dados e credenciais do Manager. * * @return IntegracaoDataBase */ public function db() { if (!$this->db) { $db = new IntegracaoDataBase(); $this->db = $db; } return $this->db; } protected function audioError() { $this->log->debug('Audio de error'); $exten = $this->db()->getAnuncio(); $this->log->error('Encaminhando para áudio alternativo de Erros', debug_backtrace()); $this->agi()->exec_goto($exten); exit(); } }