Перейти к содержанию

Alexander_M

Пользователи
  • Постов

    21
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Активность репутации

  1. Лайк
    Alexander_M получил реакцию от Quzask в Advanced Online Indication Plugin   
    View File Advanced Online Indication Plugin
    Вспомогательный плагин для определения типа устройства, с которого пользователь посетил форум.
    Так же выложен аддон к моду Online Indication, выложенному пользователю Silence.
    Если установить оба этих плагина, то рядом с именем пользователя в топиках будет отображаться соответствующая пиктограмма (планшет, ПК, мобильный телефон).
    В custom.css необходимо добавить CSS-класс:
    .state-indicator { display: inline-block; font: normal normal normal 14px/1 FontAwesome; font-size: inherit; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } Submitter Alexander_M Submitted 02/05/2017 Category Interface Language Language: ru  
  2. Лайк
    Alexander_M получил реакцию от gudman1 в (SOS40)_Invite_System_2.0.0   
    Добавление аргумента метода означает развитие? ;-)
    Ну вот кстати как раз в phpBB-то никогда посреди минорного апгрейда не менялся программный интерфейс. Там с этим строго.
     
    Ну многоуважаемый, уж простите, что я Вас так сильно задел - выложил тут решение проблемы, описал механизм возникновения. Я просто ужасен. ;-)
  3. Лайк
    Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0   
    Похоже, эта штука ломает дополнительные поля профиля при регистрации. Баг в хуке, перехватывающем контроллер регистрации. Исправление в файле (invite/hooks/is_registerScreen.php):
    public static function _createMember( $values, $profileFields ) { if ( \IPS\Settings::i()->is_on ) { $val = \IPS\Settings::i()->is_requireinvite ? 'invite_code_req' : 'invite_code_opt'; if( $values[ $val ] ) { $invite = \IPS\Db::i()->select( '*', 'invite_invites', array( 'invite_code=?', $values[ $val ] ) )->first(); /* Force email address */ if( \IPS\Settings::i()->is_emailfrominvite ) { if( $values['email_address'] != $invite['invite_invited_email'] ) { \IPS\Output::i()->error( 'is_error_notsameemails', '2S129/1', 403, '' ); } } } } $member = parent::_createMember( $values, $profileFields ); if ( \IPS\Settings::i()->is_on ) { $val = \IPS\Settings::i()->is_requireinvite ? 'invite_code_req' : 'invite_code_opt'; /* Update Member */ if( $values[ $val ] ) { $invite = \IPS\Db::i()->select( '*', 'invite_invites', array( 'invite_code=?', $values[ $val ] ) )->first(); /* Force email address */ if( \IPS\Settings::i()->is_emailfrominvite ) { if( $values['email_address'] != $invite['invite_invited_email'] ) { \IPS\Output::i()->error( 'is_error_notsameemails', '2S129/1', 403, '' ); return $member; } } if( \IPS\Settings::i()->is_registrationgroup_toggle ) { $member->member_group_id = \IPS\Settings::i()->is_registrationgroup; } $member->invited_by = $invite['invite_sender_id']; if( \IPS\Settings::i()->is_registration_earninvitations AND \IPS\Settings::i()->is_registration_earninvitations_nr > 0 ) { $member->invites_remaining = \IPS\Settings::i()->is_registration_earninvitations_nr; } $member->save(); /* Update Invite */ \IPS\Db::i()->update( 'invite_invites', array( 'invite_status' => 1, 'invite_conv_member_id' => $member->member_id, 'invite_conv_date' => time(), 'invite_expiration_date' => 0 ), array( 'invite_id=?', $invite['invite_id'] ) ); } } return $member; }  
  4. Лайк
    Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0   
    Ну, я просто посмотрел на код и там было такое:
    $member = parent::_createMember( $values ); Думаю, Вы понимаете, что это косяк: этому методу должен передаваться второй параметр - массив с дополнительными полями профиля (см. реализацию applications/core/modules/front/system/register.php).
    Я исправил. У нас проблема исчезла.
    Теперь по поводу Вашего товарища с такой же проблемой: тут проблема может быть в каких-то других хуках, или в ошибке совершенно такого же рода в подобном же хуке метода _createMember.
  5. Лайк
    Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0   
    А вообще, этот движок по определению полон сюрпризов - потому что он написан косорукими обезъянами. Даже удивительно, что за него просят денег и он так нравится людям, я как адепт phpBB ещё со времен второй версии, помня, какое качества кода там, поражаюсь тому, какое оно в этом движке.
    Вы кеш почистили естественно? Хуки компиллируются и могли закешироваться.
    Что касается того, что было до 18 версии, а чего не было - порядок наследования мог измениться, и тогда мог просто отработать оригинальный метод без ошибки, по случайности.
    Если проблема у Вас не устраняется даже после отключения плагина и чистки кеша - нужно смотреть какие ещё плагины из установленных у Вас могут перегружать контроллер регистрации. И грешить надо на них.
  6. Лайк
    Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0   
    Ну я Вам выше всё сказал и объяснил, что у Вас могут быть ещё источники проблем.
    Моё дело маленькое - указать на явный баг (я Вам привел строчку) и предложить исправление.
    Успехов!
  7. Лайк
    Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0   
    Ну, собственно, разобрались. Мои слова про косоруких обезъян подтверждены.
    Разработчики поменяли интерфейс функции _createMember в версии 4.1.18.
    Вот результаты сравнения:
    diff -r ./17 ./18 > 17_to_18.txt < * @param array $values Values from form --- > * @param array $values Values from form > * @param array $profileFields Profile field values from registration 369c368 < public static function _createMember( $values ) --- > public static function _createMember( $values, $profileFields ) Таким образом все плагины, перегружающие этот метод будут работать некорректно, начиная с версии 4.1.18, если их не поправить аналогичным тому, как это сделали мы, образом.
    В Release Notes ни слова... я в шоке.
  8. Лайк
    Alexander_M получил реакцию от gudman1 в (SOS40)_Invite_System_2.0.0   
    Ну, собственно, разобрались. Мои слова про косоруких обезъян подтверждены.
    Разработчики поменяли интерфейс функции _createMember в версии 4.1.18.
    Вот результаты сравнения:
    diff -r ./17 ./18 > 17_to_18.txt < * @param array $values Values from form --- > * @param array $values Values from form > * @param array $profileFields Profile field values from registration 369c368 < public static function _createMember( $values ) --- > public static function _createMember( $values, $profileFields ) Таким образом все плагины, перегружающие этот метод будут работать некорректно, начиная с версии 4.1.18, если их не поправить аналогичным тому, как это сделали мы, образом.
    В Release Notes ни слова... я в шоке.
  9. Лайк
    Alexander_M получил реакцию от gudman1 в (SOS40)_Invite_System_2.0.0   
    Ну, я просто посмотрел на код и там было такое:
    $member = parent::_createMember( $values ); Думаю, Вы понимаете, что это косяк: этому методу должен передаваться второй параметр - массив с дополнительными полями профиля (см. реализацию applications/core/modules/front/system/register.php).
    Я исправил. У нас проблема исчезла.
    Теперь по поводу Вашего товарища с такой же проблемой: тут проблема может быть в каких-то других хуках, или в ошибке совершенно такого же рода в подобном же хуке метода _createMember.
  10. Лайк
    Alexander_M получил реакцию от gudman1 в (SOS40)_Invite_System_2.0.0   
    Похоже, эта штука ломает дополнительные поля профиля при регистрации. Баг в хуке, перехватывающем контроллер регистрации. Исправление в файле (invite/hooks/is_registerScreen.php):
    public static function _createMember( $values, $profileFields ) { if ( \IPS\Settings::i()->is_on ) { $val = \IPS\Settings::i()->is_requireinvite ? 'invite_code_req' : 'invite_code_opt'; if( $values[ $val ] ) { $invite = \IPS\Db::i()->select( '*', 'invite_invites', array( 'invite_code=?', $values[ $val ] ) )->first(); /* Force email address */ if( \IPS\Settings::i()->is_emailfrominvite ) { if( $values['email_address'] != $invite['invite_invited_email'] ) { \IPS\Output::i()->error( 'is_error_notsameemails', '2S129/1', 403, '' ); } } } } $member = parent::_createMember( $values, $profileFields ); if ( \IPS\Settings::i()->is_on ) { $val = \IPS\Settings::i()->is_requireinvite ? 'invite_code_req' : 'invite_code_opt'; /* Update Member */ if( $values[ $val ] ) { $invite = \IPS\Db::i()->select( '*', 'invite_invites', array( 'invite_code=?', $values[ $val ] ) )->first(); /* Force email address */ if( \IPS\Settings::i()->is_emailfrominvite ) { if( $values['email_address'] != $invite['invite_invited_email'] ) { \IPS\Output::i()->error( 'is_error_notsameemails', '2S129/1', 403, '' ); return $member; } } if( \IPS\Settings::i()->is_registrationgroup_toggle ) { $member->member_group_id = \IPS\Settings::i()->is_registrationgroup; } $member->invited_by = $invite['invite_sender_id']; if( \IPS\Settings::i()->is_registration_earninvitations AND \IPS\Settings::i()->is_registration_earninvitations_nr > 0 ) { $member->invites_remaining = \IPS\Settings::i()->is_registration_earninvitations_nr; } $member->save(); /* Update Invite */ \IPS\Db::i()->update( 'invite_invites', array( 'invite_status' => 1, 'invite_conv_member_id' => $member->member_id, 'invite_conv_date' => time(), 'invite_expiration_date' => 0 ), array( 'invite_id=?', $invite['invite_id'] ) ); } } return $member; }  
  11. Лайк
    Alexander_M отреагировална пост WOLF в Нужна помощь.   
    АЛЛООО УАСЯ
     
  12. Лайк
    Alexander_M отреагировална пост Silence в Advanced Online Indication Plugin   
    Поставит ето в custom.css и все в порядке:
    .state-indicator { display: inline-block; font: normal normal normal 14px/1 FontAwesome; font-size: inherit; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }  
  13. Лайк
    Alexander_M получил реакцию от Silence в Advanced Online Indication Plugin   
    Какие настройки стояли у плагина? Обнаружилась проблема в функции, связанной с индикацией статуса онлайн в аватарах. Если при её включении форум падал - то да, новая версия в аттаче.
     
    Lafko, а вот тут по подробнее. Судя по скриншоту, гугл тут ни при чем, - Вы используете какой-то WAF, видимо. И вероятно об на основе эврестического алгоритма блокирует загрузку файла с кодом... Но это уже телепатия. Нужно конкретное описание, как мне воспроизвести проблему.
    Online_Indicator_1_0_8.xml
    Господа, когда вы пишите о какой-то проблеме, пожалуйста описывайте подробнее, что и как вы делаете. Иначе всё будет очень медленно исправляться, а я буду быстро уставать и в следующий раз поленюсь выкладывать.
  14. Лайк
    Alexander_M получил реакцию от gudman1 в Online Indicator   
    Silence, дайте ссылочку на тему Вашего форума - посмотрим что там.
    Предыдущий плагин Online Indicator Вы просто удалили? И затем установили заново, я верно понимаю? (Теоретически, я мог накосячить в инструкции, но проверил только что ещё раз, - всё верно.)
    А, и ещё. Тоже поможет для выяснения проблемы - если навести на значок, то какая надпись появляется? (Там есть всплывающая подсказка, где текстом написано.)
    Возможно так же, что вы не завершили php сессию (т.е. кнопочку выход не нажали). Это тоже может быть источником такой проблемы. Иногда в таблице сессий для одного пользователя бывает и две строчки... (такое я уже ловил и, по-хорошему, это конечно косяк движка). Обычно нужно несколько раз обновить страницу с нового устройства и всё должно быть ок.
  15. Лайк
    Alexander_M получил реакцию от Respected в Online Indicator   
    Ладно, у меня прошел приступ лени.
    Но внимание, ПЕРЕД установкой этого плагина обязательно установите Advanced Online Indicator. (Я имею ввиду именно эту версию Online Indicator.)
    Online_Indicator_1_0_7.xml
  16. Лайк
    Alexander_M получил реакцию от gudman1 в Online Indicator   
    Ладно, у меня прошел приступ лени.
    Но внимание, ПЕРЕД установкой этого плагина обязательно установите Advanced Online Indicator. (Я имею ввиду именно эту версию Online Indicator.)
    Online_Indicator_1_0_7.xml
  17. Лайк
    Alexander_M получил реакцию от gudman1 в Online Indicator   
    Это "служебный" плагин. Он расширяет класс \IPS\Member добавляя набор методов для определения типа устройства. (См. исходник.)
    Предлагается небольшой патч для плагина тов. Silence:
    В custom.css достаточно оставить:
    .state-indicator { display: inline-block; font: normal normal normal 14px/1 FontAwesome; font-size: inherit; text-rendering: auto; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } В хуках:
    {{if $comment->author()->isOnline()}}<i class="state-indicator ipsOnlineStatus_online" data-ipsTooltip title="Пользователь в сети с {$comment->author()->_isOnlineFromName()}">{$comment->author()->_isOnlineFromSymbol()}</i>{{else}}<i class="fa {setting="onlineIndicator_iconOffline"} ipsOnlineStatus_offline" data-ipsTooltip title="{lang="offline" sprintf="$comment->author()->name"}"></i>{{endif}} Думаю, логика понятна и автор поправит свой плагин.
    На нашем форуме эта штука уже работает.
    Advanced Online Indicator.xml
  18. Лайк
    Alexander_M получил реакцию от Respected в Пинговалка блогов Яндекса   
    Господа, пусть человек порадуется своему авторству и успеху. Что нам, жалко что-ли?
    Мод бесплатный и свободный. Лицензию ему не приписывали. Пусть хоть миллион копий создает и распространяет с разными URL - на свой сайт, на сайт товарища, на свою страничку ВКонтакте, на страничку своей собаки.
    Главное, чтобы эта штука была полезна людям.
  19. Лайк
    Alexander_M получил реакцию от Silence в Пинговалка блогов Яндекса   
    Господа, у кого дупликаты, опишите подробнее, пожалуйста.
    У Вас стоят какие-то ещё плагины? У нас на боевом форуме стоит эта штука - никаких дупликатов не появляется.
    September^^, хорошо. Надо только посмотреть, можно ли у гугла проверить доходят ли "пинги". У Яндекса они выгружают XML файл. Я тестил - пинги исправно доходят, всё ок.
  20. Лайк
    Alexander_M получил реакцию от Silence в Пинговалка блогов Яндекса   
    Ну, в общем возможная причина мне ясна.
    Двиг "оборачивает" кастомный код статического метода create в try {} catch(..) {} из-за чего при возникновении RuntimeException возможен повторный вызов метода create родительского класса. А он-то как раз и создает сообщение.
    Таким образом, господа, workaround - те, у кого проблема с дублированием, у ваc вероятнее всего что-то с cURL. Возможно он не установлен, возможно запрещены внешние коннекты. В общем, проверьте что у вас в phpinfo() насчет cURL.
    Upd: забыл добавить, что XML-RPC расширение тоже надо проверить.
    Дело тут в том, что двиг эти хуки компиллит динамически, на этапе исполнения. И потом evalит. Поэтому критические ошибки PHP, которые должны были бы свалить страницу  совсем её не валят, а преобразовываются в исключения.
    Те, кому надо исправить быстро - проверьте в phpinfo наличие curl и xmlrpc. А по сути, я на днях, как дойдут руки, поправлю этот дурацкий автосгенерированный try catch и выложу новую версию плагина. Сейчас со временем ппц облом.
  21. Лайк
    Alexander_M получил реакцию от Silence в Пинговалка блогов Яндекса   
    Господа, пусть человек порадуется своему авторству и успеху. Что нам, жалко что-ли?
    Мод бесплатный и свободный. Лицензию ему не приписывали. Пусть хоть миллион копий создает и распространяет с разными URL - на свой сайт, на сайт товарища, на свою страничку ВКонтакте, на страничку своей собаки.
    Главное, чтобы эта штука была полезна людям.
  22. Лайк
    Alexander_M отреагировална пост Sipsb в Пинговалка блогов Яндекса   
    Соглашусь целиком и полностью, что нужно соблюдать субординацию. Как минимум это же и есть мотивация к созданию бесплатного и нужного.
  23. Лайк
    Alexander_M получил реакцию от gudman1 в Пинговалка блогов Яндекса   
    Господа, пусть человек порадуется своему авторству и успеху. Что нам, жалко что-ли?
    Мод бесплатный и свободный. Лицензию ему не приписывали. Пусть хоть миллион копий создает и распространяет с разными URL - на свой сайт, на сайт товарища, на свою страничку ВКонтакте, на страничку своей собаки.
    Главное, чтобы эта штука была полезна людям.
  24. Лайк
    Alexander_M получил реакцию от gudman1 в Пинговалка блогов Яндекса   
    Ну, в общем возможная причина мне ясна.
    Двиг "оборачивает" кастомный код статического метода create в try {} catch(..) {} из-за чего при возникновении RuntimeException возможен повторный вызов метода create родительского класса. А он-то как раз и создает сообщение.
    Таким образом, господа, workaround - те, у кого проблема с дублированием, у ваc вероятнее всего что-то с cURL. Возможно он не установлен, возможно запрещены внешние коннекты. В общем, проверьте что у вас в phpinfo() насчет cURL.
    Upd: забыл добавить, что XML-RPC расширение тоже надо проверить.
    Дело тут в том, что двиг эти хуки компиллит динамически, на этапе исполнения. И потом evalит. Поэтому критические ошибки PHP, которые должны были бы свалить страницу  совсем её не валят, а преобразовываются в исключения.
    Те, кому надо исправить быстро - проверьте в phpinfo наличие curl и xmlrpc. А по сути, я на днях, как дойдут руки, поправлю этот дурацкий автосгенерированный try catch и выложу новую версию плагина. Сейчас со временем ппц облом.
×
×
  • Создать...