¡Bienvenido al Foro! ¿Aún no estás registrado?, deberás registrarte antes de poder usar el Chat, Comentar y Descargar en el Foro.
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Karma (Reputación) AJAX V1 (Act 1.3)
#1

3
Mejor respuesta del mensaje Karma (Reputación) AJAX V1 (Act 1.3)
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]



Ejecutar las siguientes consultas (una por una):
 
ALTER TABLE `u_miembros` ADD `user_karma` TINYINT( 4 ) NOT NULL

ALTER TABLE `w_configuracion` ADD `c_karma_settings` ENUM( '1', '2' ) NOT NULL

CREATE TABLE IF NOT EXISTS `u_karma_votes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vote` enum('1','2') NOT NULL,
`ip` varchar(16) NOT NULL,
`user` int(10) unsigned NOT NULL,
`user_to` int(10) unsigned NOT NULL,
`time` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Abrir c.admin en inc/class

Buscar:
 
'sump' => empty($_POST['sump']) ? 0 : 1,


Debajo agregar:
 
'karma' => ($_POST['karma_opt'] != '1' && $_POST['karma_opt'] != '2' ? '1' : $_POST['karma_opt']),


Buscar:
 
, `offline_message` = \'' . $c['offline_message'] . '\'


Al lado agregar:
 
, `c_karma_settings` = \'' . $c['karma'] . '\'


Abrir c.user.php en inc/class

Buscar:
 
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
                            // MANEJAR SESSIONES \\


Arriba agregar:
 
function userKarma()
    {
        global $tsCore;
       // sólo usuarios logueados
        if (!$this->uid)
        return false;
        // comprobación de variables
        if (!ctype_digit($_POST['karma']) || ($_POST['karma'] != '1' && $_POST['karma'] != '2') || !ctype_digit($_POST['uid']))
        return 'Error provocado';
        // comprobamos que no se de karma a sí mismo
        if ($_POST['uid'] == $this->uid)
        return 'No es posible darte puntos de karma a ti mismo';
        //si está la opción 2 en la configuración del karma, no se podrá dar votos negativos, comprobamos eso:
        if ($_POST['karma'] == '2' && $tsCore->settings['c_karma_settings'] == '2')
        return 'Sólo votos positivos';
        // el usuario existe?
        if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id FROM u_miembros WHERE user_id = \'' . $_POST['uid'] . '\'')))
        return 'El usuario no existe';
        // comprobamos clones
        if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT id FROM u_karma_votes WHERE (user = \''.$this->uid.'\' || ip = \''.$tsCore->getIP().'\') && time > \''.(time() - 3600).'\' && user_to = \''.$_POST['uid'].'\'')))
        return 'Debes esperar una hora para poder volver a votar a ese usuario';
        // pasó por acá y todo bien? actualizamos karma y guardamos voto
        db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_karma = user_karma ' . ($_POST['karma'] == '2' ? '-' : '+') . ' 1 WHERE user_id = \'' . $_POST['uid'] . '\' LIMIT 1');
        db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_karma_votes (user, ip, user_to, vote, time) VALUES (\'' . $this->uid . '\', \'' . $tsCore->getIP() . '\', \'' . $_POST['uid'] . '\', ' . ($_POST['karma'] == '2' ? '2' : '1') . ', \'' . time() . '\')');
        //
        return '1';
    }


Abrir c.posts.php en inc/class

Buscar:
 
// DATOS DEL AUTOR
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');


reemplazar por
 
// DATOS DEL AUTOR
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma, u.user_karma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');


Añadido:
 
, u.user_karma


Abrir c.cuenta.php en inc/class

Buscar:
 
// INFORMACION GENERAL
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');


reemplazar por:
 
// INFORMACION GENERAL
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_karma, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');


Añadido:
 
, u.user_karma


Abrir ajax-posts.php que está en inc/php/ajax

Buscar:
 
case 'posts-last-comentarios':
            //<--
                $smarty->assign("tsComments",$tsPosts->getLastComentarios());
            //-->
        break;


Debajo agregar:
 
case 'posts-user-karma':
           //<!--
                echo $tsUser->userKarma();
           //<--
        break;



Abrir m.perfil_headinfo.tpl que está en themes/tutheme/templates/modules

Buscar:
 
<li>
                                    <strong>{$tsInfo.stats.user_fotos}</strong>
                                    <span>Fotos</span>
                                </li>


Debajo agregar:
 
<li>
                                    <strong>{$tsInfo.user_karma}</strong>
                                    <span>Karma</span>
                                </li>


Abrir m.posts_autor.tpl que está en themes/tutheme/templates/modules

Buscar:
 
<span style="color: #456c00" class="nData">{$tsAutor.user_comentarios}</span>
                                <span class="txtData">Comentarios</span>
                            </div>


Debajo agregar:
 
<hr class="divider"/>
                            Karma: <b><div id="uKarma">{$tsAutor.user_karma}</div></b>
                            <div id="karmaOpts" style="display:inline;">
                                <a onclick="users_karma({$tsAutor.user_id}, 1)" title="Dar voto positivo"><img src="{$tsConfig.tema.t_url}/images/rep_up.png"></a>
                                {if $tsConfig.c_karma_settings == 1}
                                <a onclick="users_karma({$tsAutor.user_id}, 2)" title="Dar voto negativo"><img src="{$tsConfig.tema.t_url}/images/rep_down.png"></a>
                                {/if}
                            </div>


Abrir acciones.js que está en /themes/tutheme/js/

Buscar:
 
function actualizar_comentarios(cat, nov){
    $('#loading').fadeIn(250);
    $('#ult_comm, #ult_comm > ol').slideUp(150);
    $.ajax({
        type: 'GET',
        url: global_data.url + '/posts-last-comentarios.php',
        cache: false,
        data: 'cat='+cat+'&nov='+nov,
        success: function(h){
            $('#ult_comm').html(h);
            $('#ult_comm > ol').hide();
            $('#ult_comm, #ult_comm > ol:first').slideDown( 1500, 'easeInOutElastic');
            $('#loading').fadeOut(350);
            //$('#ult_comm, #ult_comm > ol:first').slideDown({duration: 'slow', easing: 'easeOutBack'});
            // La animación easeOutBack me pareció buena, la otra también o.O aunque easeInOutElastic se ve raro con tantas letras.
        },
        error: function(){
            $('#ult_comm, #ult_comm > ol:first').slideDown({duration: 1000, easing: 'easeOutBounce'});
            $('#loading').fadeOut(350);
            // Esta animación se usaba anteriormente en caso de que saliese bien, puede volver a utilizarse.
        }
    });
}


Debajo agregar:
 
/* Karma V1 - By Alan - phpost.net */
function users_karma(uid, vote){
    if(!uid || !vote) return false;
    $('#loading').fadeIn(250);
    $.post(global_data.url + '/posts-user-karma.php', 'uid=' + uid + '&karma=' + vote, function(olakease){
    if(olakease != '1'){
    mydialog.alert('Error', olakease);
    } else {
    var uKarma = parseInt($('#uKarma').text());
    if(vote == '1'){
    $('#uKarma').text(++uKarma);
    } else {
    $('#uKarma').text(--uKarma);
    }
    $('#karmaOpts').fadeOut('slow');
    $('#loading').fadeOut(350);
    }
    });
}


Abrir m.admin_configs.tpl en themes/default/templates/admin_mods

Buscar:


<dl>
                <dt>
                    <label for="ai_met_welcome">Mensaje de Bienvenida:</label>
                    <br /><span id="desc_message_welcome" {if $tsConfig.c_met_welcome==0 }style="display:none;" {/if}> <br /> [usuario] => Nombre del registrado <br /> [welcome] => Bienvenido/a depende del sexo <br /> [web] => Nombre de esta web <br /> <br />(Se aceptan BBCodes y Smileys)</span></dt>
                <dd>
                    <select id="ai_met_welcome" name="met_welcome" style="width: 266px;" class="select" {if $tsConfig.c_met_welcome==0 } onchange="if($('#ai_met_welcome').val() != 0) $('textarea[name=message_welcome]').slideDown(); $('#desc_message_welcome').slideDown();" {/if}>
                        <option value="0" {if $tsConfig.c_met_welcome==0 }selected{/if}>No dar bienvenida</option>
                        <option value="1" {if $tsConfig.c_met_welcome==1 }selected{/if}>Muro</option>
                        <option value="2" {if $tsConfig.c_met_welcome==2 }selected{/if}>Mensaje privado</option>
                        <option value="3" {if $tsConfig.c_met_welcome==3 }selected{/if}>Aviso</option>
                    </select>
                    <br />
                    <textarea name="message_welcome" id="ai_met_welcome" style="width: 260px; height: 100px; {if $tsConfig.c_met_welcome == 0} display:none; {/if}">{$tsConfig.c_message_welcome}</textarea>
                </dd>
            </dl>


Debajo agregar:
 
<dl>
                <dt>
                    <label for="ai_karma_opt">Mod Karma:</label><br /><span> <br /> [Mostrar ambas opciones] => Permite dar karma positivo y negativo <br /> [Sólo karma positivo] => Sólo se podrá dar karma positivo</span>
                </dt>
                <dd>
                    <select id="ai_karma_opt" name="karma_opt" style="width: 266px;" class="select">
                    <option value="1"{if $tsConfig.c_karma_settings == 1} selected{/if} >Mostrar ambas opciones</option>
                    <option value="2"{if $tsConfig.c_karma_settings == 2} selected{/if} >Sólo karma positivo</option>
                    </select>
                </dd>
            </dl>



Y subir imágenes Debes agradecer para ver el contenido... y Debes agradecer para ver el contenido... a themes/tutheme/images/

[img]Registrate o inicia tu sesión para ver este contenido[/img]

[img]Registrate o inicia tu sesión para ver este contenido[/img]




Creditos: Debes agradecer para ver el contenido...
Responder
#2

0
No entendí muy bien su función...

Los usuarios desde el post pueden votar para subir o bajar el karma de los usuarios? 

Buen aporte
Responder
#3

1
(04-17-2021, 09:41 PM)zero escribió: Debes agradecer para ver el contenido...No entendí muy bien su función...

Los usuarios desde el post pueden votar para subir o bajar el karma de los usuarios? 

Buen aporte

Si, es igual que el bóton que hay aquí de Reputación, te ha tenido que llegar 2 puntos para que veas más o menos como es.
Responder
#4

1
(04-20-2021, 10:59 AM)Tronlar escribió: Debes agradecer para ver el contenido...
(04-17-2021, 09:41 PM)zero escribió: Debes agradecer para ver el contenido...No entendí muy bien su función...

Los usuarios desde el post pueden votar para subir o bajar el karma de los usuarios? 

Buen aporte

Si, es igual que el bóton que hay aquí de Reputación, te ha tenido que llegar 2 puntos para que veas más o menos como es.

Ya veo, es parecido al que tienes aquí, me gusta la idea  Cool
Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)