Alexander_M
-
Постов
21 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Активность репутации
-
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
-
Alexander_M получил реакцию от gudman1 в (SOS40)_Invite_System_2.0.0
Добавление аргумента метода означает развитие? ;-)
Ну вот кстати как раз в phpBB-то никогда посреди минорного апгрейда не менялся программный интерфейс. Там с этим строго.
Ну многоуважаемый, уж простите, что я Вас так сильно задел - выложил тут решение проблемы, описал механизм возникновения. Я просто ужасен. ;-)
-
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; }
-
Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0
Ну, я просто посмотрел на код и там было такое:
$member = parent::_createMember( $values ); Думаю, Вы понимаете, что это косяк: этому методу должен передаваться второй параметр - массив с дополнительными полями профиля (см. реализацию applications/core/modules/front/system/register.php).
Я исправил. У нас проблема исчезла.
Теперь по поводу Вашего товарища с такой же проблемой: тут проблема может быть в каких-то других хуках, или в ошибке совершенно такого же рода в подобном же хуке метода _createMember.
-
Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0
А вообще, этот движок по определению полон сюрпризов - потому что он написан косорукими обезъянами. Даже удивительно, что за него просят денег и он так нравится людям, я как адепт phpBB ещё со времен второй версии, помня, какое качества кода там, поражаюсь тому, какое оно в этом движке.
Вы кеш почистили естественно? Хуки компиллируются и могли закешироваться.
Что касается того, что было до 18 версии, а чего не было - порядок наследования мог измениться, и тогда мог просто отработать оригинальный метод без ошибки, по случайности.
Если проблема у Вас не устраняется даже после отключения плагина и чистки кеша - нужно смотреть какие ещё плагины из установленных у Вас могут перегружать контроллер регистрации. И грешить надо на них.
-
Alexander_M получил реакцию от Redneck в (SOS40)_Invite_System_2.0.0
Ну я Вам выше всё сказал и объяснил, что у Вас могут быть ещё источники проблем.
Моё дело маленькое - указать на явный баг (я Вам привел строчку) и предложить исправление.
Успехов!
-
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 ни слова... я в шоке.
-
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 ни слова... я в шоке.
-
Alexander_M получил реакцию от gudman1 в (SOS40)_Invite_System_2.0.0
Ну, я просто посмотрел на код и там было такое:
$member = parent::_createMember( $values ); Думаю, Вы понимаете, что это косяк: этому методу должен передаваться второй параметр - массив с дополнительными полями профиля (см. реализацию applications/core/modules/front/system/register.php).
Я исправил. У нас проблема исчезла.
Теперь по поводу Вашего товарища с такой же проблемой: тут проблема может быть в каких-то других хуках, или в ошибке совершенно такого же рода в подобном же хуке метода _createMember.
-
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; }
-
-
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; }
-
Alexander_M получил реакцию от Silence в Advanced Online Indication Plugin
Какие настройки стояли у плагина? Обнаружилась проблема в функции, связанной с индикацией статуса онлайн в аватарах. Если при её включении форум падал - то да, новая версия в аттаче.
Lafko, а вот тут по подробнее. Судя по скриншоту, гугл тут ни при чем, - Вы используете какой-то WAF, видимо. И вероятно об на основе эврестического алгоритма блокирует загрузку файла с кодом... Но это уже телепатия. Нужно конкретное описание, как мне воспроизвести проблему.
Online_Indicator_1_0_8.xml
Господа, когда вы пишите о какой-то проблеме, пожалуйста описывайте подробнее, что и как вы делаете. Иначе всё будет очень медленно исправляться, а я буду быстро уставать и в следующий раз поленюсь выкладывать.
-
Alexander_M получил реакцию от gudman1 в Online Indicator
Silence, дайте ссылочку на тему Вашего форума - посмотрим что там.
Предыдущий плагин Online Indicator Вы просто удалили? И затем установили заново, я верно понимаю? (Теоретически, я мог накосячить в инструкции, но проверил только что ещё раз, - всё верно.)
А, и ещё. Тоже поможет для выяснения проблемы - если навести на значок, то какая надпись появляется? (Там есть всплывающая подсказка, где текстом написано.)
Возможно так же, что вы не завершили php сессию (т.е. кнопочку выход не нажали). Это тоже может быть источником такой проблемы. Иногда в таблице сессий для одного пользователя бывает и две строчки... (такое я уже ловил и, по-хорошему, это конечно косяк движка). Обычно нужно несколько раз обновить страницу с нового устройства и всё должно быть ок.
-
Alexander_M получил реакцию от Respected в Online Indicator
Ладно, у меня прошел приступ лени.
Но внимание, ПЕРЕД установкой этого плагина обязательно установите Advanced Online Indicator. (Я имею ввиду именно эту версию Online Indicator.)
Online_Indicator_1_0_7.xml
-
Alexander_M получил реакцию от gudman1 в Online Indicator
Ладно, у меня прошел приступ лени.
Но внимание, ПЕРЕД установкой этого плагина обязательно установите Advanced Online Indicator. (Я имею ввиду именно эту версию Online Indicator.)
Online_Indicator_1_0_7.xml
-
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
-
Alexander_M получил реакцию от Respected в Пинговалка блогов Яндекса
Господа, пусть человек порадуется своему авторству и успеху. Что нам, жалко что-ли?
Мод бесплатный и свободный. Лицензию ему не приписывали. Пусть хоть миллион копий создает и распространяет с разными URL - на свой сайт, на сайт товарища, на свою страничку ВКонтакте, на страничку своей собаки.
Главное, чтобы эта штука была полезна людям.
-
Alexander_M получил реакцию от Silence в Пинговалка блогов Яндекса
Господа, у кого дупликаты, опишите подробнее, пожалуйста.
У Вас стоят какие-то ещё плагины? У нас на боевом форуме стоит эта штука - никаких дупликатов не появляется.
September^^, хорошо. Надо только посмотреть, можно ли у гугла проверить доходят ли "пинги". У Яндекса они выгружают XML файл. Я тестил - пинги исправно доходят, всё ок.
-
Alexander_M получил реакцию от Silence в Пинговалка блогов Яндекса
Ну, в общем возможная причина мне ясна.
Двиг "оборачивает" кастомный код статического метода create в try {} catch(..) {} из-за чего при возникновении RuntimeException возможен повторный вызов метода create родительского класса. А он-то как раз и создает сообщение.
Таким образом, господа, workaround - те, у кого проблема с дублированием, у ваc вероятнее всего что-то с cURL. Возможно он не установлен, возможно запрещены внешние коннекты. В общем, проверьте что у вас в phpinfo() насчет cURL.
Upd: забыл добавить, что XML-RPC расширение тоже надо проверить.
Дело тут в том, что двиг эти хуки компиллит динамически, на этапе исполнения. И потом evalит. Поэтому критические ошибки PHP, которые должны были бы свалить страницу совсем её не валят, а преобразовываются в исключения.
Те, кому надо исправить быстро - проверьте в phpinfo наличие curl и xmlrpc. А по сути, я на днях, как дойдут руки, поправлю этот дурацкий автосгенерированный try catch и выложу новую версию плагина. Сейчас со временем ппц облом.
-
Alexander_M получил реакцию от Silence в Пинговалка блогов Яндекса
Господа, пусть человек порадуется своему авторству и успеху. Что нам, жалко что-ли?
Мод бесплатный и свободный. Лицензию ему не приписывали. Пусть хоть миллион копий создает и распространяет с разными URL - на свой сайт, на сайт товарища, на свою страничку ВКонтакте, на страничку своей собаки.
Главное, чтобы эта штука была полезна людям.
-
Alexander_M отреагировална пост Sipsb в Пинговалка блогов Яндекса
Соглашусь целиком и полностью, что нужно соблюдать субординацию. Как минимум это же и есть мотивация к созданию бесплатного и нужного.
-
Alexander_M получил реакцию от gudman1 в Пинговалка блогов Яндекса
Господа, пусть человек порадуется своему авторству и успеху. Что нам, жалко что-ли?
Мод бесплатный и свободный. Лицензию ему не приписывали. Пусть хоть миллион копий создает и распространяет с разными URL - на свой сайт, на сайт товарища, на свою страничку ВКонтакте, на страничку своей собаки.
Главное, чтобы эта штука была полезна людям.
-
Alexander_M получил реакцию от gudman1 в Пинговалка блогов Яндекса
Ну, в общем возможная причина мне ясна.
Двиг "оборачивает" кастомный код статического метода create в try {} catch(..) {} из-за чего при возникновении RuntimeException возможен повторный вызов метода create родительского класса. А он-то как раз и создает сообщение.
Таким образом, господа, workaround - те, у кого проблема с дублированием, у ваc вероятнее всего что-то с cURL. Возможно он не установлен, возможно запрещены внешние коннекты. В общем, проверьте что у вас в phpinfo() насчет cURL.
Upd: забыл добавить, что XML-RPC расширение тоже надо проверить.
Дело тут в том, что двиг эти хуки компиллит динамически, на этапе исполнения. И потом evalит. Поэтому критические ошибки PHP, которые должны были бы свалить страницу совсем её не валят, а преобразовываются в исключения.
Те, кому надо исправить быстро - проверьте в phpinfo наличие curl и xmlrpc. А по сути, я на днях, как дойдут руки, поправлю этот дурацкий автосгенерированный try catch и выложу новую версию плагина. Сейчас со временем ппц облом.