function addClipping(WT_GedcomRecord $record) { global $WT_SESSION; if ($record->canShowName()) { $WT_SESSION->cart[WT_GED_ID][$record->getXref()] = true; // Add directly linked records preg_match_all('/\\n\\d (?:OBJE|NOTE|SOUR|REPO) @(' . WT_REGEX_XREF . ')@/', $record->getGedcom(), $matches); foreach ($matches[1] as $match) { $WT_SESSION->cart[WT_GED_ID][$match] = true; } } }
function getActionPreview(WT_GedcomRecord $record) { $old_lines = preg_split('/[\\n]+/', $record->getGedcom()); $new_lines = preg_split('/[\\n]+/', $this->updateRecord($record->getXref(), $record->getGedcom())); // Find matching lines using longest-common-subsequence algorithm. $lcs = self::LCS($old_lines, $new_lines, 0, count($old_lines) - 1, 0, count($new_lines) - 1); $diff_lines = array(); $last_old = -1; $last_new = -1; while ($lcs) { list($old, $new) = array_shift($lcs); while ($last_old < $old - 1) { $diff_lines[] = self::decorateDeletedText($old_lines[++$last_old]); } while ($last_new < $new - 1) { $diff_lines[] = self::decorateInsertedText($new_lines[++$last_new]); } $diff_lines[] = $new_lines[$new]; $last_old = $old; $last_new = $new; } while ($last_old < count($old_lines) - 1) { $diff_lines[] = self::decorateDeletedText($old_lines[++$last_old]); } while ($last_new < count($new_lines) - 1) { $diff_lines[] = self::decorateInsertedText($new_lines[++$last_new]); } return '<pre>' . self::createEditLinks(implode("\n", $diff_lines)) . '</pre>'; }