[pmwiki-users] if exists conditional markup problem
Criss Ittermann
crisses at kinhost.org
Thu Apr 2 04:51:48 CDT 2015
Thank you, it spits out:
(:if exists Profile-Data.{Members/Hosts$:201504} :) [...] (:else:) [...] (:if:)
So the PTV does not appear to have been processed yet -- the markup expression has, though. And this goes for ALL the PTVs throughout the entire IF condition, including the ones I've redacted with [...]
However this violates documentation:
Use page text variables in conditional markup <http://www.pmwiki.org/wiki/PmWiki/ConditionalMarkup>
Page text variables will be assigned/evaluated before any conditional markup is evaluated. This effectively means that you cannot declare a PTV within an if...else condition; and also that a PTV will have a value even if it is set within a (:if false:)....(:if:) condition.
on page
http://www.pmwiki.org/wiki/PmWiki/PageTextVariables <http://www.pmwiki.org/wiki/PmWiki/PageTextVariables>
I upgraded to the latest version and it still doesn't work. I turned off each recipe and commented out sections of code that even vaguely might affect conditional processing or PTV evaluation one at a time (it's a live site), and no change. I did not comment out authentication, captcha or PmForm, since these would break the site in a very bad way and are released by PM & Petko.
Just for giggles, to take the complexity out of the if-conditional, I even tried:
TempVar:Profile-Data.{Members/Hosts$:{(ftime "%Y%m")}}
(:if exists {$:TempVar} :)
But of course, that failed too. But the variable itself is set correctly.
This fails too, whether I use the full expression, or the new variable:
(:if equal "{$:TempVar}" "Profile-Data.HEdelman" :)
revealing the if conditional before it processes:
(:if equal "Profile-Data.{Members/Hosts$:201504}" "Profile-Data.HEdelman" :)
(:if false:)
TempVar:Profile-Data.{Members/Hosts$:{(ftime "%Y%m")}}
(:if:)
Still sets the variable.
> On Apr 1, 2015, at 8:25 PM, John Rankin <john.rankin at affinity.co.nz <mailto:john.rankin at affinity.co.nz>> wrote:
>
> It may be possible to intercept the if code and find out what condition pmwiki is evaluating, which should give information about what is happening. Try this in local/config.php:
>
> $CondTextReplacement = "MyTempRepl(\$pagename, \$m[0], \$m[1])";
> function MyTempRepl($pagename, $text, $code='') {
> echo $text;
> return CondText2($pagename, $text, $code);
> }
>
> If I am reading stdmarkup.php correctly, this should echo the contents of the if code at the time the conditional is evaluated, which will show whether the var has been evaluated as intended.
>
> JR
>
> On 2/04/15 12:07 AM, Criss Ittermann wrote:
>> I'm trying to figure out why this is returning false ("To be announced."):
>>
>> (:if exists Profile-Data.{Members/Hosts$:{(ftime "%Y%m")}} :)
>> ...
>> (:else:)
>> To be announced.
>> (:ifend:)
>>
>>
>> When the following returns a fully functioning link to the correct page, which exists:
>>
>> [[Profile-Data.{Members/Hosts$:{(ftime "%Y%m")}}]]
>>
>>
>> What am I doing wrong?
>>
>> Crisses
>>
>>
>>
>> _______________________________________________
>> pmwiki-users mailing list
>> pmwiki-users at pmichaud.com <mailto:pmwiki-users at pmichaud.com>
>> http://www.pmichaud.com/mailman/listinfo/pmwiki-users <http://www.pmichaud.com/mailman/listinfo/pmwiki-users>
>
> --
> John Rankin
> Affinity Limited
> T +64 4 495 3737
> M +64 21 726 546
> _______________________________________________
> pmwiki-users mailing list
> pmwiki-users at pmichaud.com <mailto:pmwiki-users at pmichaud.com>
> http://www.pmichaud.com/mailman/listinfo/pmwiki-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.pmichaud.com/pipermail/pmwiki-users/attachments/20150402/a38e33d1/attachment.html>
More information about the pmwiki-users
mailing list