fellybikush's picture
Upload 99 files
0dff816 verified
raw
history blame
7.7 kB
<?php
// Database configuration
$host = '127.0.0.1';
$dbname = 'jmdb';
$username = 'root'; // Change to your database username
$password = 'YourStrongPassword123'; // Change to your database password
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());
// 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;
}
}
?>