The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Why won't this plugin work?
This is me attempting to convert a "thread of the day" hack from 3.8.
I've read the article on variable registeringand have converted quite a few hacks, so I've *sort* of got my head round that. However, the below (at search_start) simply doesn't work. the contents of the template are output fine, but the variable $devebd['whatever'] does not output at all. I think I have done the registration of the variable right, because if I add this line to the plugin: Code:
$devebd['test'] = ""Something"; So, I think there is something wrong with how that query is being handled. I know it's being executed, because if I add a rogue character to any of the table names it throws a database error at me. Yet, the query is identical to how it was in vB3 and it worked. Any suggestions on what's wrong? Here is the plug in: Code:
$exforums1 = $vbulletin->options['btwexfor']; $exthreads1 = $vbulletin->options['btwexthr']; if($vbulletin->options['enbwt']) if($vbulletin->options['enbt']) if($vbulletin->options['encolbt1']) $devebds = $db->query_read(" SELECT thread.postusername, thread.postuserid, thread.title AS fth, thread.lastposter, thread.replycount, thread.views, thread.lastpostid, thread.threadid, thread.forumid tid, forum.forumid AS fid, forum.title AS ft FROM " . TABLE_PREFIX . "thread AS thread, " . TABLE_PREFIX . "forum AS forum WHERE forum.forumid = thread.forumid AND dateline BETWEEN " . (TIMENOW - 86400) . " AND " . (TIMENOW + 86400) . " AND thread.forumid NOT IN ($exforums1) AND thread.threadid NOT IN ($exthreads1) AND thread.threadid != 90094 AND thread.postuserid NOT IN (2501,2087) ORDER BY thread.replycount DESC LIMIT 1 "); while ($devebd = $db->fetch_array($devebds)) { $devebd['trimmed'] = fetch_trimmed_title($devebd['fth'], 43); } $templater = vB_Template::create('threadoftheday_day2'); $templater->register('devebd', $devebd); $dev .= $templater->render(); $template_hook['totd'] .= $dev; |
#2
|
|||
|
|||
I don't know much about vB4 and I usually stay in the vB3 section, but: I think the stuff at the bottom needs to be inside the while loop. I think the reason you never see anything in $devebd is because it's undefined when the loop finally exits.
|
#3
|
|||
|
|||
Thanks...yes I thought that too...(as that's where the old eval template call was in vB3) yet if I do so, the template doesn't output at all. Which also has me baffled.
|
#4
|
|||
|
|||
I see...yeah, that does sound like maybe the query isn't returning anything. Do you have a way to execute SQL? I would probably try that query myself and see what happens.
|
#5
|
|||
|
|||
Yep query returns ok but I think the "while" clause isn't returning anything, it seems to be linked to that in some way. Anything within the while clause is returning nothing, which I suppose means the while clause is false.
|
#6
|
|||
|
|||
Given that it has "LIMIT 1" in the query, I think I would have used query_first instead like
Code:
$devebd = $db->query_first(" and then I think the rest would just be Code:
$devebd['trimmed'] = fetch_trimmed_title($devebd['fth'], 43); $templater = vB_Template::create('threadoftheday_day2'); $templater->register('devebd', $devebd); $template_hook['totd'] .= $templater->render(); Anyway, I guess it's been kind of slow during the holidays, but there's got to be someone around who knows vB4. |
#7
|
|||
|
|||
Thanks that does seem to be the issue...there is no "while" clause required as there's only 1 in the query.
Odd that should be the case seeing as it wasn't like that in vb3 and, to my knowledge, the database structures involved are identical. Oh well...the joys of coding. Especially for vB4 which appears to write its own rules as it goes along. |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|