Вопрос по gravatar в HybridAuth

Добрый день всем!
Не могу найти в базе данных таблицу, где хранится изображение, загруженное пользователем через сервис gravatar. Подскажите, пожалуйста, где искать.
Я нашла единственную таблицу, которая, судя по ее названию, должна относиться к компоненту HybridAuth — ..._ha_user_services. Но там хранятся изображения аватарок из соц. сетей.

Кстати в этой связи не очень понятно, почему же все-таки нельзя использовать эти изображения в качестве аватарок рядом с тикетами и комментариями авторизованных через соц.сети пользователей… Можно ли как-то избавиться от необходимости загружать аватар с gravatar? Большинство из тех, кто является посетителями, к примеру, моего сайта, не искушенные в интернетах люди… Даже я сама не сразу сориентировалась, когда зашла на сервис gravatar, чтобы загрузить там свое фото, хотя у меня были цель и желание в этом разобраться. А те, кто заходит на сайт просто ради того, чтобы оставить комментарий и дальше заняться своими, далекими от интернета, делами, — вообще не станет заморачиваться с аватаркой! Дай бог, чтобы он не поленился хотя бы (и вообще сообразил, как) авторизоваться на сайте (а есть и такие, которые не понимают, как вообще это сделать...=))

В общем было бы очень здорово, если бы необходимость в сервисе Gravatar вообще отпала.
Дарья Сизова
20 сентября 2014, 09:25
modx.pro
3
2 807
+2

Комментарии: 26

Василий Наумкин
20 сентября 2014, 14:29
0
Вся прелесть gravatar в том, что пользователю не нужно загружать свой аватар на все сайты. Картинка лежит в одном месте и подтягивается оттуда, через указанный пользователем email. Например, вот мой gravatar — www.gravatar.com/avatar/c7f9aee657a1834d85995a1a451cef55.

То есть, этой картинки у тебя на сайте нет, она загружается из gravatar.com.

А вот если пользователь загрузит картинку в свой профиль, то комментарии Tickets будут использовать её, вместо gravatar. Таким образом, gravatar используется только когда у юзера нет картинки в его modUserProfile. А вот если есть — то будет она.

Можешь проверить у нас в сообществе — загрузи себе картинку в профиль и проверь свои комменты.
    Дарья Сизова
    21 сентября 2014, 00:04
    0
    Поняла, с gravatar изображение в базу моего сайта не записывается.
    В чем польза от gravatar, я также понимаю. Я лично себе картинку загрузила. Но посетителей сайта, как правило, эти тонкости не интересуют (тем более, если сайт не посвящен web-технологиям и т.п.), они не станут с этим разбираться. С загрузкой фото в свой профиль та же тема — обычно это не делается почти никем…
    Но, с другой стороны, если пользователь авторизовался через соц. сеть, с которой в базу моего сайта сохранилась его фотография, и ее можно в базе найти (чем я сегодня и занималась для интереса), то можно ли сделать так, чтобы именно эта фотография и подгружалась автоматически вместо gravatar? Ну хотя бы как альтернатива gravatar в тех случаях, когда пользователь не использует этот сервис и не загружает специально фото в профиле. Мне кажется, что gravatar должен быть вторичен, т.е. фото с него должно запрашиваться в том случае, если в соц. сети фото отсутствует.
      Василий Наумкин
      21 сентября 2014, 00:07
      0
      Еще раз: gravatar и так вторичен, в первую очередь используется фото профиля.

      Если есть большое желание, можно добавлять всем фото в профиль из их соцсетей. У меня такого желания нет.
        Дарья Сизова
        21 сентября 2014, 00:13
        0
        Так а как это можно сделать? Какой-то плейсхолдер за это отвечает?
          Василий Наумкин
          21 сентября 2014, 06:30
          0
          Нет, никакой плейсхолдер за это не отвечает.

          Данные от соцсетей лежат в таблице modx_ha_user_services. Если у пользователя есть аватар в соцсети — там должна быть на него ссылка.

          Можно написать плагин, который будет проверять наличие аватара в modUserProfile, и если его там нет — копировать какую-то ссылку на аватар из соцсетей в профиль (еще нужно выбрать, кстати, какую именно из 3-5 соцсетей юзера использовать).
            Дарья Сизова
            21 сентября 2014, 10:44
            0
            Вот именно, что приходится дописывать плагин. Мне кажется, в данном компоненте это недоработка.
              Василий Наумкин
              21 сентября 2014, 10:58
              0
              Конечно, недоработка, если бы это был компонент по добавлению аватарок в профиль юзеров.

              Но HybridAuth служит для авторизации через соцсети, с чем успешно справляется.
                Дарья Сизова
                21 сентября 2014, 11:36
                0
                HybridAuth, кроме того, интегрирован с Tickets, а в чанках последнего предусмотрена фотография рядом с именем пользователя, оставляющего комментарии.
                  Дарья Сизова
                  21 сентября 2014, 11:37
                  0
                  В принципе, можно, конечно, убрать вывод фото вообще, но тогда как-то скучновато станет :)
                    Василий Наумкин
                    21 сентября 2014, 12:12
                    -2
                    Да ладно? И как же он интегрирован? Авторизует пользователей?

                    Ну тогда и Login интегрирован с Tickets, и Office — и у них у всех ровно та же недоработка — они не работают как ты хочешь.

                    Напиши плагин и не сверли мозг. Не можешь написать — найди того, кто напишет и заплати за работу. Получится хорошо — оформляйте и присылайте в репозиторий pull-request.
                    А вот эти вот претензии к бесплатным дополнениям, которые пишутся на голом энтузиазме, я не понимаю.

                    P.S. Tickets, между прочим, работает и без авторизации — настолько глубоко он интегрирован с HybridAuth, да.
                      Дарья Сизова
                      21 сентября 2014, 12:48
                      0
                      Василий. Если вы что-то делаете бесплатно — это благородно, но не повод ставить себя выше других и переходить на оскорбительный тон.

                      Tickets обращается к данным HybridAuth, использует имя пользователя и т.д. Не вижу ни одной разумной причины, почему Tickets не может так же использовать и фото! Это повысило бы юзабилити сайта. Отсутствие этого — недоработка.

                      На счет оплаты. Так вы бесплатный компонент сделали или со «встроенными покупками» в форме недоработок, которые очень хочется исправить?
                        Василий Наумкин
                        21 сентября 2014, 13:07
                        -2
                        Ну раз ты не унимаешься, придется пояснить уж совсем предельно понятно.

                        Tickets обращается к данным HybridAuth
                        Нет, не обращается.

                        Tickets работает с профилем пользователя MODX, и ему совершенно не важно, кем и как этот пользователь был создан. Данные о соцсетях и их аватарках находятся в другой таблице, о которой Tickets ничего не знает.

                        Пользователь в MODX есть независимо от HybridAuth. Удали HybridAuth — и Tickets будет работать и выводить данные пользователей!

                        Пользователей можно создавать и через админку — и все равно они будут работать в тикетах!

                        Так вы бесплатный компонент сделали или со «встроенными покупками» в форме недоработок, которые очень хочется исправить?
                        Я сделал бесплатный компонент. В нём не нужно ничего «исправлять» — всё работает именно так, как я задумал.

                        Если ты хочешь что-то еще — делай сама или ищи программиста. Заметь, лично мне платить я ничего не предлагал.

                        но не повод ставить себя выше других и переходить на оскорбительный тон
                        Я уже перестал делать сайты на заказ, а теперь, похоже, перестану делать и бесплатные дополнения.

                        Все знают лучше меня, как и что должно быть в моих разработках. Сплошное расстройство.
                        Максим Кузнецов
                        21 сентября 2014, 13:28
                        0
                        Брось, дополнение прекрасное, да и при необходимости персональных доработок — только лишний повод разбираться в логике написания кода и функционала Modx.)
                        Дарья Сизова
                        21 сентября 2014, 13:30
                        0
                        Это все можно объяснить человеческим уважительным языком, а не говорить, что тебе «сверлят мозг» и «не унимаются» — это переход на уровень «быдло».
                        Максим Кузнецов
                        21 сентября 2014, 13:48
                        0
                        Только с симплдримс это дополнение было загружено около 3000 раз.

                        Представь какой поток вопросов приходил разработчику с требованием ответа по бесплатному модулю? Волей-неволей надоест.)

                        К слову, саппорт по аналогичным платным дополнениям у сд почти всегда своевременен и оперативен.
                        Василий Наумкин
                        21 сентября 2014, 13:49
                        0
                        Я очень вежливо объяснил всё в первом же комментарии.
                        gravatar используется только когда у юзера нет картинки в его modUserProfile

                        А вот дальше ты начала сверлить мне мозг и не захотела униматься.

                        Больше я тебе отвечать не буду, удачи.
                        Дарья Сизова
                        21 сентября 2014, 14:04
                        0
                        Из этого объяснения не вытекало, что HB не связан с Tickets. Ну да ладно, кого это волнует
                        Дарья Сизова
                        21 сентября 2014, 14:06
                        0
                        И вообще, суть проблемы была не в этом.
              Дарья Сизова
              21 сентября 2014, 10:47
              +1
              Фото можно было бы брать из той соц. сети, через которую пользователь впервые авторизовался. А уже если это не будет его устраивать, то пусть идет в свой профиль и редактирует.
                Максим Кузнецов
                21 сентября 2014, 11:56
                1
                0
                core/components/tickets/model/tickets/tickets.class.php

                835 строка и дальше:

                $data['avatar'] = !empty($data['photo'])
                				? $data['photo']
                				: $data['gravatar'];

                — здесь можно добавить плейсхолдер или заменить принцип добавления граватара на соцсети и тд.
                  Дарья Сизова
                  21 сентября 2014, 12:49
                  0
                  Максим, спасибо за подсказку! Попробую разобраться.
      Abu
      Abu
      23 декабря 2015, 19:57
      4
      +1
      Плагин ищет фотки в подключенных соцсетях первую что найдет записывает в профиль.

      <?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;
        Wassi Wassinen
        23 декабря 2015, 23:27
        0
        Подскажите, плагин вешать на событие OnHandleRequest? И после этого ничего в чанках менять не нужно?
          Abu
          Abu
          23 декабря 2015, 23:40
          0
          Да, на OnHandleRequest. Проверяет есть ли граватар и пустой ли профиль, тестировал с Office, все работает. Хотя, логичнее было бы на User(Before,Form)Save и т.п., но насколько я понял, при созданном пользователе подключение доп провайдера юзер не пересохраняется, плюс там еще проблемы с удалением фотки из профиля в Офисе (тут как раз таки сохраняется и не дает назначить другую фотку).
            Abu
            Abu
            23 декабря 2015, 23:51
            0
            Упс по мелочи менял 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');

            как-то так
              Wassi Wassinen
              24 декабря 2015, 07:54
              0
              Благодарю за ответ!
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          26