diff options
| author | Greg Roach <fisharebest@gmail.com> | 2013-12-01 18:21:29 +0000 |
|---|---|---|
| committer | Greg Roach <fisharebest@gmail.com> | 2013-12-01 18:21:29 +0000 |
| commit | ccf61079f9d4808b040a31ae758b181e898a870b (patch) | |
| tree | b0798e0af147182b7865e785a344aedfbab3ddd4 /library/WT/Controller | |
| parent | 0ac540acd2707806235bc9ce080423886ffdc546 (diff) | |
| download | webtrees-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.php | 108 | ||||
| -rw-r--r-- | library/WT/Controller/Branches.php | 18 |
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 .= ')'; |
