Merge remote-tracking branch 'upstream/2021.06-rc' into http-input-data

This commit is contained in:
Michael 2021-05-23 20:17:50 +00:00
commit a69e128fe4
18 changed files with 101 additions and 73 deletions

View File

@ -1186,12 +1186,12 @@ function api_statuses_update($type)
INNER JOIN `user` ON `user`.`uid` = `photo`.`uid` WHERE `resource-id` IN INNER JOIN `user` ON `user`.`uid` = `photo`.`uid` WHERE `resource-id` IN
(SELECT `resource-id` FROM `photo` WHERE `id` = ?) AND `photo`.`uid` = ? (SELECT `resource-id` FROM `photo` WHERE `id` = ?) AND `photo`.`uid` = ?
ORDER BY `photo`.`width` DESC LIMIT 2", $id, api_user())); ORDER BY `photo`.`width` DESC LIMIT 2", $id, api_user()));
if (!empty($media)) { if (!empty($media)) {
$ressources[] = $media[0]['resource-id']; $ressources[] = $media[0]['resource-id'];
$phototypes = Images::supportedTypes(); $phototypes = Images::supportedTypes();
$ext = $phototypes[$media[0]['type']]; $ext = $phototypes[$media[0]['type']];
$attachment = ['type' => Post\Media::IMAGE, 'mimetype' => $media[0]['type'], $attachment = ['type' => Post\Media::IMAGE, 'mimetype' => $media[0]['type'],
'url' => DI::baseUrl() . '/photo/' . $media[0]['resource-id'] . '-' . $media[0]['scale'] . '.' . $ext, 'url' => DI::baseUrl() . '/photo/' . $media[0]['resource-id'] . '-' . $media[0]['scale'] . '.' . $ext,
'size' => $media[0]['datasize'], 'size' => $media[0]['datasize'],
@ -1199,7 +1199,7 @@ function api_statuses_update($type)
'description' => $media[0]['desc'] ?? '', 'description' => $media[0]['desc'] ?? '',
'width' => $media[0]['width'], 'width' => $media[0]['width'],
'height' => $media[0]['height']]; 'height' => $media[0]['height']];
if (count($media) > 1) { if (count($media) > 1) {
$attachment['preview'] = DI::baseUrl() . '/photo/' . $media[1]['resource-id'] . '-' . $media[1]['scale'] . '.' . $ext; $attachment['preview'] = DI::baseUrl() . '/photo/' . $media[1]['resource-id'] . '-' . $media[1]['scale'] . '.' . $ext;
$attachment['preview-width'] = $media[1]['width']; $attachment['preview-width'] = $media[1]['width'];

View File

@ -128,6 +128,7 @@ function dfrn_poll_init(App $a)
$_SESSION['visitor_handle'] = $r[0]['addr']; $_SESSION['visitor_handle'] = $r[0]['addr'];
$_SESSION['visitor_visiting'] = $r[0]['uid']; $_SESSION['visitor_visiting'] = $r[0]['uid'];
$_SESSION['my_url'] = $r[0]['url']; $_SESSION['my_url'] = $r[0]['url'];
$_SESSION['remote_comment'] = $r[0]['subscribe'];
Session::setVisitorsContacts(); Session::setVisitorsContacts();
@ -497,8 +498,10 @@ function dfrn_poll_content(App $a)
$_SESSION['authenticated'] = 1; $_SESSION['authenticated'] = 1;
$_SESSION['visitor_id'] = $r[0]['id']; $_SESSION['visitor_id'] = $r[0]['id'];
$_SESSION['visitor_home'] = $r[0]['url']; $_SESSION['visitor_home'] = $r[0]['url'];
$_SESSION['visitor_handle'] = $r[0]['addr'];
$_SESSION['visitor_visiting'] = $r[0]['uid']; $_SESSION['visitor_visiting'] = $r[0]['uid'];
$_SESSION['my_url'] = $r[0]['url']; $_SESSION['my_url'] = $r[0]['url'];
$_SESSION['remote_comment'] = $r[0]['subscribe'];
Session::setVisitorsContacts(); Session::setVisitorsContacts();

View File

@ -326,7 +326,7 @@ function settings_post(App $a)
$detailed_notif = (($_POST['detailed_notif'] == 1) ? 1 : 0); $detailed_notif = (($_POST['detailed_notif'] == 1) ? 1 : 0);
$notify_ignored = (($_POST['notify_ignored'] == 1) ? 1 : 0); $notify_ignored = (($_POST['notify_ignored'] == 1) ? 1 : 0);
$notify = 0; $notify = 0;
if (!empty($_POST['notify1'])) { if (!empty($_POST['notify1'])) {

View File

@ -158,4 +158,4 @@ function unfollow_process(string $url)
} }
DI::baseUrl()->redirect($return_path); DI::baseUrl()->redirect($return_path);
} }

View File

@ -43,4 +43,4 @@ function update_notes_content(App $a) {
$text = notes_content($a, $profile_uid); $text = notes_content($a, $profile_uid);
System::htmlUpdateExit($text); System::htmlUpdateExit($text);
} }

View File

@ -34,6 +34,7 @@ use Friendica\Core\L10n;
use Friendica\Core\System; use Friendica\Core\System;
use Friendica\Core\Theme; use Friendica\Core\Theme;
use Friendica\Database\Database; use Friendica\Database\Database;
use Friendica\Model\Contact;
use Friendica\Model\Profile; use Friendica\Model\Profile;
use Friendica\Module\Special\HTTPException as ModuleHTTPException; use Friendica\Module\Special\HTTPException as ModuleHTTPException;
use Friendica\Network\HTTPException; use Friendica\Network\HTTPException;
@ -464,6 +465,11 @@ class App
if (Core\Session::get('visitor_home') != $_GET["zrl"]) { if (Core\Session::get('visitor_home') != $_GET["zrl"]) {
Core\Session::set('my_url', $_GET['zrl']); Core\Session::set('my_url', $_GET['zrl']);
Core\Session::set('authenticated', 0); Core\Session::set('authenticated', 0);
$remote_contact = Contact::getByURL($_GET['zrl'], false, ['subscribe']);
if (!empty($remote_contact['subscribe'])) {
$_SESSION['remote_comment'] = $remote_contact['subscribe'];
}
} }
Model\Profile::zrlInit($this); Model\Profile::zrlInit($this);

View File

@ -127,8 +127,8 @@ class TagCloud
private static function tagCalc(array $arr) private static function tagCalc(array $arr)
{ {
$tags = []; $tags = [];
$min = 1e9; $min = 1000000000.0;
$max = -1e9; $max = -1000000000.0;
$x = 0; $x = 0;
if (!$arr) { if (!$arr) {
@ -145,7 +145,7 @@ class TagCloud
} }
usort($tags, 'self::tagsSort'); usort($tags, 'self::tagsSort');
$range = max(.01, $max - $min) * 1.0001; $range = max(0.01, $max - $min) * 1.0001;
for ($x = 0; $x < count($tags); $x ++) { for ($x = 0; $x < count($tags); $x ++) {
$tags[$x][2] = 1 + floor(9 * ($tags[$x][1] - $min) / $range); $tags[$x][2] = 1 + floor(9 * ($tags[$x][1] - $min) / $range);

View File

@ -465,7 +465,7 @@ class Installer
$status = $this->checkFunction('proc_open', $status = $this->checkFunction('proc_open',
DI::l10n()->t('Program execution functions'), DI::l10n()->t('Program execution functions'),
DI::l10n()->t('Error: Program execution functions required but not enabled.'), DI::l10n()->t('Error: Program execution functions (proc_open) required but not enabled.'),
true true
); );
$returnVal = $returnVal ? $status : false; $returnVal = $returnVal ? $status : false;

View File

@ -2739,9 +2739,10 @@ class Item
* *
* @param string $body * @param string $body
* @param string $url * @param string $url
* @param int $type
* @return bool * @return bool
*/ */
public static function containsLink(string $body, string $url) public static function containsLink(string $body, string $url, int $type = 0)
{ {
// Make sure that for example site parameters aren't used when testing if the link is contained in the body // Make sure that for example site parameters aren't used when testing if the link is contained in the body
$urlparts = parse_url($url); $urlparts = parse_url($url);
@ -2749,6 +2750,12 @@ class Item
unset($urlparts['fragment']); unset($urlparts['fragment']);
$url = Network::unparseURL($urlparts); $url = Network::unparseURL($urlparts);
// Remove media links to only search in embedded content
// @todo Check images for image link, audio for audio links, ...
if (in_array($type, [Post\Media::AUDIO, Post\Media::VIDEO, Post\Media::IMAGE])) {
$body = preg_replace("/\[url=[^\[\]]*\](.*)\[\/url\]/Usi", ' $1 ', $body);
}
if (strpos($body, $url)) { if (strpos($body, $url)) {
return true; return true;
} }
@ -2777,7 +2784,7 @@ class Item
// @todo In the future we should make a single for the template engine with all media in it. This allows more flexibilty. // @todo In the future we should make a single for the template engine with all media in it. This allows more flexibilty.
foreach ($attachments['visual'] as $attachment) { foreach ($attachments['visual'] as $attachment) {
if (self::containsLink($item['body'], $attachment['url'])) { if (self::containsLink($item['body'], $attachment['url'], $attachment['type'])) {
continue; continue;
} }
@ -2955,7 +2962,7 @@ class Item
// @todo Use a template // @todo Use a template
$rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data); $rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data);
} elseif (!self::containsLink($content, $data['url'])) { } elseif (!self::containsLink($content, $data['url'], Post\Media::HTML)) {
$rendered = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/link.tpl'), [ $rendered = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/link.tpl'), [
'$url' => $data['url'], '$url' => $data['url'],
'$title' => $data['title'], '$title' => $data['title'],

View File

@ -36,15 +36,14 @@ use Friendica\Worker\Delivery;
class Mail class Mail
{ {
/** /**
* Insert received private message * Insert private message
* *
* @param array $msg * @param array $msg
* @param bool $notifiction
* @return int|boolean Message ID or false on error * @return int|boolean Message ID or false on error
*/ */
public static function insert($msg) public static function insert($msg, $notifiction = true)
{ {
$user = User::getById($msg['uid']);
if (!isset($msg['reply'])) { if (!isset($msg['reply'])) {
$msg['reply'] = DBA::exists('mail', ['parent-uri' => $msg['parent-uri']]); $msg['reply'] = DBA::exists('mail', ['parent-uri' => $msg['parent-uri']]);
} }
@ -63,6 +62,10 @@ class Mail
$msg['created'] = (!empty($msg['created']) ? DateTimeFormat::utc($msg['created']) : DateTimeFormat::utcNow()); $msg['created'] = (!empty($msg['created']) ? DateTimeFormat::utc($msg['created']) : DateTimeFormat::utcNow());
$msg['author-id'] = Contact::getIdForURL($msg['from-url'], 0, false);
$msg['uri-id'] = ItemURI::insert(['uri' => $msg['uri'], 'guid' => $msg['guid']]);
$msg['parent-uri-id'] = ItemURI::getIdByURI($msg['parent-uri']);
DBA::lock('mail'); DBA::lock('mail');
if (DBA::exists('mail', ['uri' => $msg['uri'], 'uid' => $msg['uid']])) { if (DBA::exists('mail', ['uri' => $msg['uri'], 'uid' => $msg['uid']])) {
@ -71,12 +74,8 @@ class Mail
return false; return false;
} }
$msg['author-id'] = Contact::getIdForURL($msg['from-url'], 0, false);
$msg['uri-id'] = ItemURI::insert(['uri' => $msg['uri'], 'guid' => $msg['guid']]);
$msg['parent-uri-id'] = ItemURI::getIdByURI($msg['parent-uri']);
if ($msg['reply']) { if ($msg['reply']) {
$reply = DBA::selectFirst('mail', ['uri', 'uri-id'], ['parent-uri' => $mail['parent-uri'], 'reply' => false]); $reply = DBA::selectFirst('mail', ['uri', 'uri-id'], ['parent-uri' => $msg['parent-uri'], 'reply' => false]);
$msg['thr-parent'] = $reply['uri']; $msg['thr-parent'] = $reply['uri'];
$msg['thr-parent-id'] = $reply['uri-id']; $msg['thr-parent-id'] = $reply['uri-id'];
@ -95,19 +94,22 @@ class Mail
DBA::update('conv', ['updated' => DateTimeFormat::utcNow()], ['id' => $msg['convid']]); DBA::update('conv', ['updated' => DateTimeFormat::utcNow()], ['id' => $msg['convid']]);
} }
// send notifications. if ($notifiction) {
$notif_params = [ $user = User::getById($msg['uid']);
'type' => Notification\Type::MAIL, // send notifications.
'otype' => Notification\ObjectType::MAIL, $notif_params = [
'verb' => Activity::POST, 'type' => Notification\Type::MAIL,
'uid' => $user['uid'], 'otype' => Notification\ObjectType::MAIL,
'cid' => $msg['contact-id'], 'verb' => Activity::POST,
'link' => DI::baseUrl() . '/message/' . $msg['id'], 'uid' => $user['uid'],
]; 'cid' => $msg['contact-id'],
'link' => DI::baseUrl() . '/message/' . $msg['id'],
];
notification($notif_params); notification($notif_params);
Logger::info('Mail is processed, notification was sent.', ['id' => $msg['id'], 'uri' => $msg['uri']]); Logger::info('Mail is processed, notification was sent.', ['id' => $msg['id'], 'uri' => $msg['uri']]);
}
return $msg['id']; return $msg['id'];
} }
@ -195,9 +197,7 @@ class Mail
$replyto = $convuri; $replyto = $convuri;
} }
$post_id = null; $post_id = self::insert(
$success = DBA::insert(
'mail',
[ [
'uid' => local_user(), 'uid' => local_user(),
'guid' => $guid, 'guid' => $guid,
@ -214,13 +214,9 @@ class Mail
'uri' => $uri, 'uri' => $uri,
'parent-uri' => $replyto, 'parent-uri' => $replyto,
'created' => DateTimeFormat::utcNow() 'created' => DateTimeFormat::utcNow()
] ], false
); );
if ($success) {
$post_id = DBA::lastInsertId();
}
/** /**
* *
* When a photo was uploaded into the message using the (profile wall) ajax * When a photo was uploaded into the message using the (profile wall) ajax
@ -301,8 +297,7 @@ class Mail
return -4; return -4;
} }
DBA::insert( self::insert(
'mail',
[ [
'uid' => $recipient['uid'], 'uid' => $recipient['uid'],
'guid' => $guid, 'guid' => $guid,
@ -320,7 +315,7 @@ class Mail
'parent-uri' => $me['url'], 'parent-uri' => $me['url'],
'created' => DateTimeFormat::utcNow(), 'created' => DateTimeFormat::utcNow(),
'unknown' => 1 'unknown' => 1
] ], false
); );
return 0; return 0;

View File

@ -351,7 +351,7 @@ class Media
foreach ($attachments as $attachment) { foreach ($attachments as $attachment) {
// Only store attachments that are part of the unshared body // Only store attachments that are part of the unshared body
if (strpos($unshared_body, $attachment['url']) !== false) { if (Item::containsLink($unshared_body, $attachment['url'], $attachment['type'])) {
self::insert($attachment); self::insert($attachment);
} }
} }
@ -600,7 +600,7 @@ class Media
$body = preg_replace("/\s*\[attachment .*?\].*?\[\/attachment\]\s*/ism", '', $body); $body = preg_replace("/\s*\[attachment .*?\].*?\[\/attachment\]\s*/ism", '', $body);
foreach (self::getByURIId($uriid, [self::IMAGE, self::AUDIO, self::VIDEO]) as $media) { foreach (self::getByURIId($uriid, [self::IMAGE, self::AUDIO, self::VIDEO]) as $media) {
if (Item::containsLink($body, $media['url'])) { if (Item::containsLink($body, $media['url'], $media['type'])) {
continue; continue;
} }

View File

@ -41,6 +41,8 @@ class PublicTimeline extends BaseApi
*/ */
public static function rawContent(array $parameters = []) public static function rawContent(array $parameters = [])
{ {
$uid = self::getCurrentUserID();
$request = self::getRequest([ $request = self::getRequest([
'local' => false, // Show only local statuses? Defaults to false. 'local' => false, // Show only local statuses? Defaults to false.
'remote' => false, // Show only remote statuses? Defaults to false. 'remote' => false, // Show only remote statuses? Defaults to false.
@ -88,7 +90,12 @@ class PublicTimeline extends BaseApi
$condition = DBA::mergeConditions($condition, ['gravity' => GRAVITY_PARENT]); $condition = DBA::mergeConditions($condition, ['gravity' => GRAVITY_PARENT]);
} }
$items = Post::selectForUser(0, ['uri-id', 'uid'], $condition, $params); if (!empty($uid)) {
$condition = DBA::mergeConditions($condition,
["NOT EXISTS (SELECT `cid` FROM `user-contact` WHERE `uid` = ? AND `cid` = `parent-author-id` AND (`blocked` OR `ignored`))", $uid]);
}
$items = Post::selectForUser($uid, ['uri-id', 'uid'], $condition, $params);
$statuses = []; $statuses = [];
while ($item = Post::fetch($items)) { while ($item = Post::fetch($items)) {

View File

@ -43,7 +43,7 @@ class Attach extends BaseModule
// @TODO: Replace with parameter from router // @TODO: Replace with parameter from router
$item_id = intval($a->argv[1]); $item_id = intval($a->argv[1]);
// Check for existence // Check for existence
$item = MAttach::exists(['id' => $item_id]); $item = MAttach::exists(['id' => $item_id]);
if ($item === false) { if ($item === false) {

View File

@ -70,7 +70,7 @@ class HTTPRequest implements IHTTPRequest
* *
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public function get(string $url, array $opts = [], int &$redirects = 0) public function get(string $url, array $opts = [], &$redirects = 0)
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
@ -222,7 +222,7 @@ class HTTPRequest implements IHTTPRequest
* *
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public function post(string $url, $params, array $headers = [], int $timeout = 0, int &$redirects = 0) public function post(string $url, $params, array $headers = [], int $timeout = 0, &$redirects = 0)
{ {
$stamp1 = microtime(true); $stamp1 = microtime(true);
@ -447,7 +447,7 @@ class HTTPRequest implements IHTTPRequest
* *
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public function fetch(string $url, int $timeout = 0, string $accept_content = '', string $cookiejar = '', int &$redirects = 0) public function fetch(string $url, int $timeout = 0, string $accept_content = '', string $cookiejar = '', &$redirects = 0)
{ {
$ret = $this->fetchFull($url, $timeout, $accept_content, $cookiejar, $redirects); $ret = $this->fetchFull($url, $timeout, $accept_content, $cookiejar, $redirects);
@ -461,7 +461,7 @@ class HTTPRequest implements IHTTPRequest
* *
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
public function fetchFull(string $url, int $timeout = 0, string $accept_content = '', string $cookiejar = '', int &$redirects = 0) public function fetchFull(string $url, int $timeout = 0, string $accept_content = '', string $cookiejar = '', &$redirects = 0)
{ {
return $this->get( return $this->get(
$url, $url,

View File

@ -114,7 +114,12 @@ class Status extends BaseDataTransferObject
$this->visibility = $visibility[$item['private']]; $this->visibility = $visibility[$item['private']];
$languages = json_decode($item['language'], true); $languages = json_decode($item['language'], true);
$this->language = is_array($languages) ? array_key_first($languages) : null; if (is_array($languages)) {
reset($languages);
$this->language = key($languages);
} else {
$this->language = null;
}
$this->uri = $item['uri']; $this->uri = $item['uri'];
$this->url = $item['plink'] ?? null; $this->url = $item['plink'] ?? null;

View File

@ -401,9 +401,13 @@ class Post
} }
// Fetching of Diaspora posts doesn't always work. There are issues with reshares and possibly comments // Fetching of Diaspora posts doesn't always work. There are issues with reshares and possibly comments
if (($item['network'] != Protocol::DIASPORA) && empty($comment) && !empty(Session::get('remote_comment'))) { if (!local_user() && ($item['network'] != Protocol::DIASPORA) && !empty(Session::get('remote_comment'))) {
$remote_comment = [DI::l10n()->t('Comment this item on your system'), DI::l10n()->t('Remote comment'), $remote_comment = [DI::l10n()->t('Comment this item on your system'), DI::l10n()->t('Remote comment'),
str_replace('{uri}', urlencode($item['uri']), Session::get('remote_comment'))]; str_replace('{uri}', urlencode($item['uri']), Session::get('remote_comment'))];
// Ensure to either display the remote comment or the local activities
$buttons = [];
$comment_html = '';
} else { } else {
$remote_comment = ''; $remote_comment = '';
} }

View File

@ -103,7 +103,7 @@ class InstallerTest extends MockedTest
$this->mockL10nT('File Information PHP module', 1); $this->mockL10nT('File Information PHP module', 1);
$this->mockL10nT('Error: File Information PHP module required but not installed.', 1); $this->mockL10nT('Error: File Information PHP module required but not installed.', 1);
$this->mockL10nT('Program execution functions', 1); $this->mockL10nT('Program execution functions', 1);
$this->mockL10nT('Error: Program execution functions required but not enabled.', 1); $this->mockL10nT('Error: Program execution functions (proc_open) required but not enabled.', 1);
} }
private function assertCheckExist($position, $title, $help, $status, $required, $assertionArray) private function assertCheckExist($position, $title, $help, $status, $required, $assertionArray)
@ -248,7 +248,7 @@ class InstallerTest extends MockedTest
self::assertFalse($install->checkFunctions()); self::assertFalse($install->checkFunctions());
self::assertCheckExist(9, self::assertCheckExist(9,
'Program execution functions', 'Program execution functions',
'Error: Program execution functions required but not enabled.', 'Error: Program execution functions (proc_open) required but not enabled.',
false, false,
true, true,
$install->getChecks()); $install->getChecks());

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2021.06-rc\n" "Project-Id-Version: 2021.06-rc\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-05-21 18:18+0000\n" "POT-Creation-Date: 2021-05-23 07:49+0200\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"
@ -1117,11 +1117,11 @@ msgstr ""
msgid "Invalid profile URL." msgid "Invalid profile URL."
msgstr "" msgstr ""
#: mod/dfrn_request.php:355 src/Model/Contact.php:2159 #: mod/dfrn_request.php:355 src/Model/Contact.php:2164
msgid "Disallowed profile URL." msgid "Disallowed profile URL."
msgstr "" msgstr ""
#: mod/dfrn_request.php:361 src/Model/Contact.php:2164 #: mod/dfrn_request.php:361 src/Model/Contact.php:2169
#: src/Module/Friendica.php:80 #: src/Module/Friendica.php:80
msgid "Blocked domain" msgid "Blocked domain"
msgstr "" msgstr ""
@ -4072,7 +4072,8 @@ msgid "Program execution functions"
msgstr "" msgstr ""
#: src/Core/Installer.php:468 #: src/Core/Installer.php:468
msgid "Error: Program execution functions required but not enabled." msgid ""
"Error: Program execution functions (proc_open) required but not enabled."
msgstr "" msgstr ""
#: src/Core/Installer.php:474 #: src/Core/Installer.php:474
@ -4645,60 +4646,60 @@ msgstr ""
msgid "Forum" msgid "Forum"
msgstr "" msgstr ""
#: src/Model/Contact.php:2169 #: src/Model/Contact.php:2174
msgid "Connect URL missing." msgid "Connect URL missing."
msgstr "" msgstr ""
#: src/Model/Contact.php:2178 #: src/Model/Contact.php:2183
msgid "" msgid ""
"The contact could not be added. Please check the relevant network " "The contact could not be added. Please check the relevant network "
"credentials in your Settings -> Social Networks page." "credentials in your Settings -> Social Networks page."
msgstr "" msgstr ""
#: src/Model/Contact.php:2219 #: src/Model/Contact.php:2224
msgid "" msgid ""
"This site is not configured to allow communications with other networks." "This site is not configured to allow communications with other networks."
msgstr "" msgstr ""
#: src/Model/Contact.php:2220 src/Model/Contact.php:2233 #: src/Model/Contact.php:2225 src/Model/Contact.php:2238
msgid "No compatible communication protocols or feeds were discovered." msgid "No compatible communication protocols or feeds were discovered."
msgstr "" msgstr ""
#: src/Model/Contact.php:2231 #: src/Model/Contact.php:2236
msgid "The profile address specified does not provide adequate information." msgid "The profile address specified does not provide adequate information."
msgstr "" msgstr ""
#: src/Model/Contact.php:2236 #: src/Model/Contact.php:2241
msgid "An author or name was not found." msgid "An author or name was not found."
msgstr "" msgstr ""
#: src/Model/Contact.php:2239 #: src/Model/Contact.php:2244
msgid "No browser URL could be matched to this address." msgid "No browser URL could be matched to this address."
msgstr "" msgstr ""
#: src/Model/Contact.php:2242 #: src/Model/Contact.php:2247
msgid "" msgid ""
"Unable to match @-style Identity Address with a known protocol or email " "Unable to match @-style Identity Address with a known protocol or email "
"contact." "contact."
msgstr "" msgstr ""
#: src/Model/Contact.php:2243 #: src/Model/Contact.php:2248
msgid "Use mailto: in front of address to force email check." msgid "Use mailto: in front of address to force email check."
msgstr "" msgstr ""
#: src/Model/Contact.php:2249 #: src/Model/Contact.php:2254
msgid "" msgid ""
"The profile address specified belongs to a network which has been disabled " "The profile address specified belongs to a network which has been disabled "
"on this site." "on this site."
msgstr "" msgstr ""
#: src/Model/Contact.php:2254 #: src/Model/Contact.php:2259
msgid "" msgid ""
"Limited profile. This person will be unable to receive direct/personal " "Limited profile. This person will be unable to receive direct/personal "
"notifications from you." "notifications from you."
msgstr "" msgstr ""
#: src/Model/Contact.php:2313 #: src/Model/Contact.php:2318
msgid "Unable to retrieve contact information." msgid "Unable to retrieve contact information."
msgstr "" msgstr ""
@ -4845,7 +4846,7 @@ msgstr ""
msgid "View on separate page" msgid "View on separate page"
msgstr "" msgstr ""
#: src/Model/Mail.php:120 src/Model/Mail.php:258 #: src/Model/Mail.php:134 src/Model/Mail.php:272
msgid "[no subject]" msgid "[no subject]"
msgstr "" msgstr ""