From 9b751a330dc1f6dc07f8728feaee31454ebac6d7 Mon Sep 17 00:00:00 2001
From: Meik Sievertsen <acydburn@phpbb.com>
Date: Sat, 17 Nov 2007 12:14:27 +0000
Subject: [PATCH] - Re-populate arrays on cache purge/save to allow re-using
 some functions without warnings - fix the annoying "last page empty" bug on
 inactive users page.

git-svn-id: file:///svn/phpbb/trunk@8239 89ea8834-ac86-4346-8a33-228a782c2dd0
---
 phpBB/includes/acm/acm_file.php     | 10 ++++++++++
 phpBB/includes/acp/acp_inactive.php |  1 +
 phpBB/includes/functions_admin.php  | 23 ++++++++++++++---------
 3 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/phpBB/includes/acm/acm_file.php b/phpBB/includes/acm/acm_file.php
index 2b9eca6c88..775e8d4495 100644
--- a/phpBB/includes/acm/acm_file.php
+++ b/phpBB/includes/acm/acm_file.php
@@ -67,6 +67,11 @@ class acm
 		unset($this->var_expires);
 		unset($this->sql_rowset);
 		unset($this->sql_row_pointer);
+
+		$this->vars = array();
+		$this->var_expires = array();
+		$this->sql_rowset = array();
+		$this->sql_row_pointer = array();
 	}
 
 	/**
@@ -232,6 +237,11 @@ class acm
 		unset($this->sql_rowset);
 		unset($this->sql_row_pointer);
 
+		$this->vars = array();
+		$this->var_expires = array();
+		$this->sql_rowset = array();
+		$this->sql_row_pointer = array();
+
 		$this->is_modified = false;
 	}
 
diff --git a/phpBB/includes/acp/acp_inactive.php b/phpBB/includes/acp/acp_inactive.php
index 9791d525de..b483d102df 100755
--- a/phpBB/includes/acp/acp_inactive.php
+++ b/phpBB/includes/acp/acp_inactive.php
@@ -143,6 +143,7 @@ class acp_inactive
 								'action'		=> $action,
 								'mark'			=> $mark,
 								'submit'		=> 1,
+								'start'			=> ($start - sizeof($user_affected) < 0) ? 0 : $start - sizeof($user_affected),
 							);
 							confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($s_hidden_fields));
 						}
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php
index e1078822a8..268eccbca4 100644
--- a/phpBB/includes/functions_admin.php
+++ b/phpBB/includes/functions_admin.php
@@ -2674,6 +2674,19 @@ function view_inactive_users(&$users, &$user_count, $limit = 0, $offset = 0, $li
 {
 	global $db, $user;
 
+	$sql = 'SELECT COUNT(user_id) AS user_count
+		FROM ' . USERS_TABLE . '
+		WHERE user_type = ' . USER_INACTIVE .
+		(($limit_days) ? " AND user_inactive_time >= $limit_days" : '');
+	$result = $db->sql_query($sql);
+	$user_count = (int) $db->sql_fetchfield('user_count');
+	$db->sql_freeresult($result);
+
+	if ($offset >= $user_count)
+	{
+		$offset = ($offset - $limit < 0) ? 0 : $offset - $limit;
+	}
+
 	$sql = 'SELECT user_id, username, user_regdate, user_lastvisit, user_inactive_time, user_inactive_reason
 		FROM ' . USERS_TABLE . '
 		WHERE user_type = ' . USER_INACTIVE .
@@ -2705,16 +2718,8 @@ function view_inactive_users(&$users, &$user_count, $limit = 0, $offset = 0, $li
 	
 		$users[] = $row;
 	}
-	
-	$sql = 'SELECT COUNT(user_id) AS user_count
-		FROM ' . USERS_TABLE . '
-		WHERE user_type = ' . USER_INACTIVE .
-		(($limit_days) ? " AND user_inactive_time >= $limit_days" : '');
-	$result = $db->sql_query($sql);
-	$user_count = (int) $db->sql_fetchfield('user_count');
-	$db->sql_freeresult($result);
 
-	return;
+	return $offset;
 }
 
 /**