-// This is a popular helper for getting information about
-// a particular rack and its rackspace at once.
-function getRackData ($rack_id = 0, $silent = FALSE)
-{
- if ($rack_id == 0)
- {
- if ($silent == FALSE)
- showError ('Invalid rack_id', __FUNCTION__);
- return NULL;
- }
- $query =
- "select Rack.id, Rack.name, row_id, height, Rack.comment, RackRow.name as row_name from " .
- "Rack left join RackRow on Rack.row_id = RackRow.id " .
- "where Rack.id='${rack_id}'";
- $result = useSelectBlade ($query, __FUNCTION__);
- if (($row = $result->fetch (PDO::FETCH_ASSOC)) == NULL)
- {
- if ($silent == FALSE)
- showError ('Query #1 succeded, but returned no data', __FUNCTION__);
- return NULL;
- }
-
- // load metadata
- $clist = array
- (
- 'id',
- 'name',
- 'height',
- 'comment',
- 'row_id',
- 'row_name'
- );
- foreach ($clist as $cname)
- $rack[$cname] = $row[$cname];
- $result->closeCursor();
- unset ($result);
-
- // start with default rackspace
- for ($i = $rack['height']; $i > 0; $i--)
- for ($locidx = 0; $locidx < 3; $locidx++)
- $rack[$i][$locidx]['state'] = 'F';
-
- // load difference
- $query =
- "select unit_no, atom, state, object_id " .
- "from RackSpace where rack_id = ${rack_id} and " .
- "unit_no between 1 and " . $rack['height'] . " order by unit_no";
- $result = useSelectBlade ($query, __FUNCTION__);
- global $loclist;
- $mounted_objects = array();
- while ($row = $result->fetch (PDO::FETCH_ASSOC))
- {
- $rack[$row['unit_no']][$loclist[$row['atom']]]['state'] = $row['state'];
- $rack[$row['unit_no']][$loclist[$row['atom']]]['object_id'] = $row['object_id'];
- if ($row['state'] == 'T' and $row['object_id']!=NULL)
- $mounted_objects[$row['object_id']] = TRUE;
- }
- $rack['mountedObjects'] = array_keys($mounted_objects);
- $result->closeCursor();
- return $rack;
-}
-