r2700 - finally drop chapter number 3 (RackRow)
authorDenis Ovsienko <infrastation@yandex.ru>
Fri, 8 May 2009 13:14:28 +0000 (13:14 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Fri, 8 May 2009 13:14:28 +0000 (13:14 +0000)
 - getChapterList(): also retrieve word count and sticky flag
 - renderDictionary(): switch from getDict() to a cheaper call of getChapterList()
 - renderChaptersEditor(): idem
 - renderEditAttrMapForm(): idem

inc/database.php
inc/interface.php
install/init-dictbase.sql
upgrade.php

index 9efc78a5534c39060ead991b50a14bd8349248e2..38e0d7b62d82837e115cd8ec32c63f7d7df6365f 100644 (file)
@@ -1637,6 +1637,8 @@ function addPortCompat ($type1 = 0, $type2 = 0)
 // This function returns the dictionary as an array of trees, each tree
 // representing a single chapter. Each element has 'id', 'name', 'sticky'
 // and 'word' keys with the latter holding all the words within the chapter.
+// FIXME: there's a lot of excess legacy code in this function, it's reasonable
+// to merge it with readChapter().
 function getDict ($parse_links = FALSE)
 {
        $query1 =
@@ -3670,9 +3672,9 @@ function commitDeleteFile ($file_id)
 function getChapterList ()
 {
        $ret = array();
-       $result = useSelectBlade ('select id as chapter_no, name as chapter_name from Chapter order by Chapter.name');
+       $result = useSelectBlade ('SELECT id, sticky, name, count(chapter_id) as wordc FROM Chapter LEFT JOIN Dictionary ON Chapter.id = chapter_id GROUP BY id ORDER BY name');
        while ($row = $result->fetch (PDO::FETCH_ASSOC))
-               $ret[$row['chapter_no']] = $row['chapter_name'];
+               $ret[$row['id']] = $row;
        return $ret;
 }
 
index 9fd17f96c093dd9ba09a11e8ec42e310fe6ce18b..5388bc52ae0743e193ed8b49ac1ce3d9482fe4df 100644 (file)
@@ -3391,11 +3391,10 @@ function renderRackPage ($rack_id)
 function renderDictionary ()
 {
        global $nextorder;
-       $dict = getDict (TRUE);
        echo '<ul>';
-       foreach ($dict as $chapter_no => $chapter)
+       foreach (getChapterList() as $chapter_no => $chapter)
        {
-               $wc = count ($chapter['word']);
+               $wc = $chapter['wordc'];
                echo "<li><a href='".makeHref(array('page'=>'chapter', 'chapter_no'=>$chapter_no))."'>${chapter['name']}</a>";
                echo " (${wc} records)</li>";
        }
@@ -3509,7 +3508,7 @@ function renderChaptersEditor ()
                echo '</td></tr></form>';
        }
        showMessageOrError();
-       $dict = getDict();
+       $dict = getChapterList();
        foreach (array_keys ($dict) as $chapter_no)
                $dict[$chapter_no]['mapped'] = FALSE;
        foreach (getAttrMap() as $attrinfo)
@@ -3520,11 +3519,11 @@ function renderChaptersEditor ()
        echo '<tr><th>&nbsp;</th><th>Chapter name</th><th>Words</th><th>&nbsp;</th></tr>';
        if (getConfigVar ('ADDNEW_AT_TOP') == 'yes')
                printNewItemTR();
-       foreach ($dict as $chapter)
+       foreach ($dict as $chapter_id => $chapter)
        {
-               $wordcount = count ($chapter['word']);
-               $sticky = $chapter['sticky'];
-               printOpFormIntro ('upd', array ('chapter_no' => $chapter['no']));
+               $wordcount = $chapter['wordc'];
+               $sticky = $chapter['sticky'] == 'yes';
+               printOpFormIntro ('upd', array ('chapter_no' => $chapter_id));
                echo '<tr>';
                echo '<td>';
                if ($sticky)
@@ -3535,7 +3534,7 @@ function renderChaptersEditor ()
                        printImageHREF ('nodestroy', 'used in attribute map');
                else
                {
-                       echo "<a href='".makeHrefProcess(array('op'=>'del', 'chapter_no'=>$chapter['no']))."'>";
+                       echo "<a href='".makeHrefProcess(array('op'=>'del', 'chapter_no'=>$chapter_id))."'>";
                        printImageHREF ('destroy', 'Remove chapter');
                        echo "</a>";
                }
@@ -3642,11 +3641,10 @@ function renderEditAttrMapForm ()
                echo '<td>';
                printSelect (getObjectTypeList(), 'objtype_id', NULL, 101);
                echo '</td>';
-               $dict = getDict();
                echo '<td><select name=chapter_no tabindex=102>';
-               foreach ($dict as $chapter)
+               foreach (getChapterList() as $chapter)
                        if (!$chapter['sticky'])
-                               echo "<option value='${chapter['no']}'>${chapter['name']}</option>";
+                               echo "<option value='${chapter['id']}'>${chapter['name']}</option>";
                echo '</select></td><td>';
                printImageHREF ('add', '', TRUE, 103);
                echo '</td></tr>';
@@ -6045,7 +6043,7 @@ function dynamic_title_decoder ($path_position)
                assertUIntArg ('chapter_no', __FUNCTION__);
                $chapters = getChapterList();
                $chapter_no = $_REQUEST['chapter_no'];
-               $chapter_name = isset ($chapters[$chapter_no]) ? $chapters[$chapter_no] : 'N/A';
+               $chapter_name = isset ($chapters[$chapter_no]) ? $chapters[$chapter_no]['name'] : 'N/A';
                return array
                (
                        'name' => "Chapter '${chapter_name}'",
index af3a9b7b0a9b20e2117f385f623391684f36af5c..3914e294c2e92a6555253117d09aaadde3a47c38 100644 (file)
@@ -105,7 +105,6 @@ INSERT INTO `Chapter` (`id`, `sticky`, `name`) VALUES
 (14,'no','switch OS type'),
 (1,'yes','RackObjectType'),
 (2,'yes','PortType'),
-(3,'yes','RackRow'),
 (16,'no','router OS type'),
 (17,'no','router models'),
 (18,'no','disk array models'),
index 0d3d4962ded54e30d2007b3d656201c820008645..ab8239a0cd644a1cd09cc510f01d830469b86638 100644 (file)
@@ -219,6 +219,7 @@ CREATE TABLE `FileLink` (
                                $query[] = "insert into RackRow set id=${row[0]}, name='${row[1]}'";
                        }
                        $query[] = "delete from Dictionary where chapter_id = 3";
+                       $query[] = "delete from Chapter where id = 3";
                        $query[] = "
 CREATE TABLE `LDAPCache` (
   `presented_username` char(64) NOT NULL,