91 lines
2.2 KiB
PHP
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;
|
|
}
|
|
}
|