Удаление админом нехороших аватаров пользователей 1.X

1924
Сейчас пользователь загрузил аватар который, скажем так, не соответствует правилам сайта.
Если в личных фотоальбомах, еще возможно сделать какие-то допущения, например помечая нехорошие изображения специальным статусом и потом на основе этого статуса скрывать изображение из общих списков, то с аватаром все немного иначаче. Он может мелькать где угодно: на форуме, в комментариях, в списках пользователей, поэтому нехороший аватар просто будем удалять.

Ранее здесь предлагались решения на эту тему, загрузка админом пользователю аватара на своё усмотрение, я же просто удаляю аватар, который не соответствует правилам и возвращаю это место к дефолтному состоянию.

Удаление админом нехороших аватаров пользователей





Следующим шагом, по идее, для особо настойчивых, должна стать специальная отметка на профиле тех, кто раз за разом продолжает загружать плохие аватары. Отметка на основе которой можно вообще запретить изменение аватара для такого пользователя. Но это может быть как нибудь в следующий раз. В принципе, особо буйных можно просто банить, а для тех, кто понимает предупреждения, пока просто удаляем аватар.

Создаем php файл avatardelete.php со следующим кодом

Код PHP:
  1.  
  2. <?
  3. $userid = intval($_REQUEST["userid"]);
  4. $inUser = cmsUser::getInstance();
  5. if ($inUser->is_admin&&$userid) {
  6. $inDB = cmsDatabase::getInstance();
  7. $sql = "UPDATE cms_user_profiles SET imageurl = '' WHERE user_id = '$userid'";
  8. $inDB->query($sql);
  9. echo 'ok';
  10. }
  11. ?>


Кладём этот файл в папку /includes/myphp/

В админке сайта создаём статью с названием Удаление аватара и с url /avatardelete.html
В настройках статьи устанавливаем доступ только для админов.


Удаление админом нехороших аватаров пользователей


В принципе в самом коде тоже присутсвует проверка на администратора. Но дополнительное ограничение не повредит.


В теле статьи через "Вставить файл" вставляем avatardelete.php

В шаблоне com_users_profile.tpl в любом месте вставляем

Код PHP:
  1.  
  2. {if $is_admin}
  3. <form action="/avatardelete.html" method="post">
  4. <input name="userid" type="hidden" value="{$usr.id}" />
  5. <input name="" type="submit" value="УДАЛИТЬ АВАТАР" />
  6. </form>
  7. {/if}
  8.  
Вроде работает.
Только когда я делал это же самое через php my admin, из ленты активности кажется тоже пропадала запись о том что пользователь загрузил такой то аватар. (Без каких либо дополнительных действий по удалению записи из логов).

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

Не понял в чем разница, сейчас не хочу разбираться с этим вопросом, если кто-то подскажет, хорошо.
Убираем поле логин из формы регистрации. | Счетчик посещений для раздела Мои гости
Комментарии (2)
Александр 28 января 2017 в 22:14 0
Штука нужная, спасибо, добавить бы изящности коду и исполнению. И кстати личным фоткам возможность статуса 18+ тоже непомешает
Идея хороша.

Но, имхо, следует предусмотреть в таблице cms_user_profiles дополнительное поле (например, с именем prohibition), которое будет содержать флаг запрещения наглецам менять аватар после первого же предупреждения. В вашем же файле avatardelete.php:
Код PHP:
  1. $sql = "UPDATE cms_user_profiles SET imageurl = '', prohibition = 1 WHERE user_id = '$userid'";
Естественно, перед изменением аватара сделать проверку, установлен ли флаг prohibition этого юзера. Если да, то никаких ему задниц или прочих интимных частей тела на аватаре))))