X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FProtocol%2FDiaspora.php;h=cc3016aae912c2e60079a09869292eee39e85d28;hb=9901d82fea19c86599fa431f5221eaeefcf03c04;hp=dd6c2115b5e32714a868bae0ee589465ca76bf31;hpb=23992c31c648d0198da6bff33456938f2202ea7d;p=friendica.git diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index dd6c2115b5..cc3016aae9 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -796,7 +796,7 @@ class Diaspora */ private static function key(WebFingerUri $uri): string { - Logger::info('Fetching diaspora key', ['handle' => $uri->getAddr(), 'callstack' => System::callstack(20)]); + Logger::info('Fetching diaspora key', ['handle' => $uri->getAddr()]); try { return DI::dsprContact()->getByAddr($uri)->pubKey; } catch (HTTPException\NotFoundException | \InvalidArgumentException $e) { @@ -1192,6 +1192,7 @@ class Diaspora { $fields = [ 'id', 'parent', 'body', 'wall', 'uri', 'guid', 'private', 'origin', + 'allow_cid', 'allow_gid', 'deny_cid', 'deny_gid', 'author-name', 'author-link', 'author-avatar', 'gravity', 'owner-name', 'owner-link', 'owner-avatar' ]; @@ -1567,6 +1568,12 @@ class Diaspora $datarray['verb'] = Activity::POST; $datarray['gravity'] = Item::GRAVITY_COMMENT; + $datarray['private'] = $toplevel_parent_item['private']; + $datarray['allow_cid'] = $toplevel_parent_item['allow_cid']; + $datarray['allow_gid'] = $toplevel_parent_item['allow_gid']; + $datarray['deny_cid'] = $toplevel_parent_item['deny_cid']; + $datarray['deny_gid'] = $toplevel_parent_item['deny_gid']; + $datarray['thr-parent'] = $thr_parent ?: $toplevel_parent_item['uri']; $datarray['object-type'] = Activity\ObjectType::COMMENT; @@ -1823,6 +1830,13 @@ class Diaspora $datarray['verb'] = $verb; $datarray['gravity'] = Item::GRAVITY_ACTIVITY; + + $datarray['private'] = $toplevel_parent_item['private']; + $datarray['allow_cid'] = $toplevel_parent_item['allow_cid']; + $datarray['allow_gid'] = $toplevel_parent_item['allow_gid']; + $datarray['deny_cid'] = $toplevel_parent_item['deny_cid']; + $datarray['deny_gid'] = $toplevel_parent_item['deny_gid']; + $datarray['thr-parent'] = $toplevel_parent_item['uri']; $datarray['object-type'] = Activity\ObjectType::NOTE; @@ -3022,7 +3036,7 @@ class Diaspora // The "addr" field should always be filled. // If this isn't the case, it will raise a notice some lines later. // And in the log we will see where it came from, and we can handle it there. - Logger::notice('Empty addr', ['contact' => $contact ?? [], 'callstack' => System::callstack(20)]); + Logger::notice('Empty addr', ['contact' => $contact ?? []]); } $envelope = self::buildMessage($msg, $owner, $contact, $owner['uprvkey'], $pubkey ?? '', $public_batch); @@ -3062,10 +3076,7 @@ class Diaspora // If the item belongs to a user, we take this user id. if ($item['uid'] == 0) { // @todo Possibly use an administrator account? - $condition = [ - 'verified' => true, 'blocked' => false, - 'account_removed' => false, 'account_expired' => false, 'account-type' => User::ACCOUNT_TYPE_PERSON - ]; + $condition = ['verified' => true, 'blocked' => false, 'account_removed' => false, 'account_expired' => false, 'account-type' => User::ACCOUNT_TYPE_PERSON]; $first_user = DBA::selectFirst('user', ['uid'], $condition, ['order' => ['uid']]); $owner = User::getOwnerDataById($first_user['uid']); } else { @@ -3873,7 +3884,7 @@ class Diaspora */ private static function createProfileData(int $uid): array { - $profile = DBA::selectFirst('owner-view', ['uid', 'addr', 'name', 'location', 'net-publish', 'dob', 'about', 'pub_keywords'], ['uid' => $uid]); + $profile = DBA::selectFirst('owner-view', ['uid', 'addr', 'name', 'location', 'net-publish', 'dob', 'about', 'pub_keywords', 'updated'], ['uid' => $uid]); if (!DBA::isResult($profile)) { return []; @@ -3883,17 +3894,21 @@ class Diaspora $data = [ 'author' => $profile['addr'], + 'edited_at' => DateTimeFormat::utc($profile['updated']), + 'full_name' => $profile['name'], 'first_name' => $split_name['first'], 'last_name' => $split_name['last'], 'image_url' => DI::baseUrl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', 'image_url_medium' => DI::baseUrl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', 'image_url_small' => DI::baseUrl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', - 'searchable' => ($profile['net-publish'] ? 'true' : 'false'), + 'bio' => null, 'birthday' => null, - 'about' => null, + 'gender' => null, 'location' => null, - 'tag_string' => null, + 'searchable' => ($profile['net-publish'] ? 'true' : 'false'), + 'public' => 'false', 'nsfw' => 'false', + 'tag_string' => null, ]; if ($data['searchable'] === 'true') { @@ -3907,7 +3922,7 @@ class Diaspora $data['birthday'] = DateTimeFormat::utc($year . '-' . $month . '-' . $day, 'Y-m-d'); } - $data['about'] = BBCode::toMarkdown($profile['about'] ?? ''); + $data['bio'] = BBCode::toMarkdown($profile['about'] ?? ''); $data['location'] = $profile['location']; $data['tag_string'] = ''; @@ -3966,8 +3981,10 @@ class Diaspora // @todo Split this into single worker jobs foreach ($recipients as $recipient) { - Logger::info('Send updated profile data for user ' . $uid . ' to contact ' . $recipient['id']); - self::buildAndTransmit($owner, $recipient, 'profile', $message); + if ((empty($recipient['gsid']) || GServer::isReachableById($recipient['gsid'])) && !Contact\User::isBlocked($recipient['id'], $uid)) { + Logger::info('Send updated profile data for user ' . $uid . ' to contact ' . $recipient['id']); + self::buildAndTransmit($owner, $recipient, 'profile', $message); + } } }