212 lines
7.1 KiB
PHP
212 lines
7.1 KiB
PHP
<?php
|
|
// data/init_sqlite.php
|
|
$dbPath = __DIR__ . '/database.sqlite';
|
|
$pdo = new PDO("sqlite:" . $dbPath);
|
|
$pdo->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";
|