IMPORTANT NOTE WHEN UPGRADING FROM PRE-0.20 VERSIONS

The database schema changed between versions 0.14 and 0.15, and again between versions 0.16 and 0.20 - see the 'Changes' file for details. This is really kinda important, please do check this out or your code will die when it tries to use any existing databases.

SIGNIFICANT RECENT CHANGES

0.20 22 February 2003 Added simple metadata support. Another database schema change; see 'Changes' file.

0.15 5 January 2003 Implemented backlinks. Database schema change; see 'Changes' file.

0.11 31 December 2002 Changes suggested by blair christensen, to allow alternate formatters.

0.10 19 December 2002 Added a Search::InvertedIndex backend; now you can do searches without the need for MySQL.

0.04 17 November 2002 Added a DBD::SQLite storage backend (thanks to blair christensen for a patch that makes up part of this).

0.01 28 October 2002 Initial release.

SYNOPSIS # Set up a wiki object with an SQLite storage backend, and an # inverted index/DB_File search backend. This store/search # combination can be used on systems with no access to an actual # database server.

my $store     = CGI::Wiki::Store::SQLite->new(
    dbname => "/home/wiki/store.db" );
my $indexdb   = Search::InvertedIndex::DB::DB_File_SplitHash->new(
    -map_name  => "/home/wiki/indexes.db",
    -lock_mode => "EX" );
my $search    = CGI::Wiki::Search::SII->new(
    indexdb => $indexdb );

my $wiki      = CGI::Wiki->new( store     => $store,
                                search    => $search );

MAJOR METHODS

write_node
      $wiki->write_node($node_name, $content, $checksum);
      $wiki->write_node(
          "Calthorpe Arms",
          "A rather nice pub on Gray's Inn Road",
          $checksum,
          { category => [ "Pub", "Pub Food", "Bloomsbury" ] }
      );

format
      my $cooked = $wiki->format($raw);

delete_node
      $wiki->delete_node($node_name);

list_all_nodes
      my @node_names = $wiki->list_all_nodes;

list_backlinks
      my @links_to_me = $wiki->list_backlinks($node_name);

list_nodes_by_metadata
      my @pubs = $wiki->list_nodes_by_metadata(
          metadata_type  => "category",
          metadata_value => "Pub" );

list_recent_changes
      my @last_week_edits  = $wiki->list_recent_changes( days => 7 );
      my @last_ten_changes = $wiki->list_recent_changes(
                                              last_n_changes => 10 );

node_exists
      print "Got wombats" if $wiki->node_exists("Wombats");

retrieve_node
      my $homepage_content = $wiki->retrieve_node("Home Page");

      my %node_data = $wiki->retrieve_node( $node_name );
      print "Last Modified:    $node_data{last_modified}\n";
      print "Current Version:  $node_data{version}\n";
      print "Current Checksum: $node_data{checksum}\n";
      print "Current Content:  $node_data{content}\n";
      print "Categories:       "
          . join(", ", @{$node_data{metadata}{category}}) . "\n";

verify_checksum
      my $as_i_left_it = $wiki->verify_checksum( $node_name, $checksum );

search_nodes
      my @nodes = $search->nodes( "camel" );