Hôm nay tuoitreit.vn xin hướng dẫn các bạn cách chuyển đổi thanks từ vbulletin sang like cho xenforo
Sau khi bạn chuyển đổi mã nguồn sang xenforo thì vấn đề còn lại cần làm là làm sao có thể chuyển đổi thanks sang like được và giữ nguyên số lượng thanks từ vbulletin
Để giữ nguyên thanks và point từ vbulletin sang xenforo bạn làm như sau:
Trên database vbulletin bạn export lại 2 table đó là table post và post_thanks
Sau đó trên database của xenforo bạn import lại 2 table đó vào
Rồi chạy lệnh SQL sau:
Sau khi bạn chạy xong thì số like vẫn chưa cập nhật và chỉ hiển thị "you like this post" hoặc "1 person like this post"
Để hiển thị số like và tên người like bạn làm như sau:
Lưu file này với tên tuoitreit.php và chạy nó, bạn lưu ý là để thời gian time out trên server dài vào nhé, vì nếu lượng data của bạn lớn thì nó sẽ mất nhiều thời gian để chạy và bạn để time out ít thì sẽ không được
Mọi sao chép vui lòng ghi rõ nguồn tuoitreit.vn
Chúc các bạn thành công!
Sau khi bạn chuyển đổi mã nguồn sang xenforo thì vấn đề còn lại cần làm là làm sao có thể chuyển đổi thanks sang like được và giữ nguyên số lượng thanks từ vbulletin
Để giữ nguyên thanks và point từ vbulletin sang xenforo bạn làm như sau:
Trên database vbulletin bạn export lại 2 table đó là table post và post_thanks
Sau đó trên database của xenforo bạn import lại 2 table đó vào
Rồi chạy lệnh SQL sau:
Code:
INSERT INTO `xf_liked_content` (content_type, content_id, like_user_id, like_date, content_user_id)
SELECT 'post', vl.postid, vl.userid, vl.date, post.userid
FROM `post_thanks` AS vl
LEFT JOIN `post` AS post ON (post.postid = vl.postid)
ON DUPLICATE KEY UPDATE
content_id = VALUES(content_id);
Sau khi bạn chạy xong thì số like vẫn chưa cập nhật và chỉ hiển thị "you like this post" hoặc "1 person like this post"
Để hiển thị số like và tên người like bạn làm như sau:
Lưu file này với tên tuoitreit.php và chạy nó, bạn lưu ý là để thời gian time out trên server dài vào nhé, vì nếu lượng data của bạn lớn thì nó sẽ mất nhiều thời gian để chạy và bạn để time out ít thì sẽ không được
Code:
<?php
$startTime = microtime(true);
$fileDir = dirname(__FILE__);
require($fileDir . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');
XenForo_Application::initialize($fileDir . '/library', $fileDir);
XenForo_Application::set('page_start_time', $startTime);
####################
ini_set('max_execution_time', 5000);
ini_set('memory_limit', -1);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
$db = XenForo_Application::get('db');
$batchSize = 1000;
$contentTypes = array(
'profile_post',
'post'
);
echo "Dang rebuild lai tong so like cho thanh vien . . . ";
// REBUILD TONG SO LIKE CHO THANH VIEN
$db->query("
UPDATE xf_user AS u
SET u.like_count = (
SELECT COUNT(*)
FROM xf_liked_content AS lc
INNER JOIN xf_user_authenticate AS ua ON (ua.user_id = lc.like_user_id)
WHERE lc.content_user_id = u.user_id
)
");
echo "Thanh cong!<br /><br />";
foreach ($contentTypes AS $contentType)
{
echo "Dang rebuild lai tong so like cho {$contentType}s . . . ";
// REBUILD LAI TONG SO LIKE CHO NOI DUNG
$db->query("
UPDATE xf_{$contentType} AS content
SET content.likes = (
SELECT COUNT(*)
FROM xf_liked_content AS lc
INNER JOIN xf_user AS u ON (u.user_id = lc.like_user_id)
WHERE lc.content_type = ?
AND lc.content_id = content.{$contentType}_id
)
", $contentType);
echo "Thanh cong!<br />";
$totalIds = $db->fetchOne("
SELECT COUNT(*)
FROM xf_{$contentType}
WHERE likes > 0
");
echo "Dang rebuild lai cache cho {$contentType}s . . . ";
// REBUILD SERIAL CACHE OF RECENT LIKERS
// CHO 0 LIKE
$db->query("
UPDATE xf_{$contentType}
SET like_users = 'a:0:{}'
WHERE likes = 0
");
// CHO LIKE KHAC 0
for ($offset = 0; $offset < $totalIds; $offset += $batchSize)
{
$ids = $db->fetchCol("
SELECT {$contentType}_id
FROM xf_{$contentType}
WHERE likes > 0
ORDER BY {$contentType}_id
ASC
LIMIT {$offset}, {$batchSize}
");
foreach ($ids AS $id)
{
$likes = $db->fetchAll("
SELECT lc.like_user_id, u.username
FROM xf_liked_content AS lc
INNER JOIN xf_user AS u ON (u.user_id = lc.like_user_id)
WHERE lc.content_type = ?
AND lc.content_id = ?
ORDER BY lc.like_date
DESC
LIMIT 0, 5
", array($contentType, $id));
$writeVal = array();
foreach ($likes AS $like)
{
$writeVal[] = array(
'user_id' => $like['like_user_id'],
'username' => $like['username']
);
}
$writeVal = serialize($writeVal);
$db->query("
UPDATE xf_{$contentType}
SET like_users = ?
WHERE {$contentType}_id = ?
", array($writeVal, $id));
unset($id, $likes, $like, $writeVal);
}
unset($ids);
}
echo "Thanh cong!<br /><br />";
}
echo "Tat ca da hoan tat roi, cam on ban da ung ho tuoitreit.vn!";
Mọi sao chép vui lòng ghi rõ nguồn tuoitreit.vn
Chúc các bạn thành công!
Last edited: