MyWord
####
my $mod = MyModule->new();
$mod->initialise_stuff("settings");
####
$TPL->load_XMLkeywords([ $mod ], cwd()."/../conf/keywords.xml");
####
sub load_XMLkeywords
{
my $self = shift;
my $modules = shift;
my $filename = shift;
warn "Loading XML Keywords\n" if (qw/DEBUG/);
my $X = XML::Twig->new();
$X->parsefile($filename);
my $root = $X->root();
my @words = $root->children("word");
warn "Element Count ".scalar @words ."\n" if (qw/DEBUG/);
foreach my $word(@words)
{
# Include this word as a keyword.
my $key = $word->text();
$key =~ s/\n//g;
$self->add_keyword($key);
warn "Keyword: ".$key."\n" if (qw/DEBUG/);
# Now we need to evaluate the method or query.
# and create a field set within our T_KEYWORDS reference.
if ($word->att("query"))
{
# In this case this is a singular database query.
my $qq = $word->att("query");
my $sth = $self->dbh()->prepare($qq);
$sth->execute();
my $val = $sth->fetchrow();
$self->{T_KEYWORDS}{$key} = $val;
warn $key." = $val\n" if (qw/DEBUG/);
$X->flush();
} elsif ($word->att("method")) {
my $invoke = $word->att("method");
# find a corresponding class.
foreach my $class(@$modules)
{
my $type = ref $class;
if ($invoke =~ /$type/) {
warn "Found Type $type\n" if (qw/DEBUG/);
$invoke =~ s/$type:://g;
}
my $val;
my $statement = '$val = $class->$invoke';
eval $statement;
$self->{T_KEYWORDS}{$key} = $val;
warn $key." = $val\n" if (qw/DEBUG/);
}
$X->flush();
}
}
}