print "</table>\n"; print "</td></tr>\n"; print "</table>\n"; print "<input type=\"submit\" value=\"" . $pgv_lang["merge_records"] . "\">\n"; print "</form>\n"; } else { if ($action == "merge") { $manual_save = true; print "<h2>" . $pgv_lang["merge_step3"] . "</h2>\n"; if ($GEDCOM == $ged2) { $success = delete_gedrec($gid2); if ($success) { print "<br />" . $pgv_lang["gedrec_deleted"] . "<br />\n"; } //-- replace all the records that linked to gid2 $ids = fetch_all_links($gid2, PGV_GED_ID); foreach ($ids as $id) { if (isset($pgv_changes[$id . "_" . $GEDCOM])) { $record = find_updated_record($id); } else { $record = fetch_gedcom_record($id, PGV_GED_ID); $record = $record['gedrec']; echo $pgv_lang["updating_linked"] . " {$id}<br />\n"; $newrec = str_replace("@{$gid2}@", "@{$gid1}@", $record); replace_gedrec($id, $newrec); } } } $newgedrec = "0 @{$gid1}@ {$type1}\n"; for ($i = 0; $i < count($facts1) || $i < count($facts2); $i++) { if (isset($facts1[$i])) {
echo ' readonly="readonly"'; } echo '></td>'; echo '<td>', nl2br(WT_Filter::escapeHtml($fact2->getGedcom()), false), '</td></tr>'; } } echo '</table>'; echo '</td></tr>'; echo '</table>'; echo '<input type="submit" value="', WT_I18N::translate('save'), '">'; echo '</form></div>'; } elseif ($action == 'merge') { echo '<div id="merge3"><h3>', WT_I18N::translate('Merge records'), '</h3>'; if ($GEDCOM == $ged2) { //-- replace all the records that linked to gid2 $ids = fetch_all_links($gid2, WT_GED_ID); foreach ($ids as $id) { $record = WT_GedcomRecord::getInstance($id); if (!$record->isOld()) { echo WT_I18N::translate('Updating linked record'), ' ', $id, '<br>'; $gedcom = str_replace("@{$gid2}@", "@{$gid1}@", $record->getGedcom()); $gedcom = preg_replace('/(\\n1.*@.+@.*(?:(?:\\n[2-9].*)*))((?:\\n1.*(?:\\n[2-9].*)*)*\\1)/', '$2', $gedcom); $record->updateRecord($gedcom, true); } } // Update any linked user-accounts WT_DB::prepare("UPDATE `##user_gedcom_setting`" . " SET setting_value=?" . " WHERE gedcom_id=? AND setting_name='gedcomid' AND setting_value=?")->execute(array($gid2, WT_GED_ID, $gid1)); // Merge hit counters $hits = WT_DB::prepare("SELECT page_name, SUM(page_count)" . " FROM `##hit_counter`" . " WHERE gedcom_id=? AND page_parameter IN (?, ?)" . " GROUP BY page_name")->execute(array(WT_GED_ID, $gid1, $gid2))->fetchAssoc(); foreach ($hits as $page_name => $page_count) { WT_DB::prepare("UPDATE `##hit_counter` SET page_count=?" . " WHERE gedcom_id=? AND page_name=? AND page_parameter=?")->execute(array($page_count, WT_GED_ID, $page_name, $gid1));
} } // Can’t find the record/fact, or don’t have permission to delete it. header('HTTP/1.0 406 Not Acceptable'); break; case 'delete-family': case 'delete-individual': case 'delete-media': case 'delete-note': case 'delete-repository': case 'delete-source': require WT_ROOT . 'includes/functions/functions_edit.php'; $record = WT_GedcomRecord::getInstance(WT_Filter::post('xref', WT_REGEX_XREF)); if ($record && WT_USER_CAN_EDIT && $record->canShow() && $record->canEdit()) { // Delete links to this record foreach (fetch_all_links($record->getXref(), $record->getGedcomId()) as $xref) { $linker = WT_GedcomRecord::getInstance($xref); $old_gedcom = $linker->getGedcom(); $new_gedcom = remove_links($old_gedcom, $record->getXref()); // fetch_all_links() does not take account of pending changes. The links (or even the // record itself) may have already been deleted. if ($old_gedcom !== $new_gedcom) { // If we have removed a link from a family to an individual, and it has only one member if (preg_match('/^0 @' . WT_REGEX_XREF . '@ FAM/', $new_gedcom) && preg_match_all('/\\n1 (HUSB|WIFE|CHIL) @(' . WT_REGEX_XREF . ')@/', $new_gedcom, $match) == 1) { // Delete the family $family = WT_GedcomRecord::getInstance($xref); WT_FlashMessages::addMessage(WT_I18N::translate('The family “%s” has been deleted, as it only has one member.', $family->getFullName())); $family->deleteRecord(); // Delete any remaining link to this family if ($match) { $relict = WT_GedcomRecord::getInstance($match[2][0]);
// from source_ctrl.php or note_ctrl.php (line 208 submenu->addOnclick ..... etc) // --------------------------------------------------------------------------------- case 'deletenote': case 'deletesource': case 'deleterepo': if (isset($_REQUEST['action'])) { $action = $_REQUEST['action']; } if (PGV_DEBUG) { phpinfo(INFO_VARIABLES); echo "<pre>{$gedrec}</pre>"; } if (!empty($gedrec)) { $success = true; // Delete links to this record foreach (fetch_all_links($pid, PGV_GED_ID) as $xref) { if (isset($pgv_changes[$xref . '_' . PGV_GEDCOM])) { $gedrec = find_updated_record($xref, PGV_GED_ID); } else { $gedrec = find_gedcom_record($xref, PGV_GED_ID); } $lines = explode("\n", $gedrec); $newrec = ""; $skipline = false; $glevel = 0; foreach ($lines as $indexval => $line) { if (preg_match("/^\\d " . PGV_REGEX_TAG . " @{$pid}@/", $line) == 0 && !$skipline) { $newrec .= $line . "\n"; } else { if (!$skipline) { $glevel = $line[0];