mirror of
https://github.com/karatektus/pl_mail.git
synced 2026-10-25 01:54:10 +00:00
`attachments` was in EmailPatchApplier::DRAFT_PROPERTIES, so the patch was accepted, and JmapDraftWriter::update() never read the key. Email/set answered `updated`, nothing was stored, and a following Email/get showed an empty list and hasAttachment: false — while a subject in the same patch had applied. A phone composer, which autosaves and so always has a draft before a file is picked, had to delete and recreate the draft to attach anything, handing the user a new Email id every time. Update now goes through the same attachment path create does, with JMAP whole-value semantics: the array is the complete set the draft should end up with, a part left out is removed (bytes as well as row), and a part re-listed by the `p-` blobId Email/get handed out is kept where it is — same id, no second upload of bytes the server already holds. A rename on such a part is applied rather than ignored, because filename reaches the download endpoint and the outgoing MIME part. create() and update() share one implementation rather than two copies of blob resolution: create is the whole-value case with no existing parts. That also makes create refuse a non-array `attachments` instead of ignoring it, and makes both paths derive hasAttachment through DraftAttachmentService::syncFlag() rather than assigning it. A blobId that will not resolve — malformed, expired, or another account's — is refused with invalidProperties, and the plan is built before a byte is written, so a refused update leaves the draft exactly as it was, subject included. phpstan-baseline.neon loses one entry (the `$stored > 0` comparison went with the rewrite); none were added.
720 lines
30 KiB
Plaintext
720 lines
30 KiB
Plaintext
parameters:
|
|
ignoreErrors:
|
|
-
|
|
message: '#^Call to an undefined method Webklex\\PHPIMAP\\Connection\\Protocols\\ProtocolInterface\:\:nextLine\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: src/Command/Imap/ImapIdleCommand.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between true and false will always evaluate to false\.$#'
|
|
identifier: identical.alwaysFalse
|
|
count: 2
|
|
path: src/Command/Imap/ImapIdleCommand.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between false and true will always evaluate to false\.$#'
|
|
identifier: identical.alwaysFalse
|
|
count: 1
|
|
path: src/Command/Imap/ImapSuperviseCommand.php
|
|
|
|
-
|
|
message: '#^Parameter \#2 \$options of method Webklex\\PHPIMAP\\Folder\:\:appendMessage\(\) expects array\|null, string given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Command/Imap/ImapTestCommand.php
|
|
|
|
-
|
|
message: '#^Parameter \#3 \$internal_date of method Webklex\\PHPIMAP\\Folder\:\:appendMessage\(\) expects Carbon\\Carbon\|string\|null, DateTimeImmutable given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Command/Imap/ImapTestCommand.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between false and true will always evaluate to false\.$#'
|
|
identifier: identical.alwaysFalse
|
|
count: 1
|
|
path: src/Command/Test/SeedTestEmailCommand.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between true and true will always evaluate to true\.$#'
|
|
identifier: identical.alwaysTrue
|
|
count: 1
|
|
path: src/Command/Test/SeedTestEmailCommand.php
|
|
|
|
-
|
|
message: '#^PHPDoc tag @param references unknown parameter\: \$assign$#'
|
|
identifier: parameter.notFound
|
|
count: 1
|
|
path: src/Controller/Admin/IntegrationProviderController.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$token of method League\\OAuth2\\Client\\Provider\\AbstractProvider\:\:getResourceOwner\(\) expects League\\OAuth2\\Client\\Token\\AccessToken, League\\OAuth2\\Client\\Token\\AccessTokenInterface given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Controller/Auth/OAuthController.php
|
|
|
|
|
|
|
|
-
|
|
message: '#^Constant App\\Controller\\Mail\\ComposeController\:\:INLINE_FRAME is unused\.$#'
|
|
identifier: classConstant.unused
|
|
count: 1
|
|
path: src/Controller/Mail/ComposeController.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between null and App\\Entity\\Mail\\Account will always evaluate to false\.$#'
|
|
identifier: identical.alwaysFalse
|
|
count: 1
|
|
path: src/Controller/Mail/ComposeController.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Label\\Label\:\:\$usr \(App\\Entity\\User\\User\|null\) does not accept Symfony\\Component\\Security\\Core\\User\\UserInterface\|null\.$#'
|
|
identifier: assign.propertyType
|
|
count: 1
|
|
path: src/Controller/Mail/LabelController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Mail\\MailController\:\:\$mailboxRepository is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Mail/MailController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Mail\\MailController\:\:\$messageRepository is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Mail/MailController.php
|
|
|
|
-
|
|
message: '#^Instantiating DateTimeImmutable with in 1 day produces an error\: The timezone could not be found in the database$#'
|
|
identifier: new.dateTimeImmutable
|
|
count: 1
|
|
path: src/Controller/Mail/ThreadStatusController.php
|
|
|
|
|
|
-
|
|
message: '#^Attribute class Symfony\\Component\\HttpKernel\\Attribute\\MapEntity does not exist\.$#'
|
|
identifier: attribute.notFound
|
|
count: 2
|
|
path: src/Controller/Onboarding/OnboardingController.php
|
|
|
|
-
|
|
message: '#^Parameter \#2 \$user of method App\\Service\\Mail\\AccountCreator\:\:create\(\) expects App\\Entity\\User\\User, Symfony\\Component\\Security\\Core\\User\\UserInterface\|null given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Controller/Settings/AccountController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Settings\\AccountController\:\:\$aliasSeeder is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Settings/AccountController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Settings\\AccountController\:\:\$graphSubscriptionManager is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Settings/AccountController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Settings\\AccountController\:\:\$logger is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Settings/AccountController.php
|
|
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$user of method App\\Repository\\Mail\\MessageRepository\:\:countMatchingForUser\(\) expects App\\Entity\\User\\User, Symfony\\Component\\Security\\Core\\User\\UserInterface\|null given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Controller/Settings/MailRuleController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Settings\\MailRuleController\:\:\$executor is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Settings/MailRuleController.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Rule\\MailRule\:\:\$usr \(App\\Entity\\User\\User\|null\) does not accept Symfony\\Component\\Security\\Core\\User\\UserInterface\|null\.$#'
|
|
identifier: assign.propertyType
|
|
count: 1
|
|
path: src/Controller/Settings/MailRuleController.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Symfony\\Component\\HttpFoundation\\Session\\SessionInterface\:\:getFlashBag\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: src/Controller/Settings/SettingsController.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Symfony\\Component\\Security\\Core\\User\\UserInterface\:\:\$locale\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: src/Controller/Settings/SettingsController.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$user of method App\\Service\\User\\ProfileSectionViewData\:\:build\(\) expects App\\Entity\\User\\User, Symfony\\Component\\Security\\Core\\User\\UserInterface\|null given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Controller/Settings/SettingsController.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$user of method App\\Service\\User\\TwoFactor\\SecuritySectionViewData\:\:build\(\) expects App\\Entity\\User\\User, Symfony\\Component\\Security\\Core\\User\\UserInterface\|null given\.$#'
|
|
identifier: argument.type
|
|
count: 1
|
|
path: src/Controller/Settings/SettingsController.php
|
|
|
|
-
|
|
message: '#^Property App\\Controller\\Settings\\SettingsController\:\:\$pushSubscriptionRegistry is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Controller/Settings/SettingsController.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Symfony\\Component\\HttpFoundation\\Session\\SessionInterface\:\:getFlashBag\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 2
|
|
path: src/Controller/Settings/TwoFactorController.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Symfony\\Contracts\\Translation\\TranslatorInterface\:\:setLocale\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: src/Controller/Setup/InstallController.php
|
|
|
|
-
|
|
message: '#^Match arm comparison between \$this\(App\\Domain\\Enum\\Integration\\Provider\)&App\\Domain\\Enum\\Integration\\Provider\:\:Dropbox and App\\Domain\\Enum\\Integration\\Provider\:\:Dropbox is always true\.$#'
|
|
identifier: match.alwaysTrue
|
|
count: 1
|
|
path: src/Domain/Enum/Integration/Provider.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\Calendar\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/Calendar.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEvent\:\:\$calendar type mapping mismatch\: property can contain App\\Entity\\Calendar\\Calendar\|null but database expects App\\Entity\\Calendar\\Calendar\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEvent.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEvent\:\:\$endsAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEvent.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEvent\:\:\$startsAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEvent.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEvent\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEvent.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEventOccurrence\:\:\$calendar type mapping mismatch\: property can contain App\\Entity\\Calendar\\Calendar\|null but database expects App\\Entity\\Calendar\\Calendar\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEventOccurrence.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEventOccurrence\:\:\$endsAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEventOccurrence.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEventOccurrence\:\:\$event type mapping mismatch\: property can contain App\\Entity\\Calendar\\CalendarEvent\|null but database expects App\\Entity\\Calendar\\CalendarEvent\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEventOccurrence.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEventOccurrence\:\:\$recurrenceId type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEventOccurrence.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEventOccurrence\:\:\$startsAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEventOccurrence.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\CalendarEventOccurrence\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/CalendarEventOccurrence.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\EventSourceLink\:\:\$event type mapping mismatch\: property can contain App\\Entity\\Calendar\\CalendarEvent\|null but database expects App\\Entity\\Calendar\\CalendarEvent\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/EventSourceLink.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\EventSourceLink\:\:\$message type mapping mismatch\: property can contain App\\Entity\\Mail\\Message\|null but database expects App\\Entity\\Mail\\Message\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/EventSourceLink.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Calendar\\EventSuppression\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Calendar/EventSuppression.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Label\\Label\:\:\$name type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Label/Label.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Label\\Label\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Label/Label.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Label\\LabelBinding\:\:\$account type mapping mismatch\: property can contain App\\Entity\\Mail\\Account\|null but database expects App\\Entity\\Mail\\Account\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Label/LabelBinding.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Label\\LabelBinding\:\:\$label type mapping mismatch\: property can contain App\\Entity\\Label\\Label\|null but database expects App\\Entity\\Label\\Label\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Label/LabelBinding.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Account\:\:\$authType type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Account.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Account\:\:\$isActive type mapping mismatch\: property can contain bool\|null but database expects bool\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Account.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Account\:\:\$username type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Account.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Account\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Mail/Account.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Contact\:\:\$email type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Contact.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Contact\:\:\$firstSeenAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Contact.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Contact\:\:\$lastSeenAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Contact.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Contact\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Mail/Contact.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\EmailAlias\:\:\$account type mapping mismatch\: property can contain App\\Entity\\Mail\\Account\|null but database expects App\\Entity\\Mail\\Account\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Mail/EmailAlias.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Mailbox\:\:\$account type mapping mismatch\: property can contain App\\Entity\\Mail\\Account\|null but database expects App\\Entity\\Mail\\Account\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Mail/Mailbox.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Mailbox\:\:\$fullPath type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Mailbox.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Mailbox\:\:\$isSyncEnabled type mapping mismatch\: property can contain bool\|null but database expects bool\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Mailbox.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Mailbox\:\:\$name type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Mailbox.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\Message\:\:\$hasAttachments type mapping mismatch\: property can contain bool\|null but database expects bool\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/Message.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessagePart\:\:\$contentType type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessagePart.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessagePart\:\:\$disposition type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessagePart.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessagePart\:\:\$isInline type mapping mismatch\: property can contain bool\|null but database expects bool\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessagePart.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessagePart\:\:\$message type mapping mismatch\: property can contain App\\Entity\\Mail\\Message\|null but database expects App\\Entity\\Mail\\Message\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Mail/MessagePart.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessageThread\:\:\$account type mapping mismatch\: property can contain App\\Entity\\Mail\\Account\|null but database expects App\\Entity\\Mail\\Account\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Mail/MessageThread.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessageThread\:\:\$messageCount type mapping mismatch\: property can contain int\|null but database expects int\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessageThread.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessageThread\:\:\$normalizedSubject type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessageThread.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessageThread\:\:\$threadingMethod type mapping mismatch\: property can contain App\\Domain\\Enum\\Mail\\ThreadingMethod\|null but database expects App\\Domain\\Enum\\Mail\\ThreadingMethod\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessageThread.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Mail\\MessageThread\:\:\$unreadCount type mapping mismatch\: property can contain int\|null but database expects int\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Mail/MessageThread.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Monitoring\\ProcessHeartbeat\:\:\$lastBeatAt type mapping mismatch\: property can contain DateTimeImmutable\|null but database expects DateTimeImmutable\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Monitoring/ProcessHeartbeat.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Rule\\MailRule\:\:\$name type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/Rule/MailRule.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\Rule\\MailRule\:\:\$usr type mapping mismatch\: property can contain App\\Entity\\User\\User\|null but database expects App\\Entity\\User\\User\.$#'
|
|
identifier: doctrine.associationType
|
|
count: 1
|
|
path: src/Entity/Rule/MailRule.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\User\\User\:\:\$email type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/User/User.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\User\\User\:\:\$nameFirst type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/User/User.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\User\\User\:\:\$nameLast type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/User/User.php
|
|
|
|
-
|
|
message: '#^Property App\\Entity\\User\\User\:\:\$password type mapping mismatch\: property can contain string\|null but database expects string\.$#'
|
|
identifier: doctrine.columnType
|
|
count: 1
|
|
path: src/Entity/User/User.php
|
|
|
|
-
|
|
message: '#^Offset ''\\\\Archive''\|''\\\\Trash'' on array\{\\Trash\: array\{''Trash'', ''Deleted'', ''Deleted Items'', ''Deleted Messages''\}, \\Archive\: array\{''Archive'', ''Archives''\}\} on left side of \?\? always exists and is not nullable\.$#'
|
|
identifier: nullCoalesce.offset
|
|
count: 1
|
|
path: src/Infrastructure/Messaging/Handler/ApplyImapFlagsHandler.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between true and 0\|1 will always evaluate to false\.$#'
|
|
identifier: identical.alwaysFalse
|
|
count: 1
|
|
path: src/Jmap/Controller/JmapEventSourceController.php
|
|
|
|
-
|
|
message: '#^Method App\\Jmap\\Mail\\EmailPatchApplier\:\:currentMailboxIds\(\) should return array\<string, bool\> but returns array\<int, true\>\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: src/Jmap/Mail/EmailPatchApplier.php
|
|
|
|
-
|
|
message: '#^Property App\\Jmap\\Mail\\EmailPatchApplier\:\:\$labelRepository is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Jmap/Mail/EmailPatchApplier.php
|
|
|
|
-
|
|
message: '#^Method App\\Jmap\\Mapper\\EmailMapper\:\:mailboxIds\(\) never returns array\<string, bool\> so it can be removed from the return type\.$#'
|
|
identifier: return.unusedType
|
|
count: 1
|
|
path: src/Jmap/Mapper/EmailMapper.php
|
|
|
|
-
|
|
message: '#^Method App\\Jmap\\Mapper\\EmailMapper\:\:mailboxIds\(\) should return array\<string, bool\>\|stdClass but returns array\<int, bool\>\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: src/Jmap/Mapper/EmailMapper.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$array \(list\<string\>\) of array_values is already a list, call has no effect\.$#'
|
|
identifier: arrayValues.list
|
|
count: 1
|
|
path: src/Jmap/Method/Core/PushSubscriptionSetMethod.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$array \(list\<string\>\) of array_values is already a list, call has no effect\.$#'
|
|
identifier: arrayValues.list
|
|
count: 1
|
|
path: src/Jmap/Method/Mail/EmailSetMethod.php
|
|
|
|
-
|
|
message: '#^Property App\\Jmap\\Method\\Mail\\EmailSetMethod\:\:\$mailboxRepository is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Jmap/Method/Mail/EmailSetMethod.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$array \(list\<string\>\) of array_values is already a list, call has no effect\.$#'
|
|
identifier: arrayValues.list
|
|
count: 1
|
|
path: src/Jmap/Method/Mail/IdentitySetMethod.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$array \(list\<string\>\) of array_values is already a list, call has no effect\.$#'
|
|
identifier: arrayValues.list
|
|
count: 1
|
|
path: src/Jmap/Method/Mail/MailboxSetMethod.php
|
|
|
|
-
|
|
message: '#^Property App\\Jmap\\Method\\Mail\\ThreadSetMethod\:\:\$entityManager is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Jmap/Method/Mail/ThreadSetMethod.php
|
|
|
|
-
|
|
message: '#^Method App\\Jmap\\Push\\PushDispatcher\:\:groupByUser\(\) should return array\<int, array\<string, array\<string, string\>\>\> but returns array\<int, array\<int, array\<string, string\>\>\>\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: src/Jmap/Push/PushDispatcher.php
|
|
|
|
-
|
|
message: '#^Parameter \#1 \$array \(list\<string\>\) of array_values is already a list, call has no effect\.$#'
|
|
identifier: arrayValues.list
|
|
count: 3
|
|
path: src/Jmap/State/StateManager.php
|
|
|
|
-
|
|
message: '#^Method App\\Kernel\:\:getAllowedEnvs\(\) is unused\.$#'
|
|
identifier: method.unused
|
|
count: 1
|
|
path: src/Kernel.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Symfony\\Component\\Security\\Core\\User\\UserInterface\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: src/Repository/Calendar/CalendarEventOccurrenceRepository.php
|
|
|
|
-
|
|
message: '#^PHPDoc tag @return with type iterable\<App\\Entity\\Mail\\Account\> is not subtype of native type array\.$#'
|
|
identifier: return.phpDocType
|
|
count: 2
|
|
path: src/Repository/Mail/AccountRepository.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Symfony\\Component\\Security\\Core\\User\\UserInterface\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: src/Repository/Mail/MessageThreadRepository.php
|
|
|
|
-
|
|
message: '#^Method App\\Security\\ApiTokenAuthenticator\:\:onAuthenticationFailure\(\) never returns null so it can be removed from the return type\.$#'
|
|
identifier: return.unusedType
|
|
count: 1
|
|
path: src/Security/ApiTokenAuthenticator.php
|
|
|
|
-
|
|
message: '#^Method App\\Security\\ApiTokenAuthenticator\:\:supports\(\) never returns null so it can be removed from the return type\.$#'
|
|
identifier: return.unusedType
|
|
count: 1
|
|
path: src/Security/ApiTokenAuthenticator.php
|
|
|
|
-
|
|
message: '#^Attribute class JetBrains\\PhpStorm\\ArrayShape does not exist\.$#'
|
|
identifier: attribute.notFound
|
|
count: 1
|
|
path: src/Security/LoginFormAuthenticator.php
|
|
|
|
-
|
|
message: '#^Strict comparison using \=\=\= between null and App\\Entity\\Mail\\Account will always evaluate to false\.$#'
|
|
identifier: identical.alwaysFalse
|
|
count: 1
|
|
path: src/Service/Imap/MessageSendService.php
|
|
|
|
-
|
|
message: '#^Expression on left side of \?\? is not nullable\.$#'
|
|
identifier: nullCoalesce.expr
|
|
count: 2
|
|
path: src/Service/Imap/MessageSyncer.php
|
|
|
|
-
|
|
message: '#^Parameter &\$syncedUids by\-ref type of method App\\Service\\Imap\\MessageSyncer\:\:processBatch\(\) expects array\<int, bool\>, array\<bool\> given\.$#'
|
|
identifier: parameterByRef.type
|
|
count: 2
|
|
path: src/Service/Imap/MessageSyncer.php
|
|
|
|
-
|
|
message: '#^Property App\\Service\\Label\\LabelChangePropagator\:\:\$mailboxRepository is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: src/Service/Label/LabelChangePropagator.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access "\?\-\>gmailLabelId" on left side of \?\? is unnecessary\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: src/Service/Label/LabelStructurePropagator.php
|
|
|
|
-
|
|
message: '#^Method App\\Service\\Mail\\GraphApiClient\:\:batchWrite\(\) never assigns null to &\$resultIds so it can be removed from the by\-ref type\.$#'
|
|
identifier: parameterByRef.unusedType
|
|
count: 1
|
|
path: src/Service/Mail/GraphApiClient.php
|
|
|
|
-
|
|
message: '#^Unreachable statement \- code above always terminates\.$#'
|
|
identifier: deadCode.unreachable
|
|
count: 1
|
|
path: src/Service/OAuth/OAuthProviderFactory.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method Symfony\\Component\\HttpFoundation\\Session\\SessionInterface\:\:getFlashBag\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: src/Service/Onboarding/Step/SecurityStepHandler.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property Symfony\\Component\\Security\\Core\\User\\UserInterface\:\:\$id\.$#'
|
|
identifier: property.notFound
|
|
count: 2
|
|
path: src/Service/Rule/FilterDescriber.php
|
|
|
|
-
|
|
message: '#^Call to new App\\Infrastructure\\Encryption\\Encryptor\(\) on a separate line has no effect\.$#'
|
|
identifier: new.resultUnused
|
|
count: 1
|
|
path: tests/Infrastructure/Encryption/EncryptorTest.php
|
|
|
|
-
|
|
message: '#^Call to an undefined method App\\Repository\\Mail\\MessageRepository\:\:method\(\)\.$#'
|
|
identifier: method.notFound
|
|
count: 1
|
|
path: tests/Service/Gmail/GmailApiSyncerBackfillTest.php
|
|
|
|
-
|
|
message: '#^Using nullsafe property access on non\-nullable type App\\Entity\\Mail\\MessageThread\. Use \-\> instead\.$#'
|
|
identifier: nullsafe.neverNull
|
|
count: 1
|
|
path: tests/Service/Imap/MessageThreaderTest.php
|
|
|
|
-
|
|
message: '#^Offset ''body'' does not exist on array\{method\: string, url\: string, options\: array\<string, mixed\>\}\.$#'
|
|
identifier: offsetAccess.notFound
|
|
count: 2
|
|
path: tests/Service/Integration/ImmichDriverTest.php
|
|
|
|
-
|
|
message: '#^Offset ''body'' does not exist on array\{method\: ''SEARCH'', url\: string, options\: array\<string, mixed\>\}\.$#'
|
|
identifier: offsetAccess.notFound
|
|
count: 1
|
|
path: tests/Service/Integration/NextcloudDriverTest.php
|
|
|
|
-
|
|
message: '#^Offset ''body'' does not exist on array\{method\: string, url\: string, options\: array\<string, mixed\>\}\.$#'
|
|
identifier: offsetAccess.notFound
|
|
count: 1
|
|
path: tests/Service/Integration/NextcloudDriverTest.php
|
|
|
|
-
|
|
message: '#^Method App\\Tests\\Service\\Mail\\ThreadSnoozeServiceTest\:\:transport\(\) should return Symfony\\Component\\Messenger\\Transport\\InMemory\\InMemoryTransport but returns Symfony\\Component\\Messenger\\Transport\\TransportInterface\.$#'
|
|
identifier: return.type
|
|
count: 1
|
|
path: tests/Service/Mail/ThreadSnoozeServiceTest.php
|
|
|
|
-
|
|
message: '#^Property App\\Tests\\Service\\Mail\\ThreadSnoozeServiceTest\:\:\$labelRepository is never read, only written\.$#'
|
|
identifier: property.onlyWritten
|
|
count: 1
|
|
path: tests/Service/Mail/ThreadSnoozeServiceTest.php
|
|
|
|
-
|
|
message: '#^Access to an undefined property League\\OAuth2\\Client\\Provider\\AbstractProvider\:\:\$tenant\.$#'
|
|
identifier: property.notFound
|
|
count: 1
|
|
path: tests/Service/OAuth/OAuthProviderFactoryTest.php
|
|
|
|
-
|
|
message: '#^Call to function method_exists\(\) with ''Symfony\\\\Component\\\\Dotenv\\\\Dotenv'' and ''bootEnv'' will always evaluate to true\.$#'
|
|
identifier: function.alreadyNarrowedType
|
|
count: 1
|
|
path: tests/bootstrap.php
|