|
|
<?php |
|
|
|
|
|
$host = '127.0.0.1'; |
|
|
$dbname = 'jmdb'; |
|
|
$username = 'root'; |
|
|
$password = 'YourStrongPassword123'; |
|
|
|
|
|
try { |
|
|
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password); |
|
|
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); |
|
|
} catch (PDOException $e) { |
|
|
error_log("Database connection failed: " . $e->getMessage()); |
|
|
|
|
|
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(); |
|
|
} |
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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); |
|
|
|
|
|
|
|
|
$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)); |
|
|
|
|
|
|
|
|
$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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
|
|
|
|
|
|
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; |
|
|
} |
|
|
} |
|
|
?> |