Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 12-23-2010, 08:59 PM
Mark.B Mark.B is offline
Senior Member
 
Join Date: Feb 2004
Posts: 1,354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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";
...then I can make that print in the template just fine.

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;
I then call this plugin in template search_resultlist using {vb:raw template_hook.totd}. It outputs the content of the template threadoftheday_day2 ok, but does not output the results of the query.
Reply With Quote
  #2  
Old 12-24-2010, 01:51 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #3  
Old 12-24-2010, 05:42 AM
Mark.B Mark.B is offline
Senior Member
 
Join Date: Feb 2004
Posts: 1,354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
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.
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.
Reply With Quote
  #4  
Old 12-24-2010, 11:30 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
  #5  
Old 12-24-2010, 11:44 AM
Mark.B Mark.B is offline
Senior Member
 
Join Date: Feb 2004
Posts: 1,354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
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.
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.
Reply With Quote
  #6  
Old 12-24-2010, 11:59 AM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Given that it has "LIMIT 1" in the query, I think I would have used query_first instead like

Code:
$devebd = $db->query_first("
(I know that was the original dev and not you),

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();
without the "while". Or, if you wanted the entire template to disappear in the event that the query returned nothing you could enclose it all in an "if".

Anyway, I guess it's been kind of slow during the holidays, but there's got to be someone around who knows vB4.
Reply With Quote
  #7  
Old 12-24-2010, 03:24 PM
Mark.B Mark.B is offline
Senior Member
 
Join Date: Feb 2004
Posts: 1,354
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 09:57 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04010 seconds
  • Memory Usage 2,222KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (4)bbcode_code
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (7)post_thanks_box
  • (7)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (7)post_thanks_postbit_info
  • (7)postbit
  • (7)postbit_onlinestatus
  • (7)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • 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
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete