From 272b2af536aaa7698b5fd0124a041556d406551e Mon Sep 17 00:00:00 2001 From: rurban Date: Wed, 8 Dec 2004 12:55:51 +0000 Subject: [PATCH] support new non-destructive delete_page via generic backend method git-svn-id: svn://svn.code.sf.net/p/phpwiki/code/trunk@4251 96ab9672-09ca-45d6-a79d-3d69d39ca109 --- lib/WikiDB/backend.php | 38 ++++++++++++++++++++++++------ lib/WikiDB/backend/ADODB.php | 19 +++++++++++---- lib/WikiDB/backend/PearDB.php | 30 ++++++++++++++++++++--- lib/WikiDB/backend/PearDB_oci8.php | 3 +-- lib/WikiDB/backend/cvs.php | 7 +++--- lib/WikiDB/backend/dbaBase.php | 7 +++--- 6 files changed, 80 insertions(+), 24 deletions(-) diff --git a/lib/WikiDB/backend.php b/lib/WikiDB/backend.php index 24a330d4b..b6560e89c 100644 --- a/lib/WikiDB/backend.php +++ b/lib/WikiDB/backend.php @@ -1,5 +1,5 @@ _user; + $vdata = array('author' => $user->getId(), + 'author_id' => $user->getAuthenticatedId(), + 'mtime' => $mtime); + + $this->lock(); // critical section: + $version = $this->get_latest_version($pagename); + $this->set_versiondata($pagename, $version+1, $vdata); + $this->set_links($pagename, false); // links are purged. + if (! WIKIDB_NOCACHE_MARKUP) { + // need the hits, perms and LOCKED, otherwise you can reset the perm + // by action=remove and re-create it with default perms + $pagedata = $this->get_pagedata($pagename); + unset($pagedata['_cached_html']); + $this->update_pagedata($pagename, $pagedata); + } + $this->unlock(); + } + + /** + * Delete page (and all it's revisions) from the database. + * + */ + function purge_page($pagename) { trigger_error("virtual", E_USER_ERROR); } - + /** * Delete an old revision of a page. * @@ -248,7 +272,7 @@ class WikiDB_backend function get_links($pagename, $reversed, $include_empty=false, $sortby=false, $limit=false, $exclude=false) { //FIXME: implement simple (but slow) link finder. - die("FIXME"); + die("FIXME get_links"); } /** diff --git a/lib/WikiDB/backend/ADODB.php b/lib/WikiDB/backend/ADODB.php index 1d27310e2..e2351f0ae 100644 --- a/lib/WikiDB/backend/ADODB.php +++ b/lib/WikiDB/backend/ADODB.php @@ -1,5 +1,5 @@ RollbackTrans( ); return false; } - $version = $this->get_latest_version($pagename); $mtime = time(); $user =& $GLOBALS['request']->_user; $meta = array('author' => $user->getId(), 'author_id' => $user->getAuthenticatedId(), 'mtime' => $mtime); $this->lock(array('version','recent','nonempty','page','link')); + $version = $this->get_latest_version($pagename); if ($dbh->Execute("UPDATE $recent_tbl SET latestversion=latestversion+1,latestmajor=latestversion+1,latestminor=NULL WHERE id=$id") and $dbh->Execute("INSERT INTO $version_tbl" . " (id,version,mtime,minor_edit,content,versiondata)" @@ -494,8 +495,10 @@ extends WikiDB_backend '', $this->_serialize($meta))) and $dbh->Execute("DELETE FROM $nonempty_tbl WHERE id=$id") and $this->set_links($pagename, false) - and $dbh->Execute("UPDATE $page_tbl SET pagedata='' WHERE id=$id") // keep hits but delete meta-data - ) + // need to keep perms and LOCKED, otherwise you can reset the perm + // by action=remove and re-create it with default perms + //and $dbh->Execute("UPDATE $page_tbl SET pagedata='' WHERE id=$id") // keep hits but delete meta-data + ) { $this->unlock(array('version','recent','nonempty','page','link')); $dbh->CommitTrans( ); @@ -1363,6 +1366,14 @@ extends WikiDB_backend_search } // $Log: not supported by cvs2svn $ +// Revision 1.62 2004/12/06 19:50:04 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.61 2004/11/30 17:45:53 rurban // exists_links backend implementation // diff --git a/lib/WikiDB/backend/PearDB.php b/lib/WikiDB/backend/PearDB.php index ad6e089bb..f5425d84c 100644 --- a/lib/WikiDB/backend/PearDB.php +++ b/lib/WikiDB/backend/PearDB.php @@ -1,5 +1,5 @@ purge_page($pagename); + $mtime = time(); + $user =& $GLOBALS['request']->_user; + $vdata = array('author' => $user->getId(), + 'author_id' => $user->getAuthenticatedId(), + 'mtime' => $mtime); + + $this->lock(); + $version = $this->get_latest_version($pagename); + $this->set_versiondata($pagename, $version+1, $vdata); + $this->set_links($pagename, false); + $pagedata = get_pagedata($pagename); + $this->update_pagedata($pagename, array('hits' => $pagedata['hits'])); + $this->unlock(); } + */ /** * Delete page completely from the database. @@ -1182,6 +1198,14 @@ extends WikiDB_backend_search } // $Log: not supported by cvs2svn $ +// Revision 1.77 2004/12/06 19:50:04 rurban +// enable action=remove which is undoable and seeable in RecentChanges: ADODB ony for now. +// renamed delete_page to purge_page. +// enable action=edit&version=-1 to force creation of a new version. +// added BABYCART_PATH config +// fixed magiqc in adodb.inc.php +// and some more docs +// // Revision 1.76 2004/11/30 17:45:53 rurban // exists_links backend implementation // diff --git a/lib/WikiDB/backend/PearDB_oci8.php b/lib/WikiDB/backend/PearDB_oci8.php index 83b329f35..f1f6b0261 100644 --- a/lib/WikiDB/backend/PearDB_oci8.php +++ b/lib/WikiDB/backend/PearDB_oci8.php @@ -1,5 +1,5 @@ purge_page($pagename); - } + //function delete_page($pagename) { $this->purge_page($pagename); } /** * This returns false if page was not deleted or could not be deleted diff --git a/lib/WikiDB/backend/dbaBase.php b/lib/WikiDB/backend/dbaBase.php index 9875b70ce..5cfa29905 100644 --- a/lib/WikiDB/backend/dbaBase.php +++ b/lib/WikiDB/backend/dbaBase.php @@ -1,4 +1,4 @@ -purge_page($pagename); - } + //function delete_page($pagename) { $this->purge_page($pagename); } /** * Completely delete page from the database. -- 2.45.0