r2840 - renderIPv4ForObject(): use information provided by spotEntity()/amplifyCell()
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 11 Jun 2009 13:02:07 +0000 (13:02 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 11 Jun 2009 13:02:07 +0000 (13:02 +0000)
 - renderNATv4ForObject(): idem
 - renderRackObject(): idem
 - renderFilesPortlet(): don't validate arguments, getFilesOfEntity() should do this
 - NotUniqueException: justify class code
 - InvalidArgException: new class
 - getFilesOfEntity(): throw exception

inc/database.php
inc/exceptions.php
inc/interface.php

index 024441ccc345004491d72dfb8fe3dd304552eeea..337c11fddae8a9f6d9c1d2d042680db4bcdfd303 100644 (file)
@@ -3357,11 +3357,8 @@ function getAllUnlinkedFiles ($entity_type = NULL, $entity_id = 0)
 // it conveniently.
 function getFilesOfEntity ($entity_type = NULL, $entity_id = 0)
 {
-       if ($entity_type == NULL || $entity_id == 0)
-       {
-               showError ('Invalid parameters', __FUNCTION__);
-               return NULL;
-       }
+       if ($entity_type == NULL || $entity_id <= 0)
+               throw new InvalidArgException();
        global $dbxlink;
        $sql =
                'SELECT FileLink.file_id, FileLink.id AS link_id, name, type, size, ctime, mtime, atime, comment ' .
index 8cde788d5822a684c6599dd4cc7b0bee43dad8e1..6dec1422348854c1b0706c6dbd768c4846305c83 100644 (file)
@@ -21,9 +21,11 @@ class EntityNotFoundException extends Exception {
 
 class NotUniqueException extends Exception
 {
-       function __construct ($subject = NULL)
+       private $subject;
+       function __construct ($what = NULL)
        {
-               parent::__construct ('Cannot add duplicate record' . ($subject === NULL ? '' : " (${subject} must be unique)"));
+               $this->subject = $what;
+               parent::__construct ('Cannot add duplicate record' . ($what === NULL ? '' : " (${what} must be unique)"));
        }
        function getSubject()
        {
@@ -31,4 +33,18 @@ class NotUniqueException extends Exception
        }
 }
 
+class InvalidArgException extends Exception
+{
+       private $location;
+       function __construct ($where = '[N/A]')
+       {
+               $this->location = $where;
+               parent::__construct ("One or more arguments to function ${where} are invalid");
+       }
+       function getLocation()
+       {
+               return $this->location;
+       }
+}
+
 ?>
index 47c88e9d7d410fd89c243ea3fafaa4f26cc679e2..69a1c67d682cca496677c005362269b70207a467 100644 (file)
@@ -851,7 +851,7 @@ function renderRackObject ($object_id)
        global $nextorder, $aac;
        $info = spotEntity ('object', $object_id);
        // FIXME: employ amplifyCell() instead of calling loader functions directly
-       #amplifyCell ($info);
+       amplifyCell ($info);
        if ($info == NULL)
        {
                showError ('Error loading data', __FUNCTION__);
@@ -867,7 +867,7 @@ function renderRackObject ($object_id)
        if (strlen ($info['name']))
                echo "<tr><th width='50%' class=tdright>Common name:</th><td class=tdleft>${info['name']}</td></tr>\n";
        // FIXME: don't call spotEntity() each time, do it once in the beginning.
-       elseif (considerConfiguredConstraint (spotEntity ('object', $object_id), 'NAMEWARN_LISTSRC'))
+       elseif (considerConfiguredConstraint ($info, 'NAMEWARN_LISTSRC'))
                echo "<tr><td colspan=2 class=msg_error>Common name is missing.</td></tr>\n";
        echo "<tr><th width='50%' class=tdright>Object type:</th><td class=tdleft><a href='";
        echo makeHref (array (
@@ -879,7 +879,7 @@ function renderRackObject ($object_id)
        if (strlen ($info['asset_no']))
                echo "<tr><th width='50%' class=tdright>Asset tag:</th><td class=tdleft>${info['asset_no']}</td></tr>\n";
        // FIXME: ditto
-       elseif (considerConfiguredConstraint (spotEntity ('object', $object_id), 'ASSETWARN_LISTSRC'))
+       elseif (considerConfiguredConstraint (info, 'ASSETWARN_LISTSRC'))
                echo "<tr><td colspan=2 class=msg_error>Asset tag is missing.</td></tr>\n";
        if (strlen ($info['label']))
                echo "<tr><th width='50%' class=tdright>Visible label:</th><td class=tdleft>${info['label']}</td></tr>\n";
@@ -916,7 +916,7 @@ function renderRackObject ($object_id)
 
        renderFilesPortlet ('object', $object_id);
 
-       $ports = getObjectPortsAndLinks ($object_id);
+       $ports = $info['ports'];
        if (count ($ports))
        {
                startPortlet ('ports and links');
@@ -958,7 +958,7 @@ function renderRackObject ($object_id)
                finishPortlet();
        }
 
-       $alloclist = getObjectIPv4Allocations ($object_id);
+       $alloclist = $info['ipv4'];
        if (count ($alloclist))
        {
                startPortlet ('IPv4 addresses');
@@ -1039,7 +1039,7 @@ function renderRackObject ($object_id)
                finishPortlet();
        }
 
-       $forwards = getNATv4ForObject ($object_id);
+       $forwards = $info['nat4'];
        if (count($forwards['in']) or count($forwards['out']))
        {
                startPortlet('NATv4');
@@ -1093,7 +1093,7 @@ function renderRackObject ($object_id)
                finishPortlet();
        }
 
-       $pools = getRSPoolsForObject ($object_id);
+       $pools = $info['ipv4rspools'];
        if (count ($pools))
        {
                $order = 'odd';
@@ -1277,9 +1277,10 @@ function renderIPv4ForObject ($object_id)
                printImageHREF ('add', 'allocate', TRUE, 103);
                echo "</td></tr></form>";
        }
+       $focus = spotEntity ('object', $object_id);
+       amplifyCell ($focus);
        global $aat;
        startPortlet ('Allocations');
-       $alloclist = getObjectIPv4Allocations ($object_id);
        echo "<table cellspacing=0 cellpadding='5' align='center' class='widetable'>\n";
        echo '<tr><th>&nbsp;</th><th>OS interface</th><th>IP address</th>';
        if (getConfigVar ('EXT_IPV4_VIEW') == 'yes')
@@ -1288,7 +1289,7 @@ function renderIPv4ForObject ($object_id)
 
        if (getConfigVar ('ADDNEW_AT_TOP') == 'yes')
                printNewItemTR();
-       foreach ($alloclist as $dottedquad => $alloc)
+       foreach ($focus['ipv4'] as $dottedquad => $alloc)
        {
                $class = $alloc['addrinfo']['class'];
                $netid = getIPv4AddressNetworkId ($dottedquad);
@@ -2693,23 +2694,23 @@ function renderNATv4ForObject ($object_id)
                echo "</td></tr></form>";
        }
        
-       $forwards = getNATv4ForObject ($object_id);
-       $alloclist = getObjectIPv4Allocations ($object_id);
+       $focus = spotEntity ('object', $object_id);
+       amplifyCell ($focus);
        echo "<center><h2>locally performed NAT</h2></center>";
 
        echo "<table class='widetable' cellpadding=5 cellspacing=0 border=0 align='center'>\n";
        echo "<tr><th></th><th>Match endpoint</th><th>Translate to</th><th>Target object</th><th>Comment</th><th>&nbsp;</th></tr>\n";
 
        if (getConfigVar ('ADDNEW_AT_TOP') == 'yes')
-               printNewItemTR ($alloclist);
-       foreach ($forwards['out'] as $pf)
+               printNewItemTR ($focus['ipv4']);
+       foreach ($focus['nat4']['out'] as $pf)
        {
                $class = 'trerror';
                $osif = '';
-               if (isset ($alloclist [$pf['localip']]))
+               if (isset ($focus['ipv4'][$pf['localip']]))
                {
-                       $class = $alloclist [$pf['localip']]['addrinfo']['class'];
-                       $osif = $alloclist [$pf['localip']]['osif'] . ': ';
+                       $class = $focus['ipv4'][$pf['localip']]['addrinfo']['class'];
+                       $osif = $focus['ipv4'][$pf['localip']]['osif'] . ': ';
                }
 
                echo "<tr class='$class'>";
@@ -2757,15 +2758,17 @@ function renderNATv4ForObject ($object_id)
                echo "</td></form></tr>";
        }
        if (getConfigVar ('ADDNEW_AT_TOP') != 'yes')
-               printNewItemTR ($alloclist);
+               printNewItemTR ($focus['ipv4']);
 
        echo "</table><br><br>";
+       if (!count ($focus['nat4']))
+               return;
 
        echo "<center><h2>arriving NAT connections</h2></center>";
        echo "<table class='widetable' cellpadding=5 cellspacing=0 border=0 align='center'>\n";
        echo "<tr><th></th><th>Source</th><th>Source objects</th><th>Target</th><th>Description</th></tr>\n";
 
-       foreach ($forwards['in'] as $pf)
+       foreach ($focus['nat4']['in'] as $pf)
        {
                echo "<tr><td><a href='".
                        makeHrefProcess(array(
@@ -5388,12 +5391,6 @@ function renderFileManager ()
 
 function renderFilesPortlet ($entity_type = NULL, $entity_id = 0)
 {
-       if ($entity_type == NULL || $entity_id <= 0)
-       {
-               showError ('Invalid entity info', __FUNCTION__);
-               return;
-       }
-
        $files = getFilesOfEntity ($entity_type, $entity_id);
        if (count ($files))
        {