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':