From 01d1248c4ff41e1f2f773a591c0964cfc6d9c2e7 Mon Sep 17 00:00:00 2001 From: Alexis Saettler Date: Sun, 6 Dec 2020 16:51:47 +0100 Subject: [PATCH] chore: reactivate analysers (#4660) * chore: reactivate analysers * reactivate psalm * Apply fixes from StyleCI * fix * fixes * rename back the file Co-authored-by: Alexis Saettler --- .azure/azure.sig | 26 ++++++------- .azure/job-analyzers.yml | 32 ++++++++-------- .../Commands/Helpers/CommandExecutor.php | 10 ++--- app/Console/Commands/ImportCSV.php | 2 +- app/Console/Commands/SetupTest.php | 3 +- app/Helpers/AuditLogHelper.php | 2 +- app/Helpers/CountriesHelper.php | 2 +- app/Helpers/DateHelper.php | 15 ++++---- app/Helpers/LocaleHelper.php | 2 + app/Helpers/SearchHelper.php | 8 ++-- app/Helpers/TimezoneHelper.php | 1 + .../ApiActivityTypeCategoryController.php | 4 +- .../Activity/ApiActivityTypeController.php | 4 +- .../Api/Account/ApiCompanyController.php | 4 +- .../Api/Account/ApiGenderController.php | 4 +- .../Api/Account/ApiPlaceController.php | 4 +- .../Api/ApiContactFieldController.php | 4 +- .../Controllers/Api/ApiReminderController.php | 4 +- .../Api/Contact/ApiAddressController.php | 4 +- .../Api/Contact/ApiCallController.php | 4 +- .../Api/Contact/ApiConversationController.php | 4 +- .../Api/Contact/ApiDocumentController.php | 4 +- .../Api/Contact/ApiLifeEventController.php | 4 +- .../Api/Contact/ApiMessageController.php | 2 +- .../Api/Contact/ApiOccupationController.php | 4 +- .../Api/Contact/ApiPhotoController.php | 4 +- .../Controllers/Auth/InvitationController.php | 11 ++++-- .../Auth/PasswordChangeController.php | 3 ++ .../Controllers/Auth/RegisterController.php | 1 + .../Auth/ResetPasswordController.php | 3 ++ .../DAV/Backend/CardDAV/AddressBook.php | 2 +- .../DAV/Backend/SyncDAVBackend.php | 1 + .../Settings/MultiFAController.php | 4 ++ app/Jobs/AddContactFromVCard.php | 10 ++++- app/Jobs/ExportAccountAsSQL.php | 3 ++ app/Models/Account/ImportJob.php | 7 +++- app/Models/Contact/Contact.php | 20 ++++++++-- app/Models/Contact/ContactFieldLabel.php | 1 + app/Notifications/UserNotified.php | 7 +++- .../Activity/AttachContactToActivity.php | 1 + .../Activity/Activity/UpdateActivity.php | 1 + .../ActivityType/UpdateActivityType.php | 1 + .../UpdateActivityTypeCategory.php | 1 + .../Account/Company/UpdateCompany.php | 1 + app/Services/Account/Gender/UpdateGender.php | 1 + .../LifeEventType/UpdateLifeEventType.php | 1 + app/Services/Account/Place/UpdatePlace.php | 1 + .../Account/Settings/ExportAccount.php | 1 + .../Contact/Address/UpdateAddress.php | 1 + app/Services/Contact/Avatar/GetGravatar.php | 1 + app/Services/Contact/Avatar/UpdateAvatar.php | 1 + app/Services/Contact/Call/UpdateCall.php | 1 + .../Contact/Contact/DeleteMeContact.php | 1 + app/Services/Contact/Contact/SetMeContact.php | 2 + .../Contact/UpdateBirthdayInformation.php | 1 + .../Contact/Contact/UpdateContact.php | 1 + .../Contact/UpdateContactFoodPreferences.php | 1 + .../Contact/UpdateContactIntroduction.php | 1 + .../Contact/UpdateDeceasedInformation.php | 1 + .../Contact/Contact/UpdateWorkInformation.php | 1 + .../ContactField/UpdateContactField.php | 1 + .../Conversation/UpdateConversation.php | 1 + .../Contact/Conversation/UpdateMessage.php | 1 + .../Description/ClearPersonalDescription.php | 1 + .../Description/SetPersonalDescription.php | 1 + .../Contact/LifeEvent/UpdateLifeEvent.php | 1 + .../Contact/Occupation/UpdateOccupation.php | 1 + .../Contact/Reminder/UpdateReminder.php | 1 + app/Services/Contact/Tag/UpdateTag.php | 1 + .../Geolocalization/GetGPSCoordinate.php | 1 + .../Weather/GetWeatherInformation.php | 1 + app/Services/Task/UpdateTask.php | 2 + app/Services/User/EmailChange.php | 1 + app/Services/User/UpdateViewPreference.php | 1 + app/Services/VCard/ImportVCard.php | 3 +- app/Traits/DAVFormat.php | 4 +- azure-pipelines.yml | 2 +- .../2019_02_17_112452_add_default_gender.php | 1 + .../2019_12_17_024553_add_foreign_keys.php | 3 ++ ...ename_birthday_reminder_title_deceased.php | 4 +- ...04_24_185810_remove_duplicate_currency.php | 1 + phpstan.neon | 2 + psalm.xml | 38 ++++++++++--------- tests/Unit/Models/ImportJobTest.php | 5 +-- 84 files changed, 219 insertions(+), 115 deletions(-) diff --git a/.azure/azure.sig b/.azure/azure.sig index c5ea37f40..616847f72 100644 --- a/.azure/azure.sig +++ b/.azure/azure.sig @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCAAdFiEEuNgCced4O/05ANeg4OezJU6ORAcFAl+wWV0ACgkQ4OezJU6O -RAf05BAAnL+gFWfElA3JiYwgnHQhQgbRm1oUgVoR1jCUB8HH0UzacMpTUFBHx0a/ -kNJuCVGBXB8uaY1QsuKCHcv02pFOPoTkYaNw5+mcuD8sTlO/NvgOTwblf45btykh -6y4GEQY5L1ZNkcIM8kkAU8ZQapgJ+Rt/FTh3fIRmkkMbo1IvvQ5aRHTJrXq2/BqE -Anbs4/fiz/DZ9RSBiSFNP+nh2aJyAg9tRf4VVVo3sIWKcxoCcORUI39ssRtCG4EQ -h+qKvSb38wo3IuRi6KIrTu00B1DTma+tfQGRafS7qdjkVG5C4P+BoE2JKn8UjS+S -7Ev4Gr12mqPg7J4SHPO8ZfATP9DoaijOGvqcQCfIgeqVeogobujy7iZdxdz1CvyL -1od0wmyFHgetx34siUROPL2ajlDwOeq5V5ETJCcLgCDPbLXLpXcwoEOi5G2n7SiR -OgDwsrqDnYI+TV1vlBP3sQPWzxDd9HDM5qJOLeKL7yS+xE1BjrnuYt6H8eyd3rwL -t9MuqO0SLYZRmUb5oT/pU+5Zt87On2SxPpWdSL7r8dJxn9DibF/VJmb6sA89SZK2 -kN8v+ttbdTPMvHM3BwoGDPSPH7vvSmRNVhxoDiFN5p3rBtNzkN2VKfKBkiUsFZm2 -+T5S6R26IZI2MLaYSeIOPemo/n0yAKwxi2OLh/XCnx0K9ITcJss= -=OuY3 +iQIzBAABCgAdFiEEuNgCced4O/05ANeg4OezJU6ORAcFAl/M2boACgkQ4OezJU6O +RAfeog//UJ52+AHeCs9NroQg8u6ZjKzbF0DCwkbS8axYjT3PaF8oif6ncGzohKeV +hlx85UtewIu6P74tub7dGPdCUipFqULxwzMykRN8nsA29EN4CAZDL6XMRIeODWVJ +ay6UkkqRge8BMdraHaQnXJfrO2cLmlpqiZ2OcqgJJQ58GXxF6PzZQHAxl47goJ9r +oWrzBgC81SfvxVq1UQnoX5YoKA1dbY0aNDBlV9sGlk62JbBxgVzq6C/ghdEGCdZE +wPUyUL0DOLNgafBmgqhDOhBz62q10iNNujSjbGhn+859+cLeg1rJ7wL1UuzI0wzN +8z+sgfyx91JVInlbkmPj0y5c2BUNaGIe3BnGwU+1k7tzOmCYbltivJFWPTrLvd4z +vDCy9VN99FpnF5yUlLwf3J6+rjhpjXazfpSh1mmL1acDj9TVxrijp3W4gNIyiy0N +DQTVtG9j3gdbRUT+esOVLglO0EY2rliIHqlaPZ7Fcd52O3GrxXVLyfs272SmSvjM +jOyQ25qi//3+e69KFVkULXjA3AzGKidcnFrEEIf+z1u4wbxEPCkc+rcZJ+90xTV3 +MtnrsiIHUccDKIKp69iy/+ee+vgy8s/ym8n9/oJ7e8cMKCStOXY8lafQSx2ovvz0 +fbtMxOczke3UEMLrWDIyvr+D0etumONs1Y3bygeDtEpZhxjlEvU= +=kapC -----END PGP SIGNATURE----- diff --git a/.azure/job-analyzers.yml b/.azure/job-analyzers.yml index 8f5026774..01dba88a9 100644 --- a/.azure/job-analyzers.yml +++ b/.azure/job-analyzers.yml @@ -1,20 +1,20 @@ jobs: -- job: psalm - pool: - vmImage: 'ubuntu-latest' - steps: - - template: step-prepare-environment.yml - - template: step-composer-install.yml + - job: psalm + pool: + vmImage: 'ubuntu-latest' + steps: + - template: step-prepare-environment.yml + - template: step-composer-install.yml - - script: vendor/bin/psalm --shepherd - displayName: Run psalm + - script: vendor/bin/psalm + displayName: Run psalm -- job: phpstan - pool: - vmImage: 'ubuntu-latest' - steps: - - template: step-prepare-environment.yml - - template: step-composer-install.yml + - job: phpstan + pool: + vmImage: 'ubuntu-latest' + steps: + - template: step-prepare-environment.yml + - template: step-composer-install.yml - - script: vendor/bin/phpstan analyse - displayName: Run phpstan + - script: vendor/bin/phpstan analyse + displayName: Run phpstan diff --git a/app/Console/Commands/Helpers/CommandExecutor.php b/app/Console/Commands/Helpers/CommandExecutor.php index f4f560c6c..867a1dca4 100644 --- a/app/Console/Commands/Helpers/CommandExecutor.php +++ b/app/Console/Commands/Helpers/CommandExecutor.php @@ -26,11 +26,11 @@ class CommandExecutor implements CommandExecutorInterface /** * @codeCoverageIgnore */ - public function exec($message, $commandline) + public function exec($message, $command) { $this->command->info($message); - $this->command->line($commandline, null, OutputInterface::VERBOSITY_VERBOSE); - exec($commandline.' 2>&1', $output); + $this->command->line($command, null, OutputInterface::VERBOSITY_VERBOSE); + exec($command.' 2>&1', $output); foreach ($output as $line) { $this->command->line($line, null, OutputInterface::VERBOSITY_VERY_VERBOSE); } @@ -40,7 +40,7 @@ class CommandExecutor implements CommandExecutorInterface /** * @codeCoverageIgnore */ - public function artisan($message, $commandline, array $arguments = []) + public function artisan($message, $command, array $arguments = []) { $info = ''; foreach ($arguments as $key => $value) { @@ -50,6 +50,6 @@ class CommandExecutor implements CommandExecutorInterface $info .= ' '.$value; } } - $this->exec($message, Application::formatCommandString($commandline.$info)); + $this->exec($message, Application::formatCommandString($command.$info)); } } diff --git a/app/Console/Commands/ImportCSV.php b/app/Console/Commands/ImportCSV.php index fa46de236..ae47683af 100644 --- a/app/Console/Commands/ImportCSV.php +++ b/app/Console/Commands/ImportCSV.php @@ -90,8 +90,8 @@ class ImportCSV extends Command $first = true; $imported = 0; + $handle = fopen($file, 'r'); try { - $handle = fopen($file, 'r'); while (($data = fgetcsv($handle)) !== false) { // don't import the columns if ($first) { diff --git a/app/Console/Commands/SetupTest.php b/app/Console/Commands/SetupTest.php index 4be06b8ce..dacb75849 100644 --- a/app/Console/Commands/SetupTest.php +++ b/app/Console/Commands/SetupTest.php @@ -2,9 +2,9 @@ namespace App\Console\Commands; -use Carbon\Carbon; use App\Models\User\User; use App\Helpers\DateHelper; +use Illuminate\Support\Carbon; use App\Models\Account\Account; use App\Models\Contact\Contact; use Illuminate\Console\Command; @@ -156,6 +156,7 @@ class SetupTest extends Command $this->account = Account::createDefault('John', 'Doe', 'admin@admin.com', 'admin0'); // set default admin account to confirmed + /** @var User */ $adminUser = $this->account->users()->first(); $this->confirmUser($adminUser); $this->user = $adminUser; diff --git a/app/Helpers/AuditLogHelper.php b/app/Helpers/AuditLogHelper.php index a506e54b7..a09b6a321 100644 --- a/app/Helpers/AuditLogHelper.php +++ b/app/Helpers/AuditLogHelper.php @@ -11,7 +11,7 @@ class AuditLogHelper /** * Prepare a collection of audit logs that is displayed on the Settings page. * - * @param \Illuminate\Contracts\Pagination\LengthAwarePaginator|Collection<\App\Models\Instance\AuditLog> $logs + * @param \Illuminate\Contracts\Pagination\LengthAwarePaginator|Collection<\App\Models\Instance\AuditLog,mixed> $logs * * @return Collection */ diff --git a/app/Helpers/CountriesHelper.php b/app/Helpers/CountriesHelper.php index ed386aaa9..a05ed4fae 100644 --- a/app/Helpers/CountriesHelper.php +++ b/app/Helpers/CountriesHelper.php @@ -14,7 +14,7 @@ class CountriesHelper /** * Get list of countries. * - * @return \Illuminate\Support\Collection + * @return \Illuminate\Support\Collection */ public static function getAll(): Collection { diff --git a/app/Helpers/DateHelper.php b/app/Helpers/DateHelper.php index c3f77c3d1..52825bbb1 100644 --- a/app/Helpers/DateHelper.php +++ b/app/Helpers/DateHelper.php @@ -2,8 +2,9 @@ namespace App\Helpers; -use Carbon\Carbon; +use function Safe\date; use function Safe\strtotime; +use Illuminate\Support\Carbon; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; @@ -176,7 +177,7 @@ class DateHelper * Return the day of the date according to the timezone of the user * like "Mon", or "Wed". * - * @param Carbon $date + * @param \Carbon\Carbon $date * @return string */ public static function getShortDay($date): string @@ -188,7 +189,7 @@ class DateHelper * Return a date according to the timezone of the user, in a short format * like "Oct 29". * - * @param Carbon $date + * @param \Carbon\Carbon $date * @return string */ public static function getShortDateWithoutYear($date): string @@ -200,7 +201,7 @@ class DateHelper * Return a date and the time according to the timezone of the user, in a short format * like "Oct 29, 1981 19:32". * - * @param Carbon $date + * @param \Carbon\Carbon $date * @return string */ public static function getShortDateWithTime($date): string @@ -224,12 +225,12 @@ class DateHelper /** * Add a given number of week/month/year to a date. - * @param Carbon $date the start date + * @param \Carbon\Carbon $date the start date * @param string $frequency week/month/year * @param int $number the number of week/month/year to increment to - * @return Carbon + * @return \Carbon\Carbon */ - public static function addTimeAccordingToFrequencyType(Carbon $date, string $frequency, int $number): Carbon + public static function addTimeAccordingToFrequencyType(\Carbon\Carbon $date, string $frequency, int $number): \Carbon\Carbon { switch ($frequency) { case 'week': diff --git a/app/Helpers/LocaleHelper.php b/app/Helpers/LocaleHelper.php index 81b8f9bb0..f79040156 100644 --- a/app/Helpers/LocaleHelper.php +++ b/app/Helpers/LocaleHelper.php @@ -151,6 +151,8 @@ class LocaleHelper /** * Association ISO-639-1 => ISO-639-2. + * + * @var array */ private static $locales = []; diff --git a/app/Helpers/SearchHelper.php b/app/Helpers/SearchHelper.php index 71cd50b89..fc775e0f9 100644 --- a/app/Helpers/SearchHelper.php +++ b/app/Helpers/SearchHelper.php @@ -32,14 +32,16 @@ class SearchHelper $field_id = is_null($field) ? 0 : $field->id; - return Contact::whereHas('contactFields', function ($query) use ($accountId, $field_id, $search_term) { + /** @var Builder */ + $b = Contact::whereHas('contactFields', function ($query) use ($accountId, $field_id, $search_term) { $query->where([ ['account_id', $accountId], ['data', 'like', "$search_term%"], ['contact_field_type_id', $field_id], ]); - }) - ->orderBy($orderByColumn, $orderByDirection); + }); + + return $b->orderBy($orderByColumn, $orderByDirection); } return Contact::search($needle, $accountId, $orderByColumn, $orderByDirection); diff --git a/app/Helpers/TimezoneHelper.php b/app/Helpers/TimezoneHelper.php index f7397cf77..8b1d01a6a 100644 --- a/app/Helpers/TimezoneHelper.php +++ b/app/Helpers/TimezoneHelper.php @@ -86,6 +86,7 @@ class TimezoneHelper /** * Equivalent timezone to convert deprecated timezone. * + * @var array * @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones */ protected static $equivalentTimezone = [ diff --git a/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeCategoryController.php b/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeCategoryController.php index 50b3fc9b0..683dc6e6b 100644 --- a/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeCategoryController.php +++ b/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeCategoryController.php @@ -119,7 +119,7 @@ class ApiActivityTypeCategoryController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $activityTypeCategoryId) + public function destroy(Request $request, int $activityTypeCategoryId) { try { app(DestroyActivityTypeCategory::class)->execute([ @@ -134,6 +134,6 @@ class ApiActivityTypeCategoryController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $activityTypeCategoryId); + return $this->respondObjectDeleted($activityTypeCategoryId); } } diff --git a/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeController.php b/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeController.php index 48510804f..9033b5711 100644 --- a/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeController.php +++ b/app/Http/Controllers/Api/Account/Activity/ApiActivityTypeController.php @@ -119,7 +119,7 @@ class ApiActivityTypeController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $activityTypeId) + public function destroy(Request $request, int $activityTypeId) { try { app(DestroyActivityType::class)->execute([ @@ -134,6 +134,6 @@ class ApiActivityTypeController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $activityTypeId); + return $this->respondObjectDeleted($activityTypeId); } } diff --git a/app/Http/Controllers/Api/Account/ApiCompanyController.php b/app/Http/Controllers/Api/Account/ApiCompanyController.php index 9ac0bfe17..45f16eb65 100644 --- a/app/Http/Controllers/Api/Account/ApiCompanyController.php +++ b/app/Http/Controllers/Api/Account/ApiCompanyController.php @@ -119,7 +119,7 @@ class ApiCompanyController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $companyId) + public function destroy(Request $request, int $companyId) { try { app(DestroyCompany::class)->execute([ @@ -134,6 +134,6 @@ class ApiCompanyController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $companyId); + return $this->respondObjectDeleted($companyId); } } diff --git a/app/Http/Controllers/Api/Account/ApiGenderController.php b/app/Http/Controllers/Api/Account/ApiGenderController.php index 7491a095d..c5a38df23 100644 --- a/app/Http/Controllers/Api/Account/ApiGenderController.php +++ b/app/Http/Controllers/Api/Account/ApiGenderController.php @@ -118,7 +118,7 @@ class ApiGenderController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $genderId) + public function destroy(Request $request, int $genderId) { try { app(DestroyGender::class)->execute([ @@ -133,6 +133,6 @@ class ApiGenderController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $genderId); + return $this->respondObjectDeleted($genderId); } } diff --git a/app/Http/Controllers/Api/Account/ApiPlaceController.php b/app/Http/Controllers/Api/Account/ApiPlaceController.php index 044d51ca8..74d50d14a 100644 --- a/app/Http/Controllers/Api/Account/ApiPlaceController.php +++ b/app/Http/Controllers/Api/Account/ApiPlaceController.php @@ -118,7 +118,7 @@ class ApiPlaceController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $placeId) + public function destroy(Request $request, int $placeId) { try { app(DestroyPlace::class)->execute([ @@ -133,6 +133,6 @@ class ApiPlaceController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $placeId); + return $this->respondObjectDeleted($placeId); } } diff --git a/app/Http/Controllers/Api/ApiContactFieldController.php b/app/Http/Controllers/Api/ApiContactFieldController.php index 14f162f4b..6487383ea 100644 --- a/app/Http/Controllers/Api/ApiContactFieldController.php +++ b/app/Http/Controllers/Api/ApiContactFieldController.php @@ -101,7 +101,7 @@ class ApiContactFieldController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $contactFieldId) + public function destroy(Request $request, int $contactFieldId) { try { app(DestroyContactField::class)->execute([ @@ -116,7 +116,7 @@ class ApiContactFieldController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $contactFieldId); + return $this->respondObjectDeleted($contactFieldId); } /** diff --git a/app/Http/Controllers/Api/ApiReminderController.php b/app/Http/Controllers/Api/ApiReminderController.php index 84bfc0535..027e39836 100644 --- a/app/Http/Controllers/Api/ApiReminderController.php +++ b/app/Http/Controllers/Api/ApiReminderController.php @@ -118,7 +118,7 @@ class ApiReminderController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $reminderId) + public function destroy(Request $request, int $reminderId) { try { app(DestroyReminder::class)->execute([ @@ -133,7 +133,7 @@ class ApiReminderController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $reminderId); + return $this->respondObjectDeleted($reminderId); } /** diff --git a/app/Http/Controllers/Api/Contact/ApiAddressController.php b/app/Http/Controllers/Api/Contact/ApiAddressController.php index 2dc9f8078..6499c0908 100644 --- a/app/Http/Controllers/Api/Contact/ApiAddressController.php +++ b/app/Http/Controllers/Api/Contact/ApiAddressController.php @@ -119,7 +119,7 @@ class ApiAddressController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $addressId) + public function destroy(Request $request, int $addressId) { try { app(DestroyAddress::class)->execute([ @@ -134,7 +134,7 @@ class ApiAddressController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $addressId); + return $this->respondObjectDeleted($addressId); } /** diff --git a/app/Http/Controllers/Api/Contact/ApiCallController.php b/app/Http/Controllers/Api/Contact/ApiCallController.php index 13d9c0b55..13b395552 100644 --- a/app/Http/Controllers/Api/Contact/ApiCallController.php +++ b/app/Http/Controllers/Api/Contact/ApiCallController.php @@ -122,7 +122,7 @@ class ApiCallController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $callId) + public function destroy(Request $request, int $callId) { try { app(DestroyCall::class)->execute([ @@ -137,7 +137,7 @@ class ApiCallController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $callId); + return $this->respondObjectDeleted($callId); } /** diff --git a/app/Http/Controllers/Api/Contact/ApiConversationController.php b/app/Http/Controllers/Api/Contact/ApiConversationController.php index bedcb8c24..5a65ac118 100644 --- a/app/Http/Controllers/Api/Contact/ApiConversationController.php +++ b/app/Http/Controllers/Api/Contact/ApiConversationController.php @@ -146,7 +146,7 @@ class ApiConversationController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $conversationId) + public function destroy(Request $request, int $conversationId) { try { app(DestroyConversation::class)->execute([ @@ -161,6 +161,6 @@ class ApiConversationController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $conversationId); + return $this->respondObjectDeleted($conversationId); } } diff --git a/app/Http/Controllers/Api/Contact/ApiDocumentController.php b/app/Http/Controllers/Api/Contact/ApiDocumentController.php index b5eb849a2..b5b14a6f4 100644 --- a/app/Http/Controllers/Api/Contact/ApiDocumentController.php +++ b/app/Http/Controllers/Api/Contact/ApiDocumentController.php @@ -120,7 +120,7 @@ class ApiDocumentController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $documentId) + public function destroy(Request $request, int $documentId) { try { app(DestroyDocument::class)->execute([ @@ -135,6 +135,6 @@ class ApiDocumentController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $documentId); + return $this->respondObjectDeleted($documentId); } } diff --git a/app/Http/Controllers/Api/Contact/ApiLifeEventController.php b/app/Http/Controllers/Api/Contact/ApiLifeEventController.php index fbf7bfc24..d993dcbe4 100644 --- a/app/Http/Controllers/Api/Contact/ApiLifeEventController.php +++ b/app/Http/Controllers/Api/Contact/ApiLifeEventController.php @@ -109,7 +109,7 @@ class ApiLifeEventController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $lifeEventId) + public function destroy(Request $request, int $lifeEventId) { try { app(DestroyLifeEvent::class)->execute([ @@ -120,6 +120,6 @@ class ApiLifeEventController extends ApiController return $this->respondNotFound(); } - return $this->respondObjectDeleted((int) $lifeEventId); + return $this->respondObjectDeleted($lifeEventId); } } diff --git a/app/Http/Controllers/Api/Contact/ApiMessageController.php b/app/Http/Controllers/Api/Contact/ApiMessageController.php index 5b05cbdda..d41ab0531 100644 --- a/app/Http/Controllers/Api/Contact/ApiMessageController.php +++ b/app/Http/Controllers/Api/Contact/ApiMessageController.php @@ -124,6 +124,6 @@ class ApiMessageController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $messageId); + return $this->respondObjectDeleted($messageId); } } diff --git a/app/Http/Controllers/Api/Contact/ApiOccupationController.php b/app/Http/Controllers/Api/Contact/ApiOccupationController.php index 11633dafb..46e742fcc 100644 --- a/app/Http/Controllers/Api/Contact/ApiOccupationController.php +++ b/app/Http/Controllers/Api/Contact/ApiOccupationController.php @@ -118,7 +118,7 @@ class ApiOccupationController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $occupationId) + public function destroy(Request $request, int $occupationId) { try { app(DestroyOccupation::class)->execute([ @@ -133,6 +133,6 @@ class ApiOccupationController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $occupationId); + return $this->respondObjectDeleted($occupationId); } } diff --git a/app/Http/Controllers/Api/Contact/ApiPhotoController.php b/app/Http/Controllers/Api/Contact/ApiPhotoController.php index bea5b26b8..15ce4d78a 100644 --- a/app/Http/Controllers/Api/Contact/ApiPhotoController.php +++ b/app/Http/Controllers/Api/Contact/ApiPhotoController.php @@ -119,7 +119,7 @@ class ApiPhotoController extends ApiController * * @return \Illuminate\Http\JsonResponse */ - public function destroy(Request $request, $photoId) + public function destroy(Request $request, int $photoId) { try { app(DestroyPhoto::class)->execute([ @@ -134,6 +134,6 @@ class ApiPhotoController extends ApiController return $this->respondInvalidQuery(); } - return $this->respondObjectDeleted((int) $photoId); + return $this->respondObjectDeleted($photoId); } } diff --git a/app/Http/Controllers/Auth/InvitationController.php b/app/Http/Controllers/Auth/InvitationController.php index 31092b22e..52439835b 100644 --- a/app/Http/Controllers/Auth/InvitationController.php +++ b/app/Http/Controllers/Auth/InvitationController.php @@ -98,10 +98,13 @@ class InvitationController extends Controller $invitation->delete(); - Auth::guard()->login($user); + /** @var \Illuminate\Contracts\Auth\StatefulGuard */ + $guard = Auth::guard(); + $guard->login($user); - return $this->registered($request, $user) - ?: redirect($this->redirectPath()); + $this->registered($request, $user); + + return redirect($this->redirectPath()); } /** @@ -136,7 +139,7 @@ class InvitationController extends Controller * * @param \Illuminate\Http\Request $request * @param mixed $user - * @return mixed + * @return void */ protected function registered(Request $request, $user) { diff --git a/app/Http/Controllers/Auth/PasswordChangeController.php b/app/Http/Controllers/Auth/PasswordChangeController.php index 72dbdf953..127e016de 100644 --- a/app/Http/Controllers/Auth/PasswordChangeController.php +++ b/app/Http/Controllers/Auth/PasswordChangeController.php @@ -16,6 +16,9 @@ class PasswordChangeController extends Controller { use RedirectsUsers; + /** + * @var string + */ protected $redirectTo = '/settings/security'; /** diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index bbae901b6..a1beb9124 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -102,6 +102,7 @@ class RegisterController extends Controller RequestHelper::ip(), $data['lang'] ); + /** @var User */ $user = $account->users()->first(); if (! $first) { diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index 0325cca1f..87785f3a4 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -20,5 +20,8 @@ class ResetPasswordController extends Controller use ResetsPasswords; + /** + * @var string + */ protected $redirectTo = '/dashboard'; } diff --git a/app/Http/Controllers/DAV/Backend/CardDAV/AddressBook.php b/app/Http/Controllers/DAV/Backend/CardDAV/AddressBook.php index a27dca2ef..df2ffdba7 100644 --- a/app/Http/Controllers/DAV/Backend/CardDAV/AddressBook.php +++ b/app/Http/Controllers/DAV/Backend/CardDAV/AddressBook.php @@ -72,7 +72,7 @@ class AddressBook extends BaseAddressBook if ($carddavBackend instanceof CardDAVBackend) { $date = $carddavBackend->getLastModified(); if (! is_null($date)) { - return $date->timestamp; + return (int) $date->timestamp; } } diff --git a/app/Http/Controllers/DAV/Backend/SyncDAVBackend.php b/app/Http/Controllers/DAV/Backend/SyncDAVBackend.php index 17a053f68..fb99e8193 100644 --- a/app/Http/Controllers/DAV/Backend/SyncDAVBackend.php +++ b/app/Http/Controllers/DAV/Backend/SyncDAVBackend.php @@ -52,6 +52,7 @@ trait SyncDAVBackend */ protected function getSyncToken($syncToken) { + /** @var SyncToken|null */ return SyncToken::where([ 'account_id' => Auth::user()->account_id, 'user_id' => Auth::user()->id, diff --git a/app/Http/Controllers/Settings/MultiFAController.php b/app/Http/Controllers/Settings/MultiFAController.php index c6f3eff3f..2c9752702 100644 --- a/app/Http/Controllers/Settings/MultiFAController.php +++ b/app/Http/Controllers/Settings/MultiFAController.php @@ -13,10 +13,14 @@ class MultiFAController extends Controller { use RedirectsUsers, JsonRespondController; + /** + * @var string + */ protected $redirectTo = '/settings/security'; /** * Session var name to store secret code. + * @var string */ private $SESSION_TFA_SECRET = '2FA_secret'; diff --git a/app/Jobs/AddContactFromVCard.php b/app/Jobs/AddContactFromVCard.php index b0ff35981..0e2214588 100644 --- a/app/Jobs/AddContactFromVCard.php +++ b/app/Jobs/AddContactFromVCard.php @@ -14,15 +14,23 @@ class AddContactFromVCard implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; + /** + * @var ImportJob + */ protected $importJob; + /** + * @var string + */ protected $behaviour; /** * Create a new job instance. * + * @param ImportJob $importJob + * @param string $behaviour * @return void */ - public function __construct(ImportJob $importJob, $behaviour = ImportVCard::BEHAVIOUR_ADD) + public function __construct(ImportJob $importJob, string $behaviour = ImportVCard::BEHAVIOUR_ADD) { $this->importJob = $importJob; $this->behaviour = $behaviour; diff --git a/app/Jobs/ExportAccountAsSQL.php b/app/Jobs/ExportAccountAsSQL.php index 145127c93..8b7cd63ee 100644 --- a/app/Jobs/ExportAccountAsSQL.php +++ b/app/Jobs/ExportAccountAsSQL.php @@ -14,6 +14,9 @@ class ExportAccountAsSQL { use Dispatchable, SerializesModels; + /** + * @var string + */ protected $path = ''; /** diff --git a/app/Models/Account/ImportJob.php b/app/Models/Account/ImportJob.php index bc2e39200..729bb95de 100644 --- a/app/Models/Account/ImportJob.php +++ b/app/Models/Account/ImportJob.php @@ -39,11 +39,15 @@ class ImportJob extends Model /** * The physical vCard file on disk. + * + * @var resource */ public $physicalFile; /** * All individual entries in the vCard file. + * + * @var VCardReader */ public $entries; @@ -157,7 +161,7 @@ class ImportJob extends Model private function getPhysicalFile() { try { - $this->physicalFile = Storage::disk('public')->get($this->filename); + $this->physicalFile = Storage::disk('public')->readStream($this->filename); } catch (FileNotFoundException $exception) { $this->fail(trans('settings.import_vcard_file_not_found')); } @@ -197,6 +201,7 @@ class ImportJob extends Model { while (true) { try { + /** @var VCard|null */ $entry = $this->entries->getNext(); if (! $entry) { // file end diff --git a/app/Models/Contact/Contact.php b/app/Models/Contact/Contact.php index 92c577688..1a357977d 100644 --- a/app/Models/Contact/Contact.php +++ b/app/Models/Contact/Contact.php @@ -3,7 +3,6 @@ namespace App\Models\Contact; use DateTime; -use Carbon\Carbon; use App\Traits\Searchable; use Illuminate\Support\Str; use App\Helpers\LocaleHelper; @@ -12,6 +11,7 @@ use App\Models\Journal\Entry; use function Safe\preg_split; use App\Helpers\StorageHelper; use App\Helpers\WeatherHelper; +use Illuminate\Support\Carbon; use App\Models\Account\Account; use App\Models\Account\Weather; use App\Models\Account\Activity; @@ -35,12 +35,14 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Contracts\Filesystem\FileNotFoundException; /** + * @method static \Illuminate\Database\Eloquent\Builder search() * @property \App\Models\Instance\SpecialDate|null $birthdate */ class Contact extends Model { use Searchable; + /** @var array */ protected $dates = [ 'last_talked_to', 'last_consulted_at', @@ -49,7 +51,11 @@ class Contact extends Model 'updated_at', ]; - // The list of columns we want the Searchable trait to use. + /** + * The list of columns we want the Searchable trait to use. + * + * @var array + */ protected $searchable_columns = [ 'first_name', 'middle_name', @@ -59,7 +65,11 @@ class Contact extends Model 'job', ]; - // The list of columns we want the Searchable trait to select. + /** + * The list of columns we want the Searchable trait to select. + * + * @var array + */ protected $return_from_search = [ 'id', 'first_name', @@ -83,7 +93,7 @@ class Contact extends Model /** * The attributes that are mass assignable. * - * @var array + * @var array */ protected $fillable = [ 'first_name', @@ -114,6 +124,8 @@ class Contact extends Model /** * Eager load account with every contact. + * + * @var array */ protected $with = [ 'account', diff --git a/app/Models/Contact/ContactFieldLabel.php b/app/Models/Contact/ContactFieldLabel.php index 35d877680..d5d2308b5 100644 --- a/app/Models/Contact/ContactFieldLabel.php +++ b/app/Models/Contact/ContactFieldLabel.php @@ -21,6 +21,7 @@ class ContactFieldLabel extends Model protected $table = 'contact_field_labels'; + /** @var array */ public static $standardLabels = [ 'home', 'work', diff --git a/app/Notifications/UserNotified.php b/app/Notifications/UserNotified.php index b05b583e2..ba1aebec6 100644 --- a/app/Notifications/UserNotified.php +++ b/app/Notifications/UserNotified.php @@ -23,14 +23,19 @@ class UserNotified extends LaravelNotification implements ShouldQueue, MailNotif * @var Reminder */ public $reminder; + /** + * @var int|null + */ public $numberDaysBefore; /** * Create a new message instance. * + * @param Reminder $reminder + * @param int|null $numberDaysBefore * @return void */ - public function __construct(Reminder $reminder, $numberDaysBefore) + public function __construct(Reminder $reminder, ?int $numberDaysBefore) { $this->reminder = $reminder; $this->numberDaysBefore = $numberDaysBefore; diff --git a/app/Services/Account/Activity/Activity/AttachContactToActivity.php b/app/Services/Account/Activity/Activity/AttachContactToActivity.php index d1f8ff720..06a2cd680 100644 --- a/app/Services/Account/Activity/Activity/AttachContactToActivity.php +++ b/app/Services/Account/Activity/Activity/AttachContactToActivity.php @@ -53,6 +53,7 @@ class AttachContactToActivity extends BaseService { $this->validate($data); + /** @var Activity */ $activity = Activity::find($data['activity_id']); $this->attach($data, $activity); diff --git a/app/Services/Account/Activity/Activity/UpdateActivity.php b/app/Services/Account/Activity/Activity/UpdateActivity.php index acd8022ed..7f23f4370 100644 --- a/app/Services/Account/Activity/Activity/UpdateActivity.php +++ b/app/Services/Account/Activity/Activity/UpdateActivity.php @@ -72,6 +72,7 @@ class UpdateActivity extends BaseService { $this->validate($data); + /** @var Activity */ $activity = Activity::find($data['activity_id']); $this->update($data, $activity); diff --git a/app/Services/Account/Activity/ActivityType/UpdateActivityType.php b/app/Services/Account/Activity/ActivityType/UpdateActivityType.php index 715996b5f..145bd66af 100644 --- a/app/Services/Account/Activity/ActivityType/UpdateActivityType.php +++ b/app/Services/Account/Activity/ActivityType/UpdateActivityType.php @@ -37,6 +37,7 @@ class UpdateActivityType extends BaseService ActivityTypeCategory::where('account_id', $data['account_id']) ->findOrFail($data['activity_type_category_id']); + /** @var ActivityType */ $activityType = ActivityType::where('account_id', $data['account_id']) ->findOrFail($data['activity_type_id']); diff --git a/app/Services/Account/Activity/ActivityTypeCategory/UpdateActivityTypeCategory.php b/app/Services/Account/Activity/ActivityTypeCategory/UpdateActivityTypeCategory.php index e1dfbd6a0..fbcf01047 100644 --- a/app/Services/Account/Activity/ActivityTypeCategory/UpdateActivityTypeCategory.php +++ b/app/Services/Account/Activity/ActivityTypeCategory/UpdateActivityTypeCategory.php @@ -32,6 +32,7 @@ class UpdateActivityTypeCategory extends BaseService { $this->validate($data); + /** @var ActivityTypeCategory */ $activityTypeCategory = ActivityTypeCategory::where('account_id', $data['account_id']) ->findOrFail($data['activity_type_category_id']); diff --git a/app/Services/Account/Company/UpdateCompany.php b/app/Services/Account/Company/UpdateCompany.php index a605faf16..4c3b3480c 100644 --- a/app/Services/Account/Company/UpdateCompany.php +++ b/app/Services/Account/Company/UpdateCompany.php @@ -33,6 +33,7 @@ class UpdateCompany extends BaseService { $this->validate($data); + /** @var Company */ $company = Company::where('account_id', $data['account_id']) ->findOrFail($data['company_id']); diff --git a/app/Services/Account/Gender/UpdateGender.php b/app/Services/Account/Gender/UpdateGender.php index bafa1ac49..26064cd29 100644 --- a/app/Services/Account/Gender/UpdateGender.php +++ b/app/Services/Account/Gender/UpdateGender.php @@ -36,6 +36,7 @@ class UpdateGender extends BaseService { $this->validate($data); + /** @var Gender */ $gender = Gender::where('account_id', $data['account_id']) ->findOrFail($data['gender_id']); diff --git a/app/Services/Account/LifeEvent/LifeEventType/UpdateLifeEventType.php b/app/Services/Account/LifeEvent/LifeEventType/UpdateLifeEventType.php index 9f45fecc4..ac4a40505 100644 --- a/app/Services/Account/LifeEvent/LifeEventType/UpdateLifeEventType.php +++ b/app/Services/Account/LifeEvent/LifeEventType/UpdateLifeEventType.php @@ -36,6 +36,7 @@ class UpdateLifeEventType extends BaseService LifeEventCategory::where('account_id', $data['account_id']) ->findOrFail($data['life_event_category_id']); + /** @var LifeEventType */ $lifeEventType = LifeEventType::where('account_id', $data['account_id']) ->findOrFail($data['life_event_type_id']); diff --git a/app/Services/Account/Place/UpdatePlace.php b/app/Services/Account/Place/UpdatePlace.php index a44f87186..644fab027 100644 --- a/app/Services/Account/Place/UpdatePlace.php +++ b/app/Services/Account/Place/UpdatePlace.php @@ -40,6 +40,7 @@ class UpdatePlace extends BaseService { $this->validate($data); + /** @var Place */ $place = Place::where('account_id', $data['account_id']) ->findOrFail($data['place_id']); diff --git a/app/Services/Account/Settings/ExportAccount.php b/app/Services/Account/Settings/ExportAccount.php index 842b85c68..8a2e3e363 100644 --- a/app/Services/Account/Settings/ExportAccount.php +++ b/app/Services/Account/Settings/ExportAccount.php @@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Storage; class ExportAccount extends BaseService { + /** @var string */ protected $tempFileName; /** diff --git a/app/Services/Contact/Address/UpdateAddress.php b/app/Services/Contact/Address/UpdateAddress.php index 2507e9437..44a3627b0 100644 --- a/app/Services/Contact/Address/UpdateAddress.php +++ b/app/Services/Contact/Address/UpdateAddress.php @@ -44,6 +44,7 @@ class UpdateAddress extends BaseService { $this->validate($data); + /** @var Address */ $address = Address::where('account_id', $data['account_id']) ->where('contact_id', $data['contact_id']) ->findOrFail($data['address_id']); diff --git a/app/Services/Contact/Avatar/GetGravatar.php b/app/Services/Contact/Avatar/GetGravatar.php index 5a6944d27..5e79399cb 100644 --- a/app/Services/Contact/Avatar/GetGravatar.php +++ b/app/Services/Contact/Avatar/GetGravatar.php @@ -27,6 +27,7 @@ class GetGravatar extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::findOrFail($data['contact_id']); // prevent timestamp update diff --git a/app/Services/Contact/Avatar/UpdateAvatar.php b/app/Services/Contact/Avatar/UpdateAvatar.php index b615a83d2..00ee0fabf 100644 --- a/app/Services/Contact/Avatar/UpdateAvatar.php +++ b/app/Services/Contact/Avatar/UpdateAvatar.php @@ -45,6 +45,7 @@ class UpdateAvatar extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Call/UpdateCall.php b/app/Services/Contact/Call/UpdateCall.php index 736eae189..01c7d80e7 100644 --- a/app/Services/Contact/Call/UpdateCall.php +++ b/app/Services/Contact/Call/UpdateCall.php @@ -35,6 +35,7 @@ class UpdateCall extends BaseService { $this->validate($data); + /** @var Call */ $call = Call::where('account_id', $data['account_id']) ->findOrFail($data['call_id']); diff --git a/app/Services/Contact/Contact/DeleteMeContact.php b/app/Services/Contact/Contact/DeleteMeContact.php index 3abbe46c8..c52042a34 100644 --- a/app/Services/Contact/Contact/DeleteMeContact.php +++ b/app/Services/Contact/Contact/DeleteMeContact.php @@ -31,6 +31,7 @@ class DeleteMeContact extends BaseService { $this->validate($data); + /** @var User */ $user = User::where('account_id', $data['account_id']) ->findOrFail($data['user_id']); diff --git a/app/Services/Contact/Contact/SetMeContact.php b/app/Services/Contact/Contact/SetMeContact.php index 5e43f2f6a..b757bfbfd 100644 --- a/app/Services/Contact/Contact/SetMeContact.php +++ b/app/Services/Contact/Contact/SetMeContact.php @@ -33,6 +33,7 @@ class SetMeContact extends BaseService { $this->validate($data); + /** @var User */ $user = User::where('account_id', $data['account_id']) ->findOrFail($data['user_id']); @@ -40,6 +41,7 @@ class SetMeContact extends BaseService abort(402); } + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Contact/UpdateBirthdayInformation.php b/app/Services/Contact/Contact/UpdateBirthdayInformation.php index 7163bba5a..989ea4047 100644 --- a/app/Services/Contact/Contact/UpdateBirthdayInformation.php +++ b/app/Services/Contact/Contact/UpdateBirthdayInformation.php @@ -68,6 +68,7 @@ class UpdateBirthdayInformation extends BaseService $this->data = $data; $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Contact/UpdateContact.php b/app/Services/Contact/Contact/UpdateContact.php index eec722abe..61c5e55fc 100644 --- a/app/Services/Contact/Contact/UpdateContact.php +++ b/app/Services/Contact/Contact/UpdateContact.php @@ -52,6 +52,7 @@ class UpdateContact extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Contact/UpdateContactFoodPreferences.php b/app/Services/Contact/Contact/UpdateContactFoodPreferences.php index 61110f61d..6d3809f17 100644 --- a/app/Services/Contact/Contact/UpdateContactFoodPreferences.php +++ b/app/Services/Contact/Contact/UpdateContactFoodPreferences.php @@ -32,6 +32,7 @@ class UpdateContactFoodPreferences extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Contact/UpdateContactIntroduction.php b/app/Services/Contact/Contact/UpdateContactIntroduction.php index 0e8b80332..8db454c08 100644 --- a/app/Services/Contact/Contact/UpdateContactIntroduction.php +++ b/app/Services/Contact/Contact/UpdateContactIntroduction.php @@ -73,6 +73,7 @@ class UpdateContactIntroduction extends BaseService $this->data = $data; $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Contact/UpdateDeceasedInformation.php b/app/Services/Contact/Contact/UpdateDeceasedInformation.php index e2f0ffc2d..64a73253f 100644 --- a/app/Services/Contact/Contact/UpdateDeceasedInformation.php +++ b/app/Services/Contact/Contact/UpdateDeceasedInformation.php @@ -40,6 +40,7 @@ class UpdateDeceasedInformation extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Contact/UpdateWorkInformation.php b/app/Services/Contact/Contact/UpdateWorkInformation.php index 427bdeac7..b3d15edeb 100644 --- a/app/Services/Contact/Contact/UpdateWorkInformation.php +++ b/app/Services/Contact/Contact/UpdateWorkInformation.php @@ -37,6 +37,7 @@ class UpdateWorkInformation extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/ContactField/UpdateContactField.php b/app/Services/Contact/ContactField/UpdateContactField.php index 444417f35..8d15d3268 100644 --- a/app/Services/Contact/ContactField/UpdateContactField.php +++ b/app/Services/Contact/ContactField/UpdateContactField.php @@ -37,6 +37,7 @@ class UpdateContactField extends BaseService { $this->validate($data); + /** @var ContactField */ $contactField = ContactField::where('account_id', $data['account_id']) ->findOrFail($data['contact_field_id']); diff --git a/app/Services/Contact/Conversation/UpdateConversation.php b/app/Services/Contact/Conversation/UpdateConversation.php index e26f654cd..bba56d012 100644 --- a/app/Services/Contact/Conversation/UpdateConversation.php +++ b/app/Services/Contact/Conversation/UpdateConversation.php @@ -38,6 +38,7 @@ class UpdateConversation extends BaseService { $this->validate($data); + /** @var Conversation */ $conversation = Conversation::where('account_id', $data['account_id']) ->findOrFail($data['conversation_id']); diff --git a/app/Services/Contact/Conversation/UpdateMessage.php b/app/Services/Contact/Conversation/UpdateMessage.php index 126274883..95b5622dd 100644 --- a/app/Services/Contact/Conversation/UpdateMessage.php +++ b/app/Services/Contact/Conversation/UpdateMessage.php @@ -49,6 +49,7 @@ class UpdateMessage extends BaseService ->where('account_id', $data['account_id']) ->findOrFail($data['conversation_id']); + /** @var Message */ $message = Message::where('contact_id', $data['contact_id']) ->where('conversation_id', $data['conversation_id']) ->where('account_id', $data['account_id']) diff --git a/app/Services/Contact/Description/ClearPersonalDescription.php b/app/Services/Contact/Description/ClearPersonalDescription.php index 5f25dfab9..350389de2 100644 --- a/app/Services/Contact/Description/ClearPersonalDescription.php +++ b/app/Services/Contact/Description/ClearPersonalDescription.php @@ -34,6 +34,7 @@ class ClearPersonalDescription extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/Description/SetPersonalDescription.php b/app/Services/Contact/Description/SetPersonalDescription.php index 1cebced02..10001f0cf 100644 --- a/app/Services/Contact/Description/SetPersonalDescription.php +++ b/app/Services/Contact/Description/SetPersonalDescription.php @@ -38,6 +38,7 @@ class SetPersonalDescription extends BaseService { $this->validate($data); + /** @var Contact */ $contact = Contact::where('account_id', $data['account_id']) ->findOrFail($data['contact_id']); diff --git a/app/Services/Contact/LifeEvent/UpdateLifeEvent.php b/app/Services/Contact/LifeEvent/UpdateLifeEvent.php index 28c72cef4..13d8e1846 100644 --- a/app/Services/Contact/LifeEvent/UpdateLifeEvent.php +++ b/app/Services/Contact/LifeEvent/UpdateLifeEvent.php @@ -35,6 +35,7 @@ class UpdateLifeEvent extends BaseService { $this->validate($data); + /** @var LifeEvent */ $lifeEvent = LifeEvent::where('account_id', $data['account_id']) ->findOrFail($data['life_event_id']); diff --git a/app/Services/Contact/Occupation/UpdateOccupation.php b/app/Services/Contact/Occupation/UpdateOccupation.php index 6f51958db..3a0d04146 100644 --- a/app/Services/Contact/Occupation/UpdateOccupation.php +++ b/app/Services/Contact/Occupation/UpdateOccupation.php @@ -43,6 +43,7 @@ class UpdateOccupation extends BaseService { $this->validate($data); + /** @var Occupation */ $occupation = Occupation::where('account_id', $data['account_id']) ->where('contact_id', $data['contact_id']) ->where('company_id', $data['company_id']) diff --git a/app/Services/Contact/Reminder/UpdateReminder.php b/app/Services/Contact/Reminder/UpdateReminder.php index 6e7499167..f37a8b31b 100644 --- a/app/Services/Contact/Reminder/UpdateReminder.php +++ b/app/Services/Contact/Reminder/UpdateReminder.php @@ -41,6 +41,7 @@ class UpdateReminder extends BaseService { $this->validate($data); + /** @var Reminder */ $reminder = Reminder::where('account_id', $data['account_id']) ->where('contact_id', $data['contact_id']) ->findOrFail($data['reminder_id']); diff --git a/app/Services/Contact/Tag/UpdateTag.php b/app/Services/Contact/Tag/UpdateTag.php index 5d9e096f1..b92815c94 100644 --- a/app/Services/Contact/Tag/UpdateTag.php +++ b/app/Services/Contact/Tag/UpdateTag.php @@ -33,6 +33,7 @@ class UpdateTag extends BaseService { $this->validate($data); + /** @var Tag */ $tag = Tag::where('account_id', $data['account_id']) ->findOrFail($data['tag_id']); diff --git a/app/Services/Instance/Geolocalization/GetGPSCoordinate.php b/app/Services/Instance/Geolocalization/GetGPSCoordinate.php index 96b35e837..4b842a9e2 100644 --- a/app/Services/Instance/Geolocalization/GetGPSCoordinate.php +++ b/app/Services/Instance/Geolocalization/GetGPSCoordinate.php @@ -12,6 +12,7 @@ use GuzzleHttp\Exception\ClientException; class GetGPSCoordinate extends BaseService { + /** @var GuzzleClient */ protected $client; /** diff --git a/app/Services/Instance/Weather/GetWeatherInformation.php b/app/Services/Instance/Weather/GetWeatherInformation.php index e3e0e396e..8e0d51d8f 100644 --- a/app/Services/Instance/Weather/GetWeatherInformation.php +++ b/app/Services/Instance/Weather/GetWeatherInformation.php @@ -15,6 +15,7 @@ use App\Services\Instance\Geolocalization\GetGPSCoordinate; class GetWeatherInformation extends BaseService { + /** @var GuzzleClient */ protected $client; /** diff --git a/app/Services/Task/UpdateTask.php b/app/Services/Task/UpdateTask.php index a999ce866..a7d1a5a83 100644 --- a/app/Services/Task/UpdateTask.php +++ b/app/Services/Task/UpdateTask.php @@ -35,10 +35,12 @@ class UpdateTask extends BaseService $this->validate($data); if (! empty($data['contact_id'])) { + /** @var Task */ $task = Task::where('account_id', $data['account_id']) ->where('contact_id', $data['contact_id']) ->findOrFail($data['task_id']); } else { + /** @var Task */ $task = Task::where('account_id', $data['account_id']) ->findOrFail($data['task_id']); } diff --git a/app/Services/User/EmailChange.php b/app/Services/User/EmailChange.php index 00511bb45..d378a7603 100644 --- a/app/Services/User/EmailChange.php +++ b/app/Services/User/EmailChange.php @@ -32,6 +32,7 @@ class EmailChange extends BaseService { $this->validate($data); + /** @var User */ $user = User::where('account_id', $data['account_id']) ->findOrFail($data['user_id']); diff --git a/app/Services/User/UpdateViewPreference.php b/app/Services/User/UpdateViewPreference.php index 2f5225e93..66236945f 100644 --- a/app/Services/User/UpdateViewPreference.php +++ b/app/Services/User/UpdateViewPreference.php @@ -33,6 +33,7 @@ class UpdateViewPreference extends BaseService $this->validate($data); try { + /** @var User */ $user = User::where('account_id', $data['account_id']) ->findOrFail($data['user_id']); } catch (ModelNotFoundException $e) { diff --git a/app/Services/VCard/ImportVCard.php b/app/Services/VCard/ImportVCard.php index 9b92149d5..64d1ea71b 100644 --- a/app/Services/VCard/ImportVCard.php +++ b/app/Services/VCard/ImportVCard.php @@ -42,6 +42,7 @@ class ImportVCard extends BaseService public const BEHAVIOUR_ADD = 'behaviour_add'; public const BEHAVIOUR_REPLACE = 'behaviour_replace'; + /** @var array */ protected $errorResults = [ 'ERROR_PARSER' => 'import_vcard_parse_error', 'ERROR_CONTACT_EXIST' => 'import_vcard_contact_exist', @@ -81,7 +82,7 @@ class ImportVCard extends BaseService /** * The genders that will be associated with imported contacts. * - * @var array[Gender] + * @var array */ protected $genders; diff --git a/app/Traits/DAVFormat.php b/app/Traits/DAVFormat.php index 026558ed5..1f741d63d 100644 --- a/app/Traits/DAVFormat.php +++ b/app/Traits/DAVFormat.php @@ -10,8 +10,8 @@ trait DAVFormat * @param null|string $value * @return null|string */ - private function formatValue($value) + private function formatValue(?string $value): ?string { - return ! empty($value) ? str_replace('\;', ';', trim((string) $value)) : null; + return ! empty($value) ? str_replace('\;', ';', trim($value)) : null; } } diff --git a/azure-pipelines.yml b/azure-pipelines.yml index d1a69643d..d2f28c81a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -31,7 +31,7 @@ stages: jobs: - template: .azure/job-build.yml - template: .azure/job-tests.yml -# - template: .azure/job-analyzers.yml + - template: .azure/job-analyzers.yml - template: .azure/job-test-browser.yml - template: .azure/job-reporting.yml - template: .azure/job-test-migrations.yml diff --git a/database/migrations/2019_02_17_112452_add_default_gender.php b/database/migrations/2019_02_17_112452_add_default_gender.php index 3f1d9262c..8ed6e0539 100644 --- a/database/migrations/2019_02_17_112452_add_default_gender.php +++ b/database/migrations/2019_02_17_112452_add_default_gender.php @@ -26,6 +26,7 @@ class AddDefaultGender extends Migration ->orderBy('id') ->chunk(200, function ($genders) { foreach ($genders as $gender) { + /** @var Account */ $account = Account::find($gender->account_id); if ($account) { $account->default_gender_id = $gender->id; diff --git a/database/migrations/2019_12_17_024553_add_foreign_keys.php b/database/migrations/2019_12_17_024553_add_foreign_keys.php index e3d582c52..991023a4f 100644 --- a/database/migrations/2019_12_17_024553_add_foreign_keys.php +++ b/database/migrations/2019_12_17_024553_add_foreign_keys.php @@ -32,8 +32,11 @@ use Illuminate\Database\Eloquent\ModelNotFoundException; class AddForeignKeys extends Migration { + /** @var array */ private $existingAccounts; + /** @var array */ private $existingUsers; + /** @var array */ private $existingContacts; /** diff --git a/database/migrations/2020_03_22_132429_rename_birthday_reminder_title_deceased.php b/database/migrations/2020_03_22_132429_rename_birthday_reminder_title_deceased.php index 7d54d6861..fd28d57f8 100644 --- a/database/migrations/2020_03_22_132429_rename_birthday_reminder_title_deceased.php +++ b/database/migrations/2020_03_22_132429_rename_birthday_reminder_title_deceased.php @@ -13,7 +13,9 @@ class RenameBirthdayReminderTitleDeceased extends Migration */ public function up() { - $contacts = Contact::cursor()->filter(function ($contact) { + /** @var Illuminate\Support\LazyCollection */ + $cursor = Contact::cursor(); + $contacts = $cursor->filter(function ($contact) { return $contact->is_dead && ! empty($contact->birthday_reminder_id); }); diff --git a/database/migrations/2020_04_24_185810_remove_duplicate_currency.php b/database/migrations/2020_04_24_185810_remove_duplicate_currency.php index 2eaced1c4..9db3fd018 100644 --- a/database/migrations/2020_04_24_185810_remove_duplicate_currency.php +++ b/database/migrations/2020_04_24_185810_remove_duplicate_currency.php @@ -2,6 +2,7 @@ use App\Models\User\User; use App\Models\Settings\Currency; +use Illuminate\Support\Facades\DB; use Illuminate\Database\Migrations\Migration; class RemoveDuplicateCurrency extends Migration diff --git a/phpstan.neon b/phpstan.neon index f405eaad1..9a9d9797b 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -31,6 +31,8 @@ parameters: path: */Helpers/AuditLogHelper.php - message: '#Call to an undefined method Illuminate\\Support\\HigherOrderCollectionProxy::delete\(\)\.#' path: */Models/Contact/Reminder.php + - message: '#Property App\\Models\\Contact\\Contact::\$avatar_photo_id \(int\) does not accept null\.#' + path: */Services/Contact/Avatar/UpdateAvatar.php excludes_analyse: - */app/Helpers/ComposerScripts.php diff --git a/psalm.xml b/psalm.xml index e5c0588b7..6df09c757 100644 --- a/psalm.xml +++ b/psalm.xml @@ -28,9 +28,8 @@ - - - + + @@ -47,7 +46,7 @@ - + @@ -85,6 +84,7 @@ + @@ -92,13 +92,18 @@ + + + - + + + @@ -112,18 +117,6 @@ - - - - - - - - - - - - @@ -143,6 +136,17 @@ + + + + + + + + + + + diff --git a/tests/Unit/Models/ImportJobTest.php b/tests/Unit/Models/ImportJobTest.php index 09ead727f..8c7b93a3b 100644 --- a/tests/Unit/Models/ImportJobTest.php +++ b/tests/Unit/Models/ImportJobTest.php @@ -144,10 +144,7 @@ END:VCARD $this->assertNull($importJob->physicalFile); $this->invokePrivateMethod($importJob, 'getPhysicalFile'); - $this->assertEquals( - 'fakeContent', - $importJob->physicalFile - ); + $this->assertIsResource($importJob->physicalFile); } /** @test */