summaryrefslogtreecommitdiff
path: root/app/Http
diff options
context:
space:
mode:
authorGreg Roach <fisharebest@webtrees.net>2019-03-07 18:49:27 +0000
committerGreg Roach <fisharebest@webtrees.net>2019-03-07 21:37:35 +0000
commite364afe4ae4e316fc4ebd53eccbaff2d29e419a5 (patch)
tree9e269d16bd3714e9943169fc4a31c192b065c36c /app/Http
parent7d99559cb9c1475576caf7ef2fe79a5aad947d30 (diff)
downloadwebtrees-e364afe4ae4e316fc4ebd53eccbaff2d29e419a5.tar.gz
webtrees-e364afe4ae4e316fc4ebd53eccbaff2d29e419a5.tar.bz2
webtrees-e364afe4ae4e316fc4ebd53eccbaff2d29e419a5.zip
Code style and testing
Diffstat (limited to 'app/Http')
-rw-r--r--app/Http/Controllers/AbstractEditController.php17
-rw-r--r--app/Http/Controllers/Admin/ChangesLogController.php8
-rw-r--r--app/Http/Controllers/Admin/ImportThumbnailsController.php2
-rw-r--r--app/Http/Controllers/Admin/LocationController.php8
-rw-r--r--app/Http/Controllers/Admin/UpgradeController.php2
-rw-r--r--app/Http/Controllers/Admin/UsersController.php12
-rw-r--r--app/Http/Controllers/AdminTreesController.php6
-rw-r--r--app/Http/Controllers/AdminUpgradeController.php8
-rw-r--r--app/Http/Controllers/Auth/LoginController.php2
-rw-r--r--app/Http/Controllers/Auth/RegisterController.php4
-rw-r--r--app/Http/Controllers/AutocompleteController.php24
-rw-r--r--app/Http/Controllers/BranchesController.php2
-rw-r--r--app/Http/Controllers/CalendarController.php48
-rw-r--r--app/Http/Controllers/GedcomFileController.php6
-rw-r--r--app/Http/Controllers/HomePageController.php4
-rw-r--r--app/Http/Controllers/MediaFileController.php3
-rw-r--r--app/Http/Controllers/PlaceHierarchyController.php6
-rw-r--r--app/Http/Controllers/SearchController.php178
-rw-r--r--app/Http/Middleware/Housekeeping.php2
19 files changed, 169 insertions, 173 deletions
diff --git a/app/Http/Controllers/AbstractEditController.php b/app/Http/Controllers/AbstractEditController.php
index 6fcd14a219..8a819b04e9 100644
--- a/app/Http/Controllers/AbstractEditController.php
+++ b/app/Http/Controllers/AbstractEditController.php
@@ -86,7 +86,7 @@ abstract class AbstractEditController extends AbstractBaseController
*
* @return void
*/
- protected function splitSource()
+ protected function splitSource(): void
{
$this->glevelsSOUR = [];
$this->tagSOUR = [];
@@ -112,15 +112,14 @@ abstract class AbstractEditController extends AbstractBaseController
$inSOUR = false;
$dest = 'R';
}
+ } elseif ($this->tag[$i] === 'SOUR') {
+ $inSOUR = true;
+ $levelSOUR = $this->glevels[$i];
+ $dest = 'S';
} else {
- if ($this->tag[$i] === 'SOUR') {
- $inSOUR = true;
- $levelSOUR = $this->glevels[$i];
- $dest = 'S';
- } else {
- $dest = 'R';
- }
+ $dest = 'R';
}
+
if ($dest === 'S') {
$this->glevelsSOUR[] = $this->glevels[$i];
$this->tagSOUR[] = $this->tag[$i];
@@ -269,7 +268,7 @@ abstract class AbstractEditController extends AbstractBaseController
*
* @return string
*/
- protected function addNewFact(Request $request, Tree $tree, $fact)
+ protected function addNewFact(Request $request, Tree $tree, $fact): string
{
$FACT = $request->get($fact, '');
$DATE = $request->get($fact . '_DATE', '');
diff --git a/app/Http/Controllers/Admin/ChangesLogController.php b/app/Http/Controllers/Admin/ChangesLogController.php
index 76241c3cf5..24c2096a1b 100644
--- a/app/Http/Controllers/Admin/ChangesLogController.php
+++ b/app/Http/Controllers/Admin/ChangesLogController.php
@@ -203,10 +203,10 @@ class ChangesLogController extends AbstractAdminController
'"' . $row->change_time . '"',
'"' . $row->status . '"',
'"' . $row->xref . '"',
- '"' . strtr($row->old_gedcom, '"', '""') . '"',
- '"' . strtr($row->new_gedcom, '"', '""') . '"',
- '"' . strtr($row->user_name, '"', '""') . '"',
- '"' . strtr($row->gedcom_name, '"', '""') . '"',
+ '"' . str_replace('"', '""', $row->old_gedcom) . '"',
+ '"' . str_replace('"', '""', $row->new_gedcom) . '"',
+ '"' . str_replace('"', '""', $row->user_name) . '"',
+ '"' . str_replace('"', '""', $row->gedcom_name) . '"',
]);
})
->implode("\n");
diff --git a/app/Http/Controllers/Admin/ImportThumbnailsController.php b/app/Http/Controllers/Admin/ImportThumbnailsController.php
index 10c333cfca..d6b362e5f9 100644
--- a/app/Http/Controllers/Admin/ImportThumbnailsController.php
+++ b/app/Http/Controllers/Admin/ImportThumbnailsController.php
@@ -87,7 +87,7 @@ class ImportThumbnailsController extends AbstractAdminController
foreach ($media_objects as $media_object) {
$prefix = WT_DATA_DIR . $media_object->tree()->getPreference('MEDIA_DIRECTORY');
- $gedcom = "1 FILE " . substr($move_to, strlen($prefix)) . "\n2 FORM " . $extension;
+ $gedcom = '1 FILE ' . substr($move_to, strlen($prefix)) . "\n2 FORM " . $extension;
if ($media_object->firstImageFile() === null) {
// The media object doesn't have an image. Add this as a secondary file.
diff --git a/app/Http/Controllers/Admin/LocationController.php b/app/Http/Controllers/Admin/LocationController.php
index e37826a967..c633843061 100644
--- a/app/Http/Controllers/Admin/LocationController.php
+++ b/app/Http/Controllers/Admin/LocationController.php
@@ -340,7 +340,7 @@ class LocationController extends AbstractAdminController
$filename = $request->files->get('localfile')->getPathName();
}
- $fp = fopen($filename, 'r');
+ $fp = fopen($filename, 'rb');
if ($fp !== false) {
$string = stream_get_contents($fp);
@@ -553,7 +553,7 @@ class LocationController extends AbstractAdminController
private function exportCSV(string $filename, array $columns, array $places): Response
{
$response = new StreamedResponse(function () use ($columns, $places) {
- $stream = fopen('php://output', 'w');
+ $stream = fopen('php://output', 'wb');
if ($stream !== false) {
fputcsv($stream, $columns, ';');
@@ -628,7 +628,7 @@ class LocationController extends AbstractAdminController
* @return void
* @throws Exception
*/
- private function buildLevel(int $parent_id, array $placename, array &$places)
+ private function buildLevel(int $parent_id, array $placename, array &$places): void
{
$level = array_search('', $placename);
@@ -740,7 +740,7 @@ class LocationController extends AbstractAdminController
->on('p' . ($n + 1) . '.p_id', '=', 'p' . $n . '.p_parent_id')
->where('p' . ($n + 1) . '.p_place', '=', $place);
});
- };
+ }
return $query->exists();
}
diff --git a/app/Http/Controllers/Admin/UpgradeController.php b/app/Http/Controllers/Admin/UpgradeController.php
index d332445099..83abfd8db4 100644
--- a/app/Http/Controllers/Admin/UpgradeController.php
+++ b/app/Http/Controllers/Admin/UpgradeController.php
@@ -252,7 +252,7 @@ class UpgradeController extends AbstractAdminController
private function wizardStepExport(Tree $tree): Response
{
// We store the data in PHP temporary storage.
- $stream = fopen('php://temp', 'w+');
+ $stream = fopen('php://temp', 'wb+');
$filename = $tree->name() . date('-Y-m-d') . '.ged';
if ($this->filesystem->has($filename)) {
diff --git a/app/Http/Controllers/Admin/UsersController.php b/app/Http/Controllers/Admin/UsersController.php
index b6e3754eca..2f8e3c2309 100644
--- a/app/Http/Controllers/Admin/UsersController.php
+++ b/app/Http/Controllers/Admin/UsersController.php
@@ -442,16 +442,18 @@ class UsersController extends AbstractAdminController
FlashMessages::addMessage(I18N::translate('Duplicate email address. A user with that email already exists.') . $email, 'danger');
return new RedirectResponse(route('admin-users-edit', ['user_id' => $edit_user->id()]));
- } elseif ($edit_user->userName() !== $username && $this->user_service->findByUserName($username) instanceof User) {
+ }
+
+ if ($edit_user->userName() !== $username && $this->user_service->findByUserName($username) instanceof User) {
FlashMessages::addMessage(I18N::translate('Duplicate username. A user with that username already exists. Please choose another username.'), 'danger');
return new RedirectResponse(route('admin-users-edit', ['user_id' => $edit_user->id()]));
- } else {
- $edit_user
- ->setEmail($email)
- ->setUserName($username);
}
+ $edit_user
+ ->setEmail($email)
+ ->setUserName($username);
+
return new RedirectResponse(route('admin-users'));
}
diff --git a/app/Http/Controllers/AdminTreesController.php b/app/Http/Controllers/AdminTreesController.php
index b586855853..f3ad902884 100644
--- a/app/Http/Controllers/AdminTreesController.php
+++ b/app/Http/Controllers/AdminTreesController.php
@@ -479,7 +479,7 @@ class AdminTreesController extends AbstractBaseController
if ($record->canShow()) {
foreach ($record->mediaFiles() as $media_file) {
if (file_exists($media_file->getServerFilename())) {
- $fp = fopen($media_file->getServerFilename(), 'r');
+ $fp = fopen($media_file->getServerFilename(), 'rb');
$zip_filesystem->writeStream($path . $media_file->filename(), $fp);
fclose($fp);
}
@@ -506,7 +506,7 @@ class AdminTreesController extends AbstractBaseController
);
} else {
$response = new StreamedResponse(function () use ($tree, $access_level, $media_path, $encoding) {
- $stream = fopen('php://output', 'w');
+ $stream = fopen('php://output', 'wb');
FunctionsExport::exportGedcom($tree, $stream, $access_level, $media_path, $encoding);
fclose($stream);
});
@@ -537,7 +537,7 @@ class AdminTreesController extends AbstractBaseController
try {
// To avoid partial trees on timeout/diskspace/etc, write to a temporary file first
- $stream = fopen($filename . '.tmp', 'w');
+ $stream = fopen($filename . '.tmp', 'wb');
$tree->exportGedcom($stream);
fclose($stream);
rename($filename . '.tmp', $filename);
diff --git a/app/Http/Controllers/AdminUpgradeController.php b/app/Http/Controllers/AdminUpgradeController.php
index 091d214966..4b29207193 100644
--- a/app/Http/Controllers/AdminUpgradeController.php
+++ b/app/Http/Controllers/AdminUpgradeController.php
@@ -50,7 +50,7 @@ class AdminUpgradeController extends AbstractBaseController
'timeout' => 55,
];
- const LOCK_FILE = 'data/offline.txt';
+ private const LOCK_FILE = 'data/offline.txt';
/** @var string */
protected $layout = 'layouts/administration';
@@ -209,7 +209,7 @@ class AdminUpgradeController extends AbstractBaseController
$filename = WT_DATA_DIR . $tree->name() . date('-Y-m-d') . '.ged';
try {
- $stream = fopen($filename, 'w');
+ $stream = fopen($filename, 'wb');
if ($stream !== false) {
$tree->exportGedcom($stream);
@@ -232,7 +232,7 @@ class AdminUpgradeController extends AbstractBaseController
try {
$download_url = $this->upgrade_service->downloadUrl();
$zip_file = WT_DATA_DIR . basename($download_url);
- $zip_stream = fopen($zip_file, 'w');
+ $zip_stream = fopen($zip_file, 'wb');
if ($zip_stream === false) {
throw new Exception('Cannot read ZIP file: ' . $zip_file);
@@ -338,7 +338,7 @@ class AdminUpgradeController extends AbstractBaseController
foreach ($paths as $path) {
$src_filesystem->delete($path['path']);
- if (($this->timeout_service->isTimeNearlyUp())) {
+ if ($this->timeout_service->isTimeNearlyUp()) {
break;
}
}
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 9a0bbd58ba..fbe0b7ee89 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -162,7 +162,7 @@ class LoginController extends AbstractBaseController
* @return void
* @throws Exception
*/
- private function doLogin(string $username, string $password)
+ private function doLogin(string $username, string $password): void
{
if (!$_COOKIE) {
Log::addAuthenticationLog('Login failed (no session cookies): ' . $username);
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 01514f7888..2106de7ff7 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -194,7 +194,7 @@ class RegisterController extends AbstractBaseController
* @return void
* @throws Exception
*/
- private function doValidateRegistration(string $username, string $email, string $realname, string $comments, string $password)
+ private function doValidateRegistration(string $username, string $email, string $realname, string $comments, string $password): void
{
// All fields are required
if ($username === '' || $email === '' || $realname === '' || $comments === '' || $password === '') {
@@ -253,7 +253,7 @@ class RegisterController extends AbstractBaseController
* @return void
* @throws NotFoundHttpException
*/
- private function checkRegistrationAllowed()
+ private function checkRegistrationAllowed(): void
{
if (Site::getPreference('USE_REGISTRATION_MODULE') !== '1') {
throw new NotFoundHttpException();
diff --git a/app/Http/Controllers/AutocompleteController.php b/app/Http/Controllers/AutocompleteController.php
index a658004082..31a7ec8cec 100644
--- a/app/Http/Controllers/AutocompleteController.php
+++ b/app/Http/Controllers/AutocompleteController.php
@@ -181,12 +181,12 @@ class AutocompleteController extends AbstractBaseController
if (empty($data) && $tree->getPreference('GEONAMES_ACCOUNT')) {
// No place found? Use an external gazetteer
$url =
- "http://api.geonames.org/searchJSON" .
- "?name_startsWith=" . urlencode($query) .
- "&lang=" . WT_LOCALE .
- "&fcode=CMTY&fcode=ADM4&fcode=PPL&fcode=PPLA&fcode=PPLC" .
- "&style=full" .
- "&username=" . $tree->getPreference('GEONAMES_ACCOUNT');
+ 'http://api.geonames.org/searchJSON' .
+ '?name_startsWith=' . urlencode($query) .
+ '&lang=' . WT_LOCALE .
+ '&fcode=CMTY&fcode=ADM4&fcode=PPL&fcode=PPLA&fcode=PPLC' .
+ '&style=full' .
+ '&username=' . $tree->getPreference('GEONAMES_ACCOUNT');
// try to use curl when file_get_contents not allowed
if (ini_get('allow_url_fopen')) {
@@ -402,12 +402,12 @@ class AutocompleteController extends AbstractBaseController
// No place found? Use an external gazetteer
if (empty($results) && $tree->getPreference('GEONAMES_ACCOUNT')) {
$url =
- "http://api.geonames.org/searchJSON" .
- "?name_startsWith=" . urlencode($query) .
- "&lang=" . WT_LOCALE .
- "&fcode=CMTY&fcode=ADM4&fcode=PPL&fcode=PPLA&fcode=PPLC" .
- "&style=full" .
- "&username=" . $tree->getPreference('GEONAMES_ACCOUNT');
+ 'http://api.geonames.org/searchJSON' .
+ '?name_startsWith=' . urlencode($query) .
+ '&lang=' . WT_LOCALE .
+ '&fcode=CMTY&fcode=ADM4&fcode=PPL&fcode=PPLA&fcode=PPLC' .
+ '&style=full' .
+ '&username=' . $tree->getPreference('GEONAMES_ACCOUNT');
// try to use curl when file_get_contents not allowed
if (ini_get('allow_url_fopen')) {
$json = file_get_contents($url);
diff --git a/app/Http/Controllers/BranchesController.php b/app/Http/Controllers/BranchesController.php
index 03a3783b53..d00dfff10e 100644
--- a/app/Http/Controllers/BranchesController.php
+++ b/app/Http/Controllers/BranchesController.php
@@ -256,7 +256,7 @@ class BranchesController extends AbstractBaseController
*
* @return string
*/
- private function getDescendantsHtml(Tree $tree, array $individuals, array $ancestors, string $surname, bool $soundex_dm, bool $soundex_std, Individual $individual, Family $parents = null)
+ private function getDescendantsHtml(Tree $tree, array $individuals, array $ancestors, string $surname, bool $soundex_dm, bool $soundex_std, Individual $individual, Family $parents = null): string
{
$module = $this->module_service->findByComponent(ModuleChartInterface::class, $tree, Auth::user())->first(function (ModuleInterface $module) {
return $module instanceof RelationshipsChartModule;
diff --git a/app/Http/Controllers/CalendarController.php b/app/Http/Controllers/CalendarController.php
index 419c2d6f86..5ff4568980 100644
--- a/app/Http/Controllers/CalendarController.php
+++ b/app/Http/Controllers/CalendarController.php
@@ -95,20 +95,18 @@ class CalendarController extends AbstractBaseController
}
$ged_date = new Date("FROM {$cal} {$match[1]} TO {$cal} {$match[2]}");
$view = 'year';
- } else {
+ } elseif (preg_match('/^(\d+)(\?+)$/', $year, $match)) {
// advanced-year "decade/century wildcard"
- if (preg_match('/^(\d+)(\?+)$/', $year, $match)) {
- $y1 = $match[1] . str_replace('?', '0', $match[2]);
- $y2 = $match[1] . str_replace('?', '9', $match[2]);
- $ged_date = new Date("FROM {$cal} {$y1} TO {$cal} {$y2}");
- $view = 'year';
- } else {
- if ($year < 0) {
- $year = (-$year) . ' B.C.';
- } // need BC to parse date
- $ged_date = new Date("{$cal} {$day} {$month} {$year}");
- $year = $ged_date->minimumDate()->year; // need negative year for year entry field.
- }
+ $y1 = $match[1] . str_replace('?', '0', $match[2]);
+ $y2 = $match[1] . str_replace('?', '9', $match[2]);
+ $ged_date = new Date("FROM {$cal} {$y1} TO {$cal} {$y2}");
+ $view = 'year';
+ } else {
+ if ($year < 0) {
+ $year = (-$year) . ' B.C.';
+ } // need BC to parse date
+ $ged_date = new Date("{$cal} {$day} {$month} {$year}");
+ $year = $ged_date->minimumDate()->year; // need negative year for year entry field.
}
$cal_date = $ged_date->minimumDate();
@@ -214,19 +212,17 @@ class CalendarController extends AbstractBaseController
}
$ged_date = new Date("FROM {$cal} {$match[1]} TO {$cal} {$match[2]}");
$view = 'year';
- } else {
+ } elseif (preg_match('/^(\d+)(\?+)$/', $year, $match)) {
// advanced-year "decade/century wildcard"
- if (preg_match('/^(\d+)(\?+)$/', $year, $match)) {
- $y1 = $match[1] . str_replace('?', '0', $match[2]);
- $y2 = $match[1] . str_replace('?', '9', $match[2]);
- $ged_date = new Date("FROM {$cal} {$y1} TO {$cal} {$y2}");
- $view = 'year';
- } else {
- if ($year < 0) {
- $year = (-$year) . ' B.C.';
- } // need BC to parse date
- $ged_date = new Date("{$cal} {$day} {$month} {$year}");
- }
+ $y1 = $match[1] . str_replace('?', '0', $match[2]);
+ $y2 = $match[1] . str_replace('?', '9', $match[2]);
+ $ged_date = new Date("FROM {$cal} {$y1} TO {$cal} {$y2}");
+ $view = 'year';
+ } else {
+ if ($year < 0) {
+ $year = (-$year) . ' B.C.';
+ } // need BC to parse date
+ $ged_date = new Date("{$cal} {$day} {$month} {$year}");
}
$cal_date = $ged_date->minimumDate();
@@ -443,7 +439,7 @@ class CalendarController extends AbstractBaseController
$alt_date = new JalaliDate($cal_date->minimumJulianDay() + $d - 1);
break;
default:
- throw new DomainException("Invalid calendar: " . $convcal);
+ throw new DomainException('Invalid calendar: ' . $convcal);
}
if (get_class($alt_date) !== get_class($cal_date) && $alt_date->inValidRange()) {
echo '<span class="rtl_cal_day">' . $alt_date->format('%j %M') . '</span>';
diff --git a/app/Http/Controllers/GedcomFileController.php b/app/Http/Controllers/GedcomFileController.php
index 991d9281d7..82e38db508 100644
--- a/app/Http/Controllers/GedcomFileController.php
+++ b/app/Http/Controllers/GedcomFileController.php
@@ -58,11 +58,11 @@ class GedcomFileController extends AbstractBaseController
$import_offset = (int) DB::table('gedcom_chunk')
->where('gedcom_id', '=', $tree->id())
->where('imported', '=', '1')
- ->sum(DB::raw("LENGTH(chunk_data)"));
+ ->sum(DB::raw('LENGTH(chunk_data)'));
$import_total = (int) DB::table('gedcom_chunk')
->where('gedcom_id', '=', $tree->id())
- ->sum(DB::raw("LENGTH(chunk_data)"));
+ ->sum(DB::raw('LENGTH(chunk_data)'));
// Finished?
if ($import_offset === $import_total) {
@@ -106,7 +106,7 @@ class GedcomFileController extends AbstractBaseController
// What character set is this? Need to convert it to UTF8
if (preg_match('/[\r\n][ \t]*1 CHAR(?:ACTER)? (.+)/', $data->chunk_data, $match)) {
- $charset = trim(strtoupper($match[1]));
+ $charset = strtoupper(trim($match[1]));
} else {
$charset = 'ASCII';
}
diff --git a/app/Http/Controllers/HomePageController.php b/app/Http/Controllers/HomePageController.php
index b41de25d58..ed3c852871 100644
--- a/app/Http/Controllers/HomePageController.php
+++ b/app/Http/Controllers/HomePageController.php
@@ -795,7 +795,7 @@ class HomePageController extends AbstractBaseController
*
* @return void
*/
- private function updateTreeBlocks(int $tree_id, array $main_blocks, array $side_blocks)
+ private function updateTreeBlocks(int $tree_id, array $main_blocks, array $side_blocks): void
{
$existing_block_ids = DB::table('block')
->where('gedcom_id', '=', $tree_id)
@@ -851,7 +851,7 @@ class HomePageController extends AbstractBaseController
*
* @return void
*/
- private function updateUserBlocks(int $user_id, array $main_blocks, array $side_blocks)
+ private function updateUserBlocks(int $user_id, array $main_blocks, array $side_blocks): void
{
$existing_block_ids = DB::table('block')
->where('user_id', '=', $user_id)
diff --git a/app/Http/Controllers/MediaFileController.php b/app/Http/Controllers/MediaFileController.php
index ad556d0c22..5c6d32ad0a 100644
--- a/app/Http/Controllers/MediaFileController.php
+++ b/app/Http/Controllers/MediaFileController.php
@@ -231,9 +231,8 @@ class MediaFileController extends AbstractBaseController
private function glideSignature(): Signature
{
$glide_key = Site::getPreference('glide-key');
- $signature = SignatureFactory::create($glide_key);
- return $signature;
+ return SignatureFactory::create($glide_key);
}
/**
diff --git a/app/Http/Controllers/PlaceHierarchyController.php b/app/Http/Controllers/PlaceHierarchyController.php
index 1115fc6518..5d6126f961 100644
--- a/app/Http/Controllers/PlaceHierarchyController.php
+++ b/app/Http/Controllers/PlaceHierarchyController.php
@@ -166,7 +166,7 @@ class PlaceHierarchyController extends AbstractBaseController
* @return array|null
* @throws \Exception
*/
- private function getHierarchy($tree, $place, $parent)
+ private function getHierarchy($tree, $place, $parent): ?array
{
$child_places = $place->getChildPlaces();
$numfound = count($child_places);
@@ -177,7 +177,7 @@ class PlaceHierarchyController extends AbstractBaseController
return
[
'tree' => $tree,
- 'col_class' => "w-" . ($divisor === 2 ? "25" : "50"),
+ 'col_class' => 'w-' . ($divisor === 2 ? '25' : '50'),
'columns' => array_chunk($child_places, (int) ceil($numfound / $divisor)),
'place' => $place,
'parent' => $parent,
@@ -240,7 +240,7 @@ class PlaceHierarchyController extends AbstractBaseController
private function breadcrumbs($place): array
{
$breadcrumbs = [];
- if ($place->gedcomName() <> '') {
+ if ($place->gedcomName() !== '') {
$breadcrumbs[] = $place;
$parent_place = $place->parent();
while ($parent_place->gedcomName() !== '') {
diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php
index 12c8c8a463..0c18f7bc6a 100644
--- a/app/Http/Controllers/SearchController.php
+++ b/app/Http/Controllers/SearchController.php
@@ -273,6 +273,32 @@ class SearchController extends AbstractBaseController
}
/**
+ * Convert the query into an array of search terms
+ *
+ * @param string $query
+ *
+ * @return string[]
+ */
+ private function extractSearchTerms(string $query): array
+ {
+ $search_terms = [];
+
+ // Words in double quotes stay together
+ while (preg_match('/"([^"]+)"/', $query, $match)) {
+ $search_terms[] = trim($match[1]);
+ $query = str_replace($match[0], '', $query);
+ }
+
+ // Other words get treated separately
+ while (preg_match('/[\S]+/', $query, $match)) {
+ $search_terms[] = trim($match[0]);
+ $query = str_replace($match[0], '', $query);
+ }
+
+ return $search_terms;
+ }
+
+ /**
* The phonetic search.
*
* @param Request $request
@@ -363,11 +389,11 @@ class SearchController extends AbstractBaseController
switch ($context) {
case 'all':
- $records = $this->search_service->searchIndividuals([$tree], [$search])->all();
+ $records = $this->search_service->searchIndividuals([$tree], [$search]);
$count = $this->replaceRecords($records, $search, $replace);
FlashMessages::addMessage(I18N::plural('%s individual has been updated.', '%s individuals have been updated.', $count, I18N::number($count)));
- $records = $this->search_service->searchFamilies([$tree], [$search])->all();
+ $records = $this->search_service->searchFamilies([$tree], [$search]);
$count = $this->replaceRecords($records, $search, $replace);
FlashMessages::addMessage(I18N::plural('%s family has been updated.', '%s families have been updated.', $count, I18N::number($count)));
@@ -397,17 +423,17 @@ class SearchController extends AbstractBaseController
'_AKA',
], $adv_name_tags));
- $records = $this->search_service->searchIndividuals([$tree], [$search])->all();
+ $records = $this->search_service->searchIndividuals([$tree], [$search]);
$count = $this->replaceIndividualNames($records, $search, $replace, $name_tags);
FlashMessages::addMessage(I18N::plural('%s individual has been updated.', '%s individuals have been updated.', $count, I18N::number($count)));
break;
case 'place':
- $records = $this->search_service->searchIndividuals([$tree], [$search])->all();
+ $records = $this->search_service->searchIndividuals([$tree], [$search]);
$count = $this->replacePlaces($records, $search, $replace);
FlashMessages::addMessage(I18N::plural('%s individual has been updated.', '%s individuals have been updated.', $count, I18N::number($count)));
- $records = $this->search_service->searchFamilies([$tree], [$search])->all();
+ $records = $this->search_service->searchFamilies([$tree], [$search]);
$count = $this->replacePlaces($records, $search, $replace);
FlashMessages::addMessage(I18N::plural('%s family has been updated.', '%s families have been updated.', $count, I18N::number($count)));
break;
@@ -424,58 +450,39 @@ class SearchController extends AbstractBaseController
}
/**
- * A structured search.
+ * @param Collection $records
+ * @param string $search
+ * @param string $replace
*
- * @param Request $request
- * @param Tree $tree
- *
- * @return Response
+ * @return int
*/
- public function advanced(Request $request, Tree $tree): Response
+ private function replaceRecords(Collection $records, string $search, string $replace): int
{
- $default_fields = array_fill_keys(self::DEFAULT_ADVANCED_FIELDS, '');
-
- $fields = $request->get('fields', $default_fields);
- $modifiers = $request->get('modifiers', []);
- $other_field = $request->get('other_field', '');
- $other_value = $request->get('other_value', '');
-
- if ($other_field !== '' && $other_value !== '') {
- $fields[$other_field] = $other_value;
- }
+ $count = 0;
+ $query = preg_quote($search, '/');
- $other_fields = $this->otherFields($fields);
- $date_options = $this->dateOptions();
- $name_options = $this->nameOptions();
+ foreach ($records as $record) {
+ $old_record = $record->gedcom();
+ $new_record = preg_replace('/(\n\d [A-Z0-9_]+ )' . $query . '/i', '$1' . $replace, $old_record);
- if (!empty(array_filter($fields))) {
- $individuals = $this->search_service->searchIndividualsAdvanced([$tree], $fields, $modifiers);
- } else {
- $individuals = [];
+ if ($new_record !== $old_record) {
+ $record->updateRecord($new_record, true);
+ $count++;
+ }
}
- $title = I18N::translate('Advanced search');
-
- return $this->viewResponse('search-advanced-page', [
- 'date_options' => $date_options,
- 'fields' => $fields,
- 'individuals' => $individuals,
- 'modifiers' => $modifiers,
- 'name_options' => $name_options,
- 'other_fields' => $other_fields,
- 'title' => $title,
- ]);
+ return $count;
}
/**
- * @param GedcomRecord[] $records
- * @param string $search
- * @param string $replace
- * @param string[] $name_tags
+ * @param Collection $records
+ * @param string $search
+ * @param string $replace
+ * @param string[] $name_tags
*
* @return int
*/
- private function replaceIndividualNames(array $records, string $search, string $replace, array $name_tags): int
+ private function replaceIndividualNames(Collection $records, string $search, string $replace, array $name_tags): int
{
$pattern = '/(\n\d (?:' . implode('|', $name_tags) . ') (?:.*))' . preg_quote($search, '/') . '/i';
$replacement = '$1' . $replace;
@@ -495,13 +502,13 @@ class SearchController extends AbstractBaseController
}
/**
- * @param GedcomRecord[] $records
- * @param string $search
- * @param string $replace
+ * @param Collection $records
+ * @param string $search
+ * @param string $replace
*
* @return int
*/
- private function replacePlaces(array $records, string $search, string $replace): int
+ private function replacePlaces(Collection $records, string $search, string $replace): int
{
$pattern = '/(\n\d PLAC\b.* )' . preg_quote($search, '/') . '([,\n])/i';
$replacement = '$1' . $replace . '$2';
@@ -521,28 +528,47 @@ class SearchController extends AbstractBaseController
}
/**
- * @param GedcomRecord[] $records
- * @param string $search
- * @param string $replace
+ * A structured search.
*
- * @return int
+ * @param Request $request
+ * @param Tree $tree
+ *
+ * @return Response
*/
- private function replaceRecords(array $records, string $search, string $replace): int
+ public function advanced(Request $request, Tree $tree): Response
{
- $count = 0;
- $query = preg_quote($search, '/');
+ $default_fields = array_fill_keys(self::DEFAULT_ADVANCED_FIELDS, '');
- foreach ($records as $record) {
- $old_record = $record->gedcom();
- $new_record = preg_replace('/(\n\d [A-Z0-9_]+ )' . $query . '/i', '$1' . $replace, $old_record);
+ $fields = $request->get('fields', $default_fields);
+ $modifiers = $request->get('modifiers', []);
+ $other_field = $request->get('other_field', '');
+ $other_value = $request->get('other_value', '');
- if ($new_record !== $old_record) {
- $record->updateRecord($new_record, true);
- $count++;
- }
+ if ($other_field !== '' && $other_value !== '') {
+ $fields[$other_field] = $other_value;
}
- return $count;
+ $other_fields = $this->otherFields($fields);
+ $date_options = $this->dateOptions();
+ $name_options = $this->nameOptions();
+
+ if (!empty(array_filter($fields))) {
+ $individuals = $this->search_service->searchIndividualsAdvanced([$tree], $fields, $modifiers);
+ } else {
+ $individuals = [];
+ }
+
+ $title = I18N::translate('Advanced search');
+
+ return $this->viewResponse('search-advanced-page', [
+ 'date_options' => $date_options,
+ 'fields' => $fields,
+ 'individuals' => $individuals,
+ 'modifiers' => $modifiers,
+ 'name_options' => $name_options,
+ 'other_fields' => $other_fields,
+ 'title' => $title,
+ ]);
}
/**
@@ -594,30 +620,4 @@ class SearchController extends AbstractBaseController
'SDX' => I18N::translate('Sounds like'),
];
}
-
- /**
- * Convert the query into an array of search terms
- *
- * @param string $query
- *
- * @return string[]
- */
- private function extractSearchTerms(string $query): array
- {
- $search_terms = [];
-
- // Words in double quotes stay together
- while (preg_match('/"([^"]+)"/', $query, $match)) {
- $search_terms[] = trim($match[1]);
- $query = str_replace($match[0], '', $query);
- }
-
- // Other words get treated separately
- while (preg_match('/[\S]+/', $query, $match)) {
- $search_terms[] = trim($match[0]);
- $query = str_replace($match[0], '', $query);
- }
-
- return $search_terms;
- }
}
diff --git a/app/Http/Middleware/Housekeeping.php b/app/Http/Middleware/Housekeeping.php
index bb1423d615..4b579701c6 100644
--- a/app/Http/Middleware/Housekeeping.php
+++ b/app/Http/Middleware/Housekeeping.php
@@ -87,7 +87,7 @@ class Housekeeping implements MiddlewareInterface
*
* @return void
*/
- private function runHousekeeping()
+ private function runHousekeeping(): void
{
$data_filesystem = app(FilesystemInterface::class);
$root_filesystem = new Filesystem(new Local(WT_ROOT));