'That key no longer exists.']); exit; } $client_id = intval($row['software_client_id']); enforceClientAccess(); $software_id = intval($row['software_id']); $assigned_assets = $assigned_contacts = []; $sql = mysqli_query($mysqli, "SELECT asset_id FROM software_key_asset_assignments WHERE software_key_id = $software_key_id"); while ($assigned = mysqli_fetch_row($sql)) { $assigned_assets[] = intval($assigned[0]); } $sql = mysqli_query($mysqli, "SELECT contact_id FROM software_key_contact_assignments WHERE software_key_id = $software_key_id"); while ($assigned = mysqli_fetch_row($sql)) { $assigned_contacts[] = intval($assigned[0]); } // Who is on the license already - listed first, so the usual pick is at the top $holders = softwareSeatHolders($software_id); $seat_assets = array_map('intval', array_column($holders['assets'], 'asset_id')); $seat_contacts = array_map('intval', array_column($holders['contacts'], 'contact_id')); $asset_options = []; $sql = mysqli_query($mysqli, "SELECT asset_id, asset_name, asset_type, asset_make, asset_model FROM assets WHERE asset_client_id = $client_id AND asset_archived_at IS NULL ORDER BY asset_name ASC"); while ($option = mysqli_fetch_assoc($sql)) { $option['on_license'] = in_array(intval($option['asset_id']), $seat_assets, true); $asset_options[] = $option; } $contact_options = []; $sql = mysqli_query($mysqli, "SELECT contact_id, contact_name, contact_title, contact_photo, contact_client_id FROM contacts WHERE contact_client_id = $client_id AND contact_archived_at IS NULL ORDER BY contact_name ASC"); while ($option = mysqli_fetch_assoc($sql)) { $option['on_license'] = in_array(intval($option['contact_id']), $seat_contacts, true); $contact_options[] = $option; } $on_license_first = function ($a, $b) { return intval($b['on_license']) - intval($a['on_license']); }; usort($asset_options, $on_license_first); usort($contact_options, $on_license_first); ob_start(); ?>