После установки Instant CMS начал знакомство с функционалом системы. Был приятно удивлен тем, что админ не может изменять аватар пользователя. А вдруг кто то загрузит себе красивую похабную картинку с порно звездой? И че делать, лезть в базу что бы сменить ее на котенка?
При изучении шаблона и контроллера профиля пользователя оформилось решение как добавить Администратору возможность менять аватары пользователей.
Итак, в users/frontend.php в условии if ($do=='avatar')
находим
заменяем на
Добавление && !$inUser->is_admin к параметрам условия if исключает админа из числа пользователей для которых выдается страница 404 ошибки в случае если предпринимается попытка отредактировать чужой аватар и разрешает дальнейшее выполнение скрипта.
в ваша тема оформления/components/com_user_profile.tpl
находим
заменяем на
Данное изменение в шаблоне формирует, для админа, в профиле пользователя ссылку на изменение аватара пользователя.
редактируем Таблицу cms_actions базы данных.
В поле message изменяем данные изменяет аватар на изменяет аватар %s|
или выполняем sql запрос к таблице UPDATE `имя вашей БД`.`cms_actions` SET `message` = 'изменяет аватар %s|' WHERE `cms_actions`.`id` =19 LIMIT 1 ;
Данное изменение необходимо для правильного формирования записи в логе событий модуля лента активности.
в файле users/frontend.php
заменить
на
Как справедливо заметили
Последнее изменение контроллера как раз исправляет данный недостаток. Сделано по принципу вывода сообщений в ленте о добавлении записей на стену пользователей. Сообщения об изменении аватара пользователями остаются неизменными, а при редактировании аватара пользователя админом, к сообщению добавляется ссылка на профиль того пользователя чей аватар был изменен.
Вот и все. Админ теперь может менять аватары другихюзверей пользователей. Проверено на Василии и Федоре.
p.s. как насобираю кармы продублирую в блоге.
p.p.s. Спасибо ВСЕМ пользователям сообщества Instant CMS принявшим участие в обсуждении, тестировании и критике данного хака в теме на форуме, и своими голосами поддержавшими размещение данного хака в блоге.
При изучении шаблона и контроллера профиля пользователя оформилось решение как добавить Администратору возможность менять аватары пользователей.
Итак, в users/frontend.php в условии if ($do=='avatar')
находим
if (!$inUser->id || ($inUser->id && $inUser->id != $id)){ cmsCore::error404(); }
if (!$inUser->id || ($inUser->id && $inUser->id != $id && !$inUser->is_admin)){ cmsCore::error404(); }
в ваша тема оформления/components/com_user_profile.tpl
находим
{if $is_admin && !$myprofile} <tr> <td><img src="/templates/_default_/images/icons/profile/edit.png" /></td> <td><a href="/users/{$usr.id}/editprofile.html" title="{$LANG.CONFIG_PROFILE}">{$LANG.CONFIG_PROFILE}</a></td> </tr> {/if}
{if $is_admin && !$myprofile} <tr> <td><img src="/templates/_default_/images/icons/profile/edit.png" /></td> <td><a href="/users/{$usr.id}/editprofile.html" title="{$LANG.CONFIG_PROFILE}">{$LANG.CONFIG_PROFILE}</a></td> </tr> <tr> <td><img src="/templates/_default_/images/icons/profile/avatar.png" /></td> <td><a href="/users/{$usr.id}/avatar.html" title="{$LANG.SET_AVATAR}">{$LANG.SET_AVATAR}</a></td> </tr> {/if}
редактируем Таблицу cms_actions базы данных.
В поле message изменяем данные изменяет аватар на изменяет аватар %s|
или выполняем sql запрос к таблице UPDATE `имя вашей БД`.`cms_actions` SET `message` = 'изменяет аватар %s|' WHERE `cms_actions`.`id` =19 LIMIT 1 ;
Данное изменение необходимо для правильного формирования записи в логе событий модуля лента активности.
в файле users/frontend.php
заменить
'object' => '', 'object_url' => '', 'object_id' => $id, 'target' => '', 'target_url' => '', 'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava"> <img src="/images/users/avatars/small/'.$filename.'"> </a>' ));
if ($id != $inUser->id && $inUser->is_admin){ //регистрируем событие 'object' => $usr['nickname'], 'object_url' => cmsUser::getProfileURL($usr['login']), 'object_id' => $id, 'target' => '', 'target_url' => '', 'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava"> <img src="/images/users/avatars/small/'.$filename.'"> </a>' )); } else { 'object' => '', 'object_url' => '', 'object_id' => $id, 'target' => '', 'target_url' => '', 'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava"> <img src="/images/users/avatars/small/'.$filename.'"> </a>' )); }
в теме Админ не может изменять аватар пользователя
Админ мужчина и все его знают
Попробовал у юзера сменить — в ленте вывело что я (админ) изменил аватар)
Админ мужчина и все его знают в ленте выводится надпись Админ изменил аватар и женская фотка
Последнее изменение контроллера как раз исправляет данный недостаток. Сделано по принципу вывода сообщений в ленте о добавлении записей на стену пользователей. Сообщения об изменении аватара пользователями остаются неизменными, а при редактировании аватара пользователя админом, к сообщению добавляется ссылка на профиль того пользователя чей аватар был изменен.

Вот и все. Админ теперь может менять аватары других
p.p.s. Спасибо ВСЕМ пользователям сообщества Instant CMS принявшим участие в обсуждении, тестировании и критике данного хака в теме на форуме, и своими голосами поддержавшими размещение данного хака в блоге.
тут бы еще нужен механизм (кому же еще писать про "механизм" как ни механику) штрафов что-ли - то есть сменить аву на котенка и запретить юзеру менять ее, скажем, в течение недели. Чтоб не баловался больше с
порно"звездами". А иначе никто ведь не запретит пользователю поменять опять на что угодно (если, конечно, у админа нет желания его заблокировать)вот только знакомство с инстантом я веду на 1.9.1 utf8 под php 5.3 а как известно премиум компоненты еще не поддерживают ни того ни другого. Да и не покупал я еще билинг для себя. Ттак что с билингом вопрос отложен до лучших времен. А с кармой, с кармой можно подумать... (я еще не добрался до изучения механизма ее работы)
// TODO добавить ограничение пользователю после смены его аватары админом
Хак полезный, плюсую и здесь!
Но соглашусь, если админ будет активно вмешиваться в жизнь посетителей (редактируя профили), то это вызовет негатив, надо знать меру.
Цитата из правил одного из сайтов, а правила эти в той или иной редакции кочуют с сайта на сайт с незначительными изменениями.
6.1 Запрещается использовать фотографии реальных личностей форума для аватары без их согласия.
6.2 Запрещается использовать фотографии либо изображения известных личностей или политиков.
6.3 Запрещается использовать на аватаре рекламные ссылки и скрытую рекламу.
6.4 Запрещается использовать на аватаре порнографию, интимные части тела, сексуальные извращения.
6.5 Запрещается использовать на аватаре изображение наркотических средств, призывы к насилию, нарушению законодательства в любых проявлениях.
6.6 Запрещается использовать аватары размером более 50 кБ
незнание правил не освобождает от ответственности
Мой аватар отображает мой внутренний мир, царящий во мне в данный момент. В данный момент он не нарушает правил данного сайта. На мой аватар не поступали жалобы администрации от других пользователей о том, что он их оскорбляет (!!??!!). Так же и администрация не обращалась ко мне с требованием смены аватара. Знает ли Мистер Бин что я использую одну из его гримасс ? Не знаю. Что он скажет по этому поводу, если узнает ? а х.з. ....
что бы не выводилось
Это сбивает настройки выходит ошибка фатальная
Если человек деградант и поставил на аватар пользователя голых проституток на всеобщее обозрение (в том числе и детям) или изображения пропагандирующие нацистскую идеологию...да и вообще, что угодно. То что тогда? Администратор сайта позволит заражать идиотизмом всех остальных?
Это очень глупо. Естественно "человек-свобода" -это хорошо, но порой это не человек вовсе.
изменение авы подразумевает и ее удаление, а тут предоставлен мезанизм с минимальными движуниями для этих целей.
а уж резать скальпелем или вытирать сопли, пусть каждый админ для себя сам решает!
<<Доступ запрещен
Необходима авторизация в качестве владельца страницы.>>
все ли изменения внесены?
надо подумать ....
запоролся в самом начале получается, там строка
Код PHP:
if (!$inUser->id || ($inUser->id && $inUser->id != $id)){ cmsCore::error404(); }
у меня
Код PHP:
if (usrCheckAuth() && $inUser->id == $id){
$usr = $model->getUserShort($id);
if (!$usr) { cmsCore::error404(); }
Строчка из первого изменения, должна выглядеть так:
Если админов несколько, то добавляем соответственно в первую строчку, до закрытой скобки:
Автор или кто то занимался этим еще ответ можно узнать?
Да
Не пойму неужели трудно ответить
в ваша тема оформления/components/com_user_profile.tpl
находим