mirror of https://github.com/itflow-org/itflow
Do not allow cascade deletion for rack devices as this table is optional to reference an asset and will cause issues when adding a devoce without a selected asset
This commit is contained in:
parent
bf327afd19
commit
073f816dbd
|
|
@ -399,7 +399,7 @@ ob_start();
|
||||||
<?php if ($credential_count) { ?>
|
<?php if ($credential_count) { ?>
|
||||||
<div class="tab-pane fade" id="pills-contact-credentials<?php echo $contact_id; ?>">
|
<div class="tab-pane fade" id="pills-contact-credentials<?php echo $contact_id; ?>">
|
||||||
<div class="table-responsive-sm">
|
<div class="table-responsive-sm">
|
||||||
<table class="table table-striped table-borderless table-hover table-sm">
|
<table class="table table-striped table-borderless table-hover table-sm dataTables" style="width:100%">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
|
|
|
||||||
|
|
@ -2915,18 +2915,6 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) {
|
||||||
ADD FOREIGN KEY (`asset_id`) REFERENCES `assets`(`asset_id`) ON DELETE CASCADE
|
ADD FOREIGN KEY (`asset_id`) REFERENCES `assets`(`asset_id`) ON DELETE CASCADE
|
||||||
");
|
");
|
||||||
|
|
||||||
// Clean up orphaned unit_asset_id rows in rack_units
|
|
||||||
mysqli_query($mysqli, "
|
|
||||||
DELETE FROM `rack_units`
|
|
||||||
WHERE `unit_asset_id` NOT IN (SELECT `asset_id` FROM `assets`);
|
|
||||||
");
|
|
||||||
|
|
||||||
// Add foreign key to rack_units
|
|
||||||
mysqli_query($mysqli, "
|
|
||||||
ALTER TABLE `rack_units`
|
|
||||||
ADD FOREIGN KEY (`unit_asset_id`) REFERENCES `assets`(`asset_id`) ON DELETE CASCADE
|
|
||||||
");
|
|
||||||
|
|
||||||
// Clean up orphaned service_id rows in service_assets
|
// Clean up orphaned service_id rows in service_assets
|
||||||
mysqli_query($mysqli, "
|
mysqli_query($mysqli, "
|
||||||
DELETE FROM `service_assets`
|
DELETE FROM `service_assets`
|
||||||
|
|
|
||||||
6
db.sql
6
db.sql
|
|
@ -1351,9 +1351,7 @@ CREATE TABLE `rack_units` (
|
||||||
`unit_rack_id` int(11) NOT NULL,
|
`unit_rack_id` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`unit_id`),
|
PRIMARY KEY (`unit_id`),
|
||||||
KEY `unit_rack_id` (`unit_rack_id`),
|
KEY `unit_rack_id` (`unit_rack_id`),
|
||||||
KEY `unit_asset_id` (`unit_asset_id`),
|
KEY `unit_asset_id` (`unit_asset_id`)
|
||||||
CONSTRAINT `rack_units_ibfk_1` FOREIGN KEY (`unit_rack_id`) REFERENCES `racks` (`rack_id`) ON DELETE CASCADE,
|
|
||||||
CONSTRAINT `rack_units_ibfk_2` FOREIGN KEY (`unit_asset_id`) REFERENCES `assets` (`asset_id`) ON DELETE CASCADE
|
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
|
@ -2428,4 +2426,4 @@ CREATE TABLE `vendors` (
|
||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
-- Dump completed on 2025-03-13 21:33:12
|
-- Dump completed on 2025-03-14 15:31:19
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,7 @@ use PHPMailer\PHPMailer\PHPMailer;
|
||||||
use PHPMailer\PHPMailer\Exception;
|
use PHPMailer\PHPMailer\Exception;
|
||||||
|
|
||||||
// Function to generate both crypto & URL safe random strings
|
// Function to generate both crypto & URL safe random strings
|
||||||
function randomString($length = 16)
|
function randomString($length = 16) {
|
||||||
{
|
|
||||||
// Generate some cryptographically safe random bytes
|
// Generate some cryptographically safe random bytes
|
||||||
// Generate a little more than requested as we'll lose some later converting
|
// Generate a little more than requested as we'll lose some later converting
|
||||||
$random_bytes = random_bytes($length + 5);
|
$random_bytes = random_bytes($length + 5);
|
||||||
|
|
@ -31,8 +30,7 @@ function randomString($length = 16)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Older keygen function - only used for TOTP currently
|
// Older keygen function - only used for TOTP currently
|
||||||
function key32gen()
|
function key32gen() {
|
||||||
{
|
|
||||||
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
$chars .= "234567";
|
$chars .= "234567";
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
@ -46,25 +44,23 @@ function key32gen()
|
||||||
return $key;
|
return $key;
|
||||||
}
|
}
|
||||||
|
|
||||||
function nullable_htmlentities($unsanitizedInput)
|
function nullable_htmlentities($unsanitizedInput) {
|
||||||
{
|
|
||||||
//return htmlentities($unsanitizedInput ?? '');
|
//return htmlentities($unsanitizedInput ?? '');
|
||||||
return htmlspecialchars($unsanitizedInput ?? '', ENT_QUOTES, 'UTF-8');
|
return htmlspecialchars($unsanitizedInput ?? '', ENT_QUOTES, 'UTF-8');
|
||||||
}
|
}
|
||||||
|
|
||||||
function initials($str)
|
function initials($string) {
|
||||||
{
|
if (!empty($string)) {
|
||||||
if (!empty($str)) {
|
$return = '';
|
||||||
$ret = '';
|
foreach (explode(' ', $string) as $word) {
|
||||||
foreach (explode(' ', $str) as $word)
|
$return .= mb_strtoupper($word[0], 'UTF-8'); // Use mb_strtoupper for UTF-8 support
|
||||||
$ret .= strtoupper($word[0]);
|
}
|
||||||
$ret = substr($ret, 0, 2);
|
$return = substr($return, 0, 2);
|
||||||
return $ret;
|
return $return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeDirectory($path)
|
function removeDirectory($path) {
|
||||||
{
|
|
||||||
if (!file_exists($path)) {
|
if (!file_exists($path)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -76,13 +72,11 @@ function removeDirectory($path)
|
||||||
rmdir($path);
|
rmdir($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getUserAgent()
|
function getUserAgent() {
|
||||||
{
|
|
||||||
return $_SERVER['HTTP_USER_AGENT'];
|
return $_SERVER['HTTP_USER_AGENT'];
|
||||||
}
|
}
|
||||||
|
|
||||||
function getIP()
|
function getIP() {
|
||||||
{
|
|
||||||
if (defined("CONST_GET_IP_METHOD")) {
|
if (defined("CONST_GET_IP_METHOD")) {
|
||||||
if (CONST_GET_IP_METHOD == "HTTP_X_FORWARDED_FOR") {
|
if (CONST_GET_IP_METHOD == "HTTP_X_FORWARDED_FOR") {
|
||||||
$ip = getenv('HTTP_X_FORWARDED_FOR');
|
$ip = getenv('HTTP_X_FORWARDED_FOR');
|
||||||
|
|
@ -100,8 +94,7 @@ function getIP()
|
||||||
return $ip;
|
return $ip;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getWebBrowser($user_browser)
|
function getWebBrowser($user_browser) {
|
||||||
{
|
|
||||||
$browser = "-";
|
$browser = "-";
|
||||||
$browser_array = array(
|
$browser_array = array(
|
||||||
'/msie/i' => "<i class='fab fa-fw fa-internet-explorer text-secondary'></i> Internet Explorer",
|
'/msie/i' => "<i class='fab fa-fw fa-internet-explorer text-secondary'></i> Internet Explorer",
|
||||||
|
|
@ -120,8 +113,7 @@ function getWebBrowser($user_browser)
|
||||||
return $browser;
|
return $browser;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getOS($user_os)
|
function getOS($user_os) {
|
||||||
{
|
|
||||||
$os_platform = "-";
|
$os_platform = "-";
|
||||||
$os_array = array(
|
$os_array = array(
|
||||||
'/windows/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows",
|
'/windows/i' => "<i class='fab fa-fw fa-windows text-secondary'></i> Windows",
|
||||||
|
|
@ -141,8 +133,7 @@ function getOS($user_os)
|
||||||
return $os_platform;
|
return $os_platform;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getDevice()
|
function getDevice() {
|
||||||
{
|
|
||||||
$tablet_browser = 0;
|
$tablet_browser = 0;
|
||||||
$mobile_browser = 0;
|
$mobile_browser = 0;
|
||||||
if (preg_match('/(tablet|ipad|playbook)|(android(?!.*(mobi|opera mini)))/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
|
if (preg_match('/(tablet|ipad|playbook)|(android(?!.*(mobi|opera mini)))/i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
|
||||||
|
|
@ -189,8 +180,7 @@ function getDevice()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function truncate($text, $chars)
|
function truncate($text, $chars) {
|
||||||
{
|
|
||||||
if (strlen($text) <= $chars) {
|
if (strlen($text) <= $chars) {
|
||||||
return $text;
|
return $text;
|
||||||
}
|
}
|
||||||
|
|
@ -203,8 +193,7 @@ function truncate($text, $chars)
|
||||||
return $text . "...";
|
return $text . "...";
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatPhoneNumber($phoneNumber)
|
function formatPhoneNumber($phoneNumber) {
|
||||||
{
|
|
||||||
global $mysqli;
|
global $mysqli;
|
||||||
|
|
||||||
// Get Phone Mask Option
|
// Get Phone Mask Option
|
||||||
|
|
@ -240,8 +229,7 @@ function formatPhoneNumber($phoneNumber)
|
||||||
return $phoneNumber;
|
return $phoneNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
function mkdirMissing($dir)
|
function mkdirMissing($dir) {
|
||||||
{
|
|
||||||
if (!is_dir($dir)) {
|
if (!is_dir($dir)) {
|
||||||
mkdir($dir);
|
mkdir($dir);
|
||||||
}
|
}
|
||||||
|
|
@ -249,8 +237,7 @@ function mkdirMissing($dir)
|
||||||
|
|
||||||
// Called during initial setup
|
// Called during initial setup
|
||||||
// Encrypts the master key with the user's password
|
// Encrypts the master key with the user's password
|
||||||
function setupFirstUserSpecificKey($user_password, $site_encryption_master_key)
|
function setupFirstUserSpecificKey($user_password, $site_encryption_master_key) {
|
||||||
{
|
|
||||||
$iv = randomString();
|
$iv = randomString();
|
||||||
$salt = randomString();
|
$salt = randomString();
|
||||||
|
|
||||||
|
|
@ -268,8 +255,7 @@ function setupFirstUserSpecificKey($user_password, $site_encryption_master_key)
|
||||||
* New Users: Requires the admin setting up their account have a Specific/Session key configured
|
* New Users: Requires the admin setting up their account have a Specific/Session key configured
|
||||||
* Password Changes: Will use the current info in the session.
|
* Password Changes: Will use the current info in the session.
|
||||||
*/
|
*/
|
||||||
function encryptUserSpecificKey($user_password)
|
function encryptUserSpecificKey($user_password) {
|
||||||
{
|
|
||||||
$iv = randomString();
|
$iv = randomString();
|
||||||
$salt = randomString();
|
$salt = randomString();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue