67 $this->item = clone(
$item);
68 $this->item->filter =
null;
71 $usedMergeCodes = array();
72 preg_match_all(
"/\[(.*?)\]/", $inText, $usedMergeCodes, PREG_PATTERN_ORDER);
74 $usedMergeCodes = $usedMergeCodes[1];
101 if(count($usedMergeCodes) > 0)
103 $used = strip_tags(
"'". implode(
"','", array_values($usedMergeCodes)) .
"'");
106 ->bind(
":cn", $this->class_name)
115 if(count($usedMergeCodes) == 0)
117 trace(
"MergeCodeManager:: no merge codes used.", 3);
124 foreach($usedMergeCodes as $idx =>
$name)
126 $clean_name = strip_tags(
$name);
127 if(array_key_exists($clean_name, $indexed))
137 trace(
"MergeCodeManager:: map is $map", 3);
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);
246 if(count($this->patterns) == 0)
249 return str_replace($this->patterns, $this->replacements,
$text);
268 $table->column(
"Code Name",
"{name}",
false)
269 ->column(
"Description",
"{description}",
false)
271 $table->emptyMessage =
"There are no merge codes defined.";
273 $table->cssStyle =
"width: 100%";
287 $fields =
$obj->getFields();
288 if(count($fields) > 0)
292 if(preg_match(
"/_id/",
$name) || preg_match(
"/composite/",
$name)
293 || preg_match(
"/password/",
$name) ||
$type == Boolean)
297 $mCode->name =
$name;
299 $mCode->description =
$type .
" field in ". get_class(
$obj);
static fireEvent($event, $parameter=null, $mustBeConsumed=false)
Fire an event to all subscribers as detailed in their manifests.
MergeCodeManager($item, $inText, $class_name="")
static buildMergeCodeTable($class_name)
getReplaceText($mergeCodeMap)
static getDefaultCodes($obj, $mergeCodes)
getMergeCodeValues($usedMergeCodes)