[pmwiki-users] PageLists of database contents

Ben Stallings Ben at InterdependentWeb.com
Wed Oct 4 15:37:20 CDT 2006


Patrick R. Michaud wrote:
> 1.  Create a custom PageStore object that converts database records
> into (virtual) pages.  In other words, when some function calls
> ReadPage('DataBase.RecordId'), the custom PageStore object should
> return the equivalent of a page where $page['text'] is:
> 
>     (:Field1:Value:)
>     (:Field2:Value:)
>     (:Field3:Value:)
> 
> Once you have that, then (:pagelist:) should be able to do a
> variety of searches and sorts based on the records in the database,
> and use custom pagelist templates for the output.  (Hint:  the
> PageStore object will need to implement the read(), ls(), and 
> exists() methods.)

Success!  I've got a new DataStore object (based on PageStore) that 
supports the read, ls, and exists methods, and I've added it to the 
$WikiLibDirs, so that if you go to 
http://www.workscited.net/ben/Source/Source you will see (after a long 
delay) a pagelist of records in the `source` table of the WorksCited.net 
database.  Note that this page (Source/Source) does not exist; it's 
being generated by the DataStore object.

If you click one of the "pages" in that list, you won't see anything 
because there's not yet a template to display the data, but if you 
*edit* one of them, for example 
http://www.workscited.net/ben/Source/12?action=edit , you'll see that 
the data fields are defined as Pm specified above.  (Don't try to save 
changes, though; I haven't gotten to that yet.)

So that much is good.  However, I could use some help with a few 
things... sorry to be pesky.

First and most obviously, this is extremely slow and inefficient on even 
a modest-size database.  The ls() method generates a list of every 
single record in every table of the database, and then PageList calls 
the read() method to individually query each record and gloms its fields 
together into a big block of text before attempting to parse the text 
back up again into page text variables.  There's gotta be a better way, 
but I'm not sure what it is... I want to be able to use PageList's 
powerful searching syntax and templates, but without the overhead of 
converting every single record into text and back again.  Suggestions?

Second, if you try searching the Source group at 
http://www.workscited.net/ben/Site/Search , it doesn't appear to search 
page text variables... which was the whole point of putting the records 
in that format.  For example, search for $:firstname=Will.  No dice, 
although you can see by clicking the editing link above that record 12's 
firstname is Will.  I'm using 2.0.0-beta-9.  Ideas?

Thanks again!!  I really believe this will be worth the trouble... --Ben S.




More information about the pmwiki-users mailing list