vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   Problem passing variable or array from php to conditional in template (https://vborg.vbsupport.ru/showthread.php?t=81735)

luroca 05-19-2005 05:16 PM

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 "[" ----

Zero Tolerance 05-19-2005 09:15 PM

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

luroca 05-20-2005 05:51 AM

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".

Marco van Herwaarden 05-20-2005 06:24 AM

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.

luroca 05-20-2005 07:08 AM

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.

Marco van Herwaarden 05-20-2005 01:21 PM

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

It would really help if you posted a bit more code snippets.

luroca 05-20-2005 03:11 PM

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 ---
---------

Marco van Herwaarden 05-20-2005 06:28 PM

Try adding the following before evaluating your template:
PHP Code:

 $forusergroupsarray explode(","$forusergroups); 

then use $forusergroupsarray in you template conditional.

luroca 05-20-2005 06:51 PM

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 :D
Now the hack wil be finished soon.

Thanks, thanks, thanks, one thousand thanks :)


All times are GMT. The time now is 03:28 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02173 seconds
  • Memory Usage 1,767KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (9)bbcode_code_printable
  • (9)bbcode_php_printable
  • (5)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (9)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete