Install better error handling code into RequestApprovalForVersionTag. Do not generate leading commas in workflow instance scratch data.

This commit is contained in:
Colin Kuskie 2010-05-11 16:20:47 -07:00
parent 503a378756
commit 55d55b4eee
3 changed files with 45 additions and 15 deletions

View file

@ -12,6 +12,7 @@
- fixed #11564: Shop: Cart does not require a state field in the address
- fixed #11562: Missing perl modules in gotcha
- fixed #11565: Can't clear cache on plainblack.com
- fixed #11540: Pending version tags are not completed on approval under certain conditions
7.9.4
- We're shipping underscore.js now for its suite of extremely handy utility

View file

@ -22,6 +22,7 @@ use Getopt::Long;
use WebGUI::Session;
use WebGUI::Storage;
use WebGUI::Asset;
use WebGUI::Workflow::Instance;
my $toVersion = '7.9.5';
@ -32,6 +33,7 @@ my $session = start(); # this line required
# upgrade functions go here
modifySortItems( $session );
fixRequestForApprovalScratch($session);
finish($session); # this line required
@ -44,6 +46,22 @@ finish($session); # this line required
# print "DONE!\n" unless $quiet;
#}
#----------------------------------------------------------------------------
# Describe what our function does
sub fixRequestForApprovalScratch {
my $session = shift;
print "\tCorrect RequestApprovalForVersionTag workflow instance data with leading commas... " unless $quiet;
# and here's our code
my $instances = WebGUI::Workflow::Instance->getAllInstances($session);
INSTANCE: foreach my $instance (@{ $instances }) {
my $messageId = $instance->getScratch('messageId');
next INSTANCE unless $messageId;
$messageId =~ s/^,//;
$instance->setScratch('messageId', $messageId);
}
print "DONE!\n" unless $quiet;
}
#----------------------------------------------------------------------------
# Changes sortItems to a SelectBox
sub modifySortItems {
@ -56,7 +74,7 @@ sub modifySortItems {
my $type = WebGUI::Form::SelectBox->getDatabaseFieldType;
$session->db->write("ALTER TABLE SyndicatedContent MODIFY sortItems $type");
print "\t\tConverting old values...\n" unless $quiet;
print "\t\tConverting old values..." unless $quiet;
$session->db->write(q{
UPDATE SyndicatedContent
SET sortItems = 'none'

View file

@ -208,7 +208,9 @@ sub execute {
# Tag is approved
elsif ( $instance->getScratch("status") eq "approved" ) {
# Clean up after ourselves
$self->setMessageCompleted( $instance );
if (! $self->setMessageCompleted( $instance ) ) {
return $self->ERROR;
}
$instance->deleteScratch( "status" );
# We're done here
@ -278,7 +280,7 @@ sub sendMessage {
groupId => $groupId,
status => 'pending',
});
$messageIds = join ",", $messageIds, $message->getId;
$messageIds = $messageIds ? join(",", $messageIds, $message->getId) : $message->getId;
}
# Keep track of message Ids so we can complete them
@ -335,23 +337,32 @@ workflow instance we're part of.
=cut
sub setMessageCompleted {
my $self = shift;
my $instance = shift;
my $inbox = WebGUI::Inbox->new( $self->session );
my $self = shift;
my $instance = shift;
my $inbox = WebGUI::Inbox->new( $self->session );
# Set all messages to completed
for my $messageId ( split /,/, $instance->getScratch("messageId") ) {
if($messageId){
my $message = $inbox->getMessage( $messageId );
$message->setCompleted if $message;
for my $messageId ( split /,/, $instance->getScratch("messageId") ) {
if ($messageId) {
my $message = $inbox->getMessage($messageId);
if ($message) {
$message->setCompleted;
}
else {
$self->session->log->error("Could not get inbox message for messageId: $messageId");
return 0;
}
}
}
else {
$self->session->log->error("Malformed workflow instance scratch variable messageId for instance: ". $instance->getId);
return 0;
}
} ## end for my $messageId ( split...)
$instance->deleteScratch( "messageId" );
return;
}
$instance->deleteScratch("messageId");
return 1;
} ## end sub setMessageCompleted
1;