r2222 - generate "access denied" image from CPU, not disk
authorDenis Ovsienko <infrastation@yandex.ru>
Thu, 18 Sep 2008 22:08:51 +0000 (22:08 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Thu, 18 Sep 2008 22:08:51 +0000 (22:08 +0000)
 - employ padding instead of spacer image (discard it)
 - switch back from BCMath and revert related release notes additions

README
inc/functions.php
inc/interface.php
pix/pixel.png [deleted file]
render_image.php

diff --git a/README b/README
index 9f5f5bcbe69b1fbd81164b725ca6983d97917ba2..b03d2798201c5128d49f0e4c4c67b9fe289493cd 100644 (file)
--- a/README
+++ b/README
@@ -143,6 +143,3 @@ This release fixes a missing UNIQUE KEY in a table. The upgrade script may
 find it necessary first to transform some records. Because of this it is
 normal to see several "update TagStorage ... Duplicate entry" failed queries
 during the upgrade.
-
-In addition, RackTables requires two more PHP extensions, which are often already
-present on most systems. These are BC Math and zlib.
index 9c1780bcc3926eeb56686c9bc55dc03e165deebb..9e92808fb857fe12fdab5048d7bc61c3a9a0e572 100644 (file)
@@ -1417,7 +1417,16 @@ function taginfoCmp ($tagA, $tagB)
 // distinct base IP addresses.
 function IPv4NetworkCmp ($netA, $netB)
 {
-       return bccomp ("${netA['db_first']}", "${netB['db_first']}");
+//     return bccomp ("${netA['db_first']}", "${netB['db_first']}");
+       // There's a problem just substracting one u32 integer from another,
+       // because the result may happen big enough to become a negative i32
+       // integer itself (PHP tries to cast everything it sees to signed int)
+       if ($netA['db_first'] > $netB['db_first'])
+               return 1;
+       elseif ($netA['db_first'] < $netB['db_first'])
+               return -1;
+       else
+               return 0;
 }
 
 // Modify the given tag tree so, that each level's items are sorted alphabetically.
index 7e5f74153b17a237cab32cdd2df50f107094d114..e3f2e96def69a00cb3fac670f10a7e6fe22c5cee 100644 (file)
@@ -82,9 +82,6 @@ $image['unblockuser'] = $image['notinservice'];
 $image['find']['path'] = 'pix/tango-system-search.png';
 $image['find']['width'] = 16;
 $image['find']['height'] = 16;
-$image['spacer']['path'] = 'pix/pixel.png';
-$image['spacer']['width'] = 16;
-$image['spacer']['height'] = 16;
 $image['next']['path'] = 'pix/tango-go-next.png';
 $image['next']['width'] = 32;
 $image['next']['height'] = 32;
@@ -4697,11 +4694,11 @@ function renderAutoPortsForm ($object_id = 0)
 
 function renderTagRowForViewer ($taginfo, $level = 0)
 {
+       if (!count ($taginfo['kids']))
+               $level++; // Shift instead of placing a spacer. This won't impact any nested nodes.
        echo "<tr><td align=left style='padding-left: " . ($level * 16) . "px;'>";
        if (count ($taginfo['kids']))
                printImageHREF ('node-expanded-static');
-       else
-               printImageHREF ('spacer');
        echo '<span title="id = ' . $taginfo['id'] . '">';
        echo $taginfo['tag'] . '</span>';
        echo "</td></tr>\n";
@@ -4713,9 +4710,7 @@ function renderTagRowForViewer ($taginfo, $level = 0)
 function renderTagRowForCloud ($taginfo, $realm, $level = 0)
 {
        global $root;
-       echo '<tr><td align=left>';
-       for ($i = 0; $i < $level; $i++)
-               printImageHREF ('spacer');
+       echo "<tr><td align=left style='padding-left: " . ($level * 16) . "px;'>";
        echo "<a href='${root}?page=objgroup&group_id=0&tagfilter[]=${taginfo['id']}'>";
        echo $taginfo['tag'] . '</a>';
        if (isset ($taginfo['refcnt'][$realm]))
@@ -4728,11 +4723,11 @@ function renderTagRowForCloud ($taginfo, $realm, $level = 0)
 function renderTagRowForEditor ($taginfo, $level = 0)
 {
        global $root, $pageno, $tabno, $taglist;
+       if (!count ($taginfo['kids']))
+               $level++; // Idem
        echo "<tr><td align=left style='padding-left: " . ($level * 16) . "px;'>";
        if (count ($taginfo['kids']))
                printImageHREF ('node-expanded-static');
-       else
-               printImageHREF ('spacer');
        $nrefs = 0;
        foreach ($taginfo['refcnt'] as $part)
                $nrefs += $part;
diff --git a/pix/pixel.png b/pix/pixel.png
deleted file mode 100644 (file)
index 20cf7fa..0000000
Binary files a/pix/pixel.png and /dev/null differ
index c47deefccd4e389cfce4e2e1013d23d8cda33259..31d7ac3939f8aa2ba61e2d4d984811ba6f0929a4 100644 (file)
@@ -33,14 +33,6 @@ function renderError ()
        imagedestroy ($img);
 }
 
-function renderAccessDeniedImage ()
-{
-       $img = imagecreatefrompng ('pix/pixel.png');
-       header("Content-type: image/png");
-       imagepng ($img);
-       imagedestroy ($img);
-}
-
 // Having a local caching array speeds things up. A little.
 function colorFromHex ($image, $hex)
 {
@@ -149,4 +141,13 @@ function renderProgressBarImage ($done)
        imagedestroy ($img);
 }
 
+function renderAccessDeniedImage ()
+{
+       $img = @imagecreatetruecolor (1, 1);
+       imagefilledrectangle ($img, 0, 0, 1, 1, colorFromHex ($img, '000000'));
+       header("Content-type: image/png");
+       imagepng ($img);
+       imagedestroy ($img);
+}
+
 ?>