r4724 Chapter: switch to InnoDB, add FKeys
authorDenis Ovsienko <infrastation@yandex.ru>
Mon, 8 Aug 2011 22:08:08 +0000 (22:08 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Mon, 8 Aug 2011 22:08:08 +0000 (22:08 +0000)
UserAccount: idem
UserConfig: add FKeys
Dictionary: idem
getDictStats(): eliminate dependency on hard-coded enumeration
reloadDictionary(): idem
renderChapter(): idem
renderChapterEditor(): idem

ChangeLog
wwwroot/inc/config.php
wwwroot/inc/database.php
wwwroot/inc/dictionary.php
wwwroot/inc/install.php
wwwroot/inc/interface.php
wwwroot/inc/upgrade.php

index bdb0c3c0917df2dab2df931475b49329827ac77b..3d52e4a0b5f56bec2bba12084341f3a346cd9b58 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,8 @@
        update: 802.1q, LLDP and LivePorts features support for Force10 OSv8 switches
        new feature: you can obtain who has made tag assignment, object's ports or IPv4 address changes by hovering cursor on these entities
        new feature: adjustable quick links at the top of the page
+0.19.8
+       update: switch to InnoDB completely
 0.19.7 2011-07-31
        update: add SNMP support for several more switches
        update: improve consistency of stored attribute data (#449)
index 0fbe96853cb210a2185867b22db6911dd8cf126b..ab844d9a2b11776cdc4ee7d822e0af4b34b1c90c 100644 (file)
@@ -15,38 +15,4 @@ committers' copies) can run into issues:
 
 define ('CODE_VERSION', '0.19.7');
 
-$max_dict_key = array
-(
-       '0.17.0' => 988,
-       '0.17.1' => 988,
-       '0.17.2' => 1150,
-       '0.17.3' => 1150,
-       '0.17.4' => 1150,
-       '0.17.5' => 1322,
-       '0.17.6' => 1326,
-       '0.17.7' => 1326,
-       '0.17.8' => 1334,
-       '0.17.9' => 1334,
-       '0.17.10' => 1349,
-       '0.17.11' => 1349,
-       '0.18.0' => 1349,
-       '0.18.1' => 1352,
-       '0.18.2' => 1352,
-       '0.18.3' => 1356,
-       '0.18.4' => 1364,
-       '0.18.5' => 1370,
-       '0.18.6' => 1370,
-       '0.18.7' => 1370,
-       '0.19.0' => 1559,
-       '0.19.1' => 1559,
-       '0.19.2' => 1559,
-       '0.19.3' => 1559,
-       '0.19.4' => 1559,
-       '0.19.5' => 1559,
-       '0.19.6' => 1559,
-       '0.19.7' => 1590,
-       '0.19.8' => 49999,
-       '0.20.0' => 49999,
-);
-
 ?>
index 73379d74f7e92b52bef5409abcf12aa24c9674ce..a75bdd5fd813e9e4f9b485ebbd4c374dab33bf7a 100644 (file)
@@ -2650,7 +2650,6 @@ function commitReduceOPC ($parent_objtype_id, $child_objtype_id)
 
 function getDictStats ()
 {
-       $stock_chapters = array (1, 2, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35);
        $result = usePreparedSelectBlade
        (
                "select Chapter.id as chapter_no, Chapter.name as chapter_name, count(dict_key) as wc from " .
@@ -2661,7 +2660,7 @@ function getDictStats ()
        {
                $tc++;
                $tw += $row['wc'];;
-               if (in_array ($row['chapter_no'], $stock_chapters))
+               if ($row['chapter_no'] < 10000)
                        continue;
                $uc++;
                $uw += $row['wc'];;
index e98b8bf727fa67cc788dad79e6b15612a7317e1c..6860e8e1ce441156cb6b7ce4a4c3f7824e9f1600 100644 (file)
@@ -2,13 +2,9 @@
 
 function reloadDictionary ($release = NULL)
 {
-       global $dictionary, $max_dict_key;
-       if ($release === NULL)
-               $maxkey = max (array_keys ($dictionary));
-       else
-               $maxkey = $max_dict_key[$release];
+       global $dictionary;
        // Not only update existing stuff, but make sure all obsolete records are gone.
-       $ret = array ("DELETE FROM Dictionary WHERE dict_key BETWEEN 1 AND ${maxkey}");
+       $ret = array ("DELETE FROM Dictionary WHERE dict_key BETWEEN 1 AND 49999");
        for ($i = 1; $i <= $maxkey; $i++)
        {
                if (!array_key_exists ($i, $dictionary))
@@ -545,25 +541,25 @@ $dictionary = array
        469 => array ('chapter_id' => 21, 'dict_value' => '[[Avocent SwitchView 1000 4-port | http://www.avocent.com/WorkArea/linkit.aspx?LinkIdentifier=id&ItemID=4016]]'),
        470 => array ('chapter_id' => 21, 'dict_value' => '[[Avocent SwitchView 1000 8-port | http://www.avocent.com/WorkArea/linkit.aspx?LinkIdentifier=id&ItemID=4094]]'),
        471 => array ('chapter_id' => 21, 'dict_value' => '[[Avocent SwitchView 1000 16-port | http://www.avocent.com/WorkArea/linkit.aspx?LinkIdentifier=id&ItemID=3934]]'),
-       472 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-4E1 | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       473 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-4E1/ETS | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       474 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-4E1/M | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       475 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-8E1 | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       476 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-8E1/ETS | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       477 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-8E1/M | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       478 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-16E1 | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       479 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-16E1/ETS | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       480 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-16E1/M | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
-       481 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%E1-XL/S | http://www.cronyx.ru/hardware/e1xl-s.html]]'),
-       482 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%E1-DXC/S | http://www.cronyx.ru/hardware/e1dxc-s.html]]'),
-       483 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX-4-E2 | http://www.cronyx.ru/hardware/fmux4-e2.html]]'),
-       484 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX-16-E3 | http://www.cronyx.ru/hardware/fmux16-e3.html]]'),
-       485 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%FMUX/SAT | http://www.cronyx.ru/hardware/fmux-sat.html]]'),
-       486 => array ('chapter_id' => 22, 'dict_value' => '[[Cronyx%GPASS%E1-XL/S-IP | http://www.cronyx.ru/hardware/e1xl-ip.html]]'),
+       472 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-4E1 | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       473 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-4E1/ETS | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       474 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-4E1/M | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       475 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-8E1 | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       476 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-8E1/ETS | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       477 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-8E1/M | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       478 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-16E1 | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       479 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-16E1/ETS | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       480 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/S-16E1/M | http://www.cronyx.ru/hardware/fmux-ring.html]]'),
+       481 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%E1-XL/S | http://www.cronyx.ru/hardware/e1xl-s.html]]'),
+       482 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%E1-DXC/S | http://www.cronyx.ru/hardware/e1dxc-s.html]]'),
+       483 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX-4-E2 | http://www.cronyx.ru/hardware/fmux4-e2.html]]'),
+       484 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX-16-E3 | http://www.cronyx.ru/hardware/fmux16-e3.html]]'),
+       485 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%FMUX/SAT | http://www.cronyx.ru/hardware/fmux-sat.html]]'),
+       486 => array ('chapter_id' => 9999, 'dict_value' => '[[Cronyx%GPASS%E1-XL/S-IP | http://www.cronyx.ru/hardware/e1xl-ip.html]]'),
        487 => array ('chapter_id' => 17, 'dict_value' => '[[RAD%GPASS%FCD-IPM | http://www.rad.com/Article/0,6583,36426-E1_T1_or_Fractional_E1_T1_Modular_Access_Device_with_Integrated_Router,00.html]]'),
-       488 => array ('chapter_id' => 22, 'dict_value' => '[[RAD%GPASS%FCD-E1M | http://www.rad.com/Article/0,6583,36723-E1_T1_Modular_Access_Multiplexer,00.html]]'),
-       489 => array ('chapter_id' => 22, 'dict_value' => '[[RAD%GPASS%FCD-T1M | http://www.rad.com/Article/0,6583,36723-E1_T1_Modular_Access_Multiplexer,00.html]]'),
-       490 => array ('chapter_id' => 22, 'dict_value' => '[[RAD%GPASS%FCD-155E | http://www.rad.com/Article/0,6583,36276-Ethernet_over_SDH_SONET_ADM,00.html]]'),
+       488 => array ('chapter_id' => 9999, 'dict_value' => '[[RAD%GPASS%FCD-E1M | http://www.rad.com/Article/0,6583,36723-E1_T1_Modular_Access_Multiplexer,00.html]]'),
+       489 => array ('chapter_id' => 9999, 'dict_value' => '[[RAD%GPASS%FCD-T1M | http://www.rad.com/Article/0,6583,36723-E1_T1_Modular_Access_Multiplexer,00.html]]'),
+       490 => array ('chapter_id' => 9999, 'dict_value' => '[[RAD%GPASS%FCD-155E | http://www.rad.com/Article/0,6583,36276-Ethernet_over_SDH_SONET_ADM,00.html]]'),
        491 => array ('chapter_id' => 21, 'dict_value' => '[[Aten CS78 | http://www.aten.com/products/productItem.php?pcid=20070130111936003&psid=20070130133658002&pid=20070319151852001&layerid=subClass2]]'),
        492 => array ('chapter_id' => 21, 'dict_value' => '[[Aten ACS1208A | http://www.aten.com/products/productItem.php?pcid=20070130111936003&psid=20070130133658002&pid=20050224111025006&layerid=subClass2]]'),
        493 => array ('chapter_id' => 21, 'dict_value' => '[[Aten ACS1216A | http://www.aten.com/products/productItem.php?pcid=20070130111936003&psid=20070130133658002&pid=20050224111953008&layerid=subClass2]]'),
@@ -601,12 +597,12 @@ $dictionary = array
        525 => array ('chapter_id' => 23, 'dict_value' => '[[Aten CL1200 | http://www.aten.com/products/productItem.php?pcid=2005010513171002&psid=20060411131050002&pid=20050722165040002&layerid=subClass1]]'),
        526 => array ('chapter_id' => 23, 'dict_value' => '[[Aten ACS1208AL | http://www.aten.com/products/productItem.php?pcid=2005010513171002&psid=20060411131050002&pid=2005022413597003&layerid=subClass1]]'),
        527 => array ('chapter_id' => 23, 'dict_value' => '[[Aten ACS1216AL | http://www.aten.com/products/productItem.php?pcid=2005010513171002&psid=20060411131050002&pid=2005022413597003&layerid=subClass1]]'),
-       528 => array ('chapter_id' => 22, 'dict_value' => '[[Tainet%GPASS%MUXpro 8216 | http://www.tainet.net/Product/muxpro820_8216.htm]]'),
-       529 => array ('chapter_id' => 22, 'dict_value' => '[[Tainet%GPASS%Mercury 3600+ | http://www.tainet.net/Product/mercury.htm]]'),
-       530 => array ('chapter_id' => 22, 'dict_value' => '[[Tainet%GPASS%Mercury 3820 | http://www.tainet.net/Product/mercury.htm]]'),
-       531 => array ('chapter_id' => 22, 'dict_value' => '[[Tainet%GPASS%Mercury 3630 | http://www.tainet.net/Product/mercury.htm]]'),
-       532 => array ('chapter_id' => 22, 'dict_value' => '[[Tainet%GPASS%Mercury 3630E | http://www.tainet.net/Product/mercury.htm]]'),
-       533 => array ('chapter_id' => 22, 'dict_value' => '[[Tainet%GPASS%DSD-08A | http://www.tainet.net/Product/dsd08a.htm]]'),
+       528 => array ('chapter_id' => 9999, 'dict_value' => '[[Tainet%GPASS%MUXpro 8216 | http://www.tainet.net/Product/muxpro820_8216.htm]]'),
+       529 => array ('chapter_id' => 9999, 'dict_value' => '[[Tainet%GPASS%Mercury 3600+ | http://www.tainet.net/Product/mercury.htm]]'),
+       530 => array ('chapter_id' => 9999, 'dict_value' => '[[Tainet%GPASS%Mercury 3820 | http://www.tainet.net/Product/mercury.htm]]'),
+       531 => array ('chapter_id' => 9999, 'dict_value' => '[[Tainet%GPASS%Mercury 3630 | http://www.tainet.net/Product/mercury.htm]]'),
+       532 => array ('chapter_id' => 9999, 'dict_value' => '[[Tainet%GPASS%Mercury 3630E | http://www.tainet.net/Product/mercury.htm]]'),
+       533 => array ('chapter_id' => 9999, 'dict_value' => '[[Tainet%GPASS%DSD-08A | http://www.tainet.net/Product/dsd08a.htm]]'),
        534 => array ('chapter_id' => 11, 'dict_value' => '[[HP ProLiant%GPASS%DL160 | http://h10010.www1.hp.com/wwpc/us/en/en/WF05a/15351-15351-3328412-241644-3328421-3580694.html]]'),
        535 => array ('chapter_id' => 11, 'dict_value' => '[[HP ProLiant%GPASS%DL180 | http://h10010.www1.hp.com/wwpc/us/en/en/WF05a/15351-15351-3328412-241644-3328421-3580698.html]]'),
        536 => array ('chapter_id' => 11, 'dict_value' => '[[HP ProLiant%GPASS%DL185 | http://h10010.www1.hp.com/wwpc/us/en/en/WF05a/15351-15351-3328412-241644-3328421-3579900.html]]'),
@@ -711,49 +707,49 @@ $dictionary = array
        635 => array ('chapter_id' => 12, 'dict_value' => '[[D-Link%GPASS%DES-1026G | http://www.dlink.com/products/?sec=0&pid=76]]'),
        636 => array ('chapter_id' => 21, 'dict_value' => '[[D-Link%GPASS%DKVM-16 | http://www.dlink.com/products/?sec=0&pid=228]]'),
        637 => array ('chapter_id' => 21, 'dict_value' => '[[D-Link%GPASS%DKVM-8E | http://www.dlink.com/products/?sec=0&pid=161]]'),
-       638 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC702 | http://www.raisecom-international.com/p/RC702.htm]]'),
-       639 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC702-GE | http://www.raisecom-international.com/p/RC702GE.htm]]'),
-       640 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%ISCOM4300 | http://www.raisecom-international.com/p/ISCOM4300.htm]]'),
-       641 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953-FE4E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
-       642 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953-FX4E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
-       643 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953-FE8E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
-       644 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953-FX8E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
-       645 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953-8FE16E1 | http://www.raisecom-international.com/p/RC9538FE16E1.htm]]'),
-       646 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953E-3FE16E1 | http://www.raisecom-international.com/p/RC953E-3FE16E1.htm]]'),
-       647 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC953-GESTM1 | http://www.raisecom-international.com/p/RC957.htm]]'),
-       648 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%OPCOM3100-155 | http://www.raisecom-international.com/p/OPCOM3100.htm]]'),
-       649 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%OPCOM3101-155 | http://www.raisecom-international.com/p/OPCOM3101.htm]]'),
-       650 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC831-120 | http://www.raisecom-international.com/p/RC831.htm]]'),
-       651 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC831-120-BL | http://www.raisecom-international.com/p/RC831.htm]]'),
-       652 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC831-240 | http://www.raisecom-international.com/p/RC831.htm]]'),
-       653 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC831-240E | http://www.raisecom-international.com/p/RC831.htm]]'),
-       654 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-480GE-BL | http://www.raisecom-international.com/p/RCMS280X.htm]]'),
-       655 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-120FE | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
-       656 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-120FE-BL | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
-       657 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-240FE | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
-       658 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-240FE-BL | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
-       659 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-240EFE | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
-       660 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-120FE | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
-       661 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-240FE | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
-       662 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-240FE-BL | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
-       663 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-480FE | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
-       664 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-480FE-BL | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
-       665 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-240EFE | http://www.raisecom-international.com/p/RCMS2811-240EFE.htm]]'),
-       666 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2104-120 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
-       667 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2304-120 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
-       668 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2504-120 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
-       669 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2104-240 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
-       670 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2304-240 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
-       671 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RCMS2504-240 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
-       672 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC801-120B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       673 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC801-240B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       674 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC801-480B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       675 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC803-120B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       676 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC803-240B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       677 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC803-480B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       678 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC805-120B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       679 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC805-240B | http://www.raisecom-international.com/p/RC800120.htm]]'),
-       680 => array ('chapter_id' => 22, 'dict_value' => '[[Raisecom%GPASS%RC805-480B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       638 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC702 | http://www.raisecom-international.com/p/RC702.htm]]'),
+       639 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC702-GE | http://www.raisecom-international.com/p/RC702GE.htm]]'),
+       640 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%ISCOM4300 | http://www.raisecom-international.com/p/ISCOM4300.htm]]'),
+       641 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953-FE4E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
+       642 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953-FX4E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
+       643 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953-FE8E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
+       644 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953-FX8E1 | http://www.raisecom-international.com/p/RC953FE4E1.htm]]'),
+       645 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953-8FE16E1 | http://www.raisecom-international.com/p/RC9538FE16E1.htm]]'),
+       646 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953E-3FE16E1 | http://www.raisecom-international.com/p/RC953E-3FE16E1.htm]]'),
+       647 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC953-GESTM1 | http://www.raisecom-international.com/p/RC957.htm]]'),
+       648 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%OPCOM3100-155 | http://www.raisecom-international.com/p/OPCOM3100.htm]]'),
+       649 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%OPCOM3101-155 | http://www.raisecom-international.com/p/OPCOM3101.htm]]'),
+       650 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC831-120 | http://www.raisecom-international.com/p/RC831.htm]]'),
+       651 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC831-120-BL | http://www.raisecom-international.com/p/RC831.htm]]'),
+       652 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC831-240 | http://www.raisecom-international.com/p/RC831.htm]]'),
+       653 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC831-240E | http://www.raisecom-international.com/p/RC831.htm]]'),
+       654 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-480GE-BL | http://www.raisecom-international.com/p/RCMS280X.htm]]'),
+       655 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-120FE | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
+       656 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-120FE-BL | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
+       657 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-240FE | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
+       658 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-240FE-BL | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
+       659 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2801-240EFE | http://www.raisecom-international.com/p/RCMS2801.htm]]'),
+       660 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-120FE | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
+       661 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-240FE | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
+       662 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-240FE-BL | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
+       663 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-480FE | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
+       664 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-480FE-BL | http://www.raisecom-international.com/p/RCMS2811.htm]]'),
+       665 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2811-240EFE | http://www.raisecom-international.com/p/RCMS2811-240EFE.htm]]'),
+       666 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2104-120 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
+       667 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2304-120 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
+       668 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2504-120 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
+       669 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2104-240 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
+       670 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2304-240 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
+       671 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RCMS2504-240 | http://www.raisecom-international.com/p/RCMS2000120.htm]]'),
+       672 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC801-120B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       673 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC801-240B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       674 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC801-480B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       675 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC803-120B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       676 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC803-240B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       677 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC803-480B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       678 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC805-120B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       679 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC805-240B | http://www.raisecom-international.com/p/RC800120.htm]]'),
+       680 => array ('chapter_id' => 9999, 'dict_value' => '[[Raisecom%GPASS%RC805-480B | http://www.raisecom-international.com/p/RC800120.htm]]'),
        681 => array ('chapter_id' => 2, 'dict_value' => 'RS-232 (DB-9)'),
        682 => array ('chapter_id' => 2, 'dict_value' => 'RS-232 (DB-25)'),
        683 => array ('chapter_id' => 12, 'dict_value' => '[[Force10%GPASS%S2410P | http://www.force10networks.com/products/s2410.asp]]'),
index 13875a0549d2903c39626fbba41517840109afdf..21d2984fb4ece33b6fe158cdaa5f472920173248 100644 (file)
@@ -370,6 +370,8 @@ CREATE TABLE `AttributeMap` (
   `chapter_id` int(10) unsigned default NULL,
   UNIQUE KEY `objtype_id` (`objtype_id`,`attr_id`),
   KEY `attr_id` (`attr_id`),
+  KEY `chapter_id` (`chapter_id`),
+  CONSTRAINT `AttributeMap-FK-chapter_id` FOREIGN KEY (`chapter_id`) REFERENCES `Chapter` (`id`),
   CONSTRAINT `AttributeMap-FK-attr_id` FOREIGN KEY (`attr_id`) REFERENCES `Attribute` (`id`)
 ) ENGINE=InnoDB;
 
@@ -419,7 +421,7 @@ CREATE TABLE `Chapter` (
   `name` char(128) NOT NULL,
   PRIMARY KEY  (`id`),
   UNIQUE KEY `name` (`name`)
-) ENGINE=MyISAM AUTO_INCREMENT=10000;
+) ENGINE=InnoDB;
 
 CREATE TABLE `Config` (
   `varname` char(32) NOT NULL,
@@ -437,7 +439,8 @@ CREATE TABLE `Dictionary` (
   `dict_key` int(10) unsigned NOT NULL auto_increment,
   `dict_value` char(255) default NULL,
   PRIMARY KEY  (`dict_key`),
-  UNIQUE KEY `chap_to_val` (`chapter_id`,`dict_value`)
+  UNIQUE KEY `chap_to_val` (`chapter_id`,`dict_value`),
+  CONSTRAINT `Dictionary-FK-chapter_id` FOREIGN KEY (`chapter_id`) REFERENCES `Chapter` (`id`)
 ) ENGINE=InnoDB;
 
 CREATE TABLE `EntityLink` (
@@ -823,13 +826,16 @@ CREATE TABLE `UserAccount` (
   `user_realname` char(64) default NULL,
   PRIMARY KEY  (`user_id`),
   UNIQUE KEY `user_name` (`user_name`)
-) ENGINE=MyISAM AUTO_INCREMENT=10000;
+) ENGINE=InnoDB;
 
 CREATE TABLE `UserConfig` (
   `varname` char(32) NOT NULL,
   `varvalue` text NOT NULL,
   `user` char(64) NOT NULL,
-  UNIQUE KEY `user_varname` (`user`,`varname`)
+  UNIQUE KEY `user_varname` (`user`,`varname`),
+  KEY `varname` (`varname`),
+  CONSTRAINT `UserConfig-FK-varname` FOREIGN KEY (`varname`) REFERENCES `Config` (`varname`) ON DELETE CASCADE,
+  CONSTRAINT `UserConfig-FK-user` FOREIGN KEY (`user`) REFERENCES `UserAccount` (`user_name`) ON DELETE CASCADE
 ) ENGINE=InnoDB;
 
 CREATE TABLE `VLANDescription` (
@@ -1026,7 +1032,7 @@ INSERT INTO `AttributeMap` (`objtype_id`, `attr_id`, `chapter_id`) VALUES
 (445,14,NULL),
 (445,22,NULL),
 (447,1,NULL),
-(447,2,22),
+(447,2,9999),
 (447,3,NULL),
 (447,5,NULL),
 (447,14,NULL),
@@ -1113,7 +1119,6 @@ INSERT INTO `Chapter` (`id`, `sticky`, `name`) VALUES
 (18,'no','disk array models'),
 (19,'no','tape library models'),
 (21,'no','KVM switch models'),
-(22,'no','multiplexer models'),
 (23,'no','console models'),
 (24,'no','network security models'),
 (25,'no','wireless models'),
@@ -1126,7 +1131,9 @@ INSERT INTO `Chapter` (`id`, `sticky`, `name`) VALUES
 (32,'no','virtual switch models'),
 (33,'no','virtual switch OS type'),
 (34,'no','power supply chassis models'),
-(35,'no','power supply models');
+(35,'no','power supply models'),
+-- Default chapters must have ID less than 10000, add them above this line.
+(9999,'no','multiplexer models');
 
 INSERT INTO `PortInnerInterface` VALUES
 (1,'hardwired'),
index 118cb16a6062d7ac779449433ba86d4f2c570bac..6b55d645e278eae3a3d2475450aa9d156e15c679 100644 (file)
@@ -4086,7 +4086,7 @@ function renderDictionary ()
 
 function renderChapter ($tgt_chapter_no)
 {
-       global $nextorder, $max_dict_key;
+       global $nextorder;
        $words = readChapter ($tgt_chapter_no, 'a');
        $wc = count ($words);
        if (!$wc)
@@ -4103,7 +4103,7 @@ function renderChapter ($tgt_chapter_no)
        foreach ($words as $key => $value)
        {
                echo "<tr class=row_${order}><td>";
-               printImageHREF (($key <= $max_dict_key[CODE_VERSION]) ? 'computer' : 'favorite');
+               printImageHREF ($key < 50000 ? 'computer' : 'favorite');
                echo '</td><td>';
                if ($refcnt[$key])
                {
@@ -4140,7 +4140,7 @@ function renderChapter ($tgt_chapter_no)
 
 function renderChapterEditor ($tgt_chapter_no)
 {
-       global $nextorder, $max_dict_key;
+       global $nextorder;
        function printNewItemTR ()
        {
                printOpFormIntro ('add');
@@ -4163,7 +4163,7 @@ function renderChapterEditor ($tgt_chapter_no)
                echo "<tr class=row_${order}><td>";
                $order = $nextorder[$order];
                // Show plain row for stock records, render a form for user's ones.
-               if ($key <= $max_dict_key[CODE_VERSION])
+               if ($key < 50000)
                {
                        printImageHREF ('computer');
                        echo "</td><td>&nbsp;</td><td>${value}</td><td>&nbsp;</td></tr>";
index e52a75e323ea2298e5ba5182c9dd4015bcb1a428..9320d2be90e031bdb793e4e393c8ce9b2c6f6e35 100644 (file)
@@ -1101,7 +1101,22 @@ CREATE TABLE `Attribute_new` (
                        break;
                case '0.19.8':
                        $query = array_merge ($query, reloadDictionary ($batchid));
+                       $query[] = "ALTER TABLE UserAccount ENGINE=InnoDB";
+                       $query[] = "DELETE FROM UserConfig WHERE user NOT IN (SELECT user_name FROM UserAccount)";
+                       $query[] = "ALTER TABLE UserConfig ADD CONSTRAINT `UserConfig-FK-user` FOREIGN KEY (user) REFERENCES UserAccount (user_name) ON DELETE CASCADE";
+                       $query[] = "DELETE FROM UserConfig WHERE varname NOT IN (SELECT varname FROM Config)";
+                       $query[] = "ALTER TABLE UserConfig ADD KEY (varname)";
+                       $query[] = "ALTER TABLE UserConfig ADD CONSTRAINT `UserConfig-FK-varname` FOREIGN KEY (varname) REFERENCES Config (varname) ON DELETE CASCADE";
                        $query[] = "ALTER TABLE Dictionary ENGINE=InnoDB";
+                       $query[] = "ALTER TABLE Chapter ENGINE=InnoDB";
+                       $query[] = "UPDATE Chapter SET id = 9999 WHERE id = 22";
+                       $query[] = "UPDATE AttributeMap SET chapter_id = 9999 WHERE chapter_id = 22";
+                       $query[] = "UPDATE Dictionary SET chapter_id = 9999 WHERE chapter_id = 22";
+                       $query[] = "DELETE FROM Dictionary WHERE chapter_id NOT IN (SELECT id FROM Chapter)";
+                       $query[] = "ALTER TABLE Dictionary ADD CONSTRAINT `Dictionary-FK-chapter_id` FOREIGN KEY (chapter_id) REFERENCES Chapter (id)";
+                       $query[] = "DELETE FROM AttributeMap WHERE chapter_id NOT IN (SELECT id FROM Chapter)";
+                       $query[] = "ALTER TABLE AttributeMap ADD KEY (chapter_id)";
+                       $query[] = "ALTER TABLE AttributeMap ADD CONSTRAINT `AttributeMap-FK-chapter_id` FOREIGN KEY (chapter_id) REFERENCES Chapter (id)";
                        $query[] = "UPDATE Config SET varvalue = '0.19.8' WHERE varname = 'DB_VERSION'";
                        break;
                case '0.20.0':