'ip' => 'INET_NTOA(IPv4Network.ip)',
'mask' => 'mask',
'name' => 'name',
+ 'comment' => 'comment',
),
'keycolumn' => 'id',
'ordcolumns' => array ('ip', 'mask'),
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,
$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');
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";
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";
function niftyString ($string, $maxlen = 30)
{
$cutind = '…'; // length is 1
- if (!strlen ($string))
+ if (!mb_strlen ($string))
return ' ';
- if (mb_strlen ($string) > $maxlen)
- return "<span title='" . htmlspecialchars ($string, ENT_QUOTES, 'UTF-8') . "'>" .
- str_replace (' ', ' ', 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 (' ', ' ', 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.
{
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');
// 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