Improve robustness.
This commit is contained in:
parent
192cd6afe4
commit
87163f5d0f
3 changed files with 27 additions and 3 deletions
|
|
@ -116,7 +116,10 @@ sub getAsset {
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
|
|
||||||
my $asset = WebGUI::Asset->newByDynamicClass( $session, $self->get('assetId') );
|
my $asset = WebGUI::Asset->newByDynamicClass( $session, $self->get('assetId') );
|
||||||
#### TODO: error checking
|
unless ( $asset ) {
|
||||||
|
$session->log->error( sprintf 'Mailing %s has corrupt assetId %s', $self->getId, $self->get('assetId') );
|
||||||
|
}
|
||||||
|
|
||||||
return $asset;
|
return $asset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -126,7 +129,10 @@ sub getIssue {
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
|
|
||||||
my $issue = WebGUI::Asset->newByDynamicClass( $session, $self->get('issueId') );
|
my $issue = WebGUI::Asset->newByDynamicClass( $session, $self->get('issueId') );
|
||||||
#### TODO: error checking
|
unless ( $issue ) {
|
||||||
|
$session->log->error( sprintf 'Mailing %s has corrupt issueId %s', $self->getId, $self->get('issueId') );
|
||||||
|
}
|
||||||
|
|
||||||
return $issue;
|
return $issue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,10 +96,23 @@ sub www_createMailing {
|
||||||
|
|
||||||
return $session->privilege->insufficient unless $self->canManage;
|
return $session->privilege->insufficient unless $self->canManage;
|
||||||
|
|
||||||
# TODO: test if assetId and issueId are valid.
|
|
||||||
my $assetId = $form->guid( 'assetId' );
|
my $assetId = $form->guid( 'assetId' );
|
||||||
my $issueId = $form->guid( 'issueId' );
|
my $issueId = $form->guid( 'issueId' );
|
||||||
|
|
||||||
|
# Sanity check: does assetId exist?
|
||||||
|
my $asset = WebGUI::Asset->newByDynamicClass( $session, $assetId )
|
||||||
|
|| return "Error: Asset [$assetId] could not be instanciated";
|
||||||
|
|
||||||
|
# Sanity check: is asset mailable?
|
||||||
|
unless ( $asset->isa( 'WebGUI::AssetAspect::Mailable' ) ) {
|
||||||
|
return "Error: Asset [$assetId] is not Mailable";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sanity check: does issue exist?
|
||||||
|
my $issue = WebGUI::Asset->newByDynamicClass( $session, $issueId )
|
||||||
|
|| return "Error: issue [$issueId] for asset [$assetId] could not be instanciated.";
|
||||||
|
|
||||||
|
# All ok, create mailing.
|
||||||
my $mailing = WebGUI::Mailing->create( $session, {
|
my $mailing = WebGUI::Mailing->create( $session, {
|
||||||
assetId => $assetId,
|
assetId => $assetId,
|
||||||
issueId => $issueId,
|
issueId => $issueId,
|
||||||
|
|
|
||||||
|
|
@ -151,6 +151,11 @@ sub send {
|
||||||
|
|
||||||
#### TODO: Error checking
|
#### TODO: Error checking
|
||||||
my $mailing = $self->getMailing;
|
my $mailing = $self->getMailing;
|
||||||
|
unless ( $mailing ) {
|
||||||
|
$session->log->error( 'Cannot send because getMailing doesn\'t return one.' );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
my $configuration = $mailing->get('configuration') || {};
|
my $configuration = $mailing->get('configuration') || {};
|
||||||
my $asset = $mailing->getAsset;
|
my $asset = $mailing->getAsset;
|
||||||
my $content = $asset->processContentAsUser( $mailing->get('issueId'), $self->get('userId'), $configuration );
|
my $content = $asset->processContentAsUser( $mailing->get('issueId'), $self->get('userId'), $configuration );
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue