NAME

Template::Provider::DBI - A class to allow retrieval of templates from a DB

VERSION

This documentation refers to version 0.01.

SYNOPSIS

  use Template::Provider::DBI;
  use DBI;

  my $dbh = DBI->connect('dbi:SQLite:./mydatabase.db');
  my $dbi = Template::Provider::DBI->new({ DBI_DBH => $dbh });

  my $tt = Template->new({ LOAD_TEMPLATES => [ $dbi ] });
  $tt->process('mytemplate.tt', \%vars);

DESCRIPTION

This class adds a provider to Template Toolkit to retrieve templates from a database of your choice. Using the LOAD_TEMPLATES option to Template, multiple providers can be created and used. The DBI provider searches for the given template name, and returns DECLINED when it can't find it, to allow other providers to be checked.

Caching

Caching is supported if DateTime::Format::DBI supports your database. The DateTime formatter/parser is used to convert timestamps out of the database into epoch times for Template Toolkit. Caching is done through the usual Template Provider method of storing the compiled template in a file.

Usage

To use this module, create an instance of it (see new below), and pass it to Template Toolkit's LOAD_TEMPLATES option. If you want to use other template providers as well (even the default file template), then you need to also create instances of them, and pass them to LOAD_TEMPLATES in the order you would like them to be checked.

SUBROUTINES/METHODS

new (constructor)

Parameters: \%options

Many options are supported, most have defaults:

DBI_DBH

A DBI database handle object, as returned by DBI->connect. This argument is optional if you are providing a DBI_DSN argument.

DBI_DSN

A database source name, to be passed to DBI->connect. This will be used to make and store a local database handle. It is optional if a DBI_DBH is provided, if both are provided, an error is thrown.

DBI_TABLE

The name of the database table containing your templates. This will default to 'templates' if not provided.

DBI_TMPLFIELD

The name of the table field containing the actual template data. This will default to 'template' if not provided.

DBI_FILEFIELD

The name of the table field containing the template filename. This will default to 'filename'.

DBI_MODIFIEDFIELD

The name of the table field containing the timestamp or datetime of when the template data was last modified. Defaults to 'modified' if not provided.

DBI_DT

If DateTime::Format::DBI does not support your database, then you can try getting around it by providing an object in the DBI_DT option that has a "parse_timestamp" method, which will be passed the contents of your DBI_MODIFIEDFIELD.

DBI_QUERY

The query used to retrieve the template data from the database will be create simply as:

 SELECT $self->{DBI_TMPLFIELD}, $self->{DBI_MODIFIEDFIELD}$modified FROM $self->{DBI_TABLE} WHERE $self->{DBI_FILEFIELD} = ?;

If you need a more complex query then provide it here, it should return at least the template data field first, then the modify date field next (or NULL), in that order.

DEPENDENCIES

Modules used, version dependencies, core yes/no

DBI

DateTime::Format::DBI

NOTES

DateTime::Format::DBI produces DBI warnings when used with SQLite. It calls DBI::_dbtype_names($dbh); .. Not my fault, honest!

BUGS AND LIMITATIONS

None known currently, please email the author if you find any.

AUTHOR

Jess Robinson <cpan@desert-island.demon.co.uk>