autowp/image

View on GitHub
src/Storage.php

Summary

Maintainability
F
1 wk
Test Coverage
B
84%

Showing 52 of 52 total issues

File Storage.php has 1026 lines of code (exceeds 250 allowed). Consider refactoring.
Open

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

    Storage has 53 functions (exceeds 20 allowed). Consider refactoring.
    Open

    class Storage implements StorageInterface
    {
    private const EXTENSION_DEFAULT = 'jpg';
     
    private const INSERT_MAX_ATTEMPTS = 15;
    Severity: Major
    Found in src/Storage.php - About 7 hrs to fix

      Method doFormatImage has 116 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

      private function doFormatImage(int $imageId, string $formatName): int
      {
      // find source image
      /** @var ResultSet $resultSet */
      $resultSet = $this->imageTable->select([
      Severity: Major
      Found in src/Storage.php - About 4 hrs to fix

        The class Storage has an overall complexity of 183 which is very high. The configured complexity threshold is 50.
        Open

        class Storage implements StorageInterface
        {
        private const EXTENSION_DEFAULT = 'jpg';
         
        private const INSERT_MAX_ATTEMPTS = 15;
        Severity: Minor
        Found in src/Storage.php by phpmd

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

        private function doFormatImage(int $imageId, string $formatName): int
        {
        // find source image
        /** @var ResultSet $resultSet */
        $resultSet = $this->imageTable->select([
        Severity: Minor
        Found in src/Storage.php - About 2 hrs to fix

        Method addImageFromFile has 56 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

        public function addImageFromFile(string $file, string $dirName, array $options = []): int
        {
        $imageInfo = getimagesize($file);
         
        $width = (int) $imageInfo[0];
        Severity: Major
        Found in src/Storage.php - About 2 hrs to fix

          Method addImageFromImagick has 51 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

          public function addImageFromImagick(Imagick $imagick, string $dirName, array $options = []): int
          {
          $width = $imagick->getImageWidth();
          $height = $imagick->getImageHeight();
           
           
          Severity: Major
          Found in src/Storage.php - About 2 hrs to fix

            Method changeImageName has 48 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

            public function changeImageName(int $imageId, array $options = []): void
            {
            $imageRow = $this->getImageRow($imageId);
            if (! $imageRow) {
            throw new Storage\Exception("Image `$imageId` not found");
            Severity: Minor
            Found in src/Storage.php - About 1 hr to fix

              Method setImageCrop has 44 lines of code (exceeds 25 allowed). Consider refactoring.
              Open

              public function setImageCrop(int $imageId, ?array $crop): void
              {
              if (! $imageId) {
              throw new Storage\Exception("Invalid image id provided `$imageId`");
              }
              Severity: Minor
              Found in src/Storage.php - About 1 hr to fix

                Method getImageResolution has 38 lines of code (exceeds 25 allowed). Consider refactoring.
                Open

                public function getImageResolution(int $imageId): ?array
                {
                $imageRow = $this->getImageRow($imageId);
                 
                if (! $imageRow) {
                Severity: Minor
                Found in src/Storage.php - About 1 hr to fix

                  Method getFormatedImageRows has 36 lines of code (exceeds 25 allowed). Consider refactoring.
                  Open

                  private function getFormatedImageRows(array $imagesId, string $formatName): array
                  {
                  $destImageRows = [];
                  if (count($imagesId)) {
                  $select = $this->imageTable->getSql()->select()
                  Severity: Minor
                  Found in src/Storage.php - About 1 hr to fix

                    Function getFormatedImageRows has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
                    Open

                    private function getFormatedImageRows(array $imagesId, string $formatName): array
                    {
                    $destImageRows = [];
                    if (count($imagesId)) {
                    $select = $this->imageTable->getSql()->select()
                    Severity: Minor
                    Found in src/Storage.php - About 1 hr to fix

                    Method generateLockWrite has 35 lines of code (exceeds 25 allowed). Consider refactoring.
                    Open

                    private function generateLockWrite(string $dirName, array $options, int $width, int $height, Closure $callback): int
                    {
                    $insertAttemptException = null;
                    $imageId = 0;
                    $attemptIndex = 0;
                    Severity: Minor
                    Found in src/Storage.php - About 1 hr to fix

                      Function setImageCrop has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
                      Open

                      public function setImageCrop(int $imageId, ?array $crop): void
                      {
                      if (! $imageId) {
                      throw new Storage\Exception("Invalid image id provided `$imageId`");
                      }
                      Severity: Minor
                      Found in src/Storage.php - About 1 hr to fix

                      Method flush has 27 lines of code (exceeds 25 allowed). Consider refactoring.
                      Open

                      public function flush(array $options): StorageInterface
                      {
                      $defaults = [
                      'format' => null,
                      'image' => null,
                      Severity: Minor
                      Found in src/Storage.php - About 1 hr to fix

                        Method buildImageResult has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                        Open

                        private function buildImageResult($imageRow): Storage\Image
                        {
                        $dir = $this->getDir($imageRow['dir']);
                        if (! $dir) {
                        throw new Storage\Exception("Dir '{$imageRow['dir']}' not defined");
                        Severity: Minor
                        Found in src/Storage.php - About 1 hr to fix

                          Method normalize has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                          Open

                          public function normalize(int $imageId): void
                          {
                          $imageRow = $this->getImageRow($imageId);
                           
                          if (! $imageRow) {
                          Severity: Minor
                          Found in src/Storage.php - About 1 hr to fix

                            Method flop has 26 lines of code (exceeds 25 allowed). Consider refactoring.
                            Open

                            public function flop(int $imageId): void
                            {
                            $imageRow = $this->getImageRow($imageId);
                             
                            if (! $imageRow) {
                            Severity: Minor
                            Found in src/Storage.php - About 1 hr to fix

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

                              public function addImageFromFile(string $file, string $dirName, array $options = []): int
                              {
                              $imageInfo = getimagesize($file);
                               
                              $width = (int) $imageInfo[0];
                              Severity: Minor
                              Found in src/Storage.php - About 55 mins to fix

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

                              public function changeImageName(int $imageId, array $options = []): void
                              {
                              $imageRow = $this->getImageRow($imageId);
                              if (! $imageRow) {
                              throw new Storage\Exception("Image `$imageId` not found");
                              Severity: Minor
                              Found in src/Storage.php - About 45 mins to fix

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

                              public function addImageFromImagick(Imagick $imagick, string $dirName, array $options = []): int
                              {
                              $width = $imagick->getImageWidth();
                              $height = $imagick->getImageHeight();
                               
                               
                              Severity: Minor
                              Found in src/Storage.php - About 45 mins to fix

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

                              array $options,
                              TableGateway $imageTable,
                              TableGateway $formatedImageTable,
                              TableGateway $dirTable,
                              Processor\ProcessorPluginManager $processors
                              Severity: Minor
                              Found in src/Storage.php - About 35 mins to fix

                                Method generateLockWrite has 5 arguments (exceeds 4 allowed). Consider refactoring.
                                Open

                                private function generateLockWrite(string $dirName, array $options, int $width, int $height, Closure $callback): int
                                Severity: Minor
                                Found in src/Storage.php - About 35 mins to fix

                                  Function getImageResolution has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  public function getImageResolution(int $imageId): ?array
                                  {
                                  $imageRow = $this->getImageRow($imageId);
                                   
                                  if (! $imageRow) {
                                  Severity: Minor
                                  Found in src/Storage.php - About 35 mins to fix

                                  Function buildImageResult has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  private function buildImageResult($imageRow): Storage\Image
                                  {
                                  $dir = $this->getDir($imageRow['dir']);
                                  if (! $dir) {
                                  throw new Storage\Exception("Dir '{$imageRow['dir']}' not defined");
                                  Severity: Minor
                                  Found in src/Storage.php - About 25 mins to fix

                                  The class Storage has 1394 lines of code. Current threshold is 1000. Avoid really long classes.
                                  Open

                                  class Storage implements StorageInterface
                                  {
                                  private const EXTENSION_DEFAULT = 'jpg';
                                   
                                  private const INSERT_MAX_ATTEMPTS = 15;
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method setImageCrop() has an NPath complexity of 960. The configured NPath complexity threshold is 200.
                                  Open

                                  public function setImageCrop(int $imageId, ?array $crop): void
                                  {
                                  if (! $imageId) {
                                  throw new Storage\Exception("Invalid image id provided `$imageId`");
                                  }
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method doFormatImage() has an NPath complexity of 3564. The configured NPath complexity threshold is 200.
                                  Open

                                  private function doFormatImage(int $imageId, string $formatName): int
                                  {
                                  // find source image
                                  /** @var ResultSet $resultSet */
                                  $resultSet = $this->imageTable->select([
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method doFormatImage() has 147 lines of code. Current threshold is set to 100. Avoid really long methods.
                                  Open

                                  private function doFormatImage(int $imageId, string $formatName): int
                                  {
                                  // find source image
                                  /** @var ResultSet $resultSet */
                                  $resultSet = $this->imageTable->select([
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method changeImageName() has a Cyclomatic Complexity of 10. The configured cyclomatic complexity threshold is 10.
                                  Open

                                  public function changeImageName(int $imageId, array $options = []): void
                                  {
                                  $imageRow = $this->getImageRow($imageId);
                                  if (! $imageRow) {
                                  throw new Storage\Exception("Image `$imageId` not found");
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method setImageCrop() has a Cyclomatic Complexity of 13. The configured cyclomatic complexity threshold is 10.
                                  Open

                                  public function setImageCrop(int $imageId, ?array $crop): void
                                  {
                                  if (! $imageId) {
                                  throw new Storage\Exception("Invalid image id provided `$imageId`");
                                  }
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method getImageResolution() has a Cyclomatic Complexity of 10. The configured cyclomatic complexity threshold is 10.
                                  Open

                                  public function getImageResolution(int $imageId): ?array
                                  {
                                  $imageRow = $this->getImageRow($imageId);
                                   
                                  if (! $imageRow) {
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method doFormatImage() has a Cyclomatic Complexity of 16. The configured cyclomatic complexity threshold is 10.
                                  Open

                                  private function doFormatImage(int $imageId, string $formatName): int
                                  {
                                  // find source image
                                  /** @var ResultSet $resultSet */
                                  $resultSet = $this->imageTable->select([
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The class Storage has a coupling between objects value of 21. Consider to reduce the number of dependencies under 13.
                                  Open

                                  class Storage implements StorageInterface
                                  {
                                  private const EXTENSION_DEFAULT = 'jpg';
                                   
                                  private const INSERT_MAX_ATTEMPTS = 15;
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Remove error control operator '@' on line 1115.
                                  Open

                                  public function extractEXIF(int $imageId): ?array
                                  {
                                  $imageRow = $this->getImageRow($imageId);
                                   
                                  if (! $imageRow) {
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid using static access to class '\Laminas\Uri\UriFactory' in method 'buildImageResult'.
                                  Open

                                  $uri = UriFactory::factory($url);
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  The method incDirCounter uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
                                  Open

                                  } else {
                                  $this->dirTable->insert([
                                  'dir' => $dirName,
                                  'count' => 1,
                                  ]);
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

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

                                  public function normalize(int $imageId): void
                                  {
                                  $imageRow = $this->getImageRow($imageId);
                                   
                                  if (! $imageRow) {
                                  Severity: Major
                                  Found in src/Storage.php and 1 other location - About 6 hrs to fix
                                  src/Storage.php on lines 1249..1287

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

                                  public function flop(int $imageId): void
                                  {
                                  $imageRow = $this->getImageRow($imageId);
                                   
                                  if (! $imageRow) {
                                  Severity: Major
                                  Found in src/Storage.php and 1 other location - About 6 hrs to fix
                                  src/Storage.php on lines 1293..1331

                                  Avoid excessively long variable names like $formatedImageTableName. Keep variable name length under 20.
                                  Open

                                  private string $formatedImageTableName = 'formated_image';
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid excessively long variable names like $insertAttemptException. Keep variable name length under 20.
                                  Open

                                  $insertAttemptException = null;
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid excessively long variable names like $insertAttemptException. Keep variable name length under 20.
                                  Open

                                  $insertAttemptException = null;
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $s3. Configured minimum length is 3.
                                  Open

                                  private S3Client $s3;
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $pi. Configured minimum length is 3.
                                  Open

                                  $pi = pathinfo($newPath);
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $s3. Configured minimum length is 3.
                                  Open

                                  $s3 = $this->getS3Client();
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $x. Configured minimum length is 3.
                                  Open

                                  $x = $info['resolution']['x'];
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $e. Configured minimum length is 3.
                                  Open

                                  private function isDuplicateKeyException(Exception $e): bool
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $id. Configured minimum length is 3.
                                  Open

                                  $id = $this->generateLockWrite(
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $id. Configured minimum length is 3.
                                  Open

                                  $id = $this->generateLockWrite(
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $y. Configured minimum length is 3.
                                  Open

                                  $y = $info['resolution']['y'];
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $id. Configured minimum length is 3.
                                  Open

                                  $id = (int) $this->imageTable->getLastInsertValue();
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd

                                  Avoid variables with short names like $to. Configured minimum length is 3.
                                  Open

                                  $to = (int) pow(10, $attempt) - 1;
                                  Severity: Minor
                                  Found in src/Storage.php by phpmd
                                  Category
                                  Status