| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- // Αρχείο: /var/www/html/hockey-cms/search.php
- if (session_status() === PHP_SESSION_NONE) { session_start(); }
- require_once __DIR__ . '/vendor/autoload.php';
- require_once __DIR__ . '/config/database.php';
- // --- Μηχανισμός Αλλαγής Γλώσσας ---
- if (isset($_GET['lang']) && in_array($_GET['lang'], ['el', 'en'])) {
- $_SESSION['lang'] =$_GET['lang'];
- }
- $current_lang =$_SESSION['lang'] ?? 'el';
- // --- Φόρτωση Settings (Theme, Logo, Title) ---
- $active_theme = 'default';
- $site_logo = '';$site_title = 'Hockey CMS';
- try {
- $stmtSettings =$pdo->query("SELECT `key`, value FROM settings WHERE `key` IN ('active_theme', 'site_logo', 'site_title')");
- while ($row =$stmtSettings->fetch(PDO::FETCH_ASSOC)) {
- if ($row['key'] === 'active_theme' && !empty($row['value'])) {
- $active_theme = trim($row['value']);
- } elseif ($row['key'] === 'site_logo') {
- $site_logo =$row['value'];
- } elseif ($row['key'] === 'site_title' && !empty($row['value'])) {
- $site_title = 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';
- }
- $loader = new \Twig\Loader\FilesystemLoader($theme_dir);
- $twig = new \Twig\Environment($loader, [
- 'cache' => false,
- ]);
- $twig->addGlobal('session',$_SESSION);
- $twig->addGlobal('current_lang',$current_lang);
- $twig->addGlobal('site_logo',$site_logo);
- // --- Φόρτωση Δυναμικών Κειμένων 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);
- // 1. Παίρνουμε τον όρο αναζήτησης
- $search_query = isset($_GET['q']) ? trim($_GET['q']) : '';
- try {
- // 2. Φόρτωση κατηγοριών για το sidebar
- $categories = [];
- try {
- $categoriesRaw =$pdo->query("SELECT id, parent_id, name_el, name_en, sort_order FROM categories ORDER BY sort_order ASC, name_el ASC")->fetchAll(PDO::FETCH_ASSOC);
- foreach ($categoriesRaw as $cat) {$cat['display_name'] = ($current_lang === 'en' && !empty($cat['name_en'])) ? $cat['name_en'] :$cat['name_el'];
- $categories[] =$cat;
- }
- } catch (Exception $e) {}
- $products = [];
- if (!empty($search_query)) {
- $words = preg_split('/\s+/', mb_strtolower($search_query, 'UTF-8'));
- $words = array_filter($words, function($w) { return mb_strlen(trim($w)) > 0; });
- if (!empty($words)) {
- $whereClauses = [];$params = [];
- foreach ($words as $word) {$like = '%' . $word . '\%';$whereClauses[] = "(LOWER(p.title) LIKE ? OR LOWER(p.description) LIKE ? OR LOWER(p.search_tags) LIKE ?)";
- array_push($params,$like, $like,$like);
- }
- $searchCondition = "(" . implode(" OR ", $whereClauses) . ")";
- $sql = "
- SELECT p.id, p.title, p.price, p.created_at, pi.image_path
- FROM products p
- LEFT JOIN product_images pi ON (p.id = pi.product_id AND pi.is_primary = 1)
- WHERE p.status = 'available' AND " . $searchCondition . "
- ORDER BY p.id DESC
- ";
- // --- DEBUG SECTION ---
- echo "<div style='background:#111; color:#0f0; padding:15px; font-family:monospace; z-index:99999; position:relative;'>";
- echo "<strong>DEBUG INFO:</strong><br>";
- echo "Search Query: " . htmlspecialchars($search_query) . "<br>";
- echo "SQL: " . htmlspecialchars($sql) . "<br>";
- echo "Params: "; print_r($params);
- echo "</div>";
- // ---------------------
- $stmt = $pdo->prepare($sql);
- $stmt->execute($params);
- $products =$stmt->fetchAll(PDO::FETCH_ASSOC);
- echo "<div style='background:#111; color:#ff0; padding:15px; font-family:monospace; z-index:99999; position:relative;'>";
- echo "Products Found Count: " . count($products) . "<br>";
- echo "</div>";
- }
- }
- // 4. Αποστολή δεδομένων στο Twig
- echo $twig->render('index.html.twig', [
- 'site_title' => $site_title,
- 'categories' => $categories,
- 'products' => $products,
- 'search_query' => $search_query
- ]);
- } catch (Exception $e) {
- die("Σφάλμα αναζήτησης: " . $e->getMessage());
- }
|