sweckesser
12-02-2008, 04:49 AM
total noob to vbulletin but someone asked if i could update the global thread to cross post multiple treads.. not a good idea imo but so be it. I made the following changes and changed the xml to allow multiple inputs for the source forum...
if ($vbulletin->options['gton'] && $foruminfo['forumid'] != $vbulletin->options['gtsourceforum'])
{
//check to see if current forum is supposed to be excluded
$exclude = explode(' ', $vbulletin->options['gtexclude']);
$srcList = explode(' ', $vbulletin->options['gtsourceforum']);
$srcString = '';
$qryString = '';
if ((!in_array($foruminfo['forumid'], $exclude)) and (!in_array($foruminfo['forumid'], $srcList)))
{
$globalthreadbits = '';
// Build a comma separated IN List
foreach( $srcList as $value ) {
$srcString .= '\'' . $value . '\',';
unset($value );
}
$qryString .= '(' . substr( $srcString, 0, -1) . ')';
//query the source forum
$globalthreads = $db->query_read_slave("
SELECT $votequery $previewfield
thread.threadid, thread.title AS threadtitle, thread.forumid, pollid, open, replycount, postusername, postuserid, thread.iconid AS threadiconid,
$lastpost_info2, thread.dateline, IF(views<=replycount, replycount+1, views) AS views, notes, thread.visible, sticky, votetotal, thread.attach,
hiddencount, deletedcount
" . (($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid']) ? ", NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed" : "") . "
" . ($deljoin ? ", deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason" : "") . "
" . (($vbulletin->options['threadmarking'] AND $vbulletin->userinfo['userid']) ? ", threadread.readtime AS threadread" : "") . "
" . ($redirectjoin ? ", threadredirect.expires" : "") . "
$hook_query_fields
FROM " . TABLE_PREFIX . "thread AS thread
$deljoin
" . (($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid']) ? " LEFT JOIN " . TABLE_PREFIX . "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = " . $vbulletin->userinfo['userid'] . " AND canview = 1)" : "") . "
" . (($vbulletin->options['threadmarking'] AND $vbulletin->userinfo['userid']) ? " LEFT JOIN " . TABLE_PREFIX . "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " . $vbulletin->userinfo['userid'] . ")" : "") . "
$previewjoin
$tachyjoin
$redirectjoin
$hook_query_joins
WHERE thread.forumid IN $qryString
ORDER BY dateline DESC
LIMIT " . $vbulletin->options['gtnumthreads']
);
while ($globalthread = $db->fetch_array($globalthreads))
{
// build thread data
$globalthread = process_thread_array($globalthread, $lastread, $foruminfo['allowicons']);
$realthreadid = $globalthread['realthreadid'];
eval('$globalthreadbits .= "' . fetch_template('threadbit_global') . '";');
}
}
}
Now they want to add an icon to the cross posts. My idea was to add an <img src=...> tag where the src = varies depending upon the source forum id. But I can see no way to get at the post and inject tags/text in the cross post. Seems data manager can be used to create new posts but not edit existing ones. Is this even possible? I'm looking at the database and worse case I thiought I could put triggers in but now I'm stumped.
Any hints?
if ($vbulletin->options['gton'] && $foruminfo['forumid'] != $vbulletin->options['gtsourceforum'])
{
//check to see if current forum is supposed to be excluded
$exclude = explode(' ', $vbulletin->options['gtexclude']);
$srcList = explode(' ', $vbulletin->options['gtsourceforum']);
$srcString = '';
$qryString = '';
if ((!in_array($foruminfo['forumid'], $exclude)) and (!in_array($foruminfo['forumid'], $srcList)))
{
$globalthreadbits = '';
// Build a comma separated IN List
foreach( $srcList as $value ) {
$srcString .= '\'' . $value . '\',';
unset($value );
}
$qryString .= '(' . substr( $srcString, 0, -1) . ')';
//query the source forum
$globalthreads = $db->query_read_slave("
SELECT $votequery $previewfield
thread.threadid, thread.title AS threadtitle, thread.forumid, pollid, open, replycount, postusername, postuserid, thread.iconid AS threadiconid,
$lastpost_info2, thread.dateline, IF(views<=replycount, replycount+1, views) AS views, notes, thread.visible, sticky, votetotal, thread.attach,
hiddencount, deletedcount
" . (($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid']) ? ", NOT ISNULL(subscribethread.subscribethreadid) AS issubscribed" : "") . "
" . ($deljoin ? ", deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason" : "") . "
" . (($vbulletin->options['threadmarking'] AND $vbulletin->userinfo['userid']) ? ", threadread.readtime AS threadread" : "") . "
" . ($redirectjoin ? ", threadredirect.expires" : "") . "
$hook_query_fields
FROM " . TABLE_PREFIX . "thread AS thread
$deljoin
" . (($vbulletin->options['threadsubscribed'] AND $vbulletin->userinfo['userid']) ? " LEFT JOIN " . TABLE_PREFIX . "subscribethread AS subscribethread ON(subscribethread.threadid = thread.threadid AND subscribethread.userid = " . $vbulletin->userinfo['userid'] . " AND canview = 1)" : "") . "
" . (($vbulletin->options['threadmarking'] AND $vbulletin->userinfo['userid']) ? " LEFT JOIN " . TABLE_PREFIX . "threadread AS threadread ON (threadread.threadid = thread.threadid AND threadread.userid = " . $vbulletin->userinfo['userid'] . ")" : "") . "
$previewjoin
$tachyjoin
$redirectjoin
$hook_query_joins
WHERE thread.forumid IN $qryString
ORDER BY dateline DESC
LIMIT " . $vbulletin->options['gtnumthreads']
);
while ($globalthread = $db->fetch_array($globalthreads))
{
// build thread data
$globalthread = process_thread_array($globalthread, $lastread, $foruminfo['allowicons']);
$realthreadid = $globalthread['realthreadid'];
eval('$globalthreadbits .= "' . fetch_template('threadbit_global') . '";');
}
}
}
Now they want to add an icon to the cross posts. My idea was to add an <img src=...> tag where the src = varies depending upon the source forum id. But I can see no way to get at the post and inject tags/text in the cross post. Seems data manager can be used to create new posts but not edit existing ones. Is this even possible? I'm looking at the database and worse case I thiought I could put triggers in but now I'm stumped.
Any hints?