$value) { switch ($var) { case "group": case "group_id": $values = get_group_entities($value); $where[] = generate_query_values_ng($values, 'vm_id'); break; case 'device_group_id': case 'device_group': $values = get_group_entities($value, 'device'); $where[] = generate_query_values_ng($values, 'device_id'); break; case "device": case "device_id": $where[] = generate_query_values_ng($value, 'device_id'); break; case "os": $where[] = generate_query_values_ng($value, 'vm_guestos'); break; case "state": $where[] = generate_query_values_ng($value, 'vm_state'); break; case "memory": $where[] = generate_query_values_ng($value, 'vm_memory'); break; case "cpu": $where[] = generate_query_values_ng($value, 'vm_cpucount'); break; } } $where[] = $GLOBALS['cache']['where']['devices_permitted']; $sql .= generate_where_clause($where); return $sql; } function print_vm_table_header($vars) { $stripe_class = "table-striped"; echo('' . PHP_EOL); $cols = [ // [ NULL, 'class="state-marker"' ], // FIXME useful when we start polling VM status 'device' => ['Device', 'style="width: 250px;"'], 'name' => ['Name'], 'state' => ['State'], 'os' => ['Operating System'], 'type' => ['Guest Type', 'style="width: 80px;"'], 'memory' => ['Memory'], 'cpu' => ['CPU'], ]; if ($vars['page'] === "device" || get_var_true($vars['popup'])) { unset($cols['device']); } echo(get_table_header($cols, $vars)); echo('' . PHP_EOL); } function print_vm_table($vars) { $sql = generate_vm_query($vars); $vms = []; foreach (dbFetchRows($sql) as $vm) { if ($device = device_by_id_cache($vm['device_id'])) { $vm['hostname'] = $device['hostname']; $vms[] = $vm; } } // Sorting // FIXME. Sorting can be as function, but in must before print_table_header and after get table from db switch ($vars['sort_order']) { case 'desc': $sort_order = SORT_DESC; $sort_neg = SORT_ASC; break; case 'reset': unset($vars['sort'], $vars['sort_order']); // no break here default: $sort_order = SORT_ASC; $sort_neg = SORT_DESC; } switch ($vars['sort']) { case 'name': $vms = array_sort_by($vms, 'vm_name', $sort_order, SORT_STRING); break; case 'os': $vms = array_sort_by($vms, 'vm_os', $sort_order, SORT_STRING); break; case 'state': $vms = array_sort_by($vms, 'vm_state', $sort_order, SORT_STRING); break; case 'memory': $vms = array_sort_by($vms, 'vm_memory', $sort_order, SORT_NUMERIC); break; case 'cpu': $vms = array_sort_by($vms, 'vm_cpucount', $sort_order, SORT_NUMERIC); break; default: // Not sorted } $vms_count = count($vms); // Pagination $pagination_html = pagination($vars, $vms_count); echo $pagination_html; if ($vars['pageno']) { $vms = array_chunk($vms, $vars['pagesize']); $vms = $vms[$vars['pageno'] - 1]; } // End Pagination echo generate_box_open(); print_vm_table_header($vars); foreach ($vms as $vm) { print_vm_row($vm, $vars); } echo '
'; echo generate_box_close(); echo $pagination_html; } function print_vm_row($vm, $vars) { echo generate_vm_row($vm, $vars); } function generate_vm_row($vm, $vars) { global $config; //print_vars($vm); $table_cols = "8"; $out = ''; // '; // FIXME useful when we start polling VM state if ($vars['page'] != "device" && $vars['popup'] != TRUE) { $out .= '' . generate_device_link($vm) . ''; $table_cols++; } $out .= '' . generate_entity_link('virtualmachine', $vm) . ''; $out .= '' . nicecase($vm['vm_state']) . ''; $guestos = rewrite_vm_guestos($vm['vm_guestos'], $vm['vm_type']); if (str_starts_with($guestos, 'Unknown')) { $out .= ' '.$guestos.''; } else { $out .= ' ' . $guestos . ''; } $out .= '' . nicecase($vm['vm_type']) . ''; $out .= '' . format_bi($vm['vm_memory'] * 1024 * 1024, 3, 3) . 'B'; $out .= '' . $vm['vm_cpucount'] . ''; $out .= ''; return $out; } // EOF