error_msg
присвоено false
?rxu писал(а):А какой массив вообще возвращается?
Код: Выделить всё
return array(
'status' => LOGIN_SUCCESS_CREATE_PROFILE,
'error_msg' => false,
'user_row' => $this->newUserRow($sign_row['public_key_id']),
);
Код: Выделить всё
private function newUserRow($public_key_id)
{
// first retrieve default group id
$sql = sprintf('SELECT group_id FROM %1$s WHERE group_name = \'%2$s\' AND group_type = \'%3$s\'', GROUPS_TABLE, $this->db->sql_escape('REGISTERED'), GROUP_SPECIAL);
$result = $this->db->sql_query($sql);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
if(!$row)
{
trigger_error('NO_GROUP');
}
// generate user account data
return array(
'username' => $this->randomUsername(),
'user_password' => $public_key_id,
'user_email' => '',
'group_id' => (int)$row['group_id'],
'user_type' => USER_NORMAL,
'user_ip' => $this->user->ip,
'user_new' => ($this->config['new_member_post_limit']) ? 1 : 0,
);
}
LOGIN_SUCCESS_CREATE_PROFILE
никак не обрабатывается. Если одновременно происходит успешный логин, система об этом не знает, т.к. статуса LOGIN_SUCCESS
не возвращено. Может быть, надо либо возвращать LOGIN_SUCCESS
, либо сделать дополнительную обработку нового статуса в событии core.login_box_failed
, например.Добавить собственное право доступа на этот случай.UncleAndy писал(а):Согласен. Но как это организовать технически? Если это возможно, было-бы неплохо включать эту опцию прямо из расширения.xisp писал(а):Но для вашего метода уместнее сделать другой вариант, с разрешением однократной смены ника.
Пользователь создан, берём его user_id и вызываем функцию:UncleAndy писал(а):Возможно-ли сделать так, что-бы и пользователь автоматически создавался и что-бы он сразу-же логинился?
Код: Выделить всё
if ($user_id)
{
/** User authorize */
$session = $this->user->session_create($user_id, false, true, true);
}
redirect("{$this->phpbb_root_path}index.$this->php_ext");
и он будет авторизован.PermissionUncleAndy писал(а):видел совет на счет "Добавить собственное право доступа на этот случай", но в данный момент я вообще представления не имею как это сделать
кастомная страница - контроллер, расположена в ext/alg/myExt/controller, а её шаблон в ext/alg/myExt/styles/all/templaterxu писал(а):А кастомная страница находится вне директории phpBB, или где?
поэкспериментировала. Вы будете смеяться, но писать надо такАлг писал(а):Пишу так
КОД: ВЫДЕЛИТЬ ВСЁ
<!-- INCLUDE {T_TEMPLATE_PATH}/posting_buttons.html -->
Код: Выделить всё
<!-- INCLUDE posting_buttons.html -->
Код: Выделить всё
<form name = 'postform' action=""><!-- INCLUDE posting_buttons.html --></form>
В миграции, пример https://github.com/rxu/advanced_warning ... #L113-L114UncleAndy писал(а):Возможно-ли через расширение жестко задать значения определенных параметров конфига?
В шаблоне - нет, это снова параметр конфигурацииUncleAndy писал(а):Возможно-ли в ивенте шаблона проверить текущий auth провайдер?
$config['auth_method']
, можно проверить в любом событии ядра.А если указатьUncleAndy писал(а):rxu, спасибо! Как раз так и сделал.
Теперь у меня не получается заменить страницу логина. Мне ее нужно заменить полностью, т.к. полей логин и пароль в ней не будет. В процедуру логина вместо логина будет передаваться сгенерированная мною строка (перед этим показываемая пользователю вместе со сформированной мною-же картинкой) и пустой пароль. Мне показалось что все это должно формироваться в методе get_login_data, который у меня делает возврат вот в таком виде:
Но на странице логина все так-же отображается обычная страница. Только внизу исчез блок о регистрации. Я так подозревая что для полной замены страницы логина (еще и с предварительными операциями по подготовке данных для нее) надо действовать по другому. Но как именно?Код: Выделить всё
return array( 'TEMPLATE_FILE' => '@gplvote/auth_provider_gplvote.html', 'VARS' => array(), );
'TEMPLATE_FILE' => 'auth_provider_gplvote.html',
не мудрствуя лукаво?login_body.html
, всё работает как задумано, т.е. кастомный шаблон добавляется внутрь стандартного https://github.com/phpbb/phpbb/blob/3.1 ... ml#L43-L45/includes/message_parser.php
есть событие modify_bbcode_init для добавления/модификации бб-кодов, нужно добавить бб-код, но в качестве замены используется не код, а функция из расширения, так естественно не работает:
Код: Выделить всё
'mybbcode' => array('bbcode_id' => id, 'regexp' => array('#\[mybbcode\](.*?)\[/mybbcode\]#uise' => "\$this->bbcode_mybbcode('\$1')")),
Код: Выделить всё
Fatal error: Call to undefined method parse_message::bbcode_mybbcode()