Files
ladill-queue/app/Support/OrganizationBranding.php
T
isaaccladandCursor 3d79dfad10
Deploy Ladill Queue / deploy (push) Successful in 39s
Fit public display to viewport and use Ladill Queue logo in footer.
Lock layout to 100dvh without scroll, scale ticket cards with clamp(), and replace powered-by text with the dark wordmark.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 23:05:40 +00:00

58 lines
1.7 KiB
PHP

<?php
namespace App\Support;
use App\Models\Organization;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
class OrganizationBranding
{
public const DEFAULT_LOGO = 'images/logo/ladillqueue-logo.svg';
public const POWERED_BY_LOGO = 'images/logo/ladillqueue-logo.svg';
public static function assetUrl(string $path = self::DEFAULT_LOGO): string
{
$file = public_path($path);
return asset($path).'?v='.(@filemtime($file) ?: '1');
}
public static function logoUrl(Organization $organization): string
{
if ($organization->logo_path && Storage::disk('public')->exists($organization->logo_path)) {
$version = $organization->updated_at?->getTimestamp() ?? time();
return Storage::disk('public')->url($organization->logo_path).'?v='.$version;
}
return self::assetUrl(self::DEFAULT_LOGO);
}
public static function logoAlt(Organization $organization): string
{
return $organization->logo_path ? $organization->name : 'Ladill Queue';
}
public static function hasCustomLogo(Organization $organization): bool
{
return $organization->logo_path !== null
&& Storage::disk('public')->exists($organization->logo_path);
}
public static function storeLogo(Organization $organization, UploadedFile $file): string
{
self::deleteStoredLogo($organization);
return $file->store('queue/organizations/'.$organization->id, 'public');
}
public static function deleteStoredLogo(Organization $organization): void
{
if ($organization->logo_path) {
Storage::disk('public')->delete($organization->logo_path);
}
}
}