File "MediaCollection.php"
Full Path: /home/pulsehostuk9/public_html/invoicer.pulsehost.co.uk/vendor/spatie/laravel-medialibrary/src/MediaCollections/Models/Collections/MediaCollection.php
File size: 2.44 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Spatie\MediaLibrary\MediaCollections\Models\Collections;
use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Database\Eloquent\Collection;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
/**
* @template TKey of array-key
* @template TModel of \Spatie\MediaLibrary\MediaCollections\Models\Media
*
* @extends Collection<TKey, TModel>
*/
class MediaCollection extends Collection implements Htmlable
{
public ?string $collectionName = null;
public ?string $formFieldName = null;
public function collectionName(string $collectionName): self
{
$this->collectionName = $collectionName;
return $this;
}
public function formFieldName(string $formFieldName): self
{
$this->formFieldName = $formFieldName;
return $this;
}
public function totalSizeInBytes(): int
{
return $this->sum('size');
}
public function toHtml()
{
return e(json_encode(old($this->formFieldName ?? $this->collectionName) ?? $this->map(function (Media $media) {
return [
'name' => $media->name,
'file_name' => $media->file_name,
'uuid' => $media->uuid,
'preview_url' => $media->preview_url,
'original_url' => $media->original_url,
'order' => $media->order_column,
'custom_properties' => $media->custom_properties,
'extension' => $media->extension,
'size' => $media->size,
];
})->keyBy('uuid')));
}
public function jsonSerialize(): array
{
if (config('media-library.use_default_collection_serialization')) {
return parent::jsonSerialize();
}
if (! ($this->formFieldName ?? $this->collectionName)) {
return [];
}
return old($this->formFieldName ?? $this->collectionName) ?? $this->map(function (Media $media) {
return [
'name' => $media->name,
'file_name' => $media->file_name,
'uuid' => $media->uuid,
'preview_url' => $media->preview_url,
'original_url' => $media->original_url,
'order' => $media->order_column,
'custom_properties' => $media->custom_properties,
'extension' => $media->extension,
'size' => $media->size,
];
})->keyBy('uuid')->toArray();
}
}