Add listname property.

This commit is contained in:
Martin Kamerbeek 2010-10-13 16:29:29 +02:00
parent 66209f4102
commit 9422d7cd84
2 changed files with 62 additions and 1 deletions

View file

@ -19,6 +19,11 @@ sub definition {
my $i18n = WebGUI::International->new( $session,'AssetAspect_Subscriber' ); my $i18n = WebGUI::International->new( $session,'AssetAspect_Subscriber' );
tie my %properties, 'Tie::IxHash', ( tie my %properties, 'Tie::IxHash', (
listName => {
fieldType => 'text',
label => $i18n->echo("List name"),
tab => 'subscription',
},
subscriptionGroupId => { subscriptionGroupId => {
fieldType => 'subscriptionGroup', fieldType => 'subscriptionGroup',
label => $i18n->get( 'Subscription group' ), label => $i18n->get( 'Subscription group' ),
@ -264,6 +269,45 @@ sub getEmailVars {
return $var; return $var;
} }
#----------------------------------------------------------------------------
sub getAssetByListName {
my $class = shift;
my $session = shift;
my $listName = shift || return;
my $db = $session->db;
my $assetId = $db->quickScalar( 'select assetId from assetAspectSubscriber where listName=? limit 1', [
$listName
] );
return unless $assetId;
my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId );
return $asset;
}
#----------------------------------------------------------------------------
sub processPropertiesFromFormPost {
my $self = shift;
my $session = $self->session;
my $form = $session->form;
my $listName = $form->get('listName');
my $asset = WebGUI::AssetAspect::Subscriber->getAssetByListName( $session, $listName );
my $errors = $self->next::method;
if ( $asset && $asset->getId ne $self->getId ) {
return [
@{ $errors || [] },
"List name $listName is already taken."
];
}
return $errors;
}
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
sub sendSubscriptionConfirmation { sub sendSubscriptionConfirmation {
my $self = shift; my $self = shift;

View file

@ -12,7 +12,7 @@ use strict;
use Pod::Usage; use Pod::Usage;
use Getopt::Long; use Getopt::Long;
use WebGUI::Session; use WebGUI::Session;
use List::MoreUtils qw{ insert_after_string }; use List::MoreUtils qw{ insert_after_string none };
# Get parameters here, including $help # Get parameters here, including $help
GetOptions( GetOptions(
@ -32,9 +32,26 @@ addTemplateColumnToNewsletterCollection( $session );
addRecentColumnToNewsletterCollection( $session ); addRecentColumnToNewsletterCollection( $session );
renamespaceTemplates( $session ); renamespaceTemplates( $session );
addSpecialStateTable( $session ); addSpecialStateTable( $session );
addListNameColumn( $session );
finish($session); finish($session);
#----------------------------------------------------------------------------
sub addListNameColumn {
my $session = shift;
my $db = $session->db;
print "\tAdding list name column for subscribers...";
my @columns = $db->buildArray( 'desc assetAspectSubscriber' );
if ( none { $_ eq 'listName' } @columns ) {
$db->write( 'alter table assetAspectSubscriber add column listName varchar(255)' );
}
print "Done.\n";
}
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
sub installMailableAspectTable { sub installMailableAspectTable {
my $session = shift; my $session = shift;