ldc-dam/app/Traits/Http/HandlesMedia.php

42 lines
1.2 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Traits\Http;
use Illuminate\Support\Facades\Storage;
trait HandlesMedia
{
/**
* Return the last media folder name,
* or a new media folder name if previous
* already contains 1000 images
*
* @return string
* @throws \ErrorException If creating the folder fails.
*/
public function getCurentMediaFolderName(): string
{
/** @var \Illuminate\Filesystem\FilesystemAdapter */
$storage = Storage::disk('media');
$directories = \collect($storage->directories());
// * si on n'a pas de dossier, on le créé
if (!$directories->count()) {
return $storage->path(uniqid());
}
$folders = collect($storage->directories())->map(function (string $folderName) use ($storage) {
return ['time' => $storage->lastModified($folderName), 'name' => $folderName];
});
$selectedFolder = $folders->firstWhere('time', $folders->max('time'))['name'];
// * si on en a plus de 1000, on créé un nouveau dossier
if (collect($storage->allFiles($selectedFolder))->count() > 1000) {
return uniqid();
}
return $selectedFolder;
}
}