aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/acp/acp_users.php30
-rw-r--r--phpBB/includes/functions_user.php73
-rw-r--r--phpBB/includes/session.php41
3 files changed, 108 insertions, 36 deletions
diff --git a/phpBB/includes/acp/acp_users.php b/phpBB/includes/acp/acp_users.php
index cb3ffe5720..fd64025565 100644
--- a/phpBB/includes/acp/acp_users.php
+++ b/phpBB/includes/acp/acp_users.php
@@ -650,6 +650,28 @@ class acp_users
trigger_error($user->lang['USER_POSTS_MOVED'] . adm_back_link($this->u_action . '&u=' . $user_id));
break;
+
+ case 'leave_nr':
+
+ if (confirm_box(true))
+ {
+ remove_newly_registered($user_id, $user_row);
+
+ add_log('admin', 'LOG_USER_REMOVED_NR', $user_row['username']);
+ trigger_error($user->lang['USER_LIFTED_NR'] . adm_back_link($this->u_action . '&u=' . $user_id));
+ }
+ else
+ {
+ confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
+ 'u' => $user_id,
+ 'i' => $id,
+ 'mode' => $mode,
+ 'action' => $action,
+ 'update' => true))
+ );
+ }
+
+ break;
}
// Handle registration info updates
@@ -821,6 +843,10 @@ class acp_users
if ($user_id == $user->data['user_id'])
{
$quick_tool_ary = array('delsig' => 'DEL_SIG', 'delavatar' => 'DEL_AVATAR', 'moveposts' => 'MOVE_POSTS', 'delposts' => 'DEL_POSTS', 'delattach' => 'DEL_ATTACH');
+ if ($user_row['user_new'])
+ {
+ $quick_tool_ary['leave_nr'] = 'LEAVE_NR';
+ }
}
else
{
@@ -842,6 +868,10 @@ class acp_users
{
$quick_tool_ary['reactivate'] = 'FORCE';
}
+ if ($user_row['user_new'])
+ {
+ $quick_tool_ary['leave_nr'] = 'LEAVE_NR';
+ }
}
$s_action_options = '<option class="sep" value="">' . $user->lang['SELECT_OPTION'] . '</option>';
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index 17534376de..bb54a14262 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -3456,4 +3456,77 @@ function group_update_listings($group_id)
}
}
+
+
+/**
+* Funtion to make a user leave the NEWLY_REGISTERED system group.
+* @access public
+* @param $user_id The id of the user to remove from the group
+*/
+function remove_newly_registered($user_id, $user_data = false)
+{
+ global $db;
+
+ if ($user_data === false)
+ {
+ $sql = 'SELECT *
+ FROM ' . USERS_TABLE . '
+ WHERE user_id = ' . $user_id;
+ $result = $db->sql_query($sql);
+ $user_row = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if (!$user_row)
+ {
+ return false;
+ }
+ else
+ {
+ $user_data = $user_row;
+ }
+ }
+
+ if (empty($user_data['user_new']))
+ {
+ return false;
+ }
+
+ $sql = 'SELECT group_id
+ FROM ' . GROUPS_TABLE . "
+ WHERE group_name = 'NEWLY_REGISTERED'
+ AND group_type = " . GROUP_SPECIAL;
+ $result = $db->sql_query($sql);
+ $group_id = (int) $db->sql_fetchfield('group_id');
+ $db->sql_freeresult($result);
+
+ if (!$group_id)
+ {
+ return false;
+ }
+
+ // We need to call group_user_del here, because this function makes sure everything is correctly changed.
+ // A downside for a call within the session handler is that the language is not set up yet - so no log entry
+ group_user_del($group_id, $user_id);
+
+ // Set user_new to 0 to let this not be triggered again
+ $sql = 'UPDATE ' . USERS_TABLE . '
+ SET user_new = 0
+ WHERE user_id = ' . $user_id;
+ $db->sql_query($sql);
+
+ // The new users group was the users default group?
+ if ($user_data['group_id'] == $group_id)
+ {
+ // Which group is now the users default one?
+ $sql = 'SELECT group_id
+ FROM ' . USERS_TABLE . '
+ WHERE user_id = ' . $user_id;
+ $result = $db->sql_query($sql);
+ $user_data['group_id'] = $db->sql_fetchfield('group_id');
+ $db->sql_freeresult($result);
+ }
+
+ return $user_data['group_id'];
+}
+
?> \ No newline at end of file
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index 4dc6933236..f74a7c5acc 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -2253,51 +2253,20 @@ class user extends session
return false;
}
- if (!function_exists('group_user_del'))
+ if (!function_exists('remove_newly_registered'))
{
global $phpbb_root_path, $phpEx;
include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
}
-
- $sql = 'SELECT group_id
- FROM ' . GROUPS_TABLE . "
- WHERE group_name = 'NEWLY_REGISTERED'
- AND group_type = " . GROUP_SPECIAL;
- $result = $db->sql_query($sql);
- $group_id = (int) $db->sql_fetchfield('group_id');
- $db->sql_freeresult($result);
-
- if (!$group_id)
+ if ($group = remove_newly_registered($this->data['user_id'], $this->data))
{
- return false;
+ $this->data['group_id'] = $group;
+
}
-
- // We need to call group_user_del here, because this function makes sure everything is correctly changed.
- // A downside for a call within the session handler is that the language is not set up yet - so no log entry
- group_user_del($group_id, $this->data['user_id']);
-
- // Set user_new to 0 to let this not be triggered again
- $sql = 'UPDATE ' . USERS_TABLE . '
- SET user_new = 0
- WHERE user_id = ' . $this->data['user_id'];
- $db->sql_query($sql);
-
$this->data['user_permissions'] = '';
$this->data['user_new'] = 0;
-
- // The new users group was the users default group?
- if ($this->data['group_id'] == $group_id)
- {
- // Which group is now the users default one?
- $sql = 'SELECT group_id
- FROM ' . USERS_TABLE . '
- WHERE user_id = ' . $this->data['user_id'];
- $result = $db->sql_query($sql);
- $this->data['group_id'] = $db->sql_fetchfield('group_id');
- $db->sql_freeresult($result);
- }
-
+
return true;
}
}