iliaa Mon May 24 16:42:43 2004 EDT
Modified files: /livedocs livedoc.php Log: Optimizations: path #2. http://cvs.php.net/diff.php/livedocs/livedoc.php?r1=1.104&r2=1.105&ty=u Index: livedocs/livedoc.php diff -u livedocs/livedoc.php:1.104 livedocs/livedoc.php:1.105 --- livedocs/livedoc.php:1.104 Mon May 24 16:23:05 2004 +++ livedocs/livedoc.php Mon May 24 16:42:43 2004 @@ -18,7 +18,7 @@ // | Generate an HTML version of a phpdoc/docbook page on the fly | // +----------------------------------------------------------------------+ // -// $Id: livedoc.php,v 1.104 2004/05/24 20:23:05 iliaa Exp $ +// $Id: livedoc.php,v 1.105 2004/05/24 20:42:43 iliaa Exp $ define('LIVEDOC_SOURCE', dirname(__FILE__)); include LIVEDOC_SOURCE . '/common.php'; @@ -304,18 +304,14 @@ /* now collect their values */ $entities_to_find = array_unique($matches[1]); $ents = implode("','", $entities_to_find); - $q = sqlite_query($idx, "SELECT entid, value from ents where entid in ('" . $ents . "')"); - if (!$q) { - break; - } - - while ($r = sqlite_fetch_array($q, SQLITE_NUM)) { - $entities['&' . $r[0] . ';'] = $r[1]; + $r = sqlite_array_query($idx, "SELECT entid, value from ents where entid in ('" . $ents . "')", SQLITE_NUM); + if ($r) { + foreach ($r as $v) { + $entities['&' . $v[0] . ';'] = $v[1]; + } + /* substitute */ + $data = strtr($data, $entities); } - - /* substitute */ - $data = strtr($data, $entities); - } while ($sanity++ < 5); return $data; @@ -433,9 +429,8 @@ * by using entities as much as possible */ if (isset($special[$nodeid])) { /* Check for the entity value */ - $q = sqlite_query($GLOBALS['idx'], "SELECT * FROM ents WHERE entid = '$special[$nodeid]'"); - if ($q && $r = sqlite_fetch_array($q, SQLITE_NUM)) { - return $r[1]; + if (($r = sqlite_single_query($GLOBALS['idx'], "SELECT entid FROM ents WHERE entid = '$special[$nodeid]'"))) { + return $r; } else { /* It's not an entity, let's just return it then */ return $special[$nodeid]; } @@ -448,18 +443,10 @@ /* It's not, so we try to resolve it from the DB */ $safeid = sqlite_escape_string($nodeid); - $q = sqlite_query($GLOBALS['idx'], "SELECT title from idents where id='$safeid'"); - - if ($q && $r = sqlite_fetch_array($q, SQLITE_NUM)) { - $ids[$nodeid] = $r[0]; - return $r[0]; - } elseif (isset($GLOBALS['fb_idx'])) { - $q = sqlite_query($GLOBALS['fb_idx'], "SELECT title from idents where id='$safeid'"); - - if ($q && $r = sqlite_fetch_array($q, SQLITE_NUM)) { - $ids[$nodeid] = $r[0]; - return $r[0]; - } + if (($ids[$nodeid] = sqlite_single_query($GLOBALS['idx'], "SELECT title from idents where id='$safeid'"))) { + return $ids[$nodeid]; + } else if (isset($GLOBALS['fb_idx']) && ($ids[$nodeid] = sqlite_single_query($GLOBALS['fb_idx'], "SELECT title from idents where id='$safeid'"))) { + return $ids[$nodeid]; } return null; } @@ -512,30 +499,27 @@ function do_contents($id, $level) { global $lang; - $q = "SELECT id, docbook_id FROM toc WHERE parent_id = $id"; - $r = sqlite_query($GLOBALS['idx'], $q); - $ret = "<ul>"; - while ($r && $row = sqlite_fetch_array($r, SQLITE_NUM)) { - $ret .= "<li>"; - - $title = lookup_title($row[1]); - if (empty($title)) { - $title = $row[1]. ' [?]'; - $ret .= $title; - } else { - $url = generate_url_for_id($lang, $row[1]); - $ret .= "<a href='$url'>$title</a>"; - } - if (($level < 2 && substr($row[1], 0, 3) != 'ref') || $level < 1) { - $ret .= do_contents($row[0], $level + 1); + if (($r = sqlite_array_query($GLOBALS['idx'], "SELECT id, docbook_id FROM toc WHERE parent_id = ".$id, SQLITE_NUM))) { + foreach($r as $row) { + $ret .= "<li>"; + + if (!($title = lookup_title($row[1]))) { + $ret .= $row[1]. ' [?]'; + } else { + $ret .= "<a href='".generate_url_for_id($lang, $row[1])."'>".$title."</a>"; + } + + if (($level < 2 && strcmp($row[1], 'ref')) || $level < 1) { + $ret .= do_contents($row[0], $level + 1); + } + $ret .= "</li>\n"; } - $ret .= "</li>\n"; - } - if ($ret == '<ul>') { - return ''; + + return "<ul>" . $ret . "</ul>\n"; } - return $ret .= "</ul>\n"; + + return ''; } function handle_include($node)