Log in

View Full Version : Latest Threads on Forumhome with Ajax.


Lizard King
01-08-2006, 11:44 PM
I am trying to add Ajax to Chris M's Latest Threads on Forumhome (https://vborg.vbsupport.ru/showthread.php?t=83230) plugin because i found this is a great add on for forumhome. My problem i am not a coder at all maybe i can call myself as a beginner :smoke:
I've read a lot of tutorials about Ajax and here is the part which i am stuck at. The threadbits i am trying to get is a plugin :) and i need a php to recall the data. Is there a way to skip this part ?
<script language="JavaScript" type="text/javascript">
var sendReq = getXmlHttpRequestObject();
var receiveReq = getXmlHttpRequestObject();
var lastMessage = 0;
var mTimer;
//Function for initializating the page.
function startthreads() {
document.getElementById('threadbits').focus();
getthreadbits();
}
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
} else if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP");
} else {
document.getElementById('p_status').innerHTML = 'Status: Cound not create XmlHttpRequest Object. Consider upgrading your browser.';
}
}

//Gets the current messages from the server
function getthreadbits() {
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
receiveReq.open("GET", 'whatinhere' + lastthread, true);
receiveReq.onreadystatechange = handleReceivethreads;
receiveReq.send(null);
}
}</script>



Help will be really appriciated.

Blackhat
01-31-2006, 12:47 PM
Any update on this modification? I'm very interested to hear more about this :)

Parham
06-01-2006, 12:42 PM
any news on this ?!

ZGeek
06-26-2006, 01:19 PM
want!

-=Sniper=-
06-29-2006, 06:09 PM
ok, this should work

install https://vborg.vbsupport.ru/showthread.php?t=83230

Add a new plugin in global_start

if (THIS_SCRIPT === 'index')
{
$vbulletin->templatecache['header'] .= '<script type=\"text/javascript\">
<!--
function fetch_latest()
{
if (latest.handler.readyState == 4 && latest.handler.status == 200 && latest.handler.responseText)
{
fetch_object(\'latest\').innerHTML = latest.handler.responseText;
}
}

function getlatest()
{
latest = new vB_AJAX_Handler(true);
latest.onreadystatechange(fetch_latest);
latest.send(\'ajax.php\', \'do=latest\');
}
//-->
</script>';
}


Add a new plugin in ajax_start

if ($_REQUEST['do'] == 'latest')
{
require_once(DIR . '/includes/functions_forumlist.php');
// #################### PROCESS LATEST THREADS #######################
// fetch the permissions for each forum
global $vbulletin;

$forumperms = array();
foreach($vbulletin->forumcache AS $forum) {

$forumperms[$forum["forumid"]] = fetch_permissions($forum['forumid']);

// ## HIDE FORUMS WITHOUT THE CANVIEW PERMISSION ##
if (!($forumperms[$forum["forumid"]] & $vbulletin->bf_ugp_forumpermissions['canview']) AND !$vbulletin->options['showprivateforums']) {
$limitfids .= ','.$forum['forumid'];
}
}
unset($forum);

if ($vbulletin->options['threadpreview'] > 0) {
$previewfield = ', post.pagetext AS preview';
$previewjoin = 'LEFT JOIN '.TABLE_PREFIX.'post AS post ON(post.postid = thread.firstpostid)';
}

$getthreads = $db->query_read("
## GET LATEST THREADS ##
SELECT thread.*,thread.iconid AS threadiconid $previewfield
FROM ".TABLE_PREFIX."thread AS thread
LEFT JOIN ".TABLE_PREFIX."deletionlog AS deletionlog ON(thread.threadid = deletionlog.primaryid AND type = 'thread')
$previewjoin
WHERE open <> 10
AND forumid NOT IN (0$limitfids)
AND thread.visible = '1'
AND deletionlog.primaryid IS NULL
ORDER BY lastpost
DESC LIMIT 5");

while($thread = $db->fetch_array($getthreads)) {

$threads = true;
$thread['title'] = fetch_censored_text(fetch_trimmed_title(unhtmlspec ialchars($thread['title']), 22));
$thread['date'] = vbdate($vbulletin->options['dateformat'], $thread['lastpost'], 1);
$thread['time'] = vbdate($vbulletin->options['timeformat'], $thread['lastpost']);
$thread['preview'] = preg_replace('#\[quote(=(&quot;|"|\'|).*\\2)?\](.*)\[/quote\]#siU', '', $thread['preview']);
$thread['preview'] = htmlspecialchars_uni(fetch_trimmed_title(strip_bbc ode(fetch_censored_text($thread['preview']), false, true), $vbulletin->options['threadpreview']));
$thread['replycount'] = vb_number_format($thread['replycount']);
$thread['views'] = vb_number_format($thread['views']);

// thread icon
$show['icon'] = false;
$icon = fetch_iconinfo($thread['iconid']);

if (is_array($icon)) {
$show['icon'] = true;
$thread['threadiconpath'] = $icon['iconpath'];
$thread['threadicontitle'] = $icon['title'];
}

// show goto new post
$show['firstnew'] = false;
$bbforumview = fetch_bbarray_cookie('forum_view', $thread['forumid']);

if ($bbforumview > $vbulletin->userinfo['lastvisit']) {
$lastread = $bbforumview;
} else {
$lastread = $vbulletin->userinfo['lastvisit'];
}

if ($thread['lastpost'] > $lastread) {

$threadview = fetch_bbarray_cookie('thread_lastview', $thread['threadid']);

if ($thread['lastpost'] > $threadview) {
$show['firstnew'] = true;
$show['icon'] = false;
}
}

exec_switch_bg();

eval("\$threadbits .= \"".fetch_template('forumhome_latestthreadbit')."\";");
}
if ($threads) {
$show['latestthreads'] = true;
}
echo $threadbits;
// memory saving
unset($thread, $threads);
$db->free_result($getthreads);
}

in the FORUMHOME template find

$threadbits

replace with <div id="latest">$threadbits</div>

Find $vbphrase[latest_threads]

replace with $vbphrase[latest_threads] [<a href="#collapseimg_forumhome_latestthreads" onclick="getlatest();">Reload Latest Threads</a>]

skrazydogz
02-10-2008, 03:10 AM
Is it possible to include the function in the Hack "Cyb - Forumstatistics" ?

Jezlad
02-19-2008, 11:37 AM
Can anyone confirm if this works?

I'm looking for a small Ajax latest threads ticker to place alongside the chatbox.

Any ideas?