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.