fixed: iCal feeds don't update properly when events are changed

This commit is contained in:
Graham Knop 2008-04-10 22:15:03 +00:00
parent 99d96a6a82
commit 55dbc180bb
4 changed files with 49 additions and 2 deletions

View file

@ -22,6 +22,7 @@
- fixed: international characters corrupted in titles
- fixed: Users without karma can transfer karma by rating posts
- fixed: gateway macro not usable in links in rich editor
- fixed: iCal feeds don't update properly when events are changed
7.5.9
- fixed: Collaboration System attachments follow site's max size instead of CS's

View file

@ -24,6 +24,7 @@ my $session = start(); # this line required
privatizeVisitor($session);
ucfirstThingyFieldTypes($session);
addEventSequenceNumber($session);
finish($session); # this line required
@ -36,6 +37,15 @@ finish($session); # this line required
# print "DONE!\n" unless $quiet;
#}
#----------------------------------------------------------------------------
sub addEventSequenceNumber {
my $session = shift;
print "\tAdding iCal sequence number to events... " unless $quiet;
$session->db->write('ALTER TABLE Event ADD COLUMN iCalSequenceNumber int');
$session->db->write('UPDATE Event SET iCalSequenceNumber=0');
print "Done.\n" unless $quiet;
}
#----------------------------------------------------------------------------
sub privatizeVisitor {
my $session = shift;

View file

@ -43,6 +43,21 @@ use WebGUI::DateTime;
=cut
sub addRevision {
my $self = shift;
my $newRev = $self->SUPER::addRevision(@_);
my $sequenceNumber = $newRev->get('iCalSequenceNumber');
if (defined $sequenceNumber) {
$sequenceNumber++;
}
else {
$sequenceNumber = 0;
}
$newRev->update({iCalSequenceNumber => $sequenceNumber});
return $newRev;
}
####################################################################
sub definition {
@ -114,6 +129,9 @@ sub definition {
sequenceNumber => {
fieldType => 'hidden',
},
iCalSequenceNumber => {
fieldType => 'hidden',
},
);

View file

@ -1868,11 +1868,29 @@ sub www_ical {
. WebGUI::DateTime->new($self->session, $event->get("creationDate"))->toIcal
. "\r\n";
# SEQUENCE
my $sequenceNumber = $event->get("iCalSequenceNumber");
if (defined $sequenceNumber) {
$ical .= qq{SEQUENCE:}
. $event->get("iCalSequenceNumber")
. "\r\n";
}
# DTSTART
$ical .= qq{DTSTART:}.$event->getIcalStart."\r\n";
my $eventStart = $event->getIcalStart;
$ical .= 'DTSTART';
if ($eventStart !~ /T/) {
$ical .= ';VALUE=DATE';
}
$ical .= ":$eventStart\r\n";
# DTEND
$ical .= qq{DTEND:}.$event->getIcalEnd."\r\n";
my $eventEnd = $event->getIcalEnd;
$ical .= 'DTEND';
if ($eventEnd !~ /T/) {
$ical .= ';VALUE=DATE';
}
$ical .= ":$eventEnd\r\n";
# Summary (the title)
# Wrapped at 75 columns