SQLite
Get it at Path:/cookbook/sqlite.txt
This is a new PageStore class for PmWiki. It stores the wiki pages in a SQLite database. Requires PHP 5.1 or newer with PDO_SQLITE (either compiled in, or shared).
This wiki here is using the recipe for some weeks now.
See full documentation at pmwiki.org: Cookbook:SQLite.
Additional features
- Done. Possibility to search through all the revision history, by Author or IP address (params
user=, days=, ip=
in the searchbox or in a pagelist). Maybe: This could possibly change how RecentChanges pages currently work. - Done. Optimized handling of the page history: it is now possible to have thousands of page revisions per page without hitting the PHP memory limit. The page history is paginated. See SQLite?action=diff.
- Done. Even shorter urls than the Short urls, like in tinyurl: http://galleries.accent.bg/R/I (this will be a recipe based on a unique page-id in the database).
- Done. Different approach to page deletions and restauration - instead of deleting the page, it is renamed and then locked: an admin can still review it, edit it or restore it from within the wiki (no need for FTP).
- Done Ability to call user defined functions at several points of the processing (while writing a page). In the $SQLiteWriteFunctions array you add functions to be called at some point of the processing. (Docs to be written.)
Todo (ASAP)
- Ability to export a page/the whole wiki in pmWiki's format, possibly into "$WorkD/SQLite-export/" directory.
- Check the PmWiki import recipes to see if they work.
Other feasable possibilities (MAYBE)
- It is very easy to extend the database to store and index PageTextVariables and Links and make PageList searches times faster than the built-in ones. Currently, the recipe creates these two additionnal tables but is not filling them or browsing them. (This will be user defined recipes wih the SQLiteWriteFunctions array)
- It will be possible to further extend the database by creating custom tables gathering specified wiki-page data, and to search and retrieve this data even faster. (This will be user defined recipes wih the SQLiteWriteFunctions array)
Sandbox
* {*$page_id} {*$ShortName} * [[{*$ShortPage}]] [[r.a]] [[r.2]] [[r.z]] [[r.zzz]] * {*$ShortURL} |
See also Site.LocalTemplates for the new fmt=#
templates.
List of deleted pages with links to view/edit and see their history, and to undelete them.
(:pagelist list=deleted fmt=#deletedpages order=-time count=-2:) |
|
List of all pages, and number of their revisions (only pages inside the database; we have days=99999
which is more than the oldest edit, so all get shown).
(:pagelist days=99999 fmt=#diffsearch count=10 group=Cookbook,Thumblist2:) |
|
List of pages edited by others (not me) in groups other than Thumblist*.
(:zmarkup:)(:pagelist user=-Petko group=-Thumblist* fmt=#diffsearch count=6:)
Pages (at least once) edited by "simon".
(:zmarkup:)(:pagelist user=simon fmt=#diffsearch:)
Pages (at least once) edited by any of these IP ranges.
(:zmarkup:)(:pagelist ip=202.37.*,203.97* fmt=#diffsearch:)
{=$LastModifiedMajor}
and {=$LastModified}
are sometimes not the same. You could need to use a {=$LastModifiedMajor}
timestamp while publishing an article or a blog entry; subsequent "minor" edits will not change the "major" timestamp.
(:pagelist group=Cookbook fmt=#timemajor order=-time list=normal count=-5:) |
|