r5060 bugfix: containers weren't displayed properly on the list objects page (#547)
authorAaron Dummer <aaron@dummer.info>
Fri, 20 Apr 2012 04:26:56 +0000 (04:26 +0000)
committerAaron Dummer <aaron@dummer.info>
Fri, 20 Apr 2012 04:26:56 +0000 (04:26 +0000)
ChangeLog
wwwroot/inc/database.php
wwwroot/inc/interface.php

index 71dd349..13600e3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,6 +23,7 @@
 0.19.13
        update: IE spoils JPEG uploads, work around
        bugfix: IPV4_AUTO_RELEASE config var was not working since 0.19.11
+       bugfix: containers weren't displayed properly on the list objects page (#547)
 0.19.12 2012-04-12
        bugfix: Could not delete objects' log entries
        new feature: initial D-Link and Linux gateway support by Ilya Evseev
index 8844162..9bbf2c9 100644 (file)
@@ -23,7 +23,8 @@ $SQLSchema = array
                        'asset_no' => 'asset_no',
                        'objtype_id' => 'objtype_id',
                        'rack_id' => '(SELECT rack_id FROM RackSpace WHERE object_id = RackObject.id ORDER BY rack_id ASC LIMIT 1)',
-                       'rack_id_2' => "(SELECT parent_entity_id AS rack_id FROM EntityLink WHERE child_entity_type='object' AND child_entity_id = RackObject.id AND parent_entity_type = 'rack' ORDER BY rack_id ASC LIMIT 1)",
+                       'container_id' => "(SELECT parent_entity_id FROM EntityLink WHERE child_entity_type='object' AND child_entity_id = RackObject.id AND parent_entity_type = 'object' ORDER BY parent_entity_id ASC LIMIT 1)",
+                       'container_name' => '(SELECT name FROM RackObject WHERE id = container_id)',
                        'has_problems' => 'has_problems',
                        'comment' => 'comment',
                        'nports' => '(SELECT COUNT(*) FROM Port WHERE object_id = RackObject.id)',
@@ -402,13 +403,6 @@ function listCells ($realm, $parent_id = 0)
                $ret[$entity_id]['etags'] = array();
                foreach (array_keys ($SQLinfo['columns']) as $alias)
                        $ret[$entity_id][$alias] = $row[$alias];
-               // use the temporary rack_id_2 key and remove this key from the result array
-               if ($realm == 'object')
-               {
-                       if (! isset ($ret[$entity_id]['rack_id']))
-                               $ret[$entity_id]['rack_id'] = $ret[$entity_id]['rack_id_2'];
-                       unset ($ret[$entity_id]['rack_id_2']);
-               }
        }
        unset($result);
 
@@ -515,13 +509,6 @@ function spotEntity ($realm, $id, $ignore_cache = FALSE)
                        $ret = array ('realm' => $realm);
                        foreach (array_keys ($SQLinfo['columns']) as $alias)
                                $ret[$alias] = $row[$alias];
-                       // use the temporary rack_id_2 key and remove this key from the result array
-                       if ($realm == 'object')
-                       {
-                               if (! isset ($ret['rack_id']))
-                                       $ret['rack_id'] = $ret['rack_id_2'];
-                               unset ($ret['rack_id_2']);
-                       }
                        $ret['etags'] = array();
                        if ($row['tag_id'] != NULL && isset ($taglist[$row['tag_id']]))
                                $ret['etags'][] = array
@@ -1292,11 +1279,11 @@ function getResidentRacksData ($object_id = 0, $fetch_rackdata = TRUE)
        // and racks that it is 'Zero-U' mounted in
        $result = usePreparedSelectBlade
        (
-               'SELECT DISTINCT RS.rack_id FROM RackSpace RS LEFT JOIN EntityLink EL ON RS.object_id = EL.parent_entity_id AND EL.parent_entity_type = ? ' .
+               'SELECT DISTINCT RS.rack_id FROM RackSpace RS LEFT JOIN EntityLink EL ON RS.object_id = EL.parent_entity_id ' .
                'WHERE RS.object_id = ? or EL.child_entity_id = ? ' .
                'UNION ' .
                "SELECT parent_entity_id AS rack_id FROM EntityLink where parent_entity_type = 'rack' AND child_entity_type = 'object' AND child_entity_id = ? " .
-               'ORDER BY rack_id', array ('rack', $object_id, $object_id, $object_id)
+               'ORDER BY rack_id', array ($object_id, $object_id, $object_id)
        );
        $rows = $result->fetchAll (PDO::FETCH_NUM);
        unset ($result);
index 097084d..4a01c81 100644 (file)
@@ -1817,7 +1817,7 @@ function renderDepot ()
                {
                        startPortlet ('Objects (' . count ($objects) . ')');
                        echo '<br><br><table border=0 cellpadding=5 cellspacing=0 align=center class=cooltable>';
-                       echo '<tr><th>Common name</th><th>Visible label</th><th>Asset tag</th><th>Row/Rack</th></tr>';
+                       echo '<tr><th>Common name</th><th>Visible label</th><th>Asset tag</th><th>Row/Rack or Container</th></tr>';
                        $order = 'odd';
                        # gather IDs of all objects and fetch rackspace info in one pass
                        $idlist = array();
@@ -1832,7 +1832,9 @@ function renderDepot ()
                                echo "</td><td>${obj['label']}</td>";
                                echo "<td>${obj['asset_no']}</td>";
                                $places = array();
-                               if (! array_key_exists ($obj['id'], $mountinfo))
+                               if ($obj['container_id'])
+                                       $places[] = mkA ($obj['container_name'], 'object', $obj['container_id']);
+                               elseif (! array_key_exists ($obj['id'], $mountinfo))
                                        $places[] = 'Unmounted';
                                else
                                        foreach ($mountinfo[$obj['id']] as $mi)