1 <!-- $Id: wiki_mysql.php3,v 1.8 2000-06-30 00:24:29 wainstead 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)
16 IncreaseHitCount($dbi, $pagename)
17 GetHitCount($dbi, $pagename)
18 InitMostPopular($dbi, $limit)
19 MostPopularNextMatch($dbi, $res)
24 // open a database and return the handle
25 // ignores MAX_DBM_ATTEMPTS
27 function OpenDataBase($dbname) {
28 global $mysql_server, $mysql_user, $mysql_pwd, $mysql_db;
30 if (!($dbc = mysql_pconnect($mysql_server, $mysql_user, $mysql_pwd))) {
31 echo "Cannot establish connection to database, giving up.";
34 if (!mysql_select_db($mysql_db, $dbc)) {
35 echo "Cannot open database, giving up.";
40 $dbi['table'] = $dbname;
45 function CloseDataBase($dbi) {
47 // mysql connections are established as persistant
48 // they cannot be closed through mysql_close()
52 function MakeDBHash($pagename, $pagehash)
54 $pagehash["pagename"] = addslashes($pagename);
55 if (!isset($pagehash["flags"]))
56 $pagehash["flags"] = 0;
57 $pagehash["author"] = addslashes($pagehash["author"]);
58 $pagehash["content"] = implode("\n", $pagehash["content"]);
59 $pagehash["content"] = addslashes($pagehash["content"]);
60 $pagehash["refs"] = serialize($pagehash["refs"]);
65 function MakePageHash($dbhash)
67 // unserialize/explode content
68 $dbhash['refs'] = unserialize($dbhash['refs']);
69 $dbhash['content'] = explode("\n", $dbhash['content']);
74 // Return hash of page + attributes or default
75 function RetrievePage($dbi, $pagename) {
76 $pagename = addslashes($pagename);
77 if ($res = mysql_query("select * from $dbi[table] where pagename='$pagename'", $dbi['dbc'])) {
78 if ($dbhash = mysql_fetch_array($res)) {
79 return MakePageHash($dbhash);
86 // Either insert or replace a key/value (a page)
87 function InsertPage($dbi, $pagename, $pagehash)
89 $pagehash = MakeDBHash($pagename, $pagehash);
91 $COLUMNS = "author, content, created, flags, " .
92 "lastmodified, pagename, refs, version";
94 $VALUES = "'$pagehash[author]', '$pagehash[content]', " .
95 "$pagehash[created], $pagehash[flags], " .
96 "$pagehash[lastmodified], '$pagehash[pagename]', " .
97 "'$pagehash[refs]', $pagehash[version]";
100 if (!mysql_query("replace into $dbi[table] ($COLUMNS) values ($VALUES)",
102 echo "error writing page '$pagename'";
108 function IsWikiPage($dbi, $pagename) {
109 $pagename = addslashes($pagename);
110 if ($res = mysql_query("select count(*) from $dbi[table] where pagename='$pagename'", $dbi['dbc'])) {
111 return(mysql_result($res, 0));
116 function IncreaseHitCount($dbi, $pagename)
118 $res = mysql_query("update hitcount set hits=hits+1 where pagename='$pagename'", $dbi['dbc']);
120 if (!mysql_affected_rows($dbi['dbc'])) {
121 $res = mysql_query("insert into hitcount (pagename, hits) values ('$pagename', 1)", $dbi['dbc']);
127 function GetHitCount($dbi, $pagename)
129 $res = mysql_query("select hits from hitcount where pagename='$pagename'", $dbi['dbc']);
130 if (mysql_num_rows($res))
131 $hits = mysql_result($res, 0);
139 // setup for title-search
140 function InitTitleSearch($dbi, $search) {
141 $search = addslashes($search);
142 $res = mysql_query("select pagename from $dbi[table] where pagename like '%$search%' order by pagename", $dbi["dbc"]);
148 // iterating through database
149 function TitleSearchNextMatch($dbi, $res) {
150 if($o = mysql_fetch_object($res)) {
159 // setup for full-text search
160 function InitFullSearch($dbi, $search) {
161 $search = addslashes($search);
162 $res = mysql_query("select * from $dbi[table] where content like '%$search%'", $dbi["dbc"]);
167 // iterating through database
168 function FullSearchNextMatch($dbi, $res) {
169 if($hash = mysql_fetch_array($res)) {
170 return MakePageHash($hash);
177 function InitMostPopular($dbi, $limit) {
178 $res = mysql_query("select * from hitcount order by hits desc, pagename limit $limit");
183 function MostPopularNextMatch($dbi, $res) {
184 if ($hits = mysql_fetch_array($res))