Merge remote-tracking branch 'upstream/2021.09-rc' into user-contact
This commit is contained in:
@@ -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,13 +604,24 @@ class Media
|
||||
$attachments['additional'][] = $medium;
|
||||
}
|
||||
}
|
||||
if (!empty($selected)) {
|
||||
$attachments['visual'][] = $video[$selected];
|
||||
unset($video[$selected]);
|
||||
foreach ($video as $element) {
|
||||
$attachments['additional'][] = $element;
|
||||
|
||||
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]);
|
||||
foreach ($video as $element) {
|
||||
$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,11 +290,17 @@ 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) {
|
||||
$contact = false;
|
||||
// Don't display contacts that are about to be deleted
|
||||
if (DBA::isResult($contact) && !empty($contact['network']) && $contact['network'] == Protocol::PHANTOM) {
|
||||
$contact = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -101,7 +101,7 @@ class Probe
|
||||
if (isset($data[$field])) {
|
||||
if (in_array($field, $numeric_fields)) {
|
||||
$newdata[$field] = (int)$data[$field];
|
||||
} else {
|
||||
} else {
|
||||
$newdata[$field] = $data[$field];
|
||||
}
|
||||
} elseif (!in_array($field, $numeric_fields)) {
|
||||
@@ -2229,11 +2229,11 @@ 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'],
|
||||
'xmpp' => $profile['xmpp'], 'matrix' => $profile['matrix'],
|
||||
'xmpp' => $profile['xmpp'], 'matrix' => $profile['matrix'],
|
||||
'hide' => !$profile['net-publish'], 'batch' => '', 'notify' => $profile['notify'],
|
||||
'poll' => $profile['poll'], 'request' => $profile['request'], 'confirm' => $profile['confirm'],
|
||||
'subscribe' => $approfile['generator']['url'] . '/follow?url={uri}', 'poco' => $profile['poco'],
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user