1
1
Fork 0

Merge remote-tracking branch 'upstream/develop' into more-q

This commit is contained in:
Michael 2021-10-03 19:49:11 +00:00
commit 1d86d79778
39 changed files with 664 additions and 712 deletions

View file

@ -1,6 +1,6 @@
-- ------------------------------------------ -- ------------------------------------------
-- Friendica 2021.12-dev (Siberian Iris) -- 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', `location` text COMMENT 'event location',
`type` varchar(20) NOT NULL DEFAULT '' COMMENT 'event or birthday', `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', `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', `ignore` boolean NOT NULL DEFAULT '0' COMMENT '0 or 1',
`allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'', `allow_cid` mediumtext COMMENT 'Access Control - list of allowed contact.id \'<19><78>\'',
`allow_gid` mediumtext COMMENT 'Access Control - list of allowed groups', `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`.`location` AS `event-location`,
`event`.`type` AS `event-type`, `event`.`type` AS `event-type`,
`event`.`nofinish` AS `event-nofinish`, `event`.`nofinish` AS `event-nofinish`,
`event`.`adjust` AS `event-adjust`,
`event`.`ignore` AS `event-ignore`, `event`.`ignore` AS `event-ignore`,
`diaspora-interaction`.`interaction` AS `signed_text`, `diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`, `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`.`location` AS `event-location`,
`event`.`type` AS `event-type`, `event`.`type` AS `event-type`,
`event`.`nofinish` AS `event-nofinish`, `event`.`nofinish` AS `event-nofinish`,
`event`.`adjust` AS `event-adjust`,
`event`.`ignore` AS `event-ignore`, `event`.`ignore` AS `event-ignore`,
`diaspora-interaction`.`interaction` AS `signed_text`, `diaspora-interaction`.`interaction` AS `signed_text`,
`parent-item-uri`.`guid` AS `parent-guid`, `parent-item-uri`.`guid` AS `parent-guid`,

View file

@ -439,12 +439,6 @@ Ex: Wed May 23 06:01:13 +0000 2007
<td>Optional. Location.</td> <td>Optional. Location.</td>
</tr> </tr>
<tr>
<td><code>adjust</code></td>
<td>Boolean</td>
<td>???</td>
</tr>
<tr> <tr>
<td><code>ignore</code></td> <td><code>ignore</code></td>
<td>Boolean</td> <td>Boolean</td>

View file

@ -23,7 +23,6 @@ Fields
| location | event location | text | YES | | NULL | | | location | event location | text | YES | | NULL | |
| type | event or birthday | varchar(20) | NO | | | | | type | event or birthday | varchar(20) | NO | | | |
| nofinish | if event does have no end this is 1 | boolean | NO | | 0 | | | 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 | | | ignore | 0 or 1 | boolean | NO | | 0 | |
| allow_cid | Access Control - list of allowed contact.id '<19><78>' | mediumtext | YES | | NULL | | | 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 | | | allow_gid | Access Control - list of allowed groups | mediumtext | YES | | NULL | |

View file

@ -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. 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. 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 * **Title**: a title for the event
* **Description**: a longer description for the event * **Description**: a longer description for the event
* **Location**: the location the event will took place * **Location**: the location the event will took place

View file

@ -185,16 +185,11 @@ function cal_content(App $a)
$start = DateTimeFormat::utc($start); $start = DateTimeFormat::utc($start);
$finish = DateTimeFormat::utc($finish); $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 // put the event parametes in an array so we can better transmit them
$event_params = [ $event_params = [
'event_id' => intval($_GET['id'] ?? 0), 'event_id' => intval($_GET['id'] ?? 0),
'start' => $start, 'start' => $start,
'finish' => $finish, 'finish' => $finish,
'adjust_start' => $adjust_start,
'adjust_finish' => $adjust_finish,
'ignore' => $ignored, 'ignore' => $ignored,
]; ];
@ -210,7 +205,7 @@ function cal_content(App $a)
if (DBA::isResult($r)) { if (DBA::isResult($r)) {
$r = Event::sortByDate($r); $r = Event::sortByDate($r);
foreach ($r as $rr) { 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])) { if (empty($links[$j])) {
$links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j; $links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j;
} }
@ -229,11 +224,7 @@ function cal_content(App $a)
if (!empty($_GET['id'])) { if (!empty($_GET['id'])) {
$tpl = Renderer::getMarkupTemplate("event.tpl"); $tpl = Renderer::getMarkupTemplate("event.tpl");
} else { } else {
// if (DI::config()->get('experimentals','new_calendar')==1){
$tpl = Renderer::getMarkupTemplate("events_js.tpl"); $tpl = Renderer::getMarkupTemplate("events_js.tpl");
// } else {
// $tpl = Renderer::getMarkupTemplate("events.tpl");
// }
} }
// Get rid of dashes in key names, Smarty3 can't handle them // Get rid of dashes in key names, Smarty3 can't handle them

View file

@ -49,12 +49,6 @@ function events_init(App $a)
return; 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'])) { if (empty(DI::page()['aside'])) {
DI::page()['aside'] = ''; DI::page()['aside'] = '';
} }
@ -80,7 +74,6 @@ function events_post(App $a)
$start_text = Strings::escapeHtml($_REQUEST['start_text'] ?? ''); $start_text = Strings::escapeHtml($_REQUEST['start_text'] ?? '');
$finish_text = Strings::escapeHtml($_REQUEST['finish_text'] ?? ''); $finish_text = Strings::escapeHtml($_REQUEST['finish_text'] ?? '');
$adjust = intval($_POST['adjust'] ?? 0);
$nofinish = intval($_POST['nofinish'] ?? 0); $nofinish = intval($_POST['nofinish'] ?? 0);
$share = intval($_POST['share'] ?? 0); $share = intval($_POST['share'] ?? 0);
@ -99,16 +92,9 @@ function events_post(App $a)
$finish = $finish_text; $finish = $finish_text;
} }
if ($adjust) { $start = DateTimeFormat::convert($start, 'UTC', $a->getTimeZone());
$start = DateTimeFormat::convert($start, 'UTC', date_default_timezone_get()); if (!$nofinish) {
if (!$nofinish) { $finish = DateTimeFormat::convert($finish, 'UTC', $a->getTimeZone());
$finish = DateTimeFormat::convert($finish, 'UTC', date_default_timezone_get());
}
} else {
$start = DateTimeFormat::utc($start);
if (!$nofinish) {
$finish = DateTimeFormat::utc($finish);
}
} }
// Don't allow the event to finish before it begins. // Don't allow the event to finish before it begins.
@ -127,7 +113,6 @@ function events_post(App $a)
'location' => $location, 'location' => $location,
'start' => $start_text, 'start' => $start_text,
'finish' => $finish_text, 'finish' => $finish_text,
'adjust' => $adjust,
'nofinish' => $nofinish, 'nofinish' => $nofinish,
]; ];
@ -196,7 +181,6 @@ function events_post(App $a)
$datarray['desc'] = $desc; $datarray['desc'] = $desc;
$datarray['location'] = $location; $datarray['location'] = $location;
$datarray['type'] = $type; $datarray['type'] = $type;
$datarray['adjust'] = $adjust;
$datarray['nofinish'] = $nofinish; $datarray['nofinish'] = $nofinish;
$datarray['uid'] = $uid; $datarray['uid'] = $uid;
$datarray['cid'] = $cid; $datarray['cid'] = $cid;
@ -331,28 +315,11 @@ function events_content(App $a)
$start = sprintf('%d-%d-%d %d:%d:%d', $y, $m, 1, 0, 0, 0); $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); $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);
$adjust_start = DateTimeFormat::local($start);
$adjust_finish = DateTimeFormat::local($finish);
// put the event parametes in an array so we can better transmit them // put the event parametes in an array so we can better transmit them
$event_params = [ $event_params = [
'event_id' => intval($_GET['id'] ?? 0), 'event_id' => intval($_GET['id'] ?? 0),
'start' => $start, 'start' => $start,
'finish' => $finish, 'finish' => $finish,
'adjust_start' => $adjust_start,
'adjust_finish' => $adjust_finish,
'ignore' => $ignored, 'ignore' => $ignored,
]; ];
@ -368,7 +335,7 @@ function events_content(App $a)
if (DBA::isResult($r)) { if (DBA::isResult($r)) {
$r = Event::sortByDate($r); $r = Event::sortByDate($r);
foreach ($r as $rr) { 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])) { if (empty($links[$j])) {
$links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j; $links[$j] = DI::baseUrl() . '/' . DI::args()->getCommand() . '#link-' . $j;
} }
@ -383,12 +350,6 @@ function events_content(App $a)
$events = Event::prepareListForTemplate($r); $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'])) { if (!empty($_GET['id'])) {
$tpl = Renderer::getMarkupTemplate("event.tpl"); $tpl = Renderer::getMarkupTemplate("event.tpl");
} else { } else {
@ -457,7 +418,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 // 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['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['summary'])) {$orig_event['summary'] = $_REQUEST['summary'];}
if (!empty($_REQUEST['desc'])) {$orig_event['desc'] = $_REQUEST['desc'];} if (!empty($_REQUEST['desc'])) {$orig_event['desc'] = $_REQUEST['desc'];}
if (!empty($_REQUEST['location'])) {$orig_event['location'] = $_REQUEST['location'];} if (!empty($_REQUEST['location'])) {$orig_event['location'] = $_REQUEST['location'];}
@ -465,7 +425,6 @@ function events_content(App $a)
if (!empty($_REQUEST['finish'])) {$orig_event['finish'] = $_REQUEST['finish'];} if (!empty($_REQUEST['finish'])) {$orig_event['finish'] = $_REQUEST['finish'];}
$n_checked = (!empty($orig_event['nofinish']) ? ' checked="checked" ' : ''); $n_checked = (!empty($orig_event['nofinish']) ? ' checked="checked" ' : '');
$a_checked = (!empty($orig_event['adjust']) ? ' checked="checked" ' : '');
$t_orig = $orig_event['summary'] ?? ''; $t_orig = $orig_event['summary'] ?? '';
$d_orig = $orig_event['desc'] ?? ''; $d_orig = $orig_event['desc'] ?? '';
@ -481,24 +440,19 @@ function events_content(App $a)
$sdt = $orig_event['start'] ?? 'now'; $sdt = $orig_event['start'] ?? 'now';
$fdt = $orig_event['finish'] ?? 'now'; $fdt = $orig_event['finish'] ?? 'now';
$tz = date_default_timezone_get(); $syear = DateTimeFormat::local($sdt, 'Y');
if (isset($orig_event['adjust'])) { $smonth = DateTimeFormat::local($sdt, 'm');
$tz = ($orig_event['adjust'] ? date_default_timezone_get() : 'UTC'); $sday = DateTimeFormat::local($sdt, 'd');
}
$syear = DateTimeFormat::convert($sdt, $tz, 'UTC', 'Y'); $shour = !empty($orig_event) ? DateTimeFormat::local($sdt, 'H') : '00';
$smonth = DateTimeFormat::convert($sdt, $tz, 'UTC', 'm'); $sminute = !empty($orig_event) ? DateTimeFormat::local($sdt, 'i') : '00';
$sday = DateTimeFormat::convert($sdt, $tz, 'UTC', 'd');
$shour = !empty($orig_event) ? DateTimeFormat::convert($sdt, $tz, 'UTC', 'H') : '00'; $fyear = DateTimeFormat::local($fdt, 'Y');
$sminute = !empty($orig_event) ? DateTimeFormat::convert($sdt, $tz, 'UTC', 'i') : '00'; $fmonth = DateTimeFormat::local($fdt, 'm');
$fday = DateTimeFormat::local($fdt, 'd');
$fyear = DateTimeFormat::convert($fdt, $tz, 'UTC', 'Y'); $fhour = !empty($orig_event) ? DateTimeFormat::local($fdt, 'H') : '00';
$fmonth = DateTimeFormat::convert($fdt, $tz, 'UTC', 'm'); $fminute = !empty($orig_event) ? DateTimeFormat::local($fdt, 'i') : '00';
$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';
if (!$cid && in_array($mode, ['new', 'copy'])) { if (!$cid && in_array($mode, ['new', 'copy'])) {
$acl = ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), false, ACL::getDefaultUserPermissions($orig_event)); $acl = ACL::getFullSelectorHTML(DI::page(), $a->getLoggedInUserId(), false, ACL::getDefaultUserPermissions($orig_event));
@ -549,8 +503,6 @@ function events_content(App $a)
true, true,
'start_text' 'start_text'
), ),
'$a_text' => DI::l10n()->t('Adjust for viewer timezone'),
'$a_checked' => $a_checked,
'$d_text' => DI::l10n()->t('Description:'), '$d_text' => DI::l10n()->t('Description:'),
'$d_orig' => $d_orig, '$d_orig' => $d_orig,
'$l_text' => DI::l10n()->t('Location:'), '$l_text' => DI::l10n()->t('Location:'),
@ -562,7 +514,6 @@ function events_content(App $a)
'$share' => ['share', DI::l10n()->t('Share this event'), $share_checked, '', $share_disabled], '$share' => ['share', DI::l10n()->t('Share this event'), $share_checked, '', $share_disabled],
'$sh_checked' => $share_checked, '$sh_checked' => $share_checked,
'$nofinish' => ['nofinish', DI::l10n()->t('Finish date/time is not known or not relevant'), $n_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'), '$preview' => DI::l10n()->t('Preview'),
'$acl' => $acl, '$acl' => $acl,
'$submit' => DI::l10n()->t('Submit'), '$submit' => DI::l10n()->t('Submit'),

View file

@ -686,7 +686,7 @@ function item_post(App $a) {
Hook::callAll('post_local',$datarray); Hook::callAll('post_local',$datarray);
if (!empty($_REQUEST['scheduled_at'])) { 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()) { if ($scheduled_at > DateTimeFormat::utcNow()) {
unset($datarray['created']); unset($datarray['created']);
unset($datarray['edited']); unset($datarray['edited']);

View file

@ -219,7 +219,7 @@ function ping_init(App $a)
$all_events = count($ev); $all_events = count($ev);
if ($all_events) { if ($all_events) {
$str_now = DateTimeFormat::timezoneNow($a->getTimeZone(), 'Y-m-d'); $str_now = DateTimeFormat::localNow('Y-m-d');
foreach ($ev as $x) { foreach ($ev as $x) {
$bd = false; $bd = false;
if ($x['type'] === 'birthday') { if ($x['type'] === 'birthday') {
@ -228,7 +228,7 @@ function ping_init(App $a)
} else { } else {
$events ++; $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 ++; $all_events_today ++;
if ($bd) { if ($bd) {
$birthdays_today ++; $birthdays_today ++;

View file

@ -333,7 +333,7 @@ function settings_post(App $a)
} }
if (($timezone != $user['timezone']) && strlen($timezone)) { if (($timezone != $user['timezone']) && strlen($timezone)) {
date_default_timezone_set($timezone); $a->setTimeZone($timezone);
} }
$aclFormatter = DI::aclFormatter(); $aclFormatter = DI::aclFormatter();
@ -601,7 +601,7 @@ function settings_content(App $a)
$expire_network_only = DI::pConfig()->get(local_user(), 'expire', 'network_only', false); $expire_network_only = DI::pConfig()->get(local_user(), 'expire', 'network_only', false);
if (!strlen($user['timezone'])) { 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 // Set the account type to "Community" when the page is a community page but the account type doesn't fit

View file

@ -40,6 +40,7 @@ use Friendica\Model\Profile;
use Friendica\Module\Special\HTTPException as ModuleHTTPException; use Friendica\Module\Special\HTTPException as ModuleHTTPException;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
use Friendica\Util\ConfigFileLoader; use Friendica\Util\ConfigFileLoader;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\HTTPSignature; use Friendica\Util\HTTPSignature;
use Friendica\Util\Profiler; use Friendica\Util\Profiler;
use Friendica\Util\Strings; use Friendica\Util\Strings;
@ -217,12 +218,13 @@ class App
/** /**
* Set the timezone * 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 * @return void
*/ */
public function setTimeZone(string $timezone) 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); 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 // This has to be quite large to deal with embedded private photos
ini_set('pcre.backtrack_limit', 500000); ini_set('pcre.backtrack_limit', 500000);
@ -372,15 +377,13 @@ class App
private function loadDefaultTimezone() private function loadDefaultTimezone()
{ {
if ($this->config->get('system', 'default_timezone')) { if ($this->config->get('system', 'default_timezone')) {
$this->timezone = $this->config->get('system', 'default_timezone'); $timezone = $this->config->get('system', 'default_timezone', 'UTC');
} else { } else {
global $default_timezone; global $default_timezone;
$this->timezone = !empty($default_timezone) ? $default_timezone : 'UTC'; $timezone = $default_timezone ?? '' ?: 'UTC';
} }
if ($this->timezone) { $this->setTimeZone($timezone);
date_default_timezone_set($this->timezone);
}
} }
/** /**

View file

@ -1857,7 +1857,6 @@ class BBCode
$text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism", $sub, $text); $text = preg_replace("/\[event\-start\](.*?)\[\/event\-start\]/ism", $sub, $text);
$text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism", '', $text); $text = preg_replace("/\[event\-finish\](.*?)\[\/event\-finish\]/ism", '', $text);
$text = preg_replace("/\[event\-location\](.*?)\[\/event\-location\]/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); $text = preg_replace("/\[event\-id\](.*?)\[\/event\-id\]/ism", '', $text);
} }

View file

@ -61,9 +61,6 @@ class Worker
*/ */
public static function processQueue($run_cron = true) 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); self::$up_start = microtime(true);
// At first check the maximum load. We shouldn't continue with a high load // At first check the maximum load. We shouldn't continue with a high load

View file

@ -51,16 +51,10 @@ class Event
$bd_format = DI::l10n()->t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8 AM. $bd_format = DI::l10n()->t('l F d, Y \@ g:i A'); // Friday January 18, 2011 @ 8 AM.
$event_start = DI::l10n()->getDay( $event_start = DI::l10n()->getDay(DateTimeFormat::local($event['start'], $bd_format));
!empty($event['adjust']) ?
DateTimeFormat::local($event['start'], $bd_format) : DateTimeFormat::utc($event['start'], $bd_format)
);
if (!empty($event['finish'])) { if (!empty($event['finish'])) {
$event_end = DI::l10n()->getDay( $event_end = DI::l10n()->getDay(DateTimeFormat::local($event['finish'], $bd_format));
!empty($event['adjust']) ?
DateTimeFormat::local($event['finish'], $bd_format) : DateTimeFormat::utc($event['finish'], $bd_format)
);
} else { } else {
$event_end = ''; $event_end = '';
} }
@ -94,13 +88,13 @@ class Event
$o .= '<div class="summary event-summary">' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . '</div>' . "\r\n"; $o .= '<div class="summary event-summary">' . BBCode::convertForUriId($uriid, Strings::escapeHtml($event['summary']), $simple) . '</div>' . "\r\n";
$o .= '<div class="event-start"><span class="event-label">' . DI::l10n()->t('Starts:') . '</span>&nbsp;<span class="dtstart" title="' $o .= '<div class="event-start"><span class="event-label">' . DI::l10n()->t('Starts:') . '</span>&nbsp;<span class="dtstart" title="'
. DateTimeFormat::utc($event['start'], (!empty($event['adjust']) ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s')) . DateTimeFormat::local($event['start'], DateTimeFormat::ATOM)
. '" >' . $event_start . '" >' . $event_start
. '</span></div>' . "\r\n"; . '</span></div>' . "\r\n";
if (!$event['nofinish']) { if (!$event['nofinish']) {
$o .= '<div class="event-end" ><span class="event-label">' . DI::l10n()->t('Finishes:') . '</span>&nbsp;<span class="dtend" title="' $o .= '<div class="event-end" ><span class="event-label">' . DI::l10n()->t('Finishes:') . '</span>&nbsp;<span class="dtend" title="'
. DateTimeFormat::utc($event['finish'], (!empty($event['adjust']) ? DateTimeFormat::ATOM : 'Y-m-d\TH:i:s')) . DateTimeFormat::local($event['finish'], DateTimeFormat::ATOM)
. '" >' . $event_end . '" >' . $event_end
. '</span></div>' . "\r\n"; . '</span></div>' . "\r\n";
} }
@ -157,10 +151,6 @@ class Event
$o .= '[event-location]' . $event['location'] . '[/event-location]'; $o .= '[event-location]' . $event['location'] . '[/event-location]';
} }
if ($event['adjust']) {
$o .= '[event-adjust]' . $event['adjust'] . '[/event-adjust]';
}
return $o; return $o;
} }
@ -200,11 +190,6 @@ class Event
$ev['location'] = $match[1]; $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; $ev['nofinish'] = !empty($ev['start']) && empty($ev['finish']) ? 1 : 0;
return $ev; return $ev;
@ -218,8 +203,8 @@ class Event
private static function compareDatesCallback($event_a, $event_b) private static function compareDatesCallback($event_a, $event_b)
{ {
$date_a = (($event_a['adjust']) ? DateTimeFormat::local($event_a['start']) : $event_a['start']); $date_a = DateTimeFormat::local($event_a['start']);
$date_b = (($event_b['adjust']) ? DateTimeFormat::local($event_b['start']) : $event_b['start']); $date_b = DateTimeFormat::local($event_b['start']);
if ($date_a === $date_b) { if ($date_a === $date_b) {
return strcasecmp($event_a['desc'], $event_b['desc']); return strcasecmp($event_a['desc'], $event_b['desc']);
@ -274,7 +259,6 @@ class Event
$event['allow_gid'] = $arr['allow_gid'] ?? ''; $event['allow_gid'] = $arr['allow_gid'] ?? '';
$event['deny_cid'] = $arr['deny_cid'] ?? ''; $event['deny_cid'] = $arr['deny_cid'] ?? '';
$event['deny_gid'] = $arr['deny_gid'] ?? ''; $event['deny_gid'] = $arr['deny_gid'] ?? '';
$event['adjust'] = intval($arr['adjust'] ?? 0);
$event['nofinish'] = intval($arr['nofinish'] ?? (!empty($event['start']) && empty($event['finish']))); $event['nofinish'] = intval($arr['nofinish'] ?? (!empty($event['start']) && empty($event['finish'])));
$event['created'] = DateTimeFormat::utc(($arr['created'] ?? '') ?: 'now'); $event['created'] = DateTimeFormat::utc(($arr['created'] ?? '') ?: 'now');
@ -305,7 +289,6 @@ class Event
'desc' => $event['desc'], 'desc' => $event['desc'],
'location' => $event['location'], 'location' => $event['location'],
'type' => $event['type'], 'type' => $event['type'],
'adjust' => $event['adjust'],
'nofinish' => $event['nofinish'], 'nofinish' => $event['nofinish'],
]; ];
@ -547,8 +530,6 @@ class Event
* int 'ignore' => * int 'ignore' =>
* string 'start' => Start time of the timeframe. * string 'start' => Start time of the timeframe.
* string 'finish' => Finish 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). * @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` $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` LEFT JOIN `post-user` ON `post-user`.`event-id` = `event`.`id` AND `post-user`.`uid` = `event`.`uid`
WHERE `event`.`uid` = ? AND `event`.`ignore` = ? WHERE `event`.`uid` = ? AND `event`.`ignore` = ?
AND ((NOT `adjust` AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?) AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?
OR (`adjust` AND (`finish` >= ? OR (`nofinish` AND `start` >= ?)) AND `start` <= ?))" . $sql_extra, " . $sql_extra,
$owner_uid, $event_params["ignore"], $owner_uid, $event_params['ignore'],
$event_params["start"], $event_params["start"], $event_params["finish"], $event_params['start'], $event_params['start'], $event_params['finish']
$event_params["adjust_start"], $event_params["adjust_start"], $event_params["adjust_finish"])); ));
if (DBA::isResult($events)) { if (DBA::isResult($events)) {
$return = self::removeDuplicates($events); $return = self::removeDuplicates($events);
@ -604,15 +585,15 @@ class Event
$event = array_merge($event, $item); $event = array_merge($event, $item);
$start = $event['adjust'] ? DateTimeFormat::local($event['start'], 'c') : DateTimeFormat::utc($event['start'], 'c'); $start = DateTimeFormat::local($event['start'], 'c');
$j = $event['adjust'] ? DateTimeFormat::local($event['start'], 'j') : DateTimeFormat::utc($event['start'], 'j'); $j = DateTimeFormat::local($event['start'], 'j');
$day = $event['adjust'] ? DateTimeFormat::local($event['start'], $fmt) : DateTimeFormat::utc($event['start'], $fmt); $day = DateTimeFormat::local($event['start'], $fmt);
$day = DI::l10n()->getDay($day); $day = DI::l10n()->getDay($day);
if ($event['nofinish']) { if ($event['nofinish']) {
$end = null; $end = null;
} else { } 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); $is_first = ($day !== $last_date);
@ -720,23 +701,14 @@ class Event
// but test your solution against http://icalvalid.cloudapp.net/ // but test your solution against http://icalvalid.cloudapp.net/
// also long lines SHOULD be split at 75 characters length // also long lines SHOULD be split at 75 characters length
foreach ($events as $event) { foreach ($events as $event) {
if ($event['adjust'] == 1) {
$UTC = 'Z';
} else {
$UTC = '';
}
$o .= 'BEGIN:VEVENT' . PHP_EOL; $o .= 'BEGIN:VEVENT' . PHP_EOL;
if ($event['start']) { if ($event['start']) {
$tmp = strtotime($event['start']); $o .= 'DTSTART:' . DateTimeFormat::utc($event['start'], 'Ymd\THis\Z') . PHP_EOL;
$dtformat = "%Y%m%dT%H%M%S" . $UTC;
$o .= 'DTSTART:' . strftime($dtformat, $tmp) . PHP_EOL;
} }
if (!$event['nofinish']) { if (!$event['nofinish']) {
$tmp = strtotime($event['finish']); $o .= 'DTEND:' . DateTimeFormat::utc($event['finish'], 'Ymd\THis\Z') . PHP_EOL;
$dtformat = "%Y%m%dT%H%M%S" . $UTC;
$o .= 'DTEND:' . strftime($dtformat, $tmp) . PHP_EOL;
} }
if ($event['summary']) { if ($event['summary']) {
@ -793,7 +765,7 @@ class Event
return $return; return $return;
} }
$fields = ['start', 'finish', 'adjust', 'summary', 'desc', 'location', 'nofinish']; $fields = ['start', 'finish', 'summary', 'desc', 'location', 'nofinish'];
$conditions = ['uid' => $uid, 'cid' => 0]; $conditions = ['uid' => $uid, 'cid' => 0];
@ -883,48 +855,22 @@ class Event
$tformat = DI::l10n()->t('g:i A'); // 8:01 AM. $tformat = DI::l10n()->t('g:i A'); // 8:01 AM.
// Convert the time to different formats. // Convert the time to different formats.
$dtstart_dt = DI::l10n()->getDay( $dtstart_dt = DI::l10n()->getDay(DateTimeFormat::local($item['event-start'], $dformat));
$item['event-adjust'] ? $dtstart_title = DateTimeFormat::utc($item['event-start'], DateTimeFormat::ATOM);
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');
// Format: Jan till Dec. // Format: Jan till Dec.
$month_short = DI::l10n()->getDayShort( $month_short = DI::l10n()->getDayShort(DateTimeFormat::local($item['event-start'], 'M'));
$item['event-adjust'] ?
DateTimeFormat::local($item['event-start'], 'M')
: DateTimeFormat::utc($item['event-start'], 'M')
);
// Format: 1 till 31. // Format: 1 till 31.
$date_short = $item['event-adjust'] ? $date_short = DateTimeFormat::local($item['event-start'], 'j');
DateTimeFormat::local($item['event-start'], 'j') $start_time = DateTimeFormat::local($item['event-start'], $tformat);
: DateTimeFormat::utc($item['event-start'], 'j'); $start_short = DI::l10n()->getDayShort(DateTimeFormat::local($item['event-start'], $dformat_short));
$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)
);
// If the option 'nofinisch' isn't set, we need to format the finish date/time. // If the option 'nofinisch' isn't set, we need to format the finish date/time.
if (!$item['event-nofinish']) { if (!$item['event-nofinish']) {
$finish = true; $finish = true;
$dtend_dt = DI::l10n()->getDay( $dtend_dt = DI::l10n()->getDay(DateTimeFormat::local($item['event-finish'], $dformat));
$item['event-adjust'] ? $dtend_title = DateTimeFormat::utc($item['event-finish'], DateTimeFormat::ATOM);
DateTimeFormat::local($item['event-finish'], $dformat) $end_short = DI::l10n()->getDayShort(DateTimeFormat::utc($item['event-finish'], $dformat_short));
: DateTimeFormat::utc($item['event-finish'], $dformat) $end_time = DateTimeFormat::local($item['event-finish'], $tformat);
);
$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);
// Check if start and finish time is at the same day. // Check if start and finish time is at the same day.
if (substr($dtstart_title, 0, 10) === substr($dtend_title, 0, 10)) { if (substr($dtstart_title, 0, 10) === substr($dtend_title, 0, 10)) {
$same_date = true; $same_date = true;
@ -1063,7 +1009,6 @@ class Event
'summary' => DI::l10n()->t('%s\'s birthday', $contact['name']), 'summary' => DI::l10n()->t('%s\'s birthday', $contact['name']),
'desc' => DI::l10n()->t('Happy Birthday %s', ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'), 'desc' => DI::l10n()->t('Happy Birthday %s', ' [url=' . $contact['url'] . ']' . $contact['name'] . '[/url]'),
'type' => 'birthday', 'type' => 'birthday',
'adjust' => 0
]; ];
self::store($values); self::store($values);

View file

@ -88,7 +88,7 @@ class Item
'writable', 'self', 'cid', 'alias', 'writable', 'self', 'cid', 'alias',
'event-created', 'event-edited', 'event-start', 'event-finish', 'event-created', 'event-edited', 'event-start', 'event-finish',
'event-summary', 'event-desc', 'event-location', 'event-type', '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' 'delivery_queue_count', 'delivery_queue_done', 'delivery_queue_failed'
]; ];
@ -103,7 +103,7 @@ class Item
'thr-parent-id', 'parent-uri-id', 'postopts', 'pubmail', 'thr-parent-id', 'parent-uri-id', 'postopts', 'pubmail',
'event-created', 'event-edited', 'event-start', 'event-finish', 'event-created', 'event-edited', 'event-start', 'event-finish',
'event-summary', 'event-desc', 'event-location', 'event-type', '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 // All fields in the item table
const ITEM_FIELDLIST = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent', const ITEM_FIELDLIST = ['id', 'uid', 'parent', 'uri', 'parent-uri', 'thr-parent',

View file

@ -555,7 +555,7 @@ class Profile
$rr['link'] = Contact::magicLinkById($rr['cid']); $rr['link'] = Contact::magicLinkById($rr['cid']);
$rr['title'] = $rr['name']; $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['startime'] = null;
$rr['today'] = $today; $rr['today'] = $today;
} }
@ -614,8 +614,8 @@ class Profile
$total++; $total++;
} }
$strt = DateTimeFormat::convert($rr['start'], $rr['adjust'] ? $a->getTimeZone() : 'UTC', 'UTC', 'Y-m-d'); $strt = DateTimeFormat::local($rr['start'], 'Y-m-d');
if ($strt === DateTimeFormat::timezoneNow($a->getTimeZone(), 'Y-m-d')) { if ($strt === DateTimeFormat::localNow('Y-m-d')) {
$istoday = true; $istoday = true;
} }
@ -630,17 +630,17 @@ class Profile
$description = DI::l10n()->t('[No description]'); $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; 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['title'] = $title;
$rr['description'] = $description; $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['startime'] = $strt;
$rr['today'] = $today; $rr['today'] = $today;

View file

@ -61,7 +61,7 @@ class Index extends BaseApi
'type' => $event['type'], 'type' => $event['type'],
'nofinish' => $event['nofinish'], 'nofinish' => $event['nofinish'],
'place' => $event['location'], 'place' => $event['location'],
'adjust' => $event['adjust'], 'adjust' => 1,
'ignore' => $event['ignore'], 'ignore' => $event['ignore'],
'allow_cid' => $event['allow_cid'], 'allow_cid' => $event['allow_cid'],
'allow_gid' => $event['allow_gid'], 'allow_gid' => $event['allow_gid'],

View file

@ -372,10 +372,10 @@ class Network extends BaseModule
} }
if (self::$dateFrom) { 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) { 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) { if (self::$groupId) {

104
src/Module/Events/Json.php Normal file
View file

@ -0,0 +1,104 @@
<?php
namespace Friendica\Module\Events;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Event;
use Friendica\Model\Item;
use Friendica\Model\Post;
use Friendica\Network\HTTPException;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal;
class Json extends \Friendica\BaseModule
{
public static function rawContent(array $parameters = [])
{
if (!local_user()) {
throw new HTTPException\UnauthorizedException();
}
$y = intval(DateTimeFormat::localNow('Y'));
$m = intval(DateTimeFormat::localNow('m'));
// Put some limit on dates. The PHP date functions don't seem to do so well before 1900.
if ($y < 1901) {
$y = 1900;
}
$dim = Temporal::getDaysInMonth($y, $m);
$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 (!empty($_GET['start'])) {
$start = $_GET['start'];
}
if (!empty($_GET['end'])) {
$finish = $_GET['end'];
}
// 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,
'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);
}
}

View file

@ -151,10 +151,10 @@ class Status extends BaseProfile
} }
if (!empty($datequery)) { 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)) { 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? // Does the profile page belong to a forum?

View file

@ -104,11 +104,11 @@ class Notify extends BaseDepository
$fields = [ $fields = [
'type' => $Notify->type, 'type' => $Notify->type,
'name' => $Notify->name, 'name' => $Notify->name,
'url' => $Notify->url, 'url' => (string)$Notify->url,
'photo' => $Notify->photo, 'photo' => (string)$Notify->photo,
'msg' => $Notify->msg, 'msg' => $Notify->msg,
'uid' => $Notify->uid, 'uid' => $Notify->uid,
'link' => $Notify->link, 'link' => (string)$Notify->link,
'iid' => $Notify->itemId, 'iid' => $Notify->itemId,
'parent' => $Notify->parent, 'parent' => $Notify->parent,
'seen' => $Notify->seen, 'seen' => $Notify->seen,

View file

@ -408,7 +408,6 @@ class Processor
$event['finish'] = $activity['end-time']; $event['finish'] = $activity['end-time'];
$event['nofinish'] = empty($event['finish']); $event['nofinish'] = empty($event['finish']);
$event['location'] = $activity['location']; $event['location'] = $activity['location'];
$event['adjust'] = $activity['adjust'] ?? true;
$event['cid'] = $item['contact-id']; $event['cid'] = $item['contact-id'];
$event['uid'] = $item['uid']; $event['uid'] = $item['uid'];
$event['uri'] = $item['uri']; $event['uri'] = $item['uri'];

View file

@ -1389,7 +1389,6 @@ class Receiver
$object_data = self::getSource($object, $object_data); $object_data = self::getSource($object, $object_data);
$object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value'); $object_data['start-time'] = JsonLD::fetchElement($object, 'as:startTime', '@value');
$object_data['end-time'] = JsonLD::fetchElement($object, 'as:endTime', '@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['location'] = $location;
$object_data['latitude'] = JsonLD::fetchElement($object, 'as:location', 'as:latitude', '@type', 'as:Place'); $object_data['latitude'] = JsonLD::fetchElement($object, 'as:location', 'as:latitude', '@type', 'as:Place');
$object_data['latitude'] = JsonLD::fetchElement($object_data, 'latitude', '@value'); $object_data['latitude'] = JsonLD::fetchElement($object_data, 'latitude', '@value');

View file

@ -1476,10 +1476,10 @@ class Transmitter
$event = []; $event = [];
$event['name'] = $item['event-summary']; $event['name'] = $item['event-summary'];
$event['content'] = BBCode::convertForUriId($item['uri-id'], $item['event-desc'], BBCode::ACTIVITYPUB); $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']) { 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'])) { if (!empty($item['event-location'])) {
@ -1487,7 +1487,8 @@ class Transmitter
$event['location'] = self::createLocation($item); $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; return $event;
} }

View file

@ -488,10 +488,7 @@ class DFRN
XML::addElement($doc, $author, "poco:note", $profile["about"]); XML::addElement($doc, $author, "poco:note", $profile["about"]);
XML::addElement($doc, $author, "poco:preferredUsername", $profile["nickname"]); XML::addElement($doc, $author, "poco:preferredUsername", $profile["nickname"]);
$savetz = date_default_timezone_get(); XML::addElement($doc, $author, "poco:utcOffset", DateTimeFormat::timezoneNow($profile["timezone"], "P"));
date_default_timezone_set($profile["timezone"]);
XML::addElement($doc, $author, "poco:utcOffset", date("P"));
date_default_timezone_set($savetz);
if (trim($profile["homepage"]) != "") { if (trim($profile["homepage"]) != "") {
$urls = $doc->createElement("poco:urls"); $urls = $doc->createElement("poco:urls");

View file

@ -3314,15 +3314,12 @@ class Diaspora
$eventdata["all_day"] = "false"; $eventdata["all_day"] = "false";
$eventdata['timezone'] = 'UTC'; $eventdata['timezone'] = 'UTC';
if (!$event['adjust'] && $owner['timezone']) {
$eventdata['timezone'] = $owner['timezone'];
}
if ($event['start']) { 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']) { 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']) { if ($event['summary']) {
$eventdata['summary'] = html_entity_decode(BBCode::toMarkdown($event['summary'])); $eventdata['summary'] = html_entity_decode(BBCode::toMarkdown($event['summary']));

View file

@ -305,7 +305,6 @@ class Authentication
$this->session->set('new_member', time() < ($member_since + (60 * 60 * 24 * 14))); $this->session->set('new_member', time() < ($member_since + (60 * 60 * 24 * 14)));
if (strlen($user_record['timezone'])) { if (strlen($user_record['timezone'])) {
date_default_timezone_set($user_record['timezone']);
$a->setTimeZone($user_record['timezone']); $a->setTimeZone($user_record['timezone']);
} }

View file

@ -36,6 +36,13 @@ class DateTimeFormat
const HTTP = 'D, d M Y H:i:s \G\M\T'; const HTTP = 'D, d M Y H:i:s \G\M\T';
const JSON = 'Y-m-d\TH:i:s.v\Z'; 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. * convert() shorthand for UTC.
* *
@ -59,7 +66,7 @@ class DateTimeFormat
*/ */
public static function local($time, $format = self::MYSQL) 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'); $to_obj = new DateTimeZone('UTC');
} }
$d->setTimeZone($to_obj); $d->setTimezone($to_obj);
return $d->format($format); return $d->format($format);
} }

View file

@ -271,7 +271,11 @@ class Temporal
$id, $id,
$label, $label,
$input_text, $input_text,
'', DI::l10n()->t(
'Time zone: <strong>%s</strong> <a href="%s">Change in Settings</a>',
str_replace('_', ' ', DI::app()->getTimeZone()) . ' (GMT ' . DateTimeFormat::localNow('P') . ')',
DI::baseUrl() . '/settings'
),
$required ? '*' : '', $required ? '*' : '',
'placeholder="' . $readable_format . '"' 'placeholder="' . $readable_format . '"'
], ],
@ -284,7 +288,7 @@ class Temporal
'lang' => $lang, 'lang' => $lang,
'minfrom' => $minfrom, 'minfrom' => $minfrom,
'maxfrom' => $maxfrom, 'maxfrom' => $maxfrom,
] ],
]); ]);
return $o; return $o;
@ -360,23 +364,19 @@ class Temporal
* Returns the age in years, given a date of birth and the timezone of the person * Returns the age in years, given a date of birth and the timezone of the person
* whose date of birth is provided. * whose date of birth is provided.
* *
* @param string $dob Date of Birth * @param string $dob Date of Birth
* @param string $owner_tz (optional) Timezone of the person of interest * @param string $timezone Timezone of the person of interest
* *
* @return int Age in years * @return int Age in years
* @throws \Exception * @throws \Exception
*/ */
public static function getAgeByTimezone($dob, $owner_tz = ''): int public static function getAgeByTimezone(string $dob, string $timezone): int
{ {
if (!intval($dob)) { if (!intval($dob)) {
return 0; return 0;
} }
if (!$owner_tz) { $birthdate = new DateTime($dob . ' 00:00:00', new DateTimeZone($timezone));
$owner_tz = date_default_timezone_get();
}
$birthdate = new DateTime($dob . ' 00:00:00', new DateTimeZone($owner_tz));
$currentDate = new DateTime('now', new DateTimeZone('UTC')); $currentDate = new DateTime('now', new DateTimeZone('UTC'));
$interval = $birthdate->diff($currentDate); $interval = $birthdate->diff($currentDate);

View file

@ -55,7 +55,7 @@
use Friendica\Database\DBA; use Friendica\Database\DBA;
if (!defined('DB_UPDATE_VERSION')) { if (!defined('DB_UPDATE_VERSION')) {
define('DB_UPDATE_VERSION', 1435); define('DB_UPDATE_VERSION', 1436);
} }
return [ return [
@ -629,7 +629,6 @@ return [
"location" => ["type" => "text", "comment" => "event location"], "location" => ["type" => "text", "comment" => "event location"],
"type" => ["type" => "varchar(20)", "not null" => "1", "default" => "", "comment" => "event or birthday"], "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"], "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"], "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_cid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed contact.id '<19><78>'"],
"allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"], "allow_gid" => ["type" => "mediumtext", "comment" => "Access Control - list of allowed groups"],

View file

@ -186,7 +186,6 @@
"event-location" => ["event", "location"], "event-location" => ["event", "location"],
"event-type" => ["event", "type"], "event-type" => ["event", "type"],
"event-nofinish" => ["event", "nofinish"], "event-nofinish" => ["event", "nofinish"],
"event-adjust" => ["event", "adjust"],
"event-ignore" => ["event", "ignore"], "event-ignore" => ["event", "ignore"],
"signed_text" => ["diaspora-interaction", "interaction"], "signed_text" => ["diaspora-interaction", "interaction"],
"parent-guid" => ["parent-item-uri", "guid"], "parent-guid" => ["parent-item-uri", "guid"],
@ -345,7 +344,6 @@
"event-location" => ["event", "location"], "event-location" => ["event", "location"],
"event-type" => ["event", "type"], "event-type" => ["event", "type"],
"event-nofinish" => ["event", "nofinish"], "event-nofinish" => ["event", "nofinish"],
"event-adjust" => ["event", "adjust"],
"event-ignore" => ["event", "ignore"], "event-ignore" => ["event", "ignore"],
"signed_text" => ["diaspora-interaction", "interaction"], "signed_text" => ["diaspora-interaction", "interaction"],
"parent-guid" => ["parent-item-uri", "guid"], "parent-guid" => ["parent-item-uri", "guid"],

View file

@ -259,6 +259,8 @@ return [
'/dirfind' => [Module\Search\Directory::class, [R::GET]], '/dirfind' => [Module\Search\Directory::class, [R::GET]],
'/directory' => [Module\Directory::class, [R::GET]], '/directory' => [Module\Directory::class, [R::GET]],
'/events/json' => [Module\Events\Json::class, [R::GET]],
'/feed' => [ '/feed' => [
'/{nickname}' => [Module\Feed::class, [R::GET]], '/{nickname}' => [Module\Feed::class, [R::GET]],
'/{nickname}/posts' => [Module\Feed::class, [R::GET]], '/{nickname}/posts' => [Module\Feed::class, [R::GET]],

View file

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

View file

@ -18,8 +18,6 @@
{{include file="field_checkbox.tpl" field=$nofinish}} {{include file="field_checkbox.tpl" field=$nofinish}}
{{include file="field_checkbox.tpl" field=$adjust}}
{{include file="field_input.tpl" field=$summary}} {{include file="field_input.tpl" field=$summary}}

View file

@ -2351,12 +2351,6 @@ aside input[type='text'] {
font-weight: bold; font-weight: bold;
} }
#birthday-adjust {
float: left;
font-size: 75%;
margin-left: 10px;
}
#birthday-title-end { #birthday-title-end {
clear: both; clear: both;
} }
@ -2664,14 +2658,14 @@ aside input[type='text'] {
margin-bottom: 5px; margin-bottom: 5px;
} }
#event-nofinish-checkbox, #event-nofinish-text, #event-adjust-checkbox, #event-adjust-text { #event-nofinish-checkbox, #event-nofinish-text {
float: left; float: left;
} }
#event-datetime-break { #event-datetime-break {
margin-bottom: 10px; margin-bottom: 10px;
} }
#event-nofinish-break, #event-adjust-break { #event-nofinish-break {
clear: both; clear: both;
} }

View file

@ -42,7 +42,6 @@ $(document).ready(function () {
defaultView: "month", defaultView: "month",
aspectRatio: 1, aspectRatio: 1,
eventRender: function (event, element, view) { eventRender: function (event, element, view) {
//console.log(view.name);
switch (view.name) { switch (view.name) {
case "month": case "month":
element element
@ -52,8 +51,8 @@ $(document).ready(function () {
event.item["author-avatar"], event.item["author-avatar"],
event.item["author-name"], event.item["author-name"],
event.title, event.title,
event.item.desc, event.desc,
event.item.location, event.location,
), ),
); );
break; break;
@ -65,8 +64,8 @@ $(document).ready(function () {
"<img src='{0}' style='height:12px; width:12px'>{1}<p>{2}</p><p>{3}</p>".format( "<img src='{0}' style='height:12px; width:12px'>{1}<p>{2}</p><p>{3}</p>".format(
event.item["author-avatar"], event.item["author-avatar"],
event.item["author-name"], event.item["author-name"],
event.item.desc, event.desc,
htmlToText(event.item.location), htmlToText(event.location),
), ),
); );
break; break;
@ -78,8 +77,8 @@ $(document).ready(function () {
"<img src='{0}' style='height:24px;width:24px'>{1}<p>{2}</p><p>{3}</p>".format( "<img src='{0}' style='height:24px;width:24px'>{1}<p>{2}</p><p>{3}</p>".format(
event.item["author-avatar"], event.item["author-avatar"],
event.item["author-name"], event.item["author-name"],
event.item.desc, event.desc,
htmlToText(event.item.location), htmlToText(event.location),
), ),
); );
break; break;
@ -252,27 +251,24 @@ function eventHoverHtmlContent(event) {
moment.locale(locale); moment.locale(locale);
// format dates to different styles // format dates to different styles
var startDate = moment(event.item.start).format("dd HH:mm"); var startDate = event.start.format('dd HH:mm');
var endDate = moment(event.item.finsih).format("dd HH:mm"); var monthShort = event.start.format('MMM');
var monthShort = moment(event.item.start).format("MMM"); var dayNumberStart = event.start.format('DD');
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 formattedDate = startDate; var formattedDate = startDate;
// We only need the to format the end date if the event does have // We only need the to format the end date if the event does have
// a finish date. // 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; formattedDate = startDate + " - " + endTime;
// use a different Format (15. Feb - 18. Feb) if the events end date // use a different Format (15. Feb - 18. Feb) if the events end date
// is not the start date // is not the start date
if (dayNumberStart != dayNumberEnd) { if (dayNumberStart !== dayNumberEnd) {
formattedDate = formattedDate = event.start.format('Do MMM') + ' - ' + event.end.format('Do MMM');
moment(event.item.start).format("Do MMM") + " - " + moment(event.item.finish).format("Do MMM");
} }
} }
@ -280,8 +276,8 @@ function eventHoverHtmlContent(event) {
data = eventHoverBodyTemplate(); data = eventHoverBodyTemplate();
// Get only template data if there exists location data // Get only template data if there exists location data
if (event.item.location) { if (event.location) {
var eventLocationText = htmlToText(event.item.location); var eventLocationText = htmlToText(event.location);
// Get the the html template for formatting the location // Get the the html template for formatting the location
var eventLocationTemplate = eventHoverLocationTemplate(); var eventLocationTemplate = eventHoverLocationTemplate();
// Format the event location data according to the the event location // Format the event location data according to the the event location

View file

@ -49,9 +49,6 @@
{{* checkbox if the the event doesn't have a finish time *}} {{* checkbox if the the event doesn't have a finish time *}}
{{include file="field_checkbox.tpl" field=$nofinish}} {{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}}
</div> </div>
{{* checkbox to enable event sharing and the permissions tab *}} {{* checkbox to enable event sharing and the permissions tab *}}

View file

@ -15,8 +15,6 @@
{{$f_dsel nofilter}} {{$f_dsel nofilter}}
{{include file="field_checkbox.tpl" field=$nofinish}} {{include file="field_checkbox.tpl" field=$nofinish}}
{{include file="field_checkbox.tpl" field=$adjust}}
<hr> <hr>
{{include file="field_input.tpl" field=$summary}} {{include file="field_input.tpl" field=$summary}}
{{include file="field_textarea.tpl" field=array('desc', $d_text, $d_orig, "")}} {{include file="field_textarea.tpl" field=array('desc', $d_text, $d_orig, "")}}

View file

@ -3682,8 +3682,6 @@ margin-left: 0px;
#event-nofinish-checkbox, #event-nofinish-checkbox,
#event-nofinish-text, #event-nofinish-text,
#event-adjust-checkbox,
#event-adjust-text,
#event-share-checkbox { #event-share-checkbox {
float: left; float: left;
} }
@ -3693,7 +3691,6 @@ margin-left: 0px;
} }
#event-nofinish-break, #event-nofinish-break,
#event-adjust-break,
#event-share-break { #event-share-break {
clear: both; clear: both;
} }

View file

@ -19,8 +19,6 @@
{{include file="field_checkbox.tpl" field=$nofinish}} {{include file="field_checkbox.tpl" field=$nofinish}}
{{include file="field_checkbox.tpl" field=$adjust}}
{{include file="field_input.tpl" field=$summary}} {{include file="field_input.tpl" field=$summary}}