Ejemplo n.º 1
0
     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])) {
Ejemplo n.º 2
0
                 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));
Ejemplo n.º 3
0
         }
     }
     // 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]);
Ejemplo n.º 4
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];