From 2a7ffdc7fec9de45d64e8b4442857e25fad5ea4e Mon Sep 17 00:00:00 2001 From: JT Smith Date: Wed, 12 Nov 2008 21:17:53 +0000 Subject: [PATCH] a little better handling of scratch variables --- .../Workflow/Activity/GetSyndicatedContent.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/WebGUI/Workflow/Activity/GetSyndicatedContent.pm b/lib/WebGUI/Workflow/Activity/GetSyndicatedContent.pm index adea6acb3..397a92c47 100644 --- a/lib/WebGUI/Workflow/Activity/GetSyndicatedContent.pm +++ b/lib/WebGUI/Workflow/Activity/GetSyndicatedContent.pm @@ -80,11 +80,18 @@ sub execute { # start time to check for timeouts my $time = time(); my $ttl = $self->getTTL; + + # get asset list + my $scratch = $instance->getScratch("syndicatedassets"); + my $assets = []; + if ($scratch) { + $assets = JSON->new->decode($scratch); + } + else { + $assets = $self->session->db->buildArrayRef("select assetId from asset where className like 'WebGUI::Asset::Wobject::SyndicatedContent'"); + } - my $assets = JSON->new->decode($instance->getScratch("syndicatedassets") || '[]'); - if (scalar @$assets < 1) { - $assets = $self->session->db->buildArrayRef("select assetId from asset where className like 'WebGUI::Asset::Wobject::SyndicatedContent'"); - } + # process each syndicated content asset while (my $id = shift(@{$assets})) { # Get RSS data, which will be stored in the cache $log->info("GetSyndicatedContent: Caching for $id"); @@ -107,6 +114,8 @@ sub execute { $instance->setScratch("syndicatedassets", JSON->new->encode($assets)); return $self->WAITING; } + + # if we've completed the list, clean up $instance->deleteScratch("syndicatedassets"); return $self->COMPLETE; }