- v1.1.0 - Redesign
This commit is contained in:
+46
-5
@@ -18,8 +18,8 @@ function db(): PDO {
|
||||
]);
|
||||
$pdo->exec("PRAGMA journal_mode=WAL; PRAGMA foreign_keys=ON; PRAGMA synchronous=NORMAL;");
|
||||
if ($isNew) { _schema($pdo); _seed($pdo); }
|
||||
// Always ensure the edit_requests table exists (for existing DBs)
|
||||
_ensureEditRequests($pdo);
|
||||
// Always ensure app upgrade tables/columns exist (for existing DBs)
|
||||
_ensureAppUpgrades($pdo);
|
||||
if (file_exists(DB_FILE)) @chmod(DB_FILE, 0666);
|
||||
return $pdo;
|
||||
}
|
||||
@@ -31,8 +31,20 @@ function qone(string $sql, array $p=[]): ?array { $r=qr($sql,$p)->fetch(); retu
|
||||
function qval(string $sql, array $p=[]): mixed { return qr($sql,$p)->fetchColumn(); }
|
||||
function qrun(string $sql, array $p=[]): int { $s=db()->prepare($sql); $s->execute($p); return (int)db()->lastInsertId(); }
|
||||
|
||||
/* ── Ensure edit requests table exists on old DBs ─── */
|
||||
function _ensureEditRequests(PDO $db): void {
|
||||
/* ── Ensure upgraded tables/columns exist on old DBs ─── */
|
||||
function _hasColumn(PDO $db, string $table, string $column): bool {
|
||||
$cols = $db->query("PRAGMA table_info($table)")->fetchAll(PDO::FETCH_ASSOC);
|
||||
foreach ($cols as $col) {
|
||||
if (($col['name'] ?? '') === $column) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function _ensureAppUpgrades(PDO $db): void {
|
||||
if (!_hasColumn($db, 'businesses', 'video_url')) {
|
||||
$db->exec("ALTER TABLE businesses ADD COLUMN video_url TEXT NOT NULL DEFAULT ''");
|
||||
}
|
||||
|
||||
$db->exec("
|
||||
CREATE TABLE IF NOT EXISTS business_edit_requests (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
@@ -46,7 +58,24 @@ function _ensureEditRequests(PDO $db): void {
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
reviewed_at TEXT
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS business_claim_requests (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
business_id INTEGER NOT NULL REFERENCES businesses(id) ON DELETE CASCADE,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
contact_phone TEXT NOT NULL DEFAULT '',
|
||||
status TEXT NOT NULL DEFAULT 'pending',
|
||||
admin_notes TEXT NOT NULL DEFAULT '',
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
reviewed_at TEXT
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_claim_requests_status ON business_claim_requests(status, created_at);
|
||||
");
|
||||
|
||||
$defaults = [
|
||||
'home_random_interval' => '2hours',
|
||||
];
|
||||
$stmt = $db->prepare("INSERT OR IGNORE INTO settings(key,value)VALUES(?,?)");
|
||||
foreach ($defaults as $k => $v) $stmt->execute([$k, $v]);
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════════════════
|
||||
@@ -84,6 +113,7 @@ function _schema(PDO $db): void {
|
||||
phone TEXT NOT NULL DEFAULT '',
|
||||
email TEXT NOT NULL DEFAULT '',
|
||||
website TEXT NOT NULL DEFAULT '',
|
||||
video_url TEXT NOT NULL DEFAULT '',
|
||||
hours TEXT NOT NULL DEFAULT '{}',
|
||||
lat REAL NOT NULL DEFAULT 39.4364,
|
||||
lng REAL NOT NULL DEFAULT -78.9762,
|
||||
@@ -108,6 +138,16 @@ function _schema(PDO $db): void {
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
reviewed_at TEXT
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS business_claim_requests(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
business_id INTEGER NOT NULL REFERENCES businesses(id) ON DELETE CASCADE,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
contact_phone TEXT NOT NULL DEFAULT '',
|
||||
status TEXT NOT NULL DEFAULT 'pending',
|
||||
admin_notes TEXT NOT NULL DEFAULT '',
|
||||
created_at TEXT NOT NULL DEFAULT(datetime('now')),
|
||||
reviewed_at TEXT
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS reviews(
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
business_id INTEGER NOT NULL REFERENCES businesses(id) ON DELETE CASCADE,
|
||||
@@ -198,7 +238,8 @@ function _seed(PDO $db): void {
|
||||
foreach (['registration_enabled'=>'1','site_name'=>'Discover Keyser WV',
|
||||
'site_tagline'=>'The Friendliest City in the U.S.A.',
|
||||
'contact_email'=>'info@discoverkeyser.com',
|
||||
'events_require_approval'=>'1'] as $k=>$v)
|
||||
'events_require_approval'=>'1',
|
||||
'home_random_interval'=>'2hours'] as $k=>$v)
|
||||
qrun("INSERT OR IGNORE INTO settings(key,value)VALUES(?,?)",[$k,$v]);
|
||||
|
||||
/* Admin user — password "password123" */
|
||||
|
||||
Reference in New Issue
Block a user