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

Reply
 
Thread Tools Display Modes
  #1  
Old 05-19-2005, 06:16 PM
luroca luroca is offline
 
Join Date: Jul 2002
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Problem passing variable or array from php to conditional in template

Well, I hope this question goes here.
I use the "is_member_of improvement" hack of merk (https://vborg.vbsupport.ru/showthread.php?t=61149) because I need it for the hack I am making for vb3.

I have a problem, I can pass values from file.php to the template but not to the conditional in the template.
An example:

In myfile.php:
PHP Code:
$forusergroups $case['forusergroups'];
// values of $forusergroups for different caseids are: 3 / 5,6,7 / NULL /  2,4
$cansee = array($forusergroups);
$caseid = &$case['caseid']; 
In mytemplate:
Code:
--$caseid--
<br>
1) forusergroups: $forusergroups
<br>
2) cansee:  $cansee
<br>
3) <if condition="is_member_of($bbuserinfo, 4,5,6)">OK for number <else /> FAIL </if>
<br>
4) <if condition="is_member_of($bbuserinfo, $forusergroups)">OK for variable <else /> FAIL </if>
<br>
5) <if condition="is_member_of($bbuserinfo, $cansee)">OK for array <else /> FAIL </if>
<br>
-------------
<br><br>
And I get ($bbuserinfo = 6):
Quote:
--1--
1) forusergroups: 3
2) cansee: Array
3) OK for number
4) FAIL
5) FAIL
-------------

--2--
1) forusergroups: 5,6,7
2) cansee: Array
3) OK for number
4) FAIL
5) FAIL
-------------

--3--
1) forusergroups:
2) cansee: Array
3) OK for number
4) FAIL
5) FAIL
-------------

--4--
1) forusergroups: 2,6
2) cansee: Array
3) OK for number
4) FAIL
5) FAIL
-------------
I have also tested LeeCHeSSS?s version of the merk?s hack for 5) but it?s the same.
I want to get "4) OK for variable" or "5) OK for array" but I always get "FAIL". The value of variable or array does not enter into the conditional.

Please, help me.

----Edited to put a missing "[" ----
Reply With Quote
  #2  
Old 05-19-2005, 10:15 PM
Zero Tolerance's Avatar
Zero Tolerance Zero Tolerance is offline
 
Join Date: Feb 2004
Location: England
Posts: 813
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Not exactly sure what your trying to accomplish, but i did notice this:
Code:
$caseid = &$case'caseid'];
Shouldn't that be:
Code:
$caseid = &$case['caseid'];
?

- Zero Tolerance
Reply With Quote
  #3  
Old 05-20-2005, 06:51 AM
luroca luroca is offline
 
Join Date: Jul 2002
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks Zero Tolerance, I put the missing "["

In my template instead of "OK for variable" there is a code that must be ejecuted or shown only if condition is OK for that "caseid". The condition varies in every "caseid".
Reply With Quote
  #4  
Old 05-20-2005, 07:24 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

What kind of code you need to have executed. Please give us some more info on what you are trying to achieve. Remember that the better the info is that you give us, the better the answers will be.
Reply With Quote
  #5  
Old 05-20-2005, 08:08 AM
luroca luroca is offline
 
Join Date: Jul 2002
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarcoH64
What kind of code you need to have executed. Please give us some more info on what you are trying to achieve.
It?s not a secret
The code is the template "subscription_availablebit"
I want to do some subscriptions avalaible only for some usergroups but now the problem is not the code, the problem is that values I get in php for $forusergroups are not valid in the conditional of the template, perhaps I need to "addslashes" it or something similar.

I have post a service request for this hack in https://vborg.vbsupport.ru/showthread.php?t=81287 but I have not luck so I try to do myself. It?s not easy because I am not a coder.

Thanks for your help

If I put in file.php
PHP Code:
$forusergroups '4,5,6' 
the conditional in the template
Code:
4) <if condition="is_member_of($bbuserinfo, $forusergroups)">OK for variable <else /> FAIL </if>
The conditional works with $bbuserinfo = 6, by example.
Quote:
4) OK for variable
So, I think what is wrong if the forrmat of values I get from database in "$forusergroups = $case['forusergroups'];". The values are correct but not the format.
Reply With Quote
  #6  
Old 05-20-2005, 02:21 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Well i don't know the contents of your $case array.

It would really help if you posted a bit more code snippets.
Reply With Quote
  #7  
Old 05-20-2005, 04:11 PM
luroca luroca is offline
 
Join Date: Jul 2002
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarcoH64
Well i don't know the contents of your $case array.

It would really help if you posted a bit more code snippets.
Well, you have asked it
This is the real thing, not an example.


In Subscription Tools add a new phrase:
Code:
Varname: forusergroups
Text: Avalaible only for these usergroups
Run this query to add a new definition (forusergroups) in table subscription:
Code:
ALTER TABLE subscription ADD forusergroups varchar(255) NOT NULL AFTER description
In Admincp/subscriptions.php:
FIND:
PHP Code:
print_textarea_row($vbphrase['description'], 'sub[description]'$sub['description']); 
And ADD this to can input value of "forusergroups" in "Subscription Manager" of Admin CP:
PHP Code:
print_input_row($vbphrase['forusergroups'], 'sub[forusergroups]'$sub['forusergroups']); 
In forum/subscriptions.php, AFTER:
PHP Code:
foreach ($subscriptioncache AS $subscription)
{
$show['will_extend'] = false
ADD:
PHP Code:
$forusergroups =  $subscription['forusergroups']; 
------------- ACLARATION BEGINS ----------------
$subscription is got from /includes/functions_subscriptions.php:
PHP Code:
function cache_user_subscriptions()
{
    global 
$DB_site$subscriptioncache;

    if (!
is_array($subscriptioncache))
    {
        
$subscriptioncache = array();
        
$subscriptions $DB_site->query("SELECT * FROM " TABLE_PREFIX "subscription");
        while (
$subscription $DB_site->fetch_array($subscriptions))
        {
            
$subscriptioncache["$subscription[subscriptionid]"] = $subscription;
        }
        
$DB_site->free_result($subscriptions);
    }

------------- ACLARATION ENDS -------------------

Now go to template "subscription_availablebit"

BEFORE all the template ADD:
Code:
<if condition="is_member_of($bbuserinfo, $forusergroups)">
And AFTER all the template, ADD:
Code:
</i>
For each subscription there is a "forusergroups" with the value you want, for example: 3 or 5,6,7 or 2,4 or 2,4,5,6,7,8 etc, this is, the usergroups for which this subscription will be available.

And here we are, it must be work but not, the value in $forusergroups is correct but it is not ok into the conditional; if I put $forusergroups in another place in the template shows the correct value.
Remember I am using the "is_member_of improvement" hack of merk (http://<br /> https://vborg.vbsuppo...ad.php?t=61149) This hack is working OK as I see changing $forusergroups for "4,5,6" for example.

------------- ACLARATION BEGINS -----------------
I also have tried putting a conditional in /forum/subscriptions.php besides:
Code:
if ($subscription['active'])
but it does not work
*********** CORRECTION 1 ************
It works only if array is of only ONE number, for example: 2 or 6 but nor 2,6
------------- ACLARATION ENDS -------------------

I think this is all the info

Thanks very much.
--- Edited to add the correction 1 ---
---------
Reply With Quote
  #8  
Old 05-20-2005, 07:28 PM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Try adding the following before evaluating your template:
PHP Code:
 $forusergroupsarray explode(","$forusergroups); 
then use $forusergroupsarray in you template conditional.
Reply With Quote
  #9  
Old 05-20-2005, 07:51 PM
luroca luroca is offline
 
Join Date: Jul 2002
Posts: 142
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by MarcoH64
Try adding the following before evaluating your template:
PHP Code:
 $forusergroupsarray explode(","$forusergroups); 
then use $forusergroupsarray in you template conditional.
Yes and not
It does not work in the template
It works (and very very well) in the php and so merk?s hack is not necesary neither modify the template
Now the hack wil be finished soon.

Thanks, thanks, thanks, one thousand thanks
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 07:13 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.06763 seconds
  • Memory Usage 2,278KB
  • 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
  • (9)bbcode_code
  • (9)bbcode_php
  • (5)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (9)post_thanks_box
  • (9)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (9)post_thanks_postbit_info
  • (9)postbit
  • (9)postbit_onlinestatus
  • (9)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