Merge remote-tracking branch 'upstream/develop' into untrusted

This commit is contained in:
Michael 2022-07-27 17:56:56 +00:00
commit ff9dc1e291
17 changed files with 777 additions and 304 deletions

View file

@ -171,18 +171,11 @@ function remote_user()
* @param string $s - Text of notice * @param string $s - Text of notice
* *
* @return void * @return void
* @deprecated since version 2022.09, use \Friendica\Navigation\SystemMessages instead
*/ */
function notice(string $s) function notice(string $s)
{ {
if (empty($_SESSION)) { \Friendica\DI::sysmsg()->addNotice($s);
return;
}
if (empty($_SESSION['sysmsg'])) {
$_SESSION['sysmsg'] = [];
}
$_SESSION['sysmsg'][] = $s;
} }
/** /**
@ -193,16 +186,9 @@ function notice(string $s)
* @param string $s - Text of notice * @param string $s - Text of notice
* *
* @return void * @return void
* @deprecated since version 2022.09, use \Friendica\Navigation\SystemMessages instead
*/ */
function info(string $s) function info(string $s)
{ {
if (empty($_SESSION)) { \Friendica\DI::sysmsg()->addInfo($s);
return;
}
if (empty($_SESSION['sysmsg_info'])) {
$_SESSION['sysmsg_info'] = [];
}
$_SESSION['sysmsg_info'][] = $s;
} }

View file

@ -648,10 +648,6 @@ class App
header('X-Account-Management-Status: none'); header('X-Account-Management-Status: none');
} }
$_SESSION['sysmsg'] = Core\Session::get('sysmsg', []);
$_SESSION['sysmsg_info'] = Core\Session::get('sysmsg_info', []);
$_SESSION['last_updated'] = Core\Session::get('last_updated', []);
/* /*
* check_config() is responsible for running update scripts. These automatically * check_config() is responsible for running update scripts. These automatically
* update the DB schema whenever we push a new one out. It also checks to see if * update the DB schema whenever we push a new one out. It also checks to see if

View file

@ -22,6 +22,7 @@
namespace Friendica; namespace Friendica;
use Dice\Dice; use Dice\Dice;
use Friendica\Navigation\SystemMessages;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
/** /**
@ -234,6 +235,14 @@ abstract class DI
return self::$dice->create(Core\System::class); return self::$dice->create(Core\System::class);
} }
/**
* @return \Friendica\Navigation\SystemMessages
*/
public static function sysmsg()
{
return self::$dice->create(SystemMessages::class);
}
// //
// "LoggerInterface" instances // "LoggerInterface" instances
// //

View file

@ -243,27 +243,31 @@ class Event
*/ */
public static function store(array $arr): int public static function store(array $arr): int
{ {
$event = []; $guid = $arr['guid'] ?? '' ?: System::createUUID();
$event['id'] = intval($arr['id'] ?? 0); $uri = $arr['uri'] ?? '' ?: Item::newURI($guid);
$event['uid'] = intval($arr['uid'] ?? 0); $event = [
$event['cid'] = intval($arr['cid'] ?? 0); 'id' => intval($arr['id'] ?? 0),
$event['guid'] = ($arr['guid'] ?? '') ?: System::createUUID(); 'uid' => intval($arr['uid'] ?? 0),
$event['uri'] = ($arr['uri'] ?? '') ?: Item::newURI($event['guid']); 'cid' => intval($arr['cid'] ?? 0),
$event['uri-id'] = ItemURI::insert(['uri' => $event['uri'], 'guid' => $event['guid']]); 'guid' => $guid,
$event['type'] = ($arr['type'] ?? '') ?: 'event'; 'uri' => $uri,
$event['summary'] = $arr['summary'] ?? ''; 'uri-id' => ItemURI::insert(['uri' => $uri, 'guid' => $guid]),
$event['desc'] = $arr['desc'] ?? ''; 'type' => ($arr['type'] ?? '') ?: 'event',
$event['location'] = $arr['location'] ?? ''; 'summary' => $arr['summary'] ?? '',
$event['allow_cid'] = $arr['allow_cid'] ?? ''; 'desc' => $arr['desc'] ?? '',
$event['allow_gid'] = $arr['allow_gid'] ?? ''; 'location' => $arr['location'] ?? '',
$event['deny_cid'] = $arr['deny_cid'] ?? ''; 'allow_cid' => $arr['allow_cid'] ?? '',
$event['deny_gid'] = $arr['deny_gid'] ?? ''; 'allow_gid' => $arr['allow_gid'] ?? '',
$event['nofinish'] = intval($arr['nofinish'] ?? (!empty($event['start']) && empty($event['finish']))); 'deny_cid' => $arr['deny_cid'] ?? '',
'deny_gid' => $arr['deny_gid'] ?? '',
'nofinish' => intval($arr['nofinish'] ?? (!empty($arr['start']) && empty($arr['finish']))),
'created' => DateTimeFormat::utc(($arr['created'] ?? '') ?: 'now'),
'edited' => DateTimeFormat::utc(($arr['edited'] ?? '') ?: 'now'),
'start' => DateTimeFormat::utc(($arr['start'] ?? '') ?: DBA::NULL_DATETIME),
'finish' => DateTimeFormat::utc(($arr['finish'] ?? '') ?: DBA::NULL_DATETIME),
];
$event['created'] = DateTimeFormat::utc(($arr['created'] ?? '') ?: 'now');
$event['edited'] = DateTimeFormat::utc(($arr['edited'] ?? '') ?: 'now');
$event['start'] = DateTimeFormat::utc(($arr['start'] ?? '') ?: DBA::NULL_DATETIME);
$event['finish'] = DateTimeFormat::utc(($arr['finish'] ?? '') ?: DBA::NULL_DATETIME);
if ($event['finish'] < DBA::NULL_DATETIME) { if ($event['finish'] < DBA::NULL_DATETIME) {
$event['finish'] = DBA::NULL_DATETIME; $event['finish'] = DBA::NULL_DATETIME;
} }

View file

@ -138,25 +138,29 @@ class Group
*/ */
public static function getIdsByContactId(int $cid): array public static function getIdsByContactId(int $cid): array
{ {
$return = []; $contact = Contact::getById($cid, ['rel']);
if (!$contact) {
return [];
}
$groupIds = [];
$stmt = DBA::select('group_member', ['gid'], ['contact-id' => $cid]); $stmt = DBA::select('group_member', ['gid'], ['contact-id' => $cid]);
while ($group = DBA::fetch($stmt)) { while ($group = DBA::fetch($stmt)) {
$return[] = $group['gid']; $groupIds[] = $group['gid'];
} }
DBA::close($stmt); DBA::close($stmt);
// Meta-groups // Meta-groups
$contact = Contact::getById($cid, ['rel']);
if ($contact['rel'] == Contact::FOLLOWER || $contact['rel'] == Contact::FRIEND) { if ($contact['rel'] == Contact::FOLLOWER || $contact['rel'] == Contact::FRIEND) {
$return[] = self::FOLLOWERS; $groupIds[] = self::FOLLOWERS;
} }
if ($contact['rel'] == Contact::FRIEND) { if ($contact['rel'] == Contact::FRIEND) {
$return[] = self::MUTUALS; $groupIds[] = self::MUTUALS;
} }
return $return; return $groupIds;
} }
/** /**

View file

@ -0,0 +1,163 @@
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Module\Admin\Blocklist\Server;
use Friendica\App;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\L10n;
use Friendica\Core\Renderer;
use Friendica\Module\Response;
use Friendica\Navigation\SystemMessages;
use Friendica\Util\Profiler;
use Psr\Log\LoggerInterface;
class Import extends \Friendica\Module\BaseAdmin
{
/** @var IManageConfigValues */
private $config;
/** @var SystemMessages */
private $sysmsg;
/** @var array of blocked server domain patterns */
private $blocklist = [];
public function __construct(IManageConfigValues $config, SystemMessages $sysmsg, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
{
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
$this->config = $config;
$this->sysmsg = $sysmsg;
}
/**
* @param array $request
* @return void
* @throws \Friendica\Network\HTTPException\ForbiddenException
* @throws \Friendica\Network\HTTPException\FoundException
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
* @throws \Friendica\Network\HTTPException\MovedPermanentlyException
* @throws \Friendica\Network\HTTPException\TemporaryRedirectException
*/
protected function post(array $request = [])
{
self::checkAdminAccess();
if (!isset($_POST['page_blocklist_upload']) && !isset($_POST['page_blocklist_import'])) {
return;
}
self::checkFormSecurityTokenRedirectOnError('/admin/blocklist/server/import', 'admin_blocklist_import');
if (isset($_POST['page_blocklist_upload'])) {
if (($fp = fopen($_FILES['listfile']['tmp_name'], 'r')) !== false) {
$blocklist = [];
while (($data = fgetcsv($fp, 1000, ',')) !== false) {
$domain = $data[0];
if (count($data) == 0) {
$reason = 'blocked';
} else {
$reason = $data[1];
}
$blocklist[] = [
'domain' => $domain,
'reason' => $reason
];
}
} else {
$this->sysmsg->addNotice($this->l10n->t('Error importing pattern file'));
return;
}
$this->blocklist = $blocklist;
return;
}
if (isset($_POST['page_blocklist_import'])) {
$blocklist = json_decode($_POST['blocklist'], true);
if ($blocklist === null) {
$this->sysmsg->addNotice($this->l10n->t('Error importing pattern file'));
return;
}
if (($_POST['mode'] ?? 'append') == 'replace') {
$this->config->set('system', 'blocklist', $blocklist);
$this->sysmsg->addNotice($this->l10n->t('Local blocklist replaced with the provided file.'));
} else {
$localBlocklist = $this->config->get('system', 'blocklist', []);
$localPatterns = array_column($localBlocklist, 'domain');
$importedPatterns = array_column($blocklist, 'domain');
$patternsToAppend = array_diff($importedPatterns, $localPatterns);
if (count($patternsToAppend)) {
foreach (array_keys($patternsToAppend) as $key) {
$localBlocklist[] = $blocklist[$key];
}
$this->config->set('system', 'blocklist', $localBlocklist);
$this->sysmsg->addNotice($this->l10n->tt('%d pattern was added to the local blocklist.', '%d patterns were added to the local blocklist.', count($patternsToAppend)));
} else {
$this->sysmsg->addNotice($this->l10n->t('No pattern was added to the local blocklist.'));
}
}
$this->baseUrl->redirect('/admin/blocklist/server');
}
}
/**
* @param array $request
* @return string
* @throws \Friendica\Network\HTTPException\ServiceUnavailableException
*/
protected function content(array $request = []): string
{
parent::content();
$t = Renderer::getMarkupTemplate('admin/blocklist/server/import.tpl');
return Renderer::replaceMacros($t, [
'$l10n' => [
'return_list' => $this->l10n->t('← Return to the list'),
'title' => $this->l10n->t('Administration'),
'page' => $this->l10n->t('Import a Server Domain Pattern Blocklist'),
'download' => $this->l10n->t('<p>This file can be downloaded from the <code>/friendica</code> path of any Friendica server.</p>'),
'upload' => $this->l10n->t('Upload file'),
'patterns' => $this->l10n->t('Patterns to import'),
'domain_pattern' => $this->l10n->t('Domain Pattern'),
'block_reason' => $this->l10n->t('Block Reason'),
'mode' => $this->l10n->t('Import Mode'),
'import' => $this->l10n->t('Import Patterns'),
'pattern_count' => $this->l10n->tt('%d total pattern', '%d total patterns', count($this->blocklist)),
],
'$listfile' => ['listfile', $this->l10n->t('Server domain pattern blocklist CSV file'), '', '', $this->l10n->t('Required'), '', 'file'],
'$mode_append' => ['mode', $this->l10n->t('Append'), 'append', $this->l10n->t('Imports patterns from the file that weren\'t already existing in the current blocklist.'), 'checked="checked"'],
'$mode_replace' => ['mode', $this->l10n->t('Replace'), 'replace', $this->l10n->t('Replaces the current blocklist by the imported patterns.')],
'$blocklist' => $this->blocklist,
'$baseurl' => $this->baseUrl->get(true),
'$form_security_token' => self::getFormSecurityToken('admin_blocklist_import')
]);
}
}

View file

@ -84,8 +84,10 @@ class Index extends BaseAdmin
<li><code>*</code>: Any number of characters</li> <li><code>*</code>: Any number of characters</li>
<li><code>?</code>: Any single character</li> <li><code>?</code>: Any single character</li>
</ul>'), </ul>'),
'importtitle' => DI::l10n()->t('Import server domain pattern blocklist'),
'addtitle' => DI::l10n()->t('Add new entry to the blocklist'), 'addtitle' => DI::l10n()->t('Add new entry to the blocklist'),
'submit' => DI::l10n()->t('Check pattern'), 'importsubmit' => DI::l10n()->t('Upload file'),
'addsubmit' => DI::l10n()->t('Check pattern'),
'savechanges' => DI::l10n()->t('Save changes to the blocklist'), 'savechanges' => DI::l10n()->t('Save changes to the blocklist'),
'currenttitle' => DI::l10n()->t('Current Entries in the Blocklist'), 'currenttitle' => DI::l10n()->t('Current Entries in the Blocklist'),
'thurl' => DI::l10n()->t('Blocked server domain pattern'), 'thurl' => DI::l10n()->t('Blocked server domain pattern'),
@ -93,10 +95,12 @@ class Index extends BaseAdmin
'delentry' => DI::l10n()->t('Delete entry from the blocklist'), 'delentry' => DI::l10n()->t('Delete entry from the blocklist'),
'confirm_delete' => DI::l10n()->t('Delete entry from the blocklist?'), 'confirm_delete' => DI::l10n()->t('Delete entry from the blocklist?'),
], ],
'$listfile' => ['listfile', DI::l10n()->t('Server domain pattern blocklist CSV file'), '', '', DI::l10n()->t('Required'), '', 'file'],
'$newdomain' => ['pattern', DI::l10n()->t('Server Domain Pattern'), '', DI::l10n()->t('The domain pattern of the new server to add to the blocklist. Do not include the protocol.'), DI::l10n()->t('Required'), '', ''], '$newdomain' => ['pattern', DI::l10n()->t('Server Domain Pattern'), '', DI::l10n()->t('The domain pattern of the new server to add to the blocklist. Do not include the protocol.'), DI::l10n()->t('Required'), '', ''],
'$entries' => $blocklistform, '$entries' => $blocklistform,
'$baseurl' => DI::baseUrl()->get(true), '$baseurl' => DI::baseUrl()->get(true),
'$form_security_token' => self::getFormSecurityToken('admin_blocklist') '$form_security_token' => self::getFormSecurityToken('admin_blocklist'),
'$form_security_token_import' => self::getFormSecurityToken('admin_blocklist_import'),
]); ]);
} }
} }

View file

@ -0,0 +1,71 @@
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Module\Blocklist\Domain;
use Friendica\App;
use Friendica\Core\Config\Capability\IManageConfigValues;
use Friendica\Core\L10n;
use Friendica\Core\System;
use Friendica\Module\Response;
use Friendica\Util\Profiler;
use Psr\Log\LoggerInterface;
class Download extends \Friendica\BaseModule
{
/** @var IManageConfigValues */
private $config;
public function __construct(IManageConfigValues $config, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
{
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
$this->config = $config;
}
protected function rawContent(array $request = [])
{
$blocklist = $this->config->get('system', 'blocklist');
$blocklistJson = json_encode($blocklist, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
$hash = md5($blocklistJson);
$etag = 'W/"' . $hash . '"';
if (trim($_SERVER['HTTP_IF_NONE_MATCH'] ?? '') == $etag) {
header("HTTP/1.1 304 Not Modified");
}
header('Content-Type: text/csv');
header('Content-Transfer-Encoding: Binary');
header('Content-disposition: attachment; filename="' . $this->baseUrl->getHostname() . '_domain_blocklist_' . substr($hash, 0, 6) . '.csv"');
header("Etag: $etag");
$fp = fopen('php://output', 'w');
foreach ($blocklist as $domain) {
fputcsv($fp, $domain);
}
fclose($fp);
System::exit();
}
}

View file

@ -59,13 +59,13 @@ class Notify extends BaseModule
} }
} }
private static function dispatchPublic(string $postdata) private static function dispatchPublic(string $postdata): bool
{ {
$msg = Diaspora::decodeRaw($postdata, '', true); $msg = Diaspora::decodeRaw($postdata, '', true);
if (!is_array($msg)) { if (!is_array($msg)) {
// We have to fail silently to be able to hand it over to the salmon parser // We have to fail silently to be able to hand it over to the salmon parser
Logger::warning('Diaspora::decodeRaw() has failed for some reason.'); Logger::warning('Diaspora::decodeRaw() has failed for some reason.');
return; return false;
} }
// Fetch the corresponding public contact // Fetch the corresponding public contact
@ -87,6 +87,8 @@ class Notify extends BaseModule
// Now we should be able to import it // Now we should be able to import it
$ret = DFRN::import($msg['message'], $importer, Conversation::PARCEL_DIASPORA_DFRN, Conversation::RELAY); $ret = DFRN::import($msg['message'], $importer, Conversation::PARCEL_DIASPORA_DFRN, Conversation::RELAY);
System::xmlExit($ret, 'Done'); System::xmlExit($ret, 'Done');
return true;
} }
private static function dispatchPrivate(array $user, string $postdata) private static function dispatchPrivate(array $user, string $postdata)

View file

@ -76,12 +76,13 @@ class Friendica extends BaseModule
if (!empty($blockList)) { if (!empty($blockList)) {
$blocked = [ $blocked = [
'title' => DI::l10n()->t('On this server the following remote servers are blocked.'), 'title' => DI::l10n()->t('On this server the following remote servers are blocked.'),
'header' => [ 'header' => [
DI::l10n()->t('Blocked domain'), DI::l10n()->t('Blocked domain'),
DI::l10n()->t('Reason for the block'), DI::l10n()->t('Reason for the block'),
], ],
'list' => $blockList, 'download' => DI::l10n()->t('Download this list in CSV format'),
'list' => $blockList,
]; ];
} else { } else {
$blocked = null; $blocked = null;

View file

@ -42,6 +42,7 @@ use Friendica\Navigation\Notifications\Exception\NoMessageException;
use Friendica\Navigation\Notifications\Factory; use Friendica\Navigation\Notifications\Factory;
use Friendica\Navigation\Notifications\Repository; use Friendica\Navigation\Notifications\Repository;
use Friendica\Navigation\Notifications\ValueObject; use Friendica\Navigation\Notifications\ValueObject;
use Friendica\Navigation\SystemMessages;
use Friendica\Protocol\Activity; use Friendica\Protocol\Activity;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Profiler; use Friendica\Util\Profiler;
@ -50,6 +51,8 @@ use Psr\Log\LoggerInterface;
class Ping extends BaseModule class Ping extends BaseModule
{ {
/** @var SystemMessages */
private $systemMessages;
/** @var Repository\Notification */ /** @var Repository\Notification */
private $notificationRepo; private $notificationRepo;
/** @var Introduction */ /** @var Introduction */
@ -57,10 +60,11 @@ class Ping extends BaseModule
/** @var Factory\FormattedNavNotification */ /** @var Factory\FormattedNavNotification */
private $formattedNavNotification; private $formattedNavNotification;
public function __construct(Repository\Notification $notificationRepo, Introduction $introductionRepo, Factory\FormattedNavNotification $formattedNavNotification, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = []) public function __construct(SystemMessages $systemMessages, Repository\Notification $notificationRepo, Introduction $introductionRepo, Factory\FormattedNavNotification $formattedNavNotification, L10n $l10n, App\BaseURL $baseUrl, App\Arguments $args, LoggerInterface $logger, Profiler $profiler, Response $response, array $server, array $parameters = [])
{ {
parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters); parent::__construct($l10n, $baseUrl, $args, $logger, $profiler, $response, $server, $parameters);
$this->systemMessages = $systemMessages;
$this->notificationRepo = $notificationRepo; $this->notificationRepo = $notificationRepo;
$this->introductionRepo = $introductionRepo; $this->introductionRepo = $introductionRepo;
$this->formattedNavNotification = $formattedNavNotification; $this->formattedNavNotification = $formattedNavNotification;
@ -256,19 +260,6 @@ class Ping extends BaseModule
usort($navNotifications, $sort_function); usort($navNotifications, $sort_function);
} }
$sysmsgs = [];
$sysmsgs_info = [];
if (!empty($_SESSION['sysmsg'])) {
$sysmsgs = $_SESSION['sysmsg'];
unset($_SESSION['sysmsg']);
}
if (!empty($_SESSION['sysmsg_info'])) {
$sysmsgs_info = $_SESSION['sysmsg_info'];
unset($_SESSION['sysmsg_info']);
}
$notification_count = $sysnotify_count + $intro_count + $register_count; $notification_count = $sysnotify_count + $intro_count + $register_count;
$data = []; $data = [];
@ -289,8 +280,8 @@ class Ping extends BaseModule
$data['notifications'] = $navNotifications; $data['notifications'] = $navNotifications;
$data['sysmsgs'] = [ $data['sysmsgs'] = [
'notice' => $sysmsgs, 'notice' => $this->systemMessages->flushNotices(),
'info' => $sysmsgs_info 'info' => $this->systemMessages->flushInfos(),
]; ];
if (isset($_GET['callback'])) { if (isset($_GET['callback'])) {

View file

@ -0,0 +1,87 @@
<?php
/**
* @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Friendica is a communications platform for integrated social communications
* utilising decentralised communications and linkage to several indie social
* projects - as well as popular mainstream providers.
*
* Our mission is to free our friends and families from the clutches of
* data-harvesting corporations, and pave the way to a future where social
* communications are free and open and flow between alternate providers as
* easily as email does today.
*/
namespace Friendica\Navigation;
use Friendica\Core\Session\Capability\IHandleSessions;
class SystemMessages
{
/**
* @var IHandleSessions
*/
private $session;
public function __construct(IHandleSessions $session)
{
$this->session = $session;
}
public function addNotice(string $message)
{
$sysmsg = $this->getNotices();
$sysmsg[] = $message;
$this->session->set('sysmsg', $sysmsg);
}
public function getNotices(): array
{
return $this->session->get('sysmsg', []);
}
public function flushNotices(): array
{
$notices = $this->getNotices();
$this->session->remove('sysmsg');
return $notices;
}
public function addInfo(string $message)
{
$sysmsg = $this->getNotices();
$sysmsg[] = $message;
$this->session->set('sysmsg_info', $sysmsg);
}
public function getInfos(): array
{
return $this->session->get('sysmsg_info', []);
}
public function flushInfos(): array
{
$notices = $this->getInfos();
$this->session->remove('sysmsg_info');
return $notices;
}
}

View file

@ -310,9 +310,10 @@ return [
'/addons/{addon}' => [Module\Admin\Addons\Details::class, [R::GET, R::POST]], '/addons/{addon}' => [Module\Admin\Addons\Details::class, [R::GET, R::POST]],
'/blocklist/contact' => [Module\Admin\Blocklist\Contact::class, [R::GET, R::POST]], '/blocklist/contact' => [Module\Admin\Blocklist\Contact::class, [R::GET, R::POST]],
'/blocklist/server' => [Module\Admin\Blocklist\Server\Index::class, [R::GET, R::POST]], '/blocklist/server' => [Module\Admin\Blocklist\Server\Index::class, [R::GET, R::POST]],
'/blocklist/server/add' => [Module\Admin\Blocklist\Server\Add::class, [R::GET, R::POST]], '/blocklist/server/add' => [Module\Admin\Blocklist\Server\Add::class, [R::GET, R::POST]],
'/blocklist/server/import' => [Module\Admin\Blocklist\Server\Import::class, [R::GET, R::POST]],
'/dbsync[/{action}[/{update:\d+}]]' => [Module\Admin\DBSync::class, [R::GET]], '/dbsync[/{action}[/{update:\d+}]]' => [Module\Admin\DBSync::class, [R::GET]],
@ -353,6 +354,9 @@ return [
'/attach/{item:\d+}' => [Module\Attach::class, [R::GET]], '/attach/{item:\d+}' => [Module\Attach::class, [R::GET]],
'/babel' => [Module\Debug\Babel::class, [R::GET, R::POST]], '/babel' => [Module\Debug\Babel::class, [R::GET, R::POST]],
'/debug/ap' => [Module\Debug\ActivityPubConversion::class, [R::GET, R::POST]], '/debug/ap' => [Module\Debug\ActivityPubConversion::class, [R::GET, R::POST]],
'/blocklist/domain/download' => [Module\Blocklist\Domain\Download::class, [R::GET]],
'/bookmarklet' => [Module\Bookmarklet::class, [R::GET]], '/bookmarklet' => [Module\Bookmarklet::class, [R::GET]],
'/community[/{content}]' => [Module\Conversation\Community::class, [R::GET]], '/community[/{content}]' => [Module\Conversation\Community::class, [R::GET]],

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2022.09-dev\n" "Project-Id-Version: 2022.09-dev\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-07-17 07:33+0000\n" "POT-Creation-Date: 2022-07-27 11:50-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"
@ -28,7 +28,7 @@ msgid "Access denied."
msgstr "" msgstr ""
#: mod/cal.php:63 mod/cal.php:80 mod/photos.php:69 mod/photos.php:140 #: mod/cal.php:63 mod/cal.php:80 mod/photos.php:69 mod/photos.php:140
#: mod/photos.php:798 src/Model/Profile.php:232 src/Module/Feed.php:72 #: mod/photos.php:798 src/Model/Profile.php:235 src/Module/Feed.php:72
#: src/Module/HCard.php:52 src/Module/Profile/Common.php:41 #: src/Module/HCard.php:52 src/Module/Profile/Common.php:41
#: src/Module/Profile/Common.php:52 src/Module/Profile/Contacts.php:40 #: src/Module/Profile/Common.php:52 src/Module/Profile/Contacts.php:40
#: src/Module/Profile/Contacts.php:50 src/Module/Profile/Media.php:38 #: src/Module/Profile/Contacts.php:50 src/Module/Profile/Media.php:38
@ -62,21 +62,21 @@ msgstr ""
msgid "Next" msgid "Next"
msgstr "" msgstr ""
#: mod/cal.php:249 mod/events.php:383 src/Model/Event.php:456 #: mod/cal.php:249 mod/events.php:383 src/Model/Event.php:460
msgid "today" msgid "today"
msgstr "" msgstr ""
#: mod/cal.php:250 mod/events.php:384 src/Model/Event.php:457 #: mod/cal.php:250 mod/events.php:384 src/Model/Event.php:461
#: src/Util/Temporal.php:334 #: src/Util/Temporal.php:334
msgid "month" msgid "month"
msgstr "" msgstr ""
#: mod/cal.php:251 mod/events.php:385 src/Model/Event.php:458 #: mod/cal.php:251 mod/events.php:385 src/Model/Event.php:462
#: src/Util/Temporal.php:335 #: src/Util/Temporal.php:335
msgid "week" msgid "week"
msgstr "" msgstr ""
#: mod/cal.php:252 mod/events.php:386 src/Model/Event.php:459 #: mod/cal.php:252 mod/events.php:386 src/Model/Event.php:463
#: src/Util/Temporal.php:336 #: src/Util/Temporal.php:336
msgid "day" msgid "day"
msgstr "" msgstr ""
@ -85,7 +85,7 @@ msgstr ""
msgid "list" msgid "list"
msgstr "" msgstr ""
#: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:661 #: mod/cal.php:265 src/Console/User.php:182 src/Model/User.php:662
#: 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:74 #: src/Module/Api/Twitter/ContactEndpoint.php:74
@ -311,7 +311,7 @@ msgid "Link or Media"
msgstr "" msgstr ""
#: mod/editpost.php:143 src/Content/Conversation.php:393 #: mod/editpost.php:143 src/Content/Conversation.php:393
#: src/Content/Widget/VCard.php:113 src/Model/Profile.php:463 #: src/Content/Widget/VCard.php:113 src/Model/Profile.php:466
#: src/Module/Admin/Logs/View.php:93 #: src/Module/Admin/Logs/View.php:93
msgid "Message" msgid "Message"
msgstr "" msgstr ""
@ -357,9 +357,11 @@ msgstr ""
#: mod/events.php:476 mod/events.php:506 #: mod/events.php:476 mod/events.php:506
#: src/Module/Admin/Blocklist/Server/Add.php:104 #: src/Module/Admin/Blocklist/Server/Add.php:104
#: src/Module/Admin/Blocklist/Server/Add.php:106 #: src/Module/Admin/Blocklist/Server/Add.php:106
#: src/Module/Admin/Blocklist/Server/Import.php:155
#: src/Module/Admin/Blocklist/Server/Index.php:68 #: src/Module/Admin/Blocklist/Server/Index.php:68
#: src/Module/Admin/Blocklist/Server/Index.php:69 #: src/Module/Admin/Blocklist/Server/Index.php:69
#: src/Module/Admin/Blocklist/Server/Index.php:96 #: src/Module/Admin/Blocklist/Server/Index.php:98
#: src/Module/Admin/Blocklist/Server/Index.php:99
#: src/Module/Admin/Item/Delete.php:69 src/Module/Debug/Probe.php:59 #: src/Module/Admin/Item/Delete.php:69 src/Module/Debug/Probe.php:59
#: src/Module/Install.php:207 src/Module/Install.php:240 #: src/Module/Install.php:207 src/Module/Install.php:240
#: src/Module/Install.php:245 src/Module/Install.php:264 #: src/Module/Install.php:245 src/Module/Install.php:264
@ -387,8 +389,8 @@ msgid "Description:"
msgstr "" msgstr ""
#: mod/events.php:504 src/Content/Widget/VCard.php:104 src/Model/Event.php:80 #: mod/events.php:504 src/Content/Widget/VCard.php:104 src/Model/Event.php:80
#: src/Model/Event.php:107 src/Model/Event.php:465 src/Model/Event.php:915 #: src/Model/Event.php:107 src/Model/Event.php:469 src/Model/Event.php:919
#: src/Model/Profile.php:371 src/Module/Contact/Profile.php:369 #: src/Model/Profile.php:374 src/Module/Contact/Profile.php:369
#: src/Module/Directory.php:148 src/Module/Notifications/Introductions.php:185 #: src/Module/Directory.php:148 src/Module/Notifications/Introductions.php:185
#: src/Module/Profile/Profile.php:194 #: src/Module/Profile/Profile.php:194
msgid "Location:" msgid "Location:"
@ -1409,7 +1411,7 @@ msgstr ""
msgid "Friend Suggestions" msgid "Friend Suggestions"
msgstr "" msgstr ""
#: mod/tagger.php:78 src/Content/Item.php:354 src/Model/Item.php:2727 #: mod/tagger.php:78 src/Content/Item.php:354 src/Model/Item.php:2743
msgid "photo" msgid "photo"
msgstr "" msgstr ""
@ -2273,7 +2275,7 @@ msgstr ""
msgid "%1$s poked %2$s" msgid "%1$s poked %2$s"
msgstr "" msgstr ""
#: src/Content/Item.php:345 src/Model/Item.php:2725 #: src/Content/Item.php:345 src/Model/Item.php:2741
msgid "event" msgid "event"
msgstr "" msgstr ""
@ -2624,8 +2626,8 @@ msgid ""
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s" "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1213 src/Model/Item.php:3300 #: src/Content/Text/BBCode.php:1213 src/Model/Item.php:3316
#: src/Model/Item.php:3306 src/Model/Item.php:3307 #: src/Model/Item.php:3322 src/Model/Item.php:3323
msgid "Link to source" msgid "Link to source"
msgstr "" msgstr ""
@ -2658,7 +2660,7 @@ msgid "The end"
msgstr "" msgstr ""
#: src/Content/Text/HTML.php:882 src/Content/Widget/VCard.php:109 #: src/Content/Text/HTML.php:882 src/Content/Widget/VCard.php:109
#: src/Model/Profile.php:457 #: src/Model/Profile.php:460
msgid "Follow" msgid "Follow"
msgstr "" msgstr ""
@ -2723,7 +2725,7 @@ msgstr ""
msgid "Local Directory" msgid "Local Directory"
msgstr "" msgstr ""
#: src/Content/Widget.php:211 src/Model/Group.php:583 #: src/Content/Widget.php:211 src/Model/Group.php:587
#: src/Module/Contact.php:354 src/Module/Welcome.php:76 #: src/Module/Contact.php:354 src/Module/Welcome.php:76
msgid "Groups" msgid "Groups"
msgstr "" msgstr ""
@ -2838,22 +2840,22 @@ msgstr[1] ""
msgid "More Trending Tags" msgid "More Trending Tags"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:102 src/Model/Profile.php:376 #: src/Content/Widget/VCard.php:102 src/Model/Profile.php:379
#: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:176 #: src/Module/Contact/Profile.php:371 src/Module/Profile/Profile.php:176
msgid "XMPP:" msgid "XMPP:"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:103 src/Model/Profile.php:377 #: src/Content/Widget/VCard.php:103 src/Model/Profile.php:380
#: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:180 #: src/Module/Contact/Profile.php:373 src/Module/Profile/Profile.php:180
msgid "Matrix:" msgid "Matrix:"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:107 src/Model/Profile.php:469 #: src/Content/Widget/VCard.php:107 src/Model/Profile.php:472
#: src/Module/Notifications/Introductions.php:199 #: src/Module/Notifications/Introductions.php:199
msgid "Network:" msgid "Network:"
msgstr "" msgstr ""
#: src/Content/Widget/VCard.php:111 src/Model/Profile.php:459 #: src/Content/Widget/VCard.php:111 src/Model/Profile.php:462
msgid "Unfollow" msgid "Unfollow"
msgstr "" msgstr ""
@ -3222,137 +3224,137 @@ msgstr ""
msgid "Could not connect to database." msgid "Could not connect to database."
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:424 #: src/Core/L10n.php:399 src/Model/Event.php:428
#: src/Module/Settings/Display.php:182 #: src/Module/Settings/Display.php:182
msgid "Monday" msgid "Monday"
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:425 #: src/Core/L10n.php:399 src/Model/Event.php:429
msgid "Tuesday" msgid "Tuesday"
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:426 #: src/Core/L10n.php:399 src/Model/Event.php:430
msgid "Wednesday" msgid "Wednesday"
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:427 #: src/Core/L10n.php:399 src/Model/Event.php:431
msgid "Thursday" msgid "Thursday"
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:428 #: src/Core/L10n.php:399 src/Model/Event.php:432
msgid "Friday" msgid "Friday"
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:429 #: src/Core/L10n.php:399 src/Model/Event.php:433
msgid "Saturday" msgid "Saturday"
msgstr "" msgstr ""
#: src/Core/L10n.php:399 src/Model/Event.php:423 #: src/Core/L10n.php:399 src/Model/Event.php:427
#: src/Module/Settings/Display.php:182 #: src/Module/Settings/Display.php:182
msgid "Sunday" msgid "Sunday"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:444 #: src/Core/L10n.php:403 src/Model/Event.php:448
msgid "January" msgid "January"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:445 #: src/Core/L10n.php:403 src/Model/Event.php:449
msgid "February" msgid "February"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:446 #: src/Core/L10n.php:403 src/Model/Event.php:450
msgid "March" msgid "March"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:447 #: src/Core/L10n.php:403 src/Model/Event.php:451
msgid "April" msgid "April"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Core/L10n.php:422 src/Model/Event.php:435 #: src/Core/L10n.php:403 src/Core/L10n.php:422 src/Model/Event.php:439
msgid "May" msgid "May"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:448 #: src/Core/L10n.php:403 src/Model/Event.php:452
msgid "June" msgid "June"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:449 #: src/Core/L10n.php:403 src/Model/Event.php:453
msgid "July" msgid "July"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:450 #: src/Core/L10n.php:403 src/Model/Event.php:454
msgid "August" msgid "August"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:451 #: src/Core/L10n.php:403 src/Model/Event.php:455
msgid "September" msgid "September"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:452 #: src/Core/L10n.php:403 src/Model/Event.php:456
msgid "October" msgid "October"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:453 #: src/Core/L10n.php:403 src/Model/Event.php:457
msgid "November" msgid "November"
msgstr "" msgstr ""
#: src/Core/L10n.php:403 src/Model/Event.php:454 #: src/Core/L10n.php:403 src/Model/Event.php:458
msgid "December" msgid "December"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:416 #: src/Core/L10n.php:418 src/Model/Event.php:420
msgid "Mon" msgid "Mon"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:417 #: src/Core/L10n.php:418 src/Model/Event.php:421
msgid "Tue" msgid "Tue"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:418 #: src/Core/L10n.php:418 src/Model/Event.php:422
msgid "Wed" msgid "Wed"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:419 #: src/Core/L10n.php:418 src/Model/Event.php:423
msgid "Thu" msgid "Thu"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:420 #: src/Core/L10n.php:418 src/Model/Event.php:424
msgid "Fri" msgid "Fri"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:421 #: src/Core/L10n.php:418 src/Model/Event.php:425
msgid "Sat" msgid "Sat"
msgstr "" msgstr ""
#: src/Core/L10n.php:418 src/Model/Event.php:415 #: src/Core/L10n.php:418 src/Model/Event.php:419
msgid "Sun" msgid "Sun"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:431 #: src/Core/L10n.php:422 src/Model/Event.php:435
msgid "Jan" msgid "Jan"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:432 #: src/Core/L10n.php:422 src/Model/Event.php:436
msgid "Feb" msgid "Feb"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:433 #: src/Core/L10n.php:422 src/Model/Event.php:437
msgid "Mar" msgid "Mar"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:434 #: src/Core/L10n.php:422 src/Model/Event.php:438
msgid "Apr" msgid "Apr"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:436 #: src/Core/L10n.php:422 src/Model/Event.php:440
msgid "Jun" msgid "Jun"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:437 #: src/Core/L10n.php:422 src/Model/Event.php:441
msgid "Jul" msgid "Jul"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:438 #: src/Core/L10n.php:422 src/Model/Event.php:442
msgid "Aug" msgid "Aug"
msgstr "" msgstr ""
@ -3360,15 +3362,15 @@ msgstr ""
msgid "Sep" msgid "Sep"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:440 #: src/Core/L10n.php:422 src/Model/Event.php:444
msgid "Oct" msgid "Oct"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:441 #: src/Core/L10n.php:422 src/Model/Event.php:445
msgid "Nov" msgid "Nov"
msgstr "" msgstr ""
#: src/Core/L10n.php:422 src/Model/Event.php:442 #: src/Core/L10n.php:422 src/Model/Event.php:446
msgid "Dec" msgid "Dec"
msgstr "" msgstr ""
@ -3698,70 +3700,70 @@ msgstr ""
msgid "l F d, Y \\@ g:i A \\G\\M\\TP (e)" msgid "l F d, Y \\@ g:i A \\G\\M\\TP (e)"
msgstr "" msgstr ""
#: src/Model/Event.php:73 src/Model/Event.php:90 src/Model/Event.php:463 #: src/Model/Event.php:73 src/Model/Event.php:90 src/Model/Event.php:467
#: src/Model/Event.php:897 #: src/Model/Event.php:901
msgid "Starts:" msgid "Starts:"
msgstr "" msgstr ""
#: src/Model/Event.php:76 src/Model/Event.php:96 src/Model/Event.php:464 #: src/Model/Event.php:76 src/Model/Event.php:96 src/Model/Event.php:468
#: src/Model/Event.php:901 #: src/Model/Event.php:905
msgid "Finishes:" msgid "Finishes:"
msgstr "" msgstr ""
#: src/Model/Event.php:413 #: src/Model/Event.php:417
msgid "all-day" msgid "all-day"
msgstr "" msgstr ""
#: src/Model/Event.php:439 #: src/Model/Event.php:443
msgid "Sept" msgid "Sept"
msgstr "" msgstr ""
#: src/Model/Event.php:461 #: src/Model/Event.php:465
msgid "No events to display" msgid "No events to display"
msgstr "" msgstr ""
#: src/Model/Event.php:577 #: src/Model/Event.php:581
msgid "l, F j" msgid "l, F j"
msgstr "" msgstr ""
#: src/Model/Event.php:608 #: src/Model/Event.php:612
msgid "Edit event" msgid "Edit event"
msgstr "" msgstr ""
#: src/Model/Event.php:609 #: src/Model/Event.php:613
msgid "Duplicate event" msgid "Duplicate event"
msgstr "" msgstr ""
#: src/Model/Event.php:610 #: src/Model/Event.php:614
msgid "Delete event" msgid "Delete event"
msgstr "" msgstr ""
#: src/Model/Event.php:853 src/Module/Debug/Localtime.php:38 #: src/Model/Event.php:857 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:854 #: src/Model/Event.php:858
msgid "D g:i A" msgid "D g:i A"
msgstr "" msgstr ""
#: src/Model/Event.php:855 #: src/Model/Event.php:859
msgid "g:i A" msgid "g:i A"
msgstr "" msgstr ""
#: src/Model/Event.php:916 src/Model/Event.php:918 #: src/Model/Event.php:920 src/Model/Event.php:922
msgid "Show map" msgid "Show map"
msgstr "" msgstr ""
#: src/Model/Event.php:917 #: src/Model/Event.php:921
msgid "Hide map" msgid "Hide map"
msgstr "" msgstr ""
#: src/Model/Event.php:1010 #: src/Model/Event.php:1014
#, php-format #, php-format
msgid "%s's birthday" msgid "%s's birthday"
msgstr "" msgstr ""
#: src/Model/Event.php:1011 #: src/Model/Event.php:1015
#, php-format #, php-format
msgid "Happy Birthday %s" msgid "Happy Birthday %s"
msgstr "" msgstr ""
@ -3773,95 +3775,95 @@ msgid ""
"not what you intended, please create another group with a different name." "not what you intended, please create another group with a different name."
msgstr "" msgstr ""
#: src/Model/Group.php:499 #: src/Model/Group.php:503
msgid "Default privacy group for new contacts" msgid "Default privacy group for new contacts"
msgstr "" msgstr ""
#: src/Model/Group.php:531 #: src/Model/Group.php:535
msgid "Everybody" msgid "Everybody"
msgstr "" msgstr ""
#: src/Model/Group.php:550 #: src/Model/Group.php:554
msgid "edit" msgid "edit"
msgstr "" msgstr ""
#: src/Model/Group.php:582 #: src/Model/Group.php:586
msgid "add" msgid "add"
msgstr "" msgstr ""
#: src/Model/Group.php:587 #: src/Model/Group.php:591
msgid "Edit group" msgid "Edit group"
msgstr "" msgstr ""
#: src/Model/Group.php:588 src/Module/Group.php:194 #: src/Model/Group.php:592 src/Module/Group.php:194
msgid "Contacts not in any group" msgid "Contacts not in any group"
msgstr "" msgstr ""
#: src/Model/Group.php:590 #: src/Model/Group.php:594
msgid "Create a new group" msgid "Create a new group"
msgstr "" msgstr ""
#: src/Model/Group.php:591 src/Module/Group.php:179 src/Module/Group.php:202 #: src/Model/Group.php:595 src/Module/Group.php:179 src/Module/Group.php:202
#: src/Module/Group.php:277 #: src/Module/Group.php:277
msgid "Group Name: " msgid "Group Name: "
msgstr "" msgstr ""
#: src/Model/Group.php:592 #: src/Model/Group.php:596
msgid "Edit groups" msgid "Edit groups"
msgstr "" msgstr ""
#: src/Model/Item.php:1823 #: src/Model/Item.php:1839
#, php-format #, php-format
msgid "Detected languages in this post:\\n%s" msgid "Detected languages in this post:\\n%s"
msgstr "" msgstr ""
#: src/Model/Item.php:2729 #: src/Model/Item.php:2745
msgid "activity" msgid "activity"
msgstr "" msgstr ""
#: src/Model/Item.php:2731 #: src/Model/Item.php:2747
msgid "comment" msgid "comment"
msgstr "" msgstr ""
#: src/Model/Item.php:2734 #: src/Model/Item.php:2750
msgid "post" msgid "post"
msgstr "" msgstr ""
#: src/Model/Item.php:2850 #: src/Model/Item.php:2866
#, php-format #, php-format
msgid "Content warning: %s" msgid "Content warning: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:3209 #: src/Model/Item.php:3225
msgid "bytes" msgid "bytes"
msgstr "" msgstr ""
#: src/Model/Item.php:3243 #: src/Model/Item.php:3259
#, php-format #, php-format
msgid "%s (%d%s, %d votes)" msgid "%s (%d%s, %d votes)"
msgstr "" msgstr ""
#: src/Model/Item.php:3245 #: src/Model/Item.php:3261
#, php-format #, php-format
msgid "%s (%d votes)" msgid "%s (%d votes)"
msgstr "" msgstr ""
#: src/Model/Item.php:3250 #: src/Model/Item.php:3266
#, php-format #, php-format
msgid "%d voters. Poll end: %s" msgid "%d voters. Poll end: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:3252 #: src/Model/Item.php:3268
#, php-format #, php-format
msgid "%d voters." msgid "%d voters."
msgstr "" msgstr ""
#: src/Model/Item.php:3254 #: src/Model/Item.php:3270
#, php-format #, php-format
msgid "Poll end: %s" msgid "Poll end: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:3288 src/Model/Item.php:3289 #: src/Model/Item.php:3304 src/Model/Item.php:3305
msgid "View on separate page" msgid "View on separate page"
msgstr "" msgstr ""
@ -3869,282 +3871,282 @@ msgstr ""
msgid "[no subject]" msgid "[no subject]"
msgstr "" msgstr ""
#: src/Model/Profile.php:359 src/Module/Profile/Profile.php:256 #: src/Model/Profile.php:362 src/Module/Profile/Profile.php:256
#: src/Module/Profile/Profile.php:258 #: src/Module/Profile/Profile.php:258
msgid "Edit profile" msgid "Edit profile"
msgstr "" msgstr ""
#: src/Model/Profile.php:361 #: src/Model/Profile.php:364
msgid "Change profile photo" msgid "Change profile photo"
msgstr "" msgstr ""
#: src/Model/Profile.php:374 src/Module/Directory.php:153 #: src/Model/Profile.php:377 src/Module/Directory.php:153
#: src/Module/Profile/Profile.php:184 #: src/Module/Profile/Profile.php:184
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
#: src/Model/Profile.php:375 src/Module/Contact/Profile.php:375 #: src/Model/Profile.php:378 src/Module/Contact/Profile.php:375
#: src/Module/Notifications/Introductions.php:187 #: src/Module/Notifications/Introductions.php:187
msgid "About:" msgid "About:"
msgstr "" msgstr ""
#: src/Model/Profile.php:461 #: src/Model/Profile.php:464
msgid "Atom feed" msgid "Atom feed"
msgstr "" msgstr ""
#: src/Model/Profile.php:505 #: src/Model/Profile.php:507
msgid "F d" msgid "F d"
msgstr "" msgstr ""
#: src/Model/Profile.php:569 src/Model/Profile.php:653 #: src/Model/Profile.php:571 src/Model/Profile.php:660
msgid "[today]" msgid "[today]"
msgstr "" msgstr ""
#: src/Model/Profile.php:578 #: src/Model/Profile.php:580
msgid "Birthday Reminders" msgid "Birthday Reminders"
msgstr "" msgstr ""
#: src/Model/Profile.php:579 #: src/Model/Profile.php:581
msgid "Birthdays this week:" msgid "Birthdays this week:"
msgstr "" msgstr ""
#: src/Model/Profile.php:602 #: src/Model/Profile.php:609
msgid "g A l F d" msgid "g A l F d"
msgstr "" msgstr ""
#: src/Model/Profile.php:640 #: src/Model/Profile.php:647
msgid "[No description]" msgid "[No description]"
msgstr "" msgstr ""
#: src/Model/Profile.php:666 #: src/Model/Profile.php:673
msgid "Event Reminders" msgid "Event Reminders"
msgstr "" msgstr ""
#: src/Model/Profile.php:667 #: src/Model/Profile.php:674
msgid "Upcoming events the next 7 days:" msgid "Upcoming events the next 7 days:"
msgstr "" msgstr ""
#: src/Model/Profile.php:855 #: src/Model/Profile.php:868
#, php-format #, php-format
msgid "OpenWebAuth: %1$s welcomes %2$s" msgid "OpenWebAuth: %1$s welcomes %2$s"
msgstr "" msgstr ""
#: src/Model/Profile.php:981 #: src/Model/Profile.php:1008
msgid "Hometown:" msgid "Hometown:"
msgstr "" msgstr ""
#: src/Model/Profile.php:982 #: src/Model/Profile.php:1009
msgid "Marital Status:" msgid "Marital Status:"
msgstr "" msgstr ""
#: src/Model/Profile.php:983 #: src/Model/Profile.php:1010
msgid "With:" msgid "With:"
msgstr "" msgstr ""
#: src/Model/Profile.php:984 #: src/Model/Profile.php:1011
msgid "Since:" msgid "Since:"
msgstr "" msgstr ""
#: src/Model/Profile.php:985 #: src/Model/Profile.php:1012
msgid "Sexual Preference:" msgid "Sexual Preference:"
msgstr "" msgstr ""
#: src/Model/Profile.php:986 #: src/Model/Profile.php:1013
msgid "Political Views:" msgid "Political Views:"
msgstr "" msgstr ""
#: src/Model/Profile.php:987 #: src/Model/Profile.php:1014
msgid "Religious Views:" msgid "Religious Views:"
msgstr "" msgstr ""
#: src/Model/Profile.php:988 #: src/Model/Profile.php:1015
msgid "Likes:" msgid "Likes:"
msgstr "" msgstr ""
#: src/Model/Profile.php:989 #: src/Model/Profile.php:1016
msgid "Dislikes:" msgid "Dislikes:"
msgstr "" msgstr ""
#: src/Model/Profile.php:990 #: src/Model/Profile.php:1017
msgid "Title/Description:" msgid "Title/Description:"
msgstr "" msgstr ""
#: src/Model/Profile.php:991 src/Module/Admin/Summary.php:234 #: src/Model/Profile.php:1018 src/Module/Admin/Summary.php:234
msgid "Summary" msgid "Summary"
msgstr "" msgstr ""
#: src/Model/Profile.php:992 #: src/Model/Profile.php:1019
msgid "Musical interests" msgid "Musical interests"
msgstr "" msgstr ""
#: src/Model/Profile.php:993 #: src/Model/Profile.php:1020
msgid "Books, literature" msgid "Books, literature"
msgstr "" msgstr ""
#: src/Model/Profile.php:994 #: src/Model/Profile.php:1021
msgid "Television" msgid "Television"
msgstr "" msgstr ""
#: src/Model/Profile.php:995 #: src/Model/Profile.php:1022
msgid "Film/dance/culture/entertainment" msgid "Film/dance/culture/entertainment"
msgstr "" msgstr ""
#: src/Model/Profile.php:996 #: src/Model/Profile.php:1023
msgid "Hobbies/Interests" msgid "Hobbies/Interests"
msgstr "" msgstr ""
#: src/Model/Profile.php:997 #: src/Model/Profile.php:1024
msgid "Love/romance" msgid "Love/romance"
msgstr "" msgstr ""
#: src/Model/Profile.php:998 #: src/Model/Profile.php:1025
msgid "Work/employment" msgid "Work/employment"
msgstr "" msgstr ""
#: src/Model/Profile.php:999 #: src/Model/Profile.php:1026
msgid "School/education" msgid "School/education"
msgstr "" msgstr ""
#: src/Model/Profile.php:1000 #: src/Model/Profile.php:1027
msgid "Contact information and Social Networks" msgid "Contact information and Social Networks"
msgstr "" msgstr ""
#: src/Model/User.php:212 src/Model/User.php:1058 #: src/Model/User.php:212 src/Model/User.php:1059
msgid "SERIOUS ERROR: Generation of security keys failed." msgid "SERIOUS ERROR: Generation of security keys failed."
msgstr "" msgstr ""
#: src/Model/User.php:570 src/Model/User.php:603 #: src/Model/User.php:571 src/Model/User.php:604
msgid "Login failed" msgid "Login failed"
msgstr "" msgstr ""
#: src/Model/User.php:635 #: src/Model/User.php:636
msgid "Not enough information to authenticate" msgid "Not enough information to authenticate"
msgstr "" msgstr ""
#: src/Model/User.php:730 #: src/Model/User.php:731
msgid "Password can't be empty" msgid "Password can't be empty"
msgstr "" msgstr ""
#: src/Model/User.php:749 #: src/Model/User.php:750
msgid "Empty passwords are not allowed." msgid "Empty passwords are not allowed."
msgstr "" msgstr ""
#: src/Model/User.php:753 #: src/Model/User.php:754
msgid "" msgid ""
"The new password has been exposed in a public data dump, please choose " "The new password has been exposed in a public data dump, please choose "
"another." "another."
msgstr "" msgstr ""
#: src/Model/User.php:759 #: src/Model/User.php:760
msgid "" 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:938 #: src/Model/User.php:939
msgid "Passwords do not match. Password unchanged." msgid "Passwords do not match. Password unchanged."
msgstr "" msgstr ""
#: src/Model/User.php:945 #: src/Model/User.php:946
msgid "An invitation is required." msgid "An invitation is required."
msgstr "" msgstr ""
#: src/Model/User.php:949 #: src/Model/User.php:950
msgid "Invitation could not be verified." msgid "Invitation could not be verified."
msgstr "" msgstr ""
#: src/Model/User.php:957 #: src/Model/User.php:958
msgid "Invalid OpenID url" msgid "Invalid OpenID url"
msgstr "" msgstr ""
#: src/Model/User.php:970 src/Security/Authentication.php:240 #: src/Model/User.php:971 src/Security/Authentication.php:240
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:970 src/Security/Authentication.php:240 #: src/Model/User.php:971 src/Security/Authentication.php:240
msgid "The error message was:" msgid "The error message was:"
msgstr "" msgstr ""
#: src/Model/User.php:976 #: src/Model/User.php:977
msgid "Please enter the required information." msgid "Please enter the required information."
msgstr "" msgstr ""
#: src/Model/User.php:990 #: src/Model/User.php:991
#, 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:997 #: src/Model/User.php:998
#, 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:1001 #: src/Model/User.php:1002
#, 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:1009 #: src/Model/User.php:1010
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:1014 #: src/Model/User.php:1015
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:1018 #: src/Model/User.php:1019
msgid "Not a valid email address." msgid "Not a valid email address."
msgstr "" msgstr ""
#: src/Model/User.php:1021 #: src/Model/User.php:1022
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:1025 src/Model/User.php:1033 #: src/Model/User.php:1026 src/Model/User.php:1034
msgid "Cannot use that email." msgid "Cannot use that email."
msgstr "" msgstr ""
#: src/Model/User.php:1040 #: src/Model/User.php:1041
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:1048 src/Model/User.php:1105 #: src/Model/User.php:1049 src/Model/User.php:1106
msgid "Nickname is already registered. Please choose another." msgid "Nickname is already registered. Please choose another."
msgstr "" msgstr ""
#: src/Model/User.php:1092 src/Model/User.php:1096 #: src/Model/User.php:1093 src/Model/User.php:1097
msgid "An error occurred during registration. Please try again." msgid "An error occurred during registration. Please try again."
msgstr "" msgstr ""
#: src/Model/User.php:1119 #: src/Model/User.php:1120
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:1126 #: src/Model/User.php:1127
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:1131 #: src/Model/User.php:1132
msgid "Friends" msgid "Friends"
msgstr "" msgstr ""
#: src/Model/User.php:1135 #: src/Model/User.php:1136
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:1174 #: src/Model/User.php:1175
msgid "Profile Photos" msgid "Profile Photos"
msgstr "" msgstr ""
#: src/Model/User.php:1367 #: src/Model/User.php:1368
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -4152,7 +4154,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:1370 #: src/Model/User.php:1371
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -4189,12 +4191,12 @@ msgid ""
"\t\tThank you and welcome to %4$s." "\t\tThank you and welcome to %4$s."
msgstr "" msgstr ""
#: src/Model/User.php:1403 src/Model/User.php:1510 #: src/Model/User.php:1404 src/Model/User.php:1511
#, php-format #, php-format
msgid "Registration details for %s" msgid "Registration details for %s"
msgstr "" msgstr ""
#: src/Model/User.php:1423 #: src/Model/User.php:1424
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -4210,12 +4212,12 @@ msgid ""
"\t\t" "\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1442 #: src/Model/User.php:1443
#, php-format #, php-format
msgid "Registration at %s" msgid "Registration at %s"
msgstr "" msgstr ""
#: src/Model/User.php:1466 #: src/Model/User.php:1467
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -4224,7 +4226,7 @@ msgid ""
"\t\t\t" "\t\t\t"
msgstr "" msgstr ""
#: src/Model/User.php:1474 #: src/Model/User.php:1475
#, php-format #, php-format
msgid "" msgid ""
"\n" "\n"
@ -4290,8 +4292,9 @@ msgstr ""
#: src/Module/Admin/Addons/Details.php:111 src/Module/Admin/Addons/Index.php:67 #: src/Module/Admin/Addons/Details.php:111 src/Module/Admin/Addons/Index.php:67
#: src/Module/Admin/Blocklist/Contact.php:94 #: src/Module/Admin/Blocklist/Contact.php:94
#: src/Module/Admin/Blocklist/Server/Add.php:89 #: src/Module/Admin/Blocklist/Server/Add.php:89
#: src/Module/Admin/Blocklist/Server/Import.php:144
#: src/Module/Admin/Blocklist/Server/Index.php:78 #: src/Module/Admin/Blocklist/Server/Index.php:78
#: src/Module/Admin/Federation.php:196 src/Module/Admin/Item/Delete.php:64 #: src/Module/Admin/Federation.php:200 src/Module/Admin/Item/Delete.php:64
#: src/Module/Admin/Logs/Settings.php:79 src/Module/Admin/Logs/View.php:84 #: src/Module/Admin/Logs/Settings.php:79 src/Module/Admin/Logs/View.php:84
#: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:433 #: src/Module/Admin/Queue.php:72 src/Module/Admin/Site.php:433
#: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:233 #: src/Module/Admin/Storage.php:138 src/Module/Admin/Summary.php:233
@ -4506,6 +4509,7 @@ msgid ""
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Contact.php:118 #: src/Module/Admin/Blocklist/Contact.php:118
#: src/Module/Admin/Blocklist/Server/Import.php:150
msgid "Block Reason" msgid "Block Reason"
msgstr "" msgstr ""
@ -4521,6 +4525,7 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: src/Module/Admin/Blocklist/Server/Add.php:88 #: src/Module/Admin/Blocklist/Server/Add.php:88
#: src/Module/Admin/Blocklist/Server/Import.php:143
msgid "← Return to the list" msgid "← Return to the list"
msgstr "" msgstr ""
@ -4540,7 +4545,7 @@ msgid ""
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Add.php:96 #: src/Module/Admin/Blocklist/Server/Add.php:96
#: src/Module/Admin/Blocklist/Server/Index.php:88 #: src/Module/Admin/Blocklist/Server/Index.php:90
msgid "Check pattern" msgid "Check pattern"
msgstr "" msgstr ""
@ -4572,12 +4577,12 @@ msgid "Add pattern to the blocklist"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Add.php:104 #: src/Module/Admin/Blocklist/Server/Add.php:104
#: src/Module/Admin/Blocklist/Server/Index.php:96 #: src/Module/Admin/Blocklist/Server/Index.php:99
msgid "Server Domain Pattern" msgid "Server Domain Pattern"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Add.php:104 #: src/Module/Admin/Blocklist/Server/Add.php:104
#: src/Module/Admin/Blocklist/Server/Index.php:96 #: src/Module/Admin/Blocklist/Server/Index.php:99
msgid "" msgid ""
"The domain pattern of the new server to add to the blocklist. Do not include " "The domain pattern of the new server to add to the blocklist. Do not include "
"the protocol." "the protocol."
@ -4609,13 +4614,94 @@ msgid ""
"shown publicly in the server information page." "shown publicly in the server information page."
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:88
#: src/Module/Admin/Blocklist/Server/Import.php:100
msgid "Error importing pattern file"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:106
msgid "Local blocklist replaced with the provided file."
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:121
#, php-format
msgid "%d pattern was added to the local blocklist."
msgid_plural "%d patterns were added to the local blocklist."
msgstr[0] ""
msgstr[1] ""
#: src/Module/Admin/Blocklist/Server/Import.php:123
msgid "No pattern was added to the local blocklist."
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:145
msgid "Import a Server Domain Pattern Blocklist"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:146
msgid ""
"<p>This file can be downloaded from the <code>/friendica</code> path of any "
"Friendica server.</p>"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:147
#: src/Module/Admin/Blocklist/Server/Index.php:89
msgid "Upload file"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:148
msgid "Patterns to import"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:149
msgid "Domain Pattern"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:151
msgid "Import Mode"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:152
msgid "Import Patterns"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:153
#, php-format
msgid "%d total pattern"
msgid_plural "%d total patterns"
msgstr[0] ""
msgstr[1] ""
#: src/Module/Admin/Blocklist/Server/Import.php:155
#: src/Module/Admin/Blocklist/Server/Index.php:98
msgid "Server domain pattern blocklist CSV file"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:156
msgid "Append"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:156
msgid ""
"Imports patterns from the file that weren't already existing in the current "
"blocklist."
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:157
msgid "Replace"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Import.php:157
msgid "Replaces the current blocklist by the imported patterns."
msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:68 #: src/Module/Admin/Blocklist/Server/Index.php:68
#: src/Module/Admin/Blocklist/Server/Index.php:91 #: src/Module/Admin/Blocklist/Server/Index.php:93
msgid "Blocked server domain pattern" msgid "Blocked server domain pattern"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:69 #: src/Module/Admin/Blocklist/Server/Index.php:69
#: src/Module/Admin/Blocklist/Server/Index.php:92 src/Module/Friendica.php:82 #: src/Module/Admin/Blocklist/Server/Index.php:94 src/Module/Friendica.php:82
msgid "Reason for the block" msgid "Reason for the block"
msgstr "" msgstr ""
@ -4646,22 +4732,26 @@ msgid ""
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:87 #: src/Module/Admin/Blocklist/Server/Index.php:87
msgid "Import server domain pattern blocklist"
msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:88
msgid "Add new entry to the blocklist" msgid "Add new entry to the blocklist"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:89 #: src/Module/Admin/Blocklist/Server/Index.php:91
msgid "Save changes to the blocklist" msgid "Save changes to the blocklist"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:90 #: src/Module/Admin/Blocklist/Server/Index.php:92
msgid "Current Entries in the Blocklist" msgid "Current Entries in the Blocklist"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:93 #: src/Module/Admin/Blocklist/Server/Index.php:95
msgid "Delete entry from the blocklist" msgid "Delete entry from the blocklist"
msgstr "" msgstr ""
#: src/Module/Admin/Blocklist/Server/Index.php:94 #: src/Module/Admin/Blocklist/Server/Index.php:96
msgid "Delete entry from the blocklist?" msgid "Delete entry from the blocklist?"
msgstr "" msgstr ""
@ -4733,61 +4823,61 @@ msgstr ""
msgid "Manage Additional Features" msgid "Manage Additional Features"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:65 #: src/Module/Admin/Federation.php:68
msgid "Other" msgid "Other"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:136 src/Module/Admin/Federation.php:385 #: src/Module/Admin/Federation.php:140 src/Module/Admin/Federation.php:389
msgid "unknown" msgid "unknown"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:169
#, php-format
msgid "%s total systems"
msgstr ""
#: src/Module/Admin/Federation.php:170
#, php-format
msgid "%s active users last month"
msgstr ""
#: src/Module/Admin/Federation.php:171
#, php-format
msgid "%s active users last six months"
msgstr ""
#: src/Module/Admin/Federation.php:172
#, php-format
msgid "%s registered users"
msgstr ""
#: src/Module/Admin/Federation.php:173 #: src/Module/Admin/Federation.php:173
#, php-format #, php-format
msgid "%s locally created posts and comments" msgid "%s total systems"
msgstr ""
#: src/Module/Admin/Federation.php:174
#, php-format
msgid "%s active users last month"
msgstr ""
#: src/Module/Admin/Federation.php:175
#, php-format
msgid "%s active users last six months"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:176 #: src/Module/Admin/Federation.php:176
#, php-format #, php-format
msgid "%s registered users"
msgstr ""
#: src/Module/Admin/Federation.php:177
#, php-format
msgid "%s locally created posts and comments"
msgstr ""
#: src/Module/Admin/Federation.php:180
#, php-format
msgid "%s posts per user" msgid "%s posts per user"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:181 #: src/Module/Admin/Federation.php:185
#, php-format #, php-format
msgid "%s users per system" msgid "%s users per system"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:191 #: src/Module/Admin/Federation.php:195
msgid "" msgid ""
"This page offers you some numbers to the known part of the federated social " "This page offers you some numbers to the known part of the federated social "
"network your Friendica node is part of. These numbers are not complete but " "network your Friendica node is part of. These numbers are not complete but "
"only reflect the part of the network your node is aware of." "only reflect the part of the network your node is aware of."
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:197 src/Module/BaseAdmin.php:90 #: src/Module/Admin/Federation.php:201 src/Module/BaseAdmin.php:90
msgid "Federation Statistics" msgid "Federation Statistics"
msgstr "" msgstr ""
#: src/Module/Admin/Federation.php:201 #: src/Module/Admin/Federation.php:205
#, php-format #, php-format
msgid "" msgid ""
"Currently this node is aware of %s nodes (%s active users last month, %s " "Currently this node is aware of %s nodes (%s active users last month, %s "
@ -7621,28 +7711,32 @@ msgstr ""
msgid "On this server the following remote servers are blocked." msgid "On this server the following remote servers are blocked."
msgstr "" msgstr ""
#: src/Module/Friendica.php:97 #: src/Module/Friendica.php:84
msgid "Download this list in CSV format"
msgstr ""
#: src/Module/Friendica.php:98
#, php-format #, php-format
msgid "" msgid ""
"This is Friendica, version %s that is running at the web location %s. The " "This is Friendica, version %s that is running at the web location %s. The "
"database version is %s, the post update version is %s." "database version is %s, the post update version is %s."
msgstr "" msgstr ""
#: src/Module/Friendica.php:102 #: src/Module/Friendica.php:103
msgid "" msgid ""
"Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more " "Please visit <a href=\"https://friendi.ca\">Friendi.ca</a> to learn more "
"about the Friendica project." "about the Friendica project."
msgstr "" msgstr ""
#: src/Module/Friendica.php:103 #: src/Module/Friendica.php:104
msgid "Bug reports and issues: please visit" msgid "Bug reports and issues: please visit"
msgstr "" msgstr ""
#: src/Module/Friendica.php:103 #: src/Module/Friendica.php:104
msgid "the bugtracker at github" msgid "the bugtracker at github"
msgstr "" msgstr ""
#: src/Module/Friendica.php:104 #: src/Module/Friendica.php:105
msgid "" msgid ""
"Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca" "Suggestions, praise, etc. - please email \"info\" at \"friendi - dot - ca"
msgstr "" msgstr ""
@ -8144,11 +8238,11 @@ msgstr ""
msgid "Show unread" msgid "Show unread"
msgstr "" msgstr ""
#: src/Module/Notifications/Ping.php:222 #: src/Module/Notifications/Ping.php:226
msgid "{0} requested registration" msgid "{0} requested registration"
msgstr "" msgstr ""
#: src/Module/Notifications/Ping.php:233 #: src/Module/Notifications/Ping.php:237
#, php-format #, php-format
msgid "{0} and %d others requested registration" msgid "{0} and %d others requested registration"
msgstr "" msgstr ""
@ -10973,11 +11067,11 @@ msgstr ""
msgid "(no subject)" msgid "(no subject)"
msgstr "" msgstr ""
#: src/Worker/PushSubscription.php:112 #: src/Worker/PushSubscription.php:111
msgid "Notification from Friendica" msgid "Notification from Friendica"
msgstr "" msgstr ""
#: src/Worker/PushSubscription.php:113 #: src/Worker/PushSubscription.php:112
msgid "Empty Post" msgid "Empty Post"
msgstr "" msgstr ""

View file

@ -0,0 +1,52 @@
<div id="adminpage">
<p><a href="{{$baseurl}}/admin/blocklist/server">{{$l10n.return_list}}</a></p>
<h1>{{$l10n.title}} - {{$l10n.page}}</h1>
{{if !$blocklist}}
{{$l10n.download nofilter}}
<form action="{{$baseurl}}/admin/blocklist/server/import" method="post" enctype="multipart/form-data">
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
{{include file="field_input.tpl" field=$listfile}}
<div class="submit">
<button type="submit" class="btn btn-primary" name="page_blocklist_upload" value="{{$l10n.upload}}">{{$l10n.upload}}</button>
</div>
</form>
{{else}}
<h2>{{$l10n.patterns}}</h2>
<form action="{{$baseurl}}/admin/blocklist/server/import" method="post">
<input type="hidden" name="form_security_token" value="{{$form_security_token}}">
<input type="hidden" name="blocklist" value="{{$blocklist|json_encode}}">
<table class="table table-condensed table-striped table-bordered">
<thead>
<tr>
<th>{{$l10n.domain_pattern}}</th>
<th>{{$l10n.block_reason}}</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="4">{{$l10n.pattern_count}}</td>
</tr>
</tfoot>
<tbody>
{{foreach $blocklist as $block}}
<tr>
<th>{{$block.domain}}</th>
<td>{{$block.reason}}</td>
</tr>
{{/foreach}}
</tbody>
</table>
<div role="radiogroup" aria-labelledby="mode">
<label id="mode">{{$l10n.mode}}</label>
{{include file="field_radio.tpl" field=$mode_append}}
{{include file="field_radio.tpl" field=$mode_replace}}
</div>
<div class="submit">
<button type="submit" class="btn btn-primary" name="page_blocklist_import" value="{{$l10n.import}}">{{$l10n.import}}</button>
</div>
</form>
{{/if}}
</div>

View file

@ -7,13 +7,24 @@
<h1>{{$l10n.title}} - {{$l10n.page}}</h1> <h1>{{$l10n.title}} - {{$l10n.page}}</h1>
<p>{{$l10n.intro}}</p> <p>{{$l10n.intro}}</p>
<p>{{$l10n.public nofilter}}</p> <p>{{$l10n.public nofilter}}</p>
{{$l10n.syntax nofilter}}
<h2>{{$l10n.importtitle}}</h2>
{{$l10n.download nofilter}}
<form action="{{$baseurl}}/admin/blocklist/server/import" method="post" enctype="multipart/form-data">
<input type="hidden" name="form_security_token" value="{{$form_security_token_import}}">
{{include file="field_input.tpl" field=$listfile}}
<div class="submit">
<button type="submit" class="btn btn-primary" name="page_blocklist_upload">{{$l10n.importsubmit}}</button>
</div>
</form>
<h2>{{$l10n.addtitle}}</h2> <h2>{{$l10n.addtitle}}</h2>
{{$l10n.syntax nofilter}}
<form action="{{$baseurl}}/admin/blocklist/server/add" method="get"> <form action="{{$baseurl}}/admin/blocklist/server/add" method="get">
{{include file="field_input.tpl" field=$newdomain}} {{include file="field_input.tpl" field=$newdomain}}
<div class="submit"> <div class="submit">
<button type="submit" class="btn btn-primary">{{$l10n.submit}}</button> <button type="submit" class="btn btn-primary">{{$l10n.addsubmit}}</button>
</div> </div>
</form> </form>

View file

@ -1,28 +1,22 @@
<div id="friendica" class="generic-page-wrapper"> <div id="friendica">
<h1>Friendica</h1> <h1>Friendica</h1>
<br>
<p>{{$about nofilter}}</p> <p>{{$about nofilter}}</p>
<br>
<p>{{$friendica nofilter}}</p> <p>{{$friendica nofilter}}</p>
<br>
<p>{{$bugs nofilter}}</p> <p>{{$bugs nofilter}}</p>
<br>
<p>{{$info nofilter}}</p> <p>{{$info nofilter}}</p>
<br>
<p>{{$visible_addons.title nofilter}}</p> <p>{{$visible_addons.title nofilter}}</p>
{{if $visible_addons.list}} {{if $visible_addons.list}}
<div style="margin-left: 25px; margin-right: 25px; margin-bottom: 25px;">{{$visible_addons.list}}</div> <div style="margin-left: 25px; margin-right: 25px; margin-bottom: 25px;">{{$visible_addons.list}}</div>
{{/if}} {{/if}}
{{if $tos}} {{if $tos}}
<p>{{$tos nofilter}}</p> <p>{{$tos nofilter}}</p>
{{/if}} {{/if}}
{{if $block_list}} {{if $block_list}}
<div id="about_blocklist"> <div id="about_blocklist">
<p>{{$block_list.title}}</p> <p>{{$block_list.title}}</p>
<br>
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
@ -39,9 +33,9 @@
{{/foreach}} {{/foreach}}
</tbody> </tbody>
</table> </table>
<p><a href="/blocklist/domain/download"><i class="fa fa-download"></i> {{$block_list.download}}</a></p>
</div> </div>
{{/if}}
{{/if}} {{$hooked nofilter}}
{{$hooked nofilter}}
</div> </div>