r2959 - maintenance->trunk sync of changeset:2912
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 20 Jul 2009 14:30:34 +0000 (14:30 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 20 Jul 2009 14:30:34 +0000 (14:30 +0000)
ChangeLog
inc/database.php
inc/interface.php
inc/ophandlers.php
install/init-structure.sql
upgrade.php

index 2ccb6e480515a0e487f99cb7a0622fcf10a527f1..53216a75f550bb05687f0fb11776eac22d9bf0b1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@
        update: show appropriate message, if a record cannot be found
        update: add Cisco dictionary entry for WS-CBS3030-DEL. closes ticket 225 (by jthurman)
        update: add OS, router, fibre switch dictionary entries for ticket 238 (by Aaron)
+       update: update: added comment field for IPv4 networks
        update: allow variations of FC WWN as an L2 address (by killsystem)
        update: port L2 address can be reused on the same object
        update: same port name can be repeated for an object with different types
index b113112661821e5e36fa3c0972d8ee34fae1587b..984cc61b96a32fafa5560cfee971b02f03d1709a 100644 (file)
@@ -52,6 +52,7 @@ $SQLSchema = array
                        'ip' => 'INET_NTOA(IPv4Network.ip)',
                        'mask' => 'mask',
                        'name' => 'name',
+                       'comment' => 'comment',
                ),
                'keycolumn' => 'id',
                'ordcolumns' => array ('ip', 'mask'),
@@ -1372,13 +1373,12 @@ function getIPv4AddressNetworkId ($dottedquad, $masklen = 32)
        return NULL;
 }
 
-function updateRange ($id=0, $name='')
+function updateIPv4Network_real ($id = 0, $name = '', $comment = '')
 {
        global $dbxlink;
-       $query =
-               "update IPv4Network set name='$name' where id='$id'";
-       $result = $dbxlink->exec ($query);
-       return '';
+       $query = $dbxlink->prepare ('UPDATE IPv4Network SET name = ?, comment = ? WHERE id = ?');
+       // TODO: $dbxlink->setAttribute (PDO::ATTR_ORACLE_NULLS, PDO::NULL_EMPTY_STRING);
+       return $query->execute (array ($name, $comment, $id)) ? '' : 'SQL query failed in ' . __FUNCTION__;
 }
 
 // This function is actually used not only to update, but also to create records,
index 01b0e04e0278b4a52d4551a0b32976a86dc345f8..4c812ef098faa47f5dacc6bf109c74ee3876153b 100644 (file)
@@ -2146,7 +2146,8 @@ function renderIPv4Network ($id)
        $range = spotEntity ('ipv4net', $id);
        loadIPv4AddrList ($range);
        echo "<table border=0 class=objectview cellspacing=0 cellpadding=0>";
-       echo "<tr><td colspan=2 align=center><h1>${range['ip']}/${range['mask']}</h1><h2>${range['name']}</h2></td></tr>\n";
+       echo "<tr><td colspan=2 align=center><h1>${range['ip']}/${range['mask']}</h1><h2>";
+       echo htmlspecialchars ($range['name'], ENT_QUOTES, 'UTF-8') . "</h2></td></tr>\n";
 
        echo "<tr><td class=pcleft width='50%'>";
        startPortlet ('summary');
@@ -2212,6 +2213,13 @@ function renderIPv4Network ($id)
        echo "</table><br>\n";
        finishPortlet();
 
+       if (strlen ($range['comment']))
+       {
+               startPortlet ('Comment');
+               echo '<div class=commentblock>' . string_insert_hrefs (htmlspecialchars ($range['comment'], ENT_QUOTES, 'UTF-8')) . '</div>';
+               finishPortlet ();
+       }
+
        renderFilesPortlet ('ipv4net', $id);
        echo "</td>\n";
 
@@ -2317,7 +2325,12 @@ function renderIPv4NetworkProperties ($id)
        echo "<center><h1>${netdata['ip']}/${netdata['mask']}</h1></center>\n";
        echo "<table border=0 cellpadding=10 cellpadding=1 align='center'>\n";
        printOpFormIntro ('editRange');
-       echo "<tr><td class='tdright'>Name:</td><td class='tdleft'><input type=text name=name size=20 value='${netdata['name']}'></tr>";
+       echo '<tr><td class=tdright><label for=nameinput>Name:</label></td>';
+       echo "<td class=tdleft><input type=text name=name id=nameinput size=80 maxlength=255 value='";
+       echo htmlspecialchars ($netdata['name'], ENT_QUOTES, 'UTF-8') . "'></tr>";
+       echo '<tr><td class=tdright><label for=commentinput>Comment:</label></td>';
+       echo "<td class=tdleft><textarea name=comment id=commentinput cols=80 rows=25>\n";
+       echo htmlspecialchars ($netdata['comment'], ENT_QUOTES, 'UTF-8') . "</textarea></tr>";
        echo "<tr><td colspan=2 class=tdcenter>";
        printImageHREF ('SAVE', 'Save changes', TRUE);
        echo "</td></form></tr></table>\n";
@@ -5351,12 +5364,14 @@ function printOpFormIntro ($opname, $extra = array(), $upload = FALSE)
 function niftyString ($string, $maxlen = 30)
 {
        $cutind = '&hellip;'; // length is 1
-       if (!strlen ($string))
+       if (!mb_strlen ($string))
                return '&nbsp;';
-       if (mb_strlen ($string) > $maxlen)
-               return "<span title='" . htmlspecialchars ($string, ENT_QUOTES, 'UTF-8') . "'>" .
-                       str_replace (' ', '&nbsp;', str_replace ("\t", ' ', mb_substr ($string, 0, $maxlen - 1))) . $cutind . '</span>';
-       return $string;
+       // a tab counts for a space
+       $string = mb_ereg_replace ("\t", ' ', $string);
+       if (mb_strlen ($string) <= $maxlen)
+               return htmlspecialchars ($string, ENT_QUOTES, 'UTF-8');
+       return "<span title='" . htmlspecialchars ($string, ENT_QUOTES, 'UTF-8') . "'>" .
+               str_replace (' ', '&nbsp;', htmlspecialchars (mb_substr ($string, 0, $maxlen - 1), ENT_QUOTES, 'UTF-8')) . $cutind . '</span>';
 }
 
 // Iterate over what findRouters() returned and output some text suitable for a TD element.
index 5eb91116ad4392889ff7e48a50084818e872a196..c8d5487bf511d8588af66b50ca733045f43bc9c8 100644 (file)
@@ -430,9 +430,9 @@ function updIPv4Prefix ()
 {
        assertUIntArg ('id', __FUNCTION__);
        assertStringArg ('name', __FUNCTION__, TRUE);
-
-       $error = updateRange ($_REQUEST['id'], $_REQUEST['name']);
-       if ($error != '')
+       assertStringArg ('comment', __FUNCTION__, TRUE);
+       global $sic;
+       if (strlen ($error = updateIPv4Network_real ($sic['id'], $sic['name'], $sic['comment'])))
                return buildRedirectURL (__FUNCTION__, 'ERR', array ($error));
        else
                return buildRedirectURL (__FUNCTION__, 'OK');
index f8c54b33d4776192cd66b7a52aaa94e208448fbd..849dd615ecf8b3bad3d7ba350e2544374f357b9b 100644 (file)
@@ -120,6 +120,7 @@ CREATE TABLE `IPv4Network` (
   `ip` int(10) unsigned NOT NULL,
   `mask` int(10) unsigned NOT NULL,
   `name` char(255) default NULL,
+  `comment` text,
   PRIMARY KEY  (`id`),
   UNIQUE KEY `base-len` (`ip`,`mask`)
 ) ENGINE=MyISAM;
index 33e3f38989f37803723bcb0541f64624499cada4..8d05dc7f1aaf8574d54dbb6e1a80b410046855b4 100644 (file)
@@ -238,6 +238,7 @@ CREATE TABLE `LDAPCache` (
                        // wipe irrelevant records (ticket:250)
                        $query[] = "DELETE FROM TagStorage WHERE entity_realm = 'file' AND entity_id NOT IN (SELECT id FROM File)";
                        $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, description) VALUES ('IPV4_ENABLE_KNIGHT','yes','string','no','no','Enable IPv4 knight feature')";
+                       $query[] = "ALTER TABLE IPv4Network ADD COLUMN comment text AFTER name";
                        $query[] = "ALTER TABLE Port ADD INDEX comment (reservation_comment)";
                        $query[] = "ALTER TABLE Port DROP KEY l2address"; // UNIQUE
                        $query[] = "ALTER TABLE Port ADD KEY (l2address)"; // not UNIQUE