XF 1.5 SQL запрос выполняемый во время лайка

butik

Проверенные
Сообщения
98
Реакции
36
Баллы
5,515
Ищу более подходящий метод безболезненно перенести все "Спасибо" из старого IPB 2 на Xenforo (в который импортировано с ipb все кроме спасибок)
На данный момент есть csv (данные спасибок) можно и другой формат.
Покачто рассматриваю вариант, перенести путем автоматизированного процесса в броузере (Zennoposter), пользователь логинится и заходит в определенную тему, нажимает лайк в нужном посте - такой способ имеет один минус, всем лайкам укажет дату одну.

Подскажите пожалуйста какой должен быть SQL запрос, который выполняется при нажатии "Нравится"?
Надо понять примерно как в базу записывается автор лайка, дата лайка, ид поста и т.д.
 
При лайке нужно делать 3 запроса.
- в базу пользователей, обновляем количество лайков автору поста
- в базу постов, обновляем посту количество лайков и список лайкеров
- в таблицу лайков, добавляем запись лайка

Примерно так:

... подключаем классы Ксены ...

PHP:
$newTime = '???????????????????';  // Время поста

// Подключение ORM
$db = XenForo_Application::getDb();

$contentUserId = $db->fetchOne("SELECT user_id FROM xf_post WHERE post_id = $postId"); // Определяем автора поста

$db->query("UPDATE xf_user SET like_count = like_count+1 WHERE user_id = '$contentUserId'"); // Наращиваем количество лайков у Автора поста
$db->query("UPDATE xf_post SET likes = likes+1 WHERE post_id = '$postId'"); // Наращиваем количество лайков у Поста

$likeUsersOld = $db->fetchOne("SELECT like_users FROM xf_post WHERE post_id = $postId"); // Берем имеющиеся лайки
$arr = unserialize($likeUsersOld);

$user = $userModel->getUserById($userId); // Определяем Имя пользователя по Id
$userName = $user['username'];

$arrayNew = ['0' => ['user_id' => $userId, 'username' => $userName]]; // Формируем нового Лайкера
$arrBig = array_merge($arr, (array)$arrayNew); // Соединяем новый и полученный массив Лайкеров
$likeUsersNew = serialize($arrBig); // Завернули в jSon

$db->query("UPDATE xf_post SET like_users = '$likeUsersNew' WHERE post_id = '$postId'"); // Обновили Лайкеров в like_users
$db->query("INSERT INTO xf_liked_content (content_type, content_id, like_user_id, like_date, content_user_id) VALUES ('post', $postId, $userId,  $newTime, $contentUserId)"); // Лайкаем пост
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу