HTML Logo by World Wide Web Consortium (www.w3.org). Click to learn more about our commitment to accessibility and standards.

Moving forward with Composr

ocPortal has been relaunched as Composr CMS, which is now in beta. ocPortal 9 will be superseded by Composr 10.

Head over to compo.sr for our new site, and to our migration roadmap. Existing ocPortal member accounts have been mirrored.


[RESOLVED] v7.0.1 - $ISSET Tempcode not behaving as expected

Login / Search

 [ Join | More ]
 Add topic 
Posted
Rating:
#88189 (In Topic #17897)
Avatar

Community saint

I'm tweaking OCF_MEMBER_PROFILE_SCREEN.tpl so that it displays the members location on a map if the member has a Latitude/Longitude set.

My LAT/LONG variables are only set if the corresponding CPF are set. i.e.:

Code

{+START,IF,{$EQ,{NAME},Latitude}}
   {$SET,LAT,{VALUE}}
{+END}
{+START,IF,{$EQ,{NAME},Longitude}}
   {$SET,LONG,{VALUE}}
{+END}
The problem is that {$ISSET,LAT} always return _true, even if I put the test as the first line in the template, long before anything else could possibly set it.

So $ISSET is not testing the state of the variable at a given time during processing. Even if the scope of variables is global to that template, I can't see why it would return _true if set at the top of the template.

Similarly, {$IS_NON_EMPTY,LAT} always return true, so I can't use that either.

And while I'm talking Tempcode, is there a way to test if a value is numeric? I can force a value to be numeric with:

Code

{$SET,LAT,{$ADD,{$GET,LAT},0}}
which is not ideal, but I can't figure out how to test for it.


Last edit: by temp1024

Do you have a Samsung Galaxy S / Galaxy S II ? If so, why not check out my ScreenFree FM Radio .
Back to the top
 
Posted
Rating:
#88192
Avatar

Tempcode has a preprocessor which causes everything to be evaluated once before it is run. I suggest doing explicit initiations to '_false' using 'SET'.

There's a 'PREG_MATCH' symbol you could use for numeric checks.


Become a fan of ocPortal on Facebook or add me as a friend. Add me on on Twitter.
Was I helpful?
  • If not, please let us know how we can do better (please try and propose any bigger ideas in such a way that they are fundable and scalable).
  • If so, please let others know about ocPortal whenever you see the opportunity.
  • If my reply is too Vulcan or expressed too much in business-strategy terms, and not particularly personal, I apologise. As a company & project maintainer, time is very limited to me, so usually when I write a reply I try and make it generic advice to all readers. I'm also naturally a joined-up thinker, so I always express my thoughts in combined business and technical terms. I recognise not everyone likes that, don't let my Vulcan-thinking stop you enjoying ocPortal on fun personal projects.
  • If my response can inspire a community tutorial, that's a great way of giving back to the project as a user.
Back to the top
 
Posted
Rating:
#88194
Avatar

Community saint

Chris Graham said

Tempcode has a preprocessor which causes everything to be evaluated once before it is run. I suggest doing explicit initiations to '_false' using 'SET'.
:o , how did I miss that :$   
There's a 'PREG_MATCH' symbol you could use for numeric checks.
Thanks, will look into it.

Do you have a Samsung Galaxy S / Galaxy S II ? If so, why not check out my ScreenFree FM Radio .
Back to the top
 
Posted
Rating:
#88639
Avatar

Community saint

temp1024 said

Chris Graham said

There's a 'PREG_MATCH' symbol you could use for numeric checks.
Thanks, will look into it.
Forgot to report back. Ended-up using the following PREG_MATCH to check if is numeric, and no longer need to use $ISSET.

Code

{$PREG_MATCH,^(\-?\d+(\.\d+)?)$,{$GET,MY_VARIABLE}}

Do you have a Samsung Galaxy S / Galaxy S II ? If so, why not check out my ScreenFree FM Radio .
Back to the top
 
1 guests and 0 members have just viewed this: None
Control functions:

Quick reply   Contract

Your name:
Your message: