function edit_get_merged_text($templateid) { global $vbphrase; $templates = fetch_templates_for_merge($templateid); $new = $templates["new"]; $custom = $templates["custom"]; $origin = $templates["origin"]; require_once (DIR . '/includes/class_merge.php'); $merge = new vB_Text_Merge_Threeway($origin['template_un'], $new['template_un'], $custom['template_un']); $chunks = $merge->get_chunks(); $text = ""; foreach ($chunks as $chunk) { if ($chunk->is_stable()) { $text .= $chunk->get_text_original(); } else { $chunk_text = $chunk->get_merged_text(); if ($chunk_text === false) { $new_title = construct_phrase($vbphrase['merge_title_new'], $new['version']); $chunk_text = format_conflict_text($chunk->get_text_right(), $chunk->get_text_original(), $chunk->get_text_left(), $origin['version'], $new['version']); } $text .= $chunk_text; } } return $text; }
/** * Return regular expression to detect the blocks returned by format_conflict_text * * @return string -- value suitable for passing to preg_match as an re */ function get_conflict_text_re() { //we'll start by grabbing the formatting from format_conflict_text directly //this should reduce cases were we change the formatting and forget to change the re $re = format_conflict_text(".*\n", ".*\n", ".*\n", ".*", '.*'); //we don't have a set number of delimeter characters since we try to even up the lines //in some cases (which can vary based on the version strings). Since we don't have the //exact version available, we don't know how many got inserted. We'll match any number //(we use two because we should always have at least that many and it dramatically improves //performance -- probably because we get an early failure on all of the html tags) $re = preg_replace('#<+#', '<<+', $re); $re = preg_replace('#=+#', '==+', $re); $re = preg_replace('#>+#', '>>+', $re); //handle variations on newlines. $re = str_replace("\n", "(?:\r|\n|\r\n)", $re); //convert the preg format $re = "#$re#isU"; return $re; }