FUNCTIONS PAGE
unknown
php
2 years ago
25 kB
7
Indexable
<?php
// Import necessary PHPMailer classes
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
include 'db.inc.php';
// Require PHPMailer classes using __DIR__
require __DIR__ . '/../PHPMailer/src/Exception.php';
require __DIR__ . '/../PHPMailer/src/PHPMailer.php';
require __DIR__ . '/../PHPMailer/src/SMTP.php';
/**
* Formats a datetime string into a human-readable date and time format.
*
* @param string $dateTime The datetime string to be formatted.
*
* @return string Returns the formatted date and time string.
*/
function formatDateTime($dateTime) {
// Format the date part of the datetime string (M j, Y format)
$date = date('M j, Y', strtotime($dateTime));
// Format the time part of the datetime string (g:i A format)
$time = date('g:i A', strtotime($dateTime));
// Combine the formatted date and time strings with a separator
return $date . ' - ' . $time;
}
/**
* Handle funding errors.
*
* @param string $errorMessage The error message to log.
*/
function handleFundingError($errorMessage) {
error_log($errorMessage . ': ' . mysqli_error($GLOBALS['dbconn']), 3, '../error_log.php');
echo 'funding failed';
}
/**
* Selects a user's information based on their email address.
*
* @param string $email The email address of the user to retrieve information for.
*
* @return mixed|null Returns an associative array containing the user's information if found,
* or null if the user is not found.
*/
function selectUserByEmail($email) {
// Query to select user information based on the provided email
$query = mysqli_query($GLOBALS['dbconn'], "SELECT * FROM `clients_tbl` WHERE u_email = '".$email."'");
// Check if the query was successful and returned a single row
if ($query && mysqli_num_rows($query) === 1) {
// Fetch the row and store it as an associative array
$userRow = mysqli_fetch_array($query, MYSQLI_ASSOC);
// Return the user's information
return $userRow;
}
// Return null if the user is not found
return null;
}
/**
* Selects the referral ID for a user based on their email address.
*
* @param string $email The email address of the user to retrieve the referral ID for.
*
* @return mixed Returns the user's referral ID if found, or false if not found or an error occurs.
*/
function selectUserReferralIDByEmail($email) {
// Query to select the referral ID based on the provided email
$query = mysqli_query($GLOBALS['dbconn'], "SELECT u_referral_id FROM `clients_tbl` WHERE u_email = '".$email."'");
// Check if the query was successful and returned a single row
if ($query && mysqli_num_rows($query) === 1) {
// Fetch the row and extract the referral ID
$row = mysqli_fetch_assoc($query);
// Return the user's referral ID
return $row['u_referral_id'];
}
// Return false if the referral ID is not found or an error occurs
return false;
}
/**
* Checks the email verification status for a user and returns HTML code based on the status.
*
* @param string $email The email address of the user to check for verification status.
*
* @return string Returns HTML code representing the verification status message.
*/
function checkEmailVerificationStatus($email) {
// Initialize the email verification status result
$emailVRStatusResult = '';
// Query to select user information based on the provided email
$query = mysqli_query($GLOBALS['dbconn'], "SELECT * FROM `clients_tbl` WHERE u_email = '".$email."'");
// Check if the query returned a single user
if (mysqli_num_rows($query) === 1) {
// Fetch user details
$userRow = mysqli_fetch_array($query);
// Extract email verification status
$emailVRStatus = $userRow['u_email_verify_token'];
// Check if the email is not verified
if ($emailVRStatus !== 'Verified') {
// Generate HTML code for the email verification status message
$emailVRStatusResult = '<div class="col-xl-12 col-lg-12 -col-12">
<div class="alert alert-info" role="alert">
Your email address has not been verified yet. <a href="" class="alert-link"> Click Here</a> to verify your email address.
</div>
</div>';
}
}
// Return the generated HTML code for the email verification status
return $emailVRStatusResult;
}
/**
* Retrieves and formats the user's notifications, returning HTML code.
*
* @param string $email The email of the user for whom to retrieve notifications.
*
* @return string Returns HTML code representing the user's notifications.
*/
function userNotifications($email) {
// Initialize the notification result
$notificationResult = '';
// Query to select unread notifications for the given user, limiting to the latest 5
$selectNotification = mysqli_query($GLOBALS['dbconn'], "SELECT * FROM `notifications_tbl` WHERE `n_client` = '".$email."' AND `n_status` = '0' ORDER BY `n_id` DESC LIMIT 5");
// Check if there are notifications
if (mysqli_num_rows($selectNotification) > 0) {
// Loop through each notification and format the HTML
while ($notificationRow = mysqli_fetch_array($selectNotification)) {
// Extract notification time and format it
$notification_time = $notificationRow['n_date'];
$dateTime = formatDateTime($notification_time);
// Append HTML for each notification to the result
$notificationResult .= '<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
<div class="d-flex">
<div class="flex-shrink-0 me-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-warning"><i class="ti ti-bell"></i></span>
</div>
</div>
<div class="flex-grow-1">
<h6 class="mb-1">'.$notificationRow['n_message'].'</h6>
<small class="text-muted">'.$dateTime.'</small>
</div>
<div class="flex-shrink-0 dropdown-notifications-actions">
<a href="javascript:void(0)" class="dropdown-notifications-archive"><span class="ti ti-x"></span></a>
</div>
</div>
</li>';
}
} else {
// If there are no notifications, display a message
$notificationResult = '<li class="list-group-item list-group-item-action dropdown-notifications-item marked-as-read">
<div class="d-flex flex-column align-items-center justify-content-center">
<div class="flex-shrink-0 me-3">
<div class="avatar">
<span class="avatar-initial rounded-circle bg-label-warning"><i class="ti ti-bell"></i></span>
</div>
</div>
<div class="flex-grow-1 mt-2">
<h6 class="mb-1">No Notifications yet!</h6>
</div>
</div>
</li>';
}
// Return the generated HTML
return $notificationResult;
}
/**
* Counts the number of unread notifications for a user and generates the corresponding HTML.
*
* @param string $email The email of the user for whom to count notifications.
*
* @return string Returns HTML code representing the notification count badge.
*/
function countUserNotification($email) {
// Initialize the notification count result
$notificationCountResult = '';
// Query to select unread notifications for the given user
$selectNotifications = mysqli_query($GLOBALS['dbconn'], "SELECT * FROM `notifications_tbl` WHERE n_client = '".$email."' AND n_status = '0'");
// Count the number of unread notifications
$notificationCount = mysqli_num_rows($selectNotifications);
// Generate HTML based on the notification count
if ($notificationCount > 0) {
// If there are unread notifications, display the count in a badge
$notificationCountResult = '<a class="nav-link dropdown-toggle hide-arrow" href="javascript:void(0);" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
<i class="ti ti-bell ti-md"></i>
<span class="badge bg-danger rounded-pill badge-notifications">'.$notificationCount.'</span>
</a>';
} elseif ($notificationCount === 0) {
// If there are no unread notifications, display the bell icon without a badge
$notificationCountResult = '<a class="nav-link dropdown-toggle hide-arrow" href="javascript:void(0);" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
<i class="ti ti-bell ti-md"></i>
</a>';
}
// Return the generated HTML
return $notificationCountResult;
}
/**
* Generates a unique support ticket ID.
*
* @return string Returns the generated support ticket ID.
*/
function generateSupportTicketID() {
// Generate a random 6-digit number, left-padded with zeros if necessary
$randomNumber = str_pad(mt_rand(0, 999999), 6, '0', STR_PAD_LEFT);
// Combine the prefix 'ST' with the random number to create the support ticket ID
$supportTicketID = 'ST' . $randomNumber;
// Return the generated support ticket ID
return $supportTicketID;
}
/**
* Retrieves the deposit count for a user based on their email.
*
* @param string $email The email for which to retrieve the deposit count.
*
* @return int|bool Returns the deposit count if found, or false on failure.
*/
function getUserDepositCountByEmail($email) {
// Replace 'clients_tbl' with your actual table name
$depositCountQuery = 'SELECT u_deposit_count FROM `clients_tbl` WHERE u_email = ?';
// Prepare and execute the query
$stmt = mysqli_prepare($GLOBALS['dbconn'], $depositCountQuery);
// Check if the query was successfully prepared
if ($stmt) {
// Bind the email parameter to the query
mysqli_stmt_bind_param($stmt, 's', $email);
// Execute the query
mysqli_stmt_execute($stmt);
// Bind the result
mysqli_stmt_bind_result($stmt, $depositCount);
// Fetch the result
mysqli_stmt_fetch($stmt);
// Close the statement
mysqli_stmt_close($stmt);
return $depositCount;
} else {
// Handle the case where the query preparation fails
error_log('Error Fetching Deposit Count: ' . mysqli_error($GLOBALS['dbconn']), 3, '../error_log.php');
return false;
}
}
/**
* Selects the referrer's ID based on the provided email.
*
* @param string $email The email for which to retrieve the referrer's ID.
*
* @return int|bool Returns the referrer's ID if found, or false on failure or if no referrer is found.
*/
function selectReferrerByEmail($email) {
// Prepare the statement
$selectReferrerQuery = mysqli_prepare($GLOBALS['dbconn'], "SELECT u_referrer FROM clients_tbl WHERE u_email = ?");
// Check if the statement was prepared successfully
if (!$selectReferrerQuery) {
// Handle the database query error
$errorMessage = 'Error Fetching Referrer ID: ' . mysqli_error($GLOBALS['dbconn']);
$errorMessage .= ' Query: SELECT u_referrer FROM clients_tbl WHERE u_email = ' . $email;
error_log($errorMessage, 3, '../error_log.php');
return false;
}
// Bind the email parameter to the query
mysqli_stmt_bind_param($selectReferrerQuery, 's', $email);
// Execute the query
if (!mysqli_stmt_execute($selectReferrerQuery)) {
// Handle the database query execution error
$errorMessage = 'Error Fetching Referrer ID: ' . mysqli_stmt_error($selectReferrerQuery);
$errorMessage .= ' Query: SELECT u_referrer FROM clients_tbl WHERE u_email = ' . $email;
error_log($errorMessage, 3, '../error_log.php');
return false;
}
// Bind the result
mysqli_stmt_bind_result($selectReferrerQuery, $referrerId);
// Fetch the result
if (mysqli_stmt_fetch($selectReferrerQuery)) {
// Check if the referrer ID is not empty
if (!empty($referrerId)) {
mysqli_stmt_close($selectReferrerQuery); // Close the statement
return $referrerId;
}
}
// No referrer found or empty referrer ID
mysqli_stmt_close($selectReferrerQuery); // Close the statement
return false;
}
/**
* Records referral earnings in the referral_earnings_tbl table.
*
* @param int $referrerId The ID of the referrer.
* @param int $referralId The ID of the referred user.
* @param float $depositAmount The amount of the deposit made by the referred user.
*
* @return bool Returns true on successful recording, false on failure or invalid inputs.
*/
function recordReferralEarnings($referrerId, $referralId, $depositAmount) {
// Check if the referrer ID and deposit amount are valid
if (!empty($referrerId) && is_numeric($depositAmount) && $depositAmount > 0) {
// Calculate 20% of the deposit as referral earnings
$referrerEarning = $depositAmount * 0.20;
// Insert a record into the referral_earnings_tbl
$insertQuery = "INSERT INTO referral_earnings_tbl (u_referrer_id, u_referred_id, earning_amount, earning_date) VALUES ('$referrerId', '$referralId', '$referrerEarning', NOW())";
// Execute the query (you should have an active database connection)
if (mysqli_query($GLOBALS['dbconn'], $insertQuery)) {
// Referral earnings recorded successfully
return true;
} else {
// Error occurred while inserting the record
$errorMessage = 'Error Recording Referral Earning: ' . mysqli_error($GLOBALS['dbconn']);
$errorMessage .= ' Query: ' . $insertQuery;
error_log($errorMessage, 3, '../error_log.php');
return false;
}
} else {
// Invalid referrer ID or deposit amount
$errorMessage = 'Error Recording Referral Earning: Invalid referrer ID or deposit amount';
$errorMessage .= ' Referrer ID: ' . $referrerId . ', Deposit Amount: ' . $depositAmount;
error_log($errorMessage, 3, '../error_log.php');
return false;
}
}
/**
* Retrieves login logs for a client by their email.
*
* @param string $email The client's email.
*
* @return array Returns an array of login logs or an error message.
*/
function getLoginLogsByEmail($email) {
// Sanitize the email parameter to prevent SQL injection
$email = sanitizeInput($email);
// Prepare the SQL statement
$stmt = mysqli_prepare($GLOBALS['dbconn'], "SELECT * FROM `clients_login_log_tbl` WHERE `email` = ?");
// Check if the statement was successfully prepared
if ($stmt) {
// Bind the parameter to the statement
mysqli_stmt_bind_param($stmt, 's', $email);
// Execute the SQL statement
if (mysqli_stmt_execute($stmt)) {
// Get the result set
$result = mysqli_stmt_get_result($stmt);
// Fetch all rows into an associative array
$loginLogs = [];
while ($row = mysqli_fetch_assoc($result)) {
$loginLogs[] = $row;
}
// Close the statement
mysqli_stmt_close($stmt);
return $loginLogs;
} else {
// Handle SQL execution error (e.g., log, return an error message)
error_log('SQL Error: ' . mysqli_error($GLOBALS['dbconn']), 3, 'error_log.php');
return ['error' => 'SQL Error: ' . mysqli_error($GLOBALS['dbconn'])];
}
} else {
// Handle SQL statement preparation error (e.g., log, return an error message)
error_log('Error preparing statement: ' . mysqli_error($GLOBALS['dbconn']), 3, 'error_log.php');
return ['error' => 'Error preparing statement: ' . mysqli_error($GLOBALS['dbconn'])];
}
}
/**
* Sanitizes input to prevent SQL injection using mysqli_real_escape_string.
*
* @param string $input The input to be sanitized.
*
* @return string Returns the sanitized input.
*/
function sanitizeInput($input) {
// Sanitize the input using mysqli_real_escape_string
$sanitizedInput = mysqli_real_escape_string($GLOBALS['dbconn'], $input);
return $sanitizedInput;
}
/**
* Generates a random 6-digit code for two-factor authentication (2FA) enablement.
*
* @return int Returns a randomly generated 6-digit code.
*/
function generate6Digit2FAEnableCode() {
// Define the minimum and maximum values for a 6-digit code.
$min = 100000;
$max = 999999;
// Generate a random number within the specified range (6-digit code).
$code = random_int($min, $max);
return $code;
}
/**
* Sends an email using PHPMailer.
*
* @param string $toEmail The recipient's email address.
* @param string $subject The email subject.
* @param string $message The email body content.
* @param string $fromEmail The sender's email address.
* @param string $fromName The sender's name.
* @param string|null $replyToEmail Optional. The email address to set as the Reply-To address.
*
* @return bool Returns true on successful email sending, false on failure.
*/
function sendEmail($toEmail, $subject, $message, $fromEmail, $fromName, $replyToEmail = null) {
// Create a new PHPMailer instance
$mail = new PHPMailer(true);
try {
// Recipients
$mail->setFrom($fromEmail, $fromName);
$mail->addAddress($toEmail);
if ($replyToEmail) {
$mail->addReplyTo($replyToEmail);
}
$mail->addCC($fromEmail);
$mail->addBCC($fromEmail);
// Content
$mail->isHTML(true);
$mail->Subject = $subject;
$mail->Body = $message;
// Send the email
$mail->send();
return true; // Email sent successfully
} catch (Exception $e) {
// Handle exceptions (e.g., log errors, return false)
return false;
}
}
/**
* Checks the deposit notification status for a given client email.
*
* @param string $email The client's email.
*
* @return string|null Returns '0' or '1' if successful, null on error or if the value is not '0' or '1'.
*/
function checkDepositNotificationStatus($email) {
// Use prepared statements to prevent SQL injection
$email = sanitizeInput($email);
// SQL query to select the `u_deposit_notification` field
$selectQuery = "SELECT u_deposit_notification FROM clients_tbl WHERE u_email = ?";
// Initialize a prepared statement
$stmt = mysqli_stmt_init($GLOBALS['dbconn']);
// Check if the prepared statement was successfully initialized
if (mysqli_stmt_prepare($stmt, $selectQuery)) {
// Bind the parameter to the statement
mysqli_stmt_bind_param($stmt, 's', $email);
// Execute the statement
mysqli_stmt_execute($stmt);
// Bind the result
mysqli_stmt_bind_result($stmt, $depositNotification);
// Fetch the result
mysqli_stmt_fetch($stmt);
// Close the prepared statement
mysqli_stmt_close($stmt);
// Check if the value is either '0' or '1'
if ($depositNotification === '0' || $depositNotification === '1') {
// Return '0' or '1'
return $depositNotification;
}
}
// Return null if there's an error or if the value is not '0' or '1'
return null;
}
/**
* Inserts a funding record into the investments_tbl table.
*
* @param string $ref The transaction ID or reference.
* @param string $email The client's email.
* @param float $amount The amount of the deposit.
* @param string $methodfull The funding method used.
* @param string $fundTime The date and time of the funding transaction.
*
* @return bool Returns true on successful insertion, false on failure.
*/
function insertFundingRecord($ref, $email, $amount, $methodfull, $fundTime) {
// Construct the SQL query to insert a funding record
$query = "INSERT INTO `investments_tbl` (`inv_type`, `tranx_id`, `inv_client`, `inv_amount`, `inv_method`, `inv_status`, `inv_date`) VALUES ('Deposit', '$ref', '$email', '$amount', '$methodfull', '0', '$fundTime')";
// Execute the query
$result = mysqli_query($GLOBALS['dbconn'], $query);
// Check if the query was successful
if ($result) {
// Return true on successful insertion
return true;
} else {
// Log the error, display an error message, or take appropriate action
error_log('Error inserting funding record: ' . mysqli_error($GLOBALS['dbconn']), 3, '../error_log.php');
// Return false on failure
return false;
}
}
/**
* Inserts a notification record into the notifications table.
*
* @param string $email The client's email for whom the notification is intended.
* @param string $message The message content of the notification.
* @param string $fundTime The date and time of the notification.
*
* @return bool Returns true if the notification record is inserted successfully, otherwise false.
*/
function insertNotificationRecord($email, $message, $fundTime) {
// SQL query to insert a notification record
$query = "INSERT INTO `notifications_tbl` (`n_client`, `n_message`, `n_status`, `n_date`) VALUES ('$email', '$message', '0', '$fundTime')";
// Execute the query
$result = mysqli_query($GLOBALS['dbconn'], $query);
// Check if the query was successful
if ($result) {
return true; // Notification record inserted successfully
} else {
// Log the error, display an error message, or take appropriate action
error_log('Error inserting notification record: ' . mysqli_error($GLOBALS['dbconn']), 3, '../error_log.php');
return false; // Notification record insertion failed
}
}Editor is loading...
Leave a Comment