barbushin/php-imap

View on GitHub
src/PhpImap/Mailbox.php

Summary

Maintainability
F
1 wk
Test Coverage

Showing 19 of 19 total issues

File Mailbox.php has 1092 lines of code (exceeds 250 allowed). Consider refactoring.
Open

<?php
 
declare(strict_types=1);
 
namespace PhpImap;
Severity: Major
Found in src/PhpImap/Mailbox.php - About 2 days to fix

    Mailbox has 90 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class Mailbox
    {
    public const EXPECTED_SIZE_OF_MESSAGE_AS_ARRAY = 2;
     
    public const MAX_LENGTH_FILEPATH = 255;
    Severity: Major
    Found in src/PhpImap/Mailbox.php - About 1 day to fix

      Function initMailPart has a Cognitive Complexity of 54 (exceeds 5 allowed). Consider refactoring.
      Open

      protected function initMailPart(IncomingMail $mail, object $partStructure, $partNum, bool $markAsSeen = true, bool $emlParse = false): void
      {
      if (!isset($mail->id)) {
      throw new InvalidArgumentException('Argument 1 passeed to '.__METHOD__.'() did not have the id property set!');
      }
      Severity: Minor
      Found in src/PhpImap/Mailbox.php - About 1 day to fix

      Function getMailHeader has a Cognitive Complexity of 43 (exceeds 5 allowed). Consider refactoring.
      Open

      public function getMailHeader(int $mailId): IncomingMailHeader
      {
      $headersRaw = Imap::fetchheader(
      $this->getImapStream(),
      $mailId,
      Severity: Minor
      Found in src/PhpImap/Mailbox.php - About 6 hrs to fix

      Method getMailHeader has 123 lines of code (exceeds 40 allowed). Consider refactoring.
      Open

      public function getMailHeader(int $mailId): IncomingMailHeader
      {
      $headersRaw = Imap::fetchheader(
      $this->getImapStream(),
      $mailId,
      Severity: Major
      Found in src/PhpImap/Mailbox.php - About 4 hrs to fix

        Function getMailsInfo has a Cognitive Complexity of 28 (exceeds 5 allowed). Consider refactoring.
        Open

        public function getMailsInfo(array $mailsIds): array
        {
        $mails = Imap::fetch_overview(
        $this->getImapStream(),
        \implode(',', $mailsIds),
        Severity: Minor
        Found in src/PhpImap/Mailbox.php - About 4 hrs to fix

        Method initMailPart has 95 lines of code (exceeds 40 allowed). Consider refactoring.
        Open

        protected function initMailPart(IncomingMail $mail, object $partStructure, $partNum, bool $markAsSeen = true, bool $emlParse = false): void
        {
        if (!isset($mail->id)) {
        throw new InvalidArgumentException('Argument 1 passeed to '.__METHOD__.'() did not have the id property set!');
        }
        Severity: Major
        Found in src/PhpImap/Mailbox.php - About 3 hrs to fix

          Function downloadAttachment has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
          Open

          public function downloadAttachment(DataPartInfo $dataInfo, array $params, object $partStructure, bool $emlOrigin = false): IncomingMailAttachment
          {
          if ('RFC822' == $partStructure->subtype && isset($partStructure->disposition) && 'attachment' == $partStructure->disposition) {
          $fileName = \strtolower($partStructure->subtype).'.eml';
          } elseif ('ALTERNATIVE' == $partStructure->subtype) {
          Severity: Minor
          Found in src/PhpImap/Mailbox.php - About 2 hrs to fix

          Method downloadAttachment has 64 lines of code (exceeds 40 allowed). Consider refactoring.
          Open

          public function downloadAttachment(DataPartInfo $dataInfo, array $params, object $partStructure, bool $emlOrigin = false): IncomingMailAttachment
          {
          if ('RFC822' == $partStructure->subtype && isset($partStructure->disposition) && 'attachment' == $partStructure->disposition) {
          $fileName = \strtolower($partStructure->subtype).'.eml';
          } elseif ('ALTERNATIVE' == $partStructure->subtype) {
          Severity: Major
          Found in src/PhpImap/Mailbox.php - About 1 hr to fix

            Function setConnectionArgs has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
            Open

            public function setConnectionArgs(int $options = 0, int $retriesNum = 0, array $params = null): void
            {
            if (0 !== $options) {
            if (($options & self::IMAP_OPTIONS_SUPPORTED_VALUES) !== $options) {
            throw new InvalidParameterException('Please check your option for setConnectionArgs()! Unsupported option "'.$options.'". Available options: https://www.php.net/manual/de/function.imap-open.php');
            Severity: Minor
            Found in src/PhpImap/Mailbox.php - About 1 hr to fix

            Function possiblyGetMailboxes has a Cognitive Complexity of 13 (exceeds 5 allowed). Consider refactoring.
            Open

            protected function possiblyGetMailboxes(array $t): array
            {
            $arr = [];
            if ($t) {
            foreach ($t as $index => $item) {
            Severity: Minor
            Found in src/PhpImap/Mailbox.php - About 1 hr to fix

            Consider simplifying this complex logical expression.
            Open

            if ('RFC822' == $partStructure->subtype && isset($partStructure->disposition) && 'attachment' == $partStructure->disposition) {
            $fileName = \strtolower($partStructure->subtype).'.eml';
            } elseif ('ALTERNATIVE' == $partStructure->subtype) {
            $fileName = \strtolower($partStructure->subtype).'.eml';
            } elseif ((!isset($params['filename']) || empty(\trim($params['filename']))) && (!isset($params['name']) || empty(\trim($params['name'])))) {
            Severity: Major
            Found in src/PhpImap/Mailbox.php - About 1 hr to fix

              Consider simplifying this complex logical expression.
              Open

              if (TYPEMESSAGE === $partStructure->type && 'RFC822' === $partStructure->subtype && $not_attachment) {
              $this->initMailPart($mail, $subPartStructure, $partNum, $markAsSeen);
              } elseif (TYPEMULTIPART === $partStructure->type && 'ALTERNATIVE' === $partStructure->subtype && $not_attachment) {
              // https://github.com/barbushin/php-imap/issues/198
              $this->initMailPart($mail, $subPartStructure, $partNum, $markAsSeen);
              Severity: Major
              Found in src/PhpImap/Mailbox.php - About 1 hr to fix

                Function convertToUtf8 has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
                Open

                public function convertToUtf8(string $string, string $fromCharset): string
                {
                $fromCharset = mb_strtolower($fromCharset);
                $newString = '';
                 
                 
                Severity: Minor
                Found in src/PhpImap/Mailbox.php - About 55 mins to fix

                Function possiblyGetEmailAndNameFromRecipient has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                Open

                protected function possiblyGetEmailAndNameFromRecipient(object $recipient): ?array
                {
                if (isset($recipient->mailbox, $recipient->host)) {
                /** @var string */
                $recipientMailbox = $recipient->mailbox;
                Severity: Minor
                Found in src/PhpImap/Mailbox.php - About 45 mins to fix

                Function flattenParts has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                Open

                public function flattenParts(array $messageParts, array $flattenedParts = [], string $prefix = '', int $index = 1, bool $fullPrefix = true): array
                {
                foreach ($messageParts as $part) {
                $flattenedParts[$prefix.$index] = $part;
                if (isset($part->parts)) {
                Severity: Minor
                Found in src/PhpImap/Mailbox.php - About 45 mins to fix

                Method __construct has 7 arguments (exceeds 5 allowed). Consider refactoring.
                Open

                public function __construct(string $imapPath, string $login, string $password, string $attachmentsDir = null, string $serverEncoding = 'UTF-8', bool $trimImapPath = true, bool $attachmentFilenameMode = false)
                Severity: Major
                Found in src/PhpImap/Mailbox.php - About 45 mins to fix

                  Similar blocks of code found in 2 locations. Consider refactoring.
                  Open

                  if (isset($head->to)) {
                  $toStrings = [];
                  foreach ($head->to as $to) {
                  $to_parsed = $this->possiblyGetEmailAndNameFromRecipient($to);
                  if ($to_parsed) {
                  Severity: Major
                  Found in src/PhpImap/Mailbox.php and 1 other location - About 1 hr to fix
                  src/PhpImap/Mailbox.php on lines 1229..1240

                  Similar blocks of code found in 2 locations. Consider refactoring.
                  Open

                  if (isset($head->cc)) {
                  $ccStrings = [];
                  foreach ($head->cc as $cc) {
                  $cc_parsed = $this->possiblyGetEmailAndNameFromRecipient($cc);
                  if ($cc_parsed) {
                  Severity: Major
                  Found in src/PhpImap/Mailbox.php and 1 other location - About 1 hr to fix
                  src/PhpImap/Mailbox.php on lines 1216..1227

                  There are no issues that match your filters.

                  Category
                  Status