После установки 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 принявшим участие в обсуждении, тестировании и критике данного хака в теме на форуме, и своими голосами поддержавшими размещение данного хака в блоге.
Реклама #
SJen 12 лет назад #
тут бы еще нужен механизм (кому же еще писать про "механизм" как ни механику) штрафов что-ли - то есть сменить аву на котенка и запретить юзеру менять ее, скажем, в течение недели. Чтоб не баловался больше с
порно"звездами". А иначе никто ведь не запретит пользователю поменять опять на что угодно (если, конечно, у админа нет желания его заблокировать)Sergey Platonov 12 лет назад #
Mr.Andreius 12 лет назад #
вот только знакомство с инстантом я веду на 1.9.1 utf8 под php 5.3 а как известно премиум компоненты еще не поддерживают ни того ни другого. Да и не покупал я еще билинг для себя. Ттак что с билингом вопрос отложен до лучших времен. А с кармой, с кармой можно подумать... (я еще не добрался до изучения механизма ее работы)
Mr.Andreius 12 лет назад #
// TODO добавить ограничение пользователю после смены его аватары админом
st.Puh 12 лет назад #
Soul 12 лет назад #
Хак полезный, плюсую и здесь!
Mr.Andreius 12 лет назад #
yrenzii 12 лет назад #
SJen 12 лет назад #
Но соглашусь, если админ будет активно вмешиваться в жизнь посетителей (редактируя профили), то это вызовет негатив, надо знать меру.
Mr.Andreius 12 лет назад #
Цитата из правил одного из сайтов, а правила эти в той или иной редакции кочуют с сайта на сайт с незначительными изменениями.
6.1 Запрещается использовать фотографии реальных личностей форума для аватары без их согласия.
6.2 Запрещается использовать фотографии либо изображения известных личностей или политиков.
6.3 Запрещается использовать на аватаре рекламные ссылки и скрытую рекламу.
6.4 Запрещается использовать на аватаре порнографию, интимные части тела, сексуальные извращения.
6.5 Запрещается использовать на аватаре изображение наркотических средств, призывы к насилию, нарушению законодательства в любых проявлениях.
6.6 Запрещается использовать аватары размером более 50 кБ
незнание правил не освобождает от ответственности
Мой аватар отображает мой внутренний мир, царящий во мне в данный момент. В данный момент он не нарушает правил данного сайта. На мой аватар не поступали жалобы администрации от других пользователей о том, что он их оскорбляет (!!??!!). Так же и администрация не обращалась ко мне с требованием смены аватара. Знает ли Мистер Бин что я использую одну из его гримасс ? Не знаю. Что он скажет по этому поводу, если узнает ? а х.з. ....
letsgo 12 лет назад #
Mr.Andreius 12 лет назад #
letsgo 12 лет назад #
Mr.Andreius 12 лет назад #
что бы не выводилось
Модератор Реальности 11 лет назад #
Это сбивает настройки выходит ошибка фатальная
st.Puh 12 лет назад #
WALTERZ 12 лет назад #
Если человек деградант и поставил на аватар пользователя голых проституток на всеобщее обозрение (в том числе и детям) или изображения пропагандирующие нацистскую идеологию...да и вообще, что угодно. То что тогда? Администратор сайта позволит заражать идиотизмом всех остальных?
Это очень глупо. Естественно "человек-свобода" -это хорошо, но порой это не человек вовсе.
yrenzii 12 лет назад #
Андрей 12 лет назад #
изменение авы подразумевает и ее удаление, а тут предоставлен мезанизм с минимальными движуниями для этих целей.
а уж резать скальпелем или вытирать сопли, пусть каждый админ для себя сам решает!
vitalson9 12 лет назад #
<<Доступ запрещен
Необходима авторизация в качестве владельца страницы.>>
Mr.Andreius 12 лет назад #
все ли изменения внесены?
vitalson9 12 лет назад #
Mr.Andreius 12 лет назад #
надо подумать ....
Danechka 12 лет назад #
запоролся в самом начале получается, там строка
Код 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(); }
Patriot 12 лет назад #
iron_cam 12 лет назад #
Строчка из первого изменения, должна выглядеть так:
iron_cam 12 лет назад #
Если админов несколько, то добавляем соответственно в первую строчку, до закрытой скобки:
Mr.Andreius 12 лет назад #
Patriot 11 лет назад #
Mr.Andreius 11 лет назад #
Митяй 11 лет назад #
Константин Г. 11 лет назад #
Константин Г. 11 лет назад #
Скела 11 лет назад #
Константин Г. 11 лет назад #
Модератор Реальности 11 лет назад #
Автор или кто то занимался этим еще ответ можно узнать?
Pasha 11 лет назад #
Да
Константин Г. 11 лет назад #
Модератор Реальности 11 лет назад #
Не пойму неужели трудно ответить
Модератор Реальности 10 лет назад #
kssemenov 7 лет назад #
в ваша тема оформления/components/com_user_profile.tpl
находим