Contact\User::insertForContactArray($contact);
+ if ((empty($contact['baseurl']) || empty($contact['gsid'])) && Probe::isProbable($contact['network'])) {
+ Logger::debug('Update missing baseurl', ['id' => $contact['id'], 'url' => $contact['url'], 'callstack' => System::callstack(4, 0, true)]);
+ UpdateContact::add(['priority' => Worker::PRIORITY_MEDIUM, 'dont_fork' => true], $contact['id']);
+ }
+
return $contact['id'];
}
return self::isSharing($cid, $uid, $strict);
}
+ /**
+ * Checks if the provided public contact id has got followers on this system
+ *
+ * @param integer $cid
+ * @return boolean
+ */
+ public static function hasFollowers(int $cid): bool
+ {
+ return DBA::exists('account-user-view', ["`pid` = ? AND `uid` != ? AND `rel` IN (?, ?)", $cid, 0, self::SHARING, self::FRIEND]);
+ }
+
/**
* Get the basepath for a given contact link
*
$user = DBA::selectFirst(
'user',
['uid', 'username', 'nickname', 'pubkey', 'prvkey'],
- ['uid' => $uid, 'account_expired' => false]
+ ['uid' => $uid, 'verified' => true, 'blocked' => false, 'account_removed' => false, 'account_expired' => false]
);
if (!DBA::isResult($user)) {
return false;
/**
* Updates the self-contact for the provided user id
*
- * @param int $uid
- * @param bool $update_avatar Force the avatar update
+ * @param int $uid
+ * @param bool $update_avatar Force the avatar update
* @return bool "true" if updated
- * @throws HTTPException\InternalServerErrorException
+ * @throws \Exception
*/
public static function updateSelfFromUserID(int $uid, bool $update_avatar = false): bool
{
}
$fields = ['uid', 'username', 'nickname', 'page-flags', 'account-type', 'prvkey', 'pubkey'];
- $user = DBA::selectFirst('user', $fields, ['uid' => $uid, 'account_expired' => false]);
+ $user = DBA::selectFirst('user', $fields, ['uid' => $uid, 'verified' => true, 'blocked' => false, 'account_removed' => false, 'account_expired' => false]);
if (!DBA::isResult($user)) {
return false;
}
}
$pm_url = '';
+ $mention_url = '';
$status_link = '';
$photos_link = '';
$pm_url = 'message/new/' . $contact['id'];
}
+ if ($contact['contact-type'] == Contact::TYPE_COMMUNITY) {
+ $mention_label = DI::l10n()->t('Post to group');
+ $mention_url = 'compose/0?body=!' . $contact['addr'];
+ } else {
+ $mention_label = DI::l10n()->t('Mention');
+ $mention_url = 'compose/0?body=@' . $contact['addr'];
+ }
+
$contact_url = 'contact/' . $contact['id'];
- $posts_link = 'contact/' . $contact['id'] . '/conversations';
+
+ if ($contact['contact-type'] == Contact::TYPE_COMMUNITY) {
+ $network_label = DI::l10n()->t('View group');
+ $network_url = 'network/group/' . $contact['id'];
+ } else {
+ $network_label = DI::l10n()->t('Network Posts');
+ $network_url = 'contact/' . $contact['id'] . '/conversations';
+ }
$follow_link = '';
$unfollow_link = '';
* Menu array:
* "name" => [ "Label", "link", (bool)Should the link opened in a new tab? ]
*/
+
+
if (empty($contact['uid'])) {
$menu = [
'profile' => [DI::l10n()->t('View Profile'), $profile_link, true],
- 'network' => [DI::l10n()->t('Network Posts'), $posts_link, false],
+ 'network' => [$network_label, $network_url, false],
'edit' => [DI::l10n()->t('View Contact'), $contact_url, false],
'follow' => [DI::l10n()->t('Connect/Follow'), $follow_link, true],
'unfollow' => [DI::l10n()->t('Unfollow'), $unfollow_link, true],
+ 'mention' => [$mention_label, $mention_url, false],
];
} else {
$menu = [
'status' => [DI::l10n()->t('View Status'), $status_link, true],
'profile' => [DI::l10n()->t('View Profile'), $profile_link, true],
'photos' => [DI::l10n()->t('View Photos'), $photos_link, true],
- 'network' => [DI::l10n()->t('Network Posts'), $posts_link, false],
+ 'network' => [$network_label, $network_url, false],
'edit' => [DI::l10n()->t('View Contact'), $contact_url, false],
'pm' => [DI::l10n()->t('Send PM'), $pm_url, false],
'follow' => [DI::l10n()->t('Connect/Follow'), $follow_link, true],
'unfollow' => [DI::l10n()->t('Unfollow'), $unfollow_link, true],
+ 'mention' => [$mention_label, $mention_url, false],
];
if (!empty($contact['pending'])) {
$fields = [
'uid' => $uid,
'url' => $data['url'],
+ 'baseurl' => $data['baseurl'] ?? '',
'nurl' => Strings::normaliseLink($data['url']),
'network' => $data['network'],
'created' => DateTimeFormat::utcNow(),
return false;
}
- $fields = ['id', 'url', 'name', 'nick', 'avatar', 'photo', 'network', 'blocked'];
+ $fields = ['id', 'url', 'name', 'nick', 'avatar', 'photo', 'network', 'blocked', 'baseurl'];
$pub_contact = DBA::selectFirst('contact', $fields, ['id' => $datarray['author-id']]);
if (!DBA::isResult($pub_contact)) {
// Should never happen
'created' => DateTimeFormat::utcNow(),
'url' => $url,
'nurl' => Strings::normaliseLink($url),
+ 'baseurl' => $pub_contact['baseurl'] ?? '',
'name' => $name,
'nick' => $nick,
'network' => $network,