Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Kmario19

[FIX] Risus filtro de notificaciones en el monitor

Recommended Posts

Hola a todos gente, vego con otro aporte, en un pedido de el usuario seVen especifica que no funciona las configuraciones de las notificaciones que el usuario desea recibir, estudié un poco su funcion y pude hacerlo funcional, solo hizo falta modificar un par de cosas para que funcionara perfecto.
 
1. Para aplicar este fix primero en c.monitor.php que está en inc/class buscamos:
 
            # CARGO LOS FILTROS
$query = mysql_query('SELECT c_monitor FROM u_portal WHERE user_id = \''.$tsUser->uid.'\' LIMIT 1');
            $filtros = mysql_fetch_assoc($cuery);
            
            //
            $filtros = unserialize($filtros['c_monitor']);
            foreach($filtros as $key => $val){
                $dataDos['filtro'][$val] = true;
            }
 
Lo reemplazamos por:
 
# CARGO LOS FILTROS
// solo los primeros 17 tipos de notificaciones
for($i > 0; $i < 18; $i++) $filtro[$i] = $this->allowNotifi($i, $tsUser->uid);
$dataDos['filtro'] = $filtro;
 
2. Ahora al final del archivo buscamos:
 
/**
     * @name setFiltro
     * @access public
     * @param none
     * @return bool
     * @info GUARDA LOS FILTROS DE LA ACTIVIDAD
     */
    public function setFiltro(){
        # GLOBALES
        global $tsUser;
        # LOCALES
        $filtro_id = (int) $_POST['fid'];
        $filtro_id = 'f'.$filtro_id;
        # SACAMOS LA CONFIGURACION
$query = mysql_query('SELECT c_monitor FROM u_portal WHERE user_id = \''.$tsUser->uid.'\' LIMIT 1');
        $data = mysql_fetch_assoc($query);
        
        # PROSESAMOS
        $filtros = unserialize($data['c_monitor']);
        # GUARDAR
        if(in_array($filtro_id, $filtros)) {
            $aid = array_search($filtro_id, $filtros);
            array_splice($filtros, $aid);
        } else {
            $filtros[] = $filtro_id;
        }
        # GUARDAMOS LOS NUEVOS FILTROS
        $filtros = serialize($filtros);
mysql_query('UPDATE u_portal SET c_monitor = '.$filtros.' WHERE user_id = \''.$tsUser->uid.'\'');
        //
        return true;
    }
    /**
     * @name allowNotifi
     * @access private
     * @param int
     * @return bool
     * @info REVISA EN LA CONFIGURACION SI DESEA RESIBIR LA NOTIFICACION
     */
    private function allowNotifi($type, $user_id){
        # CONSULTAMOS
$query = mysql_query('SELECT c_monitor FROM u_portal WHERE user_id = \''.(int)$user_id.'\' LIMIT 1');
        $data = mysql_fetch_assoc($query);
        
        # PROSESAMOS
        $filtro_id = 'f'.$type;
        $filtros = unserialize($data['c_monitor']);
        # VERIFICAMOS
        if(in_array($filtro_id, $filtros)) return false;
        else return true;
    }
Lo reemplazamos por:
 
/**
     * @name setFiltro
     * @access public
     * @param none
     * @return bool
     * @info GUARDA LOS FILTROS DE LA ACTIVIDAD
     */
    public function setFiltro(){
        global $tsUser, $tsCore;
// 
$filtros = $_POST['fid'];
//
if(mysql_query('UPDATE u_portal SET c_monitor = \''.$tsCore->setSecure($filtros).'\' WHERE user_id = \''.$tsUser->uid.'\'')) return '1: Configuraciones guardadas.';
else return '0: Ocurri&oacute; un error, intentalo m&aacute;s tarde.';
    }
    /**
     * @name allowNotifi
     * @access private
     * @param int
     * @return bool
     * @info REVISA EN LA CONFIGURACION SI DESEA RESIBIR LA NOTIFICACION
     */
    private function allowNotifi($type, $user_id){
        # CONSULTAMOS
$query = mysql_query('SELECT c_monitor FROM u_portal WHERE user_id = \''.(int)$user_id.'\' LIMIT 1');
        $data = mysql_fetch_assoc($query);
// NO QUIERE NOTIFICACIONEs
        if($data['c_monitor'] == 'none') return false;
// HACK, USUARIOS QUE NO HAN CONFIGURADO NADA DESPUES DE INSTALAR ESTE MOD(? OKSI
if(empty($data['c_monitor'])) return true;
# PROSESAMOS
$filtros = explode(',', $data['c_monitor']);
# VERIFICAMOS
if(in_array($type, $filtros)) return true;
else return false;
    }
 
3. ahora vamos a acciones.js que está en tutema/js y buscamos:
 
filter: function (x, obj) {
$.ajax({url: global_data.url + '/notificaciones-filtro.php', type: 'post', data: 'fid=' + x});
        var v = $(obj).attr('checked') ? 1 : 0;     
},
 
Lo reemplazamos por:
 
filter: function() {
var inputs = $('#nots_filter :input');
        var fid = '';        
inputs.each(function(){
            if($(this).attr('checked')) fid += $(this).val() + ',';
});
        //
if(empty(fid)) fid = 'none';
        $('#loading').fadeIn(250);
        $.ajax({
         type: 'POST',
         url: global_data.url + '/notificaciones-filtro.php',
         data: 'fid=' + fid,
         success: function(h){
         switch(h.charAt(0)){
         case '0': //Error
                        mydialog.alert('Error', h.substring(3));
         break;
         case '1': //OK
                        $('#Msj').slideDown();
         break;
         }
                $('#loading').fadeOut(350);
         }
        });
},
filter_check: function() {
var input = $('#nots_filter :input');
if(input.attr('checked') == 'checked') {
input.removeAttr('checked'); 
$('.change').html('Marcar todos');
} else {
input.attr({'checked' : 'checked'});
$('.change').html('Desmarcar todos');
}
},
 
4. Por ultimo reemplazamos el archivo m.monitor_sidebar.tpl que va en templates/modules por el de la descarga y listo!
 
 

 
Creo que las imagenes no explicarian mucho su funcionamiento, mejor se los dejo para que prueben que funciona, de igual forma les dejo una cap guardando las configuraciones.
 
idpQZOPV5TmoN.png
 
Espero les haya gustado nos vemos en otro aporte, saludos a todos! :D
 
 
 
  • Me gusta 21

Compartir este post


Enlace al post
Compartir en otros sitios

de lujo kmario, +1. podria fijarte las notificaciones de tu mod seccion juegos 2? me parece que hay un error al notificar..... sale "usuario array juego" y el enlace de una foto, saludos

Compartir este post


Enlace al post
Compartir en otros sitios

Con fixes como estos y el script se va mejorando, por cierto que falto? lo digo por tu comentario cuando dices que falto algo para que quedara perfecto.

 

Gracias por compartirlo :)

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario

Crear una cuenta

Regístrate en nuestra comunidad. ¡Es fácil!

Registrar una cuenta nueva

Iniciar Sesión

¿Ya tienes cuenta? Conéctate aquí.

Iniciar Sesión

  • Similar Content

    • Por Oficialphp
      Hola amigos de PHPost aca les dejo el fix del mod de tutan-kabron
      "Notificaciones al mencionar a usuario en el muro"
       
       
       
       
      Pasos:
       
      Abrir el archivo c.muro.php y buscar lo siguiente:
       
      // MONITOR         $tsMonitor->setNotificacion(12, $pid, $tsUser->uid, $pub_id); Arriba de eso agregar lo siguiente:
       
      // FIX BY OFICIALPHP [MOD DE TUTAN-KABRON] preg_match_all("/\[email protected]([a-zA-Z0-9_-]{4,16}+)\b/",$data, $users); $menciones = $users[1]; // MENCIONARON A UN USER? if(!empty($users[1])) { foreach($menciones as $user){ # COMPROBAR $uid = $tsUser->getUserID($tsCore->setSecure($user)); if(!empty($uid)){ $tsMonitor->setNotificacion(19, $uid, $tsUser->uid, $pub_id); } } }  
      Luego abrir el archivo c.notificaciones.php y buscar:
       
      17 => array('text' => 'Tu foto recibió una medalla', 'css' => 'medal'), Y agregar debajo:
       
      19 => array('text' => 'te mencion&oacute; en una', 'ln_text' => 'publicaci&oacute;n', 'css' => 'blue_ball'), Mas abajo buscamos: 
       
      case 17: return 'SELECT f.foto_id, f.f_title, f.f_user, m.medal_id, m.m_title, m.m_image, a.medal_for, u.user_id, u.user_name FROM w_medallas_assign AS a LEFT JOIN f_fotos AS f ON f.foto_id = a.medal_for LEFT JOIN u_miembros AS u ON u.user_id = f.f_user LEFT JOIN w_medallas AS m ON m.medal_id = a.medal_id WHERE m.medal_id = \''.(int)$data['obj_uno'].'\' AND f.foto_id = \''.(int)$data['obj_dos'].'\' LIMIT 1'; break;  
      Y debajo agregamos:
       
      case 19:           return 'SELECT p.pub_id, p.p_user FROM u_muro AS p WHERE p.pub_id = \''.(int)$data['obj_uno'].'\' LIMIT 1';    break; Un poco más abajo buscan: 
       
      case 17:                 $oracion['text'] = 'Tu <a href="'.$site_url.'/fotos/'.$data['user_name'].'/'.$data['foto_id'].'/'.$tsCore->setSEO($data['f_title']).'.html" title="'.$data['f_title'].'"><b>foto</b></a> tiene una nueva <span class="qtip" title="'.$data['m_title'].'"><b>medalla</b> <img src="'.$site_url.'/themes/default/images/icons/med/'.$data['m_image'].'_16.png"/></span>';             break; Y debajo agregan lo siguiente:
       
       
      case 19:                 $oracion['text'] = $this->monitor[$no_type]['text'].$txt_extra;                 $oracion['link'] = $site_url.'/perfil/'.$tsUser->getUserName($data['p_user']).'/'.$data['obj_uno'];                 $oracion['ltext'] = ($this->show_type == 1) ? $ln_text : $tsUser->getUserName($data['p_user']);                 $oracion['ltit'] = ($this->show_type == 1) ? $tsUser->getUserName($data['p_user']) : '';             break;  
      Con eso les quedaría fixeado y operativo el mod.
       
      CAPS:
       
      Mención:

       
      Mencionado:
       

       
      CREDITOS:
       
      @tutan-kabron
       
      Y ami por el fix @Oficialphp 
       
    • Por Kmario19
      Hola gente en este post les comparto las secciones que he desarrollado pero actualizadas a la versión de Risus 1.2 de la misma forma como las he revisado y he encontrado algunos errores y vulnerabilidades que he solucionado por lo cual recomiendo que actualicen para quienes tengan los mods que describiré a continuación.
      ARCHIVOS

      [Importante] Actualizado:
      [SECCIÓN] Archivos V2.1
      MEGA
      JUEGOS

      [Importante] Actualizado:
      [SECCIÓN] Juegos V2.1
      MEGA
      VERSIÓN MOBILE
      Actualizado:
      [MOD] Risus Mobile V2.4
      MEGA
      CALENDARIO

      [Importante] Actualizado:
       [MOD] Calendario de eventos V2.1
      MEGA
      Esto es todo por ahora, espero les sirva a muchos que tal vez han intentado actualizar los mods y les ha dado algún error o no les funciona correctamente.
      Los que tienen el título de [Importante] para quienes tengan esos mods deben actualizarlos SI o SI ya que las anteriores versiones son vulnerables a inyecciones SQL.
      Ya que no puedo editar mis viejos aportes espero que algún mod de buen corazón pueda actualizar los enlaces de descargas en los respectivos posts. Si me dan privilegios para hacerlo sería mucho mejor e,e 
      Si quieren que actualice algún otro aporte háganmelo saber y lo compartiré en este mismo topic. Que tengan buen día, nos vemos en otro mod
      Links actualizados 15/09:
      [MOD] Archivos V2.1 [Kmario19][1.2].zip 64 KB https://mega.nz/#!GoI0jYjY!9607goFbijGGS413IOvCDIjC5kBQW0pm_i9SujKKVnA [MOD] Calendario de eventos V2.1 [Kmario19][1.2].zip 6 KB https://mega.nz/#!b0ARgT7R!oiZPtT_YAJuHX50OjAyfVPR0JDf1GJhOXVkloM4s9pg [MOD] Emoticones Administrables V2 [Kmario19].zip 96 KB https://mega.nz/#!ylRgUTaL!ArAO6KJYJHMc_WM0ARqz5IRqxHRWCZShiKE_TQ9nXfc [MOD] Juegos V2 [Kmario19][1.2].zip 58 KB https://mega.nz/#!y0oxnIQQ!10h_R5DW-lNh5rDzFdgfVTpMZt9H58aLHGcIQV3Hm8Q [MOD] Risus Mobile V2.4 [Kmario19][1.2].zip 518 KB https://mega.nz/#!20pgkSJY!bKiOjE_NH8ktRQrjWyLXoBRFOmVeKlVkAyKZGosIQc4
  • Navegando Recientemente   0 miembros

    No registered users viewing this page.

  • Patrocinador



  • ×