From 9935e8e71180f99d57e52f0e3c0ca99c0836219a Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 3 Oct 2021 13:21:17 -0400 Subject: [PATCH] Remove event.adjust field - It was confusing and introduced complexity that wasn't worth the unclear gain --- database.sql | 5 +- doc/API-Entities.md | 6 -- doc/database/db_event.md | 1 - doc/events.md | 5 - mod/cal.php | 11 +- mod/events.php | 52 +++------ mod/ping.php | 6 +- src/Content/Text/BBCode.php | 1 - src/Model/Event.php | 111 +++++--------------- src/Model/Item.php | 4 +- src/Model/Profile.php | 14 +-- src/Module/Api/Friendica/Events/Index.php | 2 +- src/Protocol/ActivityPub/Processor.php | 1 - src/Protocol/ActivityPub/Receiver.php | 1 - src/Protocol/ActivityPub/Transmitter.php | 7 +- src/Protocol/Diaspora.php | 7 +- static/dbstructure.config.php | 3 +- static/dbview.config.php | 2 - view/templates/event_form.tpl | 2 - view/theme/duepuntozero/style.css | 10 +- view/theme/frio/templates/event_form.tpl | 3 - view/theme/quattro/templates/event_form.tpl | 2 - view/theme/smoothly/style.css | 3 - view/theme/vier/templates/event_form.tpl | 2 - 24 files changed, 66 insertions(+), 195 deletions(-) diff --git a/database.sql b/database.sql index 3e7e65e72..e91c8b2f6 100644 --- a/database.sql +++ b/database.sql @@ -1,6 +1,6 @@ -- ------------------------------------------ -- Friendica 2021.12-dev (Siberian Iris) --- DB_UPDATE_VERSION 1435 +-- DB_UPDATE_VERSION 1436 -- ------------------------------------------ @@ -565,7 +565,6 @@ CREATE TABLE IF NOT EXISTS `event` ( `location` text COMMENT 'event location', `type` varchar(20) NOT NULL DEFAULT '' COMMENT 'event or birthday', `nofinish` boolean NOT NULL DEFAULT '0' COMMENT 'if event does have no end this is 1', - `adjust` boolean NOT NULL DEFAULT '1' COMMENT 'adjust to timezone of the recipient (0 or 1)', `ignore` boolean NOT NULL DEFAULT '0' COMMENT '0 or 1', `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'', `allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', @@ -1699,7 +1698,6 @@ CREATE VIEW `post-user-view` AS SELECT `event`.`location` AS `event-location`, `event`.`type` AS `event-type`, `event`.`nofinish` AS `event-nofinish`, - `event`.`adjust` AS `event-adjust`, `event`.`ignore` AS `event-ignore`, `diaspora-interaction`.`interaction` AS `signed_text`, `parent-item-uri`.`guid` AS `parent-guid`, @@ -1860,7 +1858,6 @@ CREATE VIEW `post-thread-user-view` AS SELECT `event`.`location` AS `event-location`, `event`.`type` AS `event-type`, `event`.`nofinish` AS `event-nofinish`, - `event`.`adjust` AS `event-adjust`, `event`.`ignore` AS `event-ignore`, `diaspora-interaction`.`interaction` AS `signed_text`, `parent-item-uri`.`guid` AS `parent-guid`, diff --git a/doc/API-Entities.md b/doc/API-Entities.md index e369cb4ff..6a851014e 100644 --- a/doc/API-Entities.md +++ b/doc/API-Entities.md @@ -439,12 +439,6 @@ Ex: Wed May 23 06:01:13 +0000 2007 Optional. Location. - -adjust -Boolean -??? - - ignore Boolean diff --git a/doc/database/db_event.md b/doc/database/db_event.md index 5550d1a1a..ff89b6ba2 100644 --- a/doc/database/db_event.md +++ b/doc/database/db_event.md @@ -23,7 +23,6 @@ Fields | location | event location | text | YES | | NULL | | | type | event or birthday | varchar(20) | NO | | | | | nofinish | if event does have no end this is 1 | boolean | NO | | 0 | | -| adjust | adjust to timezone of the recipient (0 or 1) | boolean | NO | | 1 | | | ignore | 0 or 1 | boolean | NO | | 0 | | | allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | | | allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | | diff --git a/doc/events.md b/doc/events.md index be0040d29..58a3b3326 100644 --- a/doc/events.md +++ b/doc/events.md @@ -36,11 +36,6 @@ The finishing date/time has to be after the beginning date/time of the event. But you don't have to specify it. If the event is open-ended or the finishing date/time does not matter, just select the box below the two first fields. -* **Adjust for viewer timezone**: If you check this box, the beginning and finishing times will automatically converted to the local time according to the timezone setting - -This might prevent early birthday wishes, or the panic that you have forgotten the birthday from your buddy at the other side of the world. -And similar events. - * **Title**: a title for the event * **Description**: a longer description for the event * **Location**: the location the event will took place diff --git a/mod/cal.php b/mod/cal.php index ac12d69b9..75fe87e74 100644 --- a/mod/cal.php +++ b/mod/cal.php @@ -185,16 +185,11 @@ function cal_content(App $a) $start = DateTimeFormat::utc($start); $finish = DateTimeFormat::utc($finish); - $adjust_start = DateTimeFormat::local($start); - $adjust_finish = DateTimeFormat::local($finish); - // put the event parametes in an array so we can better transmit them $event_params = [ 'event_id' => intval($_GET['id'] ?? 0), 'start' => $start, 'finish' => $finish, - 'adjust_start' => $adjust_start, - 'adjust_finish' => $adjust_finish, 'ignore' => $ignored, ]; @@ -210,7 +205,7 @@ function cal_content(App $a) if (DBA::isResult($r)) { $r = Event::sortByDate($r); foreach ($r as $rr) { - $j = $rr['adjust'] ? DateTimeFormat::local($rr['start'], 'j') : DateTimeFormat::utc($rr['start'], 'j'); + $j = DateTimeFormat::local($rr['start'], 'j'); if (empty($links[$j])) { $links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j; } @@ -229,11 +224,7 @@ function cal_content(App $a) if (!empty($_GET['id'])) { $tpl = Renderer::getMarkupTemplate("event.tpl"); } else { -// if (DI::config()->get('experimentals','new_calendar')==1){ $tpl = Renderer::getMarkupTemplate("events_js.tpl"); -// } else { -// $tpl = Renderer::getMarkupTemplate("events.tpl"); -// } } // Get rid of dashes in key names, Smarty3 can't handle them diff --git a/mod/events.php b/mod/events.php index 75c87df44..6ce322a4d 100644 --- a/mod/events.php +++ b/mod/events.php @@ -80,7 +80,6 @@ function events_post(App $a) $start_text = Strings::escapeHtml($_REQUEST['start_text'] ?? ''); $finish_text = Strings::escapeHtml($_REQUEST['finish_text'] ?? ''); - $adjust = intval($_POST['adjust'] ?? 0); $nofinish = intval($_POST['nofinish'] ?? 0); $share = intval($_POST['share'] ?? 0); @@ -99,16 +98,9 @@ function events_post(App $a) $finish = $finish_text; } - if ($adjust) { - $start = DateTimeFormat::convert($start, 'UTC', $a->getTimeZone()); - if (!$nofinish) { - $finish = DateTimeFormat::convert($finish, 'UTC', $a->getTimeZone()); - } - } else { - $start = DateTimeFormat::utc($start); - if (!$nofinish) { - $finish = DateTimeFormat::utc($finish); - } + $start = DateTimeFormat::convert($start, 'UTC', $a->getTimeZone()); + if (!$nofinish) { + $finish = DateTimeFormat::convert($finish, 'UTC', $a->getTimeZone()); } // Don't allow the event to finish before it begins. @@ -127,7 +119,6 @@ function events_post(App $a) 'location' => $location, 'start' => $start_text, 'finish' => $finish_text, - 'adjust' => $adjust, 'nofinish' => $nofinish, ]; @@ -196,7 +187,6 @@ function events_post(App $a) $datarray['desc'] = $desc; $datarray['location'] = $location; $datarray['type'] = $type; - $datarray['adjust'] = $adjust; $datarray['nofinish'] = $nofinish; $datarray['uid'] = $uid; $datarray['cid'] = $cid; @@ -343,16 +333,12 @@ function events_content(App $a) $start = DateTimeFormat::utc($start); $finish = DateTimeFormat::utc($finish); - $adjust_start = DateTimeFormat::local($start); - $adjust_finish = DateTimeFormat::local($finish); // put the event parametes in an array so we can better transmit them $event_params = [ 'event_id' => intval($_GET['id'] ?? 0), 'start' => $start, 'finish' => $finish, - 'adjust_start' => $adjust_start, - 'adjust_finish' => $adjust_finish, 'ignore' => $ignored, ]; @@ -368,7 +354,7 @@ function events_content(App $a) if (DBA::isResult($r)) { $r = Event::sortByDate($r); foreach ($r as $rr) { - $j = $rr['adjust'] ? DateTimeFormat::local($rr['start'], 'j') : DateTimeFormat::utc($rr['start'], 'j'); + $j = DateTimeFormat::local($rr['start'], 'j'); if (empty($links[$j])) { $links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j; } @@ -457,7 +443,6 @@ function events_content(App $a) // In case of an error the browser is redirected back here, with these parameters filled in with the previous values if (!empty($_REQUEST['nofinish'])) {$orig_event['nofinish'] = $_REQUEST['nofinish'];} - if (!empty($_REQUEST['adjust'])) {$orig_event['adjust'] = $_REQUEST['adjust'];} if (!empty($_REQUEST['summary'])) {$orig_event['summary'] = $_REQUEST['summary'];} if (!empty($_REQUEST['desc'])) {$orig_event['desc'] = $_REQUEST['desc'];} if (!empty($_REQUEST['location'])) {$orig_event['location'] = $_REQUEST['location'];} @@ -465,7 +450,6 @@ function events_content(App $a) if (!empty($_REQUEST['finish'])) {$orig_event['finish'] = $_REQUEST['finish'];} $n_checked = (!empty($orig_event['nofinish']) ? ' checked="checked" ' : ''); - $a_checked = (!empty($orig_event['adjust']) ? ' checked="checked" ' : ''); $t_orig = $orig_event['summary'] ?? ''; $d_orig = $orig_event['desc'] ?? ''; @@ -481,24 +465,19 @@ function events_content(App $a) $sdt = $orig_event['start'] ?? 'now'; $fdt = $orig_event['finish'] ?? 'now'; - $tz = $a->getTimeZone(); - if (isset($orig_event['adjust'])) { - $tz = ($orig_event['adjust'] ? $a->getTimeZone() : 'UTC'); - } + $syear = DateTimeFormat::local($sdt, 'Y'); + $smonth = DateTimeFormat::local($sdt, 'm'); + $sday = DateTimeFormat::local($sdt, 'd'); - $syear = DateTimeFormat::convert($sdt, $tz, 'UTC', 'Y'); - $smonth = DateTimeFormat::convert($sdt, $tz, 'UTC', 'm'); - $sday = DateTimeFormat::convert($sdt, $tz, 'UTC', 'd'); + $shour = !empty($orig_event) ? DateTimeFormat::local($sdt, 'H') : '00'; + $sminute = !empty($orig_event) ? DateTimeFormat::local($sdt, 'i') : '00'; - $shour = !empty($orig_event) ? DateTimeFormat::convert($sdt, $tz, 'UTC', 'H') : '00'; - $sminute = !empty($orig_event) ? DateTimeFormat::convert($sdt, $tz, 'UTC', 'i') : '00'; + $fyear = DateTimeFormat::local($fdt, 'Y'); + $fmonth = DateTimeFormat::local($fdt, 'm'); + $fday = DateTimeFormat::local($fdt, 'd'); - $fyear = DateTimeFormat::convert($fdt, $tz, 'UTC', 'Y'); - $fmonth = DateTimeFormat::convert($fdt, $tz, 'UTC', 'm'); - $fday = DateTimeFormat::convert($fdt, $tz, 'UTC', 'd'); - - $fhour = !empty($orig_event) ? DateTimeFormat::convert($fdt, $tz, 'UTC', 'H') : '00'; - $fminute = !empty($orig_event) ? DateTimeFormat::convert($fdt, $tz, 'UTC', 'i') : '00'; + $fhour = !empty($orig_event) ? DateTimeFormat::local($fdt, 'H') : '00'; + $fminute = !empty($orig_event) ? DateTimeFormat::local($fdt, 'i') : '00'; if (!$cid && in_array($mode, ['new', 'copy'])) { $acl = ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), false, ACL::getDefaultUserPermissions($orig_event)); @@ -549,8 +528,6 @@ function events_content(App $a) true, 'start_text' ), - '$a_text' => DI::l10n()->t('Adjust for viewer timezone'), - '$a_checked' => $a_checked, '$d_text' => DI::l10n()->t('Description:'), '$d_orig' => $d_orig, '$l_text' => DI::l10n()->t('Location:'), @@ -562,7 +539,6 @@ function events_content(App $a) '$share' => ['share', DI::l10n()->t('Share this event'), $share_checked, '', $share_disabled], '$sh_checked' => $share_checked, '$nofinish' => ['nofinish', DI::l10n()->t('Finish date/time is not known or not relevant'), $n_checked], - '$adjust' => ['adjust', DI::l10n()->t('Adjust for viewer timezone'), $a_checked], '$preview' => DI::l10n()->t('Preview'), '$acl' => $acl, '$submit' => DI::l10n()->t('Submit'), diff --git a/mod/ping.php b/mod/ping.php index 2036b8ec4..216c883c6 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -214,7 +214,7 @@ function ping_init(App $a) $ev = DI::cache()->get($cachekey); if (is_null($ev)) { $ev = q( - "SELECT type, start, adjust FROM `event` + "SELECT type, start FROM `event` WHERE `event`.`uid` = %d AND `start` < '%s' AND `finish` > '%s' and `ignore` = 0 ORDER BY `start` ASC ", intval(local_user()), @@ -230,7 +230,7 @@ function ping_init(App $a) $all_events = count($ev); if ($all_events) { - $str_now = DateTimeFormat::timezoneNow($a->getTimeZone(), 'Y-m-d'); + $str_now = DateTimeFormat::localNow('Y-m-d'); foreach ($ev as $x) { $bd = false; if ($x['type'] === 'birthday') { @@ -239,7 +239,7 @@ function ping_init(App $a) } else { $events ++; } - if (DateTimeFormat::convert($x['start'], ((intval($x['adjust'])) ? $a->getTimeZone() : 'UTC'), 'UTC', 'Y-m-d') === $str_now) { + if (DateTimeFormat::local($x['start'], 'Y-m-d') === $str_now) { $all_events_today ++; if ($bd) { $birthdays_today ++; diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index ae7ace234..87db9fb06 100644 --- a/src/Content/Text/BBCode.php +++ b/src/Content/Text/BBCode.php @@ -1857,7 +1857,6 @@ class BBCode $text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism", $sub, $text); $text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism", '', $text); $text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/ism", '', $text); - $text = preg_replace("/\[event\-adjust\](.*?)\[\/event\-adjust\]/ism", '', $text); $text = preg_replace("/\[event\-id\](.*?)\[\/event\-id\]/ism", '', $text); } diff --git a/src/Model/Event.php b/src/Model/Event.php index 331a77e3f..ef2b55b68 100644 --- a/src/Model/Event.php +++ b/src/Model/Event.php @@ -51,16 +51,10 @@ class Event $bd_format = DI::l10n()->t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8 AM. - $event_start = DI::l10n()->getDay( - !empty($event['adjust']) ? - DateTimeFormat::local($event['start'], $bd_format) : DateTimeFormat::utc($event['start'], $bd_format) - ); + $event_start = DI::l10n()->getDay(DateTimeFormat::local($event['start'], $bd_format)); if (!empty($event['finish'])) { - $event_end = DI::l10n()->getDay( - !empty($event['adjust']) ? - DateTimeFormat::local($event['finish'], $bd_format) : DateTimeFormat::utc($event['finish'], $bd_format) - ); + $event_end = DI::l10n()->getDay(DateTimeFormat::local($event['finish'], $bd_format)); } else { $event_end = ''; } @@ -94,13 +88,13 @@ class Event $o .= '
' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . '
' . "\r\n"; $o .= '
' . DI::l10n()->t('Starts:') . ' ' . $event_start . '
' . "\r\n"; if (!$event['nofinish']) { $o .= '
' . DI::l10n()->t('Finishes:') . ' ' . $event_end . '
' . "\r\n"; } @@ -157,10 +151,6 @@ class Event $o .= '[event-location]' . $event['location'] . '[/event-location]'; } - if ($event['adjust']) { - $o .= '[event-adjust]' . $event['adjust'] . '[/event-adjust]'; - } - return $o; } @@ -200,11 +190,6 @@ class Event $ev['location'] = $match[1]; } - $match = []; - if (preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is", $text, $match)) { - $ev['adjust'] = $match[1]; - } - $ev['nofinish'] = !empty($ev['start']) && empty($ev['finish']) ? 1 : 0; return $ev; @@ -218,8 +203,8 @@ class Event private static function compareDatesCallback($event_a, $event_b) { - $date_a = (($event_a['adjust']) ? DateTimeFormat::local($event_a['start']) : $event_a['start']); - $date_b = (($event_b['adjust']) ? DateTimeFormat::local($event_b['start']) : $event_b['start']); + $date_a = DateTimeFormat::local($event_a['start']); + $date_b = DateTimeFormat::local($event_b['start']); if ($date_a === $date_b) { return strcasecmp($event_a['desc'], $event_b['desc']); @@ -274,7 +259,6 @@ class Event $event['allow_gid'] = $arr['allow_gid'] ?? ''; $event['deny_cid'] = $arr['deny_cid'] ?? ''; $event['deny_gid'] = $arr['deny_gid'] ?? ''; - $event['adjust'] = intval($arr['adjust'] ?? 0); $event['nofinish'] = intval($arr['nofinish'] ?? (!empty($event['start']) && empty($event['finish']))); $event['created'] = DateTimeFormat::utc(($arr['created'] ?? '') ?: 'now'); @@ -305,7 +289,6 @@ class Event 'desc' => $event['desc'], 'location' => $event['location'], 'type' => $event['type'], - 'adjust' => $event['adjust'], 'nofinish' => $event['nofinish'], ]; @@ -547,8 +530,6 @@ class Event * int 'ignore' => * string 'start' => Start time of the timeframe. * string 'finish' => Finish time of the timeframe. - * string 'adjust_start' => - * string 'adjust_finish' => * * @param string $sql_extra Additional sql conditions (e.g. permission request). * @@ -568,11 +549,11 @@ class Event $events = DBA::toArray(DBA::p("SELECT `event`.*, `post-user`.`id` AS `itemid` FROM `event` LEFT JOIN `post-user` ON `post-user`.`event-id` = `event`.`id` AND `post-user`.`uid` = `event`.`uid` WHERE `event`.`uid` = ? AND `event`.`ignore` = ? - AND ((NOT `adjust` AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?) - OR (`adjust` AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?))" . $sql_extra, - $owner_uid, $event_params["ignore"], - $event_params["start"], $event_params["start"], $event_params["finish"], - $event_params["adjust_start"], $event_params["adjust_start"], $event_params["adjust_finish"])); + AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ? + " . $sql_extra, + $owner_uid, $event_params['ignore'], + $event_params['start'], $event_params['start'], $event_params['finish'] + )); if (DBA::isResult($events)) { $return = self::removeDuplicates($events); @@ -604,15 +585,15 @@ class Event $event = array_merge($event, $item); - $start = $event['adjust'] ? DateTimeFormat::local($event['start'], 'c') : DateTimeFormat::utc($event['start'], 'c'); - $j = $event['adjust'] ? DateTimeFormat::local($event['start'], 'j') : DateTimeFormat::utc($event['start'], 'j'); - $day = $event['adjust'] ? DateTimeFormat::local($event['start'], $fmt) : DateTimeFormat::utc($event['start'], $fmt); + $start = DateTimeFormat::local($event['start'], 'c'); + $j = DateTimeFormat::local($event['start'], 'j'); + $day = DateTimeFormat::local($event['start'], $fmt); $day = DI::l10n()->getDay($day); if ($event['nofinish']) { $end = null; } else { - $end = $event['adjust'] ? DateTimeFormat::local($event['finish'], 'c') : DateTimeFormat::utc($event['finish'], 'c'); + $end = DateTimeFormat::local($event['finish'], 'c'); } $is_first = ($day !== $last_date); @@ -720,23 +701,14 @@ class Event // but test your solution against http://icalvalid.cloudapp.net/ // also long lines SHOULD be split at 75 characters length foreach ($events as $event) { - if ($event['adjust'] == 1) { - $UTC = 'Z'; - } else { - $UTC = ''; - } $o .= 'BEGIN:VEVENT' . PHP_EOL; if ($event['start']) { - $tmp = strtotime($event['start']); - $dtformat = "%Y%m%dT%H%M%S" . $UTC; - $o .= 'DTSTART:' . strftime($dtformat, $tmp) . PHP_EOL; + $o .= 'DTSTART:' . DateTimeFormat::utc($event['start'], 'Ymd\THis\Z') . PHP_EOL; } if (!$event['nofinish']) { - $tmp = strtotime($event['finish']); - $dtformat = "%Y%m%dT%H%M%S" . $UTC; - $o .= 'DTEND:' . strftime($dtformat, $tmp) . PHP_EOL; + $o .= 'DTEND:' . DateTimeFormat::utc($event['finish'], 'Ymd\THis\Z') . PHP_EOL; } if ($event['summary']) { @@ -793,7 +765,7 @@ class Event return $return; } - $fields = ['start', 'finish', 'adjust', 'summary', 'desc', 'location', 'nofinish']; + $fields = ['start', 'finish', 'summary', 'desc', 'location', 'nofinish']; $conditions = ['uid' => $uid, 'cid' => 0]; @@ -883,48 +855,22 @@ class Event $tformat = DI::l10n()->t('g:i A'); // 8:01 AM. // Convert the time to different formats. - $dtstart_dt = DI::l10n()->getDay( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], $dformat) - : DateTimeFormat::utc($item['event-start'], $dformat) - ); - $dtstart_title = DateTimeFormat::utc($item['event-start'], $item['event-adjust'] ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s'); + $dtstart_dt = DI::l10n()->getDay(DateTimeFormat::local($item['event-start'], $dformat)); + $dtstart_title = DateTimeFormat::utc($item['event-start'], DateTimeFormat::ATOM); // Format: Jan till Dec. - $month_short = DI::l10n()->getDayShort( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], 'M') - : DateTimeFormat::utc($item['event-start'], 'M') - ); + $month_short = DI::l10n()->getDayShort(DateTimeFormat::local($item['event-start'], 'M')); // Format: 1 till 31. - $date_short = $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], 'j') - : DateTimeFormat::utc($item['event-start'], 'j'); - $start_time = $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], $tformat) - : DateTimeFormat::utc($item['event-start'], $tformat); - $start_short = DI::l10n()->getDayShort( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-start'], $dformat_short) - : DateTimeFormat::utc($item['event-start'], $dformat_short) - ); + $date_short = DateTimeFormat::local($item['event-start'], 'j'); + $start_time = DateTimeFormat::local($item['event-start'], $tformat); + $start_short = DI::l10n()->getDayShort(DateTimeFormat::local($item['event-start'], $dformat_short)); // If the option 'nofinisch' isn't set, we need to format the finish date/time. if (!$item['event-nofinish']) { $finish = true; - $dtend_dt = DI::l10n()->getDay( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-finish'], $dformat) - : DateTimeFormat::utc($item['event-finish'], $dformat) - ); - $dtend_title = DateTimeFormat::utc($item['event-finish'], $item['event-adjust'] ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s'); - $end_short = DI::l10n()->getDayShort( - $item['event-adjust'] ? - DateTimeFormat::local($item['event-finish'], $dformat_short) - : DateTimeFormat::utc($item['event-finish'], $dformat_short) - ); - $end_time = $item['event-adjust'] ? - DateTimeFormat::local($item['event-finish'], $tformat) - : DateTimeFormat::utc($item['event-finish'], $tformat); + $dtend_dt = DI::l10n()->getDay(DateTimeFormat::local($item['event-finish'], $dformat)); + $dtend_title = DateTimeFormat::utc($item['event-finish'], DateTimeFormat::ATOM); + $end_short = DI::l10n()->getDayShort(DateTimeFormat::utc($item['event-finish'], $dformat_short)); + $end_time = DateTimeFormat::local($item['event-finish'], $tformat); // Check if start and finish time is at the same day. if (substr($dtstart_title, 0, 10) === substr($dtend_title, 0, 10)) { $same_date = true; @@ -1063,7 +1009,6 @@ class Event 'summary' => DI::l10n()->t('%s\'s birthday', $contact['name']), 'desc' => DI::l10n()->t('Happy Birthday %s', ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'), 'type' => 'birthday', - 'adjust' => 0 ]; self::store($values); diff --git a/src/Model/Item.php b/src/Model/Item.php index fbbd2eb67..db1d08888 100644 --- a/src/Model/Item.php +++ b/src/Model/Item.php @@ -88,7 +88,7 @@ class Item 'writable', 'self', 'cid', 'alias', 'event-created', 'event-edited', 'event-start', 'event-finish', 'event-summary', 'event-desc', 'event-location', 'event-type', - 'event-nofinish', 'event-adjust', 'event-ignore', 'event-id', + 'event-nofinish', 'event-ignore', 'event-id', 'delivery_queue_count', 'delivery_queue_done', 'delivery_queue_failed' ]; @@ -103,7 +103,7 @@ class Item 'thr-parent-id', 'parent-uri-id', 'postopts', 'pubmail', 'event-created', 'event-edited', 'event-start', 'event-finish', 'event-summary', 'event-desc', 'event-location', 'event-type', - 'event-nofinish', 'event-adjust', 'event-ignore', 'event-id']; + 'event-nofinish', 'event-ignore', 'event-id']; // All fields in the item table const ITEM_FIELDLIST = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent', diff --git a/src/Model/Profile.php b/src/Model/Profile.php index 4e984baa6..361f1a7e4 100644 --- a/src/Model/Profile.php +++ b/src/Model/Profile.php @@ -555,7 +555,7 @@ class Profile $rr['link'] = Contact::magicLinkById($rr['cid']); $rr['title'] = $rr['name']; - $rr['date'] = DI::l10n()->getDay(DateTimeFormat::convert($rr['start'], $a->getTimeZone(), 'UTC', $rr['adjust'] ? $bd_format : $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); + $rr['date'] = DI::l10n()->getDay(DateTimeFormat::local($rr['start'], $bd_short)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); $rr['startime'] = null; $rr['today'] = $today; } @@ -614,8 +614,8 @@ class Profile $total++; } - $strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->getTimeZone() : 'UTC', 'UTC', 'Y-m-d'); - if ($strt === DateTimeFormat::timezoneNow($a->getTimeZone(), 'Y-m-d')) { + $strt = DateTimeFormat::local($rr['start'], 'Y-m-d'); + if ($strt === DateTimeFormat::localNow('Y-m-d')) { $istoday = true; } @@ -630,17 +630,17 @@ class Profile $description = DI::l10n()->t('[No description]'); } - $strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->getTimeZone() : 'UTC'); + $strt = DateTimeFormat::local($rr['start']); - if (substr($strt, 0, 10) < DateTimeFormat::timezoneNow($a->getTimeZone(), 'Y-m-d')) { + if (substr($strt, 0, 10) < DateTimeFormat::localNow('Y-m-d')) { continue; } - $today = ((substr($strt, 0, 10) === DateTimeFormat::timezoneNow($a->getTimeZone(), 'Y-m-d')) ? true : false); + $today = substr($strt, 0, 10) === DateTimeFormat::localNow('Y-m-d'); $rr['title'] = $title; $rr['description'] = $description; - $rr['date'] = DI::l10n()->getDay(DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->getTimeZone() : 'UTC', 'UTC', $bd_format)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); + $rr['date'] = DI::l10n()->getDay(DateTimeFormat::local($rr['start'], $bd_format)) . (($today) ? ' ' . DI::l10n()->t('[today]') : ''); $rr['startime'] = $strt; $rr['today'] = $today; diff --git a/src/Module/Api/Friendica/Events/Index.php b/src/Module/Api/Friendica/Events/Index.php index febbdea48..7103d1dff 100644 --- a/src/Module/Api/Friendica/Events/Index.php +++ b/src/Module/Api/Friendica/Events/Index.php @@ -61,7 +61,7 @@ class Index extends BaseApi 'type' => $event['type'], 'nofinish' => $event['nofinish'], 'place' => $event['location'], - 'adjust' => $event['adjust'], + 'adjust' => 1, 'ignore' => $event['ignore'], 'allow_cid' => $event['allow_cid'], 'allow_gid' => $event['allow_gid'], diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index 47ea6a1bd..51a7ede2f 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -408,7 +408,6 @@ class Processor $event['finish'] = $activity['end-time']; $event['nofinish'] = empty($event['finish']); $event['location'] = $activity['location']; - $event['adjust'] = $activity['adjust'] ?? true; $event['cid'] = $item['contact-id']; $event['uid'] = $item['uid']; $event['uri'] = $item['uri']; diff --git a/src/Protocol/ActivityPub/Receiver.php b/src/Protocol/ActivityPub/Receiver.php index f09483306..431b6739f 100644 --- a/src/Protocol/ActivityPub/Receiver.php +++ b/src/Protocol/ActivityPub/Receiver.php @@ -1389,7 +1389,6 @@ class Receiver $object_data = self::getSource($object, $object_data); $object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value'); $object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@value'); - $object_data['adjust'] = JsonLD::fetchElement($object, 'dfrn:adjust', '@value'); $object_data['location'] = $location; $object_data['latitude'] = JsonLD::fetchElement($object, 'as:location', 'as:latitude', '@type', 'as:Place'); $object_data['latitude'] = JsonLD::fetchElement($object_data, 'latitude', '@value'); diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 375036d1c..5c9142a5d 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1476,10 +1476,10 @@ class Transmitter $event = []; $event['name'] = $item['event-summary']; $event['content'] = BBCode::convertForUriId($item['uri-id'], $item['event-desc'], BBCode::ACTIVITYPUB); - $event['startTime'] = DateTimeFormat::utc($item['event-start'] . '+00:00', DateTimeFormat::ATOM); + $event['startTime'] = DateTimeFormat::utc($item['event-start'], 'c'); if (!$item['event-nofinish']) { - $event['endTime'] = DateTimeFormat::utc($item['event-finish'] . '+00:00', DateTimeFormat::ATOM); + $event['endTime'] = DateTimeFormat::utc($item['event-finish'], 'c'); } if (!empty($item['event-location'])) { @@ -1487,7 +1487,8 @@ class Transmitter $event['location'] = self::createLocation($item); } - $event['dfrn:adjust'] = (bool)$item['event-adjust']; + // 2021.12: Backward compatibility value, all the events now "adjust" to the viewer timezone + $event['dfrn:adjust'] = true; return $event; } diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index ff1b1cb6a..84f0c6de8 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -3314,15 +3314,12 @@ class Diaspora $eventdata["all_day"] = "false"; $eventdata['timezone'] = 'UTC'; - if (!$event['adjust'] && $owner['timezone']) { - $eventdata['timezone'] = $owner['timezone']; - } if ($event['start']) { - $eventdata['start'] = DateTimeFormat::convert($event['start'], "UTC", $eventdata['timezone'], $mask); + $eventdata['start'] = DateTimeFormat::utc($event['start'], $mask); } if ($event['finish'] && !$event['nofinish']) { - $eventdata['end'] = DateTimeFormat::convert($event['finish'], "UTC", $eventdata['timezone'], $mask); + $eventdata['end'] = DateTimeFormat::utc($event['finish'], $mask); } if ($event['summary']) { $eventdata['summary'] = html_entity_decode(BBCode::toMarkdown($event['summary'])); diff --git a/static/dbstructure.config.php b/static/dbstructure.config.php index ef97c54f6..8ea4ea1d0 100644 --- a/static/dbstructure.config.php +++ b/static/dbstructure.config.php @@ -55,7 +55,7 @@ use Friendica\Database\DBA; if (!defined('DB_UPDATE_VERSION')) { - define('DB_UPDATE_VERSION', 1435); + define('DB_UPDATE_VERSION', 1436); } return [ @@ -629,7 +629,6 @@ return [ "location" => ["type" => "text", "comment" => "event location"], "type" => ["type" => "varchar(20)", "not null" => "1", "default" => "", "comment" => "event or birthday"], "nofinish" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "if event does have no end this is 1"], - "adjust" => ["type" => "boolean", "not null" => "1", "default" => "1", "comment" => "adjust to timezone of the recipient (0 or 1)"], "ignore" => ["type" => "boolean", "not null" => "1", "default" => "0", "comment" => "0 or 1"], "allow_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed contact.id '<19><78>'"], "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"], diff --git a/static/dbview.config.php b/static/dbview.config.php index 5b3e8b582..63215968b 100644 --- a/static/dbview.config.php +++ b/static/dbview.config.php @@ -186,7 +186,6 @@ "event-location" => ["event", "location"], "event-type" => ["event", "type"], "event-nofinish" => ["event", "nofinish"], - "event-adjust" => ["event", "adjust"], "event-ignore" => ["event", "ignore"], "signed_text" => ["diaspora-interaction", "interaction"], "parent-guid" => ["parent-item-uri", "guid"], @@ -345,7 +344,6 @@ "event-location" => ["event", "location"], "event-type" => ["event", "type"], "event-nofinish" => ["event", "nofinish"], - "event-adjust" => ["event", "adjust"], "event-ignore" => ["event", "ignore"], "signed_text" => ["diaspora-interaction", "interaction"], "parent-guid" => ["parent-item-uri", "guid"], diff --git a/view/templates/event_form.tpl b/view/templates/event_form.tpl index b22c3c64f..894d50fbb 100644 --- a/view/templates/event_form.tpl +++ b/view/templates/event_form.tpl @@ -18,8 +18,6 @@ {{include file="field_checkbox.tpl" field=$nofinish}} -{{include file="field_checkbox.tpl" field=$adjust}} - {{include file="field_input.tpl" field=$summary}} diff --git a/view/theme/duepuntozero/style.css b/view/theme/duepuntozero/style.css index ee99f4790..f5b526c48 100644 --- a/view/theme/duepuntozero/style.css +++ b/view/theme/duepuntozero/style.css @@ -2351,12 +2351,6 @@ aside input[type='text'] { font-weight: bold; } -#birthday-adjust { - float: left; - font-size: 75%; - margin-left: 10px; -} - #birthday-title-end { clear: both; } @@ -2664,14 +2658,14 @@ aside input[type='text'] { margin-bottom: 5px; } -#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text { +#event-nofinish-checkbox, #event-nofinish-text { float: left; } #event-datetime-break { margin-bottom: 10px; } -#event-nofinish-break, #event-adjust-break { +#event-nofinish-break { clear: both; } diff --git a/view/theme/frio/templates/event_form.tpl b/view/theme/frio/templates/event_form.tpl index 537f5243c..cbefa04bc 100644 --- a/view/theme/frio/templates/event_form.tpl +++ b/view/theme/frio/templates/event_form.tpl @@ -49,9 +49,6 @@ {{* checkbox if the the event doesn't have a finish time *}} {{include file="field_checkbox.tpl" field=$nofinish}} - - {{* checkbox for adjusting the event time to the timezone of the user *}} - {{include file="field_checkbox.tpl" field=$adjust}} {{* checkbox to enable event sharing and the permissions tab *}} diff --git a/view/theme/quattro/templates/event_form.tpl b/view/theme/quattro/templates/event_form.tpl index 8054ba876..9ad1c8a39 100644 --- a/view/theme/quattro/templates/event_form.tpl +++ b/view/theme/quattro/templates/event_form.tpl @@ -15,8 +15,6 @@ {{$f_dsel nofilter}} {{include file="field_checkbox.tpl" field=$nofinish}} - - {{include file="field_checkbox.tpl" field=$adjust}}
{{include file="field_input.tpl" field=$summary}} {{include file="field_textarea.tpl" field=array('desc', $d_text, $d_orig, "")}} diff --git a/view/theme/smoothly/style.css b/view/theme/smoothly/style.css index 2ea3bd620..7698b0d3d 100644 --- a/view/theme/smoothly/style.css +++ b/view/theme/smoothly/style.css @@ -3682,8 +3682,6 @@ margin-left: 0px; #event-nofinish-checkbox, #event-nofinish-text, -#event-adjust-checkbox, -#event-adjust-text, #event-share-checkbox { float: left; } @@ -3693,7 +3691,6 @@ margin-left: 0px; } #event-nofinish-break, -#event-adjust-break, #event-share-break { clear: both; } diff --git a/view/theme/vier/templates/event_form.tpl b/view/theme/vier/templates/event_form.tpl index a5604d929..1581fb6a8 100644 --- a/view/theme/vier/templates/event_form.tpl +++ b/view/theme/vier/templates/event_form.tpl @@ -19,8 +19,6 @@ {{include file="field_checkbox.tpl" field=$nofinish}} -{{include file="field_checkbox.tpl" field=$adjust}} - {{include file="field_input.tpl" field=$summary}}