]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - wiki_msql.php3
Changed the settings for mSQL.
[SourceForge/phpwiki.git] / wiki_msql.php3
1 <!-- $Id: wiki_msql.php3,v 1.3 2000-06-25 19:38:55 wainstead Exp $ -->
2 <?
3
4    /*
5       Database functions:
6       MakePageHash($dbhash)
7       MakeDBHash($pagename, $pagehash)
8       OpenDataBase($dbname)
9       CloseDataBase($dbi)
10       RetrievePage($dbi, $pagename)
11       InsertPage($dbi, $pagename, $pagehash)
12       IsWikiPage($dbi, $pagename)
13       InitTitleSearch($dbi, $search)
14       TitleSearchNextMatch($dbi, &$pos)
15       InitFullSearch($dbi, $search)
16       FullSearchNextMatch($dbi, &$pos)
17    */
18
19
20    // open a database and return the handle
21    // ignores MAX_DBM_ATTEMPTS
22
23    function OpenDataBase($dbinfo) {
24       global $msql_db;
25
26       if (! ($dbc = msql_pconnect())) {
27          echo "Cannot establish connection to database, giving up.";
28          echo "Error message: ", msql_error(), "<br>\n";
29          exit();
30       }
31       if (!msql_select_db($msql_db, $dbc)) {
32          echo "Cannot open database $msql_db, giving up.";
33          echo "Error message: ", msql_error(), "<br>\n";
34          exit();
35       }
36
37       $dbi['dbc'] = $dbc;
38       $dbi['table'] = $dbinfo['table'];           // page metadata
39       $dbi['page_table'] = $dbinfo['page_table']; // page content
40 //      echo "dbi[page_table]: $dbi[page_table], dbinfo[page_table]: $dbinfo[page_table]<br>\n";
41       return $dbi;
42    }
43
44
45    function CloseDataBase($dbi) {
46       // NOP function
47       // msql connections are established as persistant
48       // they cannot be closed through msql_close()
49    }
50
51
52    // Take form data and prepare it for the db
53    function MakeDBHash($pagename, $pagehash)
54    {
55       $pagehash["pagename"] = addslashes($pagename);
56       if (!isset($pagehash["flags"]))
57          $pagehash["flags"] = 0;
58       $pagehash["author"] = addslashes($pagehash["author"]);
59       $pagehash["refs"] = serialize($pagehash["refs"]);
60
61       return $pagehash;
62    }
63
64
65    // Take db data and prepare it for display
66    function MakePageHash($dbhash)
67    {
68       // unserialize/explode content
69       $dbhash['refs'] = unserialize($dbhash['refs']);
70
71       // retrieve page lines from other table
72 //      $dbhash['content'] = explode("\n", $dbhash['content']);
73       return $dbhash;
74    }
75
76
77    // Return hash of page + attributes or default
78    function RetrievePage($dbi, $pagename) {
79       $pagename = addslashes($pagename);
80       $query = "select * from $dbi[table] where pagename='$pagename'";
81       if ($res = msql_query($query, $dbi['dbc'])) {
82          $dbhash = msql_fetch_array($res);
83          $query = "select lineno,line from $dbi[page_table] " .
84                   "where pagename='$pagename' " .
85                   "order by lineno";
86          if ($res = msql_query($query, $dbi[dbc])) {
87             $dbhash["content"] = array();
88             while ($row = msql_fetch_array($res)) {
89                $dbhash["content"][ $row["lineno"] ] = $row["line"];
90             }
91          }
92
93          return MakePageHash($dbhash);
94       }
95       return -1;
96    }
97
98
99    // Either insert or replace a key/value (a page)
100    function InsertPage($dbi, $pagename, $pagehash)
101    {
102       $pagehash = MakeDBHash($pagename, $pagehash);
103
104       // temporary hack until the time stuff is brought up to date
105       $pagehash["created"] = time();
106       $pagehash["lastmodified"] = time();
107
108       if (IsWikiPage($dbi, $pagename)) {
109
110          $PAIRS = "author='$pagehash[author]'," .
111                   "created=$pagehash[created]," .
112                   "flags=$pagehash[flags]," .
113                   "lastmodified=$pagehash[lastmodified]," .
114                   "pagename='$pagehash[pagename]'," .
115                   "refs='$pagehash[refs]'," .
116                   "version=$pagehash[version]";
117
118          $query  = "UPDATE $dbi[table] SET $PAIRS WHERE pagename='$pagename'";
119
120       } else {
121          // do an insert
122          // build up the column names and values for the query
123
124          $COLUMNS = "author, created, flags, lastmodified, " .
125                     "pagename, refs, version";
126
127          $VALUES =  "'$pagehash[author]', " .
128                     "$pagehash[created], $pagehash[flags], " .
129                     "$pagehash[lastmodified], '$pagehash[pagename]', " .
130                     "'$pagehash[refs]', $pagehash[version]";
131
132
133          $query = "INSERT INTO $dbi[table] ($COLUMNS) VALUES($VALUES)";
134       }
135
136 //      echo "<p>Query: $query<p>\n";
137
138       // first, insert the metadata
139       $retval = msql_query($query, $dbi['dbc']);
140       if ($retval == false) 
141          echo "Insert/update failed: ", msql_error(), "<br>\n";
142
143       // second, insert the page data
144       // remove old data from page_table
145       $query = "delete from $dbi[page_table] where pagename='$pagename'";
146       //echo "Delete query: $query<br>\n";
147       $retval = msql_query($query, $dbi['dbc']);
148       if ($retval == false) 
149          echo "Delete on $dbi[page_table] failed: ", msql_error(), "<br>\n";
150
151       // insert the new lines
152       reset($pagehash["content"]);
153
154       for ($x = 0; $x < count($pagehash["content"]); $x++) {
155          $line = addslashes($pagehash["content"][$x]);
156          $query = "INSERT INTO $dbi[page_table] " .
157                   "(pagename, lineno, line) " .
158                   "VALUES('$pagename', $x, '$line')";
159          //echo "Page line insert query: $query<br>\n";
160          $retval = msql_query($query, $dbi['dbc']);
161          if ($retval == false) 
162             echo "Insert into $dbi[page_table] failed: ", msql_error(), "<br>\n";;
163          
164       }
165
166    }
167
168
169    function IsWikiPage($dbi, $pagename) {
170       $pagename = addslashes($pagename);
171       $query = "select pagename from $dbi[table] where pagename='$pagename'";
172 //      echo "Query: $query<br>\n";
173       if ($res = msql_query($query, $dbi['dbc'])) {
174          return(msql_affected_rows($res));
175       }
176    }
177
178
179    // setup for title-search
180    function InitTitleSearch($dbi, $search) {
181       $search = addslashes($search);
182       $query = "select pagename from $dbi[table] " .
183                "where pagename clike '%$search%' order by pagename";
184       $res = msql_query($query, $dbi["dbc"]);
185
186       return $res;
187    }
188
189
190    // iterating through database
191    function TitleSearchNextMatch($dbi, $res) {
192       if($o = msql_fetch_object($res)) {
193          return $o->pagename;
194       }
195       else {
196          return 0;
197       }
198    }
199
200
201    // setup for full-text search
202    function InitFullSearch($dbi, $search) {
203       $search = addslashes($search);
204       $query = "select * from $dbi[table] where searchterms clike '%$search%'";
205       $res = msql_query($query, $dbi["dbc"]);
206
207       return $res;
208    }
209
210    // iterating through database
211    function FullSearchNextMatch($dbi, $res) {
212       if($hash = msql_fetch_array($res)) {
213          return MakePageHash($hash);
214       } else {
215          return 0;
216       }
217    }
218
219
220 ?>