Clicker was the first of my projects to use a Wiki. And the last time I thought about an "information browser" program. Yet, the phpwiki database was broken on a regular basis. I built
gdbmpatch
and
gdbmshow
helpers to know how I could repair it.
The Clicker project sort of died when a last update to the sourceforge policy made the phpwiki no longer working.
#!/usr/bin/perl
# a wiki file is made of different keys for each page. The content is
# a sort of "bencoded" file with following rules:
# * s::"" encodes a string
# * a:<#items>:{<;-separated content>}
# * i:
# p contains the html cache of the page (compressed)
# available keys are $_cached_html and !hits
# li contains "backlinks" as a simple array (keys are integers, values are page names)
# lo contains "page links", same structure backlinks
# v: contains one of the page's version.
# $author and $author_id tells who wrote the page
# $summary, !mtime tells more about the page.
# $pagetype should be "wikitext" and "%content" is the whole content.
# note that if version i exists, versions 1..i-1 should exist too.
# obsolete versions have an additionnal "_supplanted" key.
use GDBM_File;
use PHP::Serialization qw(serialize unserialize);
tie %file, 'GDBM_File', $ARGV[0], &GDBM_WRCREAT, 0640;
print "tied $ARGV[0]. items: ".keys(%file)."\n";
delete $file{pResources};
untie %file;
#!/usr/bin/perl
# a wiki file is made of different keys for each page. The content is
# a sort of "bencoded" file with following rules:
# * s::"" encodes a string
# * a:<#items>:{<;-separated content>}
# * i:
# p contains the html cache of the page (compressed)
# available keys are $_cached_html and !hits
# li contains "backlinks" as a simple array (keys are integers, values are page names)
# lo contains "page links", same structure backlinks
# v: contains one of the page's version.
# $author and $author_id tells who wrote the page
# $summary, !mtime tells more about the page.
# $pagetype should be "wikitext" and "%content" is the whole content.
# note that if version i exists, versions 1..i-1 should exist too.
# obsolete versions have an additionnal "_supplanted" key.
use GDBM_File;
use PHP::Serialization qw(serialize unserialize);
tie %file, 'GDBM_File', $ARGV[0], &GDBM_WRCREAT, 0640;
print "tied $ARGV[0]. items: ".keys(%file)."\n";
foreach(keys %file) {
next if !/$ARGV[1]/;
print "$_ ==> $file{$_}\n\n- - 8< - -\n";
# delete $file{$_};
}
untie %file;