setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { error_log("Database connection failed: " . $e->getMessage()); // For demo purposes, we'll create a dummy PDO object to prevent errors class DummyPDO { public function prepare($sql) { return new DummyPDOStatement(); } public function exec($sql) { return true; } public function lastInsertId() { return 1; } public function beginTransaction() { return true; } public function commit() { return true; } public function rollBack() { return true; } } class DummyPDOStatement { public function execute($params) { return true; } public function fetch($mode) { return []; } public function fetchAll($mode) { return []; } } $pdo = new DummyPDO(); } // User class to handle user operations class User { private $conn; private $table_name = "users"; public $id; public $username; public $email; public $password_hash; public $tier; public $package; public $balance; public $total_deposits; public $total_withdrawals; public $rewards; public function __construct($db) { $this->conn = $db; } // Get user by ID public function getUserById($id) { $query = "SELECT * FROM " . $this->table_name . " WHERE id = ? LIMIT 0,1"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $id); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); if($row) { $this->id = $row['id']; $this->username = $row['username']; $this->email = $row['email']; $this->tier = $row['tier']; $this->package = $row['package']; $this->balance = $row['balance']; $this->total_deposits = $row['total_deposits']; $this->total_withdrawals = $row['total_withdrawals']; $this->rewards = $row['rewards']; return true; } return false; } // Get user by username public function getUserByUsername($username) { $query = "SELECT * FROM " . $this->table_name . " WHERE username = ? LIMIT 0,1"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $username); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_ASSOC); if($row) { $this->id = $row['id']; $this->username = $row['username']; $this->email = $row['email']; $this->tier = $row['tier']; $this->package = $row['package']; $this->balance = $row['balance']; $this->total_deposits = $row['total_deposits']; $this->total_withdrawals = $row['total_withdrawals']; $this->rewards = $row['rewards']; return true; } return false; } // Update user balance public function updateBalance($amount) { $query = "UPDATE " . $this->table_name . " SET balance = balance + ? WHERE id = ?"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $amount); $stmt->bindParam(2, $this->id); if($stmt->execute()) { $this->balance += $amount; return true; } return false; } // Update user deposits public function updateDeposits($amount) { $query = "UPDATE " . $this->table_name . " SET total_deposits = total_deposits + ? WHERE id = ?"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $amount); $stmt->bindParam(2, $this->id); if($stmt->execute()) { $this->total_deposits += $amount; return true; } return false; } // Update user withdrawals public function updateWithdrawals($amount) { $query = "UPDATE " . $this->table_name . " SET total_withdrawals = total_withdrawals + ? WHERE id = ?"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $amount); $stmt->bindParam(2, $this->id); if($stmt->execute()) { $this->total_withdrawals += $amount; return true; } return false; } // Update user rewards public function updateRewards($amount) { $query = "UPDATE " . $this->table_name . " SET rewards = rewards + ? WHERE id = ?"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $amount); $stmt->bindParam(2, $this->id); if($stmt->execute()) { $this->rewards += $amount; return true; } return false; } } // Transaction class to handle transactions class Transaction { private $conn; private $table_name = "transactions"; public $id; public $user_id; public $type; public $amount; public $description; public $status; public $reference; public $created_at; public function __construct($db) { $this->conn = $db; } // Create a new transaction public function create() { $query = "INSERT INTO " . $this->table_name . " SET user_id=:user_id, type=:type, amount=:amount, description=:description, status=:status, reference=:reference"; $stmt = $this->conn->prepare($query); // Sanitize inputs $this->user_id = htmlspecialchars(strip_tags($this->user_id)); $this->type = htmlspecialchars(strip_tags($this->type)); $this->amount = htmlspecialchars(strip_tags($this->amount)); $this->description = htmlspecialchars(strip_tags($this->description)); $this->status = htmlspecialchars(strip_tags($this->status)); $this->reference = htmlspecialchars(strip_tags($this->reference)); // Bind values $stmt->bindParam(":user_id", $this->user_id); $stmt->bindParam(":type", $this->type); $stmt->bindParam(":amount", $this->amount); $stmt->bindParam(":description", $this->description); $stmt->bindParam(":status", $this->status); $stmt->bindParam(":reference", $this->reference); if($stmt->execute()) { return true; } return false; } // Get transactions by user ID public function getTransactionsByUserId($user_id, $limit = 10) { $query = "SELECT * FROM " . $this->table_name . " WHERE user_id = ? ORDER BY created_at DESC LIMIT ?"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $user_id); $stmt->bindParam(2, $limit, PDO::PARAM_INT); $stmt->execute(); return $stmt; } // Get transactions by type public function getTransactionsByType($user_id, $type, $limit = 10) { $query = "SELECT * FROM " . $this->table_name . " WHERE user_id = ? AND type = ? ORDER BY created_at DESC LIMIT ?"; $stmt = $this->conn->prepare($query); $stmt->bindParam(1, $user_id); $stmt->bindParam(2, $type); $stmt->bindParam(3, $limit, PDO::PARAM_INT); $stmt->execute(); return $stmt; } } ?>