0) { $product = $product[0]; } else { $product = null; } } else { $product = null; } // Get assigned software versions $api_url = '/v2/products_software_assignment/product_id='.$productrowid; $assigned_response = ioServer($api_url,''); if (!empty($assigned_response)){$assigned = json_decode($assigned_response,true);}else{$assigned = [];} $assigned_ids = array_column($assigned, 'software_version_id'); // Get all software versions $api_url = '/v2/products_software_versions/list'; $versions_response = ioServer($api_url,''); if (!empty($versions_response)){$versions = json_decode($versions_response,true);}else{$versions = [];} // Get all upgrade paths $api_url = '/v2/products_software_upgrade_paths/list'; $paths_response = ioServer($api_url,''); if (!empty($paths_response)){$paths = json_decode($paths_response,true);}else{$paths = [];} // Handle form submission if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit'])) { $selected_versions = $_POST['versions'] ?? []; // Delete existing assignments not in selected foreach ($assigned as $assign) { if (!in_array($assign['software_version_id'], $selected_versions)) { $payload = json_encode(['rowID' => $assign['rowID'], 'delete' => true], JSON_UNESCAPED_UNICODE); ioServer('/v2/products_software_assignment', $payload); } } // Add new assignments foreach ($selected_versions as $version_id) { if (!in_array($version_id, $assigned_ids)) { $payload = json_encode(['product_id' => $productrowid, 'software_version_id' => $version_id], JSON_UNESCAPED_UNICODE); ioServer('/v2/products_software_assignment', $payload); } } header('Location: index.php?page=products_software_assignments&productrowid='.$productrowid.'&success_msg=1'); exit; } // Handle success messages if (isset($_GET['success_msg'])) { if ($_GET['success_msg'] == 1) { $success_msg = 'Software assignments updated successfully.'; } } template_header('Software Assignments', 'products_software_assignments', 'manage'); $view = '

Software Assignments for ' . ($product ? (($product->productcode ?? 'Unknown') . ' - ' . (${$product->productname} ?? $product->productname)) : 'Product not found') . '

back
'; if (isset($success_msg)){ $view .= '

'.$success_msg.'

'; } $view .= '
Select Software Versions
'; foreach ($versions as $version) { $checked = in_array($version['rowID'], $assigned_ids) ? 'checked' : ''; $upgrade_paths = []; foreach ($paths as $path) { if ($path['from_version_id'] == $version['rowID'] || $path['to_version_id'] == $version['rowID']) { $from_ver = ''; $to_ver = ''; foreach ($versions as $v) { if ($v['rowID'] == $path['from_version_id']) $from_ver = $v['version']; if ($v['rowID'] == $path['to_version_id']) $to_ver = $v['version']; } $upgrade_paths[] = $from_ver . ' → ' . $to_ver . ' (' . $path['price'] . ' ' . $path['currency'] . ')'; } } $paths_str = implode('
', $upgrade_paths); $view .= ''; } $view .= '
Name Version HW Version Status Upgrade Paths
'.$version['name'].' '.$version['version'].' '.$version['hw_version'].' '.(($version['status'] == 1) ? 'Active' : 'Inactive').' '.$paths_str.'
'; $view .= ' '; //OUTPUT echo $view; template_footer(); ?>