query("SELECT * FROM settings"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { if (isset($row['key']) && $row['key'] === 'active_theme' && !empty($row['value'])) { $active_theme = trim($row['value']); } } } catch (Exception $e) {} $theme_dir = __DIR__ . '/themes/' . $active_theme; if (!is_dir($theme_dir)) { $active_theme = 'default'; $theme_dir = __DIR__ . '/themes/default'; } // --- Αρχικοποίηση Twig --- $loader = new \Twig\Loader\FilesystemLoader($theme_dir); $twig = new \Twig\Environment($loader, ['cache' => false]); $twig->addGlobal('session', $_SESSION); $twig->addGlobal('current_lang', $current_lang); // --- Φόρτωση Δυναμικών Κειμένων Site --- $siteTexts = []; try { $text_column = ($current_lang === 'en') ? 'text_value_en' : 'text_value_el'; $textsStmt = $pdo->query("SELECT text_key, {$text_column} as text_value FROM site_texts"); while ($row = $textsStmt->fetch(PDO::FETCH_ASSOC)) { $siteTexts[$row['text_key']] = $row['text_value']; } } catch (Exception $e) {} $twig->addGlobal('text', $siteTexts); // --- Φόρτωση Logo Site --- $site_logo = ''; try { $stmtSettings = $pdo->query("SELECT * FROM settings"); while ($row = $stmtSettings->fetch(PDO::FETCH_ASSOC)) { if (isset($row['key']) && $row['key'] === 'site_logo') { $site_logo = $row['value']; } } } catch (Exception $e) {} $twig->addGlobal('site_logo', $site_logo); // --- Μεταφράσεις για τη φόρμα σύνδεσης --- $translations = [ 'el' => [ 'page_title' => 'Σύνδεση - Hockey CMS', 'heading' => 'Καλώς ήρθατε', 'subheading' => 'Συνδεθείτε στον λογαριασμό σας', 'username' => 'Email ή Username', 'password' => 'Κωδικός Πρόσβασης', 'btn_login' => 'Σύνδεση', 'btn_google' => 'Σύνδεση με Google', 'register_text' => 'Δεν έχετε λογαριασμό;', 'register_link' => 'Εγγραφείτε εδώ', 'err_empty' => 'Παρακαλώ συμπληρώστε όλα τα πεδία.', 'err_invalid' => 'Λάθος στοιχεία σύνδεσης.' ], 'en' => [ 'page_title' => 'Login - Hockey CMS', 'heading' => 'Welcome Back', 'subheading' => 'Sign in to your account', 'username' => 'Email or Username', 'password' => 'Password', 'btn_login' => 'Sign In', 'btn_google' => 'Sign in with Google', 'register_text' => "Don't have an account?", 'register_link' => 'Register here', 'err_empty' => 'Please fill in all fields.', 'err_invalid' => 'Invalid login credentials.' ] ]; $t = $translations[$current_lang]; $error = ''; // --- Διαχείριση POST (Κλασικό Login) --- if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = trim($_POST['username'] ?? ''); $password = $_POST['password'] ?? ''; if (empty($username) || empty($password)) { $error = $t['err_empty']; } else { $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? OR email = ?"); $stmt->execute([$username, $username]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user && password_verify($password, $user['password'])) { session_regenerate_id(true); $_SESSION['user_id'] = $user['id']; $_SESSION['username'] = $user['username']; $_SESSION['role_id'] = $user['role_id']; $_SESSION['first_name'] = $user['first_name'] ?? ''; $_SESSION['is_seller'] = $user['is_seller'] ?? 0; if ($user['role_id'] == 1 || $user['is_seller'] == 1) { header("Location: admin/index.php"); } else { header("Location: index.php"); } exit; } else { $error = $t['err_invalid']; } } } // Render μέσω Twig από τον φάκελο του ενεργού theme echo $twig->render('login.html.twig', [ 't' => $t, 'current_lang' => $current_lang, 'error' => $error, 'site_title' => 'Hockey Gear CMS' ]);