1 <!-- $Id: wiki_dbmlib.php3,v 1.4 2000-06-23 01:30:27 wainstead Exp $ -->
7 RetrievePage($dbi, $pagename)
8 InsertPage($dbi, $pagename, $pagehash)
9 IsWikiPage($dbi, $pagename)
10 InitTitleSearch($dbi, $search)
11 TitleSearchNextMatch($dbi, &$pos)
12 InitFullSearch($dbi, $search)
13 FullSearchNextMatch($dbi, &$pos)
17 // open a database and return the handle
18 // loop until we get a handle; php has its own
19 // locking mechanism, thank god.
20 // Suppress ugly error message with @.
22 function OpenDataBase($dbname) {
23 while (($dbi = @dbmopen($dbname, "c")) < 1) {
24 if ($numattempts > MAX_DBM_ATTEMPTS) {
25 echo "Cannot open database, giving up.";
35 function CloseDataBase($dbi) {
36 return dbmclose($dbi);
40 // Return hash of page + attributes or default
41 function RetrievePage($dbi, $pagename) {
42 if ($data = dbmfetch($dbi, $pagename)) {
43 // unserialize $data into a hash
44 $pagehash = unserialize($data);
52 // Either insert or replace a key/value (a page)
53 function InsertPage($dbi, $pagename, $pagehash) {
54 $pagedata = serialize($pagehash);
56 if (dbminsert($dbi, $pagename, $pagedata)) {
57 if (dbmreplace($dbi, $pagename, $pagedata)) {
58 echo "error writing value";
65 function IsWikiPage($dbi, $pagename) {
66 return dbmexists($dbi, $pagename);
70 // setup for title-search
71 function InitTitleSearch($dbi, $search) {
72 $pos['search'] = $search;
73 $pos['key'] = dbmfirstkey($dbi);
78 // iterating through database
79 function TitleSearchNextMatch($dbi, &$pos) {
82 $pos['key'] = dbmnextkey($dbi, $pos['key']);
84 if (eregi($pos['search'], $page)) {
91 // setup for full-text search
92 function InitFullSearch($dbi, $search) {
93 return InitTitleSearch($dbi, $search);
96 //iterating through database
97 function FullSearchNextMatch($dbi, &$pos) {
100 $pos['key'] = dbmnextkey($dbi, $pos['key']);
102 $pagedata = dbmfetch($dbi, $key);
103 // test the serialized data
104 if (eregi($pos['search'], $pagedata)) {
105 $page['pagename'] = $key;
106 $pagedata = unserialize($pagedata);
107 $page['content'] = $pagedata['content'];