mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-05-25 02:34:17 +00:00
Just use the fields straight from the database.
Signed-off-by: Andrew McMillan <andrew@morphoss.com>
This commit is contained in:
parent
c3fab4dcd0
commit
b2f35df817
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user