iliaa Fri Jun 17 18:10:18 2005 EDT
Modified files:
/livedocs livedoc_funcs.php mkindex.php
Log:
Added some warnings on common errors.
Fixed bug #33358 (Use TITLEABBREV in table of contents).
http://cvs.php.net/diff.php/livedocs/livedoc_funcs.php?r1=1.26&r2=1.27&ty=u
Index: livedocs/livedoc_funcs.php
diff -u livedocs/livedoc_funcs.php:1.26 livedocs/livedoc_funcs.php:1.27
--- livedocs/livedoc_funcs.php:1.26 Thu Feb 10 07:23:32 2005
+++ livedocs/livedoc_funcs.php Fri Jun 17 18:10:16 2005
@@ -160,16 +160,20 @@
$nolink = FALSE;
- $title = lookup_title($item);
- $fulltitle = $title;
- if (NAV_TRUNCATE && isset($title{NAV_TRUNCATE}) ) {
- $ftitle = " title='$title'";
- $title = substr($title, 0, NAV_TRUNCATE-3). '...';
+ list($fulltitle, $title) = lookup_title($item, 1);
+
+ if ($title) { /* got abbreviated title */
+ $ftitle = " title='$fulltitle'";
+ } else if (NAV_TRUNCATE && isset($fulltitle{NAV_TRUNCATE})) {
+ $ftitle = " title='$fulltitle'";
+ $title = substr($fulltitle, 0, NAV_TRUNCATE-3). '...';
} else {
$ftitle = "";
- if (!$title) {
+ if (!$fulltitle) {
$title = $item . ' [?]';
$nolink = TRUE;
+ } else {
+ $title = $fulltitle;
}
}
@@ -316,7 +320,7 @@
return $inner . "</div>";
}
-function lookup_title($nodeid)
+function lookup_title($nodeid, $get_abbr=0)
{
static $ids = array();
@@ -335,18 +339,23 @@
}
/* See if the title lookup is in the cache already */
- if (isset($ids[$nodeid])) {
- return $ids[$nodeid];
+ if (!isset($ids[$nodeid])) {
+ /* It's not, so we try to resolve it from the DB */
+ $safeid = sqlite_escape_string($nodeid);
+ if (!($ids[$nodeid] = sqlite_array_query($GLOBALS['idx'],
"SELECT title, abbrtitle from idents where id='$safeid'", SQLITE_NUM)) &&
isset($GLOBALS['fb_idx'])) {
+ $ids[$nodeid] = sqlite_array_query($GLOBALS['fb_idx'],
"SELECT title, abbrtitle from idents where id='$safeid'", SQLITE_NUM);
+ }
}
- /* It's not, so we try to resolve it from the DB */
- $safeid = sqlite_escape_string($nodeid);
- 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];
+ if (isset($ids[$nodeid][0])) {
+ if ($get_abbr) {
+ return $ids[$nodeid][0];
+ } else {
+ return $ids[$nodeid][0][0];
+ }
}
- return null;
+
+ return $get_abbr ? array('','') : null;
}
/* transform an entity name of the form "reference.XXXX.functions.ID"
http://cvs.php.net/diff.php/livedocs/mkindex.php?r1=1.40&r2=1.41&ty=u
Index: livedocs/mkindex.php
diff -u livedocs/mkindex.php:1.40 livedocs/mkindex.php:1.41
--- livedocs/mkindex.php:1.40 Wed Jun 15 21:11:01 2005
+++ livedocs/mkindex.php Fri Jun 17 18:10:16 2005
@@ -19,23 +19,23 @@
// | construct an index |
// +----------------------------------------------------------------------+
//
-// $Id: mkindex.php,v 1.40 2005/06/16 01:11:01 iliaa Exp $
+// $Id: mkindex.php,v 1.41 2005/06/17 22:10:16 iliaa Exp $
/* just to be on the safe side */
set_time_limit(0);
set_magic_quotes_runtime(0);
+if ($argc != 5 || !is_dir($argv[1]) || !is_dir($argv[1] . DIRECTORY_SEPARATOR
. $argv[2])) {
+ echo "Usage: mkindex.php /path/to/docs lang tmp-dir build-type\n";
+ exit(1);
+}
+
$DOCS = $argv[1];
$LANG = $argv[2];
$TMPDIR = $argv[3];
$BUILDTYPE = $argv[4];
-if (!is_dir($DOCS) || !is_dir($DOCS . DIRECTORY_SEPARATOR . $LANG)) {
- echo "Usage: mkindex.php /path/to/docs lang tmp-dir build-type\n";
- exit(1);
-}
-
require 'mk_' . $BUILDTYPE . '.php';
function entity_replace($data) {
@@ -54,12 +54,15 @@
return '';
}
+$titles = array('TITLE'=>1, 'REFNAME'=>2, 'QANDAENTRY'=>2, 'VARLISTENTRY'=>2,
'TITLEABBREV' => 2);
+
class DocBookXMLFileParser {
var $fileid = false;
var $last_id = false;
var $cdata = null;
var $data = '';
var $title_depth = -1;
+ var $incomp = 0;
function DocBookXMLFileParser($filename, $rel, $parser) {
$this->fileid = $GLOBALS['fileid'];
@@ -87,13 +90,11 @@
}
function start_elem($parser, $name, $attrs) {
- static $titles = array('TITLE'=>1, 'REFNAME'=>1,
'QANDAENTRY'=>1, 'VARLISTENTRY'=>1);
-
// if there is an ID attribute, record it
if (isset($attrs['ID'])) {
$this->last_id = $attrs['ID'];
}
- if ($this->last_id !== false && isset($titles[$name])) {
+ if ($this->last_id !== false &&
isset($GLOBALS['titles'][$name])) {
$this->title_depth = 1;
}
}
@@ -102,9 +103,30 @@
if ($this->last_id !== false && $this->title_depth &&
--$this->title_depth == 0) {
echo "\tAdded ID {$this->last_id}\n";
- $this->data .= "INSERT INTO idents VALUES ('" .
strtolower($this->last_id) . "', {$this->fileid}, '" .
sqlite_escape_string(str_replace('||amp||', '&', trim($this->cdata))) . "');";
+ if (!isset($GLOBALS['titles'][$name])) {
+ if ($this->incomp) {
+ $this->data .= "'');";
+ $this->incomp = 0;
+ }
+ $this->cdata = null;
+ $this->last_id = false;
+ return;
+ }
- $this->last_id = false;
+ if ($name != 'TITLEABBREV') {
+ if ($this->incomp) {
+ $this->data .= "'');";
+ }
+ $this->data .= "INSERT INTO idents VALUES ('" .
strtolower($this->last_id) . "', {$this->fileid}, '" .
sqlite_escape_string(str_replace('||amp||', '&', trim($this->cdata))) . "',";
+ $this->incomp = 1;
+ } else {
+ $this->data .=
"'".sqlite_escape_string(str_replace('||amp||', '&', trim($this->cdata)))."');";
+ $this->incomp = 0;
+ }
+
+ if ($GLOBALS['titles'][$name] != 1) {
+ $this->last_id = false;
+ }
$this->cdata = null;
}
}
@@ -175,7 +197,12 @@
xml_parser_free($parser);
if ($p->data) {
- sqlite_query($idx, $p->data);
+ if ($p->incomp) {
+ $p->data .= "'');";
+ }
+ if (!sqlite_query($idx, $p->data)) {
+ exit("Failed Query (".
sqlite_error_string(sqlite_last_error($idx))."): ".$p->data);
+ }
}
}
@@ -302,15 +329,15 @@
@unlink("livedoc-idx.$LANG.sqlite-journal");
$idx = sqlite_open("livedoc-idx.$LANG.sqlite");
+if (!$idx) {
+ die("could not open sqlite database");
+}
+
/* optimization trick */
sqlite_query($idx, 'PRAGMA default_synchronous=OFF');
sqlite_query($idx, 'PRAGMA count_changes=OFF');
sqlite_query($idx, 'PRAGMA cache_size=100000');
-if (!$idx) {
- die("could not open sqlite database");
-}
-
$create = <<<SQL
CREATE TABLE dirs (
dirid INTEGER PRIMARY KEY,
@@ -327,7 +354,8 @@
CREATE TABLE idents (
id TEXT PRIMARY KEY,
fileid INTEGER, -- The file in which the identifier can be found
- title TEXT -- Caption of the identifier for linking purposes
+ title TEXT, -- Caption of the identifier for linking purposes
+ abbrtitle TEXT -- Abbreviated title for menus
);
CREATE TABLE ents (