Ir para conteúdo
  • Cadastre-se

Hook para remover suspensão após abertura de ticket


Posts Recomendados

Pessoal,

Hoje eu enchi o saco do Carlo para fazer um um Hook bem bacana p/ whmcs, foram várias horas de testes até que a condição atual do script parece estar 100% funcional.

Objetivo do script:

No meu caso, estou utilizando em conjunto com um departamento de ticket para receber comprovantes de pagamento.

Como alguns clientes tem dificuldade de acessar o painel de controle, eu habilitei este departamento para abrir ticket automaticamente com o envio de emails.

E vamos supor que o site do cliente esteja suspenso, e mesmo sendo um cliente inadimplente, você crie a facilidade do serviço ser reativado automaticamente com a abertura do ticket.

O cliente precisa mencionar no ticket o domínio que está suspenso para que o script faça uma verificação e identifique o domínio do cliente e faça a remoção da suspensão.

Exemplo:

Titulo do ticket = Irrelevante

Texto do ticket:

Cara, pelo amor de deus, esqueci de fazer o pagamento, preciso que meu site volte a funcionar quanto antes, estou enviando o comprovante do deposito feito na sua conta, o site é meusite.com.br

Assim que o cliente abrir o ticket, o hook vai funcionar e vai remover a suspensão do cliente e o mais interessante "temporariamente"

Sendo assim, acredito que clientes que fazem deposito bancario, podem simplesmente enviar um email em vez de ficar no anonimato por ter dificuldade de acessar o painel de cliente.

Vamos a instalação:

Salve este codigo em PHP com o nome "liberarConta.php"

<?php

function liberarConta($vars) {

if($vars['deptid'] == '1'){

/*
* 1: Qualquer um que enviar o e-mail com um domínio irá ser liberado.
* 0: O domínio só será liberado se o cliente for realmente dono do domínio
*/
$liberar = '1';

function pegaUrl($texto){

$pattern = '/[a-zA-Z0-9\.-]*\.[a-z]{2,}/';
preg_match_all($pattern, $texto, $url);

foreach($url[0] as $key => $value){
if(checkdnsrr($value))
$retorno[] = $value;
}

return $retorno;

}

$dominio = pegaUrl($vars['message']);
$userid = $vars['userid'];

$t = count($dominio);
if($t > 0){

$c = 1;
$sql = '';

foreach($dominio as $key){
if($t == $c)
$sql .= "domain LIKE '%". $key ."%'";
else
$sql .= "domain LIKE '%". $key ."%' OR ";
$c++;
}

include("../../dbconnect.php");

if($liberar == 0)
$sqlComando = "SELECT id FROM tblhosting WHERE userid='".$userid."' AND (" . $sql . ")";
else if($liberar == 1)
$sqlComando = "SELECT id FROM tblhosting WHERE " . $sql;

$query_dominios = mysql_query($sqlComando) or die (mysql_error());
while($query_dominios_while = mysql_fetch_assoc($query_dominios)){

$url = "http://seusite/whmcs/includes/api.php"; # URL to WHMCS API file
$username = "seu login do whmcs"; # Admin username goes here
$password = "sua senha do whmcs"; # Admin password goes here

$postfields["username"] = $username;
$postfields["password"] = md5($password);
$postfields["action"] = "moduleunsuspend"; #action performed by the API:Functions
$postfields["accountid"] = $query_dominios_while['id'];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$data = curl_exec($ch);
curl_close($ch);

$data = explode(";",$data);
foreach ($data AS $temp) {
$temp = explode("=",$temp);
$results[$temp[0]] = $temp[1];
}

if ($results["result"]=="success") {
function somar_dias($data, $dias) {
$data = explode("-", $data);
$resultado = date("Y-m-d", mktime(0, 0, 0, $data[1], $data[2]+$dias, $data[0]));
return $resultado;
}
mysql_query("UPDATE tblhosting SET overideautosuspend='on', overidesuspenduntil='".somar_dias(date("Y-m-d"), 5)."'") or die (mysql_error());
//mail('[email protected]', 'Debug', 'Sucesso - '.$postfields["accountid"]);
} else {
$erro = "The following error occured: ".$results["message"];
//mail('[email protected]', 'Debug', $erro);
}

}

}

}

}

add_hook("TicketOpen", 1, "liberarConta");

?>[/PHP]

Você deve configurar algumas linhas no script:

Linha 5 = Coloque o ID do departamento que vai aceitar os emails para remover a suspensão da conta (estou utilizando o departamento com ID 1)

[PHP] if($vars['deptid'] == '1'){[/PHP]

Linha 11 = Utilize 0 para receber solicitação de desbloqueio de clientes cadastrados ou 1 para qualquer ticket aberto

[PHP] $liberar = '1';[/PHP]

Linhas 54, 55 e 56 = A url da API do whmcs, Login e senha do whmcs

[PHP] $url = "http://seusite/whmcs/includes/api.php"; # URL to WHMCS API file
$username = "seu login do whmcs"; # Admin username goes here
$password = "sua senha do whmcs"; # Admin password goes here
[/PHP]

Linha 84 = Definir o numero de dias para remoção temporaria da suspensão. (Está marcado com 5 dias)

[PHP] mysql_query("UPDATE tblhosting SET overideautosuspend='on', overidesuspenduntil='".somar_dias(date("Y-m-d"), 5)."'") or die (mysql_error());[/PHP]

Linhas 85 e 88 = Email para debug

[PHP] //mail('[email protected]', 'Debug', 'Sucesso - '.$postfields["accountid"]);[/PHP]

[PHP] //mail('[email protected]', 'Debug', $erro);[/PHP]

Depois envie o arquivo para:

Então teste para verificar se está tudo ok

Bom, como foi o Carlo que desenvolveu o script, peço que tire o escorpião do bolso e faça uma doação p/ ele :D

Como o codigo ta aberto, se alguém souber de alguma complementação p/ melhorá-lo, acho que vai ajudar.

Segue o link dele: (aceita pagseguro, paypal e Moip)

Mdulo MoIP Pagamento Direto com Retorno Automtico Grátis.

Editado por chuvadenovembro
AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link para o comentário
Compartilhar em outros sites

Caramba!!! Parabéns aos dois... Implementação fantástica... Tenho certeza que ajudará muito à todos!

Muito Obrigado por compartilharem. Farei os testes e implementarei aqui e assim que possível farei a doação para ele!

Tenho uma pequena sugestão: -Que tal definir as variáveis no começo do arquivo para ficar mais fácil para editar os parâmetros e depois utilizar essas variáveis dentro do arquivo?

Valeu!

Editado por McGuyver
Link para o comentário
Compartilhar em outros sites

Obrigado por compartilhar...

Como entro em contato com o Carlo ?

Então Rhuan,

Ele é usuário que do forum, fez modulos do pagseguro, moip, moip e autologin, acredito que em breve deve ver este tópico e passar o contato p/ tu.

Caramba!!! Parabéns aos dois... Implementação fantástica... Tenho certeza que ajudará muito à todos!

Muito Obrigado por compartilharem. Farei os testes e implementarei aqui e assim que possível farei a doação para ele!

Tenho uma pequena sugestão: -Que tal definir as variáveis no começo do arquivo para ficar mais fácil para editar os parâmetros e depois utilizar essas variáveis dentro do arquivo?

Valeu!

Logico que pensei nisso também McGuyver, mas acho que ao terminar o código depois de diversos erros e acertos, ele preferiu não arriscar hauauahuahua

Em alguns testes que eu fiz, o script mudava drasticamente o comportamento do whmcs, em dois dos casos, o operador de suporte logava, e tinha acesso ao full admin, em outro, os emails que o cron de converter email em ticket não era capaz de remove-los e a cada rodada do cron, novos tickets eram criados heheheheh

Com este funcional, mesmo sem ter os parametros ajustaveis no topo do script, funciona 100% sem apresentar nenhuma anomalia (pelo menos até onde testei :P ) mas eu testei bastante e não detectei nenhum problema.

Assim que fizer os testes comente novamente p/ dar o veredito final sobre o funcionamento do script :P

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link para o comentário
Compartilhar em outros sites

Obrigado por compartilhar...

Como entro em contato com o Carlo ?

msn: [email protected]

Ou via MP :D

Caramba!!! Parabéns aos dois... Implementação fantástica... Tenho certeza que ajudará muito à todos!

Muito Obrigado por compartilharem. Farei os testes e implementarei aqui e assim que possível farei a doação para ele!

Tenho uma pequena sugestão: -Que tal definir as variáveis no começo do arquivo para ficar mais fácil para editar os parâmetros e depois utilizar essas variáveis dentro do arquivo?

Valeu!

Vou arrumar as variaveis pra facilitar pro pessoal :D

Link para o comentário
Compartilhar em outros sites

Eu tenho o habito de postar alguns tutoriais ou dicas nos foruns principalmente p/ poder utilizar no futuro, p/ mim é como armazenar nas nuvens hehehehe

Hoje não foi diferente, precisei utilizar este hook (pois não tinha ele mais no meu whmcs) e recorri ao forum.

:)

AtarWeb.com.br • Hospedagem de Site + SSL Grátis
█ Revenda de Hospedagem DirectAdmin SSD + SSL Grátis
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?