exec("CREATE TABLE IF NOT EXISTS channels (id INT AUTO_INCREMENT PRIMARY KEY, channel_identifier VARCHAR(255) NOT NULL UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL);"); $pdo->exec("CREATE TABLE IF NOT EXISTS scheduled_posts (id INT AUTO_INCREMENT PRIMARY KEY, channel_id INT NOT NULL, message TEXT NOT NULL, scheduled_at DATETIME NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (channel_id) REFERENCES channels(id) ON DELETE CASCADE);"); $pdo->exec("CREATE TABLE IF NOT EXISTS settings (setting_key VARCHAR(255) PRIMARY KEY, setting_value TEXT);"); $pdo->exec("CREATE TABLE IF NOT EXISTS webhook_events (id INT AUTO_INCREMENT PRIMARY KEY, post_id INT, status VARCHAR(50), message TEXT, raw_payload TEXT, received_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, KEY (post_id));"); // Simple migration to rename telegram_id to channel_identifier for backwards compatibility $checkColumn = $pdo->query("SHOW COLUMNS FROM `channels` LIKE 'telegram_id'"); if ($checkColumn->rowCount() > 0) { $pdo->exec("ALTER TABLE `channels` CHANGE `telegram_id` `channel_identifier` VARCHAR(255) NOT NULL UNIQUE;"); } } catch (PDOException $e) { // In a real app, log this error. For now, we die. die("Database migration failed: " . $e->getMessage()); } // Fetch channel count $stmt = $pdo->query("SELECT COUNT(*) FROM channels"); $channel_count = $stmt->fetchColumn(); require_once __DIR__ . '/layout_header.php'; ?>

Dashboard

Total Channels

Add Channel