From 6db211568ae283d152ee8fa0cfe17a2bab809779 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 3 Oct 2021 12:38:47 -0400 Subject: [PATCH 1/5] Remove most calls to date_default_timezone_* calls - It was wrongly used to set the node-wide ot user-specific timezone - It is now fully managed from the App object - Add a static variable to DateTimeFormat maintain the convenient local() method --- mod/events.php | 8 ++++---- mod/item.php | 2 +- mod/settings.php | 4 ++-- src/App.php | 17 ++++++++++------- src/Core/Worker.php | 3 --- src/Module/Conversation/Network.php | 4 ++-- src/Module/Profile/Status.php | 4 ++-- src/Protocol/DFRN.php | 5 +---- src/Security/Authentication.php | 1 - src/Util/DateTimeFormat.php | 11 +++++++++-- src/Util/Temporal.php | 12 ++++-------- 11 files changed, 35 insertions(+), 36 deletions(-) diff --git a/mod/events.php b/mod/events.php index 89da0c2c0e..75c87df44e 100644 --- a/mod/events.php +++ b/mod/events.php @@ -100,9 +100,9 @@ function events_post(App $a) } if ($adjust) { - $start = DateTimeFormat::convert($start, 'UTC', date_default_timezone_get()); + $start = DateTimeFormat::convert($start, 'UTC', $a->getTimeZone()); if (!$nofinish) { - $finish = DateTimeFormat::convert($finish, 'UTC', date_default_timezone_get()); + $finish = DateTimeFormat::convert($finish, 'UTC', $a->getTimeZone()); } } else { $start = DateTimeFormat::utc($start); @@ -481,9 +481,9 @@ function events_content(App $a) $sdt = $orig_event['start'] ?? 'now'; $fdt = $orig_event['finish'] ?? 'now'; - $tz = date_default_timezone_get(); + $tz = $a->getTimeZone(); if (isset($orig_event['adjust'])) { - $tz = ($orig_event['adjust'] ? date_default_timezone_get() : 'UTC'); + $tz = ($orig_event['adjust'] ? $a->getTimeZone() : 'UTC'); } $syear = DateTimeFormat::convert($sdt, $tz, 'UTC', 'Y'); diff --git a/mod/item.php b/mod/item.php index f40f6ad45d..bfb865b790 100644 --- a/mod/item.php +++ b/mod/item.php @@ -686,7 +686,7 @@ function item_post(App $a) { Hook::callAll('post_local',$datarray); if (!empty($_REQUEST['scheduled_at'])) { - $scheduled_at = DateTimeFormat::convert($_REQUEST['scheduled_at'], 'UTC', $a->getTimezone()); + $scheduled_at = DateTimeFormat::convert($_REQUEST['scheduled_at'], 'UTC', $a->getTimeZone()); if ($scheduled_at > DateTimeFormat::utcNow()) { unset($datarray['created']); unset($datarray['edited']); diff --git a/mod/settings.php b/mod/settings.php index 9ea99789d1..e84917c35c 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -333,7 +333,7 @@ function settings_post(App $a) } if (($timezone != $user['timezone']) && strlen($timezone)) { - date_default_timezone_set($timezone); + $a->setTimeZone($timezone); } $aclFormatter = DI::aclFormatter(); @@ -601,7 +601,7 @@ function settings_content(App $a) $expire_network_only = DI::pConfig()->get(local_user(), 'expire', 'network_only', false); if (!strlen($user['timezone'])) { - $timezone = date_default_timezone_get(); + $timezone = $a->getTimeZone(); } // Set the account type to "Community" when the page is a community page but the account type doesn't fit diff --git a/src/App.php b/src/App.php index 7c7496c3ba..5c85c9f26d 100644 --- a/src/App.php +++ b/src/App.php @@ -40,6 +40,7 @@ use Friendica\Model\Profile; use Friendica\Module\Special\HTTPException as ModuleHTTPException; use Friendica\Network\HTTPException; use Friendica\Util\ConfigFileLoader; +use Friendica\Util\DateTimeFormat; use Friendica\Util\HTTPSignature; use Friendica\Util\Profiler; use Friendica\Util\Strings; @@ -217,12 +218,13 @@ class App /** * Set the timezone * - * @param int $timezone + * @param string $timezone A valid time zone identifier, see https://www.php.net/manual/en/timezones.php * @return void */ public function setTimeZone(string $timezone) { - $this->timezone = $timezone; + $this->timezone = (new \DateTimeZone($timezone))->getName(); + DateTimeFormat::setLocalTimeZone($this->timezone); } /** @@ -338,6 +340,9 @@ class App { set_time_limit(0); + // Ensure that all "strtotime" operations do run timezone independent + date_default_timezone_set('UTC'); + // This has to be quite large to deal with embedded private photos ini_set('pcre.backtrack_limit', 500000); @@ -372,15 +377,13 @@ class App private function loadDefaultTimezone() { if ($this->config->get('system', 'default_timezone')) { - $this->timezone = $this->config->get('system', 'default_timezone'); + $timezone = $this->config->get('system', 'default_timezone', 'UTC'); } else { global $default_timezone; - $this->timezone = !empty($default_timezone) ? $default_timezone : 'UTC'; + $timezone = $default_timezone ?? '' ?: 'UTC'; } - if ($this->timezone) { - date_default_timezone_set($this->timezone); - } + $this->setTimeZone($timezone); } /** diff --git a/src/Core/Worker.php b/src/Core/Worker.php index 307451c052..3d3e11d8dd 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -61,9 +61,6 @@ class Worker */ public static function processQueue($run_cron = true) { - // Ensure that all "strtotime" operations do run timezone independent - date_default_timezone_set('UTC'); - self::$up_start = microtime(true); // At first check the maximum load. We shouldn't continue with a high load diff --git a/src/Module/Conversation/Network.php b/src/Module/Conversation/Network.php index 405e3772d1..f2dc1fae1c 100644 --- a/src/Module/Conversation/Network.php +++ b/src/Module/Conversation/Network.php @@ -372,10 +372,10 @@ class Network extends BaseModule } if (self::$dateFrom) { - $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` <= ? ", DateTimeFormat::convert(self::$dateFrom, 'UTC', date_default_timezone_get())]); + $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` <= ? ", DateTimeFormat::convert(self::$dateFrom, 'UTC', DI::app()->getTimeZone())]); } if (self::$dateTo) { - $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` >= ? ", DateTimeFormat::convert(self::$dateTo, 'UTC', date_default_timezone_get())]); + $conditionStrings = DBA::mergeConditions($conditionStrings, ["`received` >= ? ", DateTimeFormat::convert(self::$dateTo, 'UTC', DI::app()->getTimeZone())]); } if (self::$groupId) { diff --git a/src/Module/Profile/Status.php b/src/Module/Profile/Status.php index 3c1ed8c5ac..8235c3265d 100644 --- a/src/Module/Profile/Status.php +++ b/src/Module/Profile/Status.php @@ -151,10 +151,10 @@ class Status extends BaseProfile } if (!empty($datequery)) { - $condition = DBA::mergeConditions($condition, ["`received` <= ?", DateTimeFormat::convert($datequery, 'UTC', date_default_timezone_get())]); + $condition = DBA::mergeConditions($condition, ["`received` <= ?", DateTimeFormat::convert($datequery, 'UTC', $a->getTimeZone())]); } if (!empty($datequery2)) { - $condition = DBA::mergeConditions($condition, ["`received` >= ?", DateTimeFormat::convert($datequery2, 'UTC', date_default_timezone_get())]); + $condition = DBA::mergeConditions($condition, ["`received` >= ?", DateTimeFormat::convert($datequery2, 'UTC', $a->getTimeZone())]); } // Does the profile page belong to a forum? diff --git a/src/Protocol/DFRN.php b/src/Protocol/DFRN.php index 6c692b21fd..d73eabc2d2 100644 --- a/src/Protocol/DFRN.php +++ b/src/Protocol/DFRN.php @@ -488,10 +488,7 @@ class DFRN XML::addElement($doc, $author, "poco:note", $profile["about"]); XML::addElement($doc, $author, "poco:preferredUsername", $profile["nickname"]); - $savetz = date_default_timezone_get(); - date_default_timezone_set($profile["timezone"]); - XML::addElement($doc, $author, "poco:utcOffset", date("P")); - date_default_timezone_set($savetz); + XML::addElement($doc, $author, "poco:utcOffset", DateTimeFormat::timezoneNow($profile["timezone"], "P")); if (trim($profile["homepage"]) != "") { $urls = $doc->createElement("poco:urls"); diff --git a/src/Security/Authentication.php b/src/Security/Authentication.php index e894c6ddaf..c0dc1e9aa7 100644 --- a/src/Security/Authentication.php +++ b/src/Security/Authentication.php @@ -305,7 +305,6 @@ class Authentication $this->session->set('new_member', time() < ($member_since + (60 * 60 * 24 * 14))); if (strlen($user_record['timezone'])) { - date_default_timezone_set($user_record['timezone']); $a->setTimeZone($user_record['timezone']); } diff --git a/src/Util/DateTimeFormat.php b/src/Util/DateTimeFormat.php index a1eb749948..fdb49dabdc 100644 --- a/src/Util/DateTimeFormat.php +++ b/src/Util/DateTimeFormat.php @@ -36,6 +36,13 @@ class DateTimeFormat const HTTP = 'D, d M Y H:i:s \G\M\T'; const JSON = 'Y-m-d\TH:i:s.v\Z'; + static $localTimezone = 'UTC'; + + public static function setLocalTimeZone(string $timezone) + { + self::$localTimezone = $timezone; + } + /** * convert() shorthand for UTC. * @@ -59,7 +66,7 @@ class DateTimeFormat */ public static function local($time, $format = self::MYSQL) { - return self::convert($time, date_default_timezone_get(), 'UTC', $format); + return self::convert($time, self::$localTimezone, 'UTC', $format); } /** @@ -160,7 +167,7 @@ class DateTimeFormat $to_obj = new DateTimeZone('UTC'); } - $d->setTimeZone($to_obj); + $d->setTimezone($to_obj); return $d->format($format); } diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index b5619cf49c..0b1b26fe9d 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -360,23 +360,19 @@ class Temporal * Returns the age in years, given a date of birth and the timezone of the person * whose date of birth is provided. * - * @param string $dob Date of Birth - * @param string $owner_tz (optional) Timezone of the person of interest + * @param string $dob Date of Birth + * @param string $timezone Timezone of the person of interest * * @return int Age in years * @throws \Exception */ - public static function getAgeByTimezone($dob, $owner_tz = ''): int + public static function getAgeByTimezone(string $dob, string $timezone): int { if (!intval($dob)) { return 0; } - if (!$owner_tz) { - $owner_tz = date_default_timezone_get(); - } - - $birthdate = new DateTime($dob . ' 00:00:00', new DateTimeZone($owner_tz)); + $birthdate = new DateTime($dob . ' 00:00:00', new DateTimeZone($timezone)); $currentDate = new DateTime('now', new DateTimeZone('UTC')); $interval = $birthdate->diff($currentDate); From 9935e8e71180f99d57e52f0e3c0ca99c0836219a Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 3 Oct 2021 13:21:17 -0400 Subject: [PATCH 2/5] 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 3e7e65e726..e91c8b2f69 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 e369cb4ffd..6a851014e9 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 5550d1a1a0..ff89b6ba2a 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 be0040d298..58a3b33269 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 ac12d69b91..75fe87e746 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 75c87df44e..6ce322a4df 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 2036b8ec41..216c883c64 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 ae7ace2347..87db9fb063 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 331a77e3f1..ef2b55b68c 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 fbbd2eb673..db1d088883 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 4e984baa6f..361f1a7e4b 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 febbdea48e..7103d1dff4 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 47ea6a1bde..51a7ede2f2 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 f094833060..431b6739ff 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 375036d1c7..5c9142a5d3 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 ff1b1cb6a5..84f0c6de82 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 ef97c54f60..8ea4ea1d06 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 5b3e8b5826..63215968b6 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 b22c3c64f4..894d50fbbf 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 ee99f47904..f5b526c481 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 537f5243ca..cbefa04bc6 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 8054ba8762..9ad1c8a39a 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 2ea3bd6208..7698b0d3d3 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 a5604d9292..1581fb6a85 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}} From a9bb53b021b97ded78c2656186755e61befa4dd4 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 3 Oct 2021 13:29:28 -0400 Subject: [PATCH 3/5] [frio] Fix event time display --- mod/events.php | 25 -------- src/Module/Events/Json.php | 104 +++++++++++++++++++++++++++++++ static/routes.config.php | 2 + view/theme/frio/js/mod_events.js | 38 +++++------ 4 files changed, 123 insertions(+), 46 deletions(-) create mode 100644 src/Module/Events/Json.php diff --git a/mod/events.php b/mod/events.php index 6ce322a4df..1b8a509b70 100644 --- a/mod/events.php +++ b/mod/events.php @@ -49,12 +49,6 @@ function events_init(App $a) return; } - // If it's a json request abort here because we don't - // need the widget data - if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] === 'json') { - return; - } - if (empty(DI::page()['aside'])) { DI::page()['aside'] = ''; } @@ -321,19 +315,6 @@ function events_content(App $a) $start = sprintf('%d-%d-%d %d:%d:%d', $y, $m, 1, 0, 0, 0); $finish = sprintf('%d-%d-%d %d:%d:%d', $y, $m, $dim, 23, 59, 59); - if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] === 'json') { - if (!empty($_GET['start'])) { - $start = $_GET['start']; - } - if (!empty($_GET['end'])) { - $finish = $_GET['end']; - } - } - - $start = DateTimeFormat::utc($start); - $finish = DateTimeFormat::utc($finish); - - // put the event parametes in an array so we can better transmit them $event_params = [ 'event_id' => intval($_GET['id'] ?? 0), @@ -369,12 +350,6 @@ function events_content(App $a) $events = Event::prepareListForTemplate($r); } - if (DI::args()->getArgc() > 1 && DI::args()->getArgv()[1] === 'json') { - header('Content-Type: application/json'); - echo json_encode($events); - exit(); - } - if (!empty($_GET['id'])) { $tpl = Renderer::getMarkupTemplate("event.tpl"); } else { diff --git a/src/Module/Events/Json.php b/src/Module/Events/Json.php new file mode 100644 index 0000000000..50e468a9c7 --- /dev/null +++ b/src/Module/Events/Json.php @@ -0,0 +1,104 @@ + intval($_GET['id'] ?? 0), + 'start' => $start, + 'finish' => $finish, + 'ignore' => 0, + ]; + + // get events by id or by date + if ($event_params['event_id']) { + $r = Event::getListById(local_user(), $event_params['event_id']); + } else { + $r = Event::getListByDate(local_user(), $event_params); + } + + $links = []; + + if (DBA::isResult($r)) { + $r = Event::sortByDate($r); + foreach ($r as $rr) { + $j = DateTimeFormat::utc($rr['start'], 'j'); + if (empty($links[$j])) { + $links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j; + } + } + } + + $events = []; + + // transform the event in a usable array + if (DBA::isResult($r)) { + $events = Event::sortByDate($r); + + $events = self::map($events); + } + + header('Content-Type: application/json'); + echo json_encode($events); + exit(); + } + + private static function map(array $events): array + { + return array_map(function ($event) { + $item = Post::selectFirst(['plink', 'author-name', 'author-avatar', 'author-link', 'private', 'uri-id'], ['id' => $event['itemid']]); + if (!DBA::isResult($item)) { + // Using default values when no item had been found + $item = ['plink' => '', 'author-name' => '', 'author-avatar' => '', 'author-link' => '', 'private' => Item::PUBLIC, 'uri-id' => ($event['uri-id'] ?? 0)]; + } + + return [ + 'id' => $event['id'], + 'title' => $event['summary'], + 'start' => DateTimeFormat::local($event['start']), + 'end' => DateTimeFormat::local($event['finish']), + 'nofinish' => $event['nofinish'], + 'desc' => $event['desc'], + 'location' => $event['location'], + 'item' => $item, + ]; + }, $events); + } +} diff --git a/static/routes.config.php b/static/routes.config.php index 1bcae4a7d3..2f20d51770 100644 --- a/static/routes.config.php +++ b/static/routes.config.php @@ -259,6 +259,8 @@ return [ '/dirfind' => [Module\Search\Directory::class, [R::GET]], '/directory' => [Module\Directory::class, [R::GET]], + '/events/json' => [Module\Events\Json::class, [R::GET]], + '/feed' => [ '/{nickname}' => [Module\Feed::class, [R::GET]], '/{nickname}/posts' => [Module\Feed::class, [R::GET]], diff --git a/view/theme/frio/js/mod_events.js b/view/theme/frio/js/mod_events.js index 464afc3e60..c1f22761c4 100644 --- a/view/theme/frio/js/mod_events.js +++ b/view/theme/frio/js/mod_events.js @@ -42,7 +42,6 @@ $(document).ready(function () { defaultView: "month", aspectRatio: 1, eventRender: function (event, element, view) { - //console.log(view.name); switch (view.name) { case "month": element @@ -52,8 +51,8 @@ $(document).ready(function () { event.item["author-avatar"], event.item["author-name"], event.title, - event.item.desc, - event.item.location, + event.desc, + event.location, ), ); break; @@ -65,8 +64,8 @@ $(document).ready(function () { "{1}

{2}

{3}

".format( event.item["author-avatar"], event.item["author-name"], - event.item.desc, - htmlToText(event.item.location), + event.desc, + htmlToText(event.location), ), ); break; @@ -78,8 +77,8 @@ $(document).ready(function () { "{1}

{2}

{3}

".format( event.item["author-avatar"], event.item["author-name"], - event.item.desc, - htmlToText(event.item.location), + event.desc, + htmlToText(event.location), ), ); break; @@ -252,27 +251,24 @@ function eventHoverHtmlContent(event) { moment.locale(locale); // format dates to different styles - var startDate = moment(event.item.start).format("dd HH:mm"); - var endDate = moment(event.item.finsih).format("dd HH:mm"); - var monthShort = moment(event.item.start).format("MMM"); - var dayNumberStart = moment(event.item.start).format("DD"); - var dayNumberEnd = moment(event.item.finish).format("DD"); - var startTime = moment(event.item.start).format("HH:mm"); - var endTime = moment(event.item.finish).format("HH:mm"); - var monthNumber; + var startDate = event.start.format('dd HH:mm'); + var monthShort = event.start.format('MMM'); + var dayNumberStart = event.start.format('DD'); var formattedDate = startDate; // We only need the to format the end date if the event does have // a finish date. - if (event.item.nofinish == 0) { + if (event.nofinish === 0 && event.end !== null) { + var dayNumberEnd = event.end.format('DD'); + var endTime = event.end.format('HH:mm'); + formattedDate = startDate + " - " + endTime; // use a different Format (15. Feb - 18. Feb) if the events end date // is not the start date - if (dayNumberStart != dayNumberEnd) { - formattedDate = - moment(event.item.start).format("Do MMM") + " - " + moment(event.item.finish).format("Do MMM"); + if (dayNumberStart !== dayNumberEnd) { + formattedDate = event.start.format('Do MMM') + ' - ' + event.end.format('Do MMM'); } } @@ -280,8 +276,8 @@ function eventHoverHtmlContent(event) { data = eventHoverBodyTemplate(); // Get only template data if there exists location data - if (event.item.location) { - var eventLocationText = htmlToText(event.item.location); + if (event.location) { + var eventLocationText = htmlToText(event.location); // Get the the html template for formatting the location var eventLocationTemplate = eventHoverLocationTemplate(); // Format the event location data according to the the event location From a31a64827f81c1ead09c8bf468871653505efa39 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 3 Oct 2021 13:42:17 -0400 Subject: [PATCH 4/5] Display the current timezone in date time picker fields --- src/Util/Temporal.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Util/Temporal.php b/src/Util/Temporal.php index 0b1b26fe9d..a49995a034 100644 --- a/src/Util/Temporal.php +++ b/src/Util/Temporal.php @@ -271,7 +271,11 @@ class Temporal $id, $label, $input_text, - '', + DI::l10n()->t( + 'Time zone: %s Change in Settings', + str_replace('_', ' ', DI::app()->getTimeZone()) . ' (GMT ' . DateTimeFormat::localNow('P') . ')', + DI::baseUrl() . '/settings' + ), $required ? '*' : '', 'placeholder="' . $readable_format . '"' ], @@ -284,7 +288,7 @@ class Temporal 'lang' => $lang, 'minfrom' => $minfrom, 'maxfrom' => $maxfrom, - ] + ], ]); return $o; From 64e4af259fc8443f9a2a099e448a88e4399e4025 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 3 Oct 2021 14:51:09 -0400 Subject: [PATCH 5/5] Updated main translation file after adding a string --- view/lang/C/messages.po | 871 ++++++++++++++++++++-------------------- 1 file changed, 436 insertions(+), 435 deletions(-) diff --git a/view/lang/C/messages.po b/view/lang/C/messages.po index dc445b7320..42cddfb96c 100644 --- a/view/lang/C/messages.po +++ b/view/lang/C/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 2021.12-dev\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-02 17:52-0400\n" +"POT-Creation-Date: 2021-10-03 13:45-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,9 +37,9 @@ msgstr[1] "" msgid "Monthly posting limit of %d post reached. The post was rejected." msgstr "" -#: include/api.php:4431 mod/photos.php:89 mod/photos.php:198 mod/photos.php:621 -#: mod/photos.php:1032 mod/photos.php:1049 mod/photos.php:1598 -#: src/Model/User.php:1169 src/Model/User.php:1177 src/Model/User.php:1185 +#: include/api.php:4422 mod/photos.php:89 mod/photos.php:198 mod/photos.php:617 +#: mod/photos.php:1028 mod/photos.php:1045 mod/photos.php:1594 +#: src/Model/User.php:1160 src/Model/User.php:1168 src/Model/User.php:1176 #: src/Module/Settings/Profile/Photo/Crop.php:101 #: src/Module/Settings/Profile/Photo/Crop.php:117 #: src/Module/Settings/Profile/Photo/Crop.php:133 @@ -299,16 +299,16 @@ msgstr "" msgid "%s %s shared a new post" msgstr "" -#: mod/api.php:30 mod/editpost.php:38 mod/events.php:236 mod/follow.php:56 +#: mod/api.php:30 mod/editpost.php:38 mod/events.php:220 mod/follow.php:56 #: mod/follow.php:130 mod/item.php:185 mod/item.php:190 mod/item.php:936 #: mod/message.php:69 mod/message.php:111 mod/notes.php:44 -#: mod/ostatus_subscribe.php:32 mod/photos.php:163 mod/photos.php:912 +#: mod/ostatus_subscribe.php:32 mod/photos.php:163 mod/photos.php:908 #: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:57 -#: mod/settings.php:417 mod/suggest.php:34 mod/uimport.php:32 +#: mod/settings.php:409 mod/suggest.php:34 mod/uimport.php:33 #: mod/unfollow.php:35 mod/unfollow.php:50 mod/unfollow.php:82 -#: mod/wall_attach.php:78 mod/wall_attach.php:81 mod/wall_upload.php:99 -#: mod/wall_upload.php:102 mod/wallmessage.php:35 mod/wallmessage.php:59 -#: mod/wallmessage.php:96 mod/wallmessage.php:120 src/Module/Attach.php:55 +#: mod/wall_attach.php:68 mod/wall_attach.php:71 mod/wall_upload.php:90 +#: mod/wall_upload.php:93 mod/wallmessage.php:36 mod/wallmessage.php:55 +#: mod/wallmessage.php:89 mod/wallmessage.php:109 src/Module/Attach.php:55 #: src/Module/BaseApi.php:79 src/Module/BaseApi.php:88 #: src/Module/BaseApi.php:97 src/Module/BaseApi.php:106 #: src/Module/BaseNotifications.php:88 src/Module/Contact.php:328 @@ -343,7 +343,7 @@ msgid "Access denied." msgstr "" #: mod/cal.php:61 mod/cal.php:78 mod/photos.php:69 mod/photos.php:143 -#: mod/photos.php:819 src/Model/Profile.php:228 src/Module/HCard.php:52 +#: mod/photos.php:815 src/Model/Profile.php:228 src/Module/HCard.php:52 #: src/Module/Profile/Common.php:41 src/Module/Profile/Common.php:52 #: src/Module/Profile/Contacts.php:40 src/Module/Profile/Contacts.php:50 #: src/Module/Profile/Media.php:38 src/Module/Profile/Status.php:58 @@ -357,68 +357,68 @@ msgstr "" msgid "Access to this profile has been restricted." msgstr "" -#: mod/cal.php:251 mod/events.php:416 src/Content/Nav.php:194 +#: mod/cal.php:242 mod/events.php:377 src/Content/Nav.php:194 #: src/Content/Nav.php:258 src/Module/BaseProfile.php:84 #: src/Module/BaseProfile.php:95 view/theme/frio/theme.php:230 #: view/theme/frio/theme.php:234 msgid "Events" msgstr "" -#: mod/cal.php:252 mod/events.php:417 +#: mod/cal.php:243 mod/events.php:378 msgid "View" msgstr "" -#: mod/cal.php:253 mod/events.php:419 +#: mod/cal.php:244 mod/events.php:380 msgid "Previous" msgstr "" -#: mod/cal.php:254 mod/events.php:420 src/Module/Install.php:207 +#: mod/cal.php:245 mod/events.php:381 src/Module/Install.php:207 msgid "Next" msgstr "" -#: mod/cal.php:257 mod/events.php:425 src/Model/Event.php:474 +#: mod/cal.php:248 mod/events.php:386 src/Model/Event.php:457 msgid "today" msgstr "" -#: mod/cal.php:258 mod/events.php:426 src/Model/Event.php:475 -#: src/Util/Temporal.php:330 +#: mod/cal.php:249 mod/events.php:387 src/Model/Event.php:458 +#: src/Util/Temporal.php:334 msgid "month" msgstr "" -#: mod/cal.php:259 mod/events.php:427 src/Model/Event.php:476 -#: src/Util/Temporal.php:331 +#: mod/cal.php:250 mod/events.php:388 src/Model/Event.php:459 +#: src/Util/Temporal.php:335 msgid "week" msgstr "" -#: mod/cal.php:260 mod/events.php:428 src/Model/Event.php:477 -#: src/Util/Temporal.php:332 +#: mod/cal.php:251 mod/events.php:389 src/Model/Event.php:460 +#: src/Util/Temporal.php:336 msgid "day" msgstr "" -#: mod/cal.php:261 mod/events.php:429 +#: mod/cal.php:252 mod/events.php:390 msgid "list" msgstr "" -#: mod/cal.php:274 src/Console/User.php:182 src/Model/User.php:680 +#: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:680 #: src/Module/Admin/Users/Active.php:73 src/Module/Admin/Users/Blocked.php:74 #: src/Module/Admin/Users/Index.php:80 src/Module/Admin/Users/Pending.php:71 #: src/Module/Api/Twitter/ContactEndpoint.php:71 msgid "User not found" msgstr "" -#: mod/cal.php:283 +#: mod/cal.php:274 msgid "This calendar format is not supported" msgstr "" -#: mod/cal.php:285 +#: mod/cal.php:276 msgid "No exportable data found" msgstr "" -#: mod/cal.php:302 +#: mod/cal.php:293 msgid "calendar" msgstr "" -#: mod/display.php:165 mod/photos.php:823 +#: mod/display.php:165 mod/photos.php:819 #: src/Module/Conversation/Community.php:176 src/Module/Debug/Probe.php:39 #: src/Module/Debug/WebFinger.php:38 src/Module/Directory.php:49 #: src/Module/Search/Index.php:50 src/Module/Search/Index.php:55 @@ -446,13 +446,13 @@ msgstr "" msgid "Save" msgstr "" -#: mod/editpost.php:92 mod/photos.php:1374 src/Content/Conversation.php:326 +#: mod/editpost.php:92 mod/photos.php:1370 src/Content/Conversation.php:326 #: src/Module/Contact/Poke.php:157 src/Object/Post.php:964 msgid "Loading..." msgstr "" #: mod/editpost.php:93 mod/message.php:198 mod/message.php:362 -#: mod/wallmessage.php:153 src/Content/Conversation.php:327 +#: mod/wallmessage.php:139 src/Content/Conversation.php:327 msgid "Upload photo" msgstr "" @@ -469,7 +469,7 @@ msgid "attach file" msgstr "" #: mod/editpost.php:97 mod/message.php:199 mod/message.php:363 -#: mod/wallmessage.php:154 +#: mod/wallmessage.php:140 msgid "Insert web link" msgstr "" @@ -511,7 +511,7 @@ msgid "clear location" msgstr "" #: mod/editpost.php:107 mod/message.php:200 mod/message.php:365 -#: mod/photos.php:1525 mod/wallmessage.php:155 src/Content/Conversation.php:355 +#: mod/photos.php:1521 mod/wallmessage.php:141 src/Content/Conversation.php:355 #: src/Content/Conversation.php:689 src/Module/Item/Compose.php:165 #: src/Object/Post.php:502 msgid "Please wait" @@ -543,14 +543,14 @@ msgstr "" msgid "Example: bob@example.com, mary@example.com" msgstr "" -#: mod/editpost.php:128 mod/events.php:566 mod/photos.php:1373 -#: mod/photos.php:1429 mod/photos.php:1503 src/Content/Conversation.php:370 +#: mod/editpost.php:128 mod/events.php:517 mod/photos.php:1369 +#: mod/photos.php:1425 mod/photos.php:1499 src/Content/Conversation.php:370 #: src/Module/Item/Compose.php:160 src/Object/Post.php:974 msgid "Preview" msgstr "" -#: mod/editpost.php:130 mod/fbrowser.php:105 mod/fbrowser.php:134 -#: mod/follow.php:144 mod/photos.php:1021 mod/photos.php:1130 mod/tagrm.php:37 +#: mod/editpost.php:130 mod/fbrowser.php:100 mod/fbrowser.php:127 +#: mod/follow.php:144 mod/photos.php:1017 mod/photos.php:1126 mod/tagrm.php:37 #: mod/tagrm.php:129 mod/unfollow.php:97 src/Content/Conversation.php:373 #: src/Module/Contact/Revoke.php:99 src/Module/RemoteFollow.php:116 msgid "Cancel" @@ -567,8 +567,8 @@ msgstr "" msgid "Browser" msgstr "" -#: mod/editpost.php:136 mod/events.php:571 mod/photos.php:960 -#: mod/photos.php:1327 src/Content/Conversation.php:357 +#: mod/editpost.php:136 mod/events.php:522 mod/photos.php:956 +#: mod/photos.php:1323 src/Content/Conversation.php:357 msgid "Permissions" msgstr "" @@ -576,31 +576,31 @@ msgstr "" msgid "Open Compose page" msgstr "" -#: mod/events.php:138 mod/events.php:140 +#: mod/events.php:123 mod/events.php:125 msgid "Event can not end before it has started." msgstr "" -#: mod/events.php:147 mod/events.php:149 +#: mod/events.php:132 mod/events.php:134 msgid "Event title and start time are required." msgstr "" -#: mod/events.php:418 +#: mod/events.php:379 msgid "Create New Event" msgstr "" -#: mod/events.php:524 src/Module/Admin/Logs/View.php:96 +#: mod/events.php:478 src/Module/Admin/Logs/View.php:96 msgid "Event details" msgstr "" -#: mod/events.php:525 +#: mod/events.php:479 msgid "Starting date and Title are required." msgstr "" -#: mod/events.php:526 mod/events.php:531 +#: mod/events.php:480 mod/events.php:485 msgid "Event Starts:" msgstr "" -#: mod/events.php:526 mod/events.php:558 +#: mod/events.php:480 mod/events.php:510 #: src/Module/Admin/Blocklist/Server.php:79 #: src/Module/Admin/Blocklist/Server.php:80 #: src/Module/Admin/Blocklist/Server.php:99 @@ -618,42 +618,38 @@ msgstr "" msgid "Required" msgstr "" -#: mod/events.php:539 mod/events.php:564 +#: mod/events.php:493 mod/events.php:516 msgid "Finish date/time is not known or not relevant" msgstr "" -#: mod/events.php:541 mod/events.php:546 +#: mod/events.php:495 mod/events.php:500 msgid "Event Finishes:" msgstr "" -#: mod/events.php:552 mod/events.php:565 -msgid "Adjust for viewer timezone" -msgstr "" - -#: mod/events.php:554 src/Module/Profile/Profile.php:172 +#: mod/events.php:506 src/Module/Profile/Profile.php:172 #: src/Module/Settings/Profile/Index.php:236 msgid "Description:" msgstr "" -#: mod/events.php:556 src/Content/Widget/VCard.php:98 src/Model/Event.php:86 -#: src/Model/Event.php:113 src/Model/Event.php:483 src/Model/Event.php:969 +#: mod/events.php:508 src/Content/Widget/VCard.php:98 src/Model/Event.php:80 +#: src/Model/Event.php:107 src/Model/Event.php:466 src/Model/Event.php:915 #: src/Model/Profile.php:367 src/Module/Contact.php:565 #: src/Module/Directory.php:150 src/Module/Notifications/Introductions.php:165 #: src/Module/Profile/Profile.php:194 msgid "Location:" msgstr "" -#: mod/events.php:558 mod/events.php:560 +#: mod/events.php:510 mod/events.php:512 msgid "Title:" msgstr "" -#: mod/events.php:561 mod/events.php:562 +#: mod/events.php:513 mod/events.php:514 msgid "Share this event" msgstr "" -#: mod/events.php:568 mod/message.php:201 mod/message.php:364 -#: mod/photos.php:942 mod/photos.php:1043 mod/photos.php:1331 -#: mod/photos.php:1372 mod/photos.php:1428 mod/photos.php:1502 +#: mod/events.php:519 mod/message.php:201 mod/message.php:364 +#: mod/photos.php:938 mod/photos.php:1039 mod/photos.php:1327 +#: mod/photos.php:1368 mod/photos.php:1424 mod/photos.php:1498 #: src/Module/Admin/Item/Source.php:65 src/Module/Contact.php:523 #: src/Module/Contact/Advanced.php:133 src/Module/Contact/Poke.php:158 #: src/Module/Debug/ActivityPubConversion.php:141 @@ -669,16 +665,16 @@ msgstr "" msgid "Submit" msgstr "" -#: mod/events.php:569 src/Module/Profile/Profile.php:248 +#: mod/events.php:520 src/Module/Profile/Profile.php:248 msgid "Basic" msgstr "" -#: mod/events.php:570 src/Module/Admin/Site.php:505 src/Module/Contact.php:880 +#: mod/events.php:521 src/Module/Admin/Site.php:505 src/Module/Contact.php:880 #: src/Module/Profile/Profile.php:249 msgid "Advanced" msgstr "" -#: mod/events.php:587 +#: mod/events.php:538 msgid "Failed to remove event" msgstr "" @@ -687,12 +683,12 @@ msgstr "" msgid "Photos" msgstr "" -#: mod/fbrowser.php:107 mod/fbrowser.php:136 +#: mod/fbrowser.php:102 mod/fbrowser.php:129 #: src/Module/Settings/Profile/Photo/Index.php:129 msgid "Upload" msgstr "" -#: mod/fbrowser.php:131 +#: mod/fbrowser.php:124 msgid "Files" msgstr "" @@ -941,7 +937,7 @@ msgstr "" msgid "New Message" msgstr "" -#: mod/message.php:83 mod/wallmessage.php:76 +#: mod/message.php:83 mod/wallmessage.php:69 msgid "No recipient selected." msgstr "" @@ -949,11 +945,11 @@ msgstr "" msgid "Unable to locate contact information." msgstr "" -#: mod/message.php:90 mod/wallmessage.php:82 +#: mod/message.php:90 mod/wallmessage.php:75 msgid "Message could not be sent." msgstr "" -#: mod/message.php:93 mod/wallmessage.php:85 +#: mod/message.php:93 mod/wallmessage.php:78 msgid "Message collection failure." msgstr "" @@ -979,23 +975,23 @@ msgstr "" msgid "Conversation was not removed." msgstr "" -#: mod/message.php:180 mod/message.php:293 mod/wallmessage.php:137 +#: mod/message.php:180 mod/message.php:293 mod/wallmessage.php:123 msgid "Please enter a link URL:" msgstr "" -#: mod/message.php:189 mod/wallmessage.php:142 +#: mod/message.php:189 mod/wallmessage.php:128 msgid "Send Private Message" msgstr "" -#: mod/message.php:190 mod/message.php:354 mod/wallmessage.php:144 +#: mod/message.php:190 mod/message.php:354 mod/wallmessage.php:130 msgid "To:" msgstr "" -#: mod/message.php:191 mod/message.php:355 mod/wallmessage.php:145 +#: mod/message.php:191 mod/message.php:355 mod/wallmessage.php:131 msgid "Subject:" msgstr "" -#: mod/message.php:195 mod/message.php:358 mod/wallmessage.php:151 +#: mod/message.php:195 mod/message.php:358 mod/wallmessage.php:137 #: src/Module/Invite.php:170 msgid "Your message:" msgstr "" @@ -1088,7 +1084,7 @@ msgstr "" msgid "Unsupported network" msgstr "" -#: mod/ostatus_subscribe.php:102 mod/repair_ostatus.php:65 +#: mod/ostatus_subscribe.php:102 mod/repair_ostatus.php:51 msgid "Done" msgstr "" @@ -1104,7 +1100,7 @@ msgstr "" msgid "ignored" msgstr "" -#: mod/ostatus_subscribe.php:126 mod/repair_ostatus.php:71 +#: mod/ostatus_subscribe.php:126 mod/repair_ostatus.php:57 msgid "Keep this window open until done." msgstr "" @@ -1112,11 +1108,11 @@ msgstr "" msgid "Photo Albums" msgstr "" -#: mod/photos.php:112 mod/photos.php:1627 +#: mod/photos.php:112 mod/photos.php:1623 msgid "Recent Photos" msgstr "" -#: mod/photos.php:114 mod/photos.php:1094 mod/photos.php:1629 +#: mod/photos.php:114 mod/photos.php:1090 mod/photos.php:1625 msgid "Upload New Photos" msgstr "" @@ -1132,231 +1128,231 @@ msgstr "" msgid "Album not found." msgstr "" -#: mod/photos.php:262 +#: mod/photos.php:258 msgid "Album successfully deleted" msgstr "" -#: mod/photos.php:264 +#: mod/photos.php:260 msgid "Album was empty." msgstr "" -#: mod/photos.php:296 +#: mod/photos.php:292 msgid "Failed to delete the photo." msgstr "" -#: mod/photos.php:571 +#: mod/photos.php:567 msgid "a photo" msgstr "" -#: mod/photos.php:571 +#: mod/photos.php:567 #, php-format msgid "%1$s was tagged in %2$s by %3$s" msgstr "" -#: mod/photos.php:654 mod/photos.php:657 mod/photos.php:684 -#: mod/wall_upload.php:216 src/Module/Settings/Profile/Photo/Index.php:60 +#: mod/photos.php:650 mod/photos.php:653 mod/photos.php:680 +#: mod/wall_upload.php:207 src/Module/Settings/Profile/Photo/Index.php:60 #, php-format msgid "Image exceeds size limit of %s" msgstr "" -#: mod/photos.php:660 +#: mod/photos.php:656 msgid "Image upload didn't complete, please try again" msgstr "" -#: mod/photos.php:663 +#: mod/photos.php:659 msgid "Image file is missing" msgstr "" -#: mod/photos.php:668 +#: mod/photos.php:664 msgid "" "Server can't accept new file upload at this time, please contact your " "administrator" msgstr "" -#: mod/photos.php:692 +#: mod/photos.php:688 msgid "Image file is empty." msgstr "" -#: mod/photos.php:707 mod/wall_upload.php:175 +#: mod/photos.php:703 mod/wall_upload.php:166 #: src/Module/Settings/Profile/Photo/Index.php:69 msgid "Unable to process image." msgstr "" -#: mod/photos.php:736 mod/wall_upload.php:241 +#: mod/photos.php:732 mod/wall_upload.php:232 #: src/Module/Settings/Profile/Photo/Index.php:96 msgid "Image upload failed." msgstr "" -#: mod/photos.php:828 +#: mod/photos.php:824 msgid "No photos selected" msgstr "" -#: mod/photos.php:897 +#: mod/photos.php:893 msgid "Access to this item is restricted." msgstr "" -#: mod/photos.php:952 +#: mod/photos.php:948 msgid "Upload Photos" msgstr "" -#: mod/photos.php:956 mod/photos.php:1039 +#: mod/photos.php:952 mod/photos.php:1035 msgid "New album name: " msgstr "" -#: mod/photos.php:957 +#: mod/photos.php:953 msgid "or select existing album:" msgstr "" -#: mod/photos.php:958 +#: mod/photos.php:954 msgid "Do not show a status post for this upload" msgstr "" -#: mod/photos.php:1019 +#: mod/photos.php:1015 msgid "Do you really want to delete this photo album and all its photos?" msgstr "" -#: mod/photos.php:1020 mod/photos.php:1044 +#: mod/photos.php:1016 mod/photos.php:1040 msgid "Delete Album" msgstr "" -#: mod/photos.php:1050 +#: mod/photos.php:1046 msgid "Edit Album" msgstr "" -#: mod/photos.php:1051 +#: mod/photos.php:1047 msgid "Drop Album" msgstr "" -#: mod/photos.php:1056 +#: mod/photos.php:1052 msgid "Show Newest First" msgstr "" -#: mod/photos.php:1058 +#: mod/photos.php:1054 msgid "Show Oldest First" msgstr "" -#: mod/photos.php:1079 mod/photos.php:1612 +#: mod/photos.php:1075 mod/photos.php:1608 msgid "View Photo" msgstr "" -#: mod/photos.php:1116 +#: mod/photos.php:1112 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: mod/photos.php:1118 +#: mod/photos.php:1114 msgid "Photo not available" msgstr "" -#: mod/photos.php:1128 +#: mod/photos.php:1124 msgid "Do you really want to delete this photo?" msgstr "" -#: mod/photos.php:1129 mod/photos.php:1332 +#: mod/photos.php:1125 mod/photos.php:1328 msgid "Delete Photo" msgstr "" -#: mod/photos.php:1223 +#: mod/photos.php:1219 msgid "View photo" msgstr "" -#: mod/photos.php:1225 +#: mod/photos.php:1221 msgid "Edit photo" msgstr "" -#: mod/photos.php:1226 +#: mod/photos.php:1222 msgid "Delete photo" msgstr "" -#: mod/photos.php:1227 +#: mod/photos.php:1223 msgid "Use as profile photo" msgstr "" -#: mod/photos.php:1234 +#: mod/photos.php:1230 msgid "Private Photo" msgstr "" -#: mod/photos.php:1240 +#: mod/photos.php:1236 msgid "View Full Size" msgstr "" -#: mod/photos.php:1300 +#: mod/photos.php:1296 msgid "Tags: " msgstr "" -#: mod/photos.php:1303 +#: mod/photos.php:1299 msgid "[Select tags to remove]" msgstr "" -#: mod/photos.php:1318 +#: mod/photos.php:1314 msgid "New album name" msgstr "" -#: mod/photos.php:1319 +#: mod/photos.php:1315 msgid "Caption" msgstr "" -#: mod/photos.php:1320 +#: mod/photos.php:1316 msgid "Add a Tag" msgstr "" -#: mod/photos.php:1320 +#: mod/photos.php:1316 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgstr "" -#: mod/photos.php:1321 +#: mod/photos.php:1317 msgid "Do not rotate" msgstr "" -#: mod/photos.php:1322 +#: mod/photos.php:1318 msgid "Rotate CW (right)" msgstr "" -#: mod/photos.php:1323 +#: mod/photos.php:1319 msgid "Rotate CCW (left)" msgstr "" -#: mod/photos.php:1369 mod/photos.php:1425 mod/photos.php:1499 +#: mod/photos.php:1365 mod/photos.php:1421 mod/photos.php:1495 #: src/Module/Contact.php:1010 src/Module/Item/Compose.php:148 #: src/Object/Post.php:960 msgid "This is you" msgstr "" -#: mod/photos.php:1371 mod/photos.php:1427 mod/photos.php:1501 +#: mod/photos.php:1367 mod/photos.php:1423 mod/photos.php:1497 #: src/Object/Post.php:496 src/Object/Post.php:962 msgid "Comment" msgstr "" -#: mod/photos.php:1460 src/Content/Conversation.php:615 src/Object/Post.php:227 +#: mod/photos.php:1456 src/Content/Conversation.php:615 src/Object/Post.php:227 msgid "Select" msgstr "" -#: mod/photos.php:1461 mod/settings.php:573 src/Content/Conversation.php:616 +#: mod/photos.php:1457 mod/settings.php:563 src/Content/Conversation.php:616 #: src/Module/Admin/Users/Active.php:139 src/Module/Admin/Users/Blocked.php:140 #: src/Module/Admin/Users/Index.php:153 msgid "Delete" msgstr "" -#: mod/photos.php:1522 src/Object/Post.php:349 +#: mod/photos.php:1518 src/Object/Post.php:349 msgid "Like" msgstr "" -#: mod/photos.php:1523 src/Object/Post.php:349 +#: mod/photos.php:1519 src/Object/Post.php:349 msgid "I like this (toggle)" msgstr "" -#: mod/photos.php:1524 src/Object/Post.php:350 +#: mod/photos.php:1520 src/Object/Post.php:350 msgid "Dislike" msgstr "" -#: mod/photos.php:1526 src/Object/Post.php:350 +#: mod/photos.php:1522 src/Object/Post.php:350 msgid "I don't like this (toggle)" msgstr "" -#: mod/photos.php:1548 +#: mod/photos.php:1544 msgid "Map" msgstr "" -#: mod/photos.php:1618 +#: mod/photos.php:1614 msgid "View Album" msgstr "" @@ -1417,82 +1413,82 @@ msgstr "" msgid "Resubscribing to OStatus contacts" msgstr "" -#: mod/repair_ostatus.php:50 src/Module/Debug/ActivityPubConversion.php:130 +#: mod/repair_ostatus.php:46 src/Module/Debug/ActivityPubConversion.php:130 #: src/Module/Debug/Babel.php:293 src/Module/Security/TwoFactor/Verify.php:97 msgid "Error" msgid_plural "Errors" msgstr[0] "" msgstr[1] "" -#: mod/settings.php:136 +#: mod/settings.php:128 msgid "Failed to connect with email account using the settings provided." msgstr "" -#: mod/settings.php:165 +#: mod/settings.php:157 msgid "Contact CSV file upload error" msgstr "" -#: mod/settings.php:184 +#: mod/settings.php:176 msgid "Importing Contacts done" msgstr "" -#: mod/settings.php:197 +#: mod/settings.php:189 msgid "Relocate message has been send to your contacts" msgstr "" -#: mod/settings.php:209 +#: mod/settings.php:201 msgid "Passwords do not match." msgstr "" -#: mod/settings.php:217 src/Console/User.php:210 +#: mod/settings.php:209 src/Console/User.php:210 msgid "Password update failed. Please try again." msgstr "" -#: mod/settings.php:220 src/Console/User.php:213 +#: mod/settings.php:212 src/Console/User.php:213 msgid "Password changed." msgstr "" -#: mod/settings.php:223 +#: mod/settings.php:215 msgid "Password unchanged." msgstr "" -#: mod/settings.php:311 +#: mod/settings.php:303 msgid "Please use a shorter name." msgstr "" -#: mod/settings.php:314 +#: mod/settings.php:306 msgid "Name too short." msgstr "" -#: mod/settings.php:321 +#: mod/settings.php:313 msgid "Wrong Password." msgstr "" -#: mod/settings.php:326 +#: mod/settings.php:318 msgid "Invalid email." msgstr "" -#: mod/settings.php:332 +#: mod/settings.php:324 msgid "Cannot change to that email." msgstr "" -#: mod/settings.php:373 +#: mod/settings.php:365 msgid "Private forum has no privacy permissions. Using default privacy group." msgstr "" -#: mod/settings.php:376 +#: mod/settings.php:368 msgid "Private forum has no privacy permissions and no default privacy group." msgstr "" -#: mod/settings.php:395 +#: mod/settings.php:387 msgid "Settings were not updated." msgstr "" -#: mod/settings.php:436 +#: mod/settings.php:428 msgid "Connected Apps" msgstr "" -#: mod/settings.php:437 src/Module/Admin/Blocklist/Contact.php:90 +#: mod/settings.php:429 src/Module/Admin/Blocklist/Contact.php:90 #: src/Module/Admin/Users/Active.php:129 src/Module/Admin/Users/Blocked.php:130 #: src/Module/Admin/Users/Create.php:71 src/Module/Admin/Users/Deleted.php:88 #: src/Module/Admin/Users/Index.php:142 src/Module/Admin/Users/Index.php:162 @@ -1500,31 +1496,31 @@ msgstr "" msgid "Name" msgstr "" -#: mod/settings.php:438 src/Content/Nav.php:212 +#: mod/settings.php:430 src/Content/Nav.php:212 msgid "Home Page" msgstr "" -#: mod/settings.php:439 src/Module/Admin/Queue.php:78 +#: mod/settings.php:431 src/Module/Admin/Queue.php:78 msgid "Created" msgstr "" -#: mod/settings.php:440 +#: mod/settings.php:432 msgid "Remove authorization" msgstr "" -#: mod/settings.php:458 +#: mod/settings.php:450 msgid "Addon Settings" msgstr "" -#: mod/settings.php:459 +#: mod/settings.php:451 msgid "No Addon settings configured" msgstr "" -#: mod/settings.php:480 +#: mod/settings.php:472 msgid "Additional Features" msgstr "" -#: mod/settings.php:482 mod/settings.php:575 mod/settings.php:712 +#: mod/settings.php:474 mod/settings.php:565 mod/settings.php:702 #: src/Module/Admin/Addons/Index.php:69 src/Module/Admin/Features.php:87 #: src/Module/Admin/Logs/Settings.php:82 src/Module/Admin/Site.php:500 #: src/Module/Admin/Themes/Index.php:113 src/Module/Admin/Tos.php:66 @@ -1532,48 +1528,48 @@ msgstr "" msgid "Save Settings" msgstr "" -#: mod/settings.php:504 +#: mod/settings.php:496 msgid "Diaspora (Socialhome, Hubzilla)" msgstr "" -#: mod/settings.php:504 mod/settings.php:505 +#: mod/settings.php:496 mod/settings.php:497 msgid "enabled" msgstr "" -#: mod/settings.php:504 mod/settings.php:505 +#: mod/settings.php:496 mod/settings.php:497 msgid "disabled" msgstr "" -#: mod/settings.php:504 mod/settings.php:505 +#: mod/settings.php:496 mod/settings.php:497 #, php-format msgid "Built-in support for %s connectivity is %s" msgstr "" -#: mod/settings.php:505 +#: mod/settings.php:497 msgid "OStatus (GNU Social)" msgstr "" -#: mod/settings.php:533 +#: mod/settings.php:523 msgid "Email access is disabled on this site." msgstr "" -#: mod/settings.php:538 mod/settings.php:573 +#: mod/settings.php:528 mod/settings.php:563 msgid "None" msgstr "" -#: mod/settings.php:544 src/Module/BaseSettings.php:80 +#: mod/settings.php:534 src/Module/BaseSettings.php:80 msgid "Social Networks" msgstr "" -#: mod/settings.php:549 +#: mod/settings.php:539 msgid "General Social Media Settings" msgstr "" -#: mod/settings.php:550 +#: mod/settings.php:540 msgid "Accept only top level posts by contacts you follow" msgstr "" -#: mod/settings.php:550 +#: mod/settings.php:540 msgid "" "The system does an auto completion of threads when a comment arrives. This " "has got the side effect that you can receive posts that had been started by " @@ -1582,11 +1578,11 @@ msgid "" "posts from people you really do follow." msgstr "" -#: mod/settings.php:551 +#: mod/settings.php:541 msgid "Enable Content Warning" msgstr "" -#: mod/settings.php:551 +#: mod/settings.php:541 msgid "" "Users on networks like Mastodon or Pleroma are able to set a content warning " "field which collapse their post by default. This enables the automatic " @@ -1594,222 +1590,222 @@ msgid "" "affect any other content filtering you eventually set up." msgstr "" -#: mod/settings.php:552 +#: mod/settings.php:542 msgid "Enable intelligent shortening" msgstr "" -#: mod/settings.php:552 +#: mod/settings.php:542 msgid "" "Normally the system tries to find the best link to add to shortened posts. " "If disabled, every shortened post will always point to the original " "friendica post." msgstr "" -#: mod/settings.php:553 +#: mod/settings.php:543 msgid "Enable simple text shortening" msgstr "" -#: mod/settings.php:553 +#: mod/settings.php:543 msgid "" "Normally the system shortens posts at the next line feed. If this option is " "enabled then the system will shorten the text at the maximum character limit." msgstr "" -#: mod/settings.php:554 +#: mod/settings.php:544 msgid "Attach the link title" msgstr "" -#: mod/settings.php:554 +#: mod/settings.php:544 msgid "" "When activated, the title of the attached link will be added as a title on " "posts to Diaspora. This is mostly helpful with \"remote-self\" contacts that " "share feed content." msgstr "" -#: mod/settings.php:555 +#: mod/settings.php:545 msgid "Your legacy ActivityPub/GNU Social account" msgstr "" -#: mod/settings.php:555 +#: mod/settings.php:545 msgid "" "If you enter your old account name from an ActivityPub based system or your " "GNU Social/Statusnet account name here (in the format user@domain.tld), your " "contacts will be added automatically. The field will be emptied when done." msgstr "" -#: mod/settings.php:558 +#: mod/settings.php:548 msgid "Repair OStatus subscriptions" msgstr "" -#: mod/settings.php:562 +#: mod/settings.php:552 msgid "Email/Mailbox Setup" msgstr "" -#: mod/settings.php:563 +#: mod/settings.php:553 msgid "" "If you wish to communicate with email contacts using this service " "(optional), please specify how to connect to your mailbox." msgstr "" -#: mod/settings.php:564 +#: mod/settings.php:554 msgid "Last successful email check:" msgstr "" -#: mod/settings.php:566 +#: mod/settings.php:556 msgid "IMAP server name:" msgstr "" -#: mod/settings.php:567 +#: mod/settings.php:557 msgid "IMAP port:" msgstr "" -#: mod/settings.php:568 +#: mod/settings.php:558 msgid "Security:" msgstr "" -#: mod/settings.php:569 +#: mod/settings.php:559 msgid "Email login name:" msgstr "" -#: mod/settings.php:570 +#: mod/settings.php:560 msgid "Email password:" msgstr "" -#: mod/settings.php:571 +#: mod/settings.php:561 msgid "Reply-to address:" msgstr "" -#: mod/settings.php:572 +#: mod/settings.php:562 msgid "Send public posts to all email contacts:" msgstr "" -#: mod/settings.php:573 +#: mod/settings.php:563 msgid "Action after import:" msgstr "" -#: mod/settings.php:573 src/Content/Nav.php:280 +#: mod/settings.php:563 src/Content/Nav.php:280 msgid "Mark as seen" msgstr "" -#: mod/settings.php:573 +#: mod/settings.php:563 msgid "Move to folder" msgstr "" -#: mod/settings.php:574 +#: mod/settings.php:564 msgid "Move to folder:" msgstr "" -#: mod/settings.php:588 +#: mod/settings.php:578 msgid "Unable to find your profile. Please contact your admin." msgstr "" -#: mod/settings.php:626 src/Content/Widget.php:533 +#: mod/settings.php:616 src/Content/Widget.php:533 msgid "Account Types" msgstr "" -#: mod/settings.php:627 +#: mod/settings.php:617 msgid "Personal Page Subtypes" msgstr "" -#: mod/settings.php:628 +#: mod/settings.php:618 msgid "Community Forum Subtypes" msgstr "" -#: mod/settings.php:635 src/Module/Admin/BaseUsers.php:106 +#: mod/settings.php:625 src/Module/Admin/BaseUsers.php:106 msgid "Personal Page" msgstr "" -#: mod/settings.php:636 +#: mod/settings.php:626 msgid "Account for a personal profile." msgstr "" -#: mod/settings.php:639 src/Module/Admin/BaseUsers.php:107 +#: mod/settings.php:629 src/Module/Admin/BaseUsers.php:107 msgid "Organisation Page" msgstr "" -#: mod/settings.php:640 +#: mod/settings.php:630 msgid "" "Account for an organisation that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:643 src/Module/Admin/BaseUsers.php:108 +#: mod/settings.php:633 src/Module/Admin/BaseUsers.php:108 msgid "News Page" msgstr "" -#: mod/settings.php:644 +#: mod/settings.php:634 msgid "" "Account for a news reflector that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:647 src/Module/Admin/BaseUsers.php:109 +#: mod/settings.php:637 src/Module/Admin/BaseUsers.php:109 msgid "Community Forum" msgstr "" -#: mod/settings.php:648 +#: mod/settings.php:638 msgid "Account for community discussions." msgstr "" -#: mod/settings.php:651 src/Module/Admin/BaseUsers.php:99 +#: mod/settings.php:641 src/Module/Admin/BaseUsers.php:99 msgid "Normal Account Page" msgstr "" -#: mod/settings.php:652 +#: mod/settings.php:642 msgid "" "Account for a regular personal profile that requires manual approval of " "\"Friends\" and \"Followers\"." msgstr "" -#: mod/settings.php:655 src/Module/Admin/BaseUsers.php:100 +#: mod/settings.php:645 src/Module/Admin/BaseUsers.php:100 msgid "Soapbox Page" msgstr "" -#: mod/settings.php:656 +#: mod/settings.php:646 msgid "" "Account for a public profile that automatically approves contact requests as " "\"Followers\"." msgstr "" -#: mod/settings.php:659 src/Module/Admin/BaseUsers.php:101 +#: mod/settings.php:649 src/Module/Admin/BaseUsers.php:101 msgid "Public Forum" msgstr "" -#: mod/settings.php:660 +#: mod/settings.php:650 msgid "Automatically approves all contact requests." msgstr "" -#: mod/settings.php:663 src/Module/Admin/BaseUsers.php:102 +#: mod/settings.php:653 src/Module/Admin/BaseUsers.php:102 msgid "Automatic Friend Page" msgstr "" -#: mod/settings.php:664 +#: mod/settings.php:654 msgid "" "Account for a popular profile that automatically approves contact requests " "as \"Friends\"." msgstr "" -#: mod/settings.php:667 +#: mod/settings.php:657 msgid "Private Forum [Experimental]" msgstr "" -#: mod/settings.php:668 +#: mod/settings.php:658 msgid "Requires manual approval of contact requests." msgstr "" -#: mod/settings.php:679 +#: mod/settings.php:669 msgid "OpenID:" msgstr "" -#: mod/settings.php:679 +#: mod/settings.php:669 msgid "(Optional) Allow this OpenID to login to this account." msgstr "" -#: mod/settings.php:687 +#: mod/settings.php:677 msgid "Publish your profile in your local site directory?" msgstr "" -#: mod/settings.php:687 +#: mod/settings.php:677 #, php-format msgid "" "Your profile will be published in this node's local " @@ -1817,115 +1813,115 @@ msgid "" "system settings." msgstr "" -#: mod/settings.php:693 +#: mod/settings.php:683 #, php-format msgid "" "Your profile will also be published in the global friendica directories (e." "g. %s)." msgstr "" -#: mod/settings.php:699 +#: mod/settings.php:689 #, php-format msgid "Your Identity Address is '%s' or '%s'." msgstr "" -#: mod/settings.php:710 +#: mod/settings.php:700 msgid "Account Settings" msgstr "" -#: mod/settings.php:718 +#: mod/settings.php:708 msgid "Password Settings" msgstr "" -#: mod/settings.php:719 src/Module/Register.php:151 +#: mod/settings.php:709 src/Module/Register.php:151 msgid "New Password:" msgstr "" -#: mod/settings.php:719 +#: mod/settings.php:709 msgid "" "Allowed characters are a-z, A-Z, 0-9 and special characters except white " "spaces, accentuated letters and colon (:)." msgstr "" -#: mod/settings.php:720 src/Module/Register.php:152 +#: mod/settings.php:710 src/Module/Register.php:152 msgid "Confirm:" msgstr "" -#: mod/settings.php:720 +#: mod/settings.php:710 msgid "Leave password fields blank unless changing" msgstr "" -#: mod/settings.php:721 +#: mod/settings.php:711 msgid "Current Password:" msgstr "" -#: mod/settings.php:721 +#: mod/settings.php:711 msgid "Your current password to confirm the changes" msgstr "" -#: mod/settings.php:722 +#: mod/settings.php:712 msgid "Password:" msgstr "" -#: mod/settings.php:722 +#: mod/settings.php:712 msgid "Your current password to confirm the changes of the email address" msgstr "" -#: mod/settings.php:725 +#: mod/settings.php:715 msgid "Delete OpenID URL" msgstr "" -#: mod/settings.php:727 +#: mod/settings.php:717 msgid "Basic Settings" msgstr "" -#: mod/settings.php:728 src/Module/Profile/Profile.php:144 +#: mod/settings.php:718 src/Module/Profile/Profile.php:144 msgid "Full Name:" msgstr "" -#: mod/settings.php:729 +#: mod/settings.php:719 msgid "Email Address:" msgstr "" -#: mod/settings.php:730 +#: mod/settings.php:720 msgid "Your Timezone:" msgstr "" -#: mod/settings.php:731 +#: mod/settings.php:721 msgid "Your Language:" msgstr "" -#: mod/settings.php:731 +#: mod/settings.php:721 msgid "" "Set the language we use to show you friendica interface and to send you " "emails" msgstr "" -#: mod/settings.php:732 +#: mod/settings.php:722 msgid "Default Post Location:" msgstr "" -#: mod/settings.php:733 +#: mod/settings.php:723 msgid "Use Browser Location:" msgstr "" -#: mod/settings.php:735 +#: mod/settings.php:725 msgid "Security and Privacy Settings" msgstr "" -#: mod/settings.php:737 +#: mod/settings.php:727 msgid "Maximum Friend Requests/Day:" msgstr "" -#: mod/settings.php:737 mod/settings.php:747 +#: mod/settings.php:727 mod/settings.php:737 msgid "(to prevent spam abuse)" msgstr "" -#: mod/settings.php:739 +#: mod/settings.php:729 msgid "Allow your profile to be searchable globally?" msgstr "" -#: mod/settings.php:739 +#: mod/settings.php:729 msgid "" "Activate this setting if you want others to easily find and follow you. Your " "profile will be searchable on remote systems. This setting also determines " @@ -1933,43 +1929,43 @@ msgid "" "indexed or not." msgstr "" -#: mod/settings.php:740 +#: mod/settings.php:730 msgid "Hide your contact/friend list from viewers of your profile?" msgstr "" -#: mod/settings.php:740 +#: mod/settings.php:730 msgid "" "A list of your contacts is displayed on your profile page. Activate this " "option to disable the display of your contact list." msgstr "" -#: mod/settings.php:741 +#: mod/settings.php:731 msgid "Hide your profile details from anonymous viewers?" msgstr "" -#: mod/settings.php:741 +#: mod/settings.php:731 msgid "" "Anonymous visitors will only see your profile picture, your display name and " "the nickname you are using on your profile page. Your public posts and " "replies will still be accessible by other means." msgstr "" -#: mod/settings.php:742 +#: mod/settings.php:732 msgid "Make public posts unlisted" msgstr "" -#: mod/settings.php:742 +#: mod/settings.php:732 msgid "" "Your public posts will not appear on the community pages or in search " "results, nor be sent to relay servers. However they can still appear on " "public feeds on remote servers." msgstr "" -#: mod/settings.php:743 +#: mod/settings.php:733 msgid "Make all posted pictures accessible" msgstr "" -#: mod/settings.php:743 +#: mod/settings.php:733 msgid "" "This option makes every posted picture accessible via the direct link. This " "is a workaround for the problem that most other networks can't handle " @@ -1977,221 +1973,221 @@ msgid "" "public on your photo albums though." msgstr "" -#: mod/settings.php:744 +#: mod/settings.php:734 msgid "Allow friends to post to your profile page?" msgstr "" -#: mod/settings.php:744 +#: mod/settings.php:734 msgid "" "Your contacts may write posts on your profile wall. These posts will be " "distributed to your contacts" msgstr "" -#: mod/settings.php:745 +#: mod/settings.php:735 msgid "Allow friends to tag your posts?" msgstr "" -#: mod/settings.php:745 +#: mod/settings.php:735 msgid "Your contacts can add additional tags to your posts." msgstr "" -#: mod/settings.php:746 +#: mod/settings.php:736 msgid "Permit unknown people to send you private mail?" msgstr "" -#: mod/settings.php:746 +#: mod/settings.php:736 msgid "" "Friendica network users may send you private messages even if they are not " "in your contact list." msgstr "" -#: mod/settings.php:747 +#: mod/settings.php:737 msgid "Maximum private messages per day from unknown people:" msgstr "" -#: mod/settings.php:749 +#: mod/settings.php:739 msgid "Default Post Permissions" msgstr "" -#: mod/settings.php:753 +#: mod/settings.php:743 msgid "Expiration settings" msgstr "" -#: mod/settings.php:754 +#: mod/settings.php:744 msgid "Automatically expire posts after this many days:" msgstr "" -#: mod/settings.php:754 +#: mod/settings.php:744 msgid "If empty, posts will not expire. Expired posts will be deleted" msgstr "" -#: mod/settings.php:755 +#: mod/settings.php:745 msgid "Expire posts" msgstr "" -#: mod/settings.php:755 +#: mod/settings.php:745 msgid "When activated, posts and comments will be expired." msgstr "" -#: mod/settings.php:756 +#: mod/settings.php:746 msgid "Expire personal notes" msgstr "" -#: mod/settings.php:756 +#: mod/settings.php:746 msgid "" "When activated, the personal notes on your profile page will be expired." msgstr "" -#: mod/settings.php:757 +#: mod/settings.php:747 msgid "Expire starred posts" msgstr "" -#: mod/settings.php:757 +#: mod/settings.php:747 msgid "" "Starring posts keeps them from being expired. That behaviour is overwritten " "by this setting." msgstr "" -#: mod/settings.php:758 +#: mod/settings.php:748 msgid "Expire photos" msgstr "" -#: mod/settings.php:758 +#: mod/settings.php:748 msgid "When activated, photos will be expired." msgstr "" -#: mod/settings.php:759 +#: mod/settings.php:749 msgid "Only expire posts by others" msgstr "" -#: mod/settings.php:759 +#: mod/settings.php:749 msgid "" "When activated, your own posts never expire. Then the settings above are " "only valid for posts you received." msgstr "" -#: mod/settings.php:762 +#: mod/settings.php:752 msgid "Notification Settings" msgstr "" -#: mod/settings.php:763 +#: mod/settings.php:753 msgid "Send a notification email when:" msgstr "" -#: mod/settings.php:764 +#: mod/settings.php:754 msgid "You receive an introduction" msgstr "" -#: mod/settings.php:765 +#: mod/settings.php:755 msgid "Your introductions are confirmed" msgstr "" -#: mod/settings.php:766 +#: mod/settings.php:756 msgid "Someone writes on your profile wall" msgstr "" -#: mod/settings.php:767 +#: mod/settings.php:757 msgid "Someone writes a followup comment" msgstr "" -#: mod/settings.php:768 +#: mod/settings.php:758 msgid "You receive a private message" msgstr "" -#: mod/settings.php:769 +#: mod/settings.php:759 msgid "You receive a friend suggestion" msgstr "" -#: mod/settings.php:770 +#: mod/settings.php:760 msgid "You are tagged in a post" msgstr "" -#: mod/settings.php:771 +#: mod/settings.php:761 msgid "You are poked/prodded/etc. in a post" msgstr "" -#: mod/settings.php:773 +#: mod/settings.php:763 msgid "Create a desktop notification when:" msgstr "" -#: mod/settings.php:774 +#: mod/settings.php:764 msgid "Someone liked your content" msgstr "" -#: mod/settings.php:775 +#: mod/settings.php:765 msgid "Someone shared your content" msgstr "" -#: mod/settings.php:777 +#: mod/settings.php:767 msgid "Activate desktop notifications" msgstr "" -#: mod/settings.php:777 +#: mod/settings.php:767 msgid "Show desktop popup on new notifications" msgstr "" -#: mod/settings.php:779 +#: mod/settings.php:769 msgid "Text-only notification emails" msgstr "" -#: mod/settings.php:781 +#: mod/settings.php:771 msgid "Send text only notification emails, without the html part" msgstr "" -#: mod/settings.php:783 +#: mod/settings.php:773 msgid "Show detailled notifications" msgstr "" -#: mod/settings.php:785 +#: mod/settings.php:775 msgid "" "Per default, notifications are condensed to a single notification per item. " "When enabled every notification is displayed." msgstr "" -#: mod/settings.php:787 +#: mod/settings.php:777 msgid "Show notifications of ignored contacts" msgstr "" -#: mod/settings.php:789 +#: mod/settings.php:779 msgid "" "You don't see posts from ignored contacts. But you still see their comments. " "This setting controls if you want to still receive regular notifications " "that are caused by ignored contacts or not." msgstr "" -#: mod/settings.php:791 +#: mod/settings.php:781 msgid "Advanced Account/Page Type Settings" msgstr "" -#: mod/settings.php:792 +#: mod/settings.php:782 msgid "Change the behaviour of this account for special situations" msgstr "" -#: mod/settings.php:795 +#: mod/settings.php:785 msgid "Import Contacts" msgstr "" -#: mod/settings.php:796 +#: mod/settings.php:786 msgid "" "Upload a CSV file that contains the handle of your followed accounts in the " "first column you exported from the old account." msgstr "" -#: mod/settings.php:797 +#: mod/settings.php:787 msgid "Upload File" msgstr "" -#: mod/settings.php:799 +#: mod/settings.php:789 msgid "Relocate" msgstr "" -#: mod/settings.php:800 +#: mod/settings.php:790 msgid "" "If you have moved this profile from another server, and some of your " "contacts don't receive your updates, try pushing this button." msgstr "" -#: mod/settings.php:801 +#: mod/settings.php:791 msgid "Resend relocate message to contacts" msgstr "" @@ -2205,15 +2201,15 @@ msgstr "" msgid "Friend Suggestions" msgstr "" -#: mod/tagger.php:90 src/Content/Item.php:346 src/Model/Item.php:2624 +#: mod/tagger.php:79 src/Content/Item.php:346 src/Model/Item.php:2624 msgid "photo" msgstr "" -#: mod/tagger.php:90 src/Content/Item.php:341 src/Content/Item.php:350 +#: mod/tagger.php:79 src/Content/Item.php:341 src/Content/Item.php:350 msgid "status" msgstr "" -#: mod/tagger.php:123 src/Content/Item.php:360 +#: mod/tagger.php:112 src/Content/Item.php:360 #, php-format msgid "%1$s tagged %2$s's %3$s with %4$s" msgstr "" @@ -2231,46 +2227,46 @@ msgstr "" msgid "Remove" msgstr "" -#: mod/uimport.php:45 +#: mod/uimport.php:46 msgid "User imports on closed servers can only be done by an administrator." msgstr "" -#: mod/uimport.php:54 src/Module/Register.php:86 +#: mod/uimport.php:55 src/Module/Register.php:86 msgid "" "This site has exceeded the number of allowed daily account registrations. " "Please try again tomorrow." msgstr "" -#: mod/uimport.php:61 src/Module/Register.php:162 +#: mod/uimport.php:62 src/Module/Register.php:162 msgid "Import" msgstr "" -#: mod/uimport.php:63 +#: mod/uimport.php:64 msgid "Move account" msgstr "" -#: mod/uimport.php:64 +#: mod/uimport.php:65 msgid "You can import an account from another Friendica server." msgstr "" -#: mod/uimport.php:65 +#: mod/uimport.php:66 msgid "" "You need to export your account from the old server and upload it here. We " "will recreate your old account here with all your contacts. We will try also " "to inform your friends that you moved here." msgstr "" -#: mod/uimport.php:66 +#: mod/uimport.php:67 msgid "" "This feature is experimental. We can't import contacts from the OStatus " "network (GNU Social/Statusnet) or from Diaspora" msgstr "" -#: mod/uimport.php:67 +#: mod/uimport.php:68 msgid "Account file" msgstr "" -#: mod/uimport.php:67 +#: mod/uimport.php:68 msgid "" "To export your account, go to \"Settings->Export your personal data\" and " "select \"Export account\"" @@ -2306,54 +2302,54 @@ msgstr "" msgid "Unable to unfollow this contact, please contact your administrator" msgstr "" -#: mod/wall_attach.php:42 mod/wall_attach.php:49 mod/wall_attach.php:87 -#: mod/wall_upload.php:52 mod/wall_upload.php:63 mod/wall_upload.php:108 -#: mod/wall_upload.php:159 mod/wall_upload.php:162 +#: mod/wall_attach.php:39 mod/wall_attach.php:46 mod/wall_attach.php:77 +#: mod/wall_upload.php:52 mod/wall_upload.php:63 mod/wall_upload.php:99 +#: mod/wall_upload.php:150 mod/wall_upload.php:153 msgid "Invalid request." msgstr "" -#: mod/wall_attach.php:105 +#: mod/wall_attach.php:95 msgid "Sorry, maybe your upload is bigger than the PHP configuration allows" msgstr "" -#: mod/wall_attach.php:105 +#: mod/wall_attach.php:95 msgid "Or - did you try to upload an empty file?" msgstr "" -#: mod/wall_attach.php:116 +#: mod/wall_attach.php:106 #, php-format msgid "File exceeds size limit of %s" msgstr "" -#: mod/wall_attach.php:131 +#: mod/wall_attach.php:121 msgid "File upload failed." msgstr "" -#: mod/wall_upload.php:233 src/Model/Photo.php:1014 +#: mod/wall_upload.php:224 src/Model/Photo.php:998 msgid "Wall Photos" msgstr "" -#: mod/wallmessage.php:68 mod/wallmessage.php:129 +#: mod/wallmessage.php:61 mod/wallmessage.php:115 #, php-format msgid "Number of daily wall messages for %s exceeded. Message failed." msgstr "" -#: mod/wallmessage.php:79 +#: mod/wallmessage.php:72 msgid "Unable to check your home location." msgstr "" -#: mod/wallmessage.php:103 mod/wallmessage.php:112 +#: mod/wallmessage.php:96 mod/wallmessage.php:103 msgid "No recipient." msgstr "" -#: mod/wallmessage.php:143 +#: mod/wallmessage.php:129 #, php-format msgid "" "If you wish for %s to respond, please check that the privacy settings on " "your site allow private mail from unknown senders." msgstr "" -#: src/App.php:453 +#: src/App.php:456 msgid "No system theme config value set." msgstr "" @@ -3360,11 +3356,11 @@ msgstr "" msgid "Encrypted content" msgstr "" -#: src/Content/Text/BBCode.php:1997 +#: src/Content/Text/BBCode.php:1996 msgid "Invalid source protocol" msgstr "" -#: src/Content/Text/BBCode.php:2012 +#: src/Content/Text/BBCode.php:2011 msgid "Invalid link protocol" msgstr "" @@ -3928,137 +3924,137 @@ msgstr "" msgid "Could not connect to database." msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:442 +#: src/Core/L10n.php:377 src/Model/Event.php:425 #: src/Module/Settings/Display.php:183 msgid "Monday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:443 +#: src/Core/L10n.php:377 src/Model/Event.php:426 msgid "Tuesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:444 +#: src/Core/L10n.php:377 src/Model/Event.php:427 msgid "Wednesday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:445 +#: src/Core/L10n.php:377 src/Model/Event.php:428 msgid "Thursday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:446 +#: src/Core/L10n.php:377 src/Model/Event.php:429 msgid "Friday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:447 +#: src/Core/L10n.php:377 src/Model/Event.php:430 msgid "Saturday" msgstr "" -#: src/Core/L10n.php:377 src/Model/Event.php:441 +#: src/Core/L10n.php:377 src/Model/Event.php:424 #: src/Module/Settings/Display.php:183 msgid "Sunday" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:462 +#: src/Core/L10n.php:381 src/Model/Event.php:445 msgid "January" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:463 +#: src/Core/L10n.php:381 src/Model/Event.php:446 msgid "February" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:464 +#: src/Core/L10n.php:381 src/Model/Event.php:447 msgid "March" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:465 +#: src/Core/L10n.php:381 src/Model/Event.php:448 msgid "April" msgstr "" -#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:453 +#: src/Core/L10n.php:381 src/Core/L10n.php:401 src/Model/Event.php:436 msgid "May" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:466 +#: src/Core/L10n.php:381 src/Model/Event.php:449 msgid "June" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:467 +#: src/Core/L10n.php:381 src/Model/Event.php:450 msgid "July" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:468 +#: src/Core/L10n.php:381 src/Model/Event.php:451 msgid "August" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:469 +#: src/Core/L10n.php:381 src/Model/Event.php:452 msgid "September" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:470 +#: src/Core/L10n.php:381 src/Model/Event.php:453 msgid "October" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:471 +#: src/Core/L10n.php:381 src/Model/Event.php:454 msgid "November" msgstr "" -#: src/Core/L10n.php:381 src/Model/Event.php:472 +#: src/Core/L10n.php:381 src/Model/Event.php:455 msgid "December" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:434 +#: src/Core/L10n.php:397 src/Model/Event.php:417 msgid "Mon" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:435 +#: src/Core/L10n.php:397 src/Model/Event.php:418 msgid "Tue" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:436 +#: src/Core/L10n.php:397 src/Model/Event.php:419 msgid "Wed" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:437 +#: src/Core/L10n.php:397 src/Model/Event.php:420 msgid "Thu" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:438 +#: src/Core/L10n.php:397 src/Model/Event.php:421 msgid "Fri" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:439 +#: src/Core/L10n.php:397 src/Model/Event.php:422 msgid "Sat" msgstr "" -#: src/Core/L10n.php:397 src/Model/Event.php:433 +#: src/Core/L10n.php:397 src/Model/Event.php:416 msgid "Sun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:449 +#: src/Core/L10n.php:401 src/Model/Event.php:432 msgid "Jan" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:450 +#: src/Core/L10n.php:401 src/Model/Event.php:433 msgid "Feb" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:451 +#: src/Core/L10n.php:401 src/Model/Event.php:434 msgid "Mar" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:452 +#: src/Core/L10n.php:401 src/Model/Event.php:435 msgid "Apr" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:454 +#: src/Core/L10n.php:401 src/Model/Event.php:437 msgid "Jun" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:455 +#: src/Core/L10n.php:401 src/Model/Event.php:438 msgid "Jul" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:456 +#: src/Core/L10n.php:401 src/Model/Event.php:439 msgid "Aug" msgstr "" @@ -4066,15 +4062,15 @@ msgstr "" msgid "Sep" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:458 +#: src/Core/L10n.php:401 src/Model/Event.php:441 msgid "Oct" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:459 +#: src/Core/L10n.php:401 src/Model/Event.php:442 msgid "Nov" msgstr "" -#: src/Core/L10n.php:401 src/Model/Event.php:460 +#: src/Core/L10n.php:401 src/Model/Event.php:443 msgid "Dec" msgstr "" @@ -4388,71 +4384,71 @@ msgstr "" msgid "Unable to retrieve contact information." msgstr "" -#: src/Model/Event.php:52 src/Model/Event.php:881 +#: src/Model/Event.php:52 src/Model/Event.php:853 #: src/Module/Debug/Localtime.php:38 msgid "l F d, Y \\@ g:i A" msgstr "" -#: src/Model/Event.php:79 src/Model/Event.php:96 src/Model/Event.php:481 -#: src/Model/Event.php:951 +#: src/Model/Event.php:73 src/Model/Event.php:90 src/Model/Event.php:464 +#: src/Model/Event.php:897 msgid "Starts:" msgstr "" -#: src/Model/Event.php:82 src/Model/Event.php:102 src/Model/Event.php:482 -#: src/Model/Event.php:955 +#: src/Model/Event.php:76 src/Model/Event.php:96 src/Model/Event.php:465 +#: src/Model/Event.php:901 msgid "Finishes:" msgstr "" -#: src/Model/Event.php:431 +#: src/Model/Event.php:414 msgid "all-day" msgstr "" -#: src/Model/Event.php:457 +#: src/Model/Event.php:440 msgid "Sept" msgstr "" -#: src/Model/Event.php:479 +#: src/Model/Event.php:462 msgid "No events to display" msgstr "" -#: src/Model/Event.php:597 +#: src/Model/Event.php:578 msgid "l, F j" msgstr "" -#: src/Model/Event.php:628 +#: src/Model/Event.php:609 msgid "Edit event" msgstr "" -#: src/Model/Event.php:629 +#: src/Model/Event.php:610 msgid "Duplicate event" msgstr "" -#: src/Model/Event.php:630 +#: src/Model/Event.php:611 msgid "Delete event" msgstr "" -#: src/Model/Event.php:882 +#: src/Model/Event.php:854 msgid "D g:i A" msgstr "" -#: src/Model/Event.php:883 +#: src/Model/Event.php:855 msgid "g:i A" msgstr "" -#: src/Model/Event.php:970 src/Model/Event.php:972 +#: src/Model/Event.php:916 src/Model/Event.php:918 msgid "Show map" msgstr "" -#: src/Model/Event.php:971 +#: src/Model/Event.php:917 msgid "Hide map" msgstr "" -#: src/Model/Event.php:1063 +#: src/Model/Event.php:1009 #, php-format msgid "%s's birthday" msgstr "" -#: src/Model/Event.php:1064 +#: src/Model/Event.php:1010 #, php-format msgid "Happy Birthday %s" msgstr "" @@ -4609,7 +4605,7 @@ msgstr "" msgid "Enter a valid existing folder" msgstr "" -#: src/Model/User.php:208 src/Model/User.php:1055 +#: src/Model/User.php:208 src/Model/User.php:1046 msgid "SERIOUS ERROR: Generation of security keys failed." msgstr "" @@ -4640,107 +4636,107 @@ msgid "" "The password can't contain accentuated letters, white spaces or colons (:)" msgstr "" -#: src/Model/User.php:935 +#: src/Model/User.php:926 msgid "Passwords do not match. Password unchanged." msgstr "" -#: src/Model/User.php:942 +#: src/Model/User.php:933 msgid "An invitation is required." msgstr "" -#: src/Model/User.php:946 +#: src/Model/User.php:937 msgid "Invitation could not be verified." msgstr "" -#: src/Model/User.php:954 +#: src/Model/User.php:945 msgid "Invalid OpenID url" msgstr "" -#: src/Model/User.php:967 src/Security/Authentication.php:223 +#: src/Model/User.php:958 src/Security/Authentication.php:223 msgid "" "We encountered a problem while logging in with the OpenID you provided. " "Please check the correct spelling of the ID." msgstr "" -#: src/Model/User.php:967 src/Security/Authentication.php:223 +#: src/Model/User.php:958 src/Security/Authentication.php:223 msgid "The error message was:" msgstr "" -#: src/Model/User.php:973 +#: src/Model/User.php:964 msgid "Please enter the required information." msgstr "" -#: src/Model/User.php:987 +#: src/Model/User.php:978 #, php-format msgid "" "system.username_min_length (%s) and system.username_max_length (%s) are " "excluding each other, swapping values." msgstr "" -#: src/Model/User.php:994 +#: src/Model/User.php:985 #, php-format msgid "Username should be at least %s character." msgid_plural "Username should be at least %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:998 +#: src/Model/User.php:989 #, php-format msgid "Username should be at most %s character." msgid_plural "Username should be at most %s characters." msgstr[0] "" msgstr[1] "" -#: src/Model/User.php:1006 +#: src/Model/User.php:997 msgid "That doesn't appear to be your full (First Last) name." msgstr "" -#: src/Model/User.php:1011 +#: src/Model/User.php:1002 msgid "Your email domain is not among those allowed on this site." msgstr "" -#: src/Model/User.php:1015 +#: src/Model/User.php:1006 msgid "Not a valid email address." msgstr "" -#: src/Model/User.php:1018 +#: src/Model/User.php:1009 msgid "The nickname was blocked from registration by the nodes admin." msgstr "" -#: src/Model/User.php:1022 src/Model/User.php:1030 +#: src/Model/User.php:1013 src/Model/User.php:1021 msgid "Cannot use that email." msgstr "" -#: src/Model/User.php:1037 +#: src/Model/User.php:1028 msgid "Your nickname can only contain a-z, 0-9 and _." msgstr "" -#: src/Model/User.php:1045 src/Model/User.php:1102 +#: src/Model/User.php:1036 src/Model/User.php:1093 msgid "Nickname is already registered. Please choose another." msgstr "" -#: src/Model/User.php:1089 src/Model/User.php:1093 +#: src/Model/User.php:1080 src/Model/User.php:1084 msgid "An error occurred during registration. Please try again." msgstr "" -#: src/Model/User.php:1116 +#: src/Model/User.php:1107 msgid "An error occurred creating your default profile. Please try again." msgstr "" -#: src/Model/User.php:1123 +#: src/Model/User.php:1114 msgid "An error occurred creating your self contact. Please try again." msgstr "" -#: src/Model/User.php:1128 +#: src/Model/User.php:1119 msgid "Friends" msgstr "" -#: src/Model/User.php:1132 +#: src/Model/User.php:1123 msgid "" "An error occurred creating your default contact group. Please try again." msgstr "" -#: src/Model/User.php:1361 +#: src/Model/User.php:1352 #, php-format msgid "" "\n" @@ -4748,7 +4744,7 @@ msgid "" "\t\t\tthe administrator of %2$s has set up an account for you." msgstr "" -#: src/Model/User.php:1364 +#: src/Model/User.php:1355 #, php-format msgid "" "\n" @@ -4785,12 +4781,12 @@ msgid "" "\t\tThank you and welcome to %4$s." msgstr "" -#: src/Model/User.php:1397 src/Model/User.php:1504 +#: src/Model/User.php:1388 src/Model/User.php:1495 #, php-format msgid "Registration details for %s" msgstr "" -#: src/Model/User.php:1417 +#: src/Model/User.php:1408 #, php-format msgid "" "\n" @@ -4806,12 +4802,12 @@ msgid "" "\t\t" msgstr "" -#: src/Model/User.php:1436 +#: src/Model/User.php:1427 #, php-format msgid "Registration at %s" msgstr "" -#: src/Model/User.php:1460 +#: src/Model/User.php:1451 #, php-format msgid "" "\n" @@ -4820,7 +4816,7 @@ msgid "" "\t\t\t" msgstr "" -#: src/Model/User.php:1468 +#: src/Model/User.php:1459 #, php-format msgid "" "\n" @@ -8670,17 +8666,17 @@ msgstr "" msgid "Visible to:" msgstr "" -#: src/Module/Photo.php:98 +#: src/Module/Photo.php:115 #, php-format msgid "The Photo with id %s is not available." msgstr "" -#: src/Module/Photo.php:132 +#: src/Module/Photo.php:148 #, php-format msgid "Invalid external resource with url %s." msgstr "" -#: src/Module/Photo.php:134 +#: src/Module/Photo.php:150 #, php-format msgid "Invalid photo with id %s." msgstr "" @@ -10455,7 +10451,7 @@ msgstr "" msgid "Show fewer" msgstr "" -#: src/Protocol/Diaspora.php:3417 +#: src/Protocol/Diaspora.php:3414 msgid "Attachments:" msgstr "" @@ -10565,12 +10561,12 @@ msgstr "" msgid "Login failed. Please check your credentials." msgstr "" -#: src/Security/Authentication.php:349 +#: src/Security/Authentication.php:348 #, php-format msgid "Welcome %s" msgstr "" -#: src/Security/Authentication.php:350 +#: src/Security/Authentication.php:349 msgid "Please upload a profile photo." msgstr "" @@ -10601,64 +10597,69 @@ msgstr "" msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: src/Util/Temporal.php:314 +#: src/Util/Temporal.php:275 +#, php-format +msgid "Time zone: %s Change in Settings" +msgstr "" + +#: src/Util/Temporal.php:318 msgid "never" msgstr "" -#: src/Util/Temporal.php:321 +#: src/Util/Temporal.php:325 msgid "less than a second ago" msgstr "" -#: src/Util/Temporal.php:329 +#: src/Util/Temporal.php:333 msgid "year" msgstr "" -#: src/Util/Temporal.php:329 +#: src/Util/Temporal.php:333 msgid "years" msgstr "" -#: src/Util/Temporal.php:330 +#: src/Util/Temporal.php:334 msgid "months" msgstr "" -#: src/Util/Temporal.php:331 +#: src/Util/Temporal.php:335 msgid "weeks" msgstr "" -#: src/Util/Temporal.php:332 +#: src/Util/Temporal.php:336 msgid "days" msgstr "" -#: src/Util/Temporal.php:333 +#: src/Util/Temporal.php:337 msgid "hour" msgstr "" -#: src/Util/Temporal.php:333 +#: src/Util/Temporal.php:337 msgid "hours" msgstr "" -#: src/Util/Temporal.php:334 +#: src/Util/Temporal.php:338 msgid "minute" msgstr "" -#: src/Util/Temporal.php:334 +#: src/Util/Temporal.php:338 msgid "minutes" msgstr "" -#: src/Util/Temporal.php:335 +#: src/Util/Temporal.php:339 msgid "second" msgstr "" -#: src/Util/Temporal.php:335 +#: src/Util/Temporal.php:339 msgid "seconds" msgstr "" -#: src/Util/Temporal.php:345 +#: src/Util/Temporal.php:349 #, php-format msgid "in %1$d %2$s" msgstr "" -#: src/Util/Temporal.php:348 +#: src/Util/Temporal.php:352 #, php-format msgid "%1$d %2$s ago" msgstr ""