Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
  #1  
Old 03-22-2007, 08:32 AM
becafuel becafuel is offline
 
Join Date: Mar 2006
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Odd behavior with template conditionnals

Hello !

Today I came across a problem with template conditionnals which seems weird. In short : same condition does not work in a template but works fine in another one (without any changes, of course).

Example :
create a new template and fill it with
Code:
<if condition="is_member_of($vbulletin->userinfo,6)">Group 6<else />Other group</if>
(eventually choose another group that suits your forum)


Now use this template in a small program
PHP Code:
<?php
error_reporting
(E_ALL & ~E_NOTICE);
define('THIS_SCRIPT''test');

$phrasegroups = array();
$specialtemplates = array();
$globaltemplates = array('your_template');
$actiontemplates = array();

require_once(
'./global.php');

eval(
'print_output("' fetch_template('your_template') . '");');
?>

Display will show if you're a member of group 6 or not. Fine.

Now, copy the small template code in the postbit template, at the very beginning (location is not important, in fact, but it's easier to see the modified code at the beginning )
Same result as before should now display just under the thread tool bar. But it doesn't
However, you can see the correct display result if you replace $vbulletin->userinfo with $bbuserinfo within the template...

Now take the same template code again (the one with $vbulletin->userinfo) and paste it in the navbar template like if you wanted to create an new option in it. Now it works again, with either $vbulletin->userinfo or $bbuserinfo

Does anyone have any info on such behavior ?

I haven't yet tested with other predfined templates, so I may have found the only one that's working this way

Reply With Quote
  #2  
Old 03-23-2007, 09:19 AM
becafuel becafuel is offline
 
Join Date: Mar 2006
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

After some tests, it seems that only postbit and postbit_legacy are concerned... I say "seems", as I haven't tested all templates, of course, but nearly 20 of the most common ones. All 20 are giving correct results with $vbulletin->userinfo variable.

Btw, I find it rather "good" that only those templates are concerned, as it may have to do with some special treatment for them

If I get no response or no clue from here, I will try to investigate deeper.
Reply With Quote
  #3  
Old 03-23-2007, 10:28 AM
TheMilkCarton TheMilkCarton is offline
 
Join Date: Jan 2007
Posts: 294
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

You need to use different variables depending on what template. By the way, I believe "$vbulletin->userinfo" is just the long way of saying $bbuserinfo, but I dunno, maybe you still have to write it out longhand in some templates.

In the postbit, this:
Code:
<if condition="is_member_of($vbulletin->userinfo,6)">Group 6<else />Other group</if>
would be this instead
Code:
<if condition="is_member_of($post, 6)">Group 6<else />Other group</if>
And to add, memberinfo uses "$userinfo".. It really all just depends on the template.
Reply With Quote
  #4  
Old 03-23-2007, 10:33 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

$vbulletin->userinfo will in most cases contain the information of the user browsing the page (ie. the logged in user).

The $post in the example contains the userinfo of the member that made this one post.
Reply With Quote
  #5  
Old 03-23-2007, 11:59 AM
becafuel becafuel is offline
 
Join Date: Mar 2006
Posts: 32
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by TheMilkCarton View Post
... depending on what template. ... <snip>... It really all just depends on the template.
Quote:
Originally Posted by Marco van Herwaarden View Post
$vbulletin->userinfo will in most cases contain the information of the user browsing the page (ie. the logged in user).
"in most cases" and "depending on templates" : that's exactly what I've found out


In this tutorial, we can see that
Quote:
VARIABLES ENABLED FOR TEMPLATES
$vboptions['x'], $bbuserinfo['x'] and $session['x'] do work in the template system without running legacy_enable()
And if we look in the legacy_enable() code, we can see that
Quote:
/**
* Reenable the various legacy variables. This is not recommended for long term compatibility.
Finally, and just in case the message was not clear enough , here's what we can find in includes/functions_misc.php
PHP Code:
/**
* Replaces legacy variable names in templates with their modern equivalents
*
* @param    string    Template to be processed
* @param    boolean    Handle replacement of vars outside of quotes
*
* @return    string
*/
function replace_template_variables($template$do_outside_regex false)
{
    
// matches references to specifc arrays in templates and maps them to a better internal format
    // this function name is a slight misnomer; it can be run on phrases with variables in them too!

    // include the $, but escape it in the key
    
static $variables = array(
        
'\$vboptions' => '$GLOBALS[\'vbulletin\']->options',
        
'\$bbuserinfo' => '$GLOBALS[\'vbulletin\']->userinfo',
        
'\$session' => '$GLOBALS[\'vbulletin\']->session->vars',
    ); 
That's why I wanted to use the $vbulletin->userinfo variable. But this one, and may be others, do not work in at least postbit and postbit_legacy.

So I think there are some troubles out there
Reply With Quote
Reply

Thread Tools
Display Modes

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 08: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.08879 seconds
  • Memory Usage 2,217KB
  • 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
  • (3)bbcode_code
  • (2)bbcode_php
  • (4)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (5)post_thanks_box
  • (5)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (5)post_thanks_postbit_info
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)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
  • 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