Code Duplication    Length = 47-47 lines in 2 locations

app/Controller/AdvancedSearchController.php 2 locations

@@ 376-422 (lines=47) @@
373
			if ($parts[0] == 'NAME') {
374
				// NAME:*
375
				switch ($parts[1]) {
376
				case 'GIVN':
377
					switch ($parts[2]) {
378
					case 'EXACT':
379
						$sql .= " AND i_n.n_givn=?";
380
						$bind[] = $value;
381
						break;
382
					case 'BEGINS':
383
						$sql .= " AND i_n.n_givn LIKE CONCAT(?, '%')";
384
						$bind[] = $value;
385
						break;
386
					case 'CONTAINS':
387
						$sql .= " AND i_n.n_givn LIKE CONCAT('%', ?, '%')";
388
						$bind[] = $value;
389
						break;
390
					case 'SDX_STD':
391
						$sdx = Soundex::russell($value);
392
						if ($sdx !== null) {
393
							$sdx = explode(':', $sdx);
394
							foreach ($sdx as $k => $v) {
395
								$sdx[$k] = "i_n.n_soundex_givn_std LIKE CONCAT('%', ?, '%')";
396
								$bind[]  = $v;
397
							}
398
							$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
399
						} else {
400
							// No phonetic content? Use a substring match
401
							$sql .= " AND i_n.n_givn LIKE CONCAT('%', ?, '%')";
402
							$bind[] = $value;
403
						}
404
						break;
405
					case 'SDX': // SDX uses DM by default.
406
					case 'SDX_DM':
407
						$sdx = Soundex::daitchMokotoff($value);
408
						if ($sdx !== null) {
409
							$sdx = explode(':', $sdx);
410
							foreach ($sdx as $k => $v) {
411
								$sdx[$k] = "i_n.n_soundex_givn_dm LIKE CONCAT('%', ?, '%')";
412
								$bind[]  = $v;
413
							}
414
							$sql .= ' AND (' . implode(' OR ', $sdx) . ')';
415
						} else {
416
							// No phonetic content? Use a substring match
417
							$sql .= " AND i_n.n_givn LIKE CONCAT('%', ?, '%')";
418
							$bind[] = $value;
419
						}
420
						break;
421
					}
422
					break;
423
				case 'SURN':
424
					switch ($parts[2]) {
425
					case 'EXACT':
@@ 423-469 (lines=47) @@
420
						break;
421
					}
422
					break;
423
				case 'SURN':
424
					switch ($parts[2]) {
425
					case 'EXACT':
426
						$sql .= " AND i_n.n_surname=?";
427
						$bind[] = $value;
428
						break;
429
					case 'BEGINS':
430
						$sql .= " AND i_n.n_surname LIKE CONCAT(?, '%')";
431
						$bind[] = $value;
432
						break;
433
					case 'CONTAINS':
434
						$sql .= " AND i_n.n_surname LIKE CONCAT('%', ?, '%')";
435
						$bind[] = $value;
436
						break;
437
					case 'SDX_STD':
438
						$sdx = Soundex::russell($value);
439
						if ($sdx !== null) {
440
							$sdx = explode(':', $sdx);
441
							foreach ($sdx as $k => $v) {
442
								$sdx[$k] = "i_n.n_soundex_surn_std LIKE CONCAT('%', ?, '%')";
443
								$bind[]  = $v;
444
							}
445
							$sql .= " AND (" . implode(' OR ', $sdx) . ")";
446
						} else {
447
							// No phonetic content? Use a substring match
448
							$sql .= " AND i_n.n_surn LIKE CONCAT('%', ?, '%')";
449
							$bind[] = $value;
450
						}
451
						break;
452
					case 'SDX': // SDX uses DM by default.
453
					case 'SDX_DM':
454
						$sdx = Soundex::daitchMokotoff($value);
455
						if ($sdx !== null) {
456
							$sdx = explode(':', $sdx);
457
							foreach ($sdx as $k => $v) {
458
								$sdx[$k] = "i_n.n_soundex_surn_dm LIKE CONCAT('%', ?, '%')";
459
								$bind[]  = $v;
460
							}
461
							$sql .= " AND (" . implode(' OR ', $sdx) . ")";
462
							break;
463
						} else {
464
							// No phonetic content? Use a substring match
465
							$sql .= " AND i_n.n_surn LIKE CONCAT('%', ?, '%')";
466
							$bind[] = $value;
467
						}
468
					}
469
					break;
470
				case 'NICK':
471
				case '_MARNM':
472
				case '_HEB':