From e466d72058b2543bec69c77d2730828acada38a1 Mon Sep 17 00:00:00 2001 From: Mario Vavti Date: Sun, 26 May 2019 18:05:11 +0200 Subject: adjust birthday handling according to community decision and slightly change display of allday event items --- Zotlabs/Lib/Libzot.php | 2 +- Zotlabs/Module/Channel_calendar.php | 17 ----------------- include/datetime.php | 3 ++- include/event.php | 24 ++++++++++++++++++++---- include/features.php | 9 --------- include/zot.php | 2 +- view/tpl/event_item_header.tpl | 6 ++++++ 7 files changed, 30 insertions(+), 33 deletions(-) diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php index 9bf987027..976ed22fa 100644 --- a/Zotlabs/Lib/Libzot.php +++ b/Zotlabs/Lib/Libzot.php @@ -2766,7 +2766,7 @@ class Libzot { $profile['description'] = $p[0]['pdesc']; $profile['birthday'] = $p[0]['dob']; - if(($profile['birthday'] != '0000-00-00') && (($bd = z_birthday($p[0]['dob'],$e['channel_timezone'])) !== '')) + if(($profile['birthday'] != '0000-00-00') && (($bd = z_birthday($p[0]['dob'],'UTC')) !== '')) $profile['next_birthday'] = $bd; if($age = age($p[0]['dob'],$e['channel_timezone'],'')) diff --git a/Zotlabs/Module/Channel_calendar.php b/Zotlabs/Module/Channel_calendar.php index 44fe261e8..13f879d84 100644 --- a/Zotlabs/Module/Channel_calendar.php +++ b/Zotlabs/Module/Channel_calendar.php @@ -345,20 +345,11 @@ class Channel_calendar extends \Zotlabs\Web\Controller { if(! $tz) $tz = 'UTC'; - if($rr['etype'] === 'birthday') { - $rr['adjust'] = 1; //intval(feature_enabled(local_channel(), 'smart_birthdays')); - } - $start = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtstart'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtstart'], 'c')); if ($rr['nofinish']){ $end = null; } else { $end = (($rr['adjust']) ? datetime_convert($tz, date_default_timezone_get(), $rr['dtend'], 'c') : datetime_convert('UTC', 'UTC', $rr['dtend'], 'c')); - - // give a fake end to birthdays so they get crammed into a - // single day on the calendar - if($rr['etype'] === 'birthday') - $end = null; } $catsenabled = feature_enabled(local_channel(),'categories'); @@ -374,14 +365,6 @@ class Channel_calendar extends \Zotlabs\Web\Controller { } } - //$allDay = false; - - // allDay event rules - //if(!strpos($start, 'T') && !strpos($end, 'T')) - // $allDay = true; - //if(strpos($start, 'T00:00:00') && strpos($end, 'T00:00:00')) - // $allDay = true; - $edit = ((local_channel() && $rr['author_xchan'] == get_observer_hash()) ? array(z_root().'/events/'.$rr['event_hash'].'?expandform=1',t('Edit event'),'','') : false); $drop = array(z_root().'/events/drop/'.$rr['event_hash'],t('Delete event'),'',''); diff --git a/include/datetime.php b/include/datetime.php index d049fc7c5..ef0927ea4 100644 --- a/include/datetime.php +++ b/include/datetime.php @@ -516,13 +516,14 @@ function update_birthdays() { 'event_xchan' => $rr['xchan_hash'], 'dtstart' => datetime_convert('UTC', 'UTC', $rr['abook_dob']), 'dtend' => datetime_convert('UTC', 'UTC', $rr['abook_dob'] . ' + 1 day '), - 'adjust' => 1, //intval(feature_enabled($rr['abook_channel'],'smart_birthdays')), + 'adjust' => 0, 'summary' => sprintf( t('%1$s\'s birthday'), $rr['xchan_name']), 'description' => sprintf( t('Happy Birthday %1$s'), '[zrl=' . $rr['xchan_url'] . ']' . $rr['xchan_name'] . '[/zrl]'), 'etype' => 'birthday', ]; $z = event_store_event($ev); + if ($z) { $item_id = event_store_item($ev, $z); q("update abook set abook_dob = '%s' where abook_id = %d", diff --git a/include/event.php b/include/event.php index eb8731f46..ca08a67b5 100644 --- a/include/event.php +++ b/include/event.php @@ -76,18 +76,34 @@ function format_event_obj($jobject) { if(array_key_exists('description', $object)) { $tz = (($object['timezone']) ? $object['timezone'] : 'UTC'); + $allday = (($object['adjust']) ? false : true); - $bd_format = t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8:01 AM + $dtstart = new DateTime($object['dtstart']); + $dtend = new DateTime($object['dtend']); + $dtdiff = $dtstart->diff($dtend); + + if($allday && ($dtdiff->days < 2)) + $oneday = true; + + if($allday && !$oneday) { + // Subtract one day from the end date so we can use the "first day - last day" format for display. + $dtend->modify('-1 day'); + $object['dtend'] = datetime_convert('UTC', 'UTC', $dtend->format('Y-m-d H:i:s')); + } + + $bd_format = (($allday) ? t('l F d, Y') : t('l F d, Y \@ g:i A')); // Friday January 18, 2011 @ 8:01 AM or Friday January 18, 2011 for allday events $event['header'] = replace_macros(get_markup_template('event_item_header.tpl'),array( '$title' => zidify_links(smilies(bbcode($object['title']))), - '$dtstart_label' => t('Starts:'), + '$dtstart_label' => t('Start:'), '$dtstart_title' => datetime_convert($tz, date_default_timezone_get(), $object['dtstart'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )), '$dtstart_dt' => (($object['adjust']) ? day_translate(datetime_convert($tz, date_default_timezone_get(), $object['dtstart'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtstart'] , $bd_format))), '$finish' => (($object['nofinish']) ? false : true), - '$dtend_label' => t('Finishes:'), + '$dtend_label' => t('End:'), '$dtend_title' => datetime_convert($tz, date_default_timezone_get(), $object['dtend'], (($object['adjust']) ? ATOM_TIME : 'Y-m-d\TH:i:s' )), - '$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert($tz, date_default_timezone_get(), $object['dtend'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtend'] , $bd_format ))) + '$dtend_dt' => (($object['adjust']) ? day_translate(datetime_convert($tz, date_default_timezone_get(), $object['dtend'] , $bd_format )) : day_translate(datetime_convert('UTC', 'UTC', $object['dtend'] , $bd_format ))), + '$allday' => $allday, + '$oneday' => $oneday )); $event['content'] = replace_macros(get_markup_template('event_item_content.tpl'),array( diff --git a/include/features.php b/include/features.php index 5841395c5..9528d3418 100644 --- a/include/features.php +++ b/include/features.php @@ -95,16 +95,7 @@ function get_features($filtered = true, $level = (-1)) { t('Allow event creation in timezones other than your own.'), false, get_config('feature_lock','event_tz_select'), - ], -/* - [ - 'smart_birthdays', - t('Smart Birthdays'), - t('Make birthday events timezone aware in case your friends are scattered across the planet.'), - false, - get_config('feature_lock','smart_birthdays'), ] -*/ ], diff --git a/include/zot.php b/include/zot.php index b99eeb1ec..a37b7cdb5 100644 --- a/include/zot.php +++ b/include/zot.php @@ -4430,7 +4430,7 @@ function zotinfo($arr) { $profile['description'] = $p[0]['pdesc']; $profile['birthday'] = $p[0]['dob']; - if(($profile['birthday'] != '0000-00-00') && (($bd = z_birthday($p[0]['dob'],$e['channel_timezone'])) !== '')) + if(($profile['birthday'] != '0000-00-00') && (($bd = z_birthday($p[0]['dob'],'UTC')) !== '')) $profile['next_birthday'] = $bd; if($age = age($p[0]['dob'],$e['channel_timezone'],'')) diff --git a/view/tpl/event_item_header.tpl b/view/tpl/event_item_header.tpl index 6247aaf6f..ed46c304f 100755 --- a/view/tpl/event_item_header.tpl +++ b/view/tpl/event_item_header.tpl @@ -1,6 +1,11 @@

 {{$title}}

+{{if $oneday && $allday}} +{{$dtstart_dt}} +{{else if $allday}} +{{$dtstart_dt}}{{$dtend_dt}} +{{else}}
{{$dtstart_label}} {{$dtstart_dt}}
@@ -9,3 +14,4 @@ {{$dtend_label}} {{$dtend_dt}} {{/if}} +{{/if}} -- cgit v1.2.3