]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - wiki_mysql.php3
added <!DOCTYPE> and ALT tag for logo so that phpwiki becomes fully HTML compliant...
[SourceForge/phpwiki.git] / wiki_mysql.php3
1 <!-- $Id: wiki_mysql.php3,v 1.8 2000-06-30 00:24:29 wainstead Exp $ -->
2 <?
3
4    /*
5       Database functions:
6
7       OpenDataBase($dbname)
8       CloseDataBase($dbi)
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)
20
21    */
22
23
24    // open a database and return the handle
25    // ignores MAX_DBM_ATTEMPTS
26
27    function OpenDataBase($dbname) {
28       global $mysql_server, $mysql_user, $mysql_pwd, $mysql_db;
29
30       if (!($dbc = mysql_pconnect($mysql_server, $mysql_user, $mysql_pwd))) {
31          echo "Cannot establish connection to database, giving up.";
32          exit();
33       }
34       if (!mysql_select_db($mysql_db, $dbc)) {
35          echo "Cannot open database, giving up.";
36          exit();
37       }
38
39       $dbi['dbc'] = $dbc;
40       $dbi['table'] = $dbname;
41       return $dbi;
42    }
43
44
45    function CloseDataBase($dbi) {
46       // NOP function
47       // mysql connections are established as persistant
48       // they cannot be closed through mysql_close()
49    }
50
51
52    function MakeDBHash($pagename, $pagehash)
53    {
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"]);
61  
62       return $pagehash;
63    }
64
65    function MakePageHash($dbhash)
66    {
67       // unserialize/explode content
68       $dbhash['refs'] = unserialize($dbhash['refs']);
69       $dbhash['content'] = explode("\n", $dbhash['content']);
70       return $dbhash;
71    }
72
73
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);
80          }
81       }
82       return -1;
83    }
84
85
86    // Either insert or replace a key/value (a page)
87    function InsertPage($dbi, $pagename, $pagehash)
88    {
89       $pagehash = MakeDBHash($pagename, $pagehash);
90
91       $COLUMNS = "author, content, created, flags, " .
92                  "lastmodified, pagename, refs, version";
93
94       $VALUES =  "'$pagehash[author]', '$pagehash[content]', " .
95                  "$pagehash[created], $pagehash[flags], " .
96                  "$pagehash[lastmodified], '$pagehash[pagename]', " .
97                  "'$pagehash[refs]', $pagehash[version]";
98
99
100       if (!mysql_query("replace into $dbi[table] ($COLUMNS) values ($VALUES)",
101                         $dbi['dbc'])) {
102             echo "error writing page '$pagename'";
103             exit();
104       }
105    }
106
107
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));
112       }
113    }
114
115
116    function IncreaseHitCount($dbi, $pagename)
117    {
118       $res = mysql_query("update hitcount set hits=hits+1 where pagename='$pagename'", $dbi['dbc']);
119
120       if (!mysql_affected_rows($dbi['dbc'])) {
121          $res = mysql_query("insert into hitcount (pagename, hits) values ('$pagename', 1)", $dbi['dbc']);
122       }
123
124       return $res;
125    }
126
127    function GetHitCount($dbi, $pagename)
128    {
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);
132       else
133          $hits = "0";
134
135       return $hits;
136    }
137
138
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"]);
143
144       return $res;
145    }
146
147
148    // iterating through database
149    function TitleSearchNextMatch($dbi, $res) {
150       if($o = mysql_fetch_object($res)) {
151          return $o->pagename;
152       }
153       else {
154          return 0;
155       }
156    }
157
158
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"]);
163
164       return $res;
165    }
166
167    // iterating through database
168    function FullSearchNextMatch($dbi, $res) {
169       if($hash = mysql_fetch_array($res)) {
170          return MakePageHash($hash);
171       }
172       else {
173          return 0;
174       }
175    }
176
177    function InitMostPopular($dbi, $limit) {
178       $res = mysql_query("select * from hitcount order by hits desc, pagename limit $limit");
179       
180       return $res;
181    }
182
183    function MostPopularNextMatch($dbi, $res) {
184       if ($hits = mysql_fetch_array($res))
185          return $hits;
186       else
187          return 0;
188    }
189 ?>