Compare commits

...

14 commits

Author SHA1 Message Date
Matthew Exon
9832fa6c45 catch exception during http request 2023-05-28 11:02:32 +02:00
2ce14fb2ff Merge pull request 'Deprecated Addon Blockem removed' (#1391) from andy/friendica-addons:develop into develop
Reviewed-on: friendica/friendica-addons#1391
2023-05-27 14:37:04 +02:00
82c2f8e37f Deprecated Addon Blockem removed 2023-05-27 10:18:51 +07:00
5c45c05cdb Merge pull request 'Bluesky: Improved import and export' (#1390) from heluecht/friendica-addons:bluesky-import2 into develop
Reviewed-on: friendica/friendica-addons#1390
2023-05-26 23:13:31 +02:00
c45c163471 Bluesly: Improved import and export 2023-05-26 20:54:00 +00:00
cd7cec1de2 Merge pull request 'Bluesky: readme is updated' (#1389) from heluecht/friendica-addons:bluesky-import into develop
Reviewed-on: friendica/friendica-addons#1389
2023-05-24 13:16:29 +02:00
d8fe3bd119 Merge remote-tracking branch 'upstream/develop' into bluesky-import 2023-05-24 06:11:09 +00:00
e19fafa918 Updated readme 2023-05-24 06:09:25 +00:00
421964b406 Merge pull request 'Bluesky: Import of remote timeline' (#1388) from heluecht/friendica-addons:bluesky-import into develop
Reviewed-on: friendica/friendica-addons#1388
2023-05-24 08:00:33 +02:00
6ade40efae Merge remote-tracking branch 'upstream/develop' into bluesky-import 2023-05-24 06:00:04 +00:00
f2cc0312ca Merge pull request 'Bluesky: readme is added' (#1387) from heluecht/friendica-addons:bluesky-readme into 2023.05-rc
Reviewed-on: friendica/friendica-addons#1387
2023-05-23 13:26:08 +02:00
e3ca7c73ce Merge pull request 'HU translation updates THX Balázs Úr' (#1386) from tobias/friendica-addons:20230523-hu into 2023.05-rc
Reviewed-on: friendica/friendica-addons#1386
2023-05-23 07:47:43 +02:00
654a9da297 Bluesky: readme is added 2023-05-23 05:45:18 +00:00
7a1af5fb5b HU translation updates 2023-05-23 06:46:36 +02:00
51 changed files with 371 additions and 1608 deletions

View file

@ -1,230 +0,0 @@
<?php
/**
* Name: blockem
* Description: Allows users to hide content by collapsing posts and replies.
* Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Author: Roland Haeder <https://f.haeder.net/roland>
* Status: unsupported
*/
use Friendica\App;
use Friendica\Core\Hook;
use Friendica\Core\Renderer;
use Friendica\DI;
use Friendica\Util\Strings;
global $blockem_words;
function blockem_install()
{
Hook::register('prepare_body_content_filter', 'addon/blockem/blockem.php', 'blockem_prepare_body_content_filter');
Hook::register('display_item' , 'addon/blockem/blockem.php', 'blockem_display_item');
Hook::register('addon_settings' , 'addon/blockem/blockem.php', 'blockem_addon_settings');
Hook::register('addon_settings_post' , 'addon/blockem/blockem.php', 'blockem_addon_settings_post');
Hook::register('conversation_start' , 'addon/blockem/blockem.php', 'blockem_conversation_start');
Hook::register('item_photo_menu' , 'addon/blockem/blockem.php', 'blockem_item_photo_menu');
Hook::register('enotify_store' , 'addon/blockem/blockem.php', 'blockem_enotify_store');
}
function blockem_addon_settings(array &$data)
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words', '');
$t = Renderer::getMarkupTemplate('settings.tpl', 'addon/blockem/');
$html = Renderer::replaceMacros($t, [
'$info' => DI::l10n()->t("Hides user's content by collapsing posts. Also replaces their avatar with generic image."),
'$words' => ['blockem-words', DI::l10n()->t('Comma separated profile URLS:'), $words],
]);
$data = [
'addon' => 'blockem',
'title' => DI::l10n()->t('Blockem'),
'html' => $html,
];
}
function blockem_addon_settings_post(array &$b)
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
if (!empty($_POST['blockem-submit'])) {
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'blockem', 'words', trim($_POST['blockem-words']));
}
}
function blockem_enotify_store(array &$b)
{
$words = DI::pConfig()->get($b['uid'], 'blockem', 'words');
if ($words) {
$arr = explode(',', $words);
} else {
return;
}
$found = false;
if (count($arr)) {
foreach ($arr as $word) {
if (!strlen(trim($word))) {
continue;
}
if (Strings::compareLink($b['url'], $word)) {
$found = true;
break;
}
}
}
if ($found) {
// empty out the fields
$b = [];
}
}
function blockem_prepare_body_content_filter(array &$hook_data)
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
$profiles_string = null;
if (DI::userSession()->getLocalUserId()) {
$profiles_string = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
}
if ($profiles_string) {
$profiles_array = explode(',', $profiles_string);
} else {
return;
}
$found = false;
foreach ($profiles_array as $word) {
if (Strings::compareLink($hook_data['item']['author-link'], trim($word))) {
$found = true;
break;
}
}
if ($found) {
$hook_data['filter_reasons'][] = DI::l10n()->t('Filtered user: %s', $hook_data['item']['author-name']);
}
}
function blockem_display_item(array &$b = null)
{
if (!empty($b['output']['body']) && strstr($b['output']['body'], 'id="blockem-wrap-')) {
$b['output']['thumb'] = DI::baseUrl() . "/images/person-80.jpg";
}
}
function blockem_conversation_start(array &$b)
{
global $blockem_words;
if (!DI::userSession()->getLocalUserId()) {
return;
}
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
if ($words) {
$blockem_words = explode(',', $words);
}
DI::page()['htmlhead'] .= <<< EOT
<script>
function blockemBlock(author) {
$.get('blockem?block=' +author, function(data) {
location.reload(true);
});
}
function blockemUnblock(author) {
$.get('blockem?unblock=' +author, function(data) {
location.reload(true);
});
}
</script>
EOT;
}
function blockem_item_photo_menu(array &$b)
{
global $blockem_words;
if (!DI::userSession()->getLocalUserId() || $b['item']['self']) {
return;
}
$blocked = false;
$author = $b['item']['author-link'];
if (!empty($blockem_words)) {
foreach($blockem_words as $bloke) {
if (Strings::compareLink($bloke,$author)) {
$blocked = true;
break;
}
}
}
if ($blocked) {
$b['menu'][DI::l10n()->t('Unblock Author')] = 'javascript:blockemUnblock(\'' . $author . '\');';
} else {
$b['menu'][DI::l10n()->t('Block Author')] = 'javascript:blockemBlock(\'' . $author . '\');';
}
}
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function blockem_module() {}
function blockem_init()
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
if (array_key_exists('block', $_GET) && $_GET['block']) {
if (strlen($words)) {
$words .= ',';
}
$words .= trim($_GET['block']);
}
if (array_key_exists('unblock', $_GET) && $_GET['unblock']) {
$arr = explode(',',$words);
$newarr = [];
if (count($arr)) {
foreach ($arr as $x) {
if (!Strings::compareLink(trim($x), trim($_GET['unblock']))) {
$newarr[] = $x;
}
}
}
$words = implode(',', $newarr);
}
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'blockem', 'words', $words);
exit();
}

View file

@ -1,45 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr ""
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr ""
#: blockem.php:45
msgid "Blockem"
msgstr ""
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr ""
#: blockem.php:183
msgid "Unblock Author"
msgstr ""
#: blockem.php:185
msgid "Block Author"
msgstr ""

View file

@ -1,52 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# abidin toumi <abidin24@tutanota.com>, 2021
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-10-29 08:15+0000\n"
"Last-Translator: abidin toumi <abidin24@tutanota.com>\n"
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: blockem.php:42 blockem.php:46
msgid "Blockem"
msgstr "احجبه<br>"
#: blockem.php:50
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "إخفاء محتوى المستخدم عن طريق تصغير المشاركات. و استبدال الصورة الرمزية الخاصة بهم بصورة عامة."
#: blockem.php:51
msgid "Comma separated profile URLS:"
msgstr "عناوين الملفات الشخصية مفصولة بفواصل:"
#: blockem.php:55
msgid "Save Settings"
msgstr "احفظ الإعدادات"
#: blockem.php:131
#, php-format
msgid "Filtered user: %s"
msgstr "ترشيح المستخدم :1%s"
#: blockem.php:190
msgid "Unblock Author"
msgstr "ألغ الحجب عن المدون"
#: blockem.php:192
msgid "Block Author"
msgstr "احجب المدون"

View file

@ -1,14 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['Blockem'] = 'احجبه<br>';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'إخفاء محتوى المستخدم عن طريق تصغير المشاركات. و استبدال الصورة الرمزية الخاصة بهم بصورة عامة.';
$a->strings['Comma separated profile URLS:'] = 'عناوين الملفات الشخصية مفصولة بفواصل:';
$a->strings['Save Settings'] = 'احفظ الإعدادات';
$a->strings['Filtered user: %s'] = 'ترشيح المستخدم :1%s';
$a->strings['Unblock Author'] = 'ألغ الحجب عن المدون';
$a->strings['Block Author'] = 'احجب المدون';

View file

@ -1,59 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Joan Bar <friendica@tutanota.com>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2019-10-14 11:50+0000\n"
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Amaga el contingut de l'usuari mitjançant la publicació col·lapsada. També substitueix el seu avatar per una imatge genèrica"
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL de perfil separats per comes:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Desa la configuració"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "S'ha desat la configuració de BLOCKEM."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Usuari filtrat:%s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Desbloca l'autor"
#: blockem.php:204
msgid "Block Author"
msgstr "Autor de bloc"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "S'ha actualitzat la configuració de blockem"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ca")) {
function string_plural_select_ca($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Amaga el contingut de l\'usuari mitjançant la publicació col·lapsada. També substitueix el seu avatar per una imatge genèrica';
$a->strings['Comma separated profile URLS:'] = 'URL de perfil separats per comes:';
$a->strings['Save Settings'] = 'Desa la configuració';
$a->strings['BLOCKEM Settings saved.'] = 'S\'ha desat la configuració de BLOCKEM.';
$a->strings['Filtered user: %s'] = 'Usuari filtrat:%s';
$a->strings['Unblock Author'] = 'Desbloca l\'autor';
$a->strings['Block Author'] = 'Autor de bloc';
$a->strings['blockem settings updated'] = 'S\'ha actualitzat la configuració de blockem';

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Aditoo, 2018
# michal_s <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2018-08-18 12:25+0000\n"
"Last-Translator: Aditoo\n"
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Skrývá uživatelský obsah zabalením příspěvků. Navíc nahrazuje avatar generickým obrázkem."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL adresy profilů, oddělené čárkami:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Uložit nastavení"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "Nastavení BLOCKEM uložena."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Filtrovaný uživatel: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Odblokovat autora"
#: blockem.php:204
msgid "Block Author"
msgstr "Zablokovat autora"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "nastavení blockem aktualizována"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
$n = intval($n);
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Skrývá uživatelský obsah zabalením příspěvků. Navíc nahrazuje avatar generickým obrázkem.';
$a->strings['Comma separated profile URLS:'] = 'URL adresy profilů, oddělené čárkami:';
$a->strings['Save Settings'] = 'Uložit nastavení';
$a->strings['BLOCKEM Settings saved.'] = 'Nastavení BLOCKEM uložena.';
$a->strings['Filtered user: %s'] = 'Filtrovaný uživatel: %s';
$a->strings['Unblock Author'] = 'Odblokovat autora';
$a->strings['Block Author'] = 'Zablokovat autora';
$a->strings['blockem settings updated'] = 'nastavení blockem aktualizována';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Anton <dev@atjn.dk>, 2022
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Anton <dev@atjn.dk>, 2022\n"
"Language-Team: Danish (Denmark) (http://www.transifex.com/Friendica/friendica/language/da_DK/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da_DK\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Skjul brugers indhold ved at kollapse deres opslag. Erstatter også deres avatar med et generisk billede."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Kommasepareret liste over profil-URL's:"
#: blockem.php:45
msgid "Blockem"
msgstr "Blokdem"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Filtreret bruger: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Fjern blokering af forfatter"
#: blockem.php:185
msgid "Block Author"
msgstr "Blokér forfatter"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_da_dk")) {
function string_plural_select_da_dk($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Skjul brugers indhold ved at kollapse deres opslag. Erstatter også deres avatar med et generisk billede.';
$a->strings['Comma separated profile URLS:'] = 'Kommasepareret liste over profil-URL\'s:';
$a->strings['Blockem'] = 'Blokdem';
$a->strings['Filtered user: %s'] = 'Filtreret bruger: %s';
$a->strings['Unblock Author'] = 'Fjern blokering af forfatter';
$a->strings['Block Author'] = 'Blokér forfatter';

View file

@ -1,50 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Andreas H., 2018
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018
# Ulf Rompe <transifex.com@rompe.org>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
"Last-Translator: Transifex Bot <>\n"
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Verbirgt Inhalte von Benutzern durch Zusammenklappen der Beiträge. Des Weiteren wird das Profilbild durch einen generischen Avatar ersetzt."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Komma-separierte Liste von Profil-URLs"
#: blockem.php:45
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Gefilterte Person: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Autor freischalten"
#: blockem.php:185
msgid "Block Author"
msgstr "Autor blockieren"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Verbirgt Inhalte von Benutzern durch Zusammenklappen der Beiträge. Des Weiteren wird das Profilbild durch einen generischen Avatar ersetzt.';
$a->strings['Comma separated profile URLS:'] = 'Komma-separierte Liste von Profil-URLs';
$a->strings['Blockem'] = 'Blockem';
$a->strings['Filtered user: %s'] = 'Gefilterte Person: %s';
$a->strings['Unblock Author'] = 'Autor freischalten';
$a->strings['Block Author'] = 'Autor blockieren';

View file

@ -1,59 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Andy H3 <andy@hubup.pro>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-09 13:00+0100\n"
"PO-Revision-Date: 2018-03-15 14:10+0000\n"
"Last-Translator: Andy H3 <andy@hubup.pro>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/Friendica/friendica/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:51 blockem.php:55
msgid "\"Blockem\""
msgstr "\"Blockem\""
#: blockem.php:59
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Hides user's content by collapsing posts. Also replaces their avatar with generic image."
#: blockem.php:60
msgid "Comma separated profile URLS:"
msgstr "Comma separated profile URLs:"
#: blockem.php:64
msgid "Save Settings"
msgstr "Save settings"
#: blockem.php:77
msgid "BLOCKEM Settings saved."
msgstr "Blockem settings saved."
#: blockem.php:140
#, php-format
msgid "Hidden content by %s - Click to open/close"
msgstr "Hidden content by %s - Reveal/hide"
#: blockem.php:193
msgid "Unblock Author"
msgstr "Unblock author"
#: blockem.php:195
msgid "Block Author"
msgstr "Block author"
#: blockem.php:227
msgid "blockem settings updated"
msgstr "Blockem settings updated"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_gb")) {
function string_plural_select_en_gb($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Blockem"'] = '"Blockem"';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.';
$a->strings['Comma separated profile URLS:'] = 'Comma separated profile URLs:';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['BLOCKEM Settings saved.'] = 'Blockem settings saved.';
$a->strings['Hidden content by %s - Click to open/close'] = 'Hidden content by %s - Reveal/hide';
$a->strings['Unblock Author'] = 'Unblock author';
$a->strings['Block Author'] = 'Block author';
$a->strings['blockem settings updated'] = 'Blockem settings updated';

View file

@ -1,61 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Adam Clark <adam@isurf.ca>, 2018
# Andy H3 <andy@hubup.pro>, 2018
# R C <miqrogroove@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-01 11:11-0400\n"
"PO-Revision-Date: 2018-06-13 02:40+0000\n"
"Last-Translator: R C <miqrogroove@gmail.com>\n"
"Language-Team: English (United States) (http://www.transifex.com/Friendica/friendica/language/en_US/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_US\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:52 blockem.php:56
msgid "\"Blockem\""
msgstr "Blockem"
#: blockem.php:60
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Hides user's content by collapsing posts. Also replaces their avatar with generic image."
#: blockem.php:61
msgid "Comma separated profile URLS:"
msgstr "Comma-separated profile URLs:"
#: blockem.php:65
msgid "Save Settings"
msgstr "Save settings"
#: blockem.php:78
msgid "BLOCKEM Settings saved."
msgstr "Blockem settings saved."
#: blockem.php:136
#, php-format
msgid "Filtered user: %s"
msgstr "Filtered user: %s"
#: blockem.php:189
msgid "Unblock Author"
msgstr "Unblock author"
#: blockem.php:191
msgid "Block Author"
msgstr "Block author"
#: blockem.php:223
msgid "blockem settings updated"
msgstr "Blockem settings updated"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_us")) {
function string_plural_select_en_us($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Blockem"'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.';
$a->strings['Comma separated profile URLS:'] = 'Comma-separated profile URLs:';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['BLOCKEM Settings saved.'] = 'Blockem settings saved.';
$a->strings['Filtered user: %s'] = 'Filtered user: %s';
$a->strings['Unblock Author'] = 'Unblock author';
$a->strings['Block Author'] = 'Block author';
$a->strings['blockem settings updated'] = 'Blockem settings updated';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
$a->strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
$a->strings["Submit"] = "Sendi";
$a->strings["BLOCKEM Settings saved."] = "Konservis Agordojn de BLOCKEM.";
$a->strings["Blocked %s - Click to open/close"] = "%s blokita - Klaku por malfermi/fermi";
$a->strings["Unblock Author"] = "Malbloki Aŭtoron";
$a->strings["Block Author"] = "Bloki Aŭtoron";
$a->strings["blockem settings updated"] = "Ĝisdatigis la blockem agordojn";

View file

@ -1,53 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Albert, 2018
# Senex Petrovic <javierruizo@hotmail.com>, 2021
# Tupambae.org, 2016
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-04-01 09:45+0000\n"
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:42 blockem.php:46
msgid "Blockem"
msgstr "Blockem (Bloquealos)"
#: blockem.php:50
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Oculta el contenido del usuario al colapsar las publicaciones. También reemplaza su avatar con una imagen genérica."
#: blockem.php:51
msgid "Comma separated profile URLS:"
msgstr "URLs de perfil separadas por comas:"
#: blockem.php:55
msgid "Save Settings"
msgstr "Guardar configuración"
#: blockem.php:131
#, php-format
msgid "Filtered user: %s"
msgstr "Usuario filtrado: %s"
#: blockem.php:190
msgid "Unblock Author"
msgstr "Desbloquear autor"
#: blockem.php:192
msgid "Block Author"
msgstr "Bloquear autor"

View file

@ -1,14 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem (Bloquealos)';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Oculta el contenido del usuario al colapsar las publicaciones. También reemplaza su avatar con una imagen genérica.';
$a->strings['Comma separated profile URLS:'] = 'URLs de perfil separadas por comas:';
$a->strings['Save Settings'] = 'Guardar configuración';
$a->strings['Filtered user: %s'] = 'Usuario filtrado: %s';
$a->strings['Unblock Author'] = 'Desbloquear autor';
$a->strings['Block Author'] = 'Bloquear autor';

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-01 11:11-0400\n"
"PO-Revision-Date: 2018-04-18 14:44+0000\n"
"Last-Translator: Kris\n"
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:52 blockem.php:56
msgid "\"Blockem\""
msgstr "\"Blockem\""
#: blockem.php:60
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr ""
#: blockem.php:61
msgid "Comma separated profile URLS:"
msgstr "Profiilien URL-osoitteet pilkulla erotettuina:"
#: blockem.php:65
msgid "Save Settings"
msgstr "Tallenna asetukset"
#: blockem.php:78
msgid "BLOCKEM Settings saved."
msgstr "Blockem -asetukset tallennettu"
#: blockem.php:136
#, php-format
msgid "Filtered user: %s"
msgstr "Suodatettu käyttäjä: %s"
#: blockem.php:189
msgid "Unblock Author"
msgstr "Poista kirjoittaja estolistalta"
#: blockem.php:191
msgid "Block Author"
msgstr "Lisää kirjoittaja estolistalle"
#: blockem.php:223
msgid "blockem settings updated"
msgstr "blockem -asetukset päivitetty"

View file

@ -1,15 +0,0 @@
<?php
if(! function_exists("string_plural_select_fi_fi")) {
function string_plural_select_fi_fi($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Blockem"'] = '"Blockem"';
$a->strings['Comma separated profile URLS:'] = 'Profiilien URL-osoitteet pilkulla erotettuina:';
$a->strings['Save Settings'] = 'Tallenna asetukset';
$a->strings['BLOCKEM Settings saved.'] = 'Blockem -asetukset tallennettu';
$a->strings['Filtered user: %s'] = 'Suodatettu käyttäjä: %s';
$a->strings['Unblock Author'] = 'Poista kirjoittaja estolistalta';
$a->strings['Block Author'] = 'Lisää kirjoittaja estolistalle';
$a->strings['blockem settings updated'] = 'blockem -asetukset päivitetty';

View file

@ -1,50 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
# Marie Olive <lacellule101@gmail.com>, 2018
# StefOfficiel <pichard.stephane@free.fr>, 2015
# Vladimir Núñez <lapoubelle111@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Vladimir Núñez <lapoubelle111@gmail.com>, 2018\n"
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Cache le contenu de l'utilisateur en contractant les publications. Remplace aussi leur avatar par une image générique."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "URLs de profil séparées par des virgules:"
#: blockem.php:45
msgid "Blockem"
msgstr "Bloquez-les"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Utilisateur filtré:%s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Débloquer l'Auteur"
#: blockem.php:185
msgid "Block Author"
msgstr "Bloquer l'Auteur"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
$n = intval($n);
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Cache le contenu de l\'utilisateur en contractant les publications. Remplace aussi leur avatar par une image générique.';
$a->strings['Comma separated profile URLS:'] = 'URLs de profil séparées par des virgules:';
$a->strings['Blockem'] = 'Bloquez-les';
$a->strings['Filtered user: %s'] = 'Utilisateur filtré:%s';
$a->strings['Unblock Author'] = 'Débloquer l\'Auteur';
$a->strings['Block Author'] = 'Bloquer l\'Auteur';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Balázs Úr, 2020
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Balázs Úr, 2020\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Elrejti a felhasználók tartalmát a bejegyzések összecsukásával. Ezenkívül lecseréli a profilképeiket egy általános képre."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Profil URL-ek vesszővel elválasztva:"
#: blockem.php:45
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Kiszűrt felhasználó: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Szerző tiltásának feloldása"
#: blockem.php:185
msgid "Block Author"
msgstr "Szerző tiltása"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Elrejti a felhasználók tartalmát a bejegyzések összecsukásával. Ezenkívül lecseréli a profilképeiket egy általános képre.';
$a->strings['Comma separated profile URLS:'] = 'Profil URL-ek vesszővel elválasztva:';
$a->strings['Blockem'] = 'Blockem';
$a->strings['Filtered user: %s'] = 'Kiszűrt felhasználó: %s';
$a->strings['Unblock Author'] = 'Szerző tiltásának feloldása';
$a->strings['Block Author'] = 'Szerző tiltása';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" stillingar";
$a->strings["Comma separated profile URLS to block"] = "Banna lista af forsíðum (komma á milli)";
$a->strings["Submit"] = "Senda inn";
$a->strings["BLOCKEM Settings saved."] = "BLOCKEM stillingar vistaðar.";
$a->strings["Blocked %s - Click to open/close"] = "%s sett í straff - Smella til að taka úr/setja á";
$a->strings["Unblock Author"] = "Leyfa notanda";
$a->strings["Block Author"] = "Banna notanda";
$a->strings["blockem settings updated"] = "";

View file

@ -1,59 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014,2018-2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2019-03-11 14:21+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Nascondi il contenuto degli utenti collassando i messaggi. Sostituisce anche gli avatar con un'immagine generica."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL profili separati da virgola:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Salva Impostazioni"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "Impostazioni BLOCKEM salvate."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Utente filtrato: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Sblocca autore"
#: blockem.php:204
msgid "Block Author"
msgstr "Blocca autore"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "Impostazioni 'blockem' aggiornate."

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Nascondi il contenuto degli utenti collassando i messaggi. Sostituisce anche gli avatar con un\'immagine generica.';
$a->strings['Comma separated profile URLS:'] = 'URL profili separati da virgola:';
$a->strings['Save Settings'] = 'Salva Impostazioni';
$a->strings['BLOCKEM Settings saved.'] = 'Impostazioni BLOCKEM salvate.';
$a->strings['Filtered user: %s'] = 'Utente filtrato: %s';
$a->strings['Unblock Author'] = 'Sblocca autore';
$a->strings['Block Author'] = 'Blocca autore';
$a->strings['blockem settings updated'] = 'Impostazioni \'blockem\' aggiornate.';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "";
$a->strings["Comma separated profile URLS to block"] = "";
$a->strings["Submit"] = "Lagre";
$a->strings["BLOCKEM Settings saved."] = "";
$a->strings["Blocked %s - Click to open/close"] = "";
$a->strings["Unblock Author"] = "";
$a->strings["Block Author"] = "";
$a->strings["blockem settings updated"] = "";

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# AgnesElisa <agneselisa@disroot.org>, 2018
# Jeroen De Meerleer <me@jeroened.be>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2018-08-24 13:49+0000\n"
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Verbergt de inhoud van het bericht van de gebruiker. Daarnaast vervangt het de avatar door een standaardafbeelding."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "Profiel URLs (kommagescheiden):"
#: blockem.php:67
msgid "Save Settings"
msgstr "Instellingen opslaan"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "BLOCKEM instellingen opgeslagen."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Gefilterde gebruiker: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Deblokkeer Auteur"
#: blockem.php:204
msgid "Block Author"
msgstr "Auteur blokkeren"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "blockem instellingen opgeslagen"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Verbergt de inhoud van het bericht van de gebruiker. Daarnaast vervangt het de avatar door een standaardafbeelding.';
$a->strings['Comma separated profile URLS:'] = 'Profiel URLs (kommagescheiden):';
$a->strings['Save Settings'] = 'Instellingen opslaan';
$a->strings['BLOCKEM Settings saved.'] = 'BLOCKEM instellingen opgeslagen.';
$a->strings['Filtered user: %s'] = 'Gefilterde gebruiker: %s';
$a->strings['Unblock Author'] = 'Deblokkeer Auteur';
$a->strings['Block Author'] = 'Auteur blokkeren';
$a->strings['blockem settings updated'] = 'blockem instellingen opgeslagen';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Waldemar Stoczkowski, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Waldemar Stoczkowski, 2018\n"
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Ukrywa zawartość użytkownika, zwijając posty. Zastępuje również awatar wygenerowanym obrazem."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Rozdzielone przecinkami adresy URL profilu:"
#: blockem.php:45
msgid "Blockem"
msgstr "Zablokowanie"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Użytkownik filtrowany: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Odblokuj autora"
#: blockem.php:185
msgid "Block Author"
msgstr "Zablokuj autora"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){
$n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Ukrywa zawartość użytkownika, zwijając posty. Zastępuje również awatar wygenerowanym obrazem.';
$a->strings['Comma separated profile URLS:'] = 'Rozdzielone przecinkami adresy URL profilu:';
$a->strings['Blockem'] = 'Zablokowanie';
$a->strings['Filtered user: %s'] = 'Użytkownik filtrowany: %s';
$a->strings['Unblock Author'] = 'Odblokuj autora';
$a->strings['Block Author'] = 'Zablokuj autora';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "Configurações \"Blockem\"";
$a->strings["Comma separated profile URLS to block"] = "URLS de perfis separados por vírgulas a serem bloqueados";
$a->strings["Submit"] = "Enviar";
$a->strings["BLOCKEM Settings saved."] = "Configurações BLOCKEM armazenadas.";
$a->strings["Blocked %s - Click to open/close"] = "Bloqueado %s - Clique para abrir/fechar";
$a->strings["Unblock Author"] = "Desbloqueie Autor";
$a->strings["Block Author"] = "Bloqueie Autor";
$a->strings["blockem settings updated"] = "configurações blockem atualizadas";

View file

@ -1,52 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-07-08 11:43+0000\n"
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: blockem.php:53 blockem.php:57
msgid "\"Blockem\""
msgstr "\"Blockem\""
#: blockem.php:61
msgid "Comma separated profile URLS to block"
msgstr "Adresele URL de profil, de blocat, separate prin virgulă"
#: blockem.php:65
msgid "Save Settings"
msgstr "Salvare Configurări"
#: blockem.php:78
msgid "BLOCKEM Settings saved."
msgstr "Configurările BLOCKEM au fost salvate."
#: blockem.php:142
#, php-format
msgid "Blocked %s - Click to open/close"
msgstr "%s Blocate - Apăsați pentru a deschide/închide"
#: blockem.php:197
msgid "Unblock Author"
msgstr "Deblocare Autor"
#: blockem.php:199
msgid "Block Author"
msgstr "Blocare Autor"
#: blockem.php:231
msgid "blockem settings updated"
msgstr "Configurările blockem au fost actualizate"

View file

@ -1,15 +0,0 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
$n = intval($n);
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
}}
$a->strings['"Blockem"'] = '"Blockem"';
$a->strings['Comma separated profile URLS to block'] = 'Adresele URL de profil, de blocat, separate prin virgulă';
$a->strings['Save Settings'] = 'Salvare Configurări';
$a->strings['BLOCKEM Settings saved.'] = 'Configurările BLOCKEM au fost salvate.';
$a->strings['Blocked %s - Click to open/close'] = '%s Blocate - Apăsați pentru a deschide/închide';
$a->strings['Unblock Author'] = 'Deblocare Autor';
$a->strings['Block Author'] = 'Blocare Autor';
$a->strings['blockem settings updated'] = 'Configurările blockem au fost actualizate';

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Alexander An <ravnina@gmail.com>, 2020
# Stanislav N. <pztrn@pztrn.name>, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2020-04-23 14:13+0000\n"
"Last-Translator: Alexander An <ravnina@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Скрыть контент пользователя. Также заменяет его аватар изображением по-умолчанию."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL профилей, разделенные запятыми:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Сохранить настройки"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "BLOCKEM Настройки сохранены."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Отфильтрованный пользователь: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Разблокировать автора"
#: blockem.php:204
msgid "Block Author"
msgstr "Блокировать автора"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "Настройки Blockem обновлены"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){
$n = intval($n);
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Скрыть контент пользователя. Также заменяет его аватар изображением по-умолчанию.';
$a->strings['Comma separated profile URLS:'] = 'URL профилей, разделенные запятыми:';
$a->strings['Save Settings'] = 'Сохранить настройки';
$a->strings['BLOCKEM Settings saved.'] = 'BLOCKEM Настройки сохранены.';
$a->strings['Filtered user: %s'] = 'Отфильтрованный пользователь: %s';
$a->strings['Unblock Author'] = 'Разблокировать автора';
$a->strings['Block Author'] = 'Блокировать автора';
$a->strings['blockem settings updated'] = 'Настройки Blockem обновлены';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Bjoessi <torbjorn.andersson@syte.se>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
"Last-Translator: Transifex Bot <>\n"
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Döljer användares inlägg genom sammanslagning nedåt. Användarens profilbild ersätts med en standardbild."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Kommaseparerade profiladresser:"
#: blockem.php:45
msgid "Blockem"
msgstr "BLOCKEM"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Filtrerat på användare:%s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Avblockera författare"
#: blockem.php:185
msgid "Block Author"
msgstr "Blockera författare"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_sv")) {
function string_plural_select_sv($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Döljer användares inlägg genom sammanslagning nedåt. Användarens profilbild ersätts med en standardbild.';
$a->strings['Comma separated profile URLS:'] = 'Kommaseparerade profiladresser:';
$a->strings['Blockem'] = 'BLOCKEM';
$a->strings['Filtered user: %s'] = 'Filtrerat på användare:%s';
$a->strings['Unblock Author'] = 'Avblockera författare';
$a->strings['Block Author'] = 'Blockera författare';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "「Blockem」配置";
$a->strings["Comma separated profile URLS to block"] = "逗号分简介URL为栏";
$a->strings["Submit"] = "提交";
$a->strings["BLOCKEM Settings saved."] = "「Blockem」配置保存了。";
$a->strings["Blocked %s - Click to open/close"] = "%s拦了点击为开关";
$a->strings["Unblock Author"] = "不拦作家";
$a->strings["Block Author"] = "拦作家";
$a->strings["blockem settings updated"] = "blockem设置更新了";

View file

@ -1 +0,0 @@
{{include file="field_textarea.tpl" field=$words}}

9
bluesky/README.md Normal file
View file

@ -0,0 +1,9 @@
Bluesky Addon
==============
This addon supports posting to and receiving posts from Bluesky.
No setup is needed for the admins to make it work for their users.
Bluesky itself is under development as well. It is planned to make it decentral.
The addon is prepared to support different servers. But it isn't enabled yet.

View file

@ -6,22 +6,21 @@
* Author: Michael Vogel <https://pirati.ca/profile/heluecht>
*
* @todo
* Piece of cake?
* - Process facets
* - create facets
*
* Possible but less important:
* - Block, unblock, mute and unmute contacts
*
* Need inspiration:
* - alternate link for contacts
* - plink for posts
* Nice to have:
* - Probing for contacts
*
* Need more information:
* - only fetch new posts
* - detect incoming reshares
* - detect contact relations
* - receive likes
* - follow contacts
* - unfollow contacts
*
* Possible but less important:
* - Block contacts
* - unblock contacts
* - mute contacts
* - unmute contacts
*/
use Friendica\Content\Text\BBCode;
@ -43,8 +42,10 @@ use Friendica\Network\HTTPClient\Client\HttpClientAccept;
use Friendica\Network\HTTPClient\Client\HttpClientOptions;
use Friendica\Protocol\Activity;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Strings;
define('BLUESKY_DEFAULT_POLL_INTERVAL', 10); // given in minutes
const BLUESKY_DEFAULT_POLL_INTERVAL = 10; // given in minutes
const BLUESKY_HOST = 'https://bsky.app'; // Hard wired until Bluesky will run on multiple systems
function bluesky_install()
{
@ -64,7 +65,7 @@ function bluesky_install()
// Hook::register('unblock', __FILE__, 'bluesky_unblock');
Hook::register('check_item_notification', __FILE__, 'bluesky_check_item_notification');
// Hook::register('probe_detect', __FILE__, 'bluesky_probe_detect');
// Hook::register('item_by_link', __FILE__, 'bluesky_item_by_link');
Hook::register('item_by_link', __FILE__, 'bluesky_item_by_link');
}
function bluesky_load_config(ConfigFileManager $loader)
@ -83,6 +84,41 @@ function bluesky_check_item_notification(array &$notification_data)
}
}
function bluesky_item_by_link(array &$hookData)
{
// Don't overwrite an existing result
if (isset($hookData['item_id'])) {
return;
}
$token = bluesky_get_token($hookData['uid']);
if (empty($token)) {
return;
}
if (!preg_match('#^' . BLUESKY_HOST . '/profile/(.+)/post/(.+)#', $hookData['uri'], $matches)) {
return;
}
$did = bluesky_get_did($hookData['uid'], $matches[1]);
if (empty($did)) {
return;
}
Logger::debug('Found bluesky post', ['url' => $hookData['uri'], 'handle' => $matches[1], 'did' => $did, 'cid' => $matches[2]]);
$uri = 'at://' . $did . '/app.bsky.feed.post/' . $matches[2];
$uri = bluesky_fetch_missing_post($uri, $hookData['uid'], 0, true);
Logger::debug('Got post', ['profile' => $matches[1], 'cid' => $matches[2], 'result' => $uri]);
if (!empty($uri)) {
$item = Post::selectFirst(['id'], ['uri' => $uri, 'uid' => $hookData['uid']]);
if (!empty($item['id'])) {
$hookData['item_id'] = $item['id'];
}
}
}
function bluesky_settings(array &$data)
{
if (!DI::userSession()->getLocalUserId()) {
@ -141,7 +177,7 @@ function bluesky_settings_post(array &$b)
if (!empty($host) && !empty($handle)) {
if (empty($old_did) || $old_host != $host || $old_handle != $handle) {
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'did', bluesky_get_did(DI::userSession()->getLocalUserId()));
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'bluesky', 'did', bluesky_get_did(DI::userSession()->getLocalUserId(), DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'bluesky', 'handle')));
}
} else {
DI::pConfig()->delete(DI::userSession()->getLocalUserId(), 'bluesky', 'did');
@ -150,7 +186,6 @@ function bluesky_settings_post(array &$b)
if (!empty($_POST['bluesky_password'])) {
bluesky_create_token(DI::userSession()->getLocalUserId(), $_POST['bluesky_password']);
}
}
function bluesky_jot_nets(array &$jotnets_fields)
@ -334,7 +369,7 @@ function bluesky_create_activity(array $item, stdClass $parent = null)
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
'$type' => 'app.bsky.feed.like'
];
$post = [
'collection' => 'app.bsky.feed.like',
'repo' => $did,
@ -373,15 +408,23 @@ function bluesky_create_post(array $item, stdClass $root = null, stdClass $paren
}
$did = DI::pConfig()->get($uid, 'bluesky', 'did');
$urls = bluesky_get_urls($item['body']);
$msg = Plaintext::getPost($item, 300, false, BBCode::CONNECTORS);
foreach ($msg['parts'] as $key => $part) {
$facets = bluesky_get_facets($part, $urls);
$record = [
'text' => $part,
'text' => $facets['body'],
'createdAt' => DateTimeFormat::utcNow(DateTimeFormat::ATOM),
'$type' => 'app.bsky.feed.post'
];
if (!empty($facets['facets'])) {
$record['facets'] = $facets['facets'];
}
if (!empty($root)) {
$record['reply'] = ['root' => $root, 'parent' => $parent];
}
@ -412,6 +455,63 @@ function bluesky_create_post(array $item, stdClass $root = null, stdClass $paren
}
}
function bluesky_get_urls(string $body): array
{
// Remove all hashtags and mentions
$body = preg_replace("/([#@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '', $body);
$urls = [];
// Search for pure links
if (preg_match_all("/\[url\](https?:.*?)\[\/url\]/ism", $body, $matches)) {
foreach ($matches[1] as $url) {
$urls[] = $url;
}
}
// Search for links with descriptions
if (preg_match_all("/\[url\=(https?:.*?)\].*?\[\/url\]/ism", $body, $matches)) {
foreach ($matches[1] as $url) {
$urls[] = $url;
}
}
return $urls;
}
function bluesky_get_facets(string $body, array $urls): array
{
$facets = [];
foreach ($urls as $url) {
$pos = strpos($body, $url);
if ($pos === false) {
continue;
}
if ($pos > 0) {
$prefix = substr($body, 0, $pos);
} else {
$prefix = '';
}
$linktext = Strings::getStyledURL($url);
$body = $prefix . $linktext . substr($body, $pos + strlen($url));
$facet = new stdClass;
$facet->index = new stdClass;
$facet->index->byteEnd = $pos + strlen($linktext);
$facet->index->byteStart = $pos;
$feature = new stdClass;
$feature->uri = $url;
$type = '$type';
$feature->$type = 'app.bsky.richtext.facet#link';
$facet->features = [$feature];
$facets[] = $facet;
}
return ['facets' => $facets, 'body' => $body];
}
function bluesky_add_embed(int $uid, array $msg, array $record): array
{
if (($msg['type'] != 'link') && !empty($msg['images'])) {
@ -484,12 +584,55 @@ function bluesky_fetch_timeline(int $uid)
foreach (array_reverse($data->feed) as $entry) {
bluesky_process_post($entry->post, $uid);
if (!empty($entry->reason)) {
bluesky_process_reason($entry->reason, bluesky_get_uri($entry->post), $uid);
}
}
// @todo Support paging
// [cursor] => 1684670516000::bafyreidq3ilwslmlx72jf5vrk367xcc63s6lrhzlyup2bi3zwcvso6w2vi
}
function bluesky_process_reason(stdClass $reason, string $uri, int $uid)
{
$type = '$type';
if ($reason->$type != 'app.bsky.feed.defs#reasonRepost') {
return;
}
$contact = bluesky_get_contact($reason->by, $uid);
$item = [
'network' => Protocol::BLUESKY,
'uid' => $uid,
'wall' => false,
'uri' => $reason->by->did . '/app.bsky.feed.repost/' . $reason->indexedAt,
'private' => Item::UNLISTED,
'verb' => Activity::POST,
'contact-id' => $contact['id'],
'author-name' => $contact['name'],
'author-link' => $contact['url'],
'author-avatar' => $contact['avatar'],
'verb' => Activity::ANNOUNCE,
'body' => Activity::ANNOUNCE,
'gravity' => Item::GRAVITY_ACTIVITY,
'object-type' => Activity\ObjectType::NOTE,
'thr-parent' => $uri,
];
if (Post::exists(['uri' => $item['uri'], 'uid' => $uid])) {
return;
}
$item['owner-name'] = $item['author-name'];
$item['owner-link'] = $item['author-link'];
$item['owner-avatar'] = $item['author-avatar'];
if (Item::insert($item)) {
$cdata = Contact::getPublicAndUserContactID($contact['id'], $uid);
Item::update(['post-reason' => Item::PR_ANNOUNCEMENT, 'causer-id' => $cdata['public']], ['uri' => $uri, 'uid' => $uid]);
}
}
function bluesky_process_post(stdClass $post, int $uid): int
{
$uri = bluesky_get_uri($post);
@ -512,6 +655,10 @@ function bluesky_process_post(stdClass $post, int $uid): int
function bluesky_get_header(stdClass $post, string $uri, int $uid): array
{
$parts = bluesky_get_uri_parts($uri);
if (empty($post->author)) {
return [];
}
$contact = bluesky_get_contact($post->author, $uid);
$item = [
'network' => Protocol::BLUESKY,
@ -525,7 +672,7 @@ function bluesky_get_header(stdClass $post, string $uri, int $uid): array
'author-name' => $contact['name'],
'author-link' => $contact['url'],
'author-avatar' => $contact['avatar'],
// 'plink' => '', @todo Path to a web representation
'plink' => $contact['alias'] . '/post/' . $parts->rkey,
];
$item['uri-id'] = ItemURI::getIdByURI($uri);
@ -540,22 +687,59 @@ function bluesky_get_content(array $item, stdClass $record, int $uid): array
{
if (!empty($record->reply)) {
$item['parent-uri'] = bluesky_get_uri($record->reply->root);
bluesky_fetch_missing_post($item['parent-uri'], $uid);
$item['parent-uri'] = bluesky_fetch_missing_post($item['parent-uri'], $uid, $item['contact-id']);
$item['thr-parent'] = bluesky_get_uri($record->reply->parent);
bluesky_fetch_missing_post($item['thr-parent'], $uid);
$item['thr-parent'] = bluesky_fetch_missing_post($item['thr-parent'], $uid, $item['contact-id']);
}
$body = $record->text;
if (!empty($record->facets)) {
// @todo add Links
}
$item['body'] = $body;
$item['body'] = bluesky_get_text($record, $uid);
$item['created'] = DateTimeFormat::utc($record->createdAt, DateTimeFormat::MYSQL);
return $item;
}
function bluesky_get_text(stdClass $record, int $uid): string
{
$text = $record->text;
if (empty($record->facets)) {
return $text;
}
$facets = [];
foreach ($record->facets as $facet) {
$facets[$facet->index->byteStart] = $facet;
}
krsort($facets);
foreach ($facets as $facet) {
$prefix = substr($text, 0, $facet->index->byteStart);
$linktext = substr($text, $facet->index->byteStart, $facet->index->byteEnd - $facet->index->byteStart);
$suffix = substr($text, $facet->index->byteEnd);
$url = '';
foreach ($facet->features as $feature) {
if (!empty($feature->uri)) {
$url = $feature->uri;
}
if (!empty($feature->did)) {
$contact = Contact::selectFirst(['id'], ['nurl' => $feature->did, 'uid' => [0, $uid]]);
if (!empty($contact['id'])) {
$url = DI::baseUrl() . '/contact/' . $contact['id'];
if (substr($linktext, 0, 1) == '@') {
$prefix .= '@';
$linktext = substr($linktext, 1);
}
}
}
}
if (!empty($url)) {
$text = $prefix . '[url=' . $url . ']' . $linktext . '[/url]' . $suffix;
}
}
return $text;
}
function bluesky_add_media(stdClass $embed, array $item): array
{
if (!empty($embed->images)) {
@ -570,7 +754,8 @@ function bluesky_add_media(stdClass $embed, array $item): array
Post\Media::insert($media);
}
} elseif (!empty($embed->external)) {
$media = ['uri-id' => $item['uri-id'],
$media = [
'uri-id' => $item['uri-id'],
'type' => Post\Media::HTML,
'url' => $embed->external->uri,
'name' => $embed->external->title,
@ -582,15 +767,17 @@ function bluesky_add_media(stdClass $embed, array $item): array
$shared = Post::selectFirst(['uri-id'], ['uri' => $uri, 'uid' => $item['uid']]);
if (empty($shared)) {
$shared = bluesky_get_header($embed->record, $uri, 0);
$shared = bluesky_get_content($shared, $embed->record->value, $item['uid']);
if (!empty($shared)) {
$shared = bluesky_get_content($shared, $embed->record->value, $item['uid']);
if (!empty($embed->record->embeds)) {
foreach ($embed->record->embeds as $single) {
$shared = bluesky_add_media($single, $shared);
if (!empty($embed->record->embeds)) {
foreach ($embed->record->embeds as $single) {
$shared = bluesky_add_media($single, $shared);
}
}
$id = Item::insert($shared);
$shared = Post::selectFirst(['uri-id'], ['id' => $id]);
}
$id = Item::insert($shared);
$shared = Post::selectFirst(['uri-id'], ['id' => $id]);
}
if (!empty($shared)) {
$item['quote-uri-id'] = $shared['uri-id'];
@ -644,30 +831,54 @@ function bluesky_get_uri_parts(string $uri): ?stdClass
return $class;
}
function bluesky_fetch_missing_post(string $uri, int $uid)
function bluesky_fetch_missing_post(string $uri, int $uid, int $causer, bool $original = false): string
{
if (Post::exists(['uri' => $uri, 'uid' => [$uid, 0]])) {
Logger::debug('Post exists', ['uri' => $uri]);
return;
return $uri;
}
$reply = Post::selectFirst(['uri'], ['extid' => $uri, 'uid' => [$uid, 0]]);
if (!empty($reply['uri'])) {
return $reply['uri'];
}
Logger::debug('Fetch missing post', ['uri' => $uri]);
$class = bluesky_get_uri_class($uri);
$data = bluesky_get($uid, '/xrpc/app.bsky.feed.getPosts?uris=' . $class->uri, HttpClientAccept::JSON, [HttpClientOptions::HEADERS => ['Authorization' => ['Bearer ' . bluesky_get_token($uid)]]]);
if (!$original) {
$class = bluesky_get_uri_class($uri);
$fetch_uri = $class->uri;
} else {
$fetch_uri = $uri;
}
$data = bluesky_get($uid, '/xrpc/app.bsky.feed.getPosts?uris=' . urlencode($fetch_uri), HttpClientAccept::JSON, [HttpClientOptions::HEADERS => ['Authorization' => ['Bearer ' . bluesky_get_token($uid)]]]);
if (empty($data)) {
return;
return '';
}
if ($causer != 0) {
$cdata = Contact::getPublicAndUserContactID($causer, $uid);
}
foreach ($data->posts as $post) {
$uri = bluesky_get_uri($post);
$item = bluesky_get_header($post, $uri, $uid);
$item = bluesky_get_content($item, $post->record, $uid);
$item['post-reason'] = Item::PR_FETCHED;
if (!empty($cdata['public'])) {
$item['causer-id'] = $cdata['public'];
}
if (!empty($post->embed)) {
$item = bluesky_add_media($post->embed, $item);
}
$id = Item::insert($item);
Logger::debug('Stored item', ['id' => $id, 'uri' => $uri]);
}
return $uri;
}
function bluesky_get_contact(stdClass $author, int $uid): array
@ -675,9 +886,10 @@ function bluesky_get_contact(stdClass $author, int $uid): array
$condition = ['network' => Protocol::BLUESKY, 'uid' => $uid, 'url' => $author->did];
$fields = [
'name' => $author->displayName,
'nick' => $author->handle,
'addr' => $author->handle,
'alias' => BLUESKY_HOST . '/profile/' . $author->handle,
'name' => $author->displayName,
'nick' => $author->handle,
'addr' => $author->handle,
];
$contact = Contact::selectFirst([], $condition);
@ -686,7 +898,7 @@ function bluesky_get_contact(stdClass $author, int $uid): array
$cid = bluesky_insert_contact($author, $uid);
} else {
$cid = $contact['id'];
if ($fields['name'] != $contact['name'] || $fields['nick'] != $contact['nick'] || $fields['addr'] != $contact['addr']) {
if ($fields['alias'] != $contact['alias'] || $fields['name'] != $contact['name'] || $fields['nick'] != $contact['nick'] || $fields['addr'] != $contact['addr']) {
Contact::update($fields, ['id' => $cid]);
}
}
@ -698,7 +910,7 @@ function bluesky_get_contact(stdClass $author, int $uid): array
$pcid = bluesky_insert_contact($author, 0);
} else {
$pcid = $contact['id'];
if ($fields['name'] != $contact['name'] || $fields['nick'] != $contact['nick'] || $fields['addr'] != $contact['addr']) {
if ($fields['alias'] != $contact['alias'] || $fields['name'] != $contact['name'] || $fields['nick'] != $contact['nick'] || $fields['addr'] != $contact['addr']) {
Contact::update($fields, ['id' => $pcid]);
}
}
@ -726,7 +938,7 @@ function bluesky_insert_contact(stdClass $author, int $uid)
'pending' => false,
'url' => $author->did,
'nurl' => $author->did,
// 'alias' => '', @todo Path to a web representation
'alias' => BLUESKY_HOST . '/profile/' . $author->handle,
'name' => $author->displayName,
'nick' => $author->handle,
'addr' => $author->handle,
@ -742,13 +954,17 @@ function bluesky_update_contact(stdClass $author, int $uid, int $cid, int $pcid)
}
$fields = [
'alias' => BLUESKY_HOST . '/profile/' . $data->handle,
'name' => $data->displayName,
'nick' => $data->handle,
'addr' => $data->handle,
'about' => HTML::toBBCode($data->description),
'updated' => DateTimeFormat::utcNow(DateTimeFormat::MYSQL),
];
if (!empty($data->description)) {
$fields['about'] = HTML::toBBCode($data->description);
}
if (!empty($data->banner)) {
$fields['header'] = $data->banner;
}
@ -757,9 +973,9 @@ function bluesky_update_contact(stdClass $author, int $uid, int $cid, int $pcid)
Contact::update($fields, ['id' => $pcid]);
}
function bluesky_get_did(int $uid): string
function bluesky_get_did(int $uid, string $handle): string
{
$data = bluesky_get($uid, '/xrpc/com.atproto.identity.resolveHandle?handle=' . DI::pConfig()->get($uid, 'bluesky', 'handle'));
$data = bluesky_get($uid, '/xrpc/com.atproto.identity.resolveHandle?handle=' . $handle);
if (empty($data)) {
return '';
}

View file

@ -4,15 +4,15 @@
#
#
# Translators:
# Balázs Úr, 2020-2021
# Balázs Úr, 2020-2021,2023
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:15-0500\n"
"PO-Revision-Date: 2014-06-23 09:54+0000\n"
"Last-Translator: Balázs Úr, 2020-2021\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"Last-Translator: Balázs Úr, 2020-2021,2023\n"
"Language-Team: Hungarian (http://app.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@ -31,68 +31,72 @@ msgstr "E-mail-cím, ahonnan úgy tűnik, hogy a folyam elemei származnak."
msgid "Save Settings"
msgstr "Beállítások mentése"
#: mailstream.php:301
#: mailstream.php:311
msgid "Re:"
msgstr "Vá:"
#: mailstream.php:314 mailstream.php:317
#: mailstream.php:324 mailstream.php:327
msgid "Friendica post"
msgstr "Friendica-bejegyzés"
#: mailstream.php:320
#: mailstream.php:330
msgid "Diaspora post"
msgstr "Diaspora-bejegyzés"
#: mailstream.php:330
#: mailstream.php:340
msgid "Feed item"
msgstr "Hírforráselem"
#: mailstream.php:333
#: mailstream.php:343
msgid "Email"
msgstr "E-mail"
#: mailstream.php:335
#: mailstream.php:345
msgid "Friendica Item"
msgstr "Friendica-elem"
#: mailstream.php:404
#: mailstream.php:419
msgid "Upstream"
msgstr "Távoli"
#: mailstream.php:405
#: mailstream.php:420
msgid "URI"
msgstr "URI"
#: mailstream.php:421
msgid "Local"
msgstr "Helyi"
#: mailstream.php:481
#: mailstream.php:499
msgid "Enabled"
msgstr "Engedélyezve"
#: mailstream.php:486
#: mailstream.php:504
msgid "Email Address"
msgstr "E-mail-cím"
#: mailstream.php:488
#: mailstream.php:506
msgid "Leave blank to use your account email address"
msgstr "Hagyja üresen a fiókja e-mail-címének használatához"
#: mailstream.php:492
#: mailstream.php:510
msgid "Exclude Likes"
msgstr "Kedvelések kizárása"
#: mailstream.php:494
#: mailstream.php:512
msgid "Check this to omit mailing \"Like\" notifications"
msgstr "Jelölje be ezt a „Tetszik” értesítések elküldésének kihagyásához"
#: mailstream.php:498
#: mailstream.php:516
msgid "Attach Images"
msgstr "Képek csatolása"
#: mailstream.php:500
#: mailstream.php:518
msgid ""
"Download images in posts and attach them to the email. Useful for reading "
"email while offline."
msgstr "Képek letöltése a bejegyzésekből és csatolás az e-mailhez. Hasznos az e-mailek kapcsolat nélküli olvasásakor."
#: mailstream.php:507
#: mailstream.php:525
msgid "Mail Stream Settings"
msgstr "Levelezőfolyam beállításai"

View file

@ -15,6 +15,7 @@ $a->strings['Feed item'] = 'Hírforráselem';
$a->strings['Email'] = 'E-mail';
$a->strings['Friendica Item'] = 'Friendica-elem';
$a->strings['Upstream'] = 'Távoli';
$a->strings['URI'] = 'URI';
$a->strings['Local'] = 'Helyi';
$a->strings['Enabled'] = 'Engedélyezve';
$a->strings['Email Address'] = 'E-mail-cím';

View file

@ -214,7 +214,12 @@ function mailstream_do_images(array &$item, array &$attachments)
}
$cookiejar = tempnam(System::getTempPath(), 'cookiejar-mailstream-');
$curlResult = DI::httpClient()->fetchFull($url, HttpClientAccept::DEFAULT, 0, $cookiejar);
try {
$curlResult = DI::httpClient()->fetchFull($url, HttpClientAccept::DEFAULT, 0, $cookiejar);
} catch (InvalidArgumentException $e) {
Logger::error('mailstream_do_images exception fetching url', ['url' => $url, 'item_id' => $item['id']]);
continue;
}
$attachments[$url] = [
'data' => $curlResult->getBody(),
'guid' => hash('crc32', $url),

View file

@ -4,28 +4,28 @@
#
#
# Translators:
# Balázs Úr, 2020-2021
# Balázs Úr, 2020-2021,2023
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"POT-Creation-Date: 2023-05-01 07:39+0200\n"
"PO-Revision-Date: 2014-06-23 11:18+0000\n"
"Last-Translator: Balázs Úr, 2020-2021\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"Last-Translator: Balázs Úr, 2020-2021,2023\n"
"Language-Team: Hungarian (http://app.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: piwik.php:87
#: piwik.php:96
msgid ""
"This website is tracked using the <a href='http://www.matomo.org'>Matomo</a>"
" analytics tool."
msgstr "Ez a weboldal a <a href='http://www.matomo.org'>Matomo</a> analitikai eszköz használatával van követve."
#: piwik.php:90
#: piwik.php:99
#, php-format
msgid ""
"If you do not want that your visits are logged in this way you <a "
@ -33,28 +33,32 @@ msgid ""
"visits of the site</a> (opt-out)."
msgstr "Ha nem szeretné, hogy a látogatásai ilyen módon naplózva legyenek, akkor <a href='%s'>beállíthat egy sütit annak megakadályozásához, hogy a Matomo vagy a Piwik kövesse az oldal további meglátogatásait</a> (lemondás)."
#: piwik.php:97
#: piwik.php:108
msgid "Save Settings"
msgstr "Beállítások mentése"
#: piwik.php:98
#: piwik.php:109
msgid "Matomo (Piwik) Base URL"
msgstr "Matomo (Piwik) alap URL"
#: piwik.php:98
#: piwik.php:109
msgid ""
"Absolute path to your Matomo (Piwik) installation. (without protocol "
"(http/s), with trailing slash)"
msgstr "Abszolút útvonal a Matomo (Piwik) telepítéséhez (http vagy https protokoll nélkül, de lezáró perjellel)."
#: piwik.php:99
#: piwik.php:110
msgid "Site ID"
msgstr "Oldalazonosító"
#: piwik.php:100
#: piwik.php:111
msgid "Show opt-out cookie link?"
msgstr "Megjeleníti a lemondó süti hivatkozását?"
#: piwik.php:101
#: piwik.php:112
msgid "Asynchronous tracking"
msgstr "Aszinkron követés"
#: piwik.php:113
msgid "Shortcut path to the script ('/js/' instead of '/piwik.js')"
msgstr "A parancsfájl rövidített útvonala („/js/” a „/piwik.js” helyett)"

View file

@ -13,3 +13,4 @@ $a->strings['Absolute path to your Matomo (Piwik) installation. (without protoco
$a->strings['Site ID'] = 'Oldalazonosító';
$a->strings['Show opt-out cookie link?'] = 'Megjeleníti a lemondó süti hivatkozását?';
$a->strings['Asynchronous tracking'] = 'Aszinkron követés';
$a->strings['Shortcut path to the script (\'/js/\' instead of \'/piwik.js\')'] = 'A parancsfájl rövidített útvonala („/js/” a „/piwik.js” helyett)';

View file

@ -4,69 +4,86 @@
#
#
# Translators:
# Balázs Úr, 2020-2021
# Balázs Úr, 2020-2021,2023
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:17-0500\n"
"POT-Creation-Date: 2023-04-29 06:56+0000\n"
"PO-Revision-Date: 2014-06-23 12:58+0000\n"
"Last-Translator: Balázs Úr, 2020-2021\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"Last-Translator: Balázs Úr, 2020-2021,2023\n"
"Language-Team: Hungarian (http://app.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: tumblr.php:39
#: tumblr.php:243
msgid "Permission denied."
msgstr "Engedély megtagadva."
#: tumblr.php:69
#: tumblr.php:296
msgid "Save Settings"
msgstr "Beállítások mentése"
#: tumblr.php:71
#: tumblr.php:297
msgid "Consumer Key"
msgstr "Felhasználói kulcs"
#: tumblr.php:72
#: tumblr.php:298
msgid "Consumer Secret"
msgstr "Felhasználói titok"
#: tumblr.php:177
msgid "You are now authenticated to tumblr."
msgstr "Most már hitelesítve van a Tumblr-hez."
#: tumblr.php:299
msgid "Maximum tags"
msgstr "Legtöbb címke"
#: tumblr.php:178
msgid "return to the connector page"
msgstr "visszatérés a csatlakozó oldalára"
#: tumblr.php:299
msgid ""
"Maximum number of tags that a user can follow. Enter 0 to deactivate the "
"feature."
msgstr "A címkék legnagyobb száma, amit egy felhasználó követhet. Adjon meg 0 értéket a funkció kikapcsolásához."
#: tumblr.php:194
msgid "Post to Tumblr"
msgstr "Beküldése a Tumblr-re"
#: tumblr.php:225
#: tumblr.php:336
msgid "Post to page:"
msgstr "Beküldés az oldalra:"
#: tumblr.php:231
#: tumblr.php:342
msgid "(Re-)Authenticate your tumblr page"
msgstr "A Tumblr-oldal (újra)hitelesítése"
#: tumblr.php:232
#: tumblr.php:343
msgid "You are not authenticated to tumblr"
msgstr "Nincs hitelesítve van a Tumblr-hez"
#: tumblr.php:237
#: tumblr.php:348
msgid "Enable Tumblr Post Addon"
msgstr "A Tumblr-beküldő bővítmény engedélyezése"
#: tumblr.php:238
#: tumblr.php:349
msgid "Post to Tumblr by default"
msgstr "Beküldés a Tumblr-re alapértelmezetten"
#: tumblr.php:244
msgid "Tumblr Export"
msgstr "Tumblr exportálás"
#: tumblr.php:350
msgid "Import the remote timeline"
msgstr "A távoli idővonal importálása"
#: tumblr.php:351
msgid "Subscribed tags"
msgstr "Feliratkozott címkék"
#: tumblr.php:351
#, php-format
msgid ""
"Comma separated list of up to %d tags that will be imported additionally to "
"the timeline"
msgstr "Legfeljebb %d címke vesszővel elválasztott listája, amelyek szintén importálásra kerülnek az idővonalon felül"
#: tumblr.php:357
msgid "Tumblr Import/Export"
msgstr "Tumblr importálás és exportálás"
#: tumblr.php:375
msgid "Post to Tumblr"
msgstr "Beküldése a Tumblr-re"

View file

@ -9,12 +9,15 @@ $a->strings['Permission denied.'] = 'Engedély megtagadva.';
$a->strings['Save Settings'] = 'Beállítások mentése';
$a->strings['Consumer Key'] = 'Felhasználói kulcs';
$a->strings['Consumer Secret'] = 'Felhasználói titok';
$a->strings['You are now authenticated to tumblr.'] = 'Most már hitelesítve van a Tumblr-hez.';
$a->strings['return to the connector page'] = 'visszatérés a csatlakozó oldalára';
$a->strings['Post to Tumblr'] = 'Beküldése a Tumblr-re';
$a->strings['Maximum tags'] = 'Legtöbb címke';
$a->strings['Maximum number of tags that a user can follow. Enter 0 to deactivate the feature.'] = 'A címkék legnagyobb száma, amit egy felhasználó követhet. Adjon meg 0 értéket a funkció kikapcsolásához.';
$a->strings['Post to page:'] = 'Beküldés az oldalra:';
$a->strings['(Re-)Authenticate your tumblr page'] = 'A Tumblr-oldal (újra)hitelesítése';
$a->strings['You are not authenticated to tumblr'] = 'Nincs hitelesítve van a Tumblr-hez';
$a->strings['Enable Tumblr Post Addon'] = 'A Tumblr-beküldő bővítmény engedélyezése';
$a->strings['Post to Tumblr by default'] = 'Beküldés a Tumblr-re alapértelmezetten';
$a->strings['Tumblr Export'] = 'Tumblr exportálás';
$a->strings['Import the remote timeline'] = 'A távoli idővonal importálása';
$a->strings['Subscribed tags'] = 'Feliratkozott címkék';
$a->strings['Comma separated list of up to %d tags that will be imported additionally to the timeline'] = 'Legfeljebb %d címke vesszővel elválasztott listája, amelyek szintén importálásra kerülnek az idővonalon felül';
$a->strings['Tumblr Import/Export'] = 'Tumblr importálás és exportálás';
$a->strings['Post to Tumblr'] = 'Beküldése a Tumblr-re';