Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
basssic

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

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Чтобы удалить отрицательные изменения репутации от определенного пользователя выполните следующие 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

Share this post


Link to post
Share on other sites
Guest 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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...