1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-16 05:54:44 +01:00

fix postcount resync for situations where low and high post ids are higher than step value, resulting in users having 0 posts. (Bug #38195)

git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9171 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen 2008-12-04 14:53:04 +00:00
parent 23d9700f07
commit a41e8c101d
2 changed files with 30 additions and 10 deletions

View File

@ -100,6 +100,7 @@
<li>[Fix] Do not increment users post count after post approval if post had been posted in a forum with no post count increasing set (Bug #37865)</li>
<li>[Fix] Extend vertical line for last post column if no posts in forum (Bug #37125)</li>
<li>[Fix] correctly update last topic/forum information if changing guest usernames through editing posts (Bug #38095)</li>
<li>[Fix] fix postcount resync for situations where low and high post ids are higher than step value, resulting in users having 0 posts. (Bug #38195)</li>
<li>[Change] Alllow applications to set custom module inclusion path (idea by HoL)</li>
<li>[Change] Handle checking for duplicate usernames in chunks (Bug #17285 - Patch by A_Jelly_Doughnut)</li>
<li>[Change] Better handling and finer control for custom profile fields visibility options. (Patch by Highway of Life)</li>

View File

@ -185,12 +185,36 @@ class acp_main
}
// Resync post counts
$start = 0;
$step = ($config['num_posts']) ? (max((int) ($config['num_posts'] / 5), 20000)) : 20000;
$start = $max_post_id = 0;
// Find the maximum post ID, we can only stop the cycle when we've reached it
$sql = 'SELECT MAX(forum_last_post_id) as max_post_id
FROM ' . FORUMS_TABLE;
$result = $db->sql_query($sql);
$max_post_id = (int) $db->sql_fetchfield('max_post_id');
$db->sql_freeresult($result);
// No maximum post id? :o
if (!$max_post_id)
{
$sql = 'SELECT MAX(post_id)
FROM ' . POSTS_TABLE;
$result = $db->sql_query($sql);
$max_post_id = (int) $db->sql_fetchfield('max_post_id');
$db->sql_freeresult($result);
}
// Still no maximum post id? Then we are finished
if (!$max_post_id)
{
add_log('admin', 'LOG_RESYNC_POSTCOUNTS');
break;
}
$step = ($config['num_posts']) ? (max((int) ($config['num_posts'] / 5), 20000)) : 20000;
$db->sql_query('UPDATE ' . USERS_TABLE . ' SET user_posts = 0');
do
while ($start < $max_post_id)
{
$sql = 'SELECT COUNT(post_id) AS num_posts, poster_id
FROM ' . POSTS_TABLE . '
@ -207,16 +231,11 @@ class acp_main
$db->sql_query($sql);
}
while ($row = $db->sql_fetchrow($result));
$start += $step;
}
else
{
$start = 0;
}
$db->sql_freeresult($result);
$start += $step;
}
while ($start);
add_log('admin', 'LOG_RESYNC_POSTCOUNTS');