setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Create tables $pdo->exec(" CREATE TABLE IF NOT EXISTS tires ( id TEXT PRIMARY KEY, name TEXT NOT NULL, brand TEXT NOT NULL, country TEXT, category TEXT, width INTEGER, aspect_ratio INTEGER, rim INTEGER, size_str TEXT, speed_index TEXT, load_index TEXT, season TEXT, season_fa TEXT, warranty_months INTEGER, production_year TEXT, fuel_efficiency TEXT, wet_grip TEXT, noise_level TEXT, price INTEGER, discount_percent INTEGER DEFAULT 0, stock INTEGER DEFAULT 0, rating REAL DEFAULT 5.0, reviews_count INTEGER DEFAULT 0, vehicles TEXT, description TEXT, features TEXT, image TEXT, is_featured INTEGER DEFAULT 0, is_best_seller INTEGER DEFAULT 0 ); CREATE TABLE IF NOT EXISTS brands ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL, country TEXT, logo TEXT, desc TEXT ); CREATE TABLE IF NOT EXISTS articles ( id TEXT PRIMARY KEY, title TEXT NOT NULL, category TEXT, read_time TEXT, date TEXT, summary TEXT, content TEXT, icon TEXT ); CREATE TABLE IF NOT EXISTS pressure_guide ( id INTEGER PRIMARY KEY AUTOINCREMENT, vehicle TEXT NOT NULL, front_psi TEXT, rear_psi TEXT, standard_tire TEXT ); CREATE TABLE IF NOT EXISTS consultations ( id TEXT PRIMARY KEY, name TEXT NOT NULL, phone TEXT NOT NULL, car TEXT, message TEXT, created_at TEXT, status TEXT DEFAULT 'جدید', admin_note TEXT DEFAULT '' ); CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value TEXT ); "); // Check if store.json exists to migrate existing data, else use init.php arrays $sourceData = []; if (file_exists(__DIR__ . '/store.json')) { $sourceData = json_decode(file_get_contents(__DIR__ . '/store.json'), true); } if (empty($sourceData['tires'])) { require __DIR__ . '/init.php'; $sourceData = $data; } // Seed tires $tireStmt = $pdo->prepare(" INSERT OR REPLACE INTO tires ( id, name, brand, country, category, width, aspect_ratio, rim, size_str, speed_index, load_index, season, season_fa, warranty_months, production_year, fuel_efficiency, wet_grip, noise_level, price, discount_percent, stock, rating, reviews_count, vehicles, description, features, image, is_featured, is_best_seller ) VALUES ( :id, :name, :brand, :country, :category, :width, :aspect_ratio, :rim, :size_str, :speed_index, :load_index, :season, :season_fa, :warranty_months, :production_year, :fuel_efficiency, :wet_grip, :noise_level, :price, :discount_percent, :stock, :rating, :reviews_count, :vehicles, :description, :features, :image, :is_featured, :is_best_seller ) "); foreach ($sourceData['tires'] as $t) { $tireStmt->execute([ ':id' => $t['id'], ':name' => $t['name'], ':brand' => $t['brand'], ':country' => $t['country'] ?? '', ':category' => $t['category'] ?? '', ':width' => intval($t['width'] ?? 0), ':aspect_ratio' => intval($t['aspect_ratio'] ?? 0), ':rim' => intval($t['rim'] ?? 0), ':size_str' => $t['size_str'] ?? '', ':speed_index' => $t['speed_index'] ?? '', ':load_index' => $t['load_index'] ?? '', ':season' => $t['season'] ?? 'four_season', ':season_fa' => $t['season_fa'] ?? 'چهار فصل', ':warranty_months' => intval($t['warranty_months'] ?? 36), ':production_year' => $t['production_year'] ?? '2026', ':fuel_efficiency' => $t['fuel_efficiency'] ?? 'B', ':wet_grip' => $t['wet_grip'] ?? 'A', ':noise_level' => $t['noise_level'] ?? '69 dB', ':price' => intval($t['price'] ?? 0), ':discount_percent' => intval($t['discount_percent'] ?? 0), ':stock' => intval($t['stock'] ?? 0), ':rating' => floatval($t['rating'] ?? 5.0), ':reviews_count' => intval($t['reviews_count'] ?? 0), ':vehicles' => json_encode($t['vehicles'] ?? [], JSON_UNESCAPED_UNICODE), ':description' => $t['description'] ?? '', ':features' => json_encode($t['features'] ?? [], JSON_UNESCAPED_UNICODE), ':image' => $t['image'] ?? '', ':is_featured' => !empty($t['is_featured']) ? 1 : 0, ':is_best_seller' => !empty($t['is_best_seller']) ? 1 : 0 ]); } // Seed brands $brandStmt = $pdo->prepare("INSERT OR REPLACE INTO brands (name, country, logo, desc) VALUES (:name, :country, :logo, :desc)"); foreach ($sourceData['brands'] as $b) { $brandStmt->execute([ ':name' => $b['name'], ':country' => $b['country'] ?? '', ':logo' => $b['logo'] ?? '', ':desc' => $b['desc'] ?? '' ]); } // Seed articles $artStmt = $pdo->prepare("INSERT OR REPLACE INTO articles (id, title, category, read_time, date, summary, content, icon) VALUES (:id, :title, :category, :read_time, :date, :summary, :content, :icon)"); foreach ($sourceData['articles'] as $a) { $artStmt->execute([ ':id' => $a['id'], ':title' => $a['title'], ':category' => $a['category'] ?? '', ':read_time' => $a['read_time'] ?? '', ':date' => $a['date'] ?? '', ':summary' => $a['summary'] ?? '', ':content' => $a['content'] ?? '', ':icon' => $a['icon'] ?? 'file-text' ]); } // Seed pressure_guide $pgStmt = $pdo->prepare("INSERT INTO pressure_guide (vehicle, front_psi, rear_psi, standard_tire) VALUES (:vehicle, :front_psi, :rear_psi, :standard_tire)"); $pdo->exec("DELETE FROM pressure_guide"); foreach ($sourceData['pressure_guide'] as $pg) { $pgStmt->execute([ ':vehicle' => $pg['vehicle'], ':front_psi' => $pg['front_psi'] ?? '', ':rear_psi' => $pg['rear_psi'] ?? '', ':standard_tire' => $pg['standard_tire'] ?? '' ]); } // Seed consultations $cStmt = $pdo->prepare("INSERT OR REPLACE INTO consultations (id, name, phone, car, message, created_at, status, admin_note) VALUES (:id, :name, :phone, :car, :message, :created_at, :status, :admin_note)"); foreach ($sourceData['consultations'] ?? [] as $c) { $cStmt->execute([ ':id' => $c['id'], ':name' => $c['name'], ':phone' => $c['phone'], ':car' => $c['car'] ?? '', ':message' => $c['message'] ?? '', ':created_at' => $c['created_at'] ?? date('Y-m-d H:i'), ':status' => $c['status'] ?? 'جدید', ':admin_note' => $c['admin_note'] ?? '' ]); } // Seed settings $settings = $sourceData['settings'] ?? [ "site_phone" => "021-88889900", "emergency_phone" => "09123456789", "announcement" => "تضمین اصالت کالا و گارانتی معتبر شرکتی تا ۶۰ ماه | تاریخ تولید روز (2026)", "central_address" => "تهران، خیابان آزادی، تقاطع یادگار امام، مجتمع تایر قاسمی" ]; $setStmt = $pdo->prepare("INSERT OR REPLACE INTO settings (key, value) VALUES (:key, :value)"); foreach ($settings as $k => $v) { $setStmt->execute([':key' => $k, ':value' => $v]); } echo "SQLite database initialized and seeded successfully.\n";