Files
SkinbaseNova/scripts/verify_upload_publish.php

99 lines
2.7 KiB
PHP

<?php
declare(strict_types=1);
use App\Models\Artwork;
use Illuminate\Support\Carbon;
require __DIR__ . '/../vendor/autoload.php';
$app = require __DIR__ . '/../bootstrap/app.php';
$app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
$options = getopt('', ['id::', 'limit::']);
$id = isset($options['id']) ? (int) $options['id'] : null;
$limit = isset($options['limit']) ? max(1, (int) $options['limit']) : 5;
$query = Artwork::query()->orderByDesc('id');
if ($id && $id > 0) {
$query->whereKey($id);
}
$rows = $query->limit($limit)->get();
if ($rows->isEmpty()) {
fwrite(STDOUT, "No artwork rows found.\n");
exit(1);
}
$requiredFields = [
'title',
'slug',
'file_name',
'file_path',
'hash',
'file_ext',
'thumb_ext',
'mime_type',
'file_size',
'published_at',
];
$hasFailure = false;
foreach ($rows as $artwork) {
$missing = [];
foreach ($requiredFields as $field) {
$value = $artwork->{$field};
if ($value === null || $value === '' || $value === 'pending') {
$missing[] = $field;
}
}
if (! (bool) $artwork->is_public) {
$missing[] = 'is_public';
}
if (! (bool) $artwork->is_approved) {
$missing[] = 'is_approved';
}
if ((int) $artwork->width <= 1) {
$missing[] = 'width';
}
if ((int) $artwork->height <= 1) {
$missing[] = 'height';
}
$publishedAt = $artwork->published_at instanceof Carbon
? $artwork->published_at->toDateTimeString()
: (string) $artwork->published_at;
fwrite(STDOUT, str_repeat('-', 72) . "\n");
fwrite(STDOUT, "artwork_id: {$artwork->id}\n");
fwrite(STDOUT, "title : " . (string) $artwork->title . "\n");
fwrite(STDOUT, "slug : " . (string) $artwork->slug . "\n");
fwrite(STDOUT, "file_path : " . (string) $artwork->file_path . "\n");
fwrite(STDOUT, "hash : " . (string) $artwork->hash . "\n");
fwrite(STDOUT, "file_ext : " . (string) $artwork->file_ext . " | thumb_ext: " . (string) $artwork->thumb_ext . "\n");
fwrite(STDOUT, "visible : is_public=" . ((int) (bool) $artwork->is_public) . " is_approved=" . ((int) (bool) $artwork->is_approved) . "\n");
fwrite(STDOUT, "published : " . ($publishedAt !== '' ? $publishedAt : 'NULL') . "\n");
if ($missing !== []) {
$hasFailure = true;
fwrite(STDOUT, "status : FAIL (missing/invalid: " . implode(', ', array_unique($missing)) . ")\n");
} else {
fwrite(STDOUT, "status : OK\n");
}
}
fwrite(STDOUT, str_repeat('-', 72) . "\n");
if ($hasFailure) {
fwrite(STDOUT, "Result: FAIL\n");
exit(2);
}
fwrite(STDOUT, "Result: OK\n");
exit(0);