View Single Post
  #478  
Old 08-17-2004, 07:05 PM
kmike kmike is offline
 
Join Date: Oct 2002
Posts: 169
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Observant Usenet user emailed me that some replies going to Usenet from our gateway didn't have "References" header and "Re: " in the subject. I investigated this, and it appears that current code is indeed buggy.

Current code first chooses new forum threads and then new posts to send to news server, but SQL query responsible for new threads gets it all wrong.
It gets not only new threads' posts themselves, but also posts to the same thread by the thread author, if the thread was started from the forum. It means that all subsequent forum posts to the thread by the thread author won't get "References" header and also "Re: " in the subject, and therefore won't be threaded in the newsgroups.

The fix is to use special "firstpostid" field in the thread table for determining the first post in the thread.

Replace this code:
PHP Code:
                $get_newthreads=$DB_site->query("SELECT post.*, thread.*,
                        post.dateline AS postdateline, post.msgid AS postmsgid,
                        thread.title AS threadtitle
                        FROM " 
TABLE_PREFIX "post as post LEFT JOIN " .
                        
TABLE_PREFIX "thread as thread ON (
                        thread.threadid = post.threadid
                        AND post.userid = thread.postuserid)
                        WHERE post.isusenetpost = 0 AND
                        post.postid > 
{$nntp_settings['last_postid']} AND
                        thread.forumid = 
{$group['forum']}"); 
with this:
PHP Code:
                $get_newthreads=$DB_site->query("SELECT post.*, thread.*,
                        post.dateline AS postdateline, post.msgid AS postmsgid,
                        thread.title AS threadtitle
                        FROM " 
TABLE_PREFIX "thread as thread LEFT JOIN " .
                        
TABLE_PREFIX "post as post ON
                        thread.firstpostid = post.postid
                        WHERE post.isusenetpost = 0 AND
                        post.postid > 
{$nntp_settings['last_postid']} AND
                        thread.forumid = 
{$group['forum']}"); 
Reply With Quote
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01193 seconds
  • Memory Usage 1,782KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (2)bbcode_php
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete