I've updated the script, you can get it from:
https://www.pmwiki.org/wiki/Cookbook/Templates
To reply to your question, to return true, is_callable() expects exactly
a function name without the "('$1')" parts.
So the 4th argument of Markup() should now be "ParametersParse" rather
than "ParametersParse('\$1')".
Because of this, the functions ParametersParse() and Template() need to
be updated because now they receive the full match array instead of its
1st element. So I rewrote from:
function ParametersParse($text) {...}
into:
function ParametersParse($m) {$text = $m[1]; ...}
Similarly for Template().
Lastly, at the end of the 3rd argument to both Markup() calls, the "e"
letter needs to be removed, previously:
"/\(:template(.*?):\)/e",
now: "/\(:template(.*?):\)/",
Petko
--
If you upgrade : http://www.pmwiki.org/Upgrades
On 07/11/2019 03:39, Michael Eager wrote:
I'm trying to use the PmForm and Captcha Cookbook addons, which use
the Template addon. This fails because the Template code uses the
deprecated /e extension to preg_replace:
templates.php:45
Markup(
'parameters',
'>include', ## or where?
"/($Parameters_mg|$Parameters_ms|$Parameters_mu)/e", <====
"ParametersParse('\$1')"
);
Markup(
'template',
'<include',
"/\(:template(.*?):\)/e", <====
"Template('\$1')"
);
which eventually calls preg_replace(), not preg_replace_callback()
pmwiki.php:1845
if (is_callable($r)) $x = preg_replace_callback($p,$r,$x);
else $x=preg_replace($p,$r,$x); <====
I'm a bit confused by the code, but it looks to me that $r should be
callable (which I suppose is the the callback function passed to
Markup()), but preg_replace_callback() is not being called.
Is there a fix for this?
_______________________________________________
pmwiki-users mailing list
pmwiki-users@pmichaud.com
http://www.pmichaud.com/mailman/listinfo/pmwiki-users