Summary
ucp_listener::ucp_register_set_data() subscribes to core.ucp_register_data_after and reads $event['user_id'] to UPDATE the new account's user_rt_* columns with the board-wide defaults.
core.ucp_register_data_after (triggered in includes/ucp/ucp_register.php) only ever provides submit, data, cp_data, error — no user_id. It also fires during form validation, before user_add() is called (user_id doesn't exist yet at that point in the request at all).
So (int) $event['user_id'] evaluates to (int) null = 0, and the UPDATE runs as:
UPDATE phpbb_users SET user_rt_enable = ..., ... WHERE user_id = 0
which updates no real row. New accounts keep whatever the user_rt_* columns default to at the schema level instead of the "new users inherit ACP defaults on registration" feature actually applying.
Location
avathar/recenttopics/event/ucp_listener.php:
getSubscribedEvents(): 'core.ucp_register_data_after' => 'ucp_register_set_data'
ucp_register_set_data($event): builds $sql_ary from config defaults, then WHERE user_id = ' . (int) $event['user_id']
Fix
Subscribe to core.ucp_register_register_after or core.user_add_after instead — both fire after user_add() succeeds and both provide a real user_id in the event data. core.ucp_register_register_after is triggered in includes/ucp/ucp_register.php with user_id explicitly in its vars list.
Summary
ucp_listener::ucp_register_set_data()subscribes tocore.ucp_register_data_afterand reads$event['user_id']to UPDATE the new account'suser_rt_*columns with the board-wide defaults.core.ucp_register_data_after(triggered inincludes/ucp/ucp_register.php) only ever providessubmit,data,cp_data,error— nouser_id. It also fires during form validation, beforeuser_add()is called (user_iddoesn't exist yet at that point in the request at all).So
(int) $event['user_id']evaluates to(int) null=0, and the UPDATE runs as:which updates no real row. New accounts keep whatever the
user_rt_*columns default to at the schema level instead of the "new users inherit ACP defaults on registration" feature actually applying.Location
avathar/recenttopics/event/ucp_listener.php:getSubscribedEvents():'core.ucp_register_data_after' => 'ucp_register_set_data'ucp_register_set_data($event): builds$sql_aryfrom config defaults, thenWHERE user_id = ' . (int) $event['user_id']Fix
Subscribe to
core.ucp_register_register_afterorcore.user_add_afterinstead — both fire afteruser_add()succeeds and both provide a realuser_idin the event data.core.ucp_register_register_afteris triggered inincludes/ucp/ucp_register.phpwithuser_idexplicitly in its vars list.