45 lines
1.3 KiB
PHP
45 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../../../../src/Core/Db.php';
|
|
require_once __DIR__ . '/../../../../src/Modules/Bugtracker/BugRepo.php';
|
|
|
|
use Deploymentcenter\Core\Db;
|
|
use Deploymentcenter\Modules\Bugtracker\BugRepo;
|
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
header('Access-Control-Allow-Origin: *');
|
|
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Agent-Token');
|
|
header('Access-Control-Allow-Methods: GET, OPTIONS');
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
|
|
http_response_code(200);
|
|
exit;
|
|
}
|
|
|
|
try {
|
|
$config = require __DIR__ . '/../../../../config/config.php';
|
|
$db = Db::connect($config['db']);
|
|
|
|
$repo = new BugRepo($db);
|
|
$projects = $repo->getProjects();
|
|
|
|
echo json_encode([
|
|
'status' => 'success',
|
|
'count' => count($projects),
|
|
'projects' => array_map(function($p) {
|
|
return [
|
|
'id' => (int)$p['id'],
|
|
'slug' => $p['slug'],
|
|
'name' => $p['name'],
|
|
'notes' => $p['notes'] ?? null,
|
|
];
|
|
}, $projects),
|
|
], JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
|
|
|
} catch (Throwable $t) {
|
|
http_response_code(500);
|
|
echo json_encode(['status' => 'error', 'message' => 'Failed to fetch projects: ' . $t->getMessage()]);
|
|
}
|