r4871 list of virtual object types is now maintained as a Config setting (#488)
authorAaron Dummer <aaron@dummer.info>
Fri, 30 Dec 2011 23:59:35 +0000 (23:59 +0000)
committerAaron Dummer <aaron@dummer.info>
Fri, 30 Dec 2011 23:59:35 +0000 (23:59 +0000)
ChangeLog
wwwroot/inc/functions.php
wwwroot/inc/install.php
wwwroot/inc/interface.php
wwwroot/inc/ophandlers.php
wwwroot/inc/triggers.php
wwwroot/inc/upgrade.php

index 883d311..d373a6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,6 +21,7 @@
        bugfix: Cacti integration improvements (#466)
        bugfix: Could not delete objects' log entries
        bugfix: hovering over a mounted object displayed incorrect child data (#498)
+       update: list of virtual object types is now maintained as a Config setting (#488)
        update: ability to delete IP prefixes from within its properties tab
        update: adding and deleting forms of IP prefixes are separated
 0.19.10 2011-10-17
index cd2fb90..ad2f617 100644 (file)
@@ -76,14 +76,6 @@ $location_obj_types = array
        1562
 );
 
-$virtual_obj_types = array
-(
-       1504,
-       1505,
-       1506,
-       1507
-);
-
 $netmaskbylen = array
 (
        32 => '255.255.255.255',
index e545fb7..199902d 100644 (file)
@@ -1446,6 +1446,7 @@ INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdef
 ('CACTI_URL','','string','yes','no','no','Cacti server base URL'),
 ('CACTI_USERNAME','','string','yes','no','no','Cacti user account'),
 ('CACTI_USERPASS','','string','yes','no','no','Cacti user password'),
+('VIRTUAL_OBJ_LISTSRC','{\$typeid_1504} or {\$typeid_1505} or {\$typeid_1506} or {\$typeid_1507}','string','no','no','no','List source: virtual objects'),
 ('DB_VERSION','0.19.10','string','no','yes','no','Database version.');
 
 INSERT INTO `Script` VALUES ('RackCode','allow {\$userid_1}');
index 4ec2c3d..2541741 100644 (file)
@@ -601,7 +601,7 @@ function renderNewRackForm ($row_id)
 
 function renderEditObjectForm()
 {
-       global $pageno, $virtual_obj_types;
+       global $pageno;
        $object_id = getBypassValue();
        $object = spotEntity ('object', $object_id);
        startPortlet ();
@@ -615,7 +615,7 @@ function renderEditObjectForm()
        echo '</td></tr>';
        // baseline info
        echo "<tr><td>&nbsp;</td><th class=tdright>Common name:</th><td class=tdleft><input type=text name=object_name value='${object['name']}'></td></tr>\n";
-       if (in_array($object['objtype_id'], $virtual_obj_types))
+       if (considerConfiguredConstraint ($object, 'VIRTUAL_OBJ_LISTSRC'))
        {
                echo "<input type=hidden name=object_label value=''>\n";
                echo "<input type=hidden name=object_asset_no value=''>\n";
@@ -901,7 +901,7 @@ function renderObjectPortRow ($port, $is_highlighted)
 
 function renderObject ($object_id)
 {
-       global $nextorder, $virtual_obj_types;
+       global $nextorder;
        $info = spotEntity ('object', $object_id);
        amplifyCell ($info);
        // Main layout starts.
@@ -1122,7 +1122,7 @@ function renderObject ($object_id)
 
        // After left column we have (surprise!) right column with rackspace portlet only.
        echo "<td class=pcright>";
-       if (!in_array($info['objtype_id'], $virtual_obj_types))
+       if (!considerConfiguredConstraint ($info, 'VIRTUAL_OBJ_LISTSRC'))
        {
                // rackspace portlet
                startPortlet ('rackspace allocation');
@@ -3162,7 +3162,7 @@ function renderNATv4ForObject ($object_id)
 
 function renderAddMultipleObjectsForm ()
 {
-       global $location_obj_types, $virtual_obj_types;
+       global $location_obj_types;
        $typelist = readChapter (CHAP_OBJTYPE, 'o');
        $typelist[0] = 'select type...';
        $typelist = cookOptgroups ($typelist);
@@ -3170,6 +3170,10 @@ function renderAddMultipleObjectsForm ()
        $tabindex = 100;
 
        // create a list of object types to exclude (virtual and location-related ones)
+       // FIXME: a RackCode expert should sanitize this hack
+       $virt_listsrc = str_replace(array('{$typeid_','}','or'), '', getConfigVar ('VIRTUAL_OBJ_LISTSRC'));
+       $virt_listsrc = preg_replace('/\s+/', ' ', $virt_listsrc);
+       $virtual_obj_types = explode(' ', $virt_listsrc);
        $exclude_typelist = array_merge($location_obj_types, $virtual_obj_types);
 
        $phys_typelist = $typelist;
index 3b9ee7c..fb8ce6e 100644 (file)
@@ -1432,6 +1432,11 @@ function resetUIConfig()
        setConfigVar ('TELNET_OBJS_LISTSRC', 'none');
        setConfigVar ('SYNC_802Q_LISTSRC', '');
        setConfigVar ('QUICK_LINK_PAGES', '');
+       setConfigVar ('CACTI_LISTSRC', 'false');
+       setConfigVar ('CACTI_URL', '');
+       setConfigVar ('CACTI_USERNAME', '');
+       setConfigVar ('CACTI_USERPASS', '');
+       setConfigVar ('VIRTUAL_OBJ_LISTSRC', '{$typeid_1504} or {$typeid_1505} or {$typeid_1506} or {$typeid_1507}');
        return showFuncMessage (__FUNCTION__, 'OK');
 }
 
index 59cb17b..8cccaf2 100644 (file)
@@ -192,12 +192,9 @@ function trigger_file_editText ()
 
 function trigger_rackspace ()
 {
-       global $virtual_obj_types;
-
        // Hide the tab if the object type is virtual
        assertUIntArg ('object_id');
-       $object = spotEntity ('object', $_REQUEST['object_id']);
-       if (in_array($object['objtype_id'], $virtual_obj_types))
+       if (considerConfiguredConstraint (spotEntity ('object', $_REQUEST['object_id']), 'VIRTUAL_OBJ_LISTSRC'))
                return '';
 
        $rackspace = getRackspaceStats();
index 905bab5..f20baa1 100644 (file)
@@ -1181,6 +1181,10 @@ CREATE TABLE `CactiGraph` (
                        $query[] = "INSERT INTO `PortCompat` (`type1`, `type2`) VALUES (1603,1603)";
                        $query[] = "UPDATE Config SET varvalue = '0.19.10' WHERE varname = 'DB_VERSION'";
                        break;
+               case '0.19.11':
+                       $query[] = "INSERT INTO `Config` (varname, varvalue, vartype, emptyok, is_hidden, is_userdefined, description) VALUES ('VIRTUAL_OBJ_LISTSRC','{\$typeid_1504} or {\$typeid_1505} or {\$typeid_1506} or {\$typeid_1507}','string','no','no','no','List source: virtual objects')";
+                       $query[] = "UPDATE Config SET varvalue = '0.19.11' WHERE varname = 'DB_VERSION'";
+                       break;
                case '0.20.0':
                        $query = array_merge ($query, reloadDictionary ($batchid));
                        $query[] = "