Code Duplication    Length = 14-14 lines in 6 locations

app/Query/QueryName.php 3 locations

@@ 362-375 (lines=14) @@
359
			'tree_id' => $tree->getTreeId(),
360
		];
361
362
		if ($surn) {
363
			$sql .= " AND n_surn COLLATE :collate_1 = :surn";
364
			$args['collate_1'] = I18N::collation();
365
			$args['surn']      = $surn;
366
		} elseif ($salpha === ',') {
367
			$sql .= " AND n_surn = ''";
368
		} elseif ($salpha === '@') {
369
			$sql .= " AND n_surn = '@N.N.'";
370
		} elseif ($salpha) {
371
			$sql .= " AND " . self::getInitialSql('n_surn', $salpha);
372
		} else {
373
			// All surnames
374
			$sql .= " AND n_surn NOT IN ('', '@N.N.')";
375
		}
376
377
		foreach (self::getAlphabetForLocale(WT_LOCALE) as $letter) {
378
			$sql .= " AND n_givn NOT LIKE '" . $letter . "%' COLLATE " . I18N::collation();
@@ 414-427 (lines=14) @@
411
			'collate_0' => I18N::collation(),
412
		];
413
414
		if ($surn) {
415
			$sql .= " AND n_surn COLLATE :collate_1 = :surn";
416
			$args['collate_1'] = I18N::collation();
417
			$args['surn']      = $surn;
418
		} elseif ($salpha === ',') {
419
			$sql .= " AND n_surn = ''";
420
		} elseif ($salpha === '@') {
421
			$sql .= " AND n_surn = '@N.N.'";
422
		} elseif ($salpha) {
423
			$sql .= " AND " . self::getInitialSql('n_surn', $salpha);
424
		} else {
425
			// All surnames
426
			$sql .= " AND n_surn NOT IN ('', '@N.N.')";
427
		}
428
		$sql .= " GROUP BY n_surn COLLATE :collate_2, n_file) AS n2 ON (n1.n_surn = n2.n_surn COLLATE :collate_3 AND n1.n_file = n2.n_file)";
429
		$args['collate_2'] = I18N::collation();
430
		$args['collate_3'] = I18N::collation();
@@ 468-481 (lines=14) @@
465
			'tree_id' => $tree->getTreeId(),
466
		];
467
468
		if ($surn) {
469
			$sql .= " AND n_surn COLLATE :collate_1 = :surn";
470
			$args['collate_1'] = I18N::collation();
471
			$args['surn']      = $surn;
472
		} elseif ($salpha === ',') {
473
			$sql .= " AND n_surn = ''";
474
		} elseif ($salpha === '@') {
475
			$sql .= " AND n_surn = '@N.N.'";
476
		} elseif ($salpha) {
477
			$sql .= " AND " . self::getInitialSql('n_surn', $salpha);
478
		} else {
479
			// All surnames
480
			$sql .= " AND n_surn NOT IN ('', '@N.N.')";
481
		}
482
		if ($galpha) {
483
			$sql .= " AND " . self::getInitialSql('n_givn', $galpha);
484
		}

app/Controller/IndividualListController.php 3 locations

@@ 361-374 (lines=14) @@
358
			'tree_id' => $this->tree()->getTreeId(),
359
		];
360
361
		if ($surn) {
362
			$sql .= " AND n_surn COLLATE :collate_1 = :surn";
363
			$args['collate_1'] = I18N::collation();
364
			$args['surn']      = $surn;
365
		} elseif ($salpha === ',') {
366
			$sql .= " AND n_surn = ''";
367
		} elseif ($salpha === '@') {
368
			$sql .= " AND n_surn = '@N.N.'";
369
		} elseif ($salpha) {
370
			$sql .= " AND " . $this->getInitialSql('n_surn', $salpha);
371
		} else {
372
			// All surnames
373
			$sql .= " AND n_surn NOT IN ('', '@N.N.')";
374
		}
375
376
		foreach ($this->getAlphabetForLocale(WT_LOCALE) as $letter) {
377
			$sql .= " AND n_givn NOT LIKE '" . $letter . "%' COLLATE " . I18N::collation();
@@ 412-425 (lines=14) @@
409
			'collate_0' => I18N::collation(),
410
		];
411
412
		if ($surn) {
413
			$sql .= " AND n_surn COLLATE :collate_1 = :surn";
414
			$args['collate_1'] = I18N::collation();
415
			$args['surn']      = $surn;
416
		} elseif ($salpha === ',') {
417
			$sql .= " AND n_surn = ''";
418
		} elseif ($salpha === '@') {
419
			$sql .= " AND n_surn = '@N.N.'";
420
		} elseif ($salpha) {
421
			$sql .= " AND " . $this->getInitialSql('n_surn', $salpha);
422
		} else {
423
			// All surnames
424
			$sql .= " AND n_surn NOT IN ('', '@N.N.')";
425
		}
426
		$sql .= " GROUP BY n_surn COLLATE :collate_2, n_file) AS n2 ON (n1.n_surn = n2.n_surn COLLATE :collate_3 AND n1.n_file = n2.n_file)";
427
		$args['collate_2'] = I18N::collation();
428
		$args['collate_3'] = I18N::collation();
@@ 465-478 (lines=14) @@
462
			'tree_id' => $this->tree()->getTreeId(),
463
		];
464
465
		if ($surn) {
466
			$sql .= " AND n_surn COLLATE :collate_1 = :surn";
467
			$args['collate_1'] = I18N::collation();
468
			$args['surn']      = $surn;
469
		} elseif ($salpha === ',') {
470
			$sql .= " AND n_surn = ''";
471
		} elseif ($salpha === '@') {
472
			$sql .= " AND n_surn = '@N.N.'";
473
		} elseif ($salpha) {
474
			$sql .= " AND " . $this->getInitialSql('n_surn', $salpha);
475
		} else {
476
			// All surnames
477
			$sql .= " AND n_surn NOT IN ('', '@N.N.')";
478
		}
479
		if ($galpha) {
480
			$sql .= " AND " . $this->getInitialSql('n_givn', $galpha);
481
		}