/** * 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; }
/** * Set the association of the object * * @param ObjReference $objRef * @param BizDataObj $asscObj * @return void */ protected function setAssociation($objRef, $asscObj) { $this->m_Association["AsscObjName"] = $asscObj->m_Name; $this->m_Association["Relationship"] = $objRef->m_Relationship; $this->m_Association["Table"] = $objRef->m_Table; $this->m_Association["Column"] = $objRef->m_Column; $this->m_Association["FieldRef"] = $objRef->m_FieldRef; $this->m_Association["FieldRefVal"] = $asscObj->getFieldValue($objRef->m_FieldRef); if ($objRef->m_Relationship == "M-M") { $this->m_Association["XTable"] = $objRef->m_XTable; $this->m_Association["XColumn1"] = $objRef->m_XColumn1; $this->m_Association["XColumn2"] = $objRef->m_XColumn2; $this->m_Association["XKeyColumn"] = $objRef->m_XKeyColumn; $this->m_Association["XDataObj"] = $objRef->m_XDataObj; } }