Add base classes for mailing instances.

This commit is contained in:
Martin Kamerbeek 2010-05-06 13:52:49 +02:00
parent 63798b98f1
commit 6aa9df2170
3 changed files with 119 additions and 2 deletions

47
lib/WebGUI/Mailing.pm Normal file
View file

@ -0,0 +1,47 @@
package WebGUI::Mailing;
use strict;
use warnings;
use base 'WebGUI::Crud';
sub crud_definition {
my $class = shift;
my $session = shift;
my $definition = $class->SUPER::crud_definition( $session );
$definition->{ tableName } = 'WGMailing';
$definition->{ tableKey } = 'mailingId';
$definition->{ sequenceKey } = 'issueId';
my %properties = (
assetId => {
fieldType => 'guid',
},
issueId => {
fieldType => 'guid',
},
configuration => {
fieldType => 'textarea',
},
sendDate => {
fieldType => 'dateTime',
},
active => {
fieldType => 'yesNo',
defaultValue => 0,
},
);
$definition->{ properties } = {
%{ $definition->{ properties } || {} },
%properties,
};
return $definition;
}
1;

View file

@ -0,0 +1,52 @@
package WebGUI::Mailing::Email;
use strict;
use warnings;
use base 'WebGUI::Crud';
sub crud_definition {
my $class = shift;
my $session = shift;
my $definition = $class->SUPER::crud_definition( $session );
$definition->{ tableName } = 'WGMailing_queue';
$definition->{ tableKey } = 'mailId';
$definition->{ sequenceKey } = 'mailingId';
my %properties = (
mailingId => {
fieldType => 'guid',
},
userId => {
fieldType => 'guid',
},
recipientEmail => {
fieldType => 'email',
defaultValue => undef,
},
status => {
fieldType => 'text',
defaultValue => 'queued', # Allowed are: 'queued', 'sent', 'error'
},
errorMessage => {
fieldType => 'text',
defaultValue => undef,
},
isTest => {
fieldType => 'yesNo',
defaultValue => 1, # For safety: explicitly turn this off to send real emails
},
);
$definition->{ properties } = {
%{ $definition->{ properties } || {} },
%properties,
};
return $definition;
}
1;

View file

@ -22,6 +22,7 @@ my $session = start( $webguiRoot, $configFile );
installMailableAspectTable( $session );
installNewsletterCollection( $session );
installMailingTables( $session );
finish($session);
@ -32,8 +33,9 @@ sub installMailableAspectTable {
$session->db->write(<<EOSQL);
create table if not exists assetAspectMailable (
assetId char(22) binary not null,
revisionDate bigint(20) not null,
assetId char(22) binary not null,
revisionDate bigint(20) not null,
mailStyleTemplateId char(22) binary not null,
primary key( assetId, revisionDate )
);
EOSQL
@ -64,6 +66,22 @@ EOSQL2
print "Done.\n";
}
#----------------------------------------------------------------------------
sub installMailingTables {
my $session = shift;
print "\tInstalling Mailing table...";
use WebGUI::Mailing;
use WebGUI::Mailing::Email;
WebGUI::Mailing->crud_createOrUpdateTable( $session );
WebGUI::Mailing::Email->crud_createOrUpdateTable( $session );
print "Done\n";
}
#----------------------------------------------------------------------------
sub start {
my $webguiRoot = shift;