[ticket/13207] Add default subscription options for newly registered users

PHPBB3-13207
This commit is contained in:
Marc Alexander 2014-10-25 14:50:01 -07:00
parent f22cd2d734
commit 18f24a2270
3 changed files with 38 additions and 4 deletions

View file

@ -161,9 +161,10 @@ function user_update_name($old_name, $new_name)
* *
* @param mixed $user_row An array containing the following keys (and the appropriate values): username, group_id (the group to place the user in), user_email and the user_type(usually 0). Additional entries not overridden by defaults will be forwarded. * @param mixed $user_row An array containing the following keys (and the appropriate values): username, group_id (the group to place the user in), user_email and the user_type(usually 0). Additional entries not overridden by defaults will be forwarded.
* @param string $cp_data custom profile fields, see custom_profile::build_insert_sql_array * @param string $cp_data custom profile fields, see custom_profile::build_insert_sql_array
* @param array $notifications_data The notifications settings for the new user
* @return the new user's ID. * @return the new user's ID.
*/ */
function user_add($user_row, $cp_data = false) function user_add($user_row, $cp_data = false, $notifications_data = array())
{ {
global $db, $user, $auth, $config, $phpbb_root_path, $phpEx; global $db, $user, $auth, $config, $phpbb_root_path, $phpEx;
global $phpbb_dispatcher, $phpbb_container; global $phpbb_dispatcher, $phpbb_container;
@ -347,6 +348,16 @@ function user_add($user_row, $cp_data = false)
set_config('newest_user_colour', $row['group_colour'], true); set_config('newest_user_colour', $row['group_colour'], true);
} }
// Subscribe user to notifications if necessary
if (!empty($notifications_data))
{
$phpbb_notifications = $phpbb_container->get('notification_manager');
foreach ($notifications_data as $subscription)
{
$phpbb_notifications->add_subscription($subscription['item_type'], 0, $subscription['method'], $user_id);
}
}
/** /**
* Event that returns user id, user detals and user CPF of newly registared user * Event that returns user id, user detals and user CPF of newly registared user
* *

View file

@ -314,13 +314,24 @@ class ucp_register
'user_inactive_time' => $user_inactive_time, 'user_inactive_time' => $user_inactive_time,
); );
$user_notifications_data = array(
array(
'item_type' => 'notification.type.post',
'method' => 'notification.method.email',
),
array(
'item_type' => 'notification.type.topic',
'method' => 'notification.method.email',
),
);
if ($config['new_member_post_limit']) if ($config['new_member_post_limit'])
{ {
$user_row['user_new'] = 1; $user_row['user_new'] = 1;
} }
// Register user... // Register user...
$user_id = user_add($user_row, $cp_data); $user_id = user_add($user_row, $cp_data, $user_notifications_data);
// This should not happen, because the required variables are listed above... // This should not happen, because the required variables are listed above...
if ($user_id === false) if ($user_id === false)

View file

@ -45,12 +45,24 @@ class phpbb_functional_registration_test extends phpbb_functional_test_case
$form = $crawler->selectButton('Submit')->form(array( $form = $crawler->selectButton('Submit')->form(array(
'username' => 'user-reg-test', 'username' => 'user-reg-test',
'email' => 'user-reg-test@phpbb.com', 'email' => 'user-reg-test@phpbb.com',
'new_password' => 'testtest', 'new_password' => 'user-reg-testuser-reg-test',
'password_confirm' => 'testtest', 'password_confirm' => 'user-reg-testuser-reg-test',
)); ));
$form['tz']->select('Europe/Berlin'); $form['tz']->select('Europe/Berlin');
$crawler = self::submit($form); $crawler = self::submit($form);
$this->assertContainsLang('ACCOUNT_ADDED', $crawler->filter('#message')->text()); $this->assertContainsLang('ACCOUNT_ADDED', $crawler->filter('#message')->text());
} }
/**
* @depends test_register_new_account
*/
public function test_default_subscription_options()
{
$this->login('user-reg-test');
$crawler = self::request('GET', 'ucp.php?i=ucp_notifications&mode=notification_options&sid=' . $this->sid);
$form_values = $crawler->selectButton('Submit')->form()->getValues();
$this->assertEquals(1, $form_values['notification.type.post_notification.method.email']);
$this->assertEquals(1, $form_values['notification.type.topic_notification.method.email']);
}
} }