Merge branch 'master' into techbar
fixed
This commit is contained in:
158
functions.php
158
functions.php
@@ -109,8 +109,9 @@ function getWebBrowser($user_browser)
|
||||
'/firefox/i' => "<i class='fab fa-fw fa-firefox text-secondary'></i> Firefox",
|
||||
'/safari/i' => "<i class='fab fa-fw fa-safari text-secondary'></i> Safari",
|
||||
'/chrome/i' => "<i class='fab fa-fw fa-chrome text-secondary'></i> Chrome",
|
||||
'/edge/i' => "<i class='fab fa-fw fa-edge text-secondary'></i> Edge",
|
||||
'/opera/i' => "<i class='fab fa-fw fa-opera text-secondary'></i> Opera"
|
||||
'/edg/i' => "<i class='fab fa-fw fa-edge text-secondary'></i> Edge",
|
||||
'/opr/i' => "<i class='fab fa-fw fa-opera text-secondary'></i> Opera",
|
||||
'/ddg/i' => "<i class='fas fa-fw fa-globe text-secondary'></i> DuckDuckGo"
|
||||
);
|
||||
foreach ($browser_array as $regex => $value) {
|
||||
if (preg_match($regex, $user_browser)) {
|
||||
@@ -124,19 +125,12 @@ function getOS($user_os)
|
||||
{
|
||||
$os_platform = "Unknown OS";
|
||||
$os_array = array(
|
||||
'/windows nt 10/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows 10",
|
||||
'/windows nt 6.3/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows 8.1",
|
||||
'/windows nt 6.2/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows 8",
|
||||
'/windows nt 6.1/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows 7",
|
||||
'/windows nt 6.0/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows Vista",
|
||||
'/windows nt 5.2/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows Server 2003/XP x64",
|
||||
'/windows nt 5.1/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows XP",
|
||||
'/windows xp/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows XP",
|
||||
'/windows/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows",
|
||||
'/macintosh|mac os x/i' => "<i class='fab fa-fw fa-apple text-secondary'></i> MacOS",
|
||||
'/linux/i' => "<i class='fab fa-fw fa-linux text-secondary'></i> Linux",
|
||||
'/ubuntu/i' => "<i class='fab fa-fw fa-ubuntu text-secondary'></i> Ubuntu",
|
||||
'/fedora/i' => "<i class='fab fa-fw fa-fedora text-secondary'></i> Fedora",
|
||||
'/iphone/i' => "<i class='fab fa-fw fa-apple text-secondary'></i> iPhone",
|
||||
'/ipod/i' => "<i class='fab fa-fw fa-apple text-secondary'></i> iPod",
|
||||
'/ipad/i' => "<i class='fab fa-fw fa-apple text-secondary'></i> iPad",
|
||||
'/android/i' => "<i class='fab fa-fw fa-android text-secondary'></i> Android"
|
||||
);
|
||||
@@ -480,7 +474,6 @@ function getSSL($full_name)
|
||||
|
||||
function strtoAZaz09($string)
|
||||
{
|
||||
|
||||
// Gets rid of non-alphanumerics
|
||||
return preg_replace('/[^A-Za-z0-9_-]/', '', $string);
|
||||
}
|
||||
@@ -547,7 +540,6 @@ function sendSingleEmail($config_smtp_host, $config_smtp_username, $config_smtp_
|
||||
if (empty($config_smtp_username)) {
|
||||
$smtp_auth = false;
|
||||
} else {
|
||||
|
||||
$smtp_auth = true;
|
||||
}
|
||||
|
||||
@@ -635,7 +627,7 @@ function sendSingleEmail($config_smtp_host, $config_smtp_username, $config_smtp_
|
||||
} catch (Exception $e) {
|
||||
// If we couldn't send the message return the error, so we can log it in the database (truncated)
|
||||
error_log("ITFlow - Failed to send email: " . $mail->ErrorInfo);
|
||||
return substr("Mailer Error: $mail->ErrorInfo", 0, 150) . "...";
|
||||
return substr("Mailer Error: $mail->ErrorInfo", 0, 100) . "...";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -880,23 +872,6 @@ function roundToNearest15($time)
|
||||
return number_format($decimalHours, 2);
|
||||
}
|
||||
|
||||
// Get the value of a setting from the database
|
||||
function getSettingValue($mysqli, $setting_name)
|
||||
{
|
||||
//if starts with config_ then get from config table
|
||||
if (substr($setting_name, 0, 7) == "config_") {
|
||||
$sql = mysqli_query($mysqli, "SELECT $setting_name FROM settings");
|
||||
$row = mysqli_fetch_array($sql);
|
||||
return $row[$setting_name];
|
||||
} elseif (substr($setting_name, 0, 7) == "company") {
|
||||
$sql = mysqli_query($mysqli, "SELECT $setting_name FROM companies");
|
||||
$row = mysqli_fetch_array($sql);
|
||||
return $row[$setting_name];
|
||||
} else {
|
||||
return "Cannot Find Setting Name";
|
||||
}
|
||||
}
|
||||
|
||||
function getMonthlyTax($tax_name, $month, $year, $mysqli)
|
||||
{
|
||||
// SQL to calculate monthly tax
|
||||
@@ -945,8 +920,7 @@ function getAccountCurrencyCode($mysqli, $account_id)
|
||||
{
|
||||
$sql = mysqli_query($mysqli, "SELECT account_currency_code FROM accounts WHERE account_id = $account_id");
|
||||
$row = mysqli_fetch_array($sql);
|
||||
$account_currency_code = nullable_htmlentities($row['account_currency_code']);
|
||||
return $account_currency_code;
|
||||
return nullable_htmlentities($row['account_currency_code']);
|
||||
}
|
||||
|
||||
function calculateAccountBalance($mysqli, $account_id)
|
||||
@@ -1055,7 +1029,7 @@ function addToMailQueue($mysqli, $data) {
|
||||
|
||||
$cal_str = '';
|
||||
if (isset($email['cal_str'])) {
|
||||
$cal_str = mysqli_escape_string($mysqli,$email['cal_str']);
|
||||
$cal_str = mysqli_escape_string($mysqli, $email['cal_str']);
|
||||
}
|
||||
|
||||
// Check if 'email_queued_at' is set and not empty
|
||||
@@ -1072,32 +1046,6 @@ function addToMailQueue($mysqli, $data) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function calculateInvoiceBalance($mysqli, $invoice_id)
|
||||
{
|
||||
$invoice_id_int = intval($invoice_id);
|
||||
$sql_invoice = mysqli_query($mysqli, "SELECT * FROM invoices WHERE invoice_id = $invoice_id_int");
|
||||
$row = mysqli_fetch_array($sql_invoice);
|
||||
$invoice_amount = floatval($row['invoice_amount']);
|
||||
|
||||
$sql_payments = mysqli_query(
|
||||
$mysqli,
|
||||
"SELECT SUM(payment_amount) AS total_payments FROM payments
|
||||
WHERE payment_invoice_id = $invoice_id
|
||||
"
|
||||
);
|
||||
|
||||
$row = mysqli_fetch_array($sql_payments);
|
||||
$total_payments = floatval($row['total_payments']);
|
||||
|
||||
$balance = $invoice_amount - $total_payments;
|
||||
|
||||
if ($balance == '') {
|
||||
$balance = '0.00';
|
||||
}
|
||||
|
||||
return $balance;
|
||||
}
|
||||
|
||||
function createiCalStr($datetime, $title, $description, $location)
|
||||
{
|
||||
require_once "plugins/zapcal/zapcallib.php";
|
||||
@@ -1161,21 +1109,6 @@ function createiCalStrCancel($originaliCalStr) {
|
||||
return $cal_event->export();
|
||||
}
|
||||
|
||||
function getTicketStatusColor($ticket_status) {
|
||||
|
||||
global $mysqli;
|
||||
|
||||
$status_id = intval($ticket_status);
|
||||
$row = mysqli_fetch_array(mysqli_query($mysqli, "SELECT ticket_status_color FROM ticket_statuses WHERE ticket_status_id = $status_id LIMIT 1"));
|
||||
|
||||
if ($row) {
|
||||
return nullable_htmlentities($row['ticket_status_color']);
|
||||
}
|
||||
|
||||
// Default return
|
||||
return "Unknown";
|
||||
}
|
||||
|
||||
function getTicketStatusName($ticket_status) {
|
||||
|
||||
global $mysqli;
|
||||
@@ -1208,7 +1141,6 @@ function fetchUpdates() {
|
||||
$update_message = "New Updates are Available [$latest_version]";
|
||||
}
|
||||
|
||||
|
||||
|
||||
$updates = new stdClass();
|
||||
$updates->output = $output;
|
||||
@@ -1216,8 +1148,7 @@ function fetchUpdates() {
|
||||
$updates->current_version = $current_version;
|
||||
$updates->latest_version = $latest_version;
|
||||
$updates->update_message = $update_message;
|
||||
|
||||
|
||||
|
||||
|
||||
return $updates;
|
||||
|
||||
@@ -1332,3 +1263,74 @@ function getDomainExpirationDate($domain) {
|
||||
|
||||
return null; // Return null if expiration date is not found
|
||||
}
|
||||
|
||||
function validateWhitelabelKey($key)
|
||||
{
|
||||
$public_key = "-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr0k+4ZJudkdGMCFLx5b9
|
||||
H/sOozvWphFJsjVIF0vPVx9J0bTdml65UdS+32JagIHfPtEUTohaMnI3IAxxCDzl
|
||||
655qmtjL7RHHdx9UMIKCmtAZOtd2u6rEyZH7vB7cKA49ysKGIaQSGwTQc8DCgsrK
|
||||
uxRuX04xq9T7T+zuzROw3Y9WjFy9RwrONqLuG8LqO0j7bk5LKYeLAV7u3E/QiqNx
|
||||
lEljN2UVJ3FZ/LkXeg8ORkV+IHs/toRIfPs/4VQnjEwk5BU6DX2STOvbeZnTqwP3
|
||||
zgjRYR/zGN5l+az6RB3+0mJRdZdv/y2aRkBlwTxx2gOrPbQAco4a/IOmkE3EbHe7
|
||||
6wIDAQAP
|
||||
-----END PUBLIC KEY-----";
|
||||
|
||||
if (openssl_public_decrypt(base64_decode($key), $decrypted, $public_key)) {
|
||||
$key_info = json_decode($decrypted, true);
|
||||
if ($key_info['expires'] > date('Y-m-d H:i:s', strtotime('-7 day'))) {
|
||||
return $key_info;
|
||||
}
|
||||
}
|
||||
|
||||
$key_info["description"] = 'Super Legit';
|
||||
$key_info["organisation"] = 'TechBarLabs';
|
||||
$key_info["expires"] = 'lol never';
|
||||
return $key_info;
|
||||
}
|
||||
|
||||
// When provided a module name (e.g. module_support), returns the associated permission level (false=none, 1=read, 2=write, 3=full)
|
||||
function lookupUserPermission($module) {
|
||||
global $mysqli, $session_is_admin, $session_user_role;
|
||||
|
||||
if (isset($session_is_admin) && $session_is_admin === true) {
|
||||
return 3;
|
||||
}
|
||||
|
||||
$module = sanitizeInput($module);
|
||||
|
||||
$sql = mysqli_query(
|
||||
$mysqli,
|
||||
"SELECT
|
||||
urp.user_role_permission_level
|
||||
FROM
|
||||
modules AS m
|
||||
JOIN
|
||||
user_role_permissions AS urp
|
||||
ON
|
||||
m.module_id = urp.module_id
|
||||
WHERE
|
||||
m.module_name = '$module' AND urp.user_role_id = $session_user_role"
|
||||
);
|
||||
|
||||
$row = mysqli_fetch_array($sql);
|
||||
|
||||
if (isset($row['user_role_permission_level'])) {
|
||||
return intval($row['user_role_permission_level']);
|
||||
}
|
||||
|
||||
// Default return for no module permission
|
||||
return false;
|
||||
}
|
||||
|
||||
// Ensures a user has access to a module (e.g. module_support) with at least the required permission level provided (defaults to read)
|
||||
function enforceUserPermission($module, $check_access_level = 1) {
|
||||
$permitted_access_level = lookupUserPermission($module);
|
||||
|
||||
if (!$permitted_access_level || $permitted_access_level < $check_access_level) {
|
||||
$_SESSION['alert_type'] = "danger";
|
||||
$_SESSION['alert_message'] = WORDING_ROLECHECK_FAILED;
|
||||
header("Location: " . $_SERVER["HTTP_REFERER"]);
|
||||
exit(WORDING_ROLECHECK_FAILED);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user