Just use the fields straight from the database.

Signed-off-by: Andrew McMillan <andrew@morphoss.com>
This commit is contained in:
Andrew McMillan 2010-12-27 21:30:34 +13:00
parent c3fab4dcd0
commit b2f35df817

View File

@ -50,7 +50,8 @@ function caldav_get_feed( $request ) {
* used as a .ics download for the whole collection, which is what we do also.
*/
$sql = 'SELECT caldav_data, caldav_type, caldav_data.user_no, caldav_data.dav_name,';
$sql .= ' caldav_data.modified, caldav_data.created';
$sql .= ' caldav_data.modified, caldav_data.created, ';
$sql .= ' summary, dtstart, dtend, calendar_item.description ';
$sql .= ' FROM collection INNER JOIN caldav_data USING(collection_id) INNER JOIN calendar_item USING ( dav_id ) WHERE ';
if ( isset($c->get_includes_subcollections) && $c->get_includes_subcollections ) {
$sql .= ' (collection.dav_name ~ :path_match ';
@ -94,44 +95,37 @@ function caldav_get_feed( $request ) {
$need_zones = array();
$timezones = array();
while( $event = $qry->Fetch() ) {
$ical = new vComponent( $event->caldav_data );
if ( $ical->GetType() != 'VCALENDAR' ) continue;
$event_data = $ical->GetComponents('VTIMEZONE', false);
$type = (count($event_data) ? $event_data[0]->GetType() : 'null');
if ( ($type!= 'VEVENT' && $type != 'VTODO' && $type != 'VJOURNAL') ) {
dbg_error_log( 'feed', 'Skipping peculiar "%s" component in VCALENDAR', $type );
var_dump($ical);
if ( $event->caldav_type != 'VEVENT' && $event->caldav_type != 'VTODO' && $event->caldav_type != 'VJOURNAL') {
dbg_error_log( 'feed', 'Skipping peculiar "%s" component in VCALENDAR', $event->caldav_type );
continue;
}
$is_todo = ($event_data[0]->GetType() == 'VTODO');
$is_todo = ($event->caldav_type == 'VTODO');
$ical = new vComponent( $event->caldav_data );
$event_data = $ical->GetComponents('VTIMEZONE', false);
$item = $feed->createEntry();
$uid = $event_data[0]->GetProperty('UID');
$item->setId( $c->protocol_server_port_script . ConstructURL($event->dav_name).'#'.$uid );
$item->setId( $c->protocol_server_port_script . ConstructURL($event->dav_name) );
$dt_created = new RepeatRuleDateTime( $event->created );
$dt_modified = new RepeatRuleDateTime( $event->modified );
if ( isset($dt_created) ) $item->setDateCreated( $dt_created->epoch() );
if ( isset($dt_modified) ) $item->setDateModified( $dt_modified->epoch() );
$item->setDateCreated( $dt_created->epoch() );
// According to karora, there are cases where we get multiple VEVENTs (overrides). I'll just stick this (1/x) notifier in here until I get to repeat event processing.
$summary = $event_data[0]->GetProperty('SUMMARY');
$p_title = (isset($summary) ? $summary->Value() : translate('No summary')) . ' (1/' . (string)count($event_data) . ')';
$is_todo ? $p_title = "TODO: " . $p_title : $p_title;
$dt_modified = new RepeatRuleDateTime( $event->modified );
$item->setDateModified( $dt_modified->epoch() );
$summary = $event->summary;
$p_title = ($summary != '' ? $summary : translate('No summary'));
if ( $is_todo ) $p_title = "TODO: " . $p_title;
$item->setTitle($p_title);
$content = "";
$dt_start = $event_data[0]->GetProperty('DTSTART');
$dt_start = new RepeatRuleDateTime($event->dtstart);
if ( $dt_start != null ) {
$dt_start = new RepeatRuleDateTime($dt_start);
$p_time = '<strong>' . translate('Time') . ':</strong> ' . strftime(translate('%F %T'), $dt_start->epoch());
$dt_end = $event_data[0]->GetProperty('DTEND');
$dt_end = new RepeatRuleDateTime($event->dtend);
if ( $dt_end != null ) {
$dt_end = new RepeatRuleDateTime($dt_end);
$p_time .= ' - ' . ( $dt_end->AsDate() == $dt_start->AsDate()
? strftime(translate('%T'), $dt_end->epoch())
: strftime(translate('%F %T'), $dt_end->epoch())
@ -164,13 +158,13 @@ function caldav_get_feed( $request ) {
}
}
$p_description = $event_data[0]->GetProperty('DESCRIPTION');
if ( $p_description != null && $p_description->Value() != '' ) {
$p_description = $event->description;
if ( $p_description != '' ) {
$content .= '<br />'
.'<br />'
.'<strong>' . translate('Description') . '</strong>:<br />' . ( nl2br(hyperlink($p_description->Value())) )
.'<strong>' . translate('Description') . '</strong>:<br />' . ( nl2br(hyperlink($p_description)) )
;
$item->setDescription($p_description->Value());
$item->setDescription($p_description);
}
$item->setContent($content);