60 lines
2.4 KiB
PHP
Executable File
60 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
$autoloadPath = __DIR__ . '/../vendor/autoload.php';
|
|
if (!file_exists($autoloadPath)) {
|
|
http_response_code(500);
|
|
die("FATAL ERROR: Composer autoloader not found. Please run 'composer install' in the project root.");
|
|
}
|
|
require $autoloadPath;
|
|
|
|
require __DIR__ . '/../config.php';
|
|
|
|
use App\Router;
|
|
use App\Controllers\ItemController;
|
|
use App\Controllers\CategoryController;
|
|
use App\Database;
|
|
|
|
// Initialize Database (ensures tables exist)
|
|
Database::getInstance();
|
|
|
|
$router = new Router();
|
|
|
|
// --- Language Switch Route ---
|
|
$router->addRoute('GET', '/lang/{locale}', function ($locale) {
|
|
if (in_array($locale, SUPPORTED_LOCALES)) {
|
|
$_SESSION['locale'] = $locale;
|
|
}
|
|
// Redirect back to the page the user came from, or home
|
|
$referer = $_SERVER['HTTP_REFERER'] ?? '/';
|
|
header("Location: " . $referer);
|
|
exit;
|
|
});
|
|
|
|
// --- Web Routes (Full Page/Initial Load) ---
|
|
$router->addRoute('GET', '/', [ItemController::class, 'overview']);
|
|
$router->addRoute('GET', '/categories', [CategoryController::class, 'index']);
|
|
$router->addRoute('GET', '/parts', [ItemController::class, 'addForm']);
|
|
$router->addRoute('GET', '/print/{id:\d+}', [ItemController::class, 'printQR']);
|
|
|
|
// --- API Routes (AJAX Content) ---
|
|
// These routes return only the Twig block content, not the full layout.
|
|
$router->addRoute('GET', '/api/items', [ItemController::class, 'listItems']);
|
|
$router->addRoute('GET', '/api/items/{id:\d+}', [ItemController::class, 'getItem']);
|
|
$router->addRoute('GET', '/api/categories', [CategoryController::class, 'listCategories']);
|
|
$router->addRoute('GET', '/api/categories/list', [CategoryController::class, 'listCategoriesJson']);
|
|
$router->addRoute('GET', '/api/categories/{id}', [CategoryController::class, 'getCategory']);
|
|
$router->addRoute('GET', '/api/parts', [ItemController::class, 'renderAddForm']);
|
|
|
|
// --- API CRUD Routes ---
|
|
// Items
|
|
$router->addRoute('POST', '/api/items', [ItemController::class, 'create']);
|
|
$router->addRoute('POST', '/api/items/{id:\d+}', [ItemController::class, 'update']);
|
|
$router->addRoute('DELETE', '/api/items/{id:\d+}', [ItemController::class, 'delete']);
|
|
|
|
// Categories
|
|
$router->addRoute('POST', '/api/categories', [CategoryController::class, 'create']);
|
|
$router->addRoute('PUT', '/api/categories/{id:\d+}', [CategoryController::class, 'update']);
|
|
$router->addRoute('DELETE', '/api/categories/{id:\d+}', [CategoryController::class, 'delete']);
|
|
|
|
|
|
$router->dispatch(); |