F_print_error('ERROR', $l['m_not_authorized_to_view']); $dcn_id = 0; $sts_id = 0; $rck_id = 0; } else { if (isset($_REQUEST['sts_id']) and (!isset($_REQUEST['change_datacenter']) or empty($_REQUEST['change_datacenter']))) { $sts_id = intval($_REQUEST['sts_id']); $sts_perm = F_getUserPermission($user_id, K_TABLE_SUITE_GROUPS, $sts_id); if ($sts_perm == 0) { F_print_error('ERROR', $l['m_not_authorized_to_view']); $sts_id = 0; $rck_id = 0; } else { if (isset($_REQUEST['rck_id']) and (!isset($_REQUEST['change_suite']) or empty($_REQUEST['change_suite']))) { $rck_id = intval($_REQUEST['rck_id']); $user_permissions = F_getUserPermission($user_id, K_TABLE_RACK_GROUPS, $rck_id); if ($user_permissions == 0) { F_print_error('ERROR', $l['m_not_authorized_to_view']); $rck_id = 0; } } else { $rck_id = 0; } } } else { $sts_id = 0; $rck_id = 0; } } } else { $dcn_id = 0;
while ($mst = F_db_fetch_array($rst)) { $sts_permission = F_getUserPermission($user_id, K_TABLE_SUITE_GROUPS, $mst['sts_id']); if ($sts_permission > 0) { $suite = '<a href="tce_view_suite.php?dcn_id=' . $mdc['dcn_id'] . '&sts_id=' . $mst['sts_id'] . '" title="' . $l['t_view_suite'] . '">' . $mst['sts_name'] . '</a>'; echo '<h2 style="text-align:left;">• ' . $datacenter . ' → ' . $suite . '</h2>'; // *** GET RACK INFO $rack_pos = array(); // store rack positions $rack_name = array(); //store rack names $sql = 'SELECT * FROM ' . K_TABLE_RACKS . ' WHERE rck_sts_id=' . $mst['sts_id'] . ' ORDER BY rck_name ASC'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_array($r)) { $rack_pos[$m['rck_position_x']][$m['rck_position_y']] = $m['rck_id']; $rack_name[$m['rck_id']] = $m['rck_name'] . ' - ' . $m['rck_label'] . ' - ' . $m['rck_tag']; $rck_permission[$m['rck_id']] = F_getUserPermission($user_id, K_TABLE_RACK_GROUPS, $m['rck_id']); } } else { F_display_db_error(); } // *** MAP OF RACKS ON SELECTED SUITE echo '<div class="row">' . K_NEWLINE; echo '<table class="suite">' . K_NEWLINE; for ($y = $mst['sts_height']; $y >= 0; --$y) { echo '<tr>'; echo '<td style="text-align:center;">' . $y . '</td>'; for ($x = 1; $x <= $mst['sts_width']; ++$x) { if ($y == 0) { echo '<td style="text-align:center;">' . $x . '</td>'; } else { if (isset($rack_pos[$x][$y]) and ($rck_permission[$rack_pos[$x][$y]] & 1) == 1) {
} } } else { $sts_id = 0; $rck_id = 0; } } } else { $dcn_id = 0; $sts_id = 0; $rck_id = 0; } // selected or default object if (isset($_REQUEST['obj_id']) and (!isset($_REQUEST['change_datacenter']) or empty($_REQUEST['change_datacenter'])) and (!isset($_REQUEST['change_suite']) or empty($_REQUEST['change_suite'])) and (!isset($_REQUEST['change_rack']) or empty($_REQUEST['change_rack']))) { $obj_id = intval($_REQUEST['obj_id']); $user_permissions = F_getUserPermission($user_id, K_TABLE_OBJECT_GROUPS, $obj_id); if ($user_permissions == 0) { F_print_error('ERROR', $l['m_not_authorized_to_edit']); $obj_id = 0; } if ($obj_id > 0 and ($dcn_id == 0 or $sts_id == 0 or $rck_id == 0)) { // retrive location values $sql = 'SELECT dcn_id, sts_id, rck_id FROM ' . K_TABLE_DATACENTERS . ', ' . K_TABLE_SUITES . ', ' . K_TABLE_RACKS . ', ' . K_TABLE_LOCATIONS . ', ' . K_TABLE_OBJECTS . ' WHERE loc_obj_id=obj_id AND loc_rack_id=rck_id AND rck_sts_id=sts_id AND sts_dcn_id=dcn_id AND obj_id=' . $obj_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_array($r)) { $dcn_id = $m['dcn_id']; $sts_id = $m['sts_id']; $rck_id = $m['rck_id']; }
/** * Get an HTML representation of objects on the selected rack. * @param $dcn_id (int) ID of selected datacenter. * @param $sts_id (int) ID of selected suite. * @param $rck_id (int) ID of selected rack. * @param $rack_data (array) Array of rack data objects. * @return string. */ function getRackStack($dcn_id, $sts_id, $rck_id, &$rack_data) { global $l, $db; require_once '../config/tce_config.php'; require_once 'tce_functions_group_permissions.php'; $user_id = intval($_SESSION['session_user_id']); $dcn_id = intval($dcn_id); $sts_id = intval($sts_id); $rck_id = intval($rck_id); // get ID for 'guest' object type $guest_obt_id = F_getObjectTypeID('guest'); $rck_permission = F_getUserPermission($user_id, K_TABLE_RACK_GROUPS, $rck_id); // get objects on rack $rackstack = array(); $sql = 'SELECT * FROM ' . K_TABLE_OBJECTS . ', ' . K_TABLE_LOCATIONS . ' WHERE obj_id=loc_obj_id AND loc_rack_id=' . $rck_id . ' ORDER BY loc_row_top DESC, loc_front DESC, loc_center DESC, loc_rear DESC'; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_assoc($r)) { $obj_permission = F_getUserPermission($user_id, K_TABLE_OBJECT_GROUPS, $m['obj_id']); if ($obj_permission > 0) { // get object position on the row $rpos = bindec(intval($m['loc_front']) . intval($m['loc_center']) . intval($m['loc_rear'])); switch ($m['loc_side']) { case 'left': case 'right': $rkey = $m['loc_side'] . '_' . $m['loc_row_top']; if (F_getBoolean($m['loc_front'])) { $rkey .= '_front'; } elseif (F_getBoolean($m['loc_rear'])) { $rkey .= '_rear'; } break; case 'top': case 'bottom': $rkey = $m['loc_side'] . '_' . $m['loc_row_top'] . '_' . $rpos; break; case '-': default: $rkey = $m['loc_row_top'] . '_' . $rpos; break; } $rackstack[$rkey] = $m; // get guest list $rackstack[$rkey]['guests'] = F_getGuestList($m['obj_id'], $guest_obt_id); // get capacity for each object on rack $capacity = array(); F_get_object_data_array($m['obj_id'], $ilo, $capacity); if (isset($capacity) and !empty($capacity)) { $rackstack[$rkey]['capacity'] = $capacity; } } } } else { F_display_db_error(); } $rackobjs = '<table class="rack">' . K_NEWLINE; $rackobjs .= '<tr style="font-size:80%;"><th>#</th>'; $rackobjs .= '<th title="' . $l['w_front'] . ' - ' . $l['w_left'] . '">FL</th><th title="' . $l['w_front'] . ' - ' . $l['w_right'] . '">FR</th>'; $rackobjs .= '<th style="min-width:50px;">' . $l['w_front'] . '</th>'; $rackobjs .= '<th style="min-width:50px;">' . $l['w_center'] . '</th>'; $rackobjs .= '<th style="min-width:50px;">' . $l['w_rear'] . '</th>'; $rackobjs .= '<th title="' . $l['w_rear'] . ' - ' . $l['w_left'] . '">RL</th><th title="' . $l['w_rear'] . ' - ' . $l['w_right'] . '">RR</th></tr>'; $nextrow_front = $rack_data['rck_height'] + 1; $nextrow_center = $nextrow_front; $nextrow_rear = $nextrow_front; $nextrow_frontleft = $nextrow_front; $nextrow_frontright = $nextrow_front; $nextrow_rearleft = $nextrow_front; $nextrow_rearright = $nextrow_front; // initialize array to store the number of free slots $freeslots = array('3L' => 0, '2L' => 0, '1L' => 0); for ($pos = $rack_data['rck_height'] + 1; $pos >= 0; --$pos) { if ($pos > $rack_data['rck_height']) { // top $slidenum = $l['w_top']; $oidx = 'top_' . $pos; } elseif ($pos == 0) { // bottom $slidenum = $l['w_bottom']; $oidx = 'bottom_' . $pos; } else { $slidenum = $pos; $oidx = $pos; } $rackobjs .= '<tr>' . K_NEWLINE; $rackobjs .= '<td>' . $slidenum . '</td>'; // object capacity $objcap = ''; // LEFT-FRONT RACK SIDE if (isset($rackstack['left_' . $pos . '_front'])) { $oidx = 'left_' . $pos . '_front'; if (isset($rackstack[$oidx]['capacity'])) { $objcap = F_getObjectCapacityString($rackstack[$oidx]['capacity']); } $lrowspan = 1 + $pos - $rackstack[$oidx]['loc_row_bottom']; $rackobjs .= '<td style="max-width:20px;" rowspan="' . $lrowspan . '" class="rackobject" id="robj_' . $rackstack[$oidx]['obj_id'] . '"><a class="vtext" href="tce_view_object.php?dcn_id=' . $dcn_id . '&sts_id=' . $sts_id . '&rck_id=' . $rck_id . '&obj_id=' . $rackstack[$oidx]['obj_id'] . '#object" title="' . $l['w_show_details'] . '">' . $rackstack[$oidx]['obj_name'] . ' - ' . $rackstack[$oidx]['obj_label'] . ' - ' . $rackstack[$oidx]['obj_tag'] . $objcap . '</a></td>'; $nextrow_frontleft = $rackstack[$oidx]['loc_row_bottom'] - 1; } elseif ($pos <= $nextrow_frontleft) { if ($rck_permission > 1) { $rackobjs .= '<td><a href="tce_edit_objects.php?loc_rack_id=' . $rck_id . '&loc_side=left&loc_row_top=' . $pos . '&loc_row_bottom=' . $pos . '" title="' . $l['t_object_editor'] . '">' . $l['w_new'] . '</a></td>' . K_NEWLINE; } else { $rackobjs .= '<td> </td>' . K_NEWLINE; } } // RIGHT-FRONT RACK SIDE if (isset($rackstack['right_' . $pos . '_front'])) { $oidx = 'right_' . $pos . '_front'; if (isset($rackstack[$oidx]['capacity'])) { $objcap = F_getObjectCapacityString($rackstack[$oidx]['capacity']); } $lrowspan = 1 + $pos - $rackstack[$oidx]['loc_row_bottom']; $rackobjs .= '<td style="max-width:20px;" rowspan="' . $lrowspan . '" class="rackobject" id="robj_' . $rackstack[$oidx]['obj_id'] . '"><a class="vtext" href="tce_view_object.php?dcn_id=' . $dcn_id . '&sts_id=' . $sts_id . '&rck_id=' . $rck_id . '&obj_id=' . $rackstack[$oidx]['obj_id'] . '#object" title="' . $l['w_show_details'] . '">' . $rackstack[$oidx]['obj_name'] . ' - ' . $rackstack[$oidx]['obj_label'] . ' - ' . $rackstack[$oidx]['obj_tag'] . $objcap . '</a></td>'; $nextrow_frontright = $rackstack[$oidx]['loc_row_bottom'] - 1; } elseif ($pos <= $nextrow_frontright) { if ($rck_permission > 1) { $rackobjs .= '<td><a href="tce_edit_objects.php?loc_rack_id=' . $rck_id . '&loc_side=right&loc_row_top=' . $pos . '&loc_row_bottom=' . $pos . '" title="' . $l['t_object_editor'] . '">' . $l['w_new'] . '</a></td>' . K_NEWLINE; } else { $rackobjs .= '<td> </td>' . K_NEWLINE; } } // possible positions for single object on a rack row are: // 000 invalid // 001 1 // 010 2 // 011 3 // 100 4 // 101 invalid // 110 6 // 111 7 $rowpos = array(7, 6, 4, 3, 2, 1); $tmpfront = false; $tmpcenter = false; $tmprear = false; // for each possible position combinations foreach ($rowpos as $rp) { $oidxr = $oidx . '_' . $rp; if (isset($rackstack[$oidxr])) { if (isset($rackstack[$oidxr]['capacity'])) { $objcap = F_getObjectCapacityString($rackstack[$oidxr]['capacity']); } // print object $rowspan = 1 + $pos - $rackstack[$oidxr]['loc_row_bottom']; // calculate object width (1, 2 or 3) $obj_cols = intval($rackstack[$oidxr]['loc_front']) + intval($rackstack[$oidxr]['loc_center']) + intval($rackstack[$oidxr]['loc_rear']); // print object $obj_cell = '<td rowspan="' . $rowspan . '" colspan="' . $obj_cols . '" class="rackobject" id="robj_' . $rackstack[$oidxr]['obj_id'] . '"><a href="tce_view_object.php?dcn_id=' . $dcn_id . '&sts_id=' . $sts_id . '&rck_id=' . $rck_id . '&obj_id=' . $rackstack[$oidxr]['obj_id'] . '#object" title="' . $l['w_show_details'] . '">' . $rackstack[$oidxr]['obj_name'] . ' - ' . $rackstack[$oidxr]['obj_label'] . ' - ' . $rackstack[$oidxr]['obj_tag'] . $objcap . '</a></td>'; $nextrow = $rackstack[$oidxr]['loc_row_bottom'] - 1; if ($rackstack[$oidxr]['loc_front']) { $tmpfront = true; $nextrow_front = $nextrow; } if ($rackstack[$oidxr]['loc_center']) { $tmpcenter = true; $nextrow_center = $nextrow; } if ($rackstack[$oidxr]['loc_rear']) { $tmprear = true; $nextrow_rear = $nextrow; } $empty_cols = 0; if ($rp < 4) { if (!$tmpfront) { if ($pos <= $nextrow_front) { ++$empty_cols; } } if ($rp < 2) { if (!$tmpcenter) { if ($pos <= $nextrow_center) { ++$empty_cols; } } } } // check for empty slots before this if ($empty_cols > 0) { if ($rp != 1 or $empty_cols != 1) { if ($rck_permission > 1) { $rackobjs .= '<td colspan="' . $empty_cols . '"><a href="tce_edit_objects.php?loc_rack_id=' . $rck_id . '&loc_row_top=' . $pos . '&loc_row_bottom=' . $pos . '" title="' . $l['t_object_editor'] . '">' . $l['w_new'] . '</a></td>' . K_NEWLINE; } else { $rackobjs .= '<td colspan="' . $empty_cols . '"> </td>' . K_NEWLINE; } // count free slots if ($pos > 0 and $pos <= $rack_data['rck_height']) { $freeslots[$empty_cols . 'L'] += 1; } } else { // you cannot add an object in the middle $rackobjs .= '<td colspan="' . $empty_cols . '" style="background-color:#aaaaaa;"> </td>' . K_NEWLINE; } } // print object $rackobjs .= $obj_cell; } } // end for each position // print last empty rows $empty_cols = 0; if (!$tmprear) { if ($pos <= $nextrow_rear) { ++$empty_cols; } if (!$tmpcenter) { if ($pos <= $nextrow_center) { ++$empty_cols; } if (!$tmpfront) { if ($pos <= $nextrow_front) { ++$empty_cols; } } } } if ($empty_cols > 0) { if ($rck_permission > 1) { $rackobjs .= '<td colspan="' . $empty_cols . '"><a href="tce_edit_objects.php?loc_rack_id=' . $rck_id . '&loc_row_top=' . $pos . '&loc_row_bottom=' . $pos . '" title="' . $l['t_object_editor'] . '">' . $l['w_new'] . '</a></td>' . K_NEWLINE; } else { $rackobjs .= '<td colspan="' . $empty_cols . '"> </td>' . K_NEWLINE; } // count free slots if ($pos > 0 and $pos <= $rack_data['rck_height']) { $freeslots[$empty_cols . 'L'] += 1; } } // LEFT-REAR RACK SIDE if (isset($rackstack['left_' . $pos . '_rear'])) { $oidx = 'left_' . $pos . '_rear'; if (isset($rackstack[$oidx]['capacity'])) { $objcap = F_getObjectCapacityString($rackstack[$oidx]['capacity']); } $lrowspan = 1 + $pos - $rackstack[$oidx]['loc_row_bottom']; $rackobjs .= '<td style="max-width:20px;" rowspan="' . $lrowspan . '" class="rackobject" id="robj_' . $rackstack[$oidx]['obj_id'] . '"><a class="vtext" href="tce_view_object.php?dcn_id=' . $dcn_id . '&sts_id=' . $sts_id . '&rck_id=' . $rck_id . '&obj_id=' . $rackstack[$oidx]['obj_id'] . '#object" title="' . $l['w_show_details'] . '">' . $rackstack[$oidx]['obj_name'] . ' - ' . $rackstack[$oidx]['obj_label'] . ' - ' . $rackstack[$oidx]['obj_tag'] . $objcap . '</a></td>'; $nextrow_rearleft = $rackstack[$oidx]['loc_row_bottom'] - 1; } elseif ($pos <= $nextrow_rearleft) { if ($rck_permission > 1) { $rackobjs .= '<td><a href="tce_edit_objects.php?loc_rack_id=' . $rck_id . '&loc_side=left&loc_row_top=' . $pos . '&loc_row_bottom=' . $pos . '" title="' . $l['t_object_editor'] . '">' . $l['w_new'] . '</a></td>' . K_NEWLINE; } else { $rackobjs .= '<td> </td>' . K_NEWLINE; } } // RIGHT-REAR RACK SIDE if (isset($rackstack['right_' . $pos . '_rear'])) { $oidx = 'right_' . $pos . '_rear'; if (isset($rackstack[$oidx]['capacity'])) { $objcap = F_getObjectCapacityString($rackstack[$oidx]['capacity']); } $lrowspan = 1 + $pos - $rackstack[$oidx]['loc_row_bottom']; $rackobjs .= '<td style="max-width:20px;" rowspan="' . $lrowspan . '" class="rackobject" id="robj_' . $rackstack[$oidx]['obj_id'] . '"><a class="vtext" href="tce_view_object.php?dcn_id=' . $dcn_id . '&sts_id=' . $sts_id . '&rck_id=' . $rck_id . '&obj_id=' . $rackstack[$oidx]['obj_id'] . '#object" title="' . $l['w_show_details'] . '">' . $rackstack[$oidx]['obj_name'] . ' - ' . $rackstack[$oidx]['obj_label'] . ' - ' . $rackstack[$oidx]['obj_tag'] . $objcap . '</a></td>'; $nextrow_rearright = $rackstack[$oidx]['loc_row_bottom'] - 1; } elseif ($pos <= $nextrow_rearright) { if ($rck_permission > 1) { $rackobjs .= '<td><a href="tce_edit_objects.php?loc_rack_id=' . $rck_id . '&loc_side=right&loc_row_top=' . $pos . '&loc_row_bottom=' . $pos . '" title="' . $l['t_object_editor'] . '">' . $l['w_new'] . '</a></td>' . K_NEWLINE; } else { $rackobjs .= '<td> </td>' . K_NEWLINE; } } $rackobjs .= '</tr>' . K_NEWLINE; } // store rack stack $rack_data['rackstack'] = $rackstack; // store free slots info $rack_data['free_slots'] = $freeslots; $rackobjs .= '<tr><td colspan="8" style="background-color:#ffffcc;color:#000000;text-align:right;">' . $l['t_free_1u_slots'] . ': 3L=' . $rack_data['free_slots']['3L'] . ', 2L=' . $rack_data['free_slots']['2L'] . ', 1L=' . $rack_data['free_slots']['1L'] . '</td></tr>' . K_NEWLINE; $rackobjs .= '</table>' . K_NEWLINE; return $rackobjs; }
/** * Return the user permission for the selected record. * @param $user_id (int) User ID. * @param $table (string) Database table name. * @param $record_id (int) Table record ID. * @return (int) Permission value (bits: 1=read, 2=add, 3=update, 4=delete, 5=IPMI, 6=SSH). */ function F_getUserPermission($user_id, $table, $record_id) { global $l, $db; require_once '../config/tce_config.php'; $permission = 0; // check table name switch ($table) { case K_TABLE_OBJECT_GROUPS: $record_column = 'obg_obj_id'; $group_column = 'obg_group_id'; $permission_column = 'obg_permission'; break; case K_TABLE_RACK_GROUPS: $record_column = 'rkg_rck_id'; $group_column = 'rkg_group_id'; $permission_column = 'rkg_permission'; break; case K_TABLE_SUITE_GROUPS: $record_column = 'stg_sts_id'; $group_column = 'stg_group_id'; $permission_column = 'stg_permission'; break; case K_TABLE_DATACENTER_GROUPS: $record_column = 'dcg_dcn_id'; $group_column = 'dcg_group_id'; $permission_column = 'dcg_permission'; break; default: return 0; } // check if user is an administrator $sql = 'SELECT user_level FROM ' . K_TABLE_USERS . ' WHERE user_id=' . $user_id . ' LIMIT 1'; if ($r = F_db_query($sql, $db)) { if ($m = F_db_fetch_array($r)) { if ($m['user_level'] >= K_AUTH_ADMINISTRATOR) { // return maximum permission value (including reserved bits) return 255; } } } else { F_display_db_error(); } // get user permissions $sql = 'SELECT ' . $permission_column . ' FROM ' . K_TABLE_USERGROUP . ', ' . K_TABLE_GROUPS . ', ' . $table . ' WHERE usrgrp_user_id=' . $user_id . ' AND group_id=usrgrp_group_id AND ' . $group_column . '=group_id AND ' . $record_column . '=' . $record_id . ''; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_array($r)) { $permission |= $m[$permission_column]; } } else { F_display_db_error(); } // get parent object permissions if ($table == K_TABLE_OBJECTS_MAP) { $sql = 'SELECT omp_parent_obj_id FROM ' . K_TABLE_OBJECTS_MAP . ' WHERE omp_child_obj_id=' . $record_id . ''; if ($r = F_db_query($sql, $db)) { while ($m = F_db_fetch_array($r)) { $permission |= F_getUserPermission($user_id, K_TABLE_OBJECTS_MAP, $m['omp_parent_obj_id']); } } else { F_display_db_error(); } } return $permission; }
if (isset($data['dcn_name'])) { echo '<form action="' . $_SERVER['SCRIPT_NAME'] . '" method="post" enctype="multipart/form-data" id="form_editor">' . K_NEWLINE; echo '<div class="row" style="margin-bottom:10px;"><hr /></div>' . K_NEWLINE; echo getFormDescriptionLine($l['w_name'], $l['h_datacenter_name'], '<strong>' . htmlspecialchars($data['dcn_name'], ENT_COMPAT, $l['a_meta_charset']) . '</strong>'); echo getFormDescriptionLine($l['w_website'], $l['h_website_url'], '<a href="' . htmlspecialchars($data['dcn_website_url'], ENT_COMPAT, $l['a_meta_charset']) . '" onclick="pdfWindow=window.open(\'' . htmlspecialchars($data['dcn_website_url'], ENT_COMPAT, $l['a_meta_charset']) . '\',\'pdfWindow\',\'dependent,menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes\'); return false;" title="' . htmlspecialchars($data['dcn_name'], ENT_COMPAT, $l['a_meta_charset']) . '">' . htmlspecialchars($data['dcn_website_url'], ENT_COMPAT, $l['a_meta_charset']) . '</a>'); echo getFormDescriptionLine($l['w_map'], $l['w_map'], '<a href="' . htmlspecialchars($data['dcn_map_url'], ENT_COMPAT, $l['a_meta_charset']) . '"onclick="pdfWindow=window.open(\'' . htmlspecialchars($data['dcn_map_url'], ENT_COMPAT, $l['a_meta_charset']) . '\',\'pdfWindow\',\'dependent,menubar=yes,resizable=yes,scrollbars=yes,status=yes,toolbar=yes\'); return false;" title="' . htmlspecialchars($l['w_map'], ENT_COMPAT, $l['a_meta_charset']) . '">' . htmlspecialchars($data['dcn_map_url'], ENT_COMPAT, $l['a_meta_charset']) . '</a>'); echo getFormDescriptionLine($l['w_description'], $l['h_datacenter_description'], str_replace("\n", '<br />', htmlspecialchars($data['dcn_description'], ENT_COMPAT, $l['a_meta_charset']))); // list of suites echo '<div class="row">' . K_NEWLINE; echo '<span class="label">' . $l['w_suites'] . '</span>' . K_NEWLINE; echo '<br /><div class="value">' . K_NEWLINE; $sql = 'SELECT * FROM ' . K_TABLE_SUITES . ' WHERE sts_dcn_id=' . $dcn_id . ' ORDER BY sts_name ASC'; if ($r = F_db_query($sql, $db)) { echo '<ul>' . K_NEWLINE; while ($m = F_db_fetch_array($r)) { $sts_permission = F_getUserPermission($user_id, K_TABLE_SUITE_GROUPS, $m['sts_id']); if ($sts_permission > 0) { echo '<li><a href="tce_view_suite.php?dcn_id=' . $dcn_id . '&sts_id=' . $m['sts_id'] . '" title="' . $l['w_view'] . ': ' . $m['sts_name'] . '">' . htmlspecialchars($m['sts_name'], ENT_NOQUOTES, $l['a_meta_charset']) . '</a></li>' . K_NEWLINE; } } echo '</ul>' . K_NEWLINE; } else { F_display_db_error(); } echo '</div>' . K_NEWLINE; echo '</div>' . K_NEWLINE; echo '<div class="row">' . K_NEWLINE; echo ' ' . K_NEWLINE; // comma separated list of required fields echo '<input type="hidden" name="ff_required" id="ff_required" value="" />' . K_NEWLINE; echo '<input type="hidden" name="ff_required_labels" id="ff_required_labels" value="" />' . K_NEWLINE;
$userlevel = intval($_SESSION['session_user_level']); $user_groups = F_getUserGroups($user_id); $dcn_perm = 0; $user_permissions = 0; // selected or default datacenter and suite if (isset($_REQUEST['dcn_id'])) { $dcn_id = intval($_REQUEST['dcn_id']); $dcn_perm = F_getUserPermission($user_id, K_TABLE_DATACENTER_GROUPS, $dcn_id); if ($dcn_perm == 0) { F_print_error('ERROR', $l['m_not_authorized_to_edit']); $dcn_id = 0; $sts_id = 0; } else { if (isset($_REQUEST['sts_id']) and (!isset($_REQUEST['change_datacenter']) or empty($_REQUEST['change_datacenter']))) { $sts_id = intval($_REQUEST['sts_id']); $user_permissions = F_getUserPermission($user_id, K_TABLE_SUITE_GROUPS, $sts_id); if ($user_permissions == 0) { F_print_error('ERROR', $l['m_not_authorized_to_edit']); $sts_id = 0; } } else { $sts_id = 0; } } } else { $dcn_id = 0; $sts_id = 0; } if ($dcn_id == 0 and isset($_REQUEST['sts_id']) and $_REQUEST['sts_id'] > 0) { $sts_id = intval($_REQUEST['sts_id']); $sql = 'SELECT sts_dcn_id FROM ' . K_TABLE_SUITES . ' WHERE sts_id=' . $sts_id . ' LIMIT 1';
require_once '../config/tce_config.php'; $pagelevel = K_AUTH_ADMIN_DATACENTERS; require_once '../../shared/code/tce_authorization.php'; $thispage_title = $l['t_datacenter_editor']; require_once '../code/tce_page_header.php'; require_once '../../shared/code/tce_functions_form.php'; require_once 'tce_functions_objects.php'; require_once 'tce_functions_group_permissions.php'; $user_id = intval($_SESSION['session_user_id']); //$userip = $_SESSION['session_user_ip']; $userlevel = intval($_SESSION['session_user_level']); $user_groups = F_getUserGroups($user_id); $user_permissions = 0; if (isset($_REQUEST['dcn_id'])) { $dcn_id = intval($_REQUEST['dcn_id']); $user_permissions = F_getUserPermission($user_id, K_TABLE_DATACENTER_GROUPS, $dcn_id); if ($user_permissions == 0) { F_print_error('ERROR', $l['m_not_authorized_to_edit']); $dcn_id = 0; } } else { $dcn_id = 0; } if (isset($_REQUEST['dcn_name'])) { $dcn_name = $_REQUEST['dcn_name']; } else { $dcn_name = ''; } if (isset($_REQUEST['dcn_description'])) { $dcn_description = $_REQUEST['dcn_description']; } else {
} $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']); } $data['asset']['datacenter']['DCN' . $m['dcn_id']]['suite']['STS' . $m['sts_id']]['rack']['RCK' . $m['rck_id']]['object']['OBJ' . $m['obj_id']] = $objdata; } } } else {
} break; case 'add': case 'clone': // Add $old_obj_id = $obj_id; if ($formstatus = F_check_form_fields()) { // check submitted form fields // check permission if ($userlevel < K_AUTH_ADMINISTRATOR) { // check permission if (!empty($omp_parent_obj_ids)) { $parentperm = 0; foreach ($omp_parent_obj_ids as $parent_obj_id) { //DEBUG $parentperm |= F_getUserPermission($user_id, K_TABLE_OBJECT_GROUPS, $obj_id); } if (($parentperm & 2) == 0) { F_print_error('ERROR', $l['m_not_authorized_to_edit']); F_stripslashes_formfields(); break; } else { $perms = $parentperm; } } } // check if name is unique /* if (!F_check_unique(K_TABLE_OBJECTS, 'obj_name=\''.F_escape_sql($obj_name).'\' AND obj_obt_id='.$obj_obt_id.'')) { F_print_error('WARNING', $l['m_duplicate_name']); $formstatus = FALSE; F_stripslashes_formfields();