Skip to content

Commit

Permalink
PhpStan Workflow (#3341)
Browse files Browse the repository at this point in the history
  • Loading branch information
erikn69 authored Aug 18, 2023
1 parent 293a066 commit 2d9aa54
Show file tree
Hide file tree
Showing 19 changed files with 114 additions and 1,790 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/phpstan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: PHPStan

on:
push:
paths:
- '**.php'
- 'phpstan.neon.dist'

jobs:
phpstan:
name: phpstan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: dom, curl, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick
coverage: none

- name: Install dependencies
run: |
composer require "php-ffmpeg/php-ffmpeg" --no-interaction --no-update
composer update --prefer-dist --no-interaction
- name: Run PHPStan
run: ./vendor/bin/phpstan --error-format=github
1,732 changes: 2 additions & 1,730 deletions phpstan-baseline.neon

Large diffs are not rendered by default.

11 changes: 10 additions & 1 deletion phpstan.neon.dist
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ includes:
- phpstan-baseline.neon

parameters:
level: 8
level: 5
paths:
- src
- config
Expand All @@ -11,4 +11,13 @@ parameters:
checkOctaneCompatibility: true
checkModelProperties: true
checkMissingIterableValueType: true
reportUnmatchedIgnoredErrors: false

ignoreErrors:
- '#Unsafe usage of new static#'

# For MediaLibraryPro dependencies
- "#MediaLibraryPro\\\\#"

# This must be removed after drop ZipStream V2
- "#ZipStream\\\\#"
2 changes: 1 addition & 1 deletion src/Conversions/Commands/RegenerateCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ protected function getMediaIds(): array
$mediaIds = explode(',', (string) $mediaIds);
}

if (count($mediaIds) === 1 && Str::contains($mediaIds[0], ',')) {
if (count($mediaIds) === 1 && Str::contains((string) $mediaIds[0], ',')) {
$mediaIds = explode(',', (string) $mediaIds[0]);
}

Expand Down
14 changes: 8 additions & 6 deletions src/Conversions/ConversionCollection.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@

/**
* @template TKey of array-key
* @template TValue of \Spatie\MediaLibrary\Conversions\Conversion
* @template TValue of Conversion
*
* @extends \Illuminate\Support\Collection<TKey, TValue>
* @extends Collection<TKey, TValue>
*/
class ConversionCollection extends Collection
{
Expand Down Expand Up @@ -52,11 +52,13 @@ protected function addConversionsFromRelatedModel(Media $media): void
{
$modelName = Arr::get(Relation::morphMap(), $media->model_type, $media->model_type);

/** @var \Spatie\MediaLibrary\HasMedia $model */
if (class_exists($modelName)) {
$model = new $modelName();
if (! class_exists($modelName)) {
return;
}

/** @var \Spatie\MediaLibrary\HasMedia $model */
$model = new $modelName();

/*
* In some cases the user might want to get the actual model
* instance so conversion parameters can depend on model
Expand Down Expand Up @@ -93,7 +95,7 @@ public function getConversions(string $collectionName = ''): self

protected function addManipulationToConversion(Manipulations $manipulations, string $conversionName)
{
/** @var \Spatie\MediaLibrary\Conversions\Conversion|null $conversion */
/** @var Conversion|null $conversion */
$conversion = $this->first(function (Conversion $conversion) use ($conversionName) {
if (! in_array($this->media->collection_name, $conversion->getPerformOnCollections())) {
return false;
Expand Down
2 changes: 1 addition & 1 deletion src/Conversions/ImageGenerators/Pdf.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public function requirementsAreInstalled(): bool

public function supportedExtensions(): Collection
{
return collect('pdf');
return collect(['pdf']);
}

public function supportedMimeTypes(): Collection
Expand Down
4 changes: 2 additions & 2 deletions src/Conversions/ImageGenerators/Svg.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@ public function requirementsAreInstalled(): bool

public function supportedExtensions(): Collection
{
return collect('svg');
return collect(['svg']);
}

public function supportedMimeTypes(): Collection
{
return collect('image/svg+xml');
return collect(['image/svg+xml']);
}
}
6 changes: 6 additions & 0 deletions src/HasMedia.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Symfony\Component\HttpFoundation\File\UploadedFile;

/**
* @mixin \Illuminate\Database\Eloquent\Model
* @method void prepareToAttachMedia(Media $media, FileAdder $fileAdder)
* @property bool $registerMediaConversionsUsingModelInstance
* @property ?\Spatie\MediaLibrary\MediaCollections\MediaCollection $mediaCollections
*/
interface HasMedia
{
public function media(): MorphMany;
Expand Down
9 changes: 5 additions & 4 deletions src/InteractsWithMedia.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Spatie\MediaLibrary\Support\MediaLibraryPro;
use Spatie\MediaLibraryPro\PendingMediaLibraryRequestHandler;
use Symfony\Component\HttpFoundation\File\UploadedFile;

trait InteractsWithMedia
{
/** @var \Spatie\MediaLibrary\Conversions\Conversion[] */
/** @var Conversion[] */
public array $mediaConversions = [];

/** @var \Spatie\MediaLibrary\MediaCollections\MediaCollection[] */
/** @var MediaCollection[] */
public array $mediaCollections = [];

protected bool $deletePreservingMedia = false;
Expand Down Expand Up @@ -65,7 +66,7 @@ public function media(): MorphMany
*
*
*/
public function addMedia(string|\Symfony\Component\HttpFoundation\File\UploadedFile $file): FileAdder
public function addMedia(string|UploadedFile $file): FileAdder
{
return app(FileAdderFactory::class)->create($this, $file);
}
Expand Down Expand Up @@ -245,7 +246,7 @@ public function addMediaFromStream($stream): FileAdder
*
*
*/
public function copyMedia(string|\Symfony\Component\HttpFoundation\File\UploadedFile $file): FileAdder
public function copyMedia(string|UploadedFile $file): FileAdder
{
return $this->addMedia($file)->preservingOriginal();
}
Expand Down
31 changes: 10 additions & 21 deletions src/MediaCollections/FileAdder.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,15 @@
use Symfony\Component\HttpFoundation\File\File as SymfonyFile;
use Symfony\Component\HttpFoundation\File\UploadedFile;

/**
* @template TModel of \Spatie\MediaLibrary\MediaCollections\Models\Media
*/
class FileAdder
{
use Macroable;

protected ?Model $subject = null;
protected ?HasMedia $subject = null;

protected bool $preserveOriginal = false;

/** @var \Symfony\Component\HttpFoundation\File\UploadedFile|string */
/** @var UploadedFile|RemoteFile|SymfonyFile|string */
protected $file;

protected array $properties = [];
Expand Down Expand Up @@ -69,6 +66,7 @@ public function __construct(

public function setSubject(Model $subject): self
{
/** @var HasMedia $subject */
$this->subject = $subject;

return $this;
Expand All @@ -77,7 +75,7 @@ public function setSubject(Model $subject): self
/*
* Set the file that needs to be imported.
*
* @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $file
* @param string|UploadedFile $file
*
* @return $this
*/
Expand Down Expand Up @@ -218,17 +216,11 @@ public function addCustomHeaders(array $customRemoteHeaders): self
return $this;
}

/**
* @return TModel
*/
public function toMediaCollectionOnCloudDisk(string $collectionName = 'default'): Media
{
return $this->toMediaCollection($collectionName, config('filesystems.cloud'));
}

/**
* @return TModel
*/
public function toMediaCollectionFromRemote(string $collectionName = 'default', string $diskName = ''): Media
{
$storage = Storage::disk($this->file->getDisk());
Expand All @@ -242,7 +234,7 @@ public function toMediaCollectionFromRemote(string $collectionName = 'default',
}

$mediaClass = config('media-library.media_model');
/** @var \Spatie\MediaLibrary\MediaCollections\Models\Media $media */
/** @var Media $media */
$media = new $mediaClass();

$media->name = $this->mediaName;
Expand Down Expand Up @@ -280,9 +272,6 @@ public function toMediaCollectionFromRemote(string $collectionName = 'default',
return $media;
}

/**
* @return TModel
*/
public function toMediaCollection(string $collectionName = 'default', string $diskName = ''): Media
{
$sanitizedFileName = ($this->fileNameSanitizer)($this->fileName);
Expand All @@ -306,7 +295,7 @@ public function toMediaCollection(string $collectionName = 'default', string $di
}

$mediaClass = config('media-library.media_model');
/** @var \Spatie\MediaLibrary\MediaCollections\Models\Media $media */
/** @var Media $media */
$media = new $mediaClass();

$media->name = $this->mediaName;
Expand Down Expand Up @@ -346,9 +335,6 @@ public function toMediaCollection(string $collectionName = 'default', string $di
return $media;
}

/**
* @return TModel
*/
public function toMediaLibrary(string $collectionName = 'default', string $diskName = ''): Media
{
return $this->toMediaCollection($collectionName, $diskName);
Expand Down Expand Up @@ -477,7 +463,9 @@ protected function processMediaItem(HasMedia $model, Media $media, self $fileAdd
}

if ($collectionSizeLimit = optional($this->getMediaCollection($media->collection_name))->collectionSizeLimit) {
$collectionMedia = $this->subject->fresh()->getMedia($media->collection_name);
/** @var HasMedia */
$subject = $this->subject->fresh();
$collectionMedia = $subject->getMedia($media->collection_name);

if ($collectionMedia->count() > $collectionSizeLimit) {
$model->clearMediaCollectionExcept($media->collection_name, $collectionMedia->slice(-$collectionSizeLimit, $collectionSizeLimit));
Expand Down Expand Up @@ -524,6 +512,7 @@ protected function toMediaCollectionFromTemporaryUpload(string $collectionName,
/** @var TemporaryUpload $temporaryUpload */
$temporaryUpload = $this->file;

/** @var Media */
$media = $temporaryUpload->getFirstMedia();

$media->name = $this->mediaName;
Expand Down
6 changes: 3 additions & 3 deletions src/MediaCollections/FileAdderFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class FileAdderFactory
{
public static function create(Model $subject, string|UploadedFile $file): FileAdder
{
/** @var \Spatie\MediaLibrary\MediaCollections\FileAdder $fileAdder */
/** @var FileAdder $fileAdder */
$fileAdder = app(FileAdder::class);

return $fileAdder
Expand All @@ -23,7 +23,7 @@ public static function create(Model $subject, string|UploadedFile $file): FileAd

public static function createFromDisk(Model $subject, string $key, string $disk): FileAdder
{
/** @var \Spatie\MediaLibrary\MediaCollections\FileAdder $fileAdder */
/** @var FileAdder $fileAdder */
$fileAdder = app(FileAdder::class);

return $fileAdder
Expand Down Expand Up @@ -68,7 +68,7 @@ public static function createAllFromRequest(Model $subject): Collection

public static function createForPendingMedia(Model $subject, PendingMediaItem $pendingMedia): FileAdder
{
/** @var \Spatie\MediaLibrary\MediaCollections\FileAdder $fileAdder */
/** @var FileAdder $fileAdder */
$fileAdder = app(FileAdder::class);

return $fileAdder
Expand Down
4 changes: 2 additions & 2 deletions src/MediaCollections/MediaRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ public function getCollection(
/**
* Apply given filters on media.
*
* @param \Illuminate\Support\Collection $media
* @param Collection $media
* @param array|callable $filter
*
* @return \Illuminate\Support\Collection
* @return Collection
*/
protected function applyFilterToMediaCollection(
Collection $media,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
* @template TKey of array-key
* @template TModel of \Spatie\MediaLibrary\MediaCollections\Models\Media
*
* @extends \Illuminate\Database\Eloquent\Collection<TKey, TModel>
* @extends Collection<TKey, TModel>
*/
class MediaCollection extends Collection implements Htmlable
{
Expand Down
1 change: 1 addition & 0 deletions src/MediaCollections/Models/Concerns/HasUuid.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ trait HasUuid
public static function bootHasUuid()
{
static::creating(function (Model $model) {
/** @var \Spatie\MediaLibrary\MediaCollections\Models\Media $model */
if (empty($model->uuid)) {
$model->uuid = (string) Str::uuid();
}
Expand Down
Loading

0 comments on commit 2d9aa54

Please sign in to comment.