| Server IP : 188.114.97.3 / Your IP : 216.73.216.143 Web Server : Apache System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64 User : ( 3194769) PHP Version : 8.5.12 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /polana/ |
Upload File : |
<?php
declare(strict_types=1);
require_once __DIR__ . '/includes/functions.php';
function table_exists(string $table): bool
{
try {
$stmt = db()->prepare(
"SELECT COUNT(*) FROM information_schema.tables
WHERE table_schema = ? AND table_name = ?"
);
$stmt->execute([DB_NAME, $table]);
return (int)$stmt->fetchColumn() > 0;
} catch (Throwable $e) {
return false;
}
}
$installed = false;
if (table_exists('users')) {
try {
$installed = (int)db()->query('SELECT COUNT(*) FROM users')->fetchColumn() > 0;
} catch (Throwable $e) {
$installed = false;
}
}
$error = '';
$success = false;
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !$installed) {
$adminUser = trim((string)($_POST['username'] ?? 'admin'));
$adminName = trim((string)($_POST['name'] ?? 'Administrator'));
$adminPass = (string)($_POST['password'] ?? '');
$siteUrl = rtrim(trim((string)($_POST['site_url'] ?? '')), '/');
if (strlen($adminUser) < 3) {
$error = 'Login administratora musi mieć minimum 3 znaki.';
} elseif (strlen($adminPass) < 10) {
$error = 'Hasło administratora musi mieć minimum 10 znaków.';
} else {
try {
$sql = file_get_contents(__DIR__ . '/database.sql');
$parts = preg_split('/;\s*(?:\r?\n|$)/', (string)$sql);
foreach ($parts as $part) {
$part = trim($part);
if ($part !== '') {
db()->exec($part);
}
}
$defaults = [
'site_name' => 'Moja Polana Smaków',
'owner_name' => 'Andrzej Polan',
'site_url' => $siteUrl,
'phone' => '',
'email' => '',
'address' => '',
'postal_code' => '',
'city' => '',
'google_maps_url' => '',
'facebook_url' => '',
'instagram_url' => '',
'opening_hours' => '',
'price_range' => '$$',
'home_title' => 'Moja Polana Smaków',
'home_description' => 'Moja Polana Smaków – restauracja Andrzeja Polana. Sprawdź aktualne menu i informacje o restauracji.',
'home_lead' => 'Autorska kuchnia, sezonowe składniki i smaki, do których chce się wracać.',
'home_about_title' => 'Kuchnia, która ma smak',
'home_about_text' => 'Miejsce stworzone wokół dobrego jedzenia, świeżych produktów i kuchni, która łączy prostotę z charakterem.',
'contact_title' => 'Kontakt | Moja Polana Smaków',
'contact_description' => 'Kontakt, adres i godziny otwarcia restauracji Moja Polana Smaków.',
];
$stmtSetting = db()->prepare(
'INSERT INTO settings (setting_key, setting_value)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE setting_value = VALUES(setting_value)'
);
foreach ($defaults as $key => $value) {
$stmtSetting->execute([$key, $value]);
}
$stmt = db()->prepare(
'INSERT INTO users (username, password_hash, name, role)
VALUES (?, ?, ?, "admin")'
);
$stmt->execute([
$adminUser,
password_hash($adminPass, PASSWORD_DEFAULT),
$adminName,
]);
$stmt = db()->prepare(
'INSERT INTO menus
(name, slug, status, valid_from, intro, seo_title, seo_description)
VALUES (?, ?, "draft", ?, ?, ?, ?)'
);
$stmt->execute([
'Menu startowe',
'menu-startowe',
date('Y-m-01'),
'Poznaj nasze aktualne menu.',
'Menu | Moja Polana Smaków',
'Aktualne menu restauracji Moja Polana Smaków.',
]);
$success = true;
} catch (Throwable $e) {
$error = 'Instalacja nie powiodła się: ' . $e->getMessage();
}
}
}
?>
<!doctype html>
<html lang="pl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex,nofollow">
<title>Instalacja – Moja Polana Smaków</title>
<link rel="stylesheet" href="/assets/css/admin.css">
<!-- TKLM-TRACKING-AUTO -->
<script defer src="/assets/tklm-tracking.js?v=2"></script>
<!-- /TKLM-TRACKING-AUTO -->
</head>
<body class="install-body">
<div class="install-card">
<img src="/assets/img/logo.png" alt="Moja Polana Smaków" class="install-logo">
<h1>Instalacja strony</h1>
<?php if ($installed): ?>
<div class="flash flash-success">
Instalacja jest już zakończona. Usuń plik <strong>install.php</strong> z FTP.
</div>
<a class="btn btn-primary" href="/admin/">Przejdź do panelu</a>
<?php elseif ($success): ?>
<div class="flash flash-success">
Gotowe. Baza i konto administratora zostały utworzone.
</div>
<p><strong>Teraz usuń plik install.php z FTP.</strong></p>
<a class="btn btn-primary" href="/admin/login.php">Zaloguj się</a>
<?php else: ?>
<?php if ($error): ?>
<div class="flash flash-error"><?= e($error) ?></div>
<?php endif; ?>
<p class="muted">
Połączenie: MySQL 8.0 / <strong><?= e(DB_NAME) ?></strong>.
</p>
<form method="post" class="form-grid">
<label>
Adres strony
<input type="url" name="site_url" placeholder="https://twojadomena.pl"
value="<?= e(current_scheme() . '://' . ($_SERVER['HTTP_HOST'] ?? '')) ?>">
</label>
<label>
Login administratora
<input type="text" name="username" value="admin" required minlength="3">
</label>
<label>
Nazwa
<input type="text" name="name" value="Administrator">
</label>
<label>
Hasło administratora
<input type="password" name="password" required minlength="10" autocomplete="new-password">
</label>
<button class="btn btn-primary" type="submit">Utwórz bazę i panel</button>
</form>
<?php endif; ?>
</div>
</body>
</html>