summaryrefslogtreecommitdiff
path: root/library/WT/Controller
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@gmail.com>2013-12-01 18:21:29 +0000
committerGreg Roach <fisharebest@gmail.com>2013-12-01 18:21:29 +0000
commitccf61079f9d4808b040a31ae758b181e898a870b (patch)
treeb0798e0af147182b7865e785a344aedfbab3ddd4 /library/WT/Controller
parent0ac540acd2707806235bc9ce080423886ffdc546 (diff)
downloadwebtrees-ccf61079f9d4808b040a31ae758b181e898a870b.tar.gz
webtrees-ccf61079f9d4808b040a31ae758b181e898a870b.tar.bz2
webtrees-ccf61079f9d4808b040a31ae758b181e898a870b.zip
#969337 - Soundex search - Code not in Soundex table
Diffstat (limited to 'library/WT/Controller')
-rw-r--r--library/WT/Controller/AdvancedSearch.php108
-rw-r--r--library/WT/Controller/Branches.php18
2 files changed, 78 insertions, 48 deletions
diff --git a/library/WT/Controller/AdvancedSearch.php b/library/WT/Controller/AdvancedSearch.php
index 1f32cd1f25..c6f06d03fa 100644
--- a/library/WT/Controller/AdvancedSearch.php
+++ b/library/WT/Controller/AdvancedSearch.php
@@ -320,21 +320,27 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[]=$value;
break;
case 'SDX_STD':
- $sdx=explode(':', WT_Soundex::soundex_std($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="i_n.n_soundex_givn_std LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_std($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "i_n.n_soundex_givn_std LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= ' AND (' . implode(' OR ', $sdx) . ')';
}
- $sql.=' AND ('.implode(' OR ', $sdx).')';
break;
case 'SDX': // SDX uses DM by default.
case 'SDX_DM':
- $sdx=explode(':', WT_Soundex::soundex_dm($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="i_n.n_soundex_givn_dm LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_dm($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "i_n.n_soundex_givn_dm LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= ' AND (' . implode(' OR ', $sdx) . ')';
}
- $sql.=' AND ('.implode(' OR ', $sdx).')';
break;
}
break;
@@ -353,22 +359,28 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[]=$value;
break;
case 'SDX_STD':
- $sdx=explode(':', WT_Soundex::soundex_std($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="i_n.n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_std($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "i_n.n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= " AND (" . implode(' OR ', $sdx) . ")";
}
- $sql.=" AND (".implode(' OR ', $sdx).")";
break;
case 'SDX': // SDX uses DM by default.
case 'SDX_DM':
- $sdx=explode(':', WT_Soundex::soundex_dm($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="i_n.n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_dm($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "i_n.n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= " AND (" . implode(' OR ', $sdx) . ")";
+ break;
}
- $sql.=" AND (".implode(' OR ', $sdx).")";
- break;
}
break;
case 'NICK':
@@ -446,22 +458,28 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[]=$value;
break;
case 'SDX_STD':
- $sdx=explode(':', WT_Soundex::soundex_std($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="{$table}.n_soundex_givn_std LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_std($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "{$table}.n_soundex_givn_std LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= ' AND (' . implode(' OR ', $sdx) . ')';
}
- $sql.=' AND ('.implode(' OR ', $sdx).')';
break;
case 'SDX': // SDX uses DM by default.
case 'SDX_DM':
- $sdx=explode(':', WT_Soundex::soundex_dm($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="{$table}.n_soundex_givn_dm LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_dm($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "{$table}.n_soundex_givn_dm LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= ' AND (' . implode(' OR ', $sdx) . ')';
+ break;
}
- $sql.=' AND ('.implode(' OR ', $sdx).')';
- break;
}
break;
case 'SURN':
@@ -479,21 +497,27 @@ class WT_Controller_AdvancedSearch extends WT_Controller_Search {
$bind[]=$value;
break;
case 'SDX_STD':
- $sdx=explode(':', WT_Soundex::soundex_std($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="{$table}.n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_std($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "{$table}.n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= ' AND (' . implode(' OR ', $sdx) . ')';
}
- $sql.=' AND ('.implode(' OR ', $sdx).')';
break;
case 'SDX': // SDX uses DM by default.
case 'SDX_DM':
- $sdx=explode(':', WT_Soundex::soundex_dm($value));
- foreach ($sdx as $k=>$v) {
- $sdx[$k]="{$table}.n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
- $bind[]=$v;
+ $sdx = WT_Soundex::soundex_dm($value);
+ if ($sdx) {
+ $sdx = explode(':', $sdx);
+ foreach ($sdx as $k=>$v) {
+ $sdx[$k] = "{$table}.n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
+ $bind[] = $v;
+ }
+ $sql .= ' AND (' . implode(' OR ', $sdx) . ')';
}
- $sql.=' AND ('.implode(' OR ', $sdx).')';
break;
}
break;
diff --git a/library/WT/Controller/Branches.php b/library/WT/Controller/Branches.php
index 32a5f47ae0..f0f151e485 100644
--- a/library/WT/Controller/Branches.php
+++ b/library/WT/Controller/Branches.php
@@ -73,15 +73,21 @@ class WT_Controller_Branches extends WT_Controller_Page {
" AND (n_surn=? OR n_surname=?";
$args=array(WT_GED_ID, '_MARNM', $this->surname, $this->surname);
if ($this->soundex_std) {
- foreach (explode(':', WT_Soundex::soundex_std($this->surname)) as $value) {
- $sql .= " OR n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
- $args[]=$value;
+ $sdx = WT_Soundex::soundex_std($this->surname);
+ if ($sdx) {
+ foreach (explode(':', $sdx) as $value) {
+ $sql .= " OR n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
+ $args[] = $value;
+ }
}
}
if ($this->soundex_dm) {
- foreach (explode(':', WT_Soundex::soundex_dm($this->surname)) as $value) {
- $sql .= " OR n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
- $args[]=$value;
+ $sdx = WT_Soundex::soundex_dm($this->surname);
+ if ($sdx) {
+ foreach (explode(':', $sdx) as $value) {
+ $sql .= " OR n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
+ $args[] = $value;
+ }
}
}
$sql .= ')';