Code Duplication    Length = 47-47 lines in 2 locations

app/Controller/AdvancedSearchController.php 2 locations

@@ 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.