Deploy Ladill QR Plus / deploy (push) Failing after 1s
Utility QR types only (URL, WiFi, link list, business, app download) with SSO, Billing API integration, public /q resolver, and qr-plus:import for platform migration. vCard and commerce types stay on the platform. Co-authored-by: Cursor <cursoragent@cursor.com>
56 lines
1.2 KiB
PHP
56 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Support\Qr;
|
|
|
|
use Carbon\Carbon;
|
|
|
|
class QrDateFormatter
|
|
{
|
|
public static function forInput(?string $value): string
|
|
{
|
|
if ($value === null || trim($value) === '') {
|
|
return '';
|
|
}
|
|
|
|
try {
|
|
return Carbon::parse($value)->format('Y-m-d');
|
|
} catch (\Throwable) {
|
|
return '';
|
|
}
|
|
}
|
|
|
|
public static function forDisplay(?string $value): string
|
|
{
|
|
if ($value === null || trim($value) === '') {
|
|
return '';
|
|
}
|
|
|
|
$value = trim($value);
|
|
|
|
if (preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) {
|
|
try {
|
|
return Carbon::createFromFormat('Y-m-d', $value)->format('D, j M Y');
|
|
} catch (\Throwable) {
|
|
return $value;
|
|
}
|
|
}
|
|
|
|
return $value;
|
|
}
|
|
|
|
public static function normalize(?string $value, int $maxLength = 60): string
|
|
{
|
|
if ($value === null || trim($value) === '') {
|
|
return '';
|
|
}
|
|
|
|
$value = trim($value);
|
|
|
|
try {
|
|
return Carbon::parse($value)->format('Y-m-d');
|
|
} catch (\Throwable) {
|
|
return mb_substr($value, 0, $maxLength);
|
|
}
|
|
}
|
|
}
|