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)