diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 1a929242e..127f78f4b 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -26,6 +26,8 @@ - Added RFE #327: Select All button to class list in Search asset - Fixed #8984: Weather Asset missing hoverhelp - Fixed #8983: Missing Help in Group Edit screen + - Fixed #8899: Calendar feeds somehow cause edit screen to fail + - Fixed #8891: Calendar still pulls feeds when in trash 7.6.1 - changed: the list of extensions for the export system to pass through diff --git a/lib/WebGUI/Asset/Wobject/Calendar.pm b/lib/WebGUI/Asset/Wobject/Calendar.pm index 191bb3e16..d96413c5e 100644 --- a/lib/WebGUI/Asset/Wobject/Calendar.pm +++ b/lib/WebGUI/Asset/Wobject/Calendar.pm @@ -635,7 +635,8 @@ ENDHTML my $feeds = $self->getFeeds(); $tab->raw(''); diff --git a/lib/WebGUI/Workflow/Activity/CalendarUpdateFeeds.pm b/lib/WebGUI/Workflow/Activity/CalendarUpdateFeeds.pm index e50127bb9..b53b5e4d0 100755 --- a/lib/WebGUI/Workflow/Activity/CalendarUpdateFeeds.pm +++ b/lib/WebGUI/Workflow/Activity/CalendarUpdateFeeds.pm @@ -99,6 +99,16 @@ sub execute { my $sth = $self->session->db->read("select * from Calendar_feeds"); FEED: while (my $feed = $sth->hashRef) { + my $calendar = WebGUI::Asset->newByDynamicClass($self->session,$feed->{assetId}); + if (!defined $calendar) { + $self->session->errorHandler->error("Calendar object failed to instanciate. Did you commit the calendar wobject?"); + next FEED; + } + elsif ( $calendar->get( "state" ) ne "published" ) { + $self->session->errorHandler->info( "Calendar is not state='published', skipping..." ); + next FEED; + } + #!!! KLUDGE - If the feed is on the same server, set a scratch value # I do not know how dangerous this is, so THIS MUST CHANGE! # Preferably: Spectre would add a userSession to the database, @@ -157,6 +167,7 @@ sub execute { my $uid = lc $current_event{uid}[1]; delete $current_event{uid}; $events{$uid} = {%current_event}; + $self->session->log->info( "Found event $uid from feed " . $feed->{feedId} ); %current_event = (); } elsif ($line =~ /^ /) { @@ -358,6 +369,7 @@ sub execute { $currentVersionTag->clearWorking; } my $ttl = $self->getTTL; + $self->session->log->info( "Have to add " . scalar( @$eventList ) . " events..." ); while (@$eventList) { if ($startTime + $ttl < time()) { $instance->setScratch('events', JSON::to_json($eventList)); @@ -378,11 +390,11 @@ sub execute { my $feed = $feedList->{$properties->{feedId}}; # Update event - my ($assetId) = $self->session->db->quickArray("select assetId from Event where feedUid=?",[$id]); + my $assetId = $self->session->db->quickScalar("select assetId from Event where feedUid=?",[$id]); # If this event already exists, update if ($assetId) { - #warn "Updating $assetId\n"; + $self->session->log->info( "Updating existing asset $assetId" ); my $event = WebGUI::Asset->newByDynamicClass($self->session,$assetId); if ($event) { @@ -391,19 +403,9 @@ sub execute { } } else { + $self->session->log->info( "Creating new Event!" ); my $calendar = WebGUI::Asset->newByDynamicClass($self->session,$feed->{assetId}); - if (!defined $calendar) { - $self->session->errorHandler->error("CalendarUpdateFeeds Activity: Calendar object failed to instanciate. Did you commit the calendar wobject?"); - my $newVersionTag = WebGUI::VersionTag->getWorking($self->session, 1); - if ($newVersionTag) { - $newVersionTag->requestCommit; - } - if ($currentVersionTag) { - $currentVersionTag->setWorking; - } - return $self->ERROR; - } - my $event = $calendar->addChild($properties, { skipAutoCommitWorkflows => 1}); + my $event = $calendar->addChild($properties, undef, undef, { skipAutoCommitWorkflows => 1}); $feed->{added}++; if ($recur) { $event->setRecurrence($recur); @@ -413,6 +415,7 @@ sub execute { # TODO: Only update if last-updated field is # greater than the event's lastUpdated property + $self->session->log->info( scalar @$eventList . " events left to load" ); } my $newVersionTag = WebGUI::VersionTag->getWorking($self->session, 1); if ($newVersionTag) {