From dd97d84c199bfc21c701a8fc2ea4222763e7b6e1 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Sat, 7 Jan 2017 15:58:01 -0800 Subject: Comanche conditionals - provide a conditional "~=" form for testing 'contains' (case independent substring match). Also add $request the request uri) to the supported variables. --- Zotlabs/Render/Comanche.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'Zotlabs/Render') diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php index 562a9f791..a9ca023e5 100644 --- a/Zotlabs/Render/Comanche.php +++ b/Zotlabs/Render/Comanche.php @@ -104,6 +104,8 @@ class Comanche { $x = explode('.',$v); if($x[0] == 'config') return get_config($x[1],$x[2]); + elseif($x[0] === 'request') + return $_SERVER['REQUEST_URI']; elseif($x[0] === 'observer') { if(count($x) > 1) { $y = \App::get_observer(); @@ -125,6 +127,8 @@ class Comanche { function test_condition($s) { // This is extensible. The first version of variable testing supports tests of the forms: + + // [if $config.system.foo ~= baz] which will check if get_config('system','foo') contains the string 'baz'; // [if $config.system.foo == baz] which will check if get_config('system','foo') is the string 'baz'; // [if $config.system.foo != baz] which will check if get_config('system','foo') is not the string 'baz'; // You may check numeric entries, but these checks are evaluated as strings. @@ -133,12 +137,20 @@ class Comanche { // [if $config.system.foo] which will check for a return of a true condition for get_config('system','foo'); // The values 0, '', an empty array, and an unset value will all evaluate to false. + if(preg_match('/[\$](.*?)\s\~\=\s(.*?)$/',$s,$matches)) { + $x = $this->get_condition_var($matches[1]); + if(stripos($x,trim($matches[2])) !== false) + return true; + return false; + } + if(preg_match('/[\$](.*?)\s\=\=\s(.*?)$/',$s,$matches)) { $x = $this->get_condition_var($matches[1]); if($x == trim($matches[2])) return true; return false; } + if(preg_match('/[\$](.*?)\s\!\=\s(.*?)$/',$s,$matches)) { $x = $this->get_condition_var($matches[1]); if($x != trim($matches[2])) -- cgit v1.2.3