コード例 #1
0
 /**
  * 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;
 }