Редактирование аватаров пользователей Администратором

+49
4.07K
После установки Instant CMS начал знакомство с функционалом системы. Был приятно удивлен тем, что админ не может изменять аватар пользователя. А вдруг кто то загрузит себе красивую похабную картинку с порно звездой? И че делать, лезть в базу что бы сменить ее на котенка?

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

Итак, в users/frontend.php в условии if ($do=='avatar')

находим

  1. if (!$inUser->id || ($inUser->id && $inUser->id != $id)){ cmsCore::error404(); }
заменяем на

  1. if (!$inUser->id || ($inUser->id && $inUser->id != $id && !$inUser->is_admin)){ cmsCore::error404(); }
Добавление && !$inUser->is_admin к параметрам условия if исключает админа из числа пользователей для которых выдается страница 404 ошибки в случае если предпринимается попытка отредактировать чужой аватар и разрешает дальнейшее выполнение скрипта.

в ваша тема оформления/components/com_user_profile.tpl

находим

  1.  
  2. {if $is_admin && !$myprofile}
  3. <tr>
  4. <td><img src="/templates/_default_/images/icons/profile/edit.png" /></td>
  5. <td><a href="/users/{$usr.id}/editprofile.html" title="{$LANG.CONFIG_PROFILE}">{$LANG.CONFIG_PROFILE}</a></td>
  6. </tr>
  7. {/if}
  8.  
  9.  
  10.  
заменяем на

  1.  
  2.  
  3. {if $is_admin && !$myprofile}
  4. <tr>
  5. <td><img src="/templates/_default_/images/icons/profile/edit.png" /></td>
  6. <td><a href="/users/{$usr.id}/editprofile.html" title="{$LANG.CONFIG_PROFILE}">{$LANG.CONFIG_PROFILE}</a></td>
  7. </tr>
  8. <tr>
  9. <td><img src="/templates/_default_/images/icons/profile/avatar.png" /></td>
  10. <td><a href="/users/{$usr.id}/avatar.html" title="{$LANG.SET_AVATAR}">{$LANG.SET_AVATAR}</a></td>
  11. </tr>
  12. {/if}
  13.  
  14.  
Данное изменение в шаблоне формирует, для админа, в профиле пользователя ссылку на изменение аватара пользователя.


редактируем Таблицу cms_actions базы данных.

В поле message изменяем данные изменяет аватар на изменяет аватар %s|
или выполняем sql запрос к таблице UPDATE `имя вашей БД`.`cms_actions` SET `message` = 'изменяет аватар %s|' WHERE `cms_actions`.`id` =19 LIMIT 1 ;

Данное изменение необходимо для правильного формирования записи в логе событий модуля лента активности.

в файле users/frontend.php

заменить

  1.  
  2.  
  3. cmsActions::log('add_avatar', array(
  4. 'object' => '',
  5. 'object_url' => '',
  6. 'object_id' => $id,
  7. 'target' => '',
  8. 'target_url' => '',
  9. 'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava">
  10. <img src="/images/users/avatars/small/'.$filename.'">
  11. </a>'
  12. ));
  13.  
  14.  
  15.  
на


  1.  
  2.  
  3. if ($id != $inUser->id && $inUser->is_admin){
  4. //регистрируем событие
  5. cmsActions::log('add_avatar', array(
  6. 'object' => $usr['nickname'],
  7. 'object_url' => cmsUser::getProfileURL($usr['login']),
  8. 'object_id' => $id,
  9. 'target' => '',
  10. 'target_url' => '',
  11. 'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava">
  12. <img src="/images/users/avatars/small/'.$filename.'">
  13. </a>'
  14. ));
  15. } else {
  16. cmsActions::log('add_avatar', array(
  17. 'object' => '',
  18. 'object_url' => '',
  19. 'object_id' => $id,
  20. 'target' => '',
  21. 'target_url' => '',
  22. 'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava">
  23. <img src="/images/users/avatars/small/'.$filename.'">
  24. </a>'
  25. ));
  26. }
  27.  
  28.  
  29.  
Как справедливо заметили


Админ мужчина и все его знают glasses
Попробовал у юзера сменить — в ленте вывело что я (админ) изменил аватар)
Админ мужчина и все его знают в ленте выводится надпись Админ изменил аватар и женская фотка crazy

xxuuu
в теме Админ не может изменять аватар пользователя

Последнее изменение контроллера как раз исправляет данный недостаток. Сделано по принципу вывода сообщений в ленте о добавлении записей на стену пользователей. Сообщения об изменении аватара пользователями остаются неизменными, а при редактировании аватара пользователя админом, к сообщению добавляется ссылка на профиль того пользователя чей аватар был изменен.

Иллюстрация


Вот и все. Админ теперь может менять аватары других юзверей пользователей. Проверено на Василии и Федоре.

p.s. как насобираю кармы продублирую в блоге.

p.p.s. Спасибо ВСЕМ пользователям сообщества Instant CMS принявшим участие в обсуждении, тестировании и критике данного хака в теме на форуме, и своими голосами поддержавшими размещение данного хака в блоге.
+5
SJen SJen 12 лет назад #
А вдруг кто то загрузит себе красивую похабную картинку с порно звездой? И че делать, лезть в базу что бы сменить ее на котенка?

тут бы еще нужен механизм (кому же еще писать про "механизм" как ни механику) штрафов что-ли - то есть сменить аву на котенка и запретить юзеру менять ее, скажем, в течение недели. Чтоб не баловался больше с порно "звездами". А иначе никто ведь не запретит пользователю поменять опять на что угодно (если, конечно, у админа нет желания его заблокировать)
0
Sergey Platonov Sergey Platonov 12 лет назад #
Я бы сделал так, прикрутил бы смену аватара к карме. именно смену - загрузить первый аватар можно - точнее нужно любому, а сменить либо за карму, либо если наберёт определённую
+1
Mr.Andreius Mr.Andreius 12 лет назад #
даи билинг прикрутить несложно
вот только знакомство с инстантом я веду на 1.9.1 utf8 под php 5.3 а как известно премиум компоненты еще не поддерживают ни того ни другого. Да и не покупал я еще билинг для себя. Ттак что с билингом вопрос отложен до лучших времен. А с кармой, с кармой можно подумать... (я еще не добрался до изучения механизма ее работы)
+1
Mr.Andreius Mr.Andreius 12 лет назад #
SJen, справедливое замечание. Вот только с модерированием у инстанта беда. То что реализовано сейчас - подходит под модель модерации "дикий запад", т.е. система кнута и пряника отсутствует напрочь. Вписать условия непосредственно в контроллер users запрещающие редактирование аватары отличное предложение.

// TODO добавить ограничение пользователю после смены его аватары админом
+1
st.Puh st.Puh 12 лет назад #
Работает супер, нужная вещь, спасибо.
+2
Soul Soul 12 лет назад #
p.s. как насобираю кармы продублирую в блоге.
Мир не без добрых людей :)

Хак полезный, плюсую и здесь!
+1
Mr.Andreius Mr.Andreius 12 лет назад #
st.Puh:
Мир не без добрых людей :)
спасибо.
+1
yrenzii yrenzii 12 лет назад #
Общение в интернете тем и привлекает людей, что можно высказаться инкогнито, поставить себе любую аватарку, Вы же себе Бина повесили, а может то-же кому-то не нравится, если допустим админу не нравится Ваш аватар, или аватар противоречит правилам сайта - присылайте предупреждение, смени мол, иначе бан или удаление, а так, допустим, без моего ведома сменили аватар, редактировали мой профиль, да я на этот сайт больше не приду, хоть и говорят, типа админ, он как хирург, ему все можно, но как есть крылатое выражение: А судьи кто???
0
SJen SJen 12 лет назад #
вы путаете свободу слова и нормы приличия. Конечно, каждый в интернете волен писать что угодно и ставить аватарки какие нравится - но в то же время каждый должен соблюдать определенные правила - нормы приличия. Смена аватара админом - это крайняя мера, в том случае если кто-то вдруг забудет, что он не один будет ее видеть. Это мера для защиты других посетителей.

Но соглашусь, если админ будет активно вмешиваться в жизнь посетителей (редактируя профили), то это вызовет негатив, надо знать меру.
-1
Mr.Andreius Mr.Andreius 12 лет назад #
Уважаемый, а где, в каком сообщении я призываю к смене аватара без ведома или предупредительного сообщения беседы с пользователем? Я лишь даю админу удобный инструмент управления аватарами. А как им воспользоваться... Тут уж тараканы в голове у каждого своего цвета траву курят.

Цитата из правил одного из сайтов, а правила эти в той или иной редакции кочуют с сайта на сайт с незначительными изменениями.

Аватара. Аватара - этот тот кусочек изображения, который отражает вашу сущность, настроение и д.р.Ограничена размером 100*100 пикс. Уважайте читателей форума - не выкладывайте изображения откровенно похабного содержания, которые могут оскорбить кого-либо.

6. Ограничения по использованию аватар.
6.1 Запрещается использовать фотографии реальных личностей форума для аватары без их согласия.
6.2 Запрещается использовать фотографии либо изображения известных личностей или политиков.
6.3 Запрещается использовать на аватаре рекламные ссылки и скрытую рекламу.
6.4 Запрещается использовать на аватаре порнографию, интимные части тела, сексуальные извращения.
6.5 Запрещается использовать на аватаре изображение наркотических средств, призывы к насилию, нарушению законодательства в любых проявлениях.
6.6 Запрещается использовать аватары размером более 50 кБ

незнание правил не освобождает от ответственности

yrenzii:
Вы же себе Бина повесили, а может то-же кому-то не нравится, если допустим админу не нравится Ваш аватар, или аватар противоречит правилам сайта

Мой аватар отображает мой внутренний мир, царящий во мне в данный момент. В данный момент он не нарушает правил данного сайта. На мой аватар не поступали жалобы администрации от других пользователей о том, что он их оскорбляет (!!??!!). Так же и администрация не обращалась ко мне с требованием смены аватара. Знает ли Мистер Бин что я использую одну из его гримасс ? Не знаю. Что он скажет по этому поводу, если узнает ? а х.з. ....
-3
letsgo letsgo 12 лет назад #
Зачем в ленте активности то писать сообщение о том, что админ сменил Васе аватар, вот это нелогично. Остальное все требует сказать спасибо!
0
Mr.Andreius Mr.Andreius 12 лет назад #
letsgo, да как то писало же что пользователь меняет аватар, а когда админ менял аватар кому то другому, тоже писало, вот и был сделан удобочитаемый вывод надписи.
-3
letsgo letsgo 12 лет назад #
Логика сообщать всем, что админ сменил Васе аватар - какая? В целом конечно главное это возможность менять. Выводить об этом на весь сайт сообщение лишнее.
-1
Mr.Andreius Mr.Andreius 12 лет назад #
как костыль ------- т.е. в живую не протестировано!!!

что бы не выводилось

Код PHP:





if ($id != $inUser->id && $inUser->is_admin){
} else {
	cmsActions::log('add_avatar', array(
			'object' => '',
			'object_url' => '',
			'object_id' => $id,
			'target' => '',
			'target_url' => '',
			'description' => '<a href="'.cmsUser::getProfileURL($usr['login']).'" class="act_usr_ava">
							   <img border="0" src="/images/users/avatars/small/'.$filename.'">
							</a>'
	));
}



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

[b]По хорошему этот кусок надо переписать[/b], но как указал выше - это быстрый костыль, для тех кому не нужен вывод записи о смене аватара админом пользователю. 






0
Модератор Реальности Модератор Реальности 11 лет назад #

Это сбивает настройки выходит ошибка фатальная

+2
st.Puh st.Puh 12 лет назад #
В таком случии давайте ещо засудим и Плагин "Случайный аватар" v. 1.0.0, ведь и тут мы вторгаемса, может чел захотел быть без авки а мы ему ее впихнули, тоже и куча плогинов с напоминаниям о сайте,ещо почему после реги на сайте уже стоит подписка на личные сообщения на е-меил если пользователь не давал такого согласия,и ещо много чего.Так пол функционала движка надо будет выкинуть если судить по вашему.
0
WALTERZ WALTERZ 12 лет назад #
Что за глупости пошли в бой? Моя душа отражает войну и насилие в городе над детьми и женщинами...пойду всех убивать и пытать.

Если человек деградант и поставил на аватар пользователя голых проституток на всеобщее обозрение (в том числе и детям) или изображения пропагандирующие нацистскую идеологию...да и вообще, что угодно. То что тогда? Администратор сайта позволит заражать идиотизмом всех остальных?
Это очень глупо. Естественно "человек-свобода" -это хорошо, но порой это не человек вовсе.
-1
yrenzii yrenzii 12 лет назад #
Нормальный чел себе чичолину не повесит, а если какое чудо появилось - удалить, и всех делов, а сопли ему вытирать, аватарку менять и т.д - типа делов меньше нету...
-1
Андрей Андрей 12 лет назад #
абсолютно нормальный модуль, уменьшающий головную боль админу.
изменение авы подразумевает и ее удаление, а тут предоставлен мезанизм с минимальными движуниями для этих целей.

а уж резать скальпелем или вытирать сопли, пусть каждый админ для себя сам решает!
-1
vitalson9 vitalson9 12 лет назад #
Попытке изменить аву пользователю пишит
<<Доступ запрещен
Необходима авторизация в качестве владельца страницы.>>
-1
Mr.Andreius Mr.Andreius 12 лет назад #
какая версия instanta ?
все ли изменения внесены?
-1
vitalson9 vitalson9 12 лет назад #
версия 1.9 всё ввел как тут указано
-1
Mr.Andreius Mr.Andreius 12 лет назад #
хм...

надо подумать ....
-1
Danechka 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(); }
+1
Patriot Patriot 12 лет назад #
Спасибо mexanik!
0
iron_cam iron_cam 12 лет назад #
У меня версия 1.8. Была такая же проблема как и у Дашечки.
Строчка из первого изменения, должна выглядеть так:
Код PHP:
  1. if (usrCheckAuth() && $inUser->id==$id || $inUser->id==1 )
  2. {$usr = $model->getUserShort($id);
  3. if (!$usr) { cmsCore::error404(); }
И всё отлично.
-1
iron_cam iron_cam 12 лет назад #
Это если у админа id 1.
Если админов несколько, то добавляем соответственно в первую строчку, до закрытой скобки:
Код PHP:
  1. || $inUser->id==xxx
где xxx - id админа(ов).
-1
Mr.Andreius Mr.Andreius 12 лет назад #
полезное замечание
-1
Patriot Patriot 11 лет назад #
Прикрутить к 1.10.1 возможно?
-1
Mr.Andreius Mr.Andreius 11 лет назад #
из за lack of free time пока не смотрел что да как будет с/в 1.10.1
-1
Митяй Митяй 11 лет назад #
1/10/1 Смена авы у пользователя работает, но при этом ава админа слетает. В чем проблема?
-4
Константин Г. Константин Г. 11 лет назад #
У меня тоже слетает. Как раз щас менял и слетает своя...
-5
Константин Г. Константин Г. 11 лет назад #
Автор проекта,почему в версии 1.10.1 слетает аватарка админа который меняет пользователю?
-1
Скела Скела 11 лет назад #
аналогично - аватар админа улетает
-6
Константин Г. Константин Г. 11 лет назад #
Автор забил.
0
Модератор Реальности Модератор Реальности 11 лет назад #

Автор или кто то занимался этим еще ответ можно узнать?

0
Pasha Pasha 11 лет назад #

Да

-5
Константин Г. Константин Г. 11 лет назад #
Автор пришли смайлик
+2
Модератор Реальности Модератор Реальности 11 лет назад #

Не пойму неужели трудно ответить

+2
Модератор Реальности Модератор Реальности 10 лет назад #
Автор проекта,почему в версии 1.10.1 и на 1.10.3 слетает аватарка админа который меняет пользователю?
0
kssemenov kssemenov 7 лет назад #
Для версии один 1.10.7 не корректно отражались пункты Настройка профиля и Изменить аватар в профиле. Поэтом вместо того что написано в шапке на шаге 2 делаем:

в ваша тема оформления/components/com_user_profile.tpl

находим

Код PHP:
  1. {if $is_admin && !$myprofile}
  2. <tr>
  3. <td><img src="/templates/_default_/images/icons/profile/edit.png" /></td>
  4. <td><a href="/users/{$usr.id}/editprofile.html" title="{$LANG.CONFIG_PROFILE}">{$LANG.CONFIG_PROFILE}</a></td>
  5. </tr>
  6. {/if}
заменяем на
Код PHP:
  1. {if $is_admin && !$myprofile}
  2. <a class="list-group-item" href="/users/{$usr.id}/editprofile.html" title="{$LANG.CONFIG_PROFILE}">{$LANG.CONFIG_PROFILE}</a>
  3. <a class="list-group-item" href="/users/{$usr.id}/avatar.html" title="{$LANG.SET_AVATAR}">{$LANG.SET_AVATAR}</a>
  4. {/if}

Еще от автора

Хак Seo Redirect Url (redirect?url=) для InstantCms2
Вы тоже по ночам не спите, ломая голову как закрыть внешние ссылки от индексации что-бы показатели сайта не утекали к реципиентам и сайт потерял привл
Один сайдбар? А может два? Слева или справа?
Для того что бы сделать шаблон более функциональным в него обычно добавляется сайдбар.
Автоматическая подстройка высоты поля ввода для формы быстрого ответа в форуме.
Наверное все обращали внимание, что при написании длинных постов в блогах, поле ввода не имеет полосы прокрутки и автоматически подстраивается под тек
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.