Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so dont bother with any of their useless mail servers here and just use oauth login instead. Thank the nice Russians for causing that. :)

Paste

Pasted as PHP by registered user atmaca ( 5 months ago )
<?php

define('THIS_SCRIPT', 'ft_react');
require_once('./global.php');

header('Content-Type: application/json; charset=UTF-8');

// Kullanıcı girişi zorunlu
if (empty($vbulletin->userinfo['userid']))
{
    echo json_encode([
        'success' => false,
        'error'   => 'login_required'
    ]);
    exit;
}

$userid   = intval($vbulletin->userinfo['userid']);
$username = $vbulletin->db->escape_string($vbulletin->userinfo['username']);

$postid   = isset($_GET['postid'])   ? intval($_GET['postid'])   : 0;
$reaction = isset($_GET['reaction']) ? intval($_GET['reaction']) : 0;

// Güvenlik: postid / reaction kontrolü
if ($postid <= 0 || $reaction <= 0)
{
    echo json_encode([
        'success' => false,
        'error'   => 'invalid_params'
    ]);
    exit;
}

// Şimdilik bütün tepki tipleri için tek type kullanıyoruz
$reaction_type = 1; // "reaction" gibi düşünebilirsin

// Bu kullanıcı bu mesaja daha önce tepki vermiş mi?
$existing = $vbulletin->db->query_first("
    SELECT reactionid
    FROM vbseo_likes
    WHERE l_contentid   = $postid
      AND l_ctype       = 1
      AND l_cgroup      = 0
      AND l_from_userid = $userid
");

// Aynı tepkiye tekrar bastıysa → kaydı sil (toggle off)
if ($existing && intval($existing['reactionid']) === $reaction)
{
    $vbulletin->db->query_write("
        DELETE FROM vbseo_likes
        WHERE l_contentid   = $postid
          AND l_ctype       = 1
          AND l_cgroup      = 0
          AND l_from_userid = $userid
    ");

    echo json_encode([
        'success'  => true,
        'reaction' => $reaction,
        'removed'  => true
    ]);
    exit;
}

// Farklı bir tepkiye geçtiyse → tek satırı güncelle
if ($existing)
{
    $vbulletin->db->query_write("
        UPDATE vbseo_likes
        SET reactionid    = $reaction,
            reaction_type = $reaction_type,
            l_dateline    = " . TIMENOW . "
        WHERE l_contentid   = $postid
          AND l_ctype       = 1
          AND l_cgroup      = 0
          AND l_from_userid = $userid
    ");
}
else
{
    // İlk kez tepki veriyorsa → yeni satır
    $dest = $vbulletin->db->query_first("
        SELECT userid
        FROM " . TABLE_PREFIX . "post
        WHERE postid = $postid
        LIMIT 1
    ");

    $dest_userid = intval($dest['userid']);

    $vbulletin->db->query_write("
        INSERT INTO vbseo_likes
            (l_contentid, l_ctype, l_cgroup, l_from_userid, l_from_username,
             l_dest_userid, l_dateline, reaction_type, reactionid)
        VALUES
            ($postid, 1, 0, $userid, '$username',
             $dest_userid, " . TIMENOW . ", $reaction_type, $reaction)
    ");
}

echo json_encode([
    'success'  => true,
    'reaction' => $reaction,
    'removed'  => false
]);
exit;

 

Revise this Paste

Parent: 130364
Your Name: Code Language: