/** * Replase field expression with value from $bizObj * * @param string $expression * @param BizDataObj $bizObj * @return mixed */ protected static function replaceFieldsExpr($expression, $bizObj) { $script = ""; $start = 0; // replace [field] with field value while (true) { $pos0 = strpos($expression, "[", $start); $pos1 = strpos($expression, "]", $start); if ($pos0 === false) { $script .= substr($expression, $start); break; } if ($pos0 >= 0 && $pos1 > $pos0) { $script .= substr($expression, $start, $pos0 - $start); $start = $pos1 + 1; $fieldName = substr($expression, $pos0 + 1, $pos1 - $pos0 - 1); // get field value $fieldValue = $bizObj->getField($fieldName)->value; if ($fieldValue == null) { $fieldValue = $bizObj->getFieldValue($fieldName); } if ($fieldValue !== null) { $script .= $fieldValue; } else { //$script .= substr($expression, $pos0, $pos1 - $pos0); //return "fail to evaluate $expression"; return ""; } } elseif ($pos0 >= 0 && $pos1 <= $pos0) { break; } } return $script; }