*/
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) {
{
$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'
];
$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;
$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;
$datarray = [
'guid' => $guid,
- 'uri-id' => ItemURI::insert(['uri' => $guid, 'guid' => $guid]),
+ 'plink' => self::plink($author, $guid),
'uid' => $importer['uid'],
'contact-id' => $contact['id'],
'network' => Protocol::DIASPORA,
'post-type' => Item::PT_NOTE,
];
- $datarray['guid'] = $guid;
- $datarray['uri'] = $datarray['thr-parent'] = self::getUriFromGuid($guid, $author);
- $datarray['uri-id'] = ItemURI::insert(['uri' => $datarray['uri'], 'guid' => $datarray['guid']]);
+ $datarray['uri'] = $datarray['thr-parent'] = self::getUriFromGuid($guid, $author);
+ $datarray['uri-id'] = ItemURI::insert(['uri' => $datarray['uri'], 'guid' => $datarray['guid']]);
+ $datarray['owner-link'] = $datarray['author-link'];
+ $datarray['owner-id'] = $datarray['author-id'];
+
+ $datarray = self::setDirection($datarray, $direction);
// Attach embedded pictures to the body
if ($data->photo) {
$datarray['app'] = $provider_display_name;
}
- $datarray['plink'] = self::plink($author, $guid);
$datarray['changed'] = $datarray['created'] = $datarray['edited'] = $created_at;
if (isset($address['address'])) {
// 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);
// 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 {
if ($item['event-id'] > 0) {
$event = self::buildEvent($item['event-id']);
if (count($event)) {
- $message['event'] = $event;
+ // Deactivated, since Diaspora seems to have problems with the processing.
+ // $message['event'] = $event;
if (
!empty($event['location']['address']) &&
*/
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 [];
$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') {
$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'] = '';
// @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);
+ }
}
}