<?php
//tiek iekļauti autentifikācijas un datubāzes savienojuma faili
require 'auth.php';
require 'database.php';

//pārbauda, vai pieprasījuma metode ir POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    exit('Invalid request');
}

//Formā ievadītie dati tiek piešķirti mainīgajiem
$user_id = $_SESSION['user_id'];
$post_name = $_POST['create_post_name'] ?? '';
$post_description = $_POST['post_description'] ?? '';
$category_id = $_POST['category_id'] ?? '';

//ja kāds no teksta ievades laukiem ir tukšs, tiek atgriezta kļūda 'fields missing'
if (!$post_name || !$post_description) {
    echo 'fields_missing';
    exit();
}

//ja kategorija nav izvēlēta, tiek atgriezta kļūda 'no_category'
if (!$category_id) {
    echo 'no_category';
    exit();
}

//ja kāds no attēlu failiem nav augšupielādēts, tiek atgriezta kļūda 'images_missing'
if (!isset($_FILES['image_1']) || $_FILES['image_1']['error'] !== UPLOAD_ERR_OK ||
    !isset($_FILES['image_2']) || $_FILES['image_2']['error'] !== UPLOAD_ERR_OK ||
    !isset($_FILES['image_3']) || $_FILES['image_3']['error'] !== UPLOAD_ERR_OK) {
    echo 'images_missing';
    exit();
}

//direktorija, kurā tiks saglabāti augšupielādētie attēli
$upload_dir = 'uploads/';

//tiek augšupielādēts pirmais attēls
if (isset($_FILES['image_1']) && $_FILES['image_1']['error'] === UPLOAD_ERR_OK) {
    //tiek ģenerēts unikāls faila nosaukums, lai izvairītos no pārrakstīšanas
    $image_1 = uniqid() . '_' . basename($_FILES['image_1']['name']);
    //ja augšupielāde neizdodas, tiek atgriezta kļūda 'upload_failed'
    if (!move_uploaded_file($_FILES['image_1']['tmp_name'], $upload_dir . $image_1)) {
        echo 'upload_failed';
        exit();
    }
}

//tiek augšupielādēts otrais attēls
if (isset($_FILES['image_2']) && $_FILES['image_2']['error'] === UPLOAD_ERR_OK) {
    $image_2 = uniqid() . '_' . basename($_FILES['image_2']['name']);
    //ja augšupielāde neizdodas, tiek dzēsts pirmais attēls un atgriezta kļūda 'upload_failed'
    if (!move_uploaded_file($_FILES['image_2']['tmp_name'], $upload_dir . $image_2)) {
        unlink($upload_dir . $image_1);
        echo 'upload_failed';
        exit();
    }
}

//tiek augšupielādēts trešais attēls
if (isset($_FILES['image_3']) && $_FILES['image_3']['error'] === UPLOAD_ERR_OK) {
    $image_3 = uniqid() . '_' . basename($_FILES['image_3']['name']);
    //ja augšupielāde neizdodas, tiek dzēsti pirmie divi attēli un atgriezta kļūda 'upload_failed'
    if (!move_uploaded_file($_FILES['image_3']['tmp_name'], $upload_dir . $image_3)) {
        unlink($upload_dir . $image_1);
        unlink($upload_dir . $image_2);
        echo 'upload_failed';
        exit();
    }
}

//dati tiek ievietoti datubāzē
$stmt = $conn->prepare("INSERT INTO posts (user_id, category_id, post_name, post_description, image_1, image_2, image_3) VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("iisssss", $user_id, $category_id, $post_name, $post_description, $image_1, $image_2, $image_3);

//ja ievietošana ir veiksmīga, tiek atgriezts 'success'
if ($stmt->execute()) {
    echo 'success';
} else {
    //ja datu ievietošana neizdodas, tiek dzēsti augšupielādētie attēli un atgriezta kļūda 'upload_failed'
    unlink($upload_dir . $image_1);
    unlink($upload_dir . $image_2);
    unlink($upload_dir . $image_3);
    echo 'upload_failed';
}

//statement un savienojums tiek aizvērti
$stmt->close();
$conn->close();
?>
