File Storage.php
has 1026 lines of code (exceeds 250 allowed). Consider refactoring.
<?php
declare(strict_types=1);
namespace Autowp\Image;
Storage
has 53 functions (exceeds 20 allowed). Consider refactoring.
class Storage implements StorageInterface
{
private const EXTENSION_DEFAULT = 'jpg';
private const INSERT_MAX_ATTEMPTS = 15;
Method doFormatImage
has 116 lines of code (exceeds 25 allowed). Consider refactoring.
private function doFormatImage(int $imageId, string $formatName): int
{
$resultSet = $this->imageTable->select([
The class Storage has an overall complexity of 183 which is very high. The configured complexity threshold is 50.
class Storage implements StorageInterface
{
private const EXTENSION_DEFAULT = 'jpg';
private const INSERT_MAX_ATTEMPTS = 15;
Function doFormatImage
has a Cognitive Complexity of 20 (exceeds 5 allowed). Consider refactoring.
private function doFormatImage(int $imageId, string $formatName): int
{
$resultSet = $this->imageTable->select([
Method addImageFromFile
has 56 lines of code (exceeds 25 allowed). Consider refactoring.
public function addImageFromFile(string $file, string $dirName, array $options = []): int
{
$imageInfo = getimagesize($file);
$width = (int) $imageInfo[0];
Method addImageFromImagick
has 51 lines of code (exceeds 25 allowed). Consider refactoring.
public function addImageFromImagick(Imagick $imagick, string $dirName, array $options = []): int
{
$width = $imagick->getImageWidth();
$height = $imagick->getImageHeight();
Method changeImageName
has 48 lines of code (exceeds 25 allowed). Consider refactoring.
public function changeImageName(int $imageId, array $options = []): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
throw new Storage\Exception("Image `$imageId` not found");
Method setImageCrop
has 44 lines of code (exceeds 25 allowed). Consider refactoring.
public function setImageCrop(int $imageId, ?array $crop): void
{
if (! $imageId) {
throw new Storage\Exception("Invalid image id provided `$imageId`");
}
Method getImageResolution
has 38 lines of code (exceeds 25 allowed). Consider refactoring.
public function getImageResolution(int $imageId): ?array
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Method getFormatedImageRows
has 36 lines of code (exceeds 25 allowed). Consider refactoring.
private function getFormatedImageRows(array $imagesId, string $formatName): array
{
$destImageRows = [];
if (count($imagesId)) {
$select = $this->imageTable->getSql()->select()
Function getFormatedImageRows
has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
private function getFormatedImageRows(array $imagesId, string $formatName): array
{
$destImageRows = [];
if (count($imagesId)) {
$select = $this->imageTable->getSql()->select()
Method generateLockWrite
has 35 lines of code (exceeds 25 allowed). Consider refactoring.
private function generateLockWrite(string $dirName, array $options, int $width, int $height, Closure $callback): int
{
$insertAttemptException = null;
$imageId = 0;
$attemptIndex = 0;
Function setImageCrop
has a Cognitive Complexity of 11 (exceeds 5 allowed). Consider refactoring.
public function setImageCrop(int $imageId, ?array $crop): void
{
if (! $imageId) {
throw new Storage\Exception("Invalid image id provided `$imageId`");
}
Method flush
has 27 lines of code (exceeds 25 allowed). Consider refactoring.
public function flush(array $options): StorageInterface
{
$defaults = [
'format' => null,
'image' => null,
Method buildImageResult
has 26 lines of code (exceeds 25 allowed). Consider refactoring.
private function buildImageResult($imageRow): Storage\Image
{
$dir = $this->getDir($imageRow['dir']);
if (! $dir) {
throw new Storage\Exception("Dir '{$imageRow['dir']}' not defined");
Method normalize
has 26 lines of code (exceeds 25 allowed). Consider refactoring.
public function normalize(int $imageId): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Method flop
has 26 lines of code (exceeds 25 allowed). Consider refactoring.
public function flop(int $imageId): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Function addImageFromFile
has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
public function addImageFromFile(string $file, string $dirName, array $options = []): int
{
$imageInfo = getimagesize($file);
$width = (int) $imageInfo[0];
Function changeImageName
has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
public function changeImageName(int $imageId, array $options = []): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
throw new Storage\Exception("Image `$imageId` not found");
Function addImageFromImagick
has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
public function addImageFromImagick(Imagick $imagick, string $dirName, array $options = []): int
{
$width = $imagick->getImageWidth();
$height = $imagick->getImageHeight();
Method __construct
has 5 arguments (exceeds 4 allowed). Consider refactoring.
array $options,
TableGateway $imageTable,
TableGateway $formatedImageTable,
TableGateway $dirTable,
Processor\ProcessorPluginManager $processors
Method generateLockWrite
has 5 arguments (exceeds 4 allowed). Consider refactoring.
private function generateLockWrite(string $dirName, array $options, int $width, int $height, Closure $callback): int
Function getImageResolution
has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
public function getImageResolution(int $imageId): ?array
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Function buildImageResult
has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
private function buildImageResult($imageRow): Storage\Image
{
$dir = $this->getDir($imageRow['dir']);
if (! $dir) {
throw new Storage\Exception("Dir '{$imageRow['dir']}' not defined");
The class Storage has 1394 lines of code. Current threshold is 1000. Avoid really long classes.
class Storage implements StorageInterface
{
private const EXTENSION_DEFAULT = 'jpg';
private const INSERT_MAX_ATTEMPTS = 15;
The method setImageCrop() has an NPath complexity of 960. The configured NPath complexity threshold is 200.
public function setImageCrop(int $imageId, ?array $crop): void
{
if (! $imageId) {
throw new Storage\Exception("Invalid image id provided `$imageId`");
}
The method doFormatImage() has an NPath complexity of 3564. The configured NPath complexity threshold is 200.
private function doFormatImage(int $imageId, string $formatName): int
{
$resultSet = $this->imageTable->select([
The method doFormatImage() has 147 lines of code. Current threshold is set to 100. Avoid really long methods.
private function doFormatImage(int $imageId, string $formatName): int
{
$resultSet = $this->imageTable->select([
The method changeImageName() has a Cyclomatic Complexity of 10. The configured cyclomatic complexity threshold is 10.
public function changeImageName(int $imageId, array $options = []): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
throw new Storage\Exception("Image `$imageId` not found");
The method setImageCrop() has a Cyclomatic Complexity of 13. The configured cyclomatic complexity threshold is 10.
public function setImageCrop(int $imageId, ?array $crop): void
{
if (! $imageId) {
throw new Storage\Exception("Invalid image id provided `$imageId`");
}
The method getImageResolution() has a Cyclomatic Complexity of 10. The configured cyclomatic complexity threshold is 10.
public function getImageResolution(int $imageId): ?array
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
The method doFormatImage() has a Cyclomatic Complexity of 16. The configured cyclomatic complexity threshold is 10.
private function doFormatImage(int $imageId, string $formatName): int
{
$resultSet = $this->imageTable->select([
The class Storage has a coupling between objects value of 21. Consider to reduce the number of dependencies under 13.
class Storage implements StorageInterface
{
private const EXTENSION_DEFAULT = 'jpg';
private const INSERT_MAX_ATTEMPTS = 15;
Remove error control operator '@' on line 1115.
public function extractEXIF(int $imageId): ?array
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Avoid using static access to class '\Laminas\Uri\UriFactory' in method 'buildImageResult'.
$uri = UriFactory::factory($url);
The method incDirCounter uses an else expression. Else clauses are basically not necessary and you can simplify the code by not using them.
} else {
$this->dirTable->insert([
'dir' => $dirName,
'count' => 1,
]);
Similar blocks of code found in 2 locations. Consider refactoring.
public function normalize(int $imageId): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Similar blocks of code found in 2 locations. Consider refactoring.
public function flop(int $imageId): void
{
$imageRow = $this->getImageRow($imageId);
if (! $imageRow) {
Avoid excessively long variable names like $formatedImageTableName. Keep variable name length under 20.
private string $formatedImageTableName = 'formated_image';
Avoid excessively long variable names like $insertAttemptException. Keep variable name length under 20.
$insertAttemptException = null;
Avoid excessively long variable names like $insertAttemptException. Keep variable name length under 20.
$insertAttemptException = null;
Avoid variables with short names like $s3. Configured minimum length is 3.
private S3Client $s3;
Avoid variables with short names like $pi. Configured minimum length is 3.
$pi = pathinfo($newPath);
Avoid variables with short names like $s3. Configured minimum length is 3.
$s3 = $this->getS3Client();
Avoid variables with short names like $x. Configured minimum length is 3.
$x = $info['resolution']['x'];
Avoid variables with short names like $e. Configured minimum length is 3.
private function isDuplicateKeyException(Exception $e): bool
Avoid variables with short names like $id. Configured minimum length is 3.
$id = $this->generateLockWrite(
Avoid variables with short names like $id. Configured minimum length is 3.
$id = $this->generateLockWrite(
Avoid variables with short names like $y. Configured minimum length is 3.
$y = $info['resolution']['y'];
Avoid variables with short names like $id. Configured minimum length is 3.
$id = (int) $this->imageTable->getLastInsertValue();
Avoid variables with short names like $to. Configured minimum length is 3.
$to = (int) pow(10, $attempt) - 1;
There are no issues that match your filters.