chuvadenovembro Postado Julho 28, 2011 Compartilhar Postado Julho 28, 2011 (editado) 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: http://seusite/whmcs/includes/hooks/ 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 Julho 29, 2011 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 More sharing options...
chuvadenovembro Postado Julho 29, 2011 Autor Compartilhar Postado Julho 29, 2011 Tópico atualizado :) █ 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 More sharing options...
Rhuan Postado Julho 29, 2011 Compartilhar Postado Julho 29, 2011 Obrigado por compartilhar... Como entro em contato com o Carlo ? Link para o comentário Compartilhar em outros sites More sharing options...
McGuyver Postado Julho 29, 2011 Compartilhar Postado Julho 29, 2011 (editado) 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 Julho 29, 2011 por McGuyver Link para o comentário Compartilhar em outros sites More sharing options...
chuvadenovembro Postado Julho 30, 2011 Autor Compartilhar Postado Julho 30, 2011 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 More sharing options...
Carlo Schneider Postado Julho 30, 2011 Compartilhar Postado Julho 30, 2011 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 More sharing options...
Carlo Schneider Postado Julho 30, 2011 Compartilhar Postado Julho 30, 2011 Só pra lembrar, acho que o Chuva não comentou, mas é preciso utilizar o cron que transforma e-mails em ticket, já que o sistema funciona a partir do ticket criado. :D Link para o comentário Compartilhar em outros sites More sharing options...
chuvadenovembro Postado Março 2, 2012 Autor Compartilhar Postado Março 2, 2012 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 More sharing options...
ronnysantana Postado Março 8, 2012 Compartilhar Postado Março 8, 2012 Seria interessante o código identificar anexo, seria possível? Acho que ficaria interessante Link para o comentário Compartilhar em outros sites More sharing options...
Visitante Postado Outubro 8, 2012 Compartilhar Postado Outubro 8, 2012 Alguém está utilizando na 5.1.2? Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados