Register Members List Search Today's Posts Mark Forums Read

Reply
 
Thread Tools
  #1  
Old 17 Jul 2017, 17:07
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
[RESOLVED] Conditions being ignored when viewed by guest

I am editing a template with the following conditional structure:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

The template works correctly when viewed by a member who is logged in. However, when a guest views it, this condition gets ignored in both places:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

The shown class is added no matter what condition I add around it. I have even tried changing the condition to true === false. That condition is ignored when viewed by a guest. I tested that changes were working by adding {vb:raw} for the variables in the template. The values display correctly immediately after saving. The issue is isolated to the vbulletin condition statement.

Once again, it works properly when logged in, but not when viewing as a guest.

How can I resolve this?

Last edited by Makaze; 23 Jul 2017 at 17:04.
Reply With Quote
  #2  
Old 17 Jul 2017, 17:36
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Real name: Mark
Try changing it to:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

__________________
Former vBulletin.org Staff Member



Support for my products (as well as updates/new product publishing) has been moved to MHB - vBulletin Products and TAZ - Add-ons
Reply With Quote
  #3  
Old 17 Jul 2017, 17:51
Dave Dave is offline
 
Join Date: Jun 2010
Real name: Dave
The condition $post['userid'] == $bbuserinfo['userid'] checks if the userid of the post is the same as the userid of the current logged in user. Guests have a userid of 0 which is why it never (should) evaluates to true.

Have you tried changing == to ===? That will also match the data type.
__________________
https://technidev.com - security, development, exploits, vBulletin
dave[at]technidev[dot]com

Contact me for custom vBulletin 3/4 work & server/website management.
Reply With Quote
  #4  
Old 17 Jul 2017, 18:39
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
Originally Posted by Dave View Post
The condition $post['userid'] == $bbuserinfo['userid'] checks if the userid of the post is the same as the userid of the current logged in user. Guests have a userid of 0 which is why it never (should) evaluates to true.

Have you tried changing == to ===? That will also match the data type.
Yes. I tested it with true === false as well. The condition was ignored regardless of contents.

--------------- Added 17 Jul 2017 at 18:43 ---------------

Originally Posted by MarkFL View Post
Try changing it to:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.
This had no effect.

Once again, the code works when logged in. It fails when logged out.
Reply With Quote
  #5  
Old 17 Jul 2017, 20:38
Dave Dave is offline
 
Join Date: Jun 2010
Real name: Dave
So if I understand you correctly, your condition always evaluates to true when a guest is viewing it? Thus the class "shown" is always added?

Is the $post variable available in the template? Also, try putting the following in your template before the div that contains the if condition so you can see what it outputs:

Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

__________________
https://technidev.com - security, development, exploits, vBulletin
dave[at]technidev[dot]com

Contact me for custom vBulletin 3/4 work & server/website management.
Reply With Quote
  #6  
Old 17 Jul 2017, 20:56
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
No, you are not understanding.

It behaves as if the condition tag does not exist, even if the condition in the quotes is "true === false", instead of my condition I would like to use.

I can access the variables and output them to the screen using {vb:raw post.userid} and {vb:raw bbuserinfo.userid}. They output correctly, including for guests. The variables exist in the template.

Furthermore, the code:


Block Disabled:      (Update License Status)  
Suspended or Unlicensed Members Cannot View Code.

Should never evaluate to true. Yet it does, in this template, while being viewed by a guest.

In other words, it is behaving as if the conditional tag is not there, and just shows the contents.

It has nothing to do with the actual statements in the conditions.

--------------- Added 17 Jul 2017 at 22:57 ---------------

It appeared to be the location of the statement. It works if it is at a tier 2 nesting or global if.

I believe there is a bug related to nesting and guest viewing.
Reply With Quote
  #7  
Old 23 Jul 2017, 17:03
Makaze's Avatar
Makaze Makaze is offline
 
Join Date: Apr 2015
RESOLVED!

The issue was a piece of JavaScript that was adding the shown class after the page had loaded. The reason it did so even if the user was logged out, was because the condition was to find the Add Thanks button, and if it isn't there, add the shown class. The button isn't there for guests, so it added shown to everything.

I apologize for wasting everyone's time.
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

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


New To Site? Need Help?

All times are GMT. The time now is 01:02.

Layout Options | Width: Wide Color: