Initial commit

This commit is contained in:
2026-05-17 05:22:06 +03:00
commit ca4d00c895
155 changed files with 45216 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
<?php
/**
* AegisOne Engineering — Установка / обновление базы данных
*
* Запускает миграцию из data/migration.sql
* Безопасно при повторном запуске (IF NOT EXISTS, ON DUPLICATE KEY UPDATE)
*/
require_once __DIR__ . '/../data/db-config.php';
try {
$pdo = new PDO(
'mysql:host=' . DB_HOST . ';port=' . DB_PORT . ';dbname=' . DB_NAME . ';charset=' . DB_CHARSET,
DB_USER,
DB_PASS,
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
$sql = file_get_contents(__DIR__ . '/../data/migration.sql');
$statements = array_filter(array_map('trim', explode(';', $sql)));
$created = 0;
$inserted = 0;
$errors = 0;
foreach ($statements as $query) {
if ($query === '' || strpos($query, '--') === 0) continue;
try {
$pdo->exec($query);
if (stripos($query, 'CREATE') !== false) $created++;
if (stripos($query, 'INSERT') !== false) $inserted++;
} catch (\Throwable $e) {
$errors++;
}
}
echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Миграция — AegisOne</title>';
echo '<style>body{font-family:Inter,sans-serif;background:#0D1B2A;color:#E8EDF2;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;}';
echo '.box{background:#1B2838;border:1px solid #2a3a4a;border-radius:12px;padding:40px;max-width:500px;text-align:center;}';
echo 'h1{color:#4DA8DA;margin:0 0 8px;font-size:22px;}p{color:#A0B4C8;font-size:14px;margin:0 0 20px;line-height:1.6;}';
echo '.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0;}';
echo '.stat{background:#0D1B2A;border-radius:8px;padding:16px;text-align:center;}';
echo '.stat-value{font-size:28px;font-weight:700;color:#00ADEF;}';
echo '.stat-label{font-size:11px;color:#6B8299;text-transform:uppercase;letter-spacing:0.1em;margin-top:4px;}';
echo '.btn{display:inline-block;background:linear-gradient(135deg,#00ADEF,#0095cc);color:#fff;padding:12px 28px;border-radius:8px;text-decoration:none;font-weight:600;font-size:14px;margin-top:16px;}';
echo '</style></head><body><div class="box">';
echo '<h1>✅ Миграция завершена</h1>';
echo '<p>База данных <strong>' . htmlspecialchars(DB_NAME) . '</strong> обновлена.</p>';
echo '<div class="stats">';
echo '<div class="stat"><div class="stat-value">' . $created . '</div><div class="stat-label">Таблиц</div></div>';
echo '<div class="stat"><div class="stat-value">' . $inserted . '</div><div class="stat-label">Записей</div></div>';
echo '<div class="stat"><div class="stat-value">' . $errors . '</div><div class="stat-label">Ошибок</div></div>';
echo '</div>';
echo '<a href="/service/" class="btn">Войти в систему</a>';
echo '</div></body></html>';
} catch (\Throwable $e) {
echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Ошибка — AegisOne</title>';
echo '<style>body{font-family:Inter,sans-serif;background:#0D1B2A;color:#E8EDF2;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;}';
echo '.box{background:#1B2838;border:1px solid #ef4444;border-radius:12px;padding:40px;max-width:500px;text-align:center;}';
echo 'h1{color:#ef4444;margin:0 0 8px;font-size:22px;}p{color:#A0B4C8;font-size:14px;line-height:1.6;}</style></head><body>';
echo '<div class="box"><h1>❌ Ошибка подключения</h1><p>' . htmlspecialchars($e->getMessage()) . '</p></div></body></html>';
}