fixed 8899 and 8891: Calendar feeds cause edit screen to fail and Calendar still pull feeds from the trash
This commit is contained in:
parent
52a21ff854
commit
18585200a7
3 changed files with 21 additions and 15 deletions
|
|
@ -635,7 +635,8 @@ ENDHTML
|
|||
my $feeds = $self->getFeeds();
|
||||
$tab->raw('<script type="text/javascript">'."\n");
|
||||
for my $feedId (keys %$feeds) {
|
||||
$tab->raw("FeedsManager.addFeed('feeds','".$feedId."',".encode_json($feeds->{$feedId}).");\n");
|
||||
my %row = %{ $feeds->{ $feedId } };
|
||||
$tab->raw("FeedsManager.addFeed('feeds','".$feedId."',".JSON->new->encode( \%row ).");\n");
|
||||
}
|
||||
$tab->raw('</script>');
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue