SourceForge logo
SourceForge logo
Menu

phpwiki-checkins

From: Joel U. <uck...@us...> - 2001年07月18日 04:59:50
Update of /cvsroot/phpwiki/phpwiki/lib
In directory usw-pr-cvs1:/tmp/cvs-serv27676/lib
Modified Files:
	pgsql.php 
Log Message:
Changed PostgreSQL db library and schema to work with versioning, maybe.
Index: pgsql.php
===================================================================
RCS file: /cvsroot/phpwiki/phpwiki/lib/pgsql.php,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -r1.7 -r1.8
*** pgsql.php	2001年07月15日 16:03:26	1.7
--- pgsql.php	2001年07月18日 04:59:47	1.8
***************
*** 7,15 ****
 OpenDataBase($table)
 CloseDataBase($dbi)
! RetrievePage($dbi, $pagename, $pagestore)
! InsertPage($dbi, $pagename, $pagehash)
! SaveCopyToArchive($dbi, $pagename, $pagehash) 
 IsWikiPage($dbi, $pagename)
 IsInArchive($dbi, $pagename)
 InitTitleSearch($dbi, $search)
 TitleSearchNextMatch($dbi, $res)
--- 7,20 ----
 OpenDataBase($table)
 CloseDataBase($dbi)
! RetrievePage($dbi, $pagename, $pagestore, $version)
! RetrievePageVersions($dbi, $pagename, $curstore, $archstore)
! GetMaxVersionNumber($dbi, $pagename, $pagestore)
! InsertPage($dbi, $pagename, $pagehash, $clobber)
! SelectStore($dbi, $pagename, $version, $curstore, $archstore)
! IsVersionInWiki($dbi, $pagename, $version)
! IsVersionInArchive($dbi, $pagename, $version)
 IsWikiPage($dbi, $pagename)
 IsInArchive($dbi, $pagename)
+ RemovePage($dbi, $pagename)
 InitTitleSearch($dbi, $search)
 TitleSearchNextMatch($dbi, $res)
***************
*** 65,71 ****
 
 // Return hash of page + attributes or default
! function RetrievePage($dbi, $pagename, $pagestore) {
 $pagename = addslashes($pagename);
! $query = "select * from $pagestore where pagename='$pagename'";
 // echo "<p>$query<p>";
 $res = pg_exec($dbi['dbc'], $query);
--- 70,77 ----
 
 // Return hash of page + attributes or default
! function RetrievePage($dbi, $pagename, $pagestore, $version) {
 $pagename = addslashes($pagename);
! $version = $version ? " and version=$version" : '';
! $query = "select * from $pagestore where pagename='$pagename'$version";
 // echo "<p>$query<p>";
 $res = pg_exec($dbi['dbc'], $query);
***************
*** 95,100 ****
 
 
 // Either insert or replace a key/value (a page)
! function InsertPage($dbi, $pagename, $pagehash) {
 $pagename = addslashes($pagename);
 
--- 101,145 ----
 
 
+ // Return all versions of a page as an array of page hashes
+ function RetrievePageVersions($dbi, $pagename, $curstore, $archstore) {
+ $pagename = addslashes($pagename);
+ if (($page[0] = RetrievePage($dbi, $pagename, $curstore, 0)) != -1) {
+ $res = pg_exec($dbi['dbc'], "select * from $archstore where pagename='$pagename' order by version desc");
+ if (pg_numrows($res)) {
+ while ($array = pg_fetch_array($res, 0)) {
+ while (list($key, $val) = each($array)) {
+ if (gettype($key) == "integer") {
+ continue;
+ }
+ $dbhash[$key] = $val;
+ }
+ 
+ $dbhash['refs'] = unserialize($dbhash['refs']);
+ $dbhash['content'] = explode("\n", $dbhash['content']);
+ 
+ array_push($page, $dbhash);
+ }
+ 
+ return $page;
+ }
+ }
+ 
+ // if we reach this the query failed
+ return -1;
+ }
+ 
+ 
+ // Get maximum version number of a page in pagestore
+ function GetMaxVersionNumber($dbi, $pagename, $pagestore) {
+ $pagename = addslashes($pagename);
+ if ($res = pg_exec($dbi['dbc'], "select max(version) from $pagestore where pagename='$pagename'")) {
+ return pg_result($res, 0, "version");
+ }
+ return -1;
+ }
+ 
+ 
 // Either insert or replace a key/value (a page)
! function InsertPage($dbi, $pagename, $pagehash, $clobber) {
 $pagename = addslashes($pagename);
 
***************
*** 123,240 ****
 // record the time of modification
 $pagehash["lastmodified"] = time();
- 
 
! if (IsWikiPage($dbi, $pagename)) {
 
! $PAIRS = "author='$pagehash[author]'," .
! "content='$pagehash[content]'," .
! "created=$pagehash[created]," .
! "flags=$pagehash[flags]," .
! "lastmodified=$pagehash[lastmodified]," .
! "pagename='$pagehash[pagename]'," .
! "refs='$pagehash[refs]'," .
! "version=$pagehash[version]";
 
! $query = "UPDATE $dbi[table] SET $PAIRS WHERE pagename='$pagename'";
! 
! } else {
! // do an insert
! // build up the column names and values for the query
! 
! $COLUMNS = "author, content, created, flags, " .
! "lastmodified, pagename, refs, version";
 
! $VALUES = "'$pagehash[author]', '$pagehash[content]', " .
! "$pagehash[created], $pagehash[flags], " .
! "$pagehash[lastmodified], '$pagehash[pagename]', " .
! "'$pagehash[refs]', $pagehash[version]";
 
 
! $query = "INSERT INTO $dbi[table] ($COLUMNS) VALUES($VALUES)";
 }
 
- // echo "<p>Query: $query<p>\n";
- $retval = pg_exec($dbi['dbc'], $query);
- if ($retval == false) 
- echo "Insert/update failed: " . pg_errormessage($dbi['dbc']);
 
 }
 
 
! function SaveCopyToArchive($dbi, $pagename, $pagehash) {
 global $ArchivePageStore;
- // echo "<p>save copy called<p>";
 
 $pagename = addslashes($pagename);
! // echo "<p>dbi in SaveCopyToArchive: '$dbi' '$ArchivePageStore' '$dbi[dbc]'<p>";
! 
! // prepare the content for storage
! if (!isset($pagehash["pagename"]))
! $pagehash["pagename"] = $pagename;
! if (!isset($pagehash["flags"]))
! $pagehash["flags"] = 0;
! $pagehash["author"] = addslashes($pagehash["author"]);
! $pagehash["content"] = implode("\n", $pagehash["content"]);
! $pagehash["content"] = addslashes($pagehash["content"]);
! $pagehash["pagename"] = addslashes($pagehash["pagename"]);
! $pagehash["refs"] = serialize($pagehash["refs"]);
! 
! if (IsInArchive($dbi, $pagename)) {
! 
! $PAIRS = "author='$pagehash[author]'," .
! "content='$pagehash[content]'," .
! "created=$pagehash[created]," .
! "flags=$pagehash[flags]," .
! "lastmodified=$pagehash[lastmodified]," .
! "pagename='$pagehash[pagename]'," .
! "refs='$pagehash[refs]'," .
! "version=$pagehash[version]";
! 
! $query = "UPDATE $ArchivePageStore SET $PAIRS WHERE pagename='$pagename'";
 
- } else {
- // do an insert
- // build up the column names and values for the query
 
! $COLUMNS = "author, content, created, flags, " .
! "lastmodified, pagename, refs, version";
 
- $VALUES = "'$pagehash[author]', '$pagehash[content]', " .
- "$pagehash[created], $pagehash[flags], " .
- "$pagehash[lastmodified], '$pagehash[pagename]', " .
- "'$pagehash[refs]', $pagehash[version]";
 
 
! $query = "INSERT INTO $ArchivePageStore ($COLUMNS) VALUES($VALUES)";
 }
 
- // echo "<p>Query: $query<p>\n";
- $retval = pg_exec($dbi['dbc'], $query);
- if ($retval == false) 
- echo "Insert/update failed: " . pg_errormessage($dbi['dbc']);
 
 
! }
 
 
! function IsWikiPage($dbi, $pagename) {
! global $WikiPageStore; 	
! $pagename = addslashes($pagename);
! $query = "select count(*) from $WikiPageStore " .
! "where pagename='$pagename'";
! $res = pg_exec($query);
! $array = pg_fetch_array($res, 0);
! return $array[0];
! }
 
 
! function IsInArchive($dbi, $pagename) {
! 	 global $ArchivePageStore;
! $pagename = addslashes($pagename);
! $query = "select count(*) from $ArchivePageStore " .
! "where pagename='$pagename'";
! $res = pg_exec($query);
! $array = pg_fetch_array($res, 0);
! return $array[0];
 }
 
--- 168,275 ----
 // record the time of modification
 $pagehash["lastmodified"] = time();
 
! // Clobber existing page?
! $clobber = $clobber ? 'replace' : 'insert';
 
! $COLUMNS = "author, content, created, flags, " .
! "lastmodified, pagename, refs, version";
 
! $VALUES = "'$pagehash[author]', '$pagehash[content]', " .
! "$pagehash[created], $pagehash[flags], " .
! "$pagehash[lastmodified], '$pagehash[pagename]', " .
! "'$pagehash[refs]', $pagehash[version]";
! 
! if (!pg_exec($dbi['dbc'], "$clobber into $dbi[table] ($COLUMNS) values ($VALUES)")) {
! $msg = htmlspecialchars(sprintf(gettext("Error writing page '%s'"), $pagename));
! $msg .= "<BR>";
! $msg .= htmlspecialchars(sprintf(gettext("PostgreSQL error: %s"), pg_errormessage($dbi['dbc'])));
! ExitWiki($msg);
! }
! }
 
! 
! // Adds a page to the archive pagestore
! function SavePageToArchive($pagename, $pagehash) {
! global $ArchivePageStore;
! $dbi = OpenDataBase($ArchivePageStore);
! InsertPage($dbi, $pagename, $pagehash, false);
! } 
 
 
! // Returns store where version of page resides
! function SelectStore($dbi, $pagename, $version, $curstore, $archstore) {
! if ($version) {
! if (IsVersionInWiki($dbi, $pagename, $version)) return $curstore;
! elseif (IsVersionInArchive($dbi, $pagename, $version)) return $archstore;
! else return -1;
 }
+ elseif (IsWikiPage($dbi, $pagename)) return $curstore;
+ else return -1;
+ }
 
 
+ function IsVersionInWiki($dbi, $pagename, $version) {
+ $pagename = addslashes($pagename);
+ if ($res = pg_exec($dbi['dbc'], "select count(*) from $dbi[table] where pagename='$pagename' and version='$version'")) {
+ return pg_result($res, 0, "count");
+ }
+ return 0;
 }
 
 
! function IsVersionInArchive($dbi, $pagename, $version) {
 global $ArchivePageStore;
 
 $pagename = addslashes($pagename);
! if ($res = pg_exec($dbi['dbc'], "select count(*) from $ArchivePageStore where pagename='$pagename' and version='$version'")) {
! return pg_result($res, 0, "count");
! }
! return 0;
! }
 
 
! function IsWikiPage($dbi, $pagename) {
! $pagename = addslashes($pagename);
! if ($res = pg_exec($dbi['dbc'], "select count(*) from $dbi[table] where pagename='$pagename'")) {
! return pg_result($res, 0, "count");
! }
! return 0;
! }
 
 
+ function IsInArchive($dbi, $pagename) {
+ global $ArchivePageStore;
 
! $pagename = addslashes($pagename);
! if ($res = pg_exec($dbi['dbc'], "select count(*) from $ArchivePageStore where pagename='$pagename'")) {
! return pg_result($res, 0, "count");
 }
+ return 0;
+ }
 
 
+ function RemovePage($dbi, $pagename) {
+ global $WikiPageStore, $ArchivePageStore;
+ global $WikiLinksStore, $HitCountStore, $WikiScoreStore;
 
! $pagename = addslashes($pagename);
! $msg = gettext ("Cannot delete '%s' from table '%s'");
! $msg .= "<br>\n";
! $msg .= gettext ("PostgreSQL error: %s");
 
+ if (!pg_exec($dbi['dbc'], "delete from $WikiPageStore where pagename='$pagename'"))
+ ExitWiki(sprintf($msg, $pagename, $WikiPageStore, pg_errormessage()));
 
! if (!pg_exec($dbi['dbc'], "delete from $ArchivePageStore where pagename='$pagename'"))
! ExitWiki(sprintf($msg, $pagename, $ArchivePageStore, pg_errormessage()));
 
+ if (!pg_exec($dbi['dbc'], "delete from $WikiLinksStore where frompage='$pagename'"))
+ ExitWiki(sprintf($msg, $pagename, $WikiLinksStore, pg_errormessage()));
 
! if (!pg_exec($dbi['dbc'], "delete from $HitCountStore where pagename='$pagename'"))
! ExitWiki(sprintf($msg, $pagename, $HitCountStore, pg_errormessage()));
! 
! if (!pg_exec($dbi['dbc'], "delete from $WikiScoreStore where pagename='$pagename'"))
! ExitWiki(sprintf($msg, $pagename, $WikiScoreStore, mysql_error()));
 }
 
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /