summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--admin_pgv_to_wt.php11
-rw-r--r--admin_trees_config.php124
-rw-r--r--app/Schema/Migration37.php67
-rw-r--r--app/Tree.php72
4 files changed, 33 insertions, 241 deletions
diff --git a/admin_pgv_to_wt.php b/admin_pgv_to_wt.php
index cf42f42039..eed4d05e70 100644
--- a/admin_pgv_to_wt.php
+++ b/admin_pgv_to_wt.php
@@ -648,9 +648,7 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$FAM_FACTS_ADD = '';
$FAM_FACTS_QUICK = '';
$FAM_FACTS_UNIQUE = '';
- $FAM_ID_PREFIX = '';
$FULL_SOURCES = '';
- $GEDCOM_ID_PREFIX = '';
$GENERATE_UIDS = '';
$HIDE_GEDCOM_ERRORS = '';
$HIDE_LIVE_PEOPLE = '';
@@ -662,7 +660,6 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$MAX_DESCENDANCY_GENERATIONS = '';
$MAX_PEDIGREE_GENERATIONS = '';
$MAX_RELATION_PATH_LENGTH = '';
- $MEDIA_ID_PREFIX = '';
$META_DESCRIPTION = '';
$META_TITLE = '';
$MULTI_MEDIA = '';
@@ -679,7 +676,6 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$REPO_FACTS_ADD = '';
$REPO_FACTS_QUICK = '';
$REPO_FACTS_UNIQUE = '';
- $REPO_ID_PREFIX = '';
$REQUIRE_AUTHENTICATION = '';
$SHOW_AGE_DIFF = '';
$SHOW_COUNTER = '';
@@ -697,7 +693,6 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$SHOW_PEDIGREE_PLACES = '';
$SHOW_PRIVATE_RELATIONSHIPS = '';
$SHOW_RELATIVES_EVENTS = '';
- $SOURCE_ID_PREFIX = '';
$SOUR_FACTS_ADD = '';
$SOUR_FACTS_QUICK = '';
$SOUR_FACTS_UNIQUE = '';
@@ -774,9 +769,7 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'FAM_FACTS_ADD', $FAM_FACTS_ADD]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'FAM_FACTS_QUICK', $FAM_FACTS_QUICK]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'FAM_FACTS_UNIQUE', $FAM_FACTS_UNIQUE]);
- $stmt_gedcom_setting->execute([$GED_DATA['id'], 'FAM_ID_PREFIX', $FAM_ID_PREFIX]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'FULL_SOURCES', $FULL_SOURCES]);
- $stmt_gedcom_setting->execute([$GED_DATA['id'], 'GEDCOM_ID_PREFIX', $GEDCOM_ID_PREFIX]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'GENERATE_UIDS', $GENERATE_UIDS]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'HIDE_GEDCOM_ERRORS', $HIDE_GEDCOM_ERRORS]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'HIDE_LIVE_PEOPLE', $HIDE_LIVE_PEOPLE]);
@@ -853,14 +846,12 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'MAX_PEDIGREE_GENERATIONS', $MAX_PEDIGREE_GENERATIONS]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'MAX_RELATION_PATH_LENGTH', $MAX_RELATION_PATH_LENGTH]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'MEDIA_DIRECTORY', 'media/']);
- $stmt_gedcom_setting->execute([$GED_DATA['id'], 'MEDIA_ID_PREFIX', $MEDIA_ID_PREFIX]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'META_DESCRIPTION', $META_DESCRIPTION]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'META_TITLE', $META_TITLE]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'MEDIA_UPLOAD', $MULTI_MEDIA]); // see schema v12-13
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'NOTE_FACTS_ADD', $NOTE_FACTS_ADD]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'NOTE_FACTS_QUICK', $NOTE_FACTS_QUICK]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'NOTE_FACTS_UNIQUE', $NOTE_FACTS_UNIQUE]);
- $stmt_gedcom_setting->execute([$GED_DATA['id'], 'NOTE_ID_PREFIX', 'N']);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'NO_UPDATE_CHAN', $NO_UPDATE_CHAN]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'PEDIGREE_LAYOUT', $PEDIGREE_LAYOUT]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'PEDIGREE_ROOT_ID', $PEDIGREE_ROOT_ID]);
@@ -871,7 +862,6 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'REPO_FACTS_ADD', $REPO_FACTS_ADD]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'REPO_FACTS_QUICK', $REPO_FACTS_QUICK]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'REPO_FACTS_UNIQUE', $REPO_FACTS_UNIQUE]);
- $stmt_gedcom_setting->execute([$GED_DATA['id'], 'REPO_ID_PREFIX', $REPO_ID_PREFIX]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'REQUIRE_AUTHENTICATION', $REQUIRE_AUTHENTICATION]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'SHOW_COUNTER', $SHOW_COUNTER]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'SHOW_DEAD_PEOPLE', $SHOW_DEAD_PEOPLE]);
@@ -895,7 +885,6 @@ foreach ($GEDCOMS as $GEDCOM => $GED_DATA) {
preg_match_all('/[_A-Z]+/', $SHOW_RELATIVES_EVENTS, $match);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'SHOW_RELATIVES_EVENTS', implode(',', array_unique($match[0]))]);
- $stmt_gedcom_setting->execute([$GED_DATA['id'], 'SOURCE_ID_PREFIX', $SOURCE_ID_PREFIX]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'SOUR_FACTS_ADD', $SOUR_FACTS_ADD]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'SOUR_FACTS_QUICK', $SOUR_FACTS_QUICK]);
$stmt_gedcom_setting->execute([$GED_DATA['id'], 'SOUR_FACTS_UNIQUE', $SOUR_FACTS_UNIQUE]);
diff --git a/admin_trees_config.php b/admin_trees_config.php
index 5281799b71..cbf148984b 100644
--- a/admin_trees_config.php
+++ b/admin_trees_config.php
@@ -136,10 +136,8 @@ case 'general':
$WT_TREE->setPreference('FAM_FACTS_ADD', implode(',', Filter::postArray('FAM_FACTS_ADD')));
$WT_TREE->setPreference('FAM_FACTS_QUICK', implode(',', Filter::postArray('FAM_FACTS_QUICK')));
$WT_TREE->setPreference('FAM_FACTS_UNIQUE', implode(',', Filter::postArray('FAM_FACTS_UNIQUE')));
- $WT_TREE->setPreference('FAM_ID_PREFIX', Filter::post('FAM_ID_PREFIX'));
$WT_TREE->setPreference('FULL_SOURCES', Filter::postBool('FULL_SOURCES'));
$WT_TREE->setPreference('FORMAT_TEXT', Filter::post('FORMAT_TEXT'));
- $WT_TREE->setPreference('GEDCOM_ID_PREFIX', Filter::post('GEDCOM_ID_PREFIX'));
$WT_TREE->setPreference('GEDCOM_MEDIA_PATH', Filter::post('GEDCOM_MEDIA_PATH'));
$WT_TREE->setPreference('GENERATE_UIDS', Filter::postBool('GENERATE_UIDS'));
$WT_TREE->setPreference('GEONAMES_ACCOUNT', Filter::post('GEONAMES_ACCOUNT'));
@@ -150,11 +148,9 @@ case 'general':
$WT_TREE->setPreference('LANGUAGE', Filter::post('LANGUAGE'));
$WT_TREE->setPreference('MAX_DESCENDANCY_GENERATIONS', Filter::post('MAX_DESCENDANCY_GENERATIONS'));
$WT_TREE->setPreference('MAX_PEDIGREE_GENERATIONS', Filter::post('MAX_PEDIGREE_GENERATIONS'));
- $WT_TREE->setPreference('MEDIA_ID_PREFIX', Filter::post('MEDIA_ID_PREFIX'));
$WT_TREE->setPreference('MEDIA_UPLOAD', Filter::post('MEDIA_UPLOAD'));
$WT_TREE->setPreference('META_DESCRIPTION', Filter::post('META_DESCRIPTION'));
$WT_TREE->setPreference('META_TITLE', Filter::post('META_TITLE'));
- $WT_TREE->setPreference('NOTE_ID_PREFIX', Filter::post('NOTE_ID_PREFIX'));
$WT_TREE->setPreference('NO_UPDATE_CHAN', Filter::postBool('NO_UPDATE_CHAN'));
$WT_TREE->setPreference('PEDIGREE_LAYOUT', Filter::postBool('PEDIGREE_LAYOUT'));
$WT_TREE->setPreference('PEDIGREE_ROOT_ID', Filter::post('PEDIGREE_ROOT_ID', WT_REGEX_XREF));
@@ -165,7 +161,6 @@ case 'general':
$WT_TREE->setPreference('REPO_FACTS_ADD', implode(',', Filter::postArray('REPO_FACTS_ADD')));
$WT_TREE->setPreference('REPO_FACTS_QUICK', implode(',', Filter::postArray('REPO_FACTS_QUICK')));
$WT_TREE->setPreference('REPO_FACTS_UNIQUE', implode(',', Filter::postArray('REPO_FACTS_UNIQUE')));
- $WT_TREE->setPreference('REPO_ID_PREFIX', Filter::post('REPO_ID_PREFIX'));
$WT_TREE->setPreference('SHOW_COUNTER', Filter::postBool('SHOW_COUNTER'));
$WT_TREE->setPreference('SHOW_EST_LIST_DATES', Filter::postBool('SHOW_EST_LIST_DATES'));
$WT_TREE->setPreference('SHOW_FACT_ICONS', Filter::postBool('SHOW_FACT_ICONS'));
@@ -179,7 +174,6 @@ case 'general':
$WT_TREE->setPreference('SHOW_PEDIGREE_PLACES', Filter::post('SHOW_PEDIGREE_PLACES'));
$WT_TREE->setPreference('SHOW_PEDIGREE_PLACES_SUFFIX', Filter::postBool('SHOW_PEDIGREE_PLACES_SUFFIX'));
$WT_TREE->setPreference('SHOW_RELATIVES_EVENTS', implode(',', Filter::postArray('SHOW_RELATIVES_EVENTS')));
- $WT_TREE->setPreference('SOURCE_ID_PREFIX', Filter::post('SOURCE_ID_PREFIX'));
$WT_TREE->setPreference('SOUR_FACTS_ADD', implode(',', Filter::postArray('SOUR_FACTS_ADD')));
$WT_TREE->setPreference('SOUR_FACTS_QUICK', implode(',', Filter::postArray('SOUR_FACTS_QUICK')));
$WT_TREE->setPreference('SOUR_FACTS_UNIQUE', implode(',', Filter::postArray('SOUR_FACTS_UNIQUE')));
@@ -385,124 +379,6 @@ echo Bootstrap4::breadcrumbs([
</div>
</fieldset>
- <!-- XXXXX_ID_PREFIX -->
- <fieldset class="form-group">
- <div class="row>"
- <legend class="col-form-legend col-sm-3">
- <?= /* I18N: A configuration setting. The first letter(s) in a GEDCOM identifier. */ I18N::translate('XREF prefixes') ?>
- </legend>
- <div class="col-sm-9">
- <div class="row">
- <!-- GEDCOM_ID_PREFIX -->
- <div class="col-sm-6 col-md-4">
- <div class="input-group">
- <label class="input-group-addon" for="GEDCOM_ID_PREFIX">
- <?= I18N::translate('Individual') ?>
- </label>
- <input
- class="form-control"
- dir="ltr"
- id="GEDCOM_ID_PREFIX"
- maxlength="10"
- name="GEDCOM_ID_PREFIX"
- type="text"
- value="<?= $WT_TREE->getPreference('GEDCOM_ID_PREFIX') ?>"
- >
- </div>
- </div>
- <!-- FAM_ID_PREFIX -->
- <div class="col-sm-6 col-md-4">
- <div class="input-group">
- <label class="input-group-addon" for="FAM_ID_PREFIX">
- <?= I18N::translate('Family') ?>
- </label>
- <input
- class="form-control"
- dir="ltr"
- id="FAM_ID_PREFIX"
- maxlength="10"
- name="FAM_ID_PREFIX"
- type="text"
- value="<?= $WT_TREE->getPreference('FAM_ID_PREFIX') ?>"
- >
- </div>
- </div>
- <!-- SOURCE_ID_PREFIX -->
- <div class="col-sm-6 col-md-4">
- <div class="input-group">
- <label class="input-group-addon" for="SOURCE_ID_PREFIX">
- <?= I18N::translate('Source') ?>
- </label>
- <input
- class="form-control"
- dir="ltr"
- id="SOURCE_ID_PREFIX"
- maxlength="10"
- name="SOURCE_ID_PREFIX"
- type="text"
- value="<?= $WT_TREE->getPreference('SOURCE_ID_PREFIX') ?>"
- >
- </div>
- </div>
- <!-- REPO_ID_PREFIX -->
- <div class="col-sm-6 col-md-4">
- <div class="input-group">
- <label class="input-group-addon" for="REPO_ID_PREFIX">
- <?= I18N::translate('Repository') ?>
- </label>
- <input
- class="form-control"
- dir="ltr"
- id="REPO_ID_PREFIX"
- maxlength="10"
- name="REPO_ID_PREFIX"
- type="text"
- value="<?= $WT_TREE->getPreference('REPO_ID_PREFIX') ?>"
- >
- </div>
- </div>
- <!-- MEDIA_ID_PREFIX -->
- <div class="col-sm-6 col-md-4">
- <div class="input-group">
- <label class="input-group-addon" for="MEDIA_ID_PREFIX">
- <?= I18N::translate('Media object') ?>
- </label>
- <input
- class="form-control"
- dir="ltr"
- id="MEDIA_ID_PREFIX"
- maxlength="10"
- name="MEDIA_ID_PREFIX"
- type="text"
- value="<?= $WT_TREE->getPreference('MEDIA_ID_PREFIX') ?>"
- >
- </div>
- </div>
- <!-- NOTE_ID_PREFIX -->
- <div class="col-sm-6 col-md-4">
- <div class="input-group">
- <label class="input-group-addon" for="NOTE_ID_PREFIX">
- <?= I18N::translate('Note') ?>
- </label>
- <input
- class="form-control"
- dir="ltr"
- id="NOTE_ID_PREFIX"
- maxlength="10"
- name="NOTE_ID_PREFIX"
- type="text"
- value="<?= $WT_TREE->getPreference('NOTE_ID_PREFIX') ?>"
- >
- </div>
- </div>
- </div>
- <p class="small text-muted">
- <?= I18N::translate('In a family tree, each record has an internal reference number (called an “XREF”) such as “F123” or “R14”.') ?>
- <?= /* I18N: An XREF is the identification number used in GEDCOM files, such as F123 or R14. */ I18N::translate('You can choose the prefix that will be used whenever new XREFs are created.') ?>
- </p>
- </div>
- </fieldset>
-
<h3><?= I18N::translate('Contact information') ?></h3>
<!-- WEBTREES_EMAIL -->
diff --git a/app/Schema/Migration37.php b/app/Schema/Migration37.php
index 97c54e3f51..b64450eb8a 100644
--- a/app/Schema/Migration37.php
+++ b/app/Schema/Migration37.php
@@ -25,65 +25,18 @@ class Migration37 implements MigrationInterface {
* Upgrade to to the next version
*/
public function upgrade() {
- // Move repositories to their own table
- Database::exec(
- "CREATE TABLE IF NOT EXISTS `##repository` (" .
- " repository_id INTEGER AUTO_INCREMENT NOT NULL," .
- " gedcom_id INTEGER NOT NULL," .
- " xref VARCHAR(20) NOT NULL," .
- " gedcom LONGTEXT NOT NULL," .
- " name VARCHAR(90) NOT NULL," .
- " address VARCHAR(255) NOT NULL," .
- " restriction ENUM('', 'confidential', 'privacy', 'none') NOT NULL," .
- " uid VARCHAR(34) NOT NULL," .
- " changed_at DATETIME NOT NULL," .
- " PRIMARY KEY (repository_id)," .
- " UNIQUE KEY `##repository_ix1` (gedcom_id, xref)," .
- " UNIQUE KEY `##repository_ix2` (xref, gedcom_id)," .
- " KEY `##repository_ix3` (name)," .
- " KEY `##repository_ix4` (address)," .
- " KEY `##repository_ix5` (restriction)," .
- " KEY `##repository_ix6` (uid)," .
- " KEY `##repository_ix7` (changed_at)," .
- " CONSTRAINT `##repository_fk1` FOREIGN KEY (gedcom_id) REFERENCES `##gedcom` (gedcom_id)" .
- ") COLLATE utf8_unicode_ci ENGINE=InnoDB"
- );
- Database::exec("START TRANSACTION");
+ Database::prepare(
+ "INSERT INTO `##site_setting` (setting_name, setting_value)" .
+ " SELECT 'next_xref', MAX(next_id) FROM `##next_id`"
+ )->execute();
- $repositories = Database::prepare("SELECT * FROM `##other` WHERE o_type = 'REPO'")->fetchAll();
+ Database::prepare(
+ "DELETE FROM `##gedcom_setting` WHERE setting_name in ('FAM_ID_PREFIX', 'GEDCOM_ID_PREFIX', 'MEDIA_ID_PREFIX', 'NOTE_ID_PREFIX', 'REPO_ID_PREFIX', 'SOURCE_ID_PREFIX')"
+ )->execute();
- foreach ($repositories as $n => $repository) {
- Database::prepare(
- "INSERT INTO `##repository` (" .
- " gedcom_id, xref, gedcom, name, address, restriction, uid, changed_at" .
- ") VALUES (" .
- " :gedcom_id, :xref, :gedcom, :name, :address, :restriction, :uid, :changed_at" .
- ")"
- )->execute([
- 'gedcom_id' => $repository->o_file,
- 'xref' => $repository->o_id,
- 'gedcom' => $repository->o_gedcom,
- 'name' => '',
- 'address' => '',
- 'restriction' => '',
- 'uid' => '',
- 'changed_at' => '',
- ]);
-
- Database::prepare(
- "DELETE FROM `##other` WHERE o_file = :gedcom_id AND o_id = :xref"
- )->execute([
- 'gedcom_id' => $repository->o_file,
- 'xref' => $repository->o_id,
- ]);
-
- if ($n % 500 === 499) {
- Database::exec("COMMIT");
- Database::exec("START TRANSACTION");
- }
- }
-
- Database::exec("COMMIT");
+ Database::prepare(
+ "DROP TABLE IF EXISTS `##next_id`"
+ )->execute();
}
}
diff --git a/app/Tree.php b/app/Tree.php
index fd56e3a3a4..6dbef21014 100644
--- a/app/Tree.php
+++ b/app/Tree.php
@@ -587,7 +587,7 @@ class Tree {
]);
$buffer = FunctionsExport::reformatRecord(FunctionsExport::gedcomHeader($this));
- while ($row = $stmt->fetch()) {
+ while (($row = $stmt->fetch()) !== false) {
$buffer .= FunctionsExport::reformatRecord($row->gedcom);
if (strlen($buffer) > 65535) {
fwrite($stream, $buffer);
@@ -650,82 +650,56 @@ class Tree {
/**
* Generate a new XREF, unique across all family trees
*
- * @param string $type
- *
* @return string
*/
- public function getNewXref($type = 'INDI') {
- /** @var string[] Which tree preference is used for which record type */
- static $type_to_preference = [
- 'INDI' => 'GEDCOM_ID_PREFIX',
- 'FAM' => 'FAM_ID_PREFIX',
- 'OBJE' => 'MEDIA_ID_PREFIX',
- 'NOTE' => 'NOTE_ID_PREFIX',
- 'SOUR' => 'SOURCE_ID_PREFIX',
- 'REPO' => 'REPO_ID_PREFIX',
- ];
-
- if (array_key_exists($type, $type_to_preference)) {
- $prefix = $this->getPreference($type_to_preference[$type]);
- } else {
- // Use the first non-underscore character
- $prefix = substr(trim($type, '_'), 0, 1);
- }
+ public function getNewXref() {
+ $prefix = 'X';
$increment = 1.0;
do {
// Use LAST_INSERT_ID(expr) to provide a transaction-safe sequence. See
// http://dev.mysql.com/doc/refman/5.6/en/information-functions.html#function_last-insert-id
$statement = Database::prepare(
- "UPDATE `##next_id` SET next_id = LAST_INSERT_ID(next_id + :increment) WHERE record_type = :record_type AND gedcom_id = :tree_id"
+ "UPDATE `##site_setting` SET setting_value = LAST_INSERT_ID(setting_value + :increment) WHERE setting_name = 'next_xref'"
);
$statement->execute([
'increment' => (int) $increment,
- 'record_type' => $type,
- 'tree_id' => $this->tree_id,
]);
if ($statement->rowCount() === 0) {
// First time we've used this record type.
- Database::prepare(
- "INSERT INTO `##next_id` (gedcom_id, record_type, next_id) VALUES(:tree_id, :record_type, 1)"
- )->execute([
- 'record_type' => $type,
- 'tree_id' => $this->tree_id,
- ]);
+ Site::setPreference('next_xref', '1');
$num = 1;
} else {
$num = Database::prepare("SELECT LAST_INSERT_ID()")->fetchOne();
}
+ $xref = $prefix . $num;
+
// Records may already exist with this sequence number.
$already_used = Database::prepare(
- "SELECT i_id FROM `##individuals` WHERE i_id = :i_id" .
- " UNION ALL " .
- "SELECT f_id FROM `##families` WHERE f_id = :f_id" .
- " UNION ALL " .
- "SELECT s_id FROM `##sources` WHERE s_id = :s_id" .
- " UNION ALL " .
- "SELECT m_id FROM `##media` WHERE m_id = :m_id" .
- " UNION ALL " .
- "SELECT o_id FROM `##other` WHERE o_id = :o_id" .
- " UNION ALL " .
- "SELECT xref FROM `##change` WHERE xref = :xref"
+ "SELECT" .
+ " EXISTS (SELECT 1 FROM `##individuals` WHERE i_id = :i_id) OR" .
+ " EXISTS (SELECT 1 FROM `##families` WHERE f_id = :f_id) OR" .
+ " EXISTS (SELECT 1 FROM `##sources` WHERE s_id = :s_id) OR" .
+ " EXISTS (SELECT 1 FROM `##media` WHERE m_id = :m_id) OR" .
+ " EXISTS (SELECT 1 FROM `##other` WHERE o_id = :o_id) OR" .
+ " EXISTS (SELECT 1 FROM `##change` WHERE xref = :xref)"
)->execute([
- 'i_id' => $prefix . $num,
- 'f_id' => $prefix . $num,
- 's_id' => $prefix . $num,
- 'm_id' => $prefix . $num,
- 'o_id' => $prefix . $num,
- 'xref' => $prefix . $num,
+ 'i_id' => $xref,
+ 'f_id' => $xref,
+ 's_id' => $xref,
+ 'm_id' => $xref,
+ 'o_id' => $xref,
+ 'xref' => $xref,
])->fetchOne();
// This exponential increment allows us to scan over large blocks of
// existing data in a reasonable time.
$increment *= 1.01;
- } while ($already_used);
+ } while ($already_used !== '0');
- return $prefix . $num;
+ return $xref;
}
/**
@@ -751,7 +725,7 @@ class Tree {
// webtrees creates XREFs containing digits. Anything else (e.g. “new”) is just a placeholder.
if (!preg_match('/\d/', $xref)) {
- $xref = $this->getNewXref($type);
+ $xref = $this->getNewXref();
$gedcom = preg_replace('/^0 @(' . WT_REGEX_XREF . ')@/', '0 @' . $xref . '@', $gedcom);
}