170 list($part1, $part2) = explode(
".", $mergeCodeMap);
172 trace(
"MergeCodeManager::part1 is $part1 and part2 is $part2", 3);
174 if(get_class($this->item) == $part1)
176 trace(
"MergeCodeManager::part1 equals item class", 3);
183 if($this->item->hasRelation($part1))
185 $replaceObj = $this->item->$part1();
186 if(is_object($replaceObj) && $replaceObj->hasField($part2))
188 trace(
"MergeCodeManager:: part1 is relation and part2 is a field in that related class.", 3);
189 $replaceText = $replaceObj->format(
"{".$part2 .
"}");
191 elseif(is_callable(array($replaceObj, $part2)))
193 trace(
"MergeCodeManager:: part1 is relation of sending class and part2 is a function in that relation.", 3);
194 $replaceText = $replaceObj->$part2();
201 elseif(is_callable(array($part1, $part2)))
203 trace(
"MergeCodeManager:: part1 is class and part2 is static function of a class.", 3);
204 $replaceText = call_user_func(array($part1, $part2), $this->item);
213 if($this->item->hasField($part1))
215 trace(
"MergeCodeManager:: part1 is field of sending class.", 3);
216 $replaceText = $this->item->format(
"{".$part1 .
"}");
218 elseif(is_callable($part1))
220 trace(
"MergeCodeManager:: part1 is callback function.", 3);
221 $replaceText = call_user_func($part1, $this->item);
223 elseif(is_callable(array($this->item, $part1)))
225 trace(
"MergeCodeManager:: part1 is function from sending class.", 3);
226 $replaceText = $this->item->$part1();
235 trace(
"MergeCodeManager:: replaceText is $replaceText", 3);
237 trace(
"MergeCodeManager:: Warning: merge code map not valid.", 3);