1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-06-06 06:25:04 +02:00

for the time being, completely revert back to the old method - which may be slower for very very large boards... the previous code had severe bugs - to fix them properly would introduce even more queries which would slow down the complete viewforum page again.

git-svn-id: file:///svn/phpbb/trunk@7136 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Meik Sievertsen 2007-03-06 13:58:05 +00:00
parent c9fdacf055
commit 2f516661ac

View File

@ -392,63 +392,42 @@ $sql_array = array(
'FROM' => $sql_array['FROM'],
'LEFT_JOIN' => $sql_array['LEFT_JOIN'],
'WHERE' => $sql_where . "
AND t.topic_type = {SQL_TOPIC_TYPE}
'WHERE' => $sql_where . '
AND t.topic_type IN (' . POST_NORMAL . ', ' . POST_STICKY . ")
$sql_approved
$sql_limit_time",
'ORDER_BY' => $sql_sort_order,
'ORDER_BY' => 't.topic_type ' . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order,
);
// If store_reverse, then first obtain topics, then stickies, else the other way around...
// Funnily enough you typically save one query if going from the last page to the middle (store_reverse) because
// the number of stickies are not known
$sql = $db->sql_build_query('SELECT', $sql_array);
$sql = str_replace('{SQL_TOPIC_TYPE}', ($store_reverse) ? POST_NORMAL : POST_STICKY, $sql);
$result = ($store_reverse) ? $db->sql_query_limit($sql, $sql_limit, $sql_start) : $db->sql_query_limit($sql, $sql_limit);
//$sql = str_replace('{SQL_TOPIC_TYPE}', ($store_reverse) ? POST_NORMAL : POST_STICKY, $sql);
$result = $db->sql_query_limit($sql, $sql_limit, $sql_start);
$shadow_topic_list = array();
// Total number of normal or sticky topics that have been retrieved
$start_count = 0;
// Number of normal or sticky topics that have been placed
$num_rows = 0;
//$num_rows = 0;
while ($row = $db->sql_fetchrow($result))
{
$start_count++;
if ((!$store_reverse && $start_count >= $sql_start) || $store_reverse)
if ($row['topic_status'] == ITEM_MOVED)
{
if ($row['topic_status'] == ITEM_MOVED)
{
$shadow_topic_list[$row['topic_moved_id']] = $row['topic_id'];
}
$rowset[$row['topic_id']] = $row;
$topic_list[] = $row['topic_id'];
$num_rows++;
$shadow_topic_list[$row['topic_moved_id']] = $row['topic_id'];
}
$rowset[$row['topic_id']] = $row;
$topic_list[] = $row['topic_id'];
// $num_rows++;
}
$db->sql_freeresult($result);
// If the number of topics exceeds the sql limit then we do not need to retrieve the remaining topic type
/* If the number of topics exceeds the sql limit then we do not need to retrieve the remaining topic type
if ($num_rows < $sql_limit)
{
$sql = $db->sql_build_query('SELECT', $sql_array);
$sql = str_replace('{SQL_TOPIC_TYPE}', ($store_reverse) ? POST_STICKY : POST_NORMAL, $sql);
if (!$store_reverse)
{
// Start at $sql_start - number of sticky topics on the previous page ($start_count - $num_rows)
$result = $db->sql_query_limit($sql, $sql_limit - $num_rows, $sql_start - ($start_count - $num_rows));
}
else
{
$result = $db->sql_query_limit($sql, $sql_limit - $num_rows, $sql_start);
}
$result = $db->sql_query_limit($sql, $sql_limit - $num_rows, $sql_start);
while ($row = $db->sql_fetchrow($result))
{
@ -462,7 +441,7 @@ if ($num_rows < $sql_limit)
}
$db->sql_freeresult($result);
}
*/
// If we have some shadow topics, update the rowset to reflect their topic information
if (sizeof($shadow_topic_list))
{
@ -615,8 +594,8 @@ if (sizeof($topic_list))
'TOPIC_TYPE' => $topic_type,
'TOPIC_FOLDER_IMG' => $user->img($folder_img, $folder_alt),
'TOPIC_FOLDER_IMG_ALT' => $user->lang[$folder_alt],
'TOPIC_FOLDER_IMG_SRC' => $user->img($folder_img, $folder_alt, false, '', 'src'),
'TOPIC_FOLDER_IMG_ALT' => $user->lang[$folder_alt],
'TOPIC_ICON_IMG' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['img'] : '',
'TOPIC_ICON_IMG_WIDTH' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['width'] : '',
'TOPIC_ICON_IMG_HEIGHT' => (!empty($icons[$row['icon_id']])) ? $icons[$row['icon_id']]['height'] : '',