Merge remote-tracking branch 'upstream/2021.09-rc' into user-contact
This commit is contained in:
commit
3dddea96fa
30 changed files with 414 additions and 301 deletions
|
@ -8,7 +8,6 @@ Adam Magness
|
|||
Aditoo
|
||||
AgnesElisa
|
||||
Albert
|
||||
Alberto Díaz Tormo
|
||||
Aleksandr "M.O.Z.G" Dikov
|
||||
Alex
|
||||
Alexander An
|
||||
|
@ -31,7 +30,6 @@ Anthronaut
|
|||
Antron Samurai
|
||||
Arian - Cazare Muncitori
|
||||
Asher Pen
|
||||
Athalbert
|
||||
aweiher
|
||||
axelt
|
||||
balderino
|
||||
|
@ -98,6 +96,7 @@ Fabio Comuni
|
|||
felixgilles
|
||||
Filip Bugaj
|
||||
Filip H.F. "FiXato" Slagter
|
||||
Finn Dean
|
||||
FlxAlbroscheit
|
||||
foss
|
||||
Francesco Apruzzese
|
||||
|
@ -217,6 +216,7 @@ Ralf Thees
|
|||
Ralph
|
||||
Ratten
|
||||
rcmaniac
|
||||
RealKinetix
|
||||
rebeka-catalina
|
||||
René Wagner
|
||||
repat
|
||||
|
@ -239,10 +239,12 @@ Senex Petrovic
|
|||
Seth
|
||||
Silke Meyer
|
||||
Simon L'nu
|
||||
Simon Rupf
|
||||
Simó Albert i Beltran
|
||||
softmetz
|
||||
soko1
|
||||
Spencer Dub
|
||||
SpencerDub
|
||||
St John Karp
|
||||
Stanislav N.
|
||||
Steffen K9
|
||||
|
@ -256,6 +258,7 @@ szymon.filip
|
|||
Sérgio Lima
|
||||
Taekus
|
||||
Tazman DeVille
|
||||
Tealk
|
||||
teho
|
||||
Thecross
|
||||
Thomas
|
||||
|
|
|
@ -419,7 +419,14 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o
|
|||
|
||||
$tpl = 'search_item.tpl';
|
||||
|
||||
$uriids = [];
|
||||
|
||||
foreach ($items as $item) {
|
||||
if (in_array($item['uri-id'], $uriids)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$uriids[] = $item['uri-id'];
|
||||
|
||||
if (!visible_activity($item)) {
|
||||
continue;
|
||||
|
@ -1140,10 +1147,10 @@ function status_editor(App $a, array $x = [], $notes_cid = 0, $popup = false)
|
|||
'$placeholdercategory' => Feature::isEnabled(local_user(), 'categories') ? DI::l10n()->t("Categories \x28comma-separated list\x29") : '',
|
||||
'$scheduled_at' => Temporal::getDateTimeField(
|
||||
new DateTime(),
|
||||
DateTime::createFromFormat(DateTimeFormat::MYSQL, DateTimeFormat::local('now + 6 months')),
|
||||
new DateTime('now + 6 months'),
|
||||
null,
|
||||
DI::l10n()->t('Scheduled at'),
|
||||
'scheduled_at',
|
||||
'scheduled_at'
|
||||
),
|
||||
'$wait' => DI::l10n()->t('Please wait'),
|
||||
'$permset' => DI::l10n()->t('Permission settings'),
|
||||
|
|
|
@ -156,8 +156,8 @@ function follow_content(App $a)
|
|||
|
||||
DI::page()['aside'] = '';
|
||||
|
||||
if ($protocol != Protocol::PHANTOM) {
|
||||
DI::page()['aside'] = Widget\VCard::getHTML(Contact::getByURL($contact['url'], false));
|
||||
if (!in_array($protocol, [Protocol::PHANTOM, Protocol::MAIL])) {
|
||||
DI::page()['aside'] = Widget\VCard::getHTML($contact);
|
||||
|
||||
$o .= Renderer::replaceMacros(Renderer::getMarkupTemplate('section_title.tpl'),
|
||||
['$title' => DI::l10n()->t('Status Messages and Posts')]
|
||||
|
|
|
@ -22,6 +22,8 @@
|
|||
use Friendica\App;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Util\Proxy;
|
||||
|
||||
function msearch_post(App $a)
|
||||
{
|
||||
|
@ -72,7 +74,7 @@ function msearch_post(App $a)
|
|||
$results[] = [
|
||||
'name' => $search_result['name'],
|
||||
'url' => DI::baseUrl() . '/profile/' . $search_result['nickname'],
|
||||
'photo' => DI::baseUrl() . '/photo/avatar/' . $search_result['uid'] . '.jpg',
|
||||
'photo' => User::getAvatarUrlForId($search_result['uid'], Proxy::SIZE_THUMB),
|
||||
'tags' => str_replace([',', ' '], [' ', ' '], $search_result['pub_keywords'])
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1025,6 +1025,7 @@ function photos_content(App $a)
|
|||
'$confirm' => DI::l10n()->t('Delete Album'),
|
||||
'$confirm_url' => $drop_url,
|
||||
'$confirm_name' => 'dropalbum',
|
||||
'$confirm_value' => 'dropalbum',
|
||||
'$cancel' => DI::l10n()->t('Cancel'),
|
||||
]);
|
||||
}
|
||||
|
@ -1131,6 +1132,7 @@ function photos_content(App $a)
|
|||
'$confirm' => DI::l10n()->t('Delete Photo'),
|
||||
'$confirm_url' => $drop_url,
|
||||
'$confirm_name' => 'delete',
|
||||
'$confirm_value' => 'delete',
|
||||
'$cancel' => DI::l10n()->t('Cancel'),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ bin/console.bat
|
|||
bin/console.php
|
||||
bin/daemon.php
|
||||
bin/testargs.php
|
||||
bin/wait-for-connection
|
||||
bin/worker.php
|
||||
config/
|
||||
doc/
|
||||
|
|
|
@ -1461,8 +1461,12 @@ class Database
|
|||
|
||||
$row = $this->fetchFirst($sql, $condition);
|
||||
|
||||
// Ensure to always return either a "null" or a numeric value
|
||||
return is_numeric($row['count']) ? (int)$row['count'] : $row['count'];
|
||||
if (!isset($row['count'])) {
|
||||
$this->logger->notice('Invalid count.', ['table' => $table, 'row' => $row, 'expression' => $expression, 'condition' => $condition_string, 'callstack' => System::callstack()]);
|
||||
return 0;
|
||||
} else {
|
||||
return (int)$row['count'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -653,9 +653,9 @@ class Contact
|
|||
'nick' => $user['nickname'],
|
||||
'pubkey' => $user['pubkey'],
|
||||
'prvkey' => $user['prvkey'],
|
||||
'photo' => DI::baseUrl() . '/photo/profile/' . $user['uid'] . '.jpg',
|
||||
'thumb' => DI::baseUrl() . '/photo/avatar/' . $user['uid'] . '.jpg',
|
||||
'micro' => DI::baseUrl() . '/photo/micro/' . $user['uid'] . '.jpg',
|
||||
'photo' => User::getAvatarUrlForId($user['uid']),
|
||||
'thumb' => User::getAvatarUrlForId($user['uid'], Proxy::SIZE_THUMB),
|
||||
'micro' => User::getAvatarUrlForId($user['uid'], Proxy::SIZE_MICRO),
|
||||
'blocked' => 0,
|
||||
'pending' => 0,
|
||||
'url' => DI::baseUrl() . '/profile/' . $user['nickname'],
|
||||
|
@ -768,7 +768,7 @@ class Contact
|
|||
$fields['micro'] = self::getDefaultAvatar($fields, Proxy::SIZE_MICRO);
|
||||
}
|
||||
|
||||
$fields['avatar'] = DI::baseUrl() . '/photo/profile/' .$uid . '.' . $file_suffix;
|
||||
$fields['avatar'] = User::getAvatarUrlForId($uid);
|
||||
$fields['forum'] = $user['page-flags'] == User::PAGE_FLAGS_COMMUNITY;
|
||||
$fields['prv'] = $user['page-flags'] == User::PAGE_FLAGS_PRVGROUP;
|
||||
$fields['unsearchable'] = !$profile['net-publish'];
|
||||
|
@ -794,8 +794,11 @@ class Contact
|
|||
self::update($fields, ['uid' => 0, 'nurl' => $self['nurl']]);
|
||||
|
||||
// Update the profile
|
||||
$fields = ['photo' => DI::baseUrl() . '/photo/profile/' .$uid . '.' . $file_suffix,
|
||||
'thumb' => DI::baseUrl() . '/photo/avatar/' . $uid .'.' . $file_suffix];
|
||||
$fields = [
|
||||
'photo' => User::getAvatarUrlForId($uid),
|
||||
'thumb' => User::getAvatarUrlForId($uid, Proxy::SIZE_THUMB)
|
||||
];
|
||||
|
||||
DBA::update('profile', $fields, ['uid' => $uid]);
|
||||
}
|
||||
|
||||
|
@ -2780,12 +2783,14 @@ class Contact
|
|||
return null;
|
||||
}
|
||||
|
||||
public static function removeFollower($importer, $contact)
|
||||
public static function removeFollower(array $contact)
|
||||
{
|
||||
if (($contact['rel'] == self::FRIEND) || ($contact['rel'] == self::SHARING)) {
|
||||
self::update(['rel' => self::SHARING], ['id' => $contact['id']]);
|
||||
} else {
|
||||
if (in_array($contact['rel'] ?? [], [self::FRIEND, self::SHARING])) {
|
||||
DBA::update('contact', ['rel' => self::SHARING], ['id' => $contact['id']]);
|
||||
} elseif (!empty($contact['id'])) {
|
||||
self::remove($contact['id']);
|
||||
} else {
|
||||
DI::logger()->info('Couldn\'t remove follower because of invalid contact array', ['contact' => $contact, 'callstack' => System::callstack()]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -547,7 +547,7 @@ class Media
|
|||
return $attachments;
|
||||
}
|
||||
|
||||
$height = 0;
|
||||
$heights = [];
|
||||
$selected = '';
|
||||
$previews = [];
|
||||
|
||||
|
@ -591,14 +591,11 @@ class Media
|
|||
in_array($filetype, ['audio', 'image'])) {
|
||||
$attachments['visual'][] = $medium;
|
||||
} elseif (($medium['type'] == self::VIDEO) || ($filetype == 'video')) {
|
||||
if (strpos($medium['url'], $guid) !== false) {
|
||||
if (!empty($medium['height'])) {
|
||||
// Peertube videos are delivered in many different resolutions. We pick a moderate one.
|
||||
// By checking against the GUID we also ensure to only work this way on Peertube posts.
|
||||
// This wouldn't be executed when someone for example on Mastodon was sharing multiple videos in a single post.
|
||||
if (empty($height) || ($height > $medium['height']) && ($medium['height'] >= 480)) {
|
||||
$height = $medium['height'];
|
||||
$selected = $medium['url'];
|
||||
}
|
||||
// Since only Peertube provides a "height" parameter, this wouldn't be executed
|
||||
// when someone for example on Mastodon was sharing multiple videos in a single post.
|
||||
$heights[$medium['height']] = $medium['url'];
|
||||
$video[$medium['url']] = $medium;
|
||||
} else {
|
||||
$attachments['visual'][] = $medium;
|
||||
|
@ -607,6 +604,15 @@ class Media
|
|||
$attachments['additional'][] = $medium;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($heights)) {
|
||||
ksort($heights);
|
||||
foreach ($heights as $height => $url) {
|
||||
if (empty($selected) || $height <= 480) {
|
||||
$selected = $url;
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($selected)) {
|
||||
$attachments['visual'][] = $video[$selected];
|
||||
unset($video[$selected]);
|
||||
|
@ -614,6 +620,8 @@ class Media
|
|||
$attachments['additional'][] = $element;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $attachments;
|
||||
}
|
||||
|
||||
|
|
|
@ -840,6 +840,57 @@ class User
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get avatar link for given user id
|
||||
*
|
||||
* @param integer $uid user id
|
||||
* @param string $size One of the ProxyUtils::SIZE_* constants
|
||||
* @return string avatar link
|
||||
*/
|
||||
public static function getAvatarUrlForId(int $uid, string $size = ''):string
|
||||
{
|
||||
$url = DI::baseUrl() . '/photo/';
|
||||
|
||||
switch ($size) {
|
||||
case Proxy::SIZE_MICRO:
|
||||
$url .= 'micro/';
|
||||
$scale = 6;
|
||||
break;
|
||||
case Proxy::SIZE_THUMB:
|
||||
$url .= 'avatar/';
|
||||
$scale = 5;
|
||||
break;
|
||||
default:
|
||||
$url .= 'profile/';
|
||||
$scale = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
$updated = '';
|
||||
$imagetype = IMAGETYPE_JPEG;
|
||||
|
||||
$photo = Photo::selectFirst(['type', 'created', 'edited', 'updated'], ["scale" => $scale, 'uid' => $uid, 'profile' => true]);
|
||||
if (!empty($photo)) {
|
||||
$updated = max($photo['created'], $photo['edited'], $photo['updated']);
|
||||
|
||||
switch ($photo['type']) {
|
||||
case 'image/png':
|
||||
$imagetype = IMAGETYPE_PNG;
|
||||
break;
|
||||
|
||||
case 'image/gif':
|
||||
$imagetype = IMAGETYPE_PNG;
|
||||
break;
|
||||
|
||||
default:
|
||||
$imagetype = IMAGETYPE_JPEG;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return $url . $uid . image_type_to_extension($imagetype) . ($updated ? '?ts=' . strtotime($updated) : '');
|
||||
}
|
||||
|
||||
/**
|
||||
* Catch-all user creation function
|
||||
*
|
||||
|
@ -1054,8 +1105,8 @@ class User
|
|||
$insert_result = DBA::insert('profile', [
|
||||
'uid' => $uid,
|
||||
'name' => $username,
|
||||
'photo' => DI::baseUrl() . "/photo/profile/{$uid}.jpg",
|
||||
'thumb' => DI::baseUrl() . "/photo/avatar/{$uid}.jpg",
|
||||
'photo' => self::getAvatarUrlForId($uid),
|
||||
'thumb' => self::getAvatarUrlForId($uid, Proxy::SIZE_THUMB),
|
||||
'publish' => $publish,
|
||||
'net-publish' => $netpublish,
|
||||
]);
|
||||
|
|
|
@ -290,13 +290,19 @@ class Contact extends BaseModule
|
|||
$contact_id = $data['user'];
|
||||
}
|
||||
|
||||
$contact = DBA::selectFirst('contact', [], ['id' => $contact_id, 'uid' => [0, local_user()], 'deleted' => false]);
|
||||
if (!empty($data)) {
|
||||
$contact = DBA::selectFirst('contact', [], [
|
||||
'id' => $contact_id,
|
||||
'uid' => [0, local_user()],
|
||||
'deleted' => false
|
||||
]);
|
||||
|
||||
// Don't display contacts that are about to be deleted
|
||||
if ($contact['network'] == Protocol::PHANTOM) {
|
||||
if (DBA::isResult($contact) && !empty($contact['network']) && $contact['network'] == Protocol::PHANTOM) {
|
||||
$contact = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (DBA::isResult($contact)) {
|
||||
if ($contact['self']) {
|
||||
|
@ -432,7 +438,8 @@ class Contact extends BaseModule
|
|||
'$message' => DI::l10n()->t('Do you really want to delete this contact?'),
|
||||
'$confirm' => DI::l10n()->t('Yes'),
|
||||
'$confirm_url' => DI::args()->getCommand(),
|
||||
'$confirm_name' => 'confirmed',
|
||||
'$confirm_name' => 't',
|
||||
'$confirm_value' => BaseModule::getFormSecurityToken('contact_action'),
|
||||
'$cancel' => DI::l10n()->t('Cancel'),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ use Friendica\Core\Renderer;
|
|||
use Friendica\Core\Session;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\Notification;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Network\HTTPException\ForbiddenException;
|
||||
|
@ -123,12 +122,7 @@ class Delegation extends BaseModule
|
|||
|
||||
//getting additinal information for each identity
|
||||
foreach ($identities as $key => $identity) {
|
||||
$self = Contact::selectFirst(['id', 'updated'], ['uid' => $identity['uid'], 'self' => true]);
|
||||
if (!DBA::isResult($self)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$identities[$key]['thumb'] = Contact::getAvatarUrlForId($self['id'], Proxy::SIZE_THUMB, $self['updated']);
|
||||
$identities[$key]['thumb'] = User::getAvatarUrlForId($identity['uid'], Proxy::SIZE_THUMB);
|
||||
|
||||
$identities[$key]['selected'] = ($identity['nickname'] === DI::app()->getLoggedInUserNickname());
|
||||
|
||||
|
|
|
@ -167,13 +167,12 @@ class Compose extends BaseModule
|
|||
'$placeholdercategory' => (Feature::isEnabled(local_user(),'categories') ? DI::l10n()->t('Categories (comma-separated list)') : ''),
|
||||
'$scheduled_at' => Temporal::getDateTimeField(
|
||||
new DateTime(),
|
||||
DateTime::createFromFormat(DateTimeFormat::MYSQL, DateTimeFormat::local('now + 6 months')),
|
||||
new DateTime('now + 6 months'),
|
||||
null,
|
||||
DI::l10n()->t('Scheduled at'),
|
||||
'scheduled_at',
|
||||
'scheduled_at'
|
||||
),
|
||||
|
||||
|
||||
'$title' => $title,
|
||||
'$category' => $category,
|
||||
'$body' => $body,
|
||||
|
|
|
@ -26,7 +26,6 @@ use Friendica\Core\Protocol;
|
|||
use Friendica\Core\System;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\User;
|
||||
|
||||
/**
|
||||
|
@ -81,7 +80,7 @@ class NoScrape extends BaseModule
|
|||
$keywords = explode(',', $keywords);
|
||||
|
||||
$json_info['fn'] = $profile['name'];
|
||||
$json_info['photo'] = Contact::getAvatarUrlForUrl($profile['url'], $profile['uid']);
|
||||
$json_info['photo'] = User::getAvatarUrlForId($profile['uid']);
|
||||
$json_info['tags'] = $keywords;
|
||||
$json_info['language'] = $profile['language'];
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@ use Friendica\Core\Worker;
|
|||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Util\Proxy;
|
||||
use Friendica\Util\Strings;
|
||||
|
||||
/**
|
||||
|
@ -372,7 +374,7 @@ class Register extends BaseModule
|
|||
'source_mail' => $user['email'],
|
||||
'source_nick' => $user['nickname'],
|
||||
'source_link' => $base_url . '/admin/users/',
|
||||
'source_photo' => $base_url . '/photo/avatar/' . $user['uid'] . '.jpg',
|
||||
'source_photo' => User::getAvatarUrlForId($user['uid'], Proxy::SIZE_THUMB),
|
||||
'show_in_notification_page' => false
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -26,7 +26,6 @@ use Friendica\Core\Hook;
|
|||
use Friendica\Core\Renderer;
|
||||
use Friendica\Core\System;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\Photo;
|
||||
use Friendica\Model\User;
|
||||
use Friendica\Protocol\ActivityNamespace;
|
||||
|
@ -197,7 +196,7 @@ class Xrd extends BaseModule
|
|||
[
|
||||
'rel' => 'http://webfinger.net/rel/avatar',
|
||||
'type' => $avatar['type'],
|
||||
'href' => Contact::getAvatarUrlForUrl($owner['url'], $owner['uid']),
|
||||
'href' => User::getAvatarUrlForId($owner['uid']),
|
||||
],
|
||||
[
|
||||
'rel' => 'http://joindiaspora.com/seed_location',
|
||||
|
@ -253,7 +252,7 @@ class Xrd extends BaseModule
|
|||
'$hcard_url' => $baseURL . '/hcard/' . $owner['nickname'],
|
||||
'$atom' => $owner['poll'],
|
||||
'$poco_url' => $owner['poco'],
|
||||
'$photo' => Contact::getAvatarUrlForUrl($owner['url'], $owner['uid']),
|
||||
'$photo' => User::getAvatarUrlForId($owner['uid']),
|
||||
'$type' => $avatar['type'],
|
||||
'$salmon' => $baseURL . '/salmon/' . $owner['nickname'],
|
||||
'$salmen' => $baseURL . '/salmon/' . $owner['nickname'] . '/mention',
|
||||
|
|
|
@ -2229,7 +2229,7 @@ class Probe
|
|||
$data = [
|
||||
'name' => $profile['name'], 'nick' => $profile['nick'], 'guid' => $approfile['diaspora:guid'] ?? '',
|
||||
'url' => $profile['url'], 'addr' => $profile['addr'], 'alias' => $profile['alias'],
|
||||
'photo' => Contact::getAvatarUrlForId($profile['id'], '', $profile['updated']),
|
||||
'photo' => User::getAvatarUrlForId($uid),
|
||||
'header' => $profile['header'] ? Contact::getHeaderUrlForId($profile['id'], $profile['updated']) : '',
|
||||
'account-type' => $profile['contact-type'], 'community' => ($profile['contact-type'] == User::ACCOUNT_TYPE_COMMUNITY),
|
||||
'keywords' => $profile['keywords'], 'location' => $profile['location'], 'about' => $profile['about'],
|
||||
|
|
|
@ -64,10 +64,14 @@ class ActivityPub
|
|||
'diaspora' => 'https://diasporafoundation.org/ns/',
|
||||
'litepub' => 'http://litepub.social/ns#',
|
||||
'toot' => 'http://joinmastodon.org/ns#',
|
||||
'schema' => 'http://schema.org#',
|
||||
'manuallyApprovesFollowers' => 'as:manuallyApprovesFollowers',
|
||||
'sensitive' => 'as:sensitive', 'Hashtag' => 'as:Hashtag',
|
||||
'directMessage' => 'litepub:directMessage',
|
||||
'discoverable' => 'toot:discoverable']];
|
||||
'discoverable' => 'toot:discoverable',
|
||||
'PropertyValue' => 'schema:PropertyValue',
|
||||
'value' => 'schema:value',
|
||||
]];
|
||||
const ACCOUNT_TYPES = ['Person', 'Organization', 'Service', 'Group', 'Application', 'Tombstone'];
|
||||
/**
|
||||
* Checks if the web request is done for the AP protocol
|
||||
|
|
|
@ -1102,7 +1102,7 @@ class Processor
|
|||
return;
|
||||
}
|
||||
|
||||
Contact::removeFollower($owner, $contact);
|
||||
Contact::removeFollower($contact);
|
||||
Logger::info('Undo following request', ['contact' => $cid, 'user' => $uid]);
|
||||
}
|
||||
|
||||
|
|
|
@ -370,7 +370,7 @@ class Transmitter
|
|||
'owner' => $owner['url'],
|
||||
'publicKeyPem' => $owner['pubkey']];
|
||||
$data['endpoints'] = ['sharedInbox' => DI::baseUrl() . '/inbox'];
|
||||
$data['icon'] = ['type' => 'Image', 'url' => Contact::getAvatarUrlForId($owner['id'], '', $owner['updated'])];
|
||||
$data['icon'] = ['type' => 'Image', 'url' => User::getAvatarUrlForId($uid)];
|
||||
|
||||
$resourceid = Photo::ridFromURI($owner['photo']);
|
||||
if (!empty($resourceid)) {
|
||||
|
@ -392,6 +392,20 @@ class Transmitter
|
|||
}
|
||||
}
|
||||
|
||||
$custom_fields = [];
|
||||
|
||||
foreach (DI::profileField()->selectByContactId(0, $uid) as $profile_field) {
|
||||
$custom_fields[] = [
|
||||
'type' => 'PropertyValue',
|
||||
'name' => $profile_field->label,
|
||||
'value' => BBCode::convertForUriId($owner['uri-id'], $profile_field->value)
|
||||
];
|
||||
};
|
||||
|
||||
if (!empty($custom_fields)) {
|
||||
$data['attachment'] = $custom_fields;
|
||||
}
|
||||
|
||||
$data['generator'] = self::getService();
|
||||
|
||||
// tags: https://kitty.town/@inmysocks/100656097926961126.json
|
||||
|
|
|
@ -449,7 +449,7 @@ class DFRN
|
|||
|
||||
$attributes = ["rel" => "photo", "type" => "image/jpeg",
|
||||
"media:width" => Proxy::PIXEL_SMALL, "media:height" => Proxy::PIXEL_SMALL,
|
||||
"href" => Contact::getAvatarUrlForId($owner['id'], Proxy::SIZE_SMALL, $owner['updated'])];
|
||||
"href" => User::getAvatarUrlForId($owner['uid'], Proxy::SIZE_SMALL)];
|
||||
|
||||
if (!$public || !$hide) {
|
||||
$attributes["dfrn:updated"] = $picdate;
|
||||
|
@ -1584,7 +1584,7 @@ class DFRN
|
|||
}
|
||||
if ($activity->match($item["verb"], Activity::UNFOLLOW)) {
|
||||
Logger::log("Lost follower");
|
||||
Contact::removeFollower($importer, $contact, $item);
|
||||
Contact::removeFollower($contact);
|
||||
return false;
|
||||
}
|
||||
if ($activity->match($item["verb"], Activity::REQ_FRIEND)) {
|
||||
|
|
|
@ -2211,7 +2211,7 @@ class Diaspora
|
|||
return true;
|
||||
} else {
|
||||
Logger::log("Author ".$author." doesn't want to follow us anymore.", Logger::DEBUG);
|
||||
Contact::removeFollower($importer, $contact);
|
||||
Contact::removeFollower($contact);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -965,7 +965,7 @@ class Feed
|
|||
XML::addElement($doc, $root, "id", DI::baseUrl() . "/profile/" . $owner["nick"]);
|
||||
XML::addElement($doc, $root, "title", $title);
|
||||
XML::addElement($doc, $root, "subtitle", sprintf("Updates from %s on %s", $owner["name"], DI::config()->get('config', 'sitename')));
|
||||
XML::addElement($doc, $root, "logo", Contact::getAvatarUrlForId($owner['id'], Proxy::SIZE_SMALL, $owner['updated']));
|
||||
XML::addElement($doc, $root, "logo", User::getAvatarUrlForId($owner['uid'], Proxy::SIZE_SMALL));
|
||||
XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM));
|
||||
|
||||
$author = self::addAuthor($doc, $owner);
|
||||
|
|
|
@ -471,7 +471,7 @@ class OStatus
|
|||
|
||||
if ($item["verb"] == Activity::O_UNFOLLOW) {
|
||||
$dummy = null;
|
||||
Contact::removeFollower($importer, $contact, $item, $dummy);
|
||||
Contact::removeFollower($contact);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1275,7 +1275,7 @@ class OStatus
|
|||
XML::addElement($doc, $root, "id", DI::baseUrl() . "/profile/" . $owner["nick"]);
|
||||
XML::addElement($doc, $root, "title", $title);
|
||||
XML::addElement($doc, $root, "subtitle", sprintf("Updates from %s on %s", $owner["name"], DI::config()->get('config', 'sitename')));
|
||||
XML::addElement($doc, $root, "logo", Contact::getAvatarUrlForId($owner['id'], ProxyUtils::SIZE_SMALL, $owner['updated']));
|
||||
XML::addElement($doc, $root, "logo", User::getAvatarUrlForId($owner['uid'], ProxyUtils::SIZE_SMALL));
|
||||
XML::addElement($doc, $root, "updated", DateTimeFormat::utcNow(DateTimeFormat::ATOM));
|
||||
|
||||
$author = self::addAuthor($doc, $owner, true);
|
||||
|
@ -1432,7 +1432,7 @@ class OStatus
|
|||
"type" => "image/jpeg", // To-Do?
|
||||
"media:width" => ProxyUtils::PIXEL_SMALL,
|
||||
"media:height" => ProxyUtils::PIXEL_SMALL,
|
||||
"href" => Contact::getAvatarUrlForId($owner['id'], ProxyUtils::SIZE_SMALL, $owner['updated'])];
|
||||
"href" => User::getAvatarUrlForId($owner['uid'], ProxyUtils::SIZE_SMALL)];
|
||||
XML::addElement($doc, $author, "link", "", $attributes);
|
||||
|
||||
if (isset($owner["thumb"])) {
|
||||
|
@ -1441,7 +1441,7 @@ class OStatus
|
|||
"type" => "image/jpeg", // To-Do?
|
||||
"media:width" => ProxyUtils::PIXEL_THUMB,
|
||||
"media:height" => ProxyUtils::PIXEL_THUMB,
|
||||
"href" => Contact::getAvatarUrlForId($owner['id'], ProxyUtils::SIZE_THUMB, $owner['updated'])];
|
||||
"href" => User::getAvatarUrlForId($owner['uid'], ProxyUtils::SIZE_THUMB)];
|
||||
XML::addElement($doc, $author, "link", "", $attributes);
|
||||
}
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1326,6 +1326,8 @@ $a->strings["Don't embed private images in posts"] = "Ne ágyazzon be személyes
|
|||
$a->strings["Don't replace locally-hosted private photos in posts with an embedded copy of the image. This means that contacts who receive posts containing private photos will have to authenticate and load each image, which may take a while."] = "Ne cserélje ki a bejegyzésekben lévő helyileg kiszolgált személyes fényképeket a kép beágyazott másolatával. Ez azt jelenti, hogy a személyes fényképeket tartalmazó bejegyzéseket fogadó partnereknek hitelesíteniük kell magukat és be kell tölteniük minden egyes képet, ami eltarthat egy ideig.";
|
||||
$a->strings["Explicit Content"] = "Felnőtteknek szánt tartalom";
|
||||
$a->strings["Set this to announce that your node is used mostly for explicit content that might not be suited for minors. This information will be published in the node information and might be used, e.g. by the global directory, to filter your node from listings of nodes to join. Additionally a note about this will be shown at the user registration page."] = "Állítsa be ezt annak közléséhez, hogy a csomópontját főként felnőtteknek szóló tartalomhoz használják, ami lehet, hogy nem alkalmas kiskorúak számára. Ez az információ közzé lesz téve a csomópont információiban, és használhatja például a globális könyvtár is, hogy kiszűrje a csomópontját a csatlakozáshoz felajánlott csomópontok listájából. Ezenkívül egy megjegyzés is meg lesz jelenítve ezzel kapcsolatban a felhasználó regisztrációs oldalán.";
|
||||
$a->strings["Proxify external content"] = "Külső tartalom proxyzása";
|
||||
$a->strings["Route external content via the proxy functionality. This is used for example for some OEmbed accesses and in some other rare cases."] = "Külső tartalom átirányítása a proxy funkción keresztül. Ezt például néhány OEmbed-hozzáférésnél és egyéb ritka esetekben használják.";
|
||||
$a->strings["Allow Users to set remote_self"] = "Távoli önmaguk beállításának engedélyezése a felhasználóknak";
|
||||
$a->strings["With checking this, every user is allowed to mark every contact as a remote_self in the repair contact dialog. Setting this flag on a contact causes mirroring every posting of that contact in the users stream."] = "Ennek bejelölésével minden egyes felhasználó számára engedélyezett, hogy az egyes partnereket távoli önmagukként jelöljék meg a partner javítása párbeszédablakban. Ezen jelző beállítása egy partnernél a tartalom minden egyes beküldésének tükrözését okozza a felhasználók adatfolyamában.";
|
||||
$a->strings["Enable multiple registrations"] = "Többszörös regisztrációk engedélyezése";
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
<h3 id="confirm-message">{{$message}}</h3>
|
||||
|
||||
<input class="confirm-button" id="confirm-submit-button" type="submit" name="{{$confirm_name}}" value="{{$confirm}}" />
|
||||
<input class="confirm-button" id="confirm-cancel-button" type="submit" name="canceled" value="{{$cancel}}" />
|
||||
<button class="confirm-button" id="confirm-submit-button" type="submit" name="{{$confirm_name}}" value="{{$confirm_value}}">{{$confirm}}</button>
|
||||
<button class="confirm-button" id="confirm-cancel-button" type="submit" name="canceled" value="{{$cancel}}">{{$cancel}}</button>
|
||||
|
||||
</form>
|
||||
</center>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<div id="confirm-message">{{$message}}</div>
|
||||
|
||||
<div class="form-group pull-right settings-submit-wrapper">
|
||||
<button type="submit" name="{{$confirm_name}}" id="confirm-submit-button" class="btn btn-primary confirm-button" value="{{$confirm}}">{{$confirm}}</button>
|
||||
<button type="submit" name="canceled" id="confirm-cancel-button" class="btn confirm-button" data-dismiss="modal">{{$cancel}}</button>
|
||||
<button type="submit" name="{{$confirm_name}}" id="confirm-submit-button" class="btn btn-primary confirm-button" value="{{$confirm_value}}">{{$confirm}}</button>
|
||||
<button type="submit" name="canceled" value="{{$cancel}} id="confirm-cancel-button" class="btn confirm-button" data-dismiss="modal">{{$cancel}}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
{{/if}}
|
||||
<li role="presentation"><a role="menuitem" href="{{$contact_actions.block.url}}" title="{{$contact_actions.block.title}}">{{$contact_actions.block.label}}</a></li>
|
||||
<li role="presentation"><a role="menuitem" href="{{$contact_actions.ignore.url}}" title="{{$contact_actions.ignore.title}}">{{$contact_actions.ignore.label}}</a></li>
|
||||
{{if $contact_actions.delete.url}}<li role="presentation"><button role="menuitem" type="button" class="btn-link" title="{{$contact_actions.delete.title}}" onclick="addToModal('{{$contact_actions.delete.url}}?confirm=1');">{{$contact_actions.delete.label}}</button></li>{{/if}}
|
||||
{{if $contact_actions.delete.url}}<li role="presentation"><button role="menuitem" type="button" class="btn-link" title="{{$contact_actions.delete.title}}" onclick="addToModal('{{$contact_actions.delete.url}}&confirm=1');">{{$contact_actions.delete.label}}</button></li>{{/if}}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -76,7 +76,7 @@
|
|||
<div id="contact-edit-profile-collapse" class="panel-body panel-collapse collapse in" role="tabpanel" aria-labelledby="contact-edit-profile">
|
||||
<div class="section-content-tools-wrapper">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 text-muted">{{$profileurllabel}}</div><a target="blank" href="{{$url}}">{{$profileurl}}</a>
|
||||
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 text-muted">{{$profileurllabel}}</div><a target="blank" href="{{$profileurl}}">{{$profileurl}}</a>
|
||||
</div>
|
||||
|
||||
{{if $location}}
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
</div> {{* End of contact-edit-status-wrapper *}}
|
||||
|
||||
{{* Some information about the contact from the profile *}}
|
||||
<dl><dt>{{$profileurllabel}}</dt><dd><a target="blank" href="{{$url}}">{{$profileurl}}</a></dd></dl>
|
||||
<dl><dt>{{$profileurllabel}}</dt><dd><a target="blank" href="{{$profileurl}}">{{$profileurl}}</a></dd></dl>
|
||||
{{if $location}}<dl><dt>{{$location_label}}</dt><dd>{{$location nofilter}}</dd></dl>{{/if}}
|
||||
{{if $xmpp}}<dl><dt>{{$xmpp_label}}</dt><dd>{{$xmpp}}</dd></dl>{{/if}}
|
||||
{{if $matrix}}<dl><dt>{{$matrix_label}}</dt><dd>{{$matrix}}</dd></dl>{{/if}}
|
||||
|
|
Loading…
Reference in a new issue