Перейти к публикации
Дизайн и модификация Invision Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
basssic

Удаление минусов с репутации. Как?

Рекомендованные сообщения

Зашел спамер и поставил кучу минусов везде, как удалить его минусы с репутации? Спасибо.

Поделиться сообщением


Ссылка на сообщение

Никак. Только вручную sql запросами.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
  04.07.2015 в 19:04, siv1987 сказал:

Никак. Только вручную sql запросами.

Спасибо, не продуманно однако)

Поделиться сообщением


Ссылка на сообщение

Чтобы удалить отрицательные изменения репутации от определенного пользователя выполните следующие SQL запросы:

 

- Удаление отрицательной репутации выданной другим пользователям

 

UPDATE ibf_profile_portal pp INNER JOIN (
SELECT SUM(ri.rep_rating) AS rating, p.author_id FROM ibf_reputation_index ri 
INNER JOIN ibf_posts p ON (ri.app='forums' AND ri.type='pid' AND ri.type_id=p.pid) 
WHERE ri.member_id = ид_пользователя AND ri.rep_rating=-1
GROUP BY p.author_id
) z ON (z.author_id=pp.pp_member_id)
SET pp.pp_reputation_points=pp.pp_reputation_points - z.rating

- Обновление кеша

 

UPDATE ibf_reputation_cache rc 
INNER JOIN ibf_reputation_index ri ON (rc.app=ri.app AND rc.type=ri.type AND rc.type_id=ri.type_id)
SET rc.rep_points = rc.rep_points - ri.rep_rating
WHERE ri.app='forums' AND ri.type='pid' AND ri.member_id = ид_пользователя AND ri.rep_rating=-1

- Удаление записей репутации

 

DELETE FROM ibf_reputation_index WHERE app='forums' AND type='pid' AND member_id = ид_пользователя AND ri.rep_rating=-1

 

ид_пользователя - заменить на ид нужного пользователя.

 

Запросы выполнять в порядке следования.

Чтобы удалить всю репутацию от определенного пользователя, как положительную так и отрицательную, удалите из запросов AND ri.rep_rating=-1

 

Следующий запрос выведет все сообщения с репутации от данного пользователя:

 

SELECT p.topic_id, p.author_name, p.author_id, FROM_UNIXTIME(p.post_date) post_date, p.post, FROM_UNIXTIME(ri.rep_date) rep_date, ri.rep_rating 
FROM ibf_reputation_index ri
INNER JOIN ibf_posts p ON (ri.app='forums' AND ri.type='pid' AND ri.type_id=p.pid)
WHERE ri.member_id=ид_пользователя ORDER BY ri.rep_date DESC

Поделиться сообщением


Ссылка на сообщение
Гость Alexander

Спасибо за рецепт!

 

У нас на форуме часто возникает немного иная задача - удалить лайк/дизлайк у конкретного сообщения.

Пользователи часто по ошибке нажимают не ту кнопку, особенно часто промахиваются с мобильных устройств.

 

У нас на форуме IP.Board 3.4.8, и там помимо удаления записи из ibf_reputation_cache требуется поправить значение в ibf_reputation_totals

 

У меня вот такие 3 запроса для удаления дизлайка по номеру пользователя и номеру сообщения получились:

DELETE FROM ibf_reputation_index WHERE member_id=id_пользователя AND type_id=id_сообщения;
UPDATE ibf_reputation_totals SET rt_total=rt_total+1 WHERE rt_type_id=id_сообщения;
DELETE FROM ibf_reputation_cache WHERE type_id=id_сообщения;

И то же самое для лайка:

DELETE FROM ibf_reputation_index WHERE member_id=id_пользователя AND type_id=id_сообщения;
UPDATE ibf_reputation_totals SET rt_total=rt_total-1 WHERE rt_type_id=id_сообщения;
DELETE FROM ibf_reputation_cache WHERE type_id=id_сообщения;

При этом я не исправляю общий рейтинг пользователя, он в нашем случае неважен, к тому же его можно поправить отдельно через админку.

 

И вот такой скрипт для быстрой генерации запросов для себя написал, вдруг кому-то еще пригодится :)

https://www.w3schools.com/code/tryit.asp?filename=FET3JU6LS1QA

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...