Boas-vindas ao Power Pixel

Junte-se a comunidade! Crie o seu próprio conteúdo, e faça amizades.EntrarCriar uma conta

Sistema de warn e ban automático

+4
DeeW.
[Dark]Doki-.
Stark'
waghcwb
8 participantes

waghcwb waghcwb  • Qua 24 Dez 2014 - 14:39

Sistema de warn e ban automático Empty Sistema de warn e ban automático Qua 24 Dez 2014 - 14:39

Reputação da mensagem: 100% (1 votos)
Então galera, vou compartilhar um sisteminha que fiz para meu fórum aqui com vocês. Não vou adaptar para outros fóruns muito cedo.

Mas vou deixar o código para estudos (que aliás, foi feito na pressa, então não está nada otimizado, só é funcional)

Espero que seja útil para alguém.

Código:
;$(function() {
   
   var level = _userdata["user_level"];
   
   if(level === 1 || level === 2){
      
      $('.warn').each(function() {
         
         var oThis = $(this);
         
         if(oThis.data('hidden')) {
            oThis.parents('.post').css({
               opacity: '.3'
            });
         };
         
      });
      
      var warn = '<a class="give_warn" href="#warn"><span class="post_controls">Warn</span></a>';

      $('.post-options').prepend(warn);

      var panel =
         '<div class="warn-panel">' +
         '   Quantos avisos deseja aplicar?' +
         '   <div style="overflow:hidden;">' +
         '   <div class="warn-opt">' +
         '      1 <input type="radio" name="warn" checked="checked" value="1">' +
         '   </div>' +
         '   <div class="warn-opt">' +
         '      2 <input type="radio" name="warn" value="2">' +
         '   </div>' +
         '   <div class="warn-opt">' +
         '      3 <input type="radio" name="warn" value="3">' +
         '   </div>' +
         '   <div class="warn-opt" style="float: right;margin-top:2em;margin-right:4.1em;">' +
         '      <button class="confirm-warn">Confirmar</button>' +
         '   </div>' +
         '   </div>' +
         '</div>';
         
      $('.give_warn').after(panel).click(function(event) {
         
         event.preventDefault();
         
         $('.warn-panel').fadeToggle();
         
         

      });
      
      $('.confirm-warn').click(function() {

         var actual = $(this).parents('.postmain').find('.entry-content div.clear').prev('div').text();
         var newMessage = actual + '<div class="warn" data-hidden="true">Usuário alertado por flood.</div>';
         var id = $(this).parents('.post').find('a:first').attr('name');
         var userid = $(this).parents('.post').find('.author a[href*="/u"]').attr('href').split('/u')[1];
         var message1 = '[center][b]Avisos 1/3[/b][/center][img]http://hitskin.com/themes/17/42/99/i_icon_minicat.gif[/img]';
         var message2 = '[center][b]Avisos 2/3[/b][/center][img]http://hitskin.com/themes/17/42/99/i_icon_minicat.gif[/img][img]http://hitskin.com/themes/17/42/99/i_icon_minicat.gif[/img]';
         var message3 = '[center][b]Avisos 3/3[/b][/center][img]http://hitskin.com/themes/17/42/99/i_icon_minicat.gif[/img][img]http://hitskin.com/themes/17/42/99/i_icon_minicat.gif[/img][img]http://hitskin.com/themes/17/42/99/i_icon_minicat.gif[/img][center][b][color=#ac0000]Banido[/color][/b][/center]';
         var user = $(this).parents('.post').find('.author a[href*="/u"]').text();
         var warnval = $(this).parents('.warn-panel').find('[name="warn"]:checked').val();
         var tid = $('[name="tid"]').val();

         if(warnval == '3') {
            banUser(userid, tid, user);
         }
         else if(warnval == '2') {
            setWarn(id, newMessage, userid, message2, user);
         }
         else {
            setWarn(id, newMessage, userid, message1, user);
         }
         
         $('.warn-panel').fadeToggle();   

      });
      
   }
   else {
      
      $('.warn').each(function() {
         
         var oThis = $(this);
         
         if(oThis.data('hidden')) {
            oThis.parents('.post').remove();
         };
         
      });
   }
});

function setWarn(id, newMessage, userid, message, user) {
   
   $.post('/post?mode=editpost', {
      p: id,
      message: newMessage,
      post: 1
   }).success(function() {
      var tid = $('[name="tid"]').val();
      update(userid, 'profile_field_2_3', 2, message, tid, user, id);

   }).error(function() {
      alert("Algum erro ocorreu, contate o administrador.");
   });
}


function update(USER_ID, profile_field, field_ID, field_value, TID, user, id) {

   $.post('/ajax_profile.forum?jsoncallback=?', {
      id: field_ID,
      user: USER_ID,
      active: '1',
      content: '[["' + profile_field + '", "' + field_value + '"]]',
      tid: TID
   },
       
   function(data){
      var today = getDate();
      var message =
         '[b]Log de eventos[/b]' +
         '[hr]\n' +
         '[b]Tópico:[/b] ' + location.href + '#' + id + '\n' +
         '[b]Data:[/b] ' + today + '\n' +
         '[b]Usuário:[/b] ' + user;
      
      postLog(user, message, today, user, id);

   }, "json").fail(function() {
      console.error("Error: ajax_profile" + USER_ID);
   });

    return false;
}

function postLog(mod, message, date, user, id) {

   $.post('/post?', {
      mode: 'newtopic',
      f: '11',
      lt: '0',
      subject: '[ Warn ] ' + mod + ' [ ' + date + ' ]',
      message: message,
      post: 1
   }).done(function(){
      location.href = location.href + '#' + id;
      location.reload();
   }).fail(function(){
      alert("Algum erro ocorreu, tente novamente.");
   });

}

function banUser(id, tid, user) {
   var agree = confirm("Atenção!!\n\nConfirma que deseja banir o usuário " + user + '?');
   var date = getDate();
   if(agree){
      $.post('/modcp?mode=ban&user_id=' + id + '&tid=' + tid, {
         ban_user_date: 30,
         ban_user_reason: 'Usuário flooder - Alcançou o número máximo de 3 avisos.',
         confirm: 1
      }).success(function() {
         alert("O usuário " + user + " foi banido com sucesso.");
         $.post('/post?', {
            mode: 'newtopic',
            f: '12',
            lt: '0',
            subject: '[ Ban ] ' + user + ' [ ' + date + ' ]',
            message: '[b]Log de banimento[/b][hr][b]Usuário:[/b]' + user + '\n[b]Data:[/b] ' + date,
            post: 1
         }).done(function(){
            location.reload();
         }).fail(function(){
            alert("Algum erro ocorreu, tente novamente.");
         });
      });
   }
   else {
      alert("Você cancelou o ban");
   }
}

function getDate() {
      var today = new Date();
      var dd = today.getDate();
      var mm = today.getMonth()+1;
      var yyyy = today.getFullYear();

      if(dd<10) {
         dd='0'+dd
      }
      
      if(mm<10) {
         mm='0'+mm
      }

      return today = dd+'/'+mm+'/'+yyyy;
}


Tem muito (MUITO mesmo) o que melhorar no código, mas já é funcional, talvez seja útil para alguém santa

Stark' Stark'  • Qua 24 Dez 2014 - 15:52

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qua 24 Dez 2014 - 15:52

Desculpe a pergunta, não entendo mais de programação. Isso é JS?

waghcwb waghcwb  • Qua 24 Dez 2014 - 17:07

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qua 24 Dez 2014 - 17:07

Sim, isso é um código Javascript amigo.

[Dark]Doki-. [Dark]Doki-.  • Qua 24 Dez 2014 - 20:54

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qua 24 Dez 2014 - 20:54

Não mexo mais com forums, porém pelo que vi o código parece ser muito bom.
Parabéns wagh!

DeeW. DeeW.  • Qua 24 Dez 2014 - 22:22

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qua 24 Dez 2014 - 22:22

Bem fácil de configurar, mas apenas uma perguntinha! qual o endereço de teu fórum?

waghcwb waghcwb  • Qui 25 Dez 2014 - 14:12

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qui 25 Dez 2014 - 14:12

Faz muito tempo que não mexo com nada lá, só voltei que a galera que ta cuidando do fórum (até minha volta) reclamou que o chat havia parado de funcionar. Então peguei e instalei uma skin aqui da BS (acredito que inclusive seja sua), e fiz alguns sisteminhas básicos para usar lá.

Mas em breve quero voltar a ativa e ai vou fazer minha própria skin denovo (o fórum tinha uma exclusiva, mas com minha saida outros admins sairam também e preferiram tirar a skin), e voltar a fazer códigos em .lua Very Happy

Tem muito o que arrumar, acabar com os floods que rolaram lá e tal. Mas isso é com o tempo.

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

NandoTDB10 NandoTDB10  • Sex 20 Fev 2015 - 21:21

Sonic_BR Sonic_BR  • Qua 25 Fev 2015 - 12:36

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qua 25 Fev 2015 - 12:36

O sistema parece ser bem útil, mas não funciona. Clico em Confirmar e nada acontece (acho que era pra abrir uma janela).

Waghcwb, como corrigimos isso? É meio frustrante ver um script que parece ser útil e não funcionar, porém o criador não dar suporte algum.

waghcwb waghcwb  • Qua 25 Fev 2015 - 12:57

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Qua 25 Fev 2015 - 12:57

[Tens de ter uma conta e sessão iniciada para poderes visualizar este link],

Talvez seja por isso que eu postei na área de exemplo de códigos e não nos tutoriais, não acha? Como já falei antes, vou repetir agora. Assim que sobrar tempo eu farei um tutorial completo com o código funcional para outros fóruns, ele funciona e bem para os propósitos para o qual foi criado.

Então seja paciente.

Detectedxx Detectedxx  • Dom 12 Abr 2015 - 21:37

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Dom 12 Abr 2015 - 21:37

Valeu cara, facilitou muito mais meu trabalho, grato!

virus virus  • Dom 24 Set 2017 - 4:56

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático Dom 24 Set 2017 - 4:56

waghcwb escreveu:Sim, isso é um código Javascript amigo.
adapta pf '-' ajudaria mt kk

Conteúdo patrocinado  • 

Sistema de warn e ban automático Empty Re: Sistema de warn e ban automático

Permissões neste sub-fórum
Não podes responder a tópicos