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 01-25-2014, 10:03 PM
mathforum mathforum is offline
 
Join Date: Nov 2005
Posts: 165
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Image in postbit but not in PMs

Can someone explain how this part of my postbit template could output in one situation but not another?

Code:
<vb:if condition="$post['showuserranks'] OR $post['arcadeawards']">
<dt>Awards</dt> <dd>{vb:raw post.arcadeawardimg}{vb:raw awardimages}</dd>
</vb:if>
I realize that two plugins are outputting "{vb:raw post.arcadeawardimg}{vb:raw awardimages}" at some point but I can't figure out where. These plugins are written in a way that the postbit in PMs render an empty box for the template code in the above box. Maybe this is because the private message files aren't set to trigger the plugins? I am looking for advice on locating the important commands from the later stages of the program. So I'm trying to work backwards since I am certain the quoted text is connected to plugins and images...

I searched in the plugins for "$post['showuserranks']" and found it a couple of times in the mod that's for the ranks. Is this logical? I don't know what I'm looking for exactly.

--------------- Added [DATE]1390693606[/DATE] at [TIME]1390693606[/TIME] ---------------

I'm trying not to post too much of someone's code but here is a chunk that I think could contain an important part of rendering:
Code:
 $post['showuserranks'] = false; 
             
            if ($post['num_ranks'] = $db->num_rows($alluserranks)) 
            { 
                $ra_i = 0; 

                while ($rank = $db->fetch_array($alluserranks)) 
                { 
                    $ra_i++; 
                    if ($ra_i <= $vbulletin->options['ra_display_limit']) 
                    { 
                        //- VB3 -// eval('$post[userranks] .= "' . fetch_template('ranks_bit') . '";'); 
                        //- BEGIN VB4 -// 
                        $templater = vB_Template::create('ranks_bit'); 
                            $templater->register('rank', $rank); 
                        $post[userranks] .= $templater->render(); 
                        //- END VB4 -//
This ends with rendering a template and variable and I don't see this happen much in the plugin code. Am I close to finding the source of the variables?
Reply With Quote
  #2  
Old 01-26-2014, 01:36 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You might want to try this "search plugin code" mod: https://vborg.vbsupport.ru/showthread.php?t=265976 and search for "awardimages" to see if it's set by a plugin.
Reply With Quote
Благодарность от:
mathforum
  #3  
Old 01-26-2014, 07:46 PM
mathforum mathforum is offline
 
Join Date: Nov 2005
Posts: 165
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hi kh99,

That's exactly what I did last night found this bit:

Code:
$templater = vB_Template::create($vbulletin->options[cat_yars_postbit_style]); 
                    $templater->register('post', $post); 
                $templatevalues['awardimages'] = $templater->render(); 
                vB_Template::preRegister('postbit_legacy', $templatevalues);
That is definitely referencing the image but it's location is postbit_display_complete, which makes me think it's not actually rendering the image here, rather just referencing it to add as a variable for postbit_legacy.

If order to enable these images in PMs, I did to find the conditional statement that starts the execution and add this to it:

Code:
<vb:if condition="THIS_SCRIPT == 'private'">
....
</vb:if>
but I'm not sure yet. Setting up a dev site right now to test out changes to plugins without messing things up too much so I can't try it yet but I think I have some better understanding of why PMs don't automatically get the same things to use that posts do, despite looking the same. Plugins usually call on a condition like $post[thing] = something and if I am not mistaken, the $post[''] code won't reference PM content.

Any comments?
Reply With Quote
  #4  
Old 01-26-2014, 08:06 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hmm...I guess it depends on what the cat_yars_postbit_style template expects to find in $post. Certainly if there's an 'if' on THIS_SCRIPT somewhere then you'll need to add private to the check, but it could be there's another plugin somewhere that's adding the data to $post. So I'd check that template then search the plugins for any fields that are used from $post (i.e. {vb:raw post.something})

BTW, this is kind of on the line between a programming question and help with a mod, and normally we require questions about mods to be asked in the mod thread. So I'll just say that maybe you could get more help by posting your question in the mod thread.
Reply With Quote
  #5  
Old 01-26-2014, 08:23 PM
mathforum mathforum is offline
 
Join Date: Nov 2005
Posts: 165
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I can see that, but in my defense this is more so about the process of working backwards to find the right code from something that was output. I have worked with various programming languages for a while to a level where I can usually follow code pretty easily, but with vBulletin I often find myself not knowing where functions and variables come from. It's getting easier and easier, but I don't know how coders can locate these things so quickly.

I'll try to frame questions more discreetly next time. This really is useful for me and it's a long process.
Reply With Quote
  #6  
Old 01-26-2014, 08:51 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

It's OK. Like I said, it's kind of on the line so I thought I'd mention it before someone else did.
Reply With Quote
  #7  
Old 01-26-2014, 08:53 PM
tbworld tbworld is offline
 
Join Date: Oct 2008
Posts: 2,126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Sounds to me like you are doing fine. vBulletin is a large script and does take some time to process it, at the level you are working with it now. Use a good IDE that will help you identify inheritance and dependencies in PHP.

I have been working with vBulletin since 2009 and there is still some parts of vBulletin I have not completely gone through.

Nice board.
Reply With Quote
  #8  
Old 01-29-2014, 03:01 PM
squidsk's Avatar
squidsk squidsk is offline
 
Join Date: Nov 2010
Posts: 969
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by mathforum View Post
Hi kh99,

That's exactly what I did last night found this bit:

Code:
$templater = vB_Template::create($vbulletin->options[cat_yars_postbit_style]); 
                    $templater->register('post', $post); 
                $templatevalues['awardimages'] = $templater->render(); 
                vB_Template::preRegister('postbit_legacy', $templatevalues);
That is definitely referencing the image but it's location is postbit_display_complete, which makes me think it's not actually rendering the image here, rather just referencing it to add as a variable for postbit_legacy.

If order to enable these images in PMs, I did to find the conditional statement that starts the execution and add this to it:

Code:
<vb:if condition="THIS_SCRIPT == 'private'">
....
</vb:if>
but I'm not sure yet. Setting up a dev site right now to test out changes to plugins without messing things up too much so I can't try it yet but I think I have some better understanding of why PMs don't automatically get the same things to use that posts do, despite looking the same. Plugins usually call on a condition like $post[thing] = something and if I am not mistaken, the $post[''] code won't reference PM content.

Any comments?
Based on the code you're posting from the YaRS mod, and comparing it to the current code from the product xml, it looks like you're either running a very customized version of it, or an outdated one. I'd recommend going back to the base install to see if that helps sort out the problem as I know the current version has the ability to displays images in the postbit(_legacy) for PMs.
Reply With Quote
Благодарность от:
mathforum
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 01:32 PM.


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.04159 seconds
  • Memory Usage 2,249KB
  • Queries Executed 13 (?)
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
  • (6)bbcode_code
  • (1)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (8)post_thanks_box
  • (2)post_thanks_box_bit
  • (8)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (8)post_thanks_postbit_info
  • (8)postbit
  • (8)postbit_onlinestatus
  • (8)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_postinfo_query
  • fetch_postinfo
  • 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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete