ldc-dam/app/Http/Resources/Api/MediaResource.php
2022-08-01 17:38:13 +02:00

91 lines
2.2 KiB
PHP

<?php
namespace App\Http\Resources\Api;
use App\Models\Media;
use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
class MediaResource extends JsonResource
{
/**
* Add media thumbs into collection
*
* @var boolean
*/
private $addThumb = false;
/** @var array */
private static $skeleton = [
'id' => 0,
'arcadia_id' => 0,
'libelle' => '',
'uid' => '',
'version' => '',
'created_at' => '',
'updated_at' => '',
];
/**
* Create a new resource instance.
*
* @param \App\Models\Media $resource
* @param boolean $addThumb
* @return void
*/
public function __construct(Media $resource, bool $addThumb = false)
{
$this->addThumb = $addThumb;
$this->resource = $resource;
}
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
* + id integer
* + arcadia_id integer
* + libelle string
* + uid string
* + version integer
* + created_at datetime
* + updated_at datetime
*/
//phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass, Squiz.Commenting.FunctionComment.Missing
public function toArray($request)
{
$data = array_intersect_key(
array_merge([
'id' => $this->id,
'arcadia_id' => $this->arcadia_id,
'libelle' => $this->libelle,
'uid' => $this->uid,
'version' => $this->version,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
]),
$this->getSkeleton()
);
if ($this->addThumb) {
/** @var \Illuminate\Filesystem\FilesystemAdapter */
$storage = Storage::disk('media');
$data['base64_thumb_bin'] = \base64_encode($storage->get($this->thumb_relative_path));
}
return $data;
}
/**
* Returns the resource skeletton
*
* @return array
*/
public static function getSkeleton(): array
{
return self::$skeleton;
}
}