From 6ef59e14f508cc0f29224b6b0e50adb5d0137afd Mon Sep 17 00:00:00 2001 From: angelo paglialonga <info@angelopaglialonga.com> Date: Mon, 21 Jun 2021 15:07:29 +0200 Subject: [PATCH] Issue 1581 - I've added preg_replace (for strings only) and substr to available expressions in workflow --- .../VTExpressionEvaluater.inc | 37 +++++++++++++++++++ .../VTExpressionsManager.inc | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc index fee64c337..43e142f87 100644 --- a/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc +++ b/modules/com_vtiger_workflow/expression_engine/VTExpressionEvaluater.inc @@ -70,6 +70,41 @@ function __vt_gt($arr) { function __vt_concat($arr){ return implode($arr); } + +function __vt_substring($arr){ +unset($string);unset($start);unset($end); + if (count($arr) == 3) { + $string = $arr[0]; + $start = $arr[1]; + $end = $arr[2]; + } elseif (count($arr) == 2){ + $string = $arr[0]; + $start = $arr[1]; + $end = strlen($string); + }elseif (count($arr) == 1){ + $string = $arr[0]; + $start = 0; + $end = strlen($string); + }else{return '';} + return mb_substr($string,$start,$end); +} + + + +function __vt_preg_replace_str_only($arr){ + unset($pattern);unset($replacement);unset($subject); + if (count($arr) == 3 && is_string($arr[0]) && is_string($arr[1]) && is_string($arr[2])) { + $pattern = $arr[0]; + + + $replacement = $arr[1]; + + $subject = $arr[2]; + } else{return '';} + return preg_replace($pattern,$replacement,$subject); +} + + /* Date difference between (input times) or (current time and input time) * * @param Array $a $a[0] - Input time1, $a[1] - Input time2 @@ -283,6 +318,8 @@ class VTFieldExpressionEvaluater{ '>' => '__vt_gt', ); $this->functions = array( + 'substring'=>'__vt_substring', + 'preg_replace_str_only'=>'__vt_preg_replace_str_only', 'concat'=>'__vt_concat', 'time_diff' => '__vt_time_diff', 'time_diffdays' => '__vt_time_diffdays', diff --git a/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc b/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc index 7c2f1f0fb..7774e8854 100644 --- a/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc +++ b/modules/com_vtiger_workflow/expression_engine/VTExpressionsManager.inc @@ -39,7 +39,7 @@ class VTExpressionsManager{ } function expressionFunctions() { - return array('concat' => 'concat(a,b)', 'time_diffdays(a,b)' => 'time_diffdays(a,b)', 'time_diffdays(a)' => 'time_diffdays(a)', 'time_diff(a,b)' => 'time_diff(a,b)','time_diff(a)' => 'time_diff(a)', + return array('substring(string,start,end)'=> 'substring(string,start,end)','preg_replace_str_only(pattern_str,replacement_str,subject)'=>'preg_replace_str_only(pattern_str,replacement_str,subject)','concat' => 'concat(a,b)', 'time_diffdays(a,b)' => 'time_diffdays(a,b)', 'time_diffdays(a)' => 'time_diffdays(a)', 'time_diff(a,b)' => 'time_diff(a,b)','time_diff(a)' => 'time_diff(a)', 'add_days' => 'add_days(datefield, noofdays)', 'sub_days' => 'sub_days(datefield, noofdays)', 'add_time(timefield, minutes)' => 'add_time(timefield, minutes)', 'sub_time(timefield, minutes)' => 'sub_time(timefield, minutes)', 'today' => "get_date('today')", 'tomorrow' => "get_date('tomorrow')", 'yesterday' => "get_date('yesterday')", 'power(base,exponential)' => "power(base,exponential)"); } -- GitLab