aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2006-03-22 11:13:33 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2006-03-22 11:13:33 +0000
commit267e4d46164229ffb8119e7fcee54fbd862349bf (patch)
treef970942a3fc73b7c1ef602490163dbb54be20e6f
parent6e166aa889e30c639c4914f14a41093d708594ad (diff)
downloadforums-267e4d46164229ffb8119e7fcee54fbd862349bf.tar
forums-267e4d46164229ffb8119e7fcee54fbd862349bf.tar.gz
forums-267e4d46164229ffb8119e7fcee54fbd862349bf.tar.bz2
forums-267e4d46164229ffb8119e7fcee54fbd862349bf.tar.xz
forums-267e4d46164229ffb8119e7fcee54fbd862349bf.zip
fix pruning of users
git-svn-id: file:///svn/phpbb/trunk@5696 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r--phpBB/includes/acp/acp_prune.php60
-rw-r--r--phpBB/includes/functions_user.php33
2 files changed, 41 insertions, 52 deletions
diff --git a/phpBB/includes/acp/acp_prune.php b/phpBB/includes/acp/acp_prune.php
index 1fd98af67f..5ffe45dc83 100644
--- a/phpBB/includes/acp/acp_prune.php
+++ b/phpBB/includes/acp/acp_prune.php
@@ -17,9 +17,10 @@ class acp_prune
function main($id, $mode)
{
- global $user, $phpEx, $SID, $phpbb_admin_path;
+ global $user, $phpEx, $SID, $phpbb_admin_path, $phpbb_root_path;
$user->add_lang('acp/prune');
+ include_once($phpbb_root_path . 'includes/functions_user.' . $phpEx);
switch ($mode)
{
@@ -258,63 +259,48 @@ class acp_prune
$where_sql = '';
$user_ids = $usernames = array();
- if ($row = $db->sql_fetchrow($result))
+ while ($row = $db->sql_fetchrow($result))
{
- do
- {
- if (!in_array($row['user_id'], $bot_ids))
- {
- $where_sql .= (($where_sql != '') ? ', ' : '') . $row['user_id'];
- $user_ids[] = $row['user_id'];
- $usernames[] = $row['username'];
- }
- }
- while ($row = $db->sql_fetchrow($result));
-
- if ($where_sql)
+ if (!in_array($row['user_id'], $bot_ids))
{
- $where_sql = " AND user_id IN ($where_sql)";
+ $user_ids[] = $row['user_id'];
+ $usernames[$row['user_id']] = $row['username'];
}
}
$db->sql_freeresult($result);
- if ($where_sql)
+ if (sizeof($user_ids))
{
- $sql = '';
+ if ($action == 'deactivate')
+ {
+ foreach ($user_ids as $user_id)
+ {
+ user_active_flip($user_id, USER_NORMAL, false, false, true);
+ }
- if ($action == 'delete')
+ $l_log = 'LOG_PRUNE_USER_DEAC';
+ }
+ else if ($action == 'delete')
{
if ($deleteposts)
{
- delete_posts('poster_id', $user_ids, true);
+ foreach ($user_ids as $user_id)
+ {
+ user_delete('remove', $user_id);
+ }
+
$l_log = 'LOG_PRUNE_USER_DEL_DEL';
}
else
{
- for ($i = 0, $size = sizeof($user_ids); $i < $size; $i++)
+ foreach ($user_ids as $user_id)
{
- $sql = 'UPDATE ' . POSTS_TABLE . '
- SET poster_id = ' . ANONYMOUS . ", post_username = '" . $db->sql_escape($usernames[$i]) . "'
- WHERE user_id = " . $user_ids[$i];
- $db->sql_query($sql);
+ user_delete('retain', $user_id, $usernames[$user_id]);
}
$l_log = 'LOG_PRUNE_USER_DEL_ANON';
}
-
- $sql = 'DELETE FROM ' . USERS_TABLE;
}
- else if ($action == 'deactivate')
- {
- $sql = 'UPDATE ' . USERS_TABLE . "
- SET user_active = 0";
-
- $l_log = 'LOG_PRUNE_USER_DEAC';
- }
-
- $sql .= ' WHERE user_id <> ' . ANONYMOUS . "
- $where_sql";
- $db->sql_query($sql);
add_log('admin', $l_log, implode(', ', $usernames));
}
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index 3cf2c4ec4a..ecbdda032e 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -95,7 +95,7 @@ function user_update_name($old_name, $new_name)
/**
* Remove User
*/
-function user_delete($mode, $user_id)
+function user_delete($mode, $user_id, $post_username = false)
{
global $config, $db, $user, $auth;
@@ -105,12 +105,12 @@ function user_delete($mode, $user_id)
{
case 'retain':
$sql = 'UPDATE ' . FORUMS_TABLE . '
- SET forum_last_poster_id = ' . ANONYMOUS . "
+ SET forum_last_poster_id = ' . ANONYMOUS . (($post_username !== false) ? ", forum_last_poster_name = '" . $db->sql_escape($post_username) . "'" : '') . "
WHERE forum_last_poster_id = $user_id";
$db->sql_query($sql);
$sql = 'UPDATE ' . POSTS_TABLE . '
- SET poster_id = ' . ANONYMOUS . "
+ SET poster_id = ' . ANONYMOUS . (($post_username !== false) ? ", post_username = '" . $db->sql_escape($post_username) . "'" : '') . "
WHERE poster_id = $user_id";
$db->sql_query($sql);
@@ -120,7 +120,7 @@ function user_delete($mode, $user_id)
$db->sql_query($sql);
$sql = 'UPDATE ' . TOPICS_TABLE . '
- SET topic_last_poster_id = ' . ANONYMOUS . "
+ SET topic_last_poster_id = ' . ANONYMOUS . (($post_username !== false) ? ", topic_last_poster_name = '" . $db->sql_escape($post_username) . "'" : '') . "
WHERE topic_last_poster_id = $user_id";
$db->sql_query($sql);
break;
@@ -213,7 +213,7 @@ function user_delete($mode, $user_id)
* Flips user_type from active to inactive and vice versa, handles
* group membership updates
*/
-function user_active_flip($user_id, $user_type, $user_actkey = false, $username = false)
+function user_active_flip($user_id, $user_type, $user_actkey = false, $username = false, $no_log = false)
{
global $db, $user, $auth;
@@ -274,18 +274,21 @@ function user_active_flip($user_id, $user_type, $user_actkey = false, $username
$auth->acl_clear_prefetch($user_id);
- if ($username === false)
+ if (!$no_log)
{
- $sql = 'SELECT username
- FROM ' . USERS_TABLE . "
- WHERE user_id = $user_id";
- $result = $db->sql_query($sql);
- $username = $db->sql_fetchfield('username', 0, $result);
- $db->sql_freeresult($result);
- }
+ if ($username === false)
+ {
+ $sql = 'SELECT username
+ FROM ' . USERS_TABLE . "
+ WHERE user_id = $user_id";
+ $result = $db->sql_query($sql);
+ $username = $db->sql_fetchfield('username', 0, $result);
+ $db->sql_freeresult($result);
+ }
- $log = ($user_type == USER_NORMAL) ? 'LOG_USER_INACTIVE' : 'LOG_USER_ACTIVE';
- add_log('admin', $log, $username);
+ $log = ($user_type == USER_NORMAL) ? 'LOG_USER_INACTIVE' : 'LOG_USER_ACTIVE';
+ add_log('admin', $log, $username);
+ }
return false;
}