1 <!-- $Id: wiki_mysql.php3,v 1.6 2000-06-21 22:59:18 ahollosi Exp $ -->
9 RetrievePage($dbi, $pagename)
10 InsertPage($dbi, $pagename, $pagehash)
11 IsWikiPage($dbi, $pagename)
12 InitTitleSearch($dbi, $search)
13 TitleSearchNextMatch($dbi, &$pos)
14 InitFullSearch($dbi, $search)
15 FullSearchNextMatch($dbi, &$pos)
19 // open a database and return the handle
20 // ignores MAX_DBM_ATTEMPTS
22 function OpenDataBase($dbname) {
23 global $mysql_server, $mysql_user, $mysql_pwd, $mysql_db;
25 if (!($dbc = mysql_pconnect($mysql_server, $mysql_user, $mysql_pwd))) {
26 echo "Cannot establish connection to database, giving up.";
29 if (!mysql_select_db($mysql_db, $dbc)) {
30 echo "Cannot open database, giving up.";
35 $dbi['table'] = $dbname;
40 function CloseDataBase($dbi) {
42 // mysql connections are established as persistant
43 // they cannot be closed through mysql_close()
47 function MakeDBHash($pagename, $pagehash)
49 $pagehash["pagename"] = addslashes($pagename);
50 if (!isset($pagehash["flags"]))
51 $pagehash["flags"] = 0;
52 $pagehash["author"] = addslashes($pagehash["author"]);
53 $pagehash["content"] = implode("\n", $pagehash["content"]);
54 $pagehash["content"] = addslashes($pagehash["content"]);
55 $pagehash["refs"] = serialize($pagehash["refs"]);
60 function MakePageHash($dbhash)
62 // unserialize/explode content
63 $dbhash['refs'] = unserialize($dbhash['refs']);
64 $dbhash['content'] = explode("\n", $dbhash['content']);
69 // Return hash of page + attributes or default
70 function RetrievePage($dbi, $pagename) {
71 $pagename = addslashes($pagename);
72 if ($res = mysql_query("select * from $dbi[table] where pagename='$pagename'", $dbi['dbc'])) {
73 if ($dbhash = mysql_fetch_array($res)) {
74 return MakePageHash($dbhash);
81 // Either insert or replace a key/value (a page)
82 function InsertPage($dbi, $pagename, $pagehash)
84 $pagehash = MakeDBHash($pagename, $pagehash);
86 $COLUMNS = "author, content, created, flags, " .
87 "lastmodified, pagename, refs, version";
89 $VALUES = "'$pagehash[author]', '$pagehash[content]', " .
90 "$pagehash[created], $pagehash[flags], " .
91 "$pagehash[lastmodified], '$pagehash[pagename]', " .
92 "'$pagehash[refs]', $pagehash[version]";
95 if (!mysql_query("replace into $dbi[table] ($COLUMNS) values ($VALUES)",
97 echo "error writing page '$pagename'";
103 function IsWikiPage($dbi, $pagename) {
104 $pagename = addslashes($pagename);
105 if ($res = mysql_query("select count(*) from $dbi[table] where pagename='$pagename'", $dbi['dbc'])) {
106 return(mysql_result($res, 0));
111 // setup for title-search
112 function InitTitleSearch($dbi, $search) {
113 $search = addslashes($search);
114 $res = mysql_query("select pagename from $dbi[table] where pagename like '%$search%' order by pagename", $dbi["dbc"]);
120 // iterating through database
121 function TitleSearchNextMatch($dbi, $res) {
122 if($o = mysql_fetch_object($res)) {
131 // setup for full-text search
132 function InitFullSearch($dbi, $search) {
133 $search = addslashes($search);
134 $res = mysql_query("select * from $dbi[table] where content like '%$search%'", $dbi["dbc"]);
139 // iterating through database
140 function FullSearchNextMatch($dbi, $res) {
141 if($hash = mysql_fetch_array($res)) {
142 return MakePageHash($hash);