Вопрос по gravatar в HybridAuth
Добрый день всем!
Не могу найти в базе данных таблицу, где хранится изображение, загруженное пользователем через сервис gravatar. Подскажите, пожалуйста, где искать.
Я нашла единственную таблицу, которая, судя по ее названию, должна относиться к компоненту HybridAuth — ..._ha_user_services. Но там хранятся изображения аватарок из соц. сетей.
Кстати в этой связи не очень понятно, почему же все-таки нельзя использовать эти изображения в качестве аватарок рядом с тикетами и комментариями авторизованных через соц.сети пользователей… Можно ли как-то избавиться от необходимости загружать аватар с gravatar? Большинство из тех, кто является посетителями, к примеру, моего сайта, не искушенные в интернетах люди… Даже я сама не сразу сориентировалась, когда зашла на сервис gravatar, чтобы загрузить там свое фото, хотя у меня были цель и желание в этом разобраться. А те, кто заходит на сайт просто ради того, чтобы оставить комментарий и дальше заняться своими, далекими от интернета, делами, — вообще не станет заморачиваться с аватаркой! Дай бог, чтобы он не поленился хотя бы (и вообще сообразил, как) авторизоваться на сайте (а есть и такие, которые не понимают, как вообще это сделать...=))
В общем было бы очень здорово, если бы необходимость в сервисе Gravatar вообще отпала.
Не могу найти в базе данных таблицу, где хранится изображение, загруженное пользователем через сервис gravatar. Подскажите, пожалуйста, где искать.
Я нашла единственную таблицу, которая, судя по ее названию, должна относиться к компоненту HybridAuth — ..._ha_user_services. Но там хранятся изображения аватарок из соц. сетей.
Кстати в этой связи не очень понятно, почему же все-таки нельзя использовать эти изображения в качестве аватарок рядом с тикетами и комментариями авторизованных через соц.сети пользователей… Можно ли как-то избавиться от необходимости загружать аватар с gravatar? Большинство из тех, кто является посетителями, к примеру, моего сайта, не искушенные в интернетах люди… Даже я сама не сразу сориентировалась, когда зашла на сервис gravatar, чтобы загрузить там свое фото, хотя у меня были цель и желание в этом разобраться. А те, кто заходит на сайт просто ради того, чтобы оставить комментарий и дальше заняться своими, далекими от интернета, делами, — вообще не станет заморачиваться с аватаркой! Дай бог, чтобы он не поленился хотя бы (и вообще сообразил, как) авторизоваться на сайте (а есть и такие, которые не понимают, как вообще это сделать...=))
В общем было бы очень здорово, если бы необходимость в сервисе Gravatar вообще отпала.
Комментарии: 26
Вся прелесть gravatar в том, что пользователю не нужно загружать свой аватар на все сайты. Картинка лежит в одном месте и подтягивается оттуда, через указанный пользователем email. Например, вот мой gravatar — www.gravatar.com/avatar/c7f9aee657a1834d85995a1a451cef55.
То есть, этой картинки у тебя на сайте нет, она загружается из gravatar.com.
А вот если пользователь загрузит картинку в свой профиль, то комментарии Tickets будут использовать её, вместо gravatar. Таким образом, gravatar используется только когда у юзера нет картинки в его modUserProfile. А вот если есть — то будет она.
Можешь проверить у нас в сообществе — загрузи себе картинку в профиль и проверь свои комменты.
То есть, этой картинки у тебя на сайте нет, она загружается из gravatar.com.
А вот если пользователь загрузит картинку в свой профиль, то комментарии Tickets будут использовать её, вместо gravatar. Таким образом, gravatar используется только когда у юзера нет картинки в его modUserProfile. А вот если есть — то будет она.
Можешь проверить у нас в сообществе — загрузи себе картинку в профиль и проверь свои комменты.
Поняла, с gravatar изображение в базу моего сайта не записывается.
В чем польза от gravatar, я также понимаю. Я лично себе картинку загрузила. Но посетителей сайта, как правило, эти тонкости не интересуют (тем более, если сайт не посвящен web-технологиям и т.п.), они не станут с этим разбираться. С загрузкой фото в свой профиль та же тема — обычно это не делается почти никем…
Но, с другой стороны, если пользователь авторизовался через соц. сеть, с которой в базу моего сайта сохранилась его фотография, и ее можно в базе найти (чем я сегодня и занималась для интереса), то можно ли сделать так, чтобы именно эта фотография и подгружалась автоматически вместо gravatar? Ну хотя бы как альтернатива gravatar в тех случаях, когда пользователь не использует этот сервис и не загружает специально фото в профиле. Мне кажется, что gravatar должен быть вторичен, т.е. фото с него должно запрашиваться в том случае, если в соц. сети фото отсутствует.
В чем польза от gravatar, я также понимаю. Я лично себе картинку загрузила. Но посетителей сайта, как правило, эти тонкости не интересуют (тем более, если сайт не посвящен web-технологиям и т.п.), они не станут с этим разбираться. С загрузкой фото в свой профиль та же тема — обычно это не делается почти никем…
Но, с другой стороны, если пользователь авторизовался через соц. сеть, с которой в базу моего сайта сохранилась его фотография, и ее можно в базе найти (чем я сегодня и занималась для интереса), то можно ли сделать так, чтобы именно эта фотография и подгружалась автоматически вместо gravatar? Ну хотя бы как альтернатива gravatar в тех случаях, когда пользователь не использует этот сервис и не загружает специально фото в профиле. Мне кажется, что gravatar должен быть вторичен, т.е. фото с него должно запрашиваться в том случае, если в соц. сети фото отсутствует.
Еще раз: gravatar и так вторичен, в первую очередь используется фото профиля.
Если есть большое желание, можно добавлять всем фото в профиль из их соцсетей. У меня такого желания нет.
Если есть большое желание, можно добавлять всем фото в профиль из их соцсетей. У меня такого желания нет.
Так а как это можно сделать? Какой-то плейсхолдер за это отвечает?
Нет, никакой плейсхолдер за это не отвечает.
Данные от соцсетей лежат в таблице modx_ha_user_services. Если у пользователя есть аватар в соцсети — там должна быть на него ссылка.
Можно написать плагин, который будет проверять наличие аватара в modUserProfile, и если его там нет — копировать какую-то ссылку на аватар из соцсетей в профиль (еще нужно выбрать, кстати, какую именно из 3-5 соцсетей юзера использовать).
Данные от соцсетей лежат в таблице modx_ha_user_services. Если у пользователя есть аватар в соцсети — там должна быть на него ссылка.
Можно написать плагин, который будет проверять наличие аватара в modUserProfile, и если его там нет — копировать какую-то ссылку на аватар из соцсетей в профиль (еще нужно выбрать, кстати, какую именно из 3-5 соцсетей юзера использовать).
Вот именно, что приходится дописывать плагин. Мне кажется, в данном компоненте это недоработка.
Конечно, недоработка, если бы это был компонент по добавлению аватарок в профиль юзеров.
Но HybridAuth служит для авторизации через соцсети, с чем успешно справляется.
Но HybridAuth служит для авторизации через соцсети, с чем успешно справляется.
HybridAuth, кроме того, интегрирован с Tickets, а в чанках последнего предусмотрена фотография рядом с именем пользователя, оставляющего комментарии.
В принципе, можно, конечно, убрать вывод фото вообще, но тогда как-то скучновато станет :)
Да ладно? И как же он интегрирован? Авторизует пользователей?
Ну тогда и Login интегрирован с Tickets, и Office — и у них у всех ровно та же недоработка — они не работают как ты хочешь.
Напиши плагин и не сверли мозг. Не можешь написать — найди того, кто напишет и заплати за работу. Получится хорошо — оформляйте и присылайте в репозиторий pull-request.
А вот эти вот претензии к бесплатным дополнениям, которые пишутся на голом энтузиазме, я не понимаю.
P.S. Tickets, между прочим, работает и без авторизации — настолько глубоко он интегрирован с HybridAuth, да.
Ну тогда и Login интегрирован с Tickets, и Office — и у них у всех ровно та же недоработка — они не работают как ты хочешь.
Напиши плагин и не сверли мозг. Не можешь написать — найди того, кто напишет и заплати за работу. Получится хорошо — оформляйте и присылайте в репозиторий pull-request.
А вот эти вот претензии к бесплатным дополнениям, которые пишутся на голом энтузиазме, я не понимаю.
P.S. Tickets, между прочим, работает и без авторизации — настолько глубоко он интегрирован с HybridAuth, да.
Василий. Если вы что-то делаете бесплатно — это благородно, но не повод ставить себя выше других и переходить на оскорбительный тон.
Tickets обращается к данным HybridAuth, использует имя пользователя и т.д. Не вижу ни одной разумной причины, почему Tickets не может так же использовать и фото! Это повысило бы юзабилити сайта. Отсутствие этого — недоработка.
На счет оплаты. Так вы бесплатный компонент сделали или со «встроенными покупками» в форме недоработок, которые очень хочется исправить?
Tickets обращается к данным HybridAuth, использует имя пользователя и т.д. Не вижу ни одной разумной причины, почему Tickets не может так же использовать и фото! Это повысило бы юзабилити сайта. Отсутствие этого — недоработка.
На счет оплаты. Так вы бесплатный компонент сделали или со «встроенными покупками» в форме недоработок, которые очень хочется исправить?
Ну раз ты не унимаешься, придется пояснить уж совсем предельно понятно.
Tickets работает с профилем пользователя MODX, и ему совершенно не важно, кем и как этот пользователь был создан. Данные о соцсетях и их аватарках находятся в другой таблице, о которой Tickets ничего не знает.
Пользователь в MODX есть независимо от HybridAuth. Удали HybridAuth — и Tickets будет работать и выводить данные пользователей!
Пользователей можно создавать и через админку — и все равно они будут работать в тикетах!
Если ты хочешь что-то еще — делай сама или ищи программиста. Заметь, лично мне платить я ничего не предлагал.
Все знают лучше меня, как и что должно быть в моих разработках. Сплошное расстройство.
Tickets обращается к данным HybridAuthНет, не обращается.
Tickets работает с профилем пользователя MODX, и ему совершенно не важно, кем и как этот пользователь был создан. Данные о соцсетях и их аватарках находятся в другой таблице, о которой Tickets ничего не знает.
Пользователь в MODX есть независимо от HybridAuth. Удали HybridAuth — и Tickets будет работать и выводить данные пользователей!
Пользователей можно создавать и через админку — и все равно они будут работать в тикетах!
Так вы бесплатный компонент сделали или со «встроенными покупками» в форме недоработок, которые очень хочется исправить?Я сделал бесплатный компонент. В нём не нужно ничего «исправлять» — всё работает именно так, как я задумал.
Если ты хочешь что-то еще — делай сама или ищи программиста. Заметь, лично мне платить я ничего не предлагал.
но не повод ставить себя выше других и переходить на оскорбительный тонЯ уже перестал делать сайты на заказ, а теперь, похоже, перестану делать и бесплатные дополнения.
Все знают лучше меня, как и что должно быть в моих разработках. Сплошное расстройство.
Брось, дополнение прекрасное, да и при необходимости персональных доработок — только лишний повод разбираться в логике написания кода и функционала Modx.)
Это все можно объяснить человеческим уважительным языком, а не говорить, что тебе «сверлят мозг» и «не унимаются» — это переход на уровень «быдло».
Только с симплдримс это дополнение было загружено около 3000 раз.
Представь какой поток вопросов приходил разработчику с требованием ответа по бесплатному модулю? Волей-неволей надоест.)
К слову, саппорт по аналогичным платным дополнениям у сд почти всегда своевременен и оперативен.
Представь какой поток вопросов приходил разработчику с требованием ответа по бесплатному модулю? Волей-неволей надоест.)
К слову, саппорт по аналогичным платным дополнениям у сд почти всегда своевременен и оперативен.
Я очень вежливо объяснил всё в первом же комментарии.
А вот дальше ты начала сверлить мне мозг и не захотела униматься.
Больше я тебе отвечать не буду, удачи.
gravatar используется только когда у юзера нет картинки в его modUserProfile
А вот дальше ты начала сверлить мне мозг и не захотела униматься.
Больше я тебе отвечать не буду, удачи.
Из этого объяснения не вытекало, что HB не связан с Tickets. Ну да ладно, кого это волнует
И вообще, суть проблемы была не в этом.
Фото можно было бы брать из той соц. сети, через которую пользователь впервые авторизовался. А уже если это не будет его устраивать, то пусть идет в свой профиль и редактирует.
core/components/tickets/model/tickets/tickets.class.php
835 строка и дальше:
— здесь можно добавить плейсхолдер или заменить принцип добавления граватара на соцсети и тд.
835 строка и дальше:
$data['avatar'] = !empty($data['photo'])
? $data['photo']
: $data['gravatar'];
— здесь можно добавить плейсхолдер или заменить принцип добавления граватара на соцсети и тд.
Максим, спасибо за подсказку! Попробую разобраться.
Плагин ищет фотки в подключенных соцсетях первую что найдет записывает в профиль.
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnHandleRequest':
if ($modx->user->isAuthenticated($modx->context->key)) {
$user = $modx->getUser();
$profile = $user->getOne('Profile');
if ($profile->get('photo') == '') {
$gravemail = md5( strtolower( trim( $profile->get('email') ) ) );
$gravsrc = "http://www.gravatar.com/avatar/".$gravemail;
$gravcheck = "http://www.gravatar.com/avatar/".$gravemail."?d=404";
$response = get_headers($gravcheck);
$services = $user->getMany('Services');
if ($services && $response[0] == "HTTP/1.0 404 Not Found") {
foreach ($services as $service) {
if ($service->get('photourl')) {
$profile->set('photo', $service->get('photourl'));
$profile->save();
break 1;
}
}
}
}
}
break;
}
return;
Подскажите, плагин вешать на событие OnHandleRequest? И после этого ничего в чанках менять не нужно?
Да, на OnHandleRequest. Проверяет есть ли граватар и пустой ли профиль, тестировал с Office, все работает. Хотя, логичнее было бы на User(Before,Form)Save и т.п., но насколько я понял, при созданном пользователе подключение доп провайдера юзер не пересохраняется, плюс там еще проблемы с удалением фотки из профиля в Офисе (тут как раз таки сохраняется и не дает назначить другую фотку).
Упс по мелочи менял js Офиса
assets\components\office\js\profile\default.js
сама функция
как-то так
assets\components\office\js\profile\default.js
$(document).on('submit', selector, function(e) {
$(this).ajaxSubmit({
url: OfficeConfig.actionUrl,
dataType: 'json',
beforeSubmit: function(data) {
Office.Profile.setNew(elem);
последняя строчка вызов доп функции при submitсама функция
setNew: function(elem) {
var $newphoto = elem.find('input[name="newphoto"]');
elem.find('input[name="photo"]', this.container).attr('value', $newphoto);
}
};
Office.Profile.initialize('#office-profile-form');
как-то так
Благодарю за ответ!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.