1 | <?php |
||||
2 | |||||
3 | namespace Thinktomorrow\AssetLibrary; |
||||
4 | |||||
5 | use Spatie\MediaLibrary\InteractsWithMedia; |
||||
6 | use Illuminate\Database\Eloquent\Relations\MorphToMany; |
||||
7 | use Illuminate\Support\Collection; |
||||
8 | |||||
9 | trait AssetTrait |
||||
10 | { |
||||
11 | use InteractsWithMedia; |
||||
12 | |||||
13 | 67 | public static function bootAssetTrait() |
|||
14 | { |
||||
15 | static::deleted(function ($model) { |
||||
0 ignored issues
–
show
|
|||||
16 | $model->assetRelation->each(function ($asset) use ($model) { |
||||
17 | 2 | $model->assetRelation()->updateExistingPivot($asset->id, ['unused'=> true]); |
|||
18 | 2 | }); |
|||
19 | 67 | }); |
|||
20 | 67 | } |
|||
21 | |||||
22 | 67 | public function assetRelation(): MorphToMany |
|||
23 | { |
||||
24 | 67 | return $this->morphToMany(Asset::class, 'entity', 'asset_pivots')->withPivot('type', 'locale', 'order')->orderBy('order'); |
|||
0 ignored issues
–
show
It seems like
morphToMany() must be provided by classes using this trait. How about adding it as abstract method to this trait?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
25 | } |
||||
26 | |||||
27 | 42 | public function asset(string $type, ?string $locale = null): ?Asset |
|||
28 | { |
||||
29 | 42 | return $this->assets($type, $locale)->first() ?? new NullAsset(); |
|||
30 | } |
||||
31 | |||||
32 | 56 | public function assets(?string $type = null, ?string $locale = null): Collection |
|||
33 | { |
||||
34 | 56 | $assets = $this->assetRelation; |
|||
35 | |||||
36 | 56 | if ($type) { |
|||
37 | 55 | $assets = $assets->where('pivot.type', $type); |
|||
38 | } |
||||
39 | |||||
40 | 56 | $locale = $locale ?? app()->getLocale(); |
|||
0 ignored issues
–
show
The method
getLocale() does not exist on Illuminate\Container\Container . Are you sure you never get this type here, but always one of the subclasses?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
![]() |
|||||
41 | |||||
42 | $results = $assets->filter(function ($asset) use ($locale) { |
||||
43 | 51 | return $asset->pivot->locale == $locale; |
|||
44 | 56 | }); |
|||
45 | |||||
46 | 56 | if ($this->getUseAssetFallbackLocale() && $locale != $this->getAssetFallbackLocale() && $results->isEmpty()) { |
|||
47 | $results = $assets->filter(function ($asset) { |
||||
48 | 5 | return $asset->pivot->locale == $this->getAssetFallbackLocale(); |
|||
49 | 12 | }); |
|||
50 | } |
||||
51 | |||||
52 | 56 | return $results->sortBy('pivot.order'); |
|||
53 | } |
||||
54 | |||||
55 | 56 | protected function getUseAssetFallbackLocale(): bool |
|||
56 | { |
||||
57 | 56 | return $this->useAssetFallbackLocale ?? config('thinktomorrow.assetlibrary.use_fallback_locale', false); |
|||
58 | } |
||||
59 | |||||
60 | 55 | protected function getAssetFallbackLocale(): string |
|||
61 | { |
||||
62 | 55 | if (! config('thinktomorrow.assetlibrary.fallback_locale')) { |
|||
63 | 53 | config()->set('thinktomorrow.assetlibrary.fallback_locale', config('app.fallback_locale')); |
|||
64 | } |
||||
65 | |||||
66 | 55 | return $this->assetFallbackLocale ?? config('thinktomorrow.assetlibrary.fallback_locale'); |
|||
67 | } |
||||
68 | } |
||||
69 |
This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.
This is most likely a typographical error or the method has been renamed.