Вопрос по 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');как-то так
                Благодарю за ответ!            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.