feat: add frame name input and uniqueness validation via gitea api
This commit is contained in:
+41
-3
@@ -36,10 +36,48 @@ if ($mimeType !== 'image/png') {
|
||||
exit;
|
||||
}
|
||||
|
||||
// Generate unique filename
|
||||
$filename = uniqid('frame_') . '_' . time() . '.png';
|
||||
$rawFrameName = isset($_POST['frame_name']) ? trim($_POST['frame_name']) : '';
|
||||
$frameName = preg_replace('/[^a-z0-9_]/', '', strtolower($rawFrameName));
|
||||
|
||||
if (empty($frameName)) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Ungültiger oder fehlender Frame-Name.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$filename = 'frame_' . $frameName . '.png';
|
||||
$destination = $uploadDir . $filename;
|
||||
|
||||
// Check local uniqueness (already uploaded via web)
|
||||
if (file_exists($destination)) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Ein Rahmen mit diesem Namen existiert bereits auf dem Server. Bitte wähle einen anderen.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Check Gitea uniqueness
|
||||
$giteaUrl = 'https://git.orfel.de/api/v1/repos/Jannik/Schnappix/contents/assets/frames';
|
||||
$chGitea = curl_init($giteaUrl);
|
||||
curl_setopt($chGitea, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($chGitea, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($chGitea, CURLOPT_HTTPHEADER, ['User-Agent: Schnappix-Web Backend']);
|
||||
$giteaResponse = curl_exec($chGitea);
|
||||
$giteaCode = curl_getinfo($chGitea, CURLINFO_HTTP_CODE);
|
||||
curl_close($chGitea);
|
||||
|
||||
if ($giteaCode === 200 && $giteaResponse) {
|
||||
$framesData = json_decode($giteaResponse, true);
|
||||
if (is_array($framesData)) {
|
||||
foreach ($framesData as $frameFile) {
|
||||
if (isset($frameFile['name']) && strtolower($frameFile['name']) === strtolower($filename)) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['error' => 'Ein Rahmen mit diesem Namen existiert bereits in der App. Bitte wähle einen anderen.']);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Move uploaded file
|
||||
if (move_uploaded_file($file['tmp_name'], $destination)) {
|
||||
// Build public URL
|
||||
@@ -50,7 +88,7 @@ if (move_uploaded_file($file['tmp_name'], $destination)) {
|
||||
|
||||
// Send notification to Ntfy
|
||||
$ntfyUrl = 'https://ntfy.orfel.de/Schnappix-Frame-Upload';
|
||||
$message = "Ein neuer Rahmen wurde hochgeladen!\n\nVon: $email\nBild-URL: $publicUrl";
|
||||
$message = "Ein neuer Rahmen wurde hochgeladen!\n\nName: $filename\nVon: $email\nBild-URL: $publicUrl";
|
||||
|
||||
$ch = curl_init($ntfyUrl);
|
||||
curl_setopt($ch, CURLOPT_POST, 1);
|
||||
|
||||
Reference in New Issue
Block a user