/** * Returns object data array. * @param $obj_id (int) Object ID. * @param $ilo (array) Data required to access ILO on servers. * @param $capacity (array) Count used and free ports. * @return array Object data array. */ function F_get_object_data_array($obj_id, &$ilo = array(), &$capacity = array()) { global $l, $db; require_once '../config/tce_config.php'; require_once 'tce_functions_group_permissions.php'; $obj_id = intval($obj_id); $objdata = array(); if (empty($obj_id)) { return $data; } // type of ports used on capacity calculation $port_types = array('NIC', 'OUTLET', 'PRT'); // 'ILO','NIC','OUTLET','PRT','PSU' // get first level data $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ' LEFT JOIN ' . K_TABLE_LOCATIONS . ' ON obj_id=loc_obj_id WHERE obj_id=' . $obj_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { $objdata = $m; } } else { F_display_db_error(); } // object type if (isset($objdata['obj_obt_id']) and $objdata['obj_obt_id'] > 0) { $sql = 'SELECT * FROM ' . K_TABLE_OBJECT_TYPES . ' WHERE obt_id=' . $objdata['obj_obt_id'] . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { $objdata['obj_obt_name'] = $m['obt_name']; $objdata['obj_obt_description'] = $m['obt_description']; //$objdata['obj_obt_color'] = $m['obt_color']; $objdata['obj_obt_virtual'] = F_getBoolean($m['obt_virtual']); // list parent objects of virtual object if ($objdata['obj_obt_virtual']) { $objdata['obj_parents'] = ''; $sqlp = 'SELECT omp_parent_obj_id FROM ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=' . $obj_id . ''; if ($rp = F_db_query($sqlp, $db)) { while ($mp = F_db_fetch_array($rp)) { $objdata['obj_parents'] .= '<br />' . F_get_object_path($mp['omp_parent_obj_id'], true, $odcn_id, $osts_id, $orck_id); } if (!empty($objdata['obj_parents'])) { $objdata['obj_parents'] = substr($objdata['obj_parents'], 6); } } else { F_display_db_error(); } } } } else { F_display_db_error(); } } // manufacturer if (isset($objdata['obj_mnf_id']) and $objdata['obj_mnf_id'] > 0) { $sql = 'SELECT mnf_name FROM ' . K_TABLE_MANUFACTURES . ' WHERE mnf_id=' . $objdata['obj_mnf_id'] . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { $objdata['obj_mnf'] = $m['mnf_name']; } } else { F_display_db_error(); } } // owner if (isset($objdata['obj_owner_id']) and $objdata['obj_owner_id'] > 0) { $sql = 'SELECT * FROM ' . K_TABLE_USERS . ' WHERE user_id=' . $objdata['obj_owner_id'] . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { $objdata['obj_owner'] = $m['user_lastname'] . ' ' . $m['user_firstname'] . ' - ' . $m['user_name']; } } else { F_display_db_error(); } } // tenant if (isset($objdata['obj_tenant_id']) and $objdata['obj_tenant_id'] > 0) { $sql = 'SELECT * FROM ' . K_TABLE_USERS . ' WHERE user_id=' . $objdata['obj_tenant_id'] . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_assoc($r)) { $objdata['obj_tenant'] = $m['user_lastname'] . ' ' . $m['user_firstname'] . ' - ' . $m['user_name']; } } else { F_display_db_error(); } } // get all possible attributes $sql = 'SELECT * FROM ' . K_TABLE_OBJECT_ATTRIBUTES_MAP . ', ' . K_TABLE_ATTRIBUTE_TYPES . ' WHERE oam_atb_id=atb_id AND oam_obt_id=' . $objdata['obj_obt_id'] . ' ORDER BY atb_name'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { if ($m['atb_type'] == 'bool') { $objdata['attribute'][$m['atb_name']] = '0'; } else { $objdata['attribute'][$m['atb_name']] = ''; } } } else { F_display_db_error(); } // get attribute values $sqla = 'SELECT * FROM ' . K_TABLE_ATTRIBUTE_VALUES . ', ' . K_TABLE_ATTRIBUTE_TYPES . ' WHERE atb_id=atv_atb_id AND atv_obj_id=' . $obj_id . ' ORDER BY atb_name'; if ($ra = F_db_query($sqla, $db)) { while ($ma = F_db_fetch_assoc($ra)) { if (isset($ma['atv_value'][0])) { $objdata['attribute'][$ma['atb_name']] = $ma['atv_value']; // get ILO user and password if ($ma['atb_name'] == 'ILO user') { $ilo['user'] = $ma['atv_value']; } elseif ($ma['atb_name'] == 'ILO password') { $ilo['password'] = $ma['atv_value']; } if ($objdata['obj_name'] == 'ILO' and ($ma['atb_name'] == 'IP' or $ma['atb_name'] == 'IPv4' or $ma['atb_name'] == 'IPv6')) { $ilo['ip'] = $ma['atv_value']; } } } } else { F_display_db_error(); } // get permission info $objdata['permissions'] = F_getGroupsPermissions(K_TABLE_OBJECT_GROUPS, $obj_id); // get connections $objdata['connection'] = F_get_object_connections_array($obj_id); // calculate capacity for some object types if (in_array($objdata['obj_obt_name'], $port_types)) { if (!isset($capacity[$objdata['obj_obt_name']])) { $capacity[$objdata['obj_obt_name']] = array('total' => 0, 'used' => 0, 'free' => 0); } ++$capacity[$objdata['obj_obt_name']]['total']; if (empty($objdata['connection'])) { // free port ++$capacity[$objdata['obj_obt_name']]['free']; } else { // used port ++$capacity[$objdata['obj_obt_name']]['used']; } } // *** get data from child ojbects (if any) $sql = 'SELECT obj_id, obj_name, obj_label, obj_tag FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=obj_id AND omp_parent_obj_id=' . $obj_id . ' ORDER BY obj_name ASC'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { $objdata['child'][$m['obj_name']] = F_get_object_data_array($m['obj_id'], $ilo, $capacity); } } else { F_display_db_error(); } return $objdata; }
default: break; } //end of switch // --- Initialize variables if ($formstatus) { if ($menu_mode != 'clear') { if (isset($_REQUEST['change_datacenter']) and !empty($_REQUEST['change_datacenter']) or !isset($sts_id) or empty($sts_id)) { $sts_id = 0; $sts_name = ''; $sts_description = ''; $sts_floor = 0; $sts_width = 30; $sts_height = 30; } else { $perms = F_getGroupsPermissions(K_TABLE_SUITE_GROUPS, $sts_id); $sql = 'SELECT * FROM ' . K_TABLE_SUITES . ' WHERE sts_id=' . $sts_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_array($r)) { $sts_id = $m['sts_id']; $dcn_id = $m['sts_dcn_id']; $sts_name = $m['sts_name']; $sts_description = $m['sts_description']; $sts_floor = $m['sts_floor']; $sts_width = $m['sts_width']; $sts_height = $m['sts_height']; } else { $sts_name = ''; $sts_description = ''; $sts_floor = 0; $sts_width = 30;
$dcn_description = ''; $dcn_website_url = ''; $dcn_map_url = ''; break; default: break; } //end of switch // --- Initialize variables if ($formstatus) { if ($menu_mode != 'clear') { if (!isset($dcn_id) or empty($dcn_id)) { $dcn_id = 0; $dcn_name = ''; } else { $perms = F_getGroupsPermissions(K_TABLE_DATACENTER_GROUPS, $dcn_id); $sql = 'SELECT * FROM ' . K_TABLE_DATACENTERS . ' WHERE dcn_id=' . $dcn_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_array($r)) { $dcn_id = $m['dcn_id']; $dcn_name = $m['dcn_name']; $dcn_description = $m['dcn_description']; $dcn_website_url = $m['dcn_website_url']; $dcn_map_url = $m['dcn_map_url']; } else { $dcn_name = ''; $dcn_description = ''; $dcn_website_url = ''; $dcn_map_url = ''; } } else {
default: break; } //end of switch // --- Initialize variables if ($formstatus) { if ($menu_mode != 'clear') { if (isset($_REQUEST['change_datacenter']) and !empty($_REQUEST['change_datacenter']) or isset($_REQUEST['change_suite']) and !empty($_REQUEST['change_suite']) or !isset($rck_id) or empty($rck_id)) { $rck_id = 0; $rck_name = ''; $rck_description = ''; $rck_label = ''; $rck_tag = ''; $rck_height = 42; } else { $perms = F_getGroupsPermissions(K_TABLE_RACK_GROUPS, $rck_id); $sql = 'SELECT * FROM ' . K_TABLE_RACKS . ' WHERE rck_id=' . $rck_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_array($r)) { $rck_id = $m['rck_id']; $sts_id = $m['rck_sts_id']; $rck_name = $m['rck_name']; $rck_description = $m['rck_description']; $rck_label = $m['rck_label']; $rck_tag = $m['rck_tag']; $rck_height = $m['rck_height']; $rck_position_x = $m['rck_position_x']; $rck_position_y = $m['rck_position_y']; } else { $rck_name = ''; $rck_description = '';
if (($dcn_perm & 1) > 0 and ($sts_perm & 1) > 0) { $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']] = array('sts_id' => $m['sts_id'], 'sts_dcn_id' => $m['sts_dcn_id'], 'sts_name' => $m['sts_name'], 'sts_description' => $m['sts_description'], 'sts_floor' => $m['sts_floor'], 'sts_width' => $m['sts_width'], 'sts_height' => $m['sts_height'], 'rack' => array()); if ($userlevel >= K_AUTH_ADMINISTRATOR) { $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['sts_permissions'] = F_getGroupsPermsDesc(F_getGroupsPermissions(K_TABLE_SUITE_GROUPS, $m['sts_id'])); } } $prev_sts_id = $m['sts_id']; } // rack data if ($m['rck_id'] != $prev_rck_id) { $rck_perm = F_getUserPermission($user_id, K_TABLE_RACK_GROUPS, $m['rck_id']); if (($dcn_perm & 1) > 0 and ($sts_perm & 1) > 0 and ($rck_perm & 1) > 0) { $rck_value = $m; $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['rack']['RCK' . $m['rck_id']] = array('rck_id' => $m['rck_id'], 'rck_sts_id' => $m['rck_sts_id'], 'rck_name' => $m['rck_name'], 'rck_description' => $m['rck_description'], 'rck_label' => $m['rck_label'], 'rck_tag' => $m['rck_tag'], 'rck_height' => $m['rck_height'], 'rck_position_x' => $m['rck_position_x'], 'rck_position_y' => $m['rck_position_y'], 'rck_table' => getRackStack($m['dcn_id'], $m['sts_id'], $m['rck_id'], $rck_value), 'rck_rackstack' => $rck_value['rackstack'], 'rck_free_slots' => $rck_value['free_slots'], 'object' => array()); if ($userlevel >= K_AUTH_ADMINISTRATOR) { $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['rack']['RCK' . $m['rck_id']]['rck_permissions'] = F_getGroupsPermsDesc(F_getGroupsPermissions(K_TABLE_RACK_GROUPS, $m['rck_id'])); } } $prev_rck_id = $m['rck_id']; } $obj_perm = F_getUserPermission($user_id, K_TABLE_OBJECT_GROUPS, $m['obj_id']); if (($obj_perm & 1) > 0) { // object data $objdata = F_get_object_data_array($m['obj_id'], $ilo, $capacity); if (isset($capacity) and !empty($capacity)) { $objdata['capacity'] = $capacity; } // get all groups IDs $perm_groups = array_merge($perm_groups, array_keys($objdata['permissions'])); if ($userlevel >= K_AUTH_ADMINISTRATOR) { $objdata['permissions'] = F_getGroupsPermsDesc($objdata['permissions']);
$cab_b_cbt_id = 1; $cab_a_color = ''; $cab_b_color = ''; // set empty values for attributes $sql = 'SELECT * FROM ' . K_TABLE_OBJECT_ATTRIBUTES_MAP . ', ' . K_TABLE_ATTRIBUTE_TYPES . ' WHERE oam_atb_id=atb_id ORDER BY atb_name'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_array($r)) { $anum = sprintf('%03d', $m['atb_id']); $afield = 'atb_id_' . $anum; ${$afield} = $m['atb_default']; } } else { F_display_db_error(); } } else { $perms = F_getGroupsPermissions(K_TABLE_OBJECT_GROUPS, $obj_id); $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ' LEFT JOIN ' . K_TABLE_LOCATIONS . ' ON obj_id=loc_obj_id WHERE obj_id=' . $obj_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_array($r)) { $obj_id = $m['obj_id']; $obj_obt_id = $m['obj_obt_id']; $obj_name = $m['obj_name']; $obj_description = $m['obj_description']; $obj_label = $m['obj_label']; $obj_tag = $m['obj_tag']; $obj_mnf_id = $m['obj_mnf_id']; $obj_owner_id = $m['obj_owner_id']; $obj_tenant_id = $m['obj_tenant_id']; $loc_rack_id = $m['loc_rack_id']; $loc_row_top = $m['loc_row_top']; $loc_row_bottom = $m['loc_row_bottom'];