summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2013-12-05 18:02:31 +0000
committerGreg Roach <fisharebest@gmail.com>2013-12-05 18:02:57 +0000
commit098dfcf88797113622e7f1841a14b93f2a4f458a (patch)
treead054947253d8b2a83736672c18039ee9b77392b
parent8abaf83024d0edb6f6bab8dd0ee55130c4db2073 (diff)
downloadwebtrees-098dfcf88797113622e7f1841a14b93f2a4f458a.tar.gz
webtrees-098dfcf88797113622e7f1841a14b93f2a4f458a.tar.bz2
webtrees-098dfcf88797113622e7f1841a14b93f2a4f458a.zip
Advanced/phonetic search fails for searches with no phonetic content
-rw-r--r--library/WT/Controller/AdvancedSearch.php34
1 files changed, 33 insertions, 1 deletions
diff --git a/library/WT/Controller/AdvancedSearch.php b/library/WT/Controller/AdvancedSearch.php
index c6f06d03fa..767c8524a0 100644
--- a/library/WT/Controller/AdvancedSearch.php
+++ b/library/WT/Controller/AdvancedSearch.php
@@ -164,7 +164,7 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
}
function getLabel($tag) {
- return WT_Gedcom_Tag::getLabel(str_replace(':SDX', '', $tag));
+ return WT_Gedcom_Tag::getLabel(preg_replace('/:(SDX|BEGINS|EXACT|CONTAINS)$/', '', $tag));
}
function reorderFields() {
@@ -328,6 +328,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[] = $v;
}
$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND i_n.n_givn LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
break;
case 'SDX': // SDX uses DM by default.
@@ -340,6 +344,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[] = $v;
}
$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND i_n.n_givn LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
break;
}
@@ -367,6 +375,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[] = $v;
}
$sql .= " AND (" . implode(' OR ', $sdx) . ")";
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND i_n.n_surn LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
break;
case 'SDX': // SDX uses DM by default.
@@ -380,6 +392,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
}
$sql .= " AND (" . implode(' OR ', $sdx) . ")";
break;
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND i_n.n_surn LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
}
break;
@@ -466,6 +482,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[] = $v;
}
$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND {$table}.n_givn = LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
break;
case 'SDX': // SDX uses DM by default.
@@ -479,6 +499,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
}
$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
break;
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND {$table}.n_givn = LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
}
break;
@@ -505,6 +529,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[] = $v;
}
$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND {$table}.n_surn = LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
break;
case 'SDX': // SDX uses DM by default.
@@ -517,6 +545,10 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[] = $v;
}
$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
+ } else {
+ // No phonetic content? Use a substring match
+ $sql .= " AND {$table}.n_surn = LIKE CONCAT('%', ?, '%')";
+ $bind[] = $value;
}
break;
}