| @@ 252-273 (lines=22) @@ | ||
| 249 | $context['start_from'] = $context['total_visible_posts'] - 1; |
|
| 250 | $_REQUEST['start'] = empty($options['view_newest_first']) ? $context['start_from'] : 0; |
|
| 251 | } |
|
| 252 | else |
|
| 253 | { |
|
| 254 | // Find the earliest unread message in the topic. (the use of topics here is just for both tables.) |
|
| 255 | $request = $smcFunc['db_query']('', ' |
|
| 256 | SELECT COALESCE(lt.id_msg, lmr.id_msg, -1) + 1 AS new_from |
|
| 257 | FROM {db_prefix}topics AS t |
|
| 258 | LEFT JOIN {db_prefix}log_topics AS lt ON (lt.id_topic = {int:current_topic} AND lt.id_member = {int:current_member}) |
|
| 259 | LEFT JOIN {db_prefix}log_mark_read AS lmr ON (lmr.id_board = {int:current_board} AND lmr.id_member = {int:current_member}) |
|
| 260 | WHERE t.id_topic = {int:current_topic} |
|
| 261 | LIMIT 1', |
|
| 262 | array( |
|
| 263 | 'current_board' => $board, |
|
| 264 | 'current_member' => $user_info['id'], |
|
| 265 | 'current_topic' => $topic, |
|
| 266 | ) |
|
| 267 | ); |
|
| 268 | list ($new_from) = $smcFunc['db_fetch_row']($request); |
|
| 269 | $smcFunc['db_free_result']($request); |
|
| 270 | ||
| 271 | // Fall through to the next if statement. |
|
| 272 | $_REQUEST['start'] = 'msg' . $new_from; |
|
| 273 | } |
|
| 274 | } |
|
| 275 | ||
| 276 | // Start from a certain time index, not a message. |
|
| @@ 239-255 (lines=17) @@ | ||
| 236 | elseif ($_GET['t'] <= $topicinfo['id_first_msg']) |
|
| 237 | $earlyMsg = 0; |
|
| 238 | // Otherwise, get the latest message before the named one. |
|
| 239 | else |
|
| 240 | { |
|
| 241 | $result = $smcFunc['db_query']('', ' |
|
| 242 | SELECT MAX(id_msg) |
|
| 243 | FROM {db_prefix}messages |
|
| 244 | WHERE id_topic = {int:current_topic} |
|
| 245 | AND id_msg >= {int:id_first_msg} |
|
| 246 | AND id_msg < {int:topic_msg_id}', |
|
| 247 | array( |
|
| 248 | 'current_topic' => $topic, |
|
| 249 | 'topic_msg_id' => (int) $_GET['t'], |
|
| 250 | 'id_first_msg' => $topicinfo['id_first_msg'], |
|
| 251 | ) |
|
| 252 | ); |
|
| 253 | list ($earlyMsg) = $smcFunc['db_fetch_row']($result); |
|
| 254 | $smcFunc['db_free_result']($result); |
|
| 255 | } |
|
| 256 | } |
|
| 257 | // Marking read from first page? That's the whole topic. |
|
| 258 | elseif ($_REQUEST['start'] == 0) |
|
| @@ 260-277 (lines=18) @@ | ||
| 257 | // Marking read from first page? That's the whole topic. |
|
| 258 | elseif ($_REQUEST['start'] == 0) |
|
| 259 | $earlyMsg = 0; |
|
| 260 | else |
|
| 261 | { |
|
| 262 | $result = $smcFunc['db_query']('', ' |
|
| 263 | SELECT id_msg |
|
| 264 | FROM {db_prefix}messages |
|
| 265 | WHERE id_topic = {int:current_topic} |
|
| 266 | ORDER BY id_msg |
|
| 267 | LIMIT {int:start}, 1', |
|
| 268 | array( |
|
| 269 | 'current_topic' => $topic, |
|
| 270 | 'start' => (int) $_REQUEST['start'], |
|
| 271 | ) |
|
| 272 | ); |
|
| 273 | list ($earlyMsg) = $smcFunc['db_fetch_row']($result); |
|
| 274 | $smcFunc['db_free_result']($result); |
|
| 275 | ||
| 276 | $earlyMsg--; |
|
| 277 | } |
|
| 278 | ||
| 279 | // Blam, unread! |
|
| 280 | $smcFunc['db_insert']('replace', |
|
| @@ 1033-1048 (lines=16) @@ | ||
| 1030 | $context['current_theme'] = $modSettings['theme_guests']; |
|
| 1031 | } |
|
| 1032 | // Someones else :P. |
|
| 1033 | else |
|
| 1034 | { |
|
| 1035 | $context['current_member'] = (int) $_REQUEST['u']; |
|
| 1036 | ||
| 1037 | $request = $smcFunc['db_query']('', ' |
|
| 1038 | SELECT id_theme |
|
| 1039 | FROM {db_prefix}members |
|
| 1040 | WHERE id_member = {int:current_member} |
|
| 1041 | LIMIT 1', |
|
| 1042 | array( |
|
| 1043 | 'current_member' => $context['current_member'], |
|
| 1044 | ) |
|
| 1045 | ); |
|
| 1046 | list ($context['current_theme']) = $smcFunc['db_fetch_row']($request); |
|
| 1047 | $smcFunc['db_free_result']($request); |
|
| 1048 | } |
|
| 1049 | ||
| 1050 | // Get the theme name and descriptions. |
|
| 1051 | $context['available_themes'] = array(); |
|