The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Apache::Wyrd::Site::WidgetIndex - Wrapper class to support Widget Class

SYNOPSIS

Typical BASENAME::WidgetIndex Implementation:

  package BASENAME::WidgetIndex;
  use strict;
  use base qw(Apache::Wyrd::Site::WidgetIndex);
  
  1;

Typical BASENAME::Widget Implementation:

  package BASENAME::Widget;
  use base qw(Apache::Wyrd::Site::Widget);
  use BASENAME::WidgetIndex;
  
  sub index {
    my ($self) = @_;
    return BASENAME::WidgetIndex->new;
  }
  
  1;

DESCRIPTION

Provides a simple interface to a MySQL table for storing data about widgets.

BUGS/CAVEATS

Not the most efficient way to store Widget information, but quick to implement. No BDB backend has been offered for this class, but a Widget's index can be implemented for a non-mysql environment using an instance of the Apache::Wyrd::Services::Index class with the following code:

  package BASENAME::WidgetIndex;
  use base qw(Apache::Wyrd::Services::Index);
  
  sub new {
    my ($class) = @_;
    my $init = {
      file => '/var/www/BASENAME/db/widgetindex.db',
      strict => 1
    };
    return Apache::Wyrd::Services::Index::new($class, $init);
  }
  
  sub update_entry {
    my ($self, $entry) = @_;
    my $changed = 0;
    my $index = $self->read_db;
    my ($id, $id_is_new) = $self->get_id($entry->index_name);
    $index->db_get("\x02\%$id", my $digest);
    if ($digest ne $entry->index_digest) {
      $index = $self->write_db;
      $self->update_key($id, $entry->index_name);
      $self->update_key("\x00%" . $entry->index_name, $id);
      $self->update_key("\x02%" . $id, $entry->index_digest);
      $changed = 1;
    }
    $self->close_db;
    return $changed;
  }

1;

AUTHOR

Barry King <wyrd@nospam.wyrdwright.com>

SEE ALSO

Apache::Wyrd

General-purpose HTML-embeddable perl object

Apache::Wyrd::Site::Widget

Base object for Widgets - semi-independent objects which enrich the content of a page

LICENSE

Copyright 2002-2007 Wyrdwright, Inc. and licensed under the GNU GPL.

See LICENSE under the documentation for Apache::Wyrd.