| @@ 525-571 (lines=47) @@ | ||
| 522 | $table = $parts[1] == 'HUSB' ? 'f_n' : 'm_n'; |
|
| 523 | // NAME:* |
|
| 524 | switch ($parts[3]) { |
|
| 525 | case 'GIVN': |
|
| 526 | switch ($parts[4]) { |
|
| 527 | case 'EXACT': |
|
| 528 | $sql .= " AND {$table}.n_givn=?"; |
|
| 529 | $bind[] = $value; |
|
| 530 | break; |
|
| 531 | case 'BEGINS': |
|
| 532 | $sql .= " AND {$table}.n_givn LIKE CONCAT(?, '%')"; |
|
| 533 | $bind[] = $value; |
|
| 534 | break; |
|
| 535 | case 'CONTAINS': |
|
| 536 | $sql .= " AND {$table}.n_givn LIKE CONCAT('%', ?, '%')"; |
|
| 537 | $bind[] = $value; |
|
| 538 | break; |
|
| 539 | case 'SDX_STD': |
|
| 540 | $sdx = Soundex::russell($value); |
|
| 541 | if ($sdx !== null) { |
|
| 542 | $sdx = explode(':', $sdx); |
|
| 543 | foreach ($sdx as $k => $v) { |
|
| 544 | $sdx[$k] = "{$table}.n_soundex_givn_std LIKE CONCAT('%', ?, '%')"; |
|
| 545 | $bind[] = $v; |
|
| 546 | } |
|
| 547 | $sql .= ' AND (' . implode(' OR ', $sdx) . ')'; |
|
| 548 | } else { |
|
| 549 | // No phonetic content? Use a substring match |
|
| 550 | $sql .= " AND {$table}.n_givn = LIKE CONCAT('%', ?, '%')"; |
|
| 551 | $bind[] = $value; |
|
| 552 | } |
|
| 553 | break; |
|
| 554 | case 'SDX': // SDX uses DM by default. |
|
| 555 | case 'SDX_DM': |
|
| 556 | $sdx = Soundex::daitchMokotoff($value); |
|
| 557 | if ($sdx !== null) { |
|
| 558 | $sdx = explode(':', $sdx); |
|
| 559 | foreach ($sdx as $k => $v) { |
|
| 560 | $sdx[$k] = "{$table}.n_soundex_givn_dm LIKE CONCAT('%', ?, '%')"; |
|
| 561 | $bind[] = $v; |
|
| 562 | } |
|
| 563 | $sql .= ' AND (' . implode(' OR ', $sdx) . ')'; |
|
| 564 | break; |
|
| 565 | } else { |
|
| 566 | // No phonetic content? Use a substring match |
|
| 567 | $sql .= " AND {$table}.n_givn = LIKE CONCAT('%', ?, '%')"; |
|
| 568 | $bind[] = $value; |
|
| 569 | } |
|
| 570 | } |
|
| 571 | break; |
|
| 572 | case 'SURN': |
|
| 573 | switch ($parts[4]) { |
|
| 574 | case 'EXACT': |
|
| @@ 572-618 (lines=47) @@ | ||
| 569 | } |
|
| 570 | } |
|
| 571 | break; |
|
| 572 | case 'SURN': |
|
| 573 | switch ($parts[4]) { |
|
| 574 | case 'EXACT': |
|
| 575 | $sql .= " AND {$table}.n_surname=?"; |
|
| 576 | $bind[] = $value; |
|
| 577 | break; |
|
| 578 | case 'BEGINS': |
|
| 579 | $sql .= " AND {$table}.n_surname LIKE CONCAT(?, '%')"; |
|
| 580 | $bind[] = $value; |
|
| 581 | break; |
|
| 582 | case 'CONTAINS': |
|
| 583 | $sql .= " AND {$table}.n_surname LIKE CONCAT('%', ?, '%')"; |
|
| 584 | $bind[] = $value; |
|
| 585 | break; |
|
| 586 | case 'SDX_STD': |
|
| 587 | $sdx = Soundex::russell($value); |
|
| 588 | if ($sdx !== null) { |
|
| 589 | $sdx = explode(':', $sdx); |
|
| 590 | foreach ($sdx as $k => $v) { |
|
| 591 | $sdx[$k] = "{$table}.n_soundex_surn_std LIKE CONCAT('%', ?, '%')"; |
|
| 592 | $bind[] = $v; |
|
| 593 | } |
|
| 594 | $sql .= ' AND (' . implode(' OR ', $sdx) . ')'; |
|
| 595 | } else { |
|
| 596 | // No phonetic content? Use a substring match |
|
| 597 | $sql .= " AND {$table}.n_surn = LIKE CONCAT('%', ?, '%')"; |
|
| 598 | $bind[] = $value; |
|
| 599 | } |
|
| 600 | break; |
|
| 601 | case 'SDX': // SDX uses DM by default. |
|
| 602 | case 'SDX_DM': |
|
| 603 | $sdx = Soundex::daitchMokotoff($value); |
|
| 604 | if ($sdx !== null) { |
|
| 605 | $sdx = explode(':', $sdx); |
|
| 606 | foreach ($sdx as $k => $v) { |
|
| 607 | $sdx[$k] = "{$table}.n_soundex_surn_dm LIKE CONCAT('%', ?, '%')"; |
|
| 608 | $bind[] = $v; |
|
| 609 | } |
|
| 610 | $sql .= ' AND (' . implode(' OR ', $sdx) . ')'; |
|
| 611 | } else { |
|
| 612 | // No phonetic content? Use a substring match |
|
| 613 | $sql .= " AND {$table}.n_surn = LIKE CONCAT('%', ?, '%')"; |
|
| 614 | $bind[] = $value; |
|
| 615 | } |
|
| 616 | break; |
|
| 617 | } |
|
| 618 | break; |
|
| 619 | } |
|
| 620 | } elseif ($parts[0] === 'FAMS') { |
|
| 621 | // e.g. searches for occupation, religion, note, etc. |
|