function updateVariableValue($old, $new, $val) { // check fills $fills = getReferences($val, INDICATOR_FILL); $fills2 = getReferences($val, INDICATOR_FILL_NOVALUE); $fills3 = getReferences($val, INDICATOR_INLINEFIELD_ANSWER); $fills4 = getReferences($val, INDICATOR_INLINEFIELD_TEXT); usort($fills, "reversenat"); foreach ($fills as $fill) { $newfill = preg_replace("/\\b" . $old . "\\b/i", $new, $fill); if ($newfill != $fill) { $pattern = "/\\" . INDICATOR_FILL . preparePattern($fill) . "/i"; $val = preg_replace($pattern, INDICATOR_FILL . $newfill, $val); } } // check fills no values usort($fills2, "reversenat"); foreach ($fills2 as $fill) { $newfill = preg_replace("/\\b" . $old . "\\b/i", $new, $fill); if ($newfill != $fill) { $pattern = "/\\" . INDICATOR_FILL_NOVALUE . preparePattern($fill) . "/i"; $val = preg_replace($pattern, INDICATOR_FILL_NOVALUE . $newfill, $val); } } // check inline fields usort($fills3, "reversenat"); foreach ($fills3 as $fill) { $newfill = preg_replace("/\\b" . $old . "\\b/i", $new, $fill); if ($newfill != $fill) { $pattern = "/\\" . INDICATOR_INLINEFIELD_ANSWER . preparePattern($fill) . "/i"; $val = preg_replace($pattern, INDICATOR_INLINEFIELD_ANSWER . $newfill, $val); } } // check inline field texts usort($fills4, "reversenat"); foreach ($fills4 as $fill) { $newfill = preg_replace("/\\b" . $old . "\\b/i", $new, $fill); if ($newfill != $fill) { $pattern = "/\\" . INDICATOR_INLINEFIELD_TEXT . preparePattern($fill) . "/i"; $val = preg_replace($pattern, INDICATOR_INLINEFIELD_TEXT . $newfill, $val); } } // return result return $val; }
function replaceFills($text, $updateinlinefields = false) { $cnt = 0; if (trim($text) == "") { return $text; } while (strpos($text, INDICATOR_FILL_NOVALUE) !== false) { $fills = getReferences($text, INDICATOR_FILL_NOVALUE); // sort fills by longest keys //uksort($fills, "compareLength"); usort($fills, "reversenat"); foreach ($fills as $fill) { $fillref = $fill; //str_replace("[", "\[", str_replace("]", "\]", $fill)); $filltext = strtr($this->getFillValue(INDICATOR_FILL_NOVALUE . $fill), array('\\' => '\\\\', '$' => '\\$')); $pattern = "/\\" . INDICATOR_FILL_NOVALUE . preparePattern($fillref) . "/i"; $text = preg_replace($pattern, $filltext, $text); //echo 'NOW: ' . $text . "<br/>"; } $cnt++; /* stop after 999 times */ if ($cnt > 999) { break; } } $cnt = 0; while (strpos($text, INDICATOR_FILL) !== false) { $fills = getReferences($text, INDICATOR_FILL); // sort fills by longest keys //uksort($fills, "compareLength"); usort($fills, "reversenat"); foreach ($fills as $fill) { $fillref = $fill; // str_replace("[", "\[", str_replace("]", "\]", $fill)); $filltext = strtr($this->getDisplayValue($fill, $this->getFillValue($fill)), array('\\' => '\\\\', '$' => '\\$')); $pattern = "/\\" . INDICATOR_FILL . preparePattern($fillref) . "/i"; $text = preg_replace($pattern, $filltext, $text); //echo 'NOW: ' . $text . "<br/>"; } $cnt++; /* stop after 999 times */ if ($cnt > 999) { break; } } if ($updateinlinefields) { $text = $this->updateInlineFields($text); } return $text; }
function handleFills($text) { $cnt = 0; while (strpos($text, INDICATOR_FILL) !== false) { $fills = getReferences($text, INDICATOR_FILL); // sort fills by longest keys usort($fills, "reversenat"); foreach ($fills as $fill) { $fillref = $fill; // str_replace("[", "\[", str_replace("]", "\]", $fill)); $filltext = strtr(FILL_MARKER . $this->handleFill($fill) . FILL_MARKER, array('\\' => '\\\\', '$' => '\\$')); $pattern = "/\\" . INDICATOR_FILL . preparePattern($fillref) . "/i"; $text = preg_replace($pattern, $filltext, $text); //echo 'NOW: ' . $text . "<br/>"; } $cnt++; /* stop after 999 times */ if ($cnt > 999) { break; } } $text = str_replace("'", "\\'", $text); return str_replace(FILL_MARKER, "^", $text); }