aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-05-05 18:15:07 -0700
committerredmatrix <git@macgirvin.com>2016-05-05 18:15:07 -0700
commit2e3da0cbbbb753c8910e96a907cd031e5d95f7c2 (patch)
treea8cec92c45a7d341e4e99378c13876daa2795371 /include
parent8ffdc4859baa9f2ae9567a4c443dfbb227919167 (diff)
downloadvolse-hubzilla-2e3da0cbbbb753c8910e96a907cd031e5d95f7c2.tar.gz
volse-hubzilla-2e3da0cbbbb753c8910e96a907cd031e5d95f7c2.tar.bz2
volse-hubzilla-2e3da0cbbbb753c8910e96a907cd031e5d95f7c2.zip
- Setup: check php version (5.4 required)
- Comanche: implement conditionals. Currently the only supported tests are true/false for system config settings and supports the following forms: [if $config.system.foo] [widget=widget1][/widget] [else] [widget=widget2][/widget] [/if] [if $config.system.foo] [widget=widget1][/widget] [/if]
Diffstat (limited to 'include')
-rw-r--r--include/comanche.php37
1 files changed, 36 insertions, 1 deletions
diff --git a/include/comanche.php b/include/comanche.php
index 4d55aee19..0a52eaf2b 100644
--- a/include/comanche.php
+++ b/include/comanche.php
@@ -53,6 +53,31 @@ function comanche_parser(&$a, $s, $pass = 0) {
}
}
+ $cnt = preg_match_all("/\[if (.*?)\](.*?)\[else\](.*?)\[\/if\]/ism", $s, $matches, PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ if(comanche_test_condition($mtch[1])) {
+ $s = str_replace($mtch[0], $mtch[2], $s);
+ }
+ else {
+ $s = str_replace($mtch[0], $mtch[3], $s);
+ }
+ }
+ }
+ else {
+ $cnt = preg_match_all("/\[if (.*?)\](.*?)\[\/if\]/ism", $s, $matches, PREG_SET_ORDER);
+ if($cnt) {
+ foreach($matches as $mtch) {
+ if(comanche_test_condition($mtch[1])) {
+ $s = str_replace($mtch[0], $mtch[2], $s);
+ }
+ else {
+ $s = str_replace($mtch[0], '', $s);
+ }
+ }
+ }
+ }
+
if($pass == 0) {
$cnt = preg_match("/\[layout\](.*?)\[\/layout\]/ism", $s, $matches);
if($cnt)
@@ -86,7 +111,6 @@ function comanche_parser(&$a, $s, $pass = 0) {
App::$layout['webpage'] = comanche_webpage($a,$mtch[1]);
}
}
-
}
else {
$cnt = preg_match_all("/\[region=(.*?)\](.*?)\[\/region\]/ism", $s, $matches, PREG_SET_ORDER);
@@ -100,6 +124,17 @@ function comanche_parser(&$a, $s, $pass = 0) {
}
+function comanche_test_condition($s) {
+
+ if(preg_match("/[\$]config[\.](.*?)/",$s,$matches)) {
+ $x = explode('.',$s);
+ if(get_config($x[1],$x[2]))
+ return true;
+ }
+ return false;
+
+}
+
function comanche_menu($s, $class = '') {